brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.5 KiB · 5a8db56 Raw
170 lines · plain
1; RUN: opt < %s -S -mcpu=z13 -msan-kernel=1 -float-abi=soft -passes=msan 2>&1 | FileCheck %s2 3target datalayout = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-a:8:16-n32:64"4target triple = "s390x-unknown-linux-gnu"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_PTR:%[a-z0-9_]+]] = alloca { ptr, ptr }14; CHECK: call void @__msan_metadata_ptr_for_store_1(ptr [[META_PTR]], ptr %p)15; CHECK: [[META:%[a-z0-9_]+]] = load { ptr, ptr }, ptr [[META_PTR]]16; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 017; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 118; CHECK: store i8 {{.+}}, ptr [[SHADOW]]19; CHECK: ret void20 21define void @Store2(ptr %p, i16 %x) sanitize_memory {22entry:23  store i16 %x, ptr %p24  ret void25}26 27; CHECK-LABEL: define {{[^@]+}}@Store2(28; CHECK: [[META_PTR:%[a-z0-9_]+]] = alloca { ptr, ptr }29; CHECK: call void @__msan_metadata_ptr_for_store_2(ptr [[META_PTR]], ptr %p)30; CHECK: [[META:%[a-z0-9_]+]] = load { ptr, ptr }, ptr [[META_PTR]]31; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 032; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 133; CHECK: store i16 {{.+}}, ptr [[SHADOW]]34; CHECK: ret void35 36define void @Store4(ptr %p, i32 %x) sanitize_memory {37entry:38  store i32 %x, ptr %p39  ret void40}41 42; CHECK-LABEL: define {{[^@]+}}@Store4(43; CHECK: [[META_PTR:%[a-z0-9_]+]] = alloca { ptr, ptr }44; CHECK: call void @__msan_metadata_ptr_for_store_4(ptr [[META_PTR]], ptr %p)45; CHECK: [[META:%[a-z0-9_]+]] = load { ptr, ptr }, ptr [[META_PTR]]46; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 047; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 148; CHECK: store i32 {{.+}}, ptr [[SHADOW]]49; CHECK: ret void50 51define void @Store8(ptr %p, i64 %x) sanitize_memory {52entry:53  store i64 %x, ptr %p54  ret void55}56 57; CHECK-LABEL: define {{[^@]+}}@Store8(58; CHECK: [[META_PTR:%[a-z0-9_]+]] = alloca { ptr, ptr }59; CHECK: call void @__msan_metadata_ptr_for_store_8(ptr [[META_PTR]], ptr %p)60; CHECK: [[META:%[a-z0-9_]+]] = load { ptr, ptr }, ptr [[META_PTR]]61; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 062; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 163; CHECK: store i64 {{.+}}, ptr [[SHADOW]]64; CHECK: ret void65 66define void @Store16(ptr %p, i128 %x) sanitize_memory {67entry:68  store i128 %x, ptr %p69  ret void70}71 72; CHECK-LABEL: define {{[^@]+}}@Store16(73; CHECK: [[META_PTR:%[a-z0-9_]+]] = alloca { ptr, ptr }74; CHECK: call void @__msan_metadata_ptr_for_store_n(ptr [[META_PTR]], ptr %p, i64 16)75; CHECK: [[META:%[a-z0-9_]+]] = load { ptr, ptr }, ptr [[META_PTR]]76; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 077; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 178; CHECK: store i128 {{.+}}, ptr [[SHADOW]]79; CHECK: ret void80 81define i8 @Load1(ptr %p) sanitize_memory {82entry:83  %0 = load i8, ptr %p84  ret i8 %085}86 87; CHECK-LABEL: define {{[^@]+}}@Load1(88; CHECK: [[META_PTR:%[a-z0-9_]+]] = alloca { ptr, ptr }89; CHECK: call void @__msan_metadata_ptr_for_load_1(ptr [[META_PTR]], ptr %p)90; CHECK: [[META:%[a-z0-9_]+]] = load { ptr, ptr }, ptr [[META_PTR]]91; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 092; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 193; CHECK: [[SHADOW_VAL:%[a-z0-9_]+]] = load i8, ptr [[SHADOW]]94; CHECK: [[ORIGIN_VAL:%[a-z0-9_]+]] = load i32, ptr [[ORIGIN]]95; CHECK: store i8 [[SHADOW_VAL]], ptr %retval_shadow96; CHECK: store i32 [[ORIGIN_VAL]], ptr %retval_origin97; CHECK: ret i8 {{.+}}98 99define i16 @Load2(ptr %p) sanitize_memory {100entry:101  %0 = load i16, ptr %p102  ret i16 %0103}104 105; CHECK-LABEL: define {{[^@]+}}@Load2(106; CHECK: [[META_PTR:%[a-z0-9_]+]] = alloca { ptr, ptr }107; CHECK: call void @__msan_metadata_ptr_for_load_2(ptr [[META_PTR]], ptr %p)108; CHECK: [[META:%[a-z0-9_]+]] = load { ptr, ptr }, ptr [[META_PTR]]109; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 0110; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 1111; CHECK: [[SHADOW_VAL:%[a-z0-9_]+]] = load i16, ptr [[SHADOW]]112; CHECK: [[ORIGIN_VAL:%[a-z0-9_]+]] = load i32, ptr [[ORIGIN]]113; CHECK: store i16 [[SHADOW_VAL]], ptr %retval_shadow114; CHECK: store i32 [[ORIGIN_VAL]], ptr %retval_origin115; CHECK: ret i16 {{.+}}116 117define i32 @Load4(ptr %p) sanitize_memory {118entry:119  %0 = load i32, ptr %p120  ret i32 %0121}122 123; CHECK-LABEL: define {{[^@]+}}@Load4(124; CHECK: [[META_PTR:%[a-z0-9_]+]] = alloca { ptr, ptr }125; CHECK: call void @__msan_metadata_ptr_for_load_4(ptr [[META_PTR]], ptr %p)126; CHECK: [[META:%[a-z0-9_]+]] = load { ptr, ptr }, ptr [[META_PTR]]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 i32, ptr [[SHADOW]]130; CHECK: [[ORIGIN_VAL:%[a-z0-9_]+]] = load i32, ptr [[ORIGIN]]131; CHECK: store i32 [[SHADOW_VAL]], ptr %retval_shadow132; CHECK: store i32 [[ORIGIN_VAL]], ptr %retval_origin133; CHECK: ret i32 {{.+}}134 135define i64 @Load8(ptr %p) sanitize_memory {136entry:137  %0 = load i64, ptr %p138  ret i64 %0139}140 141; CHECK-LABEL: define {{[^@]+}}@Load8(142; CHECK: [[META_PTR:%[a-z0-9_]+]] = alloca { ptr, ptr }143; CHECK: call void @__msan_metadata_ptr_for_load_8(ptr [[META_PTR]], ptr %p)144; CHECK: [[META:%[a-z0-9_]+]] = load { ptr, ptr }, ptr [[META_PTR]]145; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 0146; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 1147; CHECK: [[SHADOW_VAL:%[a-z0-9_]+]] = load i64, ptr [[SHADOW]]148; CHECK: [[ORIGIN_VAL:%[a-z0-9_]+]] = load i32, ptr [[ORIGIN]]149; CHECK: store i64 [[SHADOW_VAL]], ptr %retval_shadow150; CHECK: store i32 [[ORIGIN_VAL]], ptr %retval_origin151; CHECK: ret i64 {{.+}}152 153define i128 @Load16(ptr %p) sanitize_memory {154entry:155  %0 = load i128, ptr %p156  ret i128 %0157}158 159; CHECK-LABEL: define {{[^@]+}}@Load16(160; CHECK: [[META_PTR:%[a-z0-9_]+]] = alloca { ptr, ptr }161; CHECK: call void @__msan_metadata_ptr_for_load_n(ptr [[META_PTR]], ptr %p, i64 16)162; CHECK: [[META:%[a-z0-9_]+]] = load { ptr, ptr }, ptr [[META_PTR]]163; CHECK: [[SHADOW:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 0164; CHECK: [[ORIGIN:%[a-z0-9_]+]] = extractvalue { ptr, ptr } [[META]], 1165; CHECK: [[SHADOW_VAL:%[a-z0-9_]+]] = load i128, ptr [[SHADOW]]166; CHECK: [[ORIGIN_VAL:%[a-z0-9_]+]] = load i32, ptr [[ORIGIN]]167; CHECK: store i128 [[SHADOW_VAL]], ptr %retval_shadow168; CHECK: store i32 [[ORIGIN_VAL]], ptr %retval_origin169; CHECK: ret i128 {{.+}}170