19203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl// RUN: %clang_cc1 -std=c++11 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s
29203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl
39203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl// CHECK: define void @_Z2fni
49203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redlvoid fn(int n) {
59203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  // CHECK: icmp ult i{{32|64}} %{{[^ ]+}}, 3
69203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  // CHECK: store i32 1
79203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  // CHECK: store i32 2
89203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  // CHECK: store i32 3
99203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  // CHECK: icmp eq i32*
109203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  // CHECK-NEXT: br i1
119203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  new int[n] { 1, 2, 3 };
129203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl}
139203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl
149203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl// CHECK: define void @_Z15const_underflowv
159203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redlvoid const_underflow() {
169203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  // CHECK-NOT: icmp ult i{{32|64}} %{{[^ ]+}}, 3
179203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  // CHECK: call noalias i8* @_Zna{{.}}(i{{32|64}} -1)
189203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  new int[2] { 1, 2, 3 };
199203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl}
209203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl
219203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl// CHECK: define void @_Z11const_exactv
229203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redlvoid const_exact() {
239203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  // CHECK-NOT: icmp ult i{{32|64}} %{{[^ ]+}}, 3
249203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  // CHECK-NOT: icmp eq i32*
259203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  new int[3] { 1, 2, 3 };
269203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl}
279203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl
289203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl// CHECK: define void @_Z16const_sufficientv
299203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redlvoid const_sufficient() {
309203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  // CHECK-NOT: icmp ult i{{32|64}} %{{[^ ]+}}, 3
319203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  new int[4] { 1, 2, 3 };
329203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl  // CHECK: ret void
339203647221439c6eb04842bb8a22f5f03fd4d2bfSebastian Redl}
34