brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · e3b8c22 Raw
134 lines · plain
1; RUN: opt < %s -passes=tsan -S | FileCheck %s2 3target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"4 5define i16 @test_unaligned_read2(ptr %a) sanitize_thread {6entry:7  %tmp1 = load i16, ptr %a, align 18  ret i16 %tmp19}10 11; CHECK-LABEL: define i16 @test_unaligned_read2(ptr %a)12; CHECK:        call void @__tsan_func_entry(ptr %0)13; CHECK-NEXT:   call void @__tsan_unaligned_read2(ptr %a)14; CHECK-NEXT:   %tmp1 = load i16, ptr %a, align 115; CHECK-NEXT:   call void @__tsan_func_exit()16; CHECK: ret i1617 18define i32 @test_unaligned_read4(ptr %a) sanitize_thread {19entry:20  %tmp1 = load i32, ptr %a, align 221  ret i32 %tmp122}23 24; CHECK-LABEL: define i32 @test_unaligned_read4(ptr %a)25; CHECK:        call void @__tsan_func_entry(ptr %0)26; CHECK-NEXT:   call void @__tsan_unaligned_read4(ptr %a)27; CHECK-NEXT:   %tmp1 = load i32, ptr %a, align 228; CHECK-NEXT:   call void @__tsan_func_exit()29; CHECK: ret i3230 31define i64 @test_unaligned_read8(ptr %a) sanitize_thread {32entry:33  %tmp1 = load i64, ptr %a, align 434  ret i64 %tmp135}36 37; CHECK-LABEL: define i64 @test_unaligned_read8(ptr %a)38; CHECK:        call void @__tsan_func_entry(ptr %0)39; CHECK-NEXT:   call void @__tsan_unaligned_read8(ptr %a)40; CHECK-NEXT:   %tmp1 = load i64, ptr %a, align 441; CHECK-NEXT:   call void @__tsan_func_exit()42; CHECK: ret i6443 44define i128 @test_unaligned_read16(ptr %a) sanitize_thread {45entry:46  %tmp1 = load i128, ptr %a, align 147  ret i128 %tmp148}49 50; CHECK-LABEL: define i128 @test_unaligned_read16(ptr %a)51; CHECK:        call void @__tsan_func_entry(ptr %0)52; CHECK-NEXT:   call void @__tsan_unaligned_read16(ptr %a)53; CHECK-NEXT:   %tmp1 = load i128, ptr %a, align 154; CHECK-NEXT:   call void @__tsan_func_exit()55; CHECK: ret i12856 57define i128 @test_aligned_read16(ptr %a) sanitize_thread {58entry:59  %tmp1 = load i128, ptr %a, align 860  ret i128 %tmp161}62 63; CHECK-LABEL: define i128 @test_aligned_read16(ptr %a)64; CHECK:        call void @__tsan_func_entry(ptr %0)65; CHECK-NEXT:   call void @__tsan_read16(ptr %a)66; CHECK-NEXT:   %tmp1 = load i128, ptr %a, align 867; CHECK-NEXT:   call void @__tsan_func_exit()68; CHECK: ret i12869 70define void @test_unaligned_write2(ptr %a) sanitize_thread {71entry:72  store i16 1, ptr %a, align 173  ret void74}75 76; CHECK-LABEL: define void @test_unaligned_write2(ptr %a)77; CHECK:        call void @__tsan_func_entry(ptr %0)78; CHECK-NEXT:   call void @__tsan_unaligned_write2(ptr %a)79; CHECK-NEXT:   store i16 1, ptr %a, align 180; CHECK-NEXT:   call void @__tsan_func_exit()81; CHECK: ret void82 83define void @test_unaligned_write4(ptr %a) sanitize_thread {84entry:85  store i32 1, ptr %a, align 186  ret void87}88 89; CHECK-LABEL: define void @test_unaligned_write4(ptr %a)90; CHECK:        call void @__tsan_func_entry(ptr %0)91; CHECK-NEXT:   call void @__tsan_unaligned_write4(ptr %a)92; CHECK-NEXT:   store i32 1, ptr %a, align 193; CHECK-NEXT:   call void @__tsan_func_exit()94; CHECK: ret void95 96define void @test_unaligned_write8(ptr %a) sanitize_thread {97entry:98  store i64 1, ptr %a, align 199  ret void100}101 102; CHECK-LABEL: define void @test_unaligned_write8(ptr %a)103; CHECK:        call void @__tsan_func_entry(ptr %0)104; CHECK-NEXT:   call void @__tsan_unaligned_write8(ptr %a)105; CHECK-NEXT:   store i64 1, ptr %a, align 1106; CHECK-NEXT:   call void @__tsan_func_exit()107; CHECK: ret void108 109define void @test_unaligned_write16(ptr %a) sanitize_thread {110entry:111  store i128 1, ptr %a, align 1112  ret void113}114 115; CHECK-LABEL: define void @test_unaligned_write16(ptr %a)116; CHECK:        call void @__tsan_func_entry(ptr %0)117; CHECK-NEXT:   call void @__tsan_unaligned_write16(ptr %a)118; CHECK-NEXT:   store i128 1, ptr %a, align 1119; CHECK-NEXT:   call void @__tsan_func_exit()120; CHECK: ret void121 122define void @test_aligned_write16(ptr %a) sanitize_thread {123entry:124  store i128 1, ptr %a, align 8125  ret void126}127 128; CHECK-LABEL: define void @test_aligned_write16(ptr %a)129; CHECK:        call void @__tsan_func_entry(ptr %0)130; CHECK-NEXT:   call void @__tsan_write16(ptr %a)131; CHECK-NEXT:   store i128 1, ptr %a, align 8132; CHECK-NEXT:   call void @__tsan_func_exit()133; CHECK: ret void134