diff options
author | Kostya Serebryany <kcc@google.com> | 2013-02-20 12:35:15 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2013-02-20 12:35:15 +0000 |
commit | 1479c9bb392325688b72e5829bbb7939c4a079a4 (patch) | |
tree | 0c17bdc91d164eba3d2285f92f57b2dddece0e45 /test/Instrumentation | |
parent | af3a5420aeb421e83694745c53141683caa123cb (diff) | |
download | external_llvm-1479c9bb392325688b72e5829bbb7939c4a079a4.zip external_llvm-1479c9bb392325688b72e5829bbb7939c4a079a4.tar.gz external_llvm-1479c9bb392325688b72e5829bbb7939c4a079a4.tar.bz2 |
[asan] instrument invoke insns with noreturn attribute (as well as call insns)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175617 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Instrumentation')
-rw-r--r-- | test/Instrumentation/AddressSanitizer/instrument-no-return.ll | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/test/Instrumentation/AddressSanitizer/instrument-no-return.ll b/test/Instrumentation/AddressSanitizer/instrument-no-return.ll index e8f62b5..59654cb 100644 --- a/test/Instrumentation/AddressSanitizer/instrument-no-return.ll +++ b/test/Instrumentation/AddressSanitizer/instrument-no-return.ll @@ -1,6 +1,6 @@ ; RUN: opt < %s -asan -S | FileCheck %s ; AddressSanitizer must insert __asan_handle_no_return -; before every noreturn call. +; 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" @@ -26,3 +26,24 @@ entry: ; CHECK-NEXT: unreachable unreachable } + +declare i32 @__gxx_personality_v0(...) + +define i64 @Invoke1(i8** %esc) nounwind uwtable ssp address_safety { +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 |