forked from OSchip/llvm-project
[Devirtualization] insert placement new barrier with -O0
Summary: To not break LTO with different optimizations levels, we should insert the barrier regardles of optimization level. Reviewers: rjmccall, rsmith, mehdi_amini Reviewed By: mehdi_amini Subscribers: mehdi_amini, cfe-commits Differential Revision: https://reviews.llvm.org/D32401 llvm-svn: 303488
This commit is contained in:
parent
8de7f1086f
commit
31fd99cf65
|
@ -1658,8 +1658,9 @@ llvm::Value *CodeGenFunction::EmitCXXNewExpr(const CXXNewExpr *E) {
|
|||
|
||||
// Passing pointer through invariant.group.barrier to avoid propagation of
|
||||
// vptrs information which may be included in previous type.
|
||||
// To not break LTO with different optimizations levels, we do it regardless
|
||||
// of optimization level.
|
||||
if (CGM.getCodeGenOpts().StrictVTablePointers &&
|
||||
CGM.getCodeGenOpts().OptimizationLevel > 0 &&
|
||||
allocator->isReservedGlobalPlacementOperator())
|
||||
result = Address(Builder.CreateInvariantGroupBarrier(result.getPointer()),
|
||||
result.getAlignment());
|
||||
|
|
Loading…
Reference in New Issue