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