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