mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-18 21:24:32 -04:00
[ConstantHoisting] Call cleanup() in ConstantHoistingPass::runImpl to avoid dangling elements in ConstIntInfoVec for new PM
Summary: ConstIntInfoVec contains elements extracted from the previous function. In new PM, releaseMemory() is not called and the dangling elements can cause segfault in findConstantInsertionPoint. Rename releaseMemory() to cleanup() to deliver the idea that it is mandatory and call cleanup() in ConstantHoistingPass::runImpl to fix this. Reviewers: ormris, zzheng, dmgreen, wmi Reviewed By: ormris, wmi Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D58589 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355174 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -126,7 +126,7 @@ public:
|
||||
bool runImpl(Function &F, TargetTransformInfo &TTI, DominatorTree &DT,
|
||||
BlockFrequencyInfo *BFI, BasicBlock &Entry);
|
||||
|
||||
void releaseMemory() {
|
||||
void cleanup() {
|
||||
ClonedCastMap.clear();
|
||||
ConstIntCandVec.clear();
|
||||
for (auto MapEntry : ConstGEPCandMap)
|
||||
|
||||
@@ -114,8 +114,6 @@ public:
|
||||
AU.addRequired<TargetTransformInfoWrapperPass>();
|
||||
}
|
||||
|
||||
void releaseMemory() override { Impl.releaseMemory(); }
|
||||
|
||||
private:
|
||||
ConstantHoistingPass Impl;
|
||||
};
|
||||
@@ -947,6 +945,8 @@ bool ConstantHoistingPass::runImpl(Function &Fn, TargetTransformInfo &TTI,
|
||||
// Cleanup dead instructions.
|
||||
deleteDeadCastInst();
|
||||
|
||||
cleanup();
|
||||
|
||||
return MadeChange;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
; RUN: opt -S -consthoist < %s | FileCheck %s
|
||||
; RUN: opt -S -passes=consthoist < %s | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-apple-macosx10.9.0"
|
||||
|
||||
Reference in New Issue
Block a user