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