~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/Instrumentation/AddressSanitizer/lifetime-uar.ll

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; Test handling of llvm.lifetime intrinsics in UAR mode.
 
2
; RUN: opt < %s -asan -asan-module -asan-use-after-return -asan-check-lifetime -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
 
 
6
declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind
 
7
declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind
 
8
 
 
9
define i32 @basic_test() sanitize_address {
 
10
  ; CHECK-LABEL: define i32 @basic_test()
 
11
 
 
12
entry:
 
13
  %retval = alloca i32, align 4
 
14
  %c = alloca i8, align 1
 
15
 
 
16
  call void @llvm.lifetime.start(i64 1, i8* %c)
 
17
  ; Memory is unpoisoned at llvm.lifetime.start
 
18
  ; CHECK: call void @__asan_unpoison_stack_memory(i64 %{{[^ ]+}}, i64 1)
 
19
 
 
20
  store volatile i32 0, i32* %retval
 
21
  store volatile i8 0, i8* %c, align 1
 
22
 
 
23
  call void @llvm.lifetime.end(i64 1, i8* %c)
 
24
  ; Memory is poisoned at llvm.lifetime.end
 
25
  ; CHECK: call void @__asan_poison_stack_memory(i64 %{{[^ ]+}}, i64 1)
 
26
 
 
27
  ; No need to unpoison memory at function exit in UAR mode.
 
28
  ; CHECK-NOT: @__asan_unpoison_stack_memory
 
29
  ; CHECK: ret void
 
30
 
 
31
  ret i32 0
 
32
}
 
33