brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.3 KiB · b4e472a Raw
150 lines · plain
1; RUN: opt < %s -S -msan-kernel=1 -passes=msan 2>&1 | FileCheck %s2 3target datalayout = "e-m:e-i64:64-n32:64"4target triple = "powerpc64le--linux"5 6define void @Store1(ptr %p, i8 %x) sanitize_memory {7entry:8  store i8 %x, ptr %p9  ret void10}11 12; CHECK-LABEL: define {{[^@]+}}@Store1(13; CHECK: [[META:%[a-z0-9_]+]] = call { ptr, ptr } @__msan_metadata_ptr_for_store_1(ptr %p)14; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 015; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 116; CHECK: store i8 {{.+}}, ptr [[SHADOW]]17; CHECK: ret void18 19define void @Store2(ptr %p, i16 %x) sanitize_memory {20entry:21  store i16 %x, ptr %p22  ret void23}24 25; CHECK-LABEL: define {{[^@]+}}@Store2(26; CHECK: [[META:%[a-z0-9_]+]] = call { ptr, ptr } @__msan_metadata_ptr_for_store_2(ptr %p)27; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 028; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 129; CHECK: store i16 {{.+}}, ptr [[SHADOW]]30; CHECK: ret void31 32define void @Store4(ptr %p, i32 %x) sanitize_memory {33entry:34  store i32 %x, ptr %p35  ret void36}37 38; CHECK-LABEL: define {{[^@]+}}@Store4(39; CHECK: [[META:%[a-z0-9_]+]] = call { ptr, ptr } @__msan_metadata_ptr_for_store_4(ptr %p)40; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 041; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 142; CHECK: store i32 {{.+}}, ptr [[SHADOW]]43; CHECK: ret void44 45define void @Store8(ptr %p, i64 %x) sanitize_memory {46entry:47  store i64 %x, ptr %p48  ret void49}50 51; CHECK-LABEL: define {{[^@]+}}@Store8(52; CHECK: [[META:%[a-z0-9_]+]] = call { ptr, ptr } @__msan_metadata_ptr_for_store_8(ptr %p)53; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 054; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 155; CHECK: store i64 {{.+}}, ptr [[SHADOW]]56; CHECK: ret void57 58define void @Store16(ptr %p, i128 %x) sanitize_memory {59entry:60  store i128 %x, ptr %p61  ret void62}63 64; CHECK-LABEL: define {{[^@]+}}@Store16(65; CHECK: [[META:%[a-z0-9_]+]] = call { ptr, ptr } @__msan_metadata_ptr_for_store_n(ptr %p, i64 16)66; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 067; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 168; CHECK: store i128 {{.+}}, ptr [[SHADOW]]69; CHECK: ret void70 71define i8 @Load1(ptr %p) sanitize_memory {72entry:73  %0 = load i8, ptr %p74  ret i8 %075}76 77; CHECK-LABEL: define {{[^@]+}}@Load1(78; CHECK: [[META:%[a-z0-9_]+]] = call { ptr, ptr } @__msan_metadata_ptr_for_load_1(ptr %p)79; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 080; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 181; CHECK: [[SHADOW_VAL:%[a-z0-9_]+]] = load i8, ptr [[SHADOW]]82; CHECK: [[ORIGIN_VAL:%[a-z0-9_]+]] = load i32, ptr [[ORIGIN]]83; CHECK: store i8 [[SHADOW_VAL]], ptr %retval_shadow84; CHECK: store i32 [[ORIGIN_VAL]], ptr %retval_origin85; CHECK: ret i8 {{.+}}86 87define i16 @Load2(ptr %p) sanitize_memory {88entry:89  %0 = load i16, ptr %p90  ret i16 %091}92 93; CHECK-LABEL: define {{[^@]+}}@Load2(94; CHECK: [[META:%[a-z0-9_]+]] = call { ptr, ptr } @__msan_metadata_ptr_for_load_2(ptr %p)95; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 096; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 197; CHECK: [[SHADOW_VAL:%[a-z0-9_]+]] = load i16, ptr [[SHADOW]]98; CHECK: [[ORIGIN_VAL:%[a-z0-9_]+]] = load i32, ptr [[ORIGIN]]99; CHECK: store i16 [[SHADOW_VAL]], ptr %retval_shadow100; CHECK: store i32 [[ORIGIN_VAL]], ptr %retval_origin101; CHECK: ret i16 {{.+}}102 103define i32 @Load4(ptr %p) sanitize_memory {104entry:105  %0 = load i32, ptr %p106  ret i32 %0107}108 109; CHECK-LABEL: define {{[^@]+}}@Load4(110; CHECK: [[META:%[a-z0-9_]+]] = call { ptr, ptr } @__msan_metadata_ptr_for_load_4(ptr %p)111; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 0112; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 1113; CHECK: [[SHADOW_VAL:%[a-z0-9_]+]] = load i32, ptr [[SHADOW]]114; CHECK: [[ORIGIN_VAL:%[a-z0-9_]+]] = load i32, ptr [[ORIGIN]]115; CHECK: store i32 [[SHADOW_VAL]], ptr %retval_shadow116; CHECK: store i32 [[ORIGIN_VAL]], ptr %retval_origin117; CHECK: ret i32 {{.+}}118 119define i64 @Load8(ptr %p) sanitize_memory {120entry:121  %0 = load i64, ptr %p122  ret i64 %0123}124 125; CHECK-LABEL: define {{[^@]+}}@Load8(126; CHECK: [[META:%[a-z0-9_]+]] = call { ptr, ptr } @__msan_metadata_ptr_for_load_8(ptr %p)127; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 0128; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 1129; CHECK: [[SHADOW_VAL:%[a-z0-9_]+]] = load i64, ptr [[SHADOW]]130; CHECK: [[ORIGIN_VAL:%[a-z0-9_]+]] = load i32, ptr [[ORIGIN]]131; CHECK: store i64 [[SHADOW_VAL]], ptr %retval_shadow132; CHECK: store i32 [[ORIGIN_VAL]], ptr %retval_origin133; CHECK: ret i64 {{.+}}134 135define i128 @Load16(ptr %p) sanitize_memory {136entry:137  %0 = load i128, ptr %p138  ret i128 %0139}140 141; CHECK-LABEL: define {{[^@]+}}@Load16(142; CHECK: [[META:%[a-z0-9_]+]] = call { ptr, ptr } @__msan_metadata_ptr_for_load_n(ptr %p, i64 16)143; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 0144; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 1145; CHECK: [[SHADOW_VAL:%[a-z0-9_]+]] = load i128, ptr [[SHADOW]]146; CHECK: [[ORIGIN_VAL:%[a-z0-9_]+]] = load i32, ptr [[ORIGIN]]147; CHECK: store i128 [[SHADOW_VAL]], ptr %retval_shadow148; CHECK: store i32 [[ORIGIN_VAL]], ptr %retval_origin149; CHECK: ret i128 {{.+}}150