mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 05:32:25 +00:00
90844c4778
After the -asan pass had been split into -asan (function-level) and -asan-module (module-level) some of the tests have silently stopped working, because they didn't instrument the globals anymore. We've decided to have every test using both passes, irrespective of the presence of globals in it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204335 91177308-0d34-0410-b5e6-96231b3b80d8
50 lines
1.5 KiB
LLVM
50 lines
1.5 KiB
LLVM
; RUN: opt < %s -asan -asan-module -S | FileCheck %s
|
|
; AddressSanitizer must insert __asan_handle_no_return
|
|
; before every noreturn call or invoke.
|
|
|
|
target 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"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
declare void @MyNoReturnFunc(i32) noreturn
|
|
|
|
define i32 @Call1(i8* nocapture %arg) uwtable sanitize_address {
|
|
entry:
|
|
call void @MyNoReturnFunc(i32 1) noreturn ; The call insn has noreturn attr.
|
|
; CHECK: @Call1
|
|
; CHECK: call void @__asan_handle_no_return
|
|
; CHECK-NEXT: call void @MyNoReturnFunc
|
|
; CHECK-NEXT: unreachable
|
|
unreachable
|
|
}
|
|
|
|
define i32 @Call2(i8* nocapture %arg) uwtable sanitize_address {
|
|
entry:
|
|
call void @MyNoReturnFunc(i32 1) ; No noreturn attribure on the call.
|
|
; CHECK: @Call2
|
|
; CHECK: call void @__asan_handle_no_return
|
|
; CHECK-NEXT: call void @MyNoReturnFunc
|
|
; CHECK-NEXT: unreachable
|
|
unreachable
|
|
}
|
|
|
|
declare i32 @__gxx_personality_v0(...)
|
|
|
|
define i64 @Invoke1(i8** %esc) nounwind uwtable ssp sanitize_address {
|
|
entry:
|
|
invoke void @MyNoReturnFunc(i32 1)
|
|
to label %invoke.cont unwind label %lpad
|
|
|
|
invoke.cont:
|
|
ret i64 0
|
|
|
|
lpad:
|
|
%0 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
|
|
filter [0 x i8*] zeroinitializer
|
|
ret i64 1
|
|
}
|
|
; CHECK: @Invoke1
|
|
; CHECK: call void @__asan_handle_no_return
|
|
; CHECK-NEXT: invoke void @MyNoReturnFunc
|
|
; CHECK: ret i64 0
|
|
; CHECK: ret i64 1
|