blob: e2786203e6a785e86b8d61a9e2fb9e5a3426defd [file] [log] [blame]
Nuno Lopes08a9ae92012-05-09 15:53:34 +00001// RUN: %clang_cc1 -fbounds-checking=4 -emit-llvm -triple x86_64-apple-darwin10 < %s | FileCheck %s
2
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}