Peter Collingbourne | e5d5b0c | 2013-08-07 22:47:18 +0000 | [diff] [blame] | 1 | ; RUN: opt < %s -dfsan -S | FileCheck %s |
| 2 | 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" |
| 3 | |
| 4 | ; CHECK: @__dfsan_arg_tls = external thread_local(initialexec) global [64 x i16] |
| 5 | ; CHECK: @__dfsan_retval_tls = external thread_local(initialexec) global i16 |
| 6 | |
| 7 | declare i32 @f(i32) |
| 8 | declare float @llvm.sqrt.f32(float) |
| 9 | |
Peter Collingbourne | 59b1262 | 2013-08-22 20:08:08 +0000 | [diff] [blame^] | 10 | ; CHECK: @"dfs$call" |
Peter Collingbourne | e5d5b0c | 2013-08-07 22:47:18 +0000 | [diff] [blame] | 11 | define i32 @call() { |
| 12 | ; CHECK: store{{.*}}__dfsan_arg_tls |
Peter Collingbourne | 59b1262 | 2013-08-22 20:08:08 +0000 | [diff] [blame^] | 13 | ; CHECK: call{{.*}}@"dfs$f" |
Peter Collingbourne | e5d5b0c | 2013-08-07 22:47:18 +0000 | [diff] [blame] | 14 | ; CHECK: load{{.*}}__dfsan_retval_tls |
| 15 | %r = call i32 @f(i32 0) |
| 16 | |
| 17 | ; CHECK-NOT: store{{.*}}__dfsan_arg_tls |
| 18 | %i = call float @llvm.sqrt.f32(float -1.0) |
| 19 | |
| 20 | ; CHECK: store{{.*}}__dfsan_retval_tls |
| 21 | ; CHECK: ret i32 |
| 22 | ret i32 %r |
| 23 | } |