brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 5c2bac7 Raw
67 lines · plain
1; RUN: opt < %s -passes=asan -S | FileCheck %s2; AddressSanitizer must insert __asan_handle_no_return3; before noreturn calls that aren't inserted by sanitizers.4 5target 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"6target triple = "x86_64-unknown-linux-gnu"7 8declare void @NormalFunc()9declare void @NoReturnFunc() noreturn10 11; Instrument noreturn callsites (regardless of function)12define i32 @Call1() sanitize_address {13  call void @NormalFunc() noreturn14  unreachable15}16; CHECK-LABEL:  @Call117; CHECK-NEXT:   call void @__asan_handle_no_return18; CHECK-NEXT:   call void @NormalFunc19 20; Instrument calls to noreturn functions (regardless of callsite)21define i32 @Call2() sanitize_address {22  call void @NoReturnFunc()23  unreachable24}25; CHECK-LABEL:  @Call226; CHECK-NEXT:   call void @__asan_handle_no_return27; CHECK-NEXT:   call void @NoReturnFunc28 29; Do *not* instrument callsites marked !nosanitize30define i32 @Call3() sanitize_address {31  call void @NoReturnFunc() noreturn, !nosanitize !{}32  unreachable33}34; CHECK-LABEL:  @Call335; CHECK-NOT:    call void @__asan_handle_no_return36; CHECK:        call void @NoReturnFunc37 38; Do *not* instrument functions without ASan39define i32 @Call4() {40  call void @NoReturnFunc() noreturn41  unreachable42}43; CHECK-LABEL:  @Call444; CHECK-NOT:    call void @__asan_handle_no_return45; CHECK:        call void @NoReturnFunc46 47declare i32 @__gxx_personality_v0(...)48 49define i64 @Invoke1() nounwind uwtable ssp sanitize_address personality ptr @__gxx_personality_v0 {50entry:51  invoke void @NoReturnFunc()52          to label %invoke.cont unwind label %lpad53 54invoke.cont:55  ret i64 056 57lpad:58  %0 = landingpad { ptr, i32 }59          filter [0 x ptr] zeroinitializer60  ret i64 161}62; CHECK-LABEL:  @Invoke163; CHECK:        call void @__asan_handle_no_return64; CHECK-NEXT:   invoke void @NoReturnFunc65; CHECK: ret i64 066; CHECK: ret i64 167