1; This test checks that we are not instrumenting direct inbound stack accesses. 2; RUN: opt < %s -passes=asan -asan-opt-stack -S | FileCheck %s 3; RUN: opt < %s -passes=asan -asan-opt-stack -asan-mapping-scale=5 -S | FileCheck %s 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-S128" 6target triple = "x86_64-unknown-linux-gnu" 7 8;@sink = global ptr null, align 4 9 10; Ignore direct inbounds stack access. 11define void @foo() uwtable sanitize_address { 12entry: 13 %a = alloca i32, align 4 14 store i32 42, ptr %a, align 4 15 ret void 16; CHECK-LABEL: define void @foo 17; CHECK-NOT: __asan_report 18; CHECK: ret void 19} 20 21; Don't ignore dynamic indexing. 22define void @baz(i64 %i) sanitize_address { 23entry: 24 %a = alloca [10 x i32], align 4 25 %e = getelementptr inbounds [10 x i32], ptr %a, i32 0, i64 %i 26 store i32 42, ptr %e, align 4 27 ret void 28; CHECK-LABEL: define void @baz 29; CHECK: __asan_report 30; CHECK: ret void 31} 32 33define void @bar() sanitize_address { 34entry: 35 %a = alloca [10 x i32], align 4 36 %e = getelementptr inbounds [10 x i32], ptr %a, i32 0, i64 12 37 store i32 42, ptr %e, align 4 38 ret void 39; CHECK-LABEL: define void @bar 40; CHECK: __asan_report 41; CHECK: ret void 42} 43 44define void @endoftests() sanitize_address { 45entry: 46 ret void 47; CHECK-LABEL: define void @endoftests 48} 49 50