|
1 |
| -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 |
| 1 | +; NOTE: Assertions have mostly been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5 |
2 | 2 | ; RUN: opt < %s -S -passes=msan -msan-precise-disjoint-or=false 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-IMPRECISE
|
3 | 3 | ; RUN: opt < %s -S -passes=msan -msan-precise-disjoint-or=true 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-PRECISE
|
4 | 4 | ;
|
@@ -40,15 +40,17 @@ define i8 @test_disjoint_or(i8 %a, i8 %b) sanitize_memory {
|
40 | 40 | ; CHECK-NEXT: [[TMP6:%.*]] = and i8 [[TMP3]], [[TMP2]]
|
41 | 41 | ; CHECK-NEXT: [[TMP7:%.*]] = and i8 [[TMP1]], [[TMP4]]
|
42 | 42 | ; CHECK-NEXT: [[TMP8:%.*]] = or i8 [[TMP5]], [[TMP6]]
|
43 |
| -; CHECK-NEXT: [[TMP11:%.*]] = or i8 [[TMP8]], [[TMP7]] |
| 43 | +; CHECK-NEXT: [[TMP9:%.*]] = or i8 [[TMP8]], [[TMP7]] |
44 | 44 | ;
|
45 | 45 | ; CHECK-IMPRECISE: [[C:%.*]] = or disjoint i8 [[A]], [[B]]
|
46 |
| -; CHECK-IMPRECISE-NEXT: store i8 [[TMP11]], ptr @__msan_retval_tls, align 8 |
| 46 | +; CHECK-IMPRECISE-NEXT: store i8 [[TMP9]], ptr @__msan_retval_tls, align 8 |
47 | 47 | ;
|
48 |
| -; CHECK-PRECISE: [[TMP10:%.*]] = and i8 [[A]], [[B]] |
49 |
| -; CHECK-PRECISE-NEXT: [[TMP12:%.*]] = or i8 [[TMP11]], [[TMP10]] |
| 48 | +; CHECK-PRECISE-NEXT: [[TMP10:%.*]] = and i8 [[A]], [[B]] |
| 49 | +; CHECK-PRECISE-NEXT: [[TMP11:%.*]] = icmp ne i8 [[TMP10]], 0 |
| 50 | +; CHECK-PRECISE-NEXT: [[TMP12:%.*]] = sext i1 [[TMP11]] to i8 |
| 51 | +; CHECK-PRECISE-NEXT: [[_MS_DISJOINT:%.*]] = or i8 [[TMP9]], [[TMP12]] |
50 | 52 | ; CHECK-PRECISE-NEXT: [[C:%.*]] = or disjoint i8 [[A]], [[B]]
|
51 |
| -; CHECK-PRECISE-NEXT: store i8 [[TMP12]], ptr @__msan_retval_tls, align 8 |
| 53 | +; CHECK-PRECISE-NEXT: store i8 [[_MS_DISJOINT]], ptr @__msan_retval_tls, align 8 |
52 | 54 | ;
|
53 | 55 | ; CHECK-NEXT: ret i8 [[C]]
|
54 | 56 | ;
|
|
0 commit comments