зеркало из https://github.com/microsoft/clang-1.git
Fix uninitialized read of CalleeWithThisReturn.
Initialize CalleeWithThisReturn to 0 in the constructor. Also revert r170815 since checking CalleeWithThisReturn is faster. PR15598 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178053 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
e2359e2132
Коммит
94d46b5510
|
@ -1722,7 +1722,7 @@ void CodeGenFunction::EmitFunctionEpilog(const CGFunctionInfo &FI) {
|
|||
// the same object as CXXThisValue, use the return value from the CallInst.
|
||||
// We will not need to keep 'this' alive through the callsite. It also enables
|
||||
// optimizations in the backend, such as tail call optimization.
|
||||
if (CGM.getCXXABI().HasThisReturn(CurGD) && CalleeWithThisReturn) {
|
||||
if (CalleeWithThisReturn && CGM.getCXXABI().HasThisReturn(CurGD)) {
|
||||
llvm::BasicBlock *IP = Builder.GetInsertBlock();
|
||||
llvm::CallInst *Callsite;
|
||||
if (!IP->empty() && (Callsite = dyn_cast<llvm::CallInst>(&IP->back())) &&
|
||||
|
|
|
@ -42,7 +42,8 @@ CodeGenFunction::CodeGenFunction(CodeGenModule &cgm, bool suppressNewContext)
|
|||
AutoreleaseResult(false), BlockInfo(0), BlockPointer(0),
|
||||
LambdaThisCaptureField(0), NormalCleanupDest(0), NextCleanupDestIndex(1),
|
||||
FirstBlockInfo(0), EHResumeBlock(0), ExceptionSlot(0), EHSelectorSlot(0),
|
||||
DebugInfo(0), DisableDebugInfo(false), DidCallStackSave(false),
|
||||
DebugInfo(0), DisableDebugInfo(false), CalleeWithThisReturn(0),
|
||||
DidCallStackSave(false),
|
||||
IndirectBranch(0), SwitchInsn(0), CaseRangeBlock(0), UnreachableBlock(0),
|
||||
CXXABIThisDecl(0), CXXABIThisValue(0), CXXThisValue(0),
|
||||
CXXStructorImplicitParamDecl(0), CXXStructorImplicitParamValue(0),
|
||||
|
|
Загрузка…
Ссылка в новой задаче