12186f97cb2706eb3bf26b0f5c943e228e4055593Nuno Lopes// RUN: %clang_cc1 -triple i686-pc-linux-gnu -emit-llvm -o %t-1.ll %s 22186f97cb2706eb3bf26b0f5c943e228e4055593Nuno Lopes// RUN: FileCheck -check-prefix SANE --input-file=%t-1.ll %s 32186f97cb2706eb3bf26b0f5c943e228e4055593Nuno Lopes// RUN: %clang_cc1 -triple i686-pc-linux-gnu -emit-llvm -fno-assume-sane-operator-new -o %t-2.ll %s 42186f97cb2706eb3bf26b0f5c943e228e4055593Nuno Lopes// RUN: FileCheck -check-prefix SANENOT --input-file=%t-2.ll %s 52186f97cb2706eb3bf26b0f5c943e228e4055593Nuno Lopes 62186f97cb2706eb3bf26b0f5c943e228e4055593Nuno Lopes 72186f97cb2706eb3bf26b0f5c943e228e4055593Nuno Lopesclass teste { 82186f97cb2706eb3bf26b0f5c943e228e4055593Nuno Lopes int A; 94f4bd835ccc14c54177e9e7ad97bbdd09b161630John McCallpublic: 102186f97cb2706eb3bf26b0f5c943e228e4055593Nuno Lopes teste() : A(2) {} 112186f97cb2706eb3bf26b0f5c943e228e4055593Nuno Lopes}; 122186f97cb2706eb3bf26b0f5c943e228e4055593Nuno Lopes 132186f97cb2706eb3bf26b0f5c943e228e4055593Nuno Lopesvoid f1() { 1408fe4c00ee3c2e62eb27acc38d13610d75b90b4aChris Lattner // SANE: declare noalias i8* @_Znwj( 1508fe4c00ee3c2e62eb27acc38d13610d75b90b4aChris Lattner // SANENOT: declare i8* @_Znwj( 162186f97cb2706eb3bf26b0f5c943e228e4055593Nuno Lopes new teste(); 172186f97cb2706eb3bf26b0f5c943e228e4055593Nuno Lopes} 1808fe4c00ee3c2e62eb27acc38d13610d75b90b4aChris Lattner 1908fe4c00ee3c2e62eb27acc38d13610d75b90b4aChris Lattner 2008fe4c00ee3c2e62eb27acc38d13610d75b90b4aChris Lattner// rdar://5739832 - operator new should check for overflow in multiply. 2108fe4c00ee3c2e62eb27acc38d13610d75b90b4aChris Lattnervoid *f2(long N) { 2208fe4c00ee3c2e62eb27acc38d13610d75b90b4aChris Lattner return new int[N]; 2308fe4c00ee3c2e62eb27acc38d13610d75b90b4aChris Lattner 24637039a7aa8106936f64b1d4748b19658fa9ccabJohn McCall// SANE: [[UWO:%.*]] = call {{.*}} @llvm.umul.with.overflow 25637039a7aa8106936f64b1d4748b19658fa9ccabJohn McCall// SANE-NEXT: [[OVER:%.*]] = extractvalue {{.*}} [[UWO]], 1 26637039a7aa8106936f64b1d4748b19658fa9ccabJohn McCall// SANE-NEXT: [[SUM:%.*]] = extractvalue {{.*}} [[UWO]], 0 27637039a7aa8106936f64b1d4748b19658fa9ccabJohn McCall// SANE-NEXT: [[RESULT:%.*]] = select i1 [[OVER]], i32 -1, i32 [[SUM]] 28637039a7aa8106936f64b1d4748b19658fa9ccabJohn McCall// SANE-NEXT: call noalias i8* @_Znaj(i32 [[RESULT]]) 2908fe4c00ee3c2e62eb27acc38d13610d75b90b4aChris Lattner} 30