blob: fa7541f8141e7e0133c2349fca5aaee5172ad616 [file] [log] [blame]
Joey Gouly85489082012-11-23 10:39:49 +00001// RUN: %clang_cc1 -fsanitize=bounds -emit-llvm -triple x86_64-apple-darwin10 < %s | FileCheck %s
Nuno Lopes08a9ae92012-05-09 15:53:34 +00002
3// CHECK: @f
4double f(int b, int i) {
5 double a[b];
Nuno Lopesdef18492012-05-22 17:19:45 +00006 // CHECK: trap
Nuno Lopes08a9ae92012-05-09 15:53:34 +00007 return a[i];
Nuno Lopes08a9ae92012-05-09 15:53:34 +00008}
9
10// CHECK: @f2
11void f2() {
Nuno Lopesdef18492012-05-22 17:19:45 +000012 // everything is constant; no trap possible
13 // CHECK-NOT: trap
Nuno Lopes08a9ae92012-05-09 15:53:34 +000014 int a[2];
Nuno Lopes08a9ae92012-05-09 15:53:34 +000015 a[1] = 42;
16
17 short *b = malloc(64);
Nuno Lopesdef18492012-05-22 17:19:45 +000018 b[5] = *a + a[1] + 2;
19}
20
21// CHECK: @f3
22void f3() {
23 int a[1];
24 // CHECK: trap
25 a[2] = 1;
Nuno Lopes08a9ae92012-05-09 15:53:34 +000026}