update calls to objectsize intrinsic to match LLVM r156473
add a test for -fbounds-checking code generation
llvm-svn: 156474
diff --git a/clang/test/CodeGen/bounds-checking.c b/clang/test/CodeGen/bounds-checking.c
new file mode 100644
index 0000000..ce7f24f
--- /dev/null
+++ b/clang/test/CodeGen/bounds-checking.c
@@ -0,0 +1,25 @@
+// RUN: %clang_cc1 -fbounds-checking=4 -emit-llvm -triple x86_64-apple-darwin10 < %s | FileCheck %s
+
+// CHECK: @f
+double f(int b, int i) {
+ double a[b];
+ return a[i];
+ // CHECK: objectsize.i64({{.*}}, i1 false, i32 4)
+ // CHECK: icmp uge i64 {{.*}}, 8
+}
+
+// CHECK: @f2
+void f2() {
+ int a[2];
+ // CHECK: objectsize.i64({{.*}}, i1 false, i32 4)
+ // CHECK: icmp uge i64 {{.*}}, 4
+ a[1] = 42;
+
+ short *b = malloc(64);
+ // CHECK: objectsize.i64({{.*}}, i1 false, i32 4)
+ // CHECK: icmp uge i64 {{.*}}, 4
+ // CHECK: getelementptr {{.*}}, i64 5
+ // CHECK: objectsize.i64({{.*}}, i1 false, i32 4)
+ // CHECK: icmp uge i64 {{.*}}, 2
+ b[5] = a[1]+2;
+}