aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/bounds-checking.c
blob: 3271b76dcbd2b85e9bfb66bbfc0bbf3e2c41f494 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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)
  // CHECK: icmp uge i64 {{.*}}, 8
}

// CHECK: @f2
void f2() {
  int a[2];
  // CHECK: objectsize.i64({{.*}}, i1 false)
  // CHECK: icmp uge i64 {{.*}}, 4
  a[1] = 42;
  
  short *b = malloc(64);
  // CHECK: objectsize.i64({{.*}}, i1 false)
  // CHECK: icmp uge i64 {{.*}}, 4
  // CHECK: getelementptr {{.*}}, i64 5
  // CHECK: objectsize.i64({{.*}}, i1 false)
  // CHECK: icmp uge i64 {{.*}}, 2
  b[5] = a[1]+2;
}