instrument-stack.ll 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. 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"
  4. target triple = "x86_64-unknown-linux-gnu"
  5. ;@sink = global i32* null, align 4
  6. ; Ignore direct inbounds stack access.
  7. define void @foo() uwtable sanitize_address {
  8. entry:
  9. %a = alloca i32, align 4
  10. store i32 42, i32* %a, align 4
  11. ret void
  12. ; CHECK-LABEL: define void @foo
  13. ; CHECK-NOT: __asan_report
  14. ; CHECK: ret void
  15. }
  16. ; Don't ignore dynamic indexing.
  17. define void @baz(i64 %i) sanitize_address {
  18. entry:
  19. %a = alloca [10 x i32], align 4
  20. %e = getelementptr inbounds [10 x i32], [10 x i32]* %a, i32 0, i64 %i
  21. store i32 42, i32* %e, align 4
  22. ret void
  23. ; CHECK-LABEL: define void @baz
  24. ; CHECK: __asan_report
  25. ; CHECK: ret void
  26. }
  27. define void @bar() sanitize_address {
  28. entry:
  29. %a = alloca [10 x i32], align 4
  30. %e = getelementptr inbounds [10 x i32], [10 x i32]* %a, i32 0, i64 12
  31. store i32 42, i32* %e, align 4
  32. ret void
  33. ; CHECK-LABEL: define void @bar
  34. ; CHECK: __asan_report
  35. ; CHECK: ret void
  36. }
  37. define void @endoftests() sanitize_address {
  38. entry:
  39. ret void
  40. ; CHECK-LABEL: define void @endoftests
  41. }