<dt id="opt_fno-assume-sane-operator-new"><b>-fno-assume-sane-operator-new</b>:
Don't assume that the C++'s new operator is sane.</dt>
-<dd>This option tells the compiler to do not assume that C++'s global - and any
-possibly overloaded - new operator will always return a pointer that do not
+<dd>This option tells the compiler to do not assume that C++'s global new
+operator will always return a pointer that do not
alias any other pointer when the function returns.</dd>
<!-- ======================================================================= -->
D.getIdentifierLoc(), Name, R, TInfo,
isStatic, isInline);
- if ((Name.getCXXOverloadedOperator() == OO_New ||
- Name.getCXXOverloadedOperator() == OO_Array_New) &&
- getLangOptions().AssumeSaneOperatorNew)
- NewFD->addAttr(::new (Context) MallocAttr());
-
isVirtualOkay = !isStatic;
} else {
// Determine whether the function was written with a
class teste {
int A;
teste() : A(2) {}
- void* operator new(unsigned) {return ::new teste();}
};
void f1() {
+ // CHECK-SANE: declare noalias i8* @_Znwj(
+ // CHECK-SANENOT: declare i8* @_Znwj(
new teste();
}
-
-// CHECK-SANE: define linkonce_odr noalias i8* @_ZN5testenwEj(
-// CHECK-SANE: declare noalias i8* @_Znwj(
-
-// CHECK-SANENOT: define linkonce_odr i8* @_ZN5testenwEj(
-// CHECK-SANENOT: declare i8* @_Znwj(