mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-17 04:24:00 +00:00
EH: Prune unreachable resume instructions during Dwarf EH preparation
Today a simple function that only catches exceptions and doesn't run destructor cleanups ends up containing a dead call to _Unwind_Resume (PR20300). We can't remove these dead resume instructions during normal optimization because inlining might introduce additional landingpads that do have cleanups to run. Instead we can do this during EH preparation, which is guaranteed to run after inlining. Fixes PR20300. Reviewers: majnemer Differential Revision: http://reviews.llvm.org/D7744 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229944 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -24,9 +24,10 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
|
||||
initializeBranchFolderPassPass(Registry);
|
||||
initializeCodeGenPreparePass(Registry);
|
||||
initializeDeadMachineInstructionElimPass(Registry);
|
||||
initializeDwarfEHPreparePass(Registry);
|
||||
initializeEarlyIfConverterPass(Registry);
|
||||
initializeExpandPostRAPass(Registry);
|
||||
initializeExpandISelPseudosPass(Registry);
|
||||
initializeExpandPostRAPass(Registry);
|
||||
initializeFinalizeMachineBundlesPass(Registry);
|
||||
initializeGCMachineCodeAnalysisPass(Registry);
|
||||
initializeGCModuleInfoPass(Registry);
|
||||
@ -36,31 +37,34 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
|
||||
initializeLiveStacksPass(Registry);
|
||||
initializeLiveVariablesPass(Registry);
|
||||
initializeLocalStackSlotPassPass(Registry);
|
||||
initializeLowerIntrinsicsPass(Registry);
|
||||
initializeMachineBlockFrequencyInfoPass(Registry);
|
||||
initializeMachineBlockPlacementPass(Registry);
|
||||
initializeMachineBlockPlacementStatsPass(Registry);
|
||||
initializeMachineCopyPropagationPass(Registry);
|
||||
initializeMachineCombinerPass(Registry);
|
||||
initializeMachineCSEPass(Registry);
|
||||
initializeMachineCombinerPass(Registry);
|
||||
initializeMachineCopyPropagationPass(Registry);
|
||||
initializeMachineDominatorTreePass(Registry);
|
||||
initializeMachinePostDominatorTreePass(Registry);
|
||||
initializeMachineFunctionPrinterPassPass(Registry);
|
||||
initializeMachineLICMPass(Registry);
|
||||
initializeMachineLoopInfoPass(Registry);
|
||||
initializeMachineModuleInfoPass(Registry);
|
||||
initializeMachinePostDominatorTreePass(Registry);
|
||||
initializeMachineSchedulerPass(Registry);
|
||||
initializeMachineSinkingPass(Registry);
|
||||
initializeMachineVerifierPassPass(Registry);
|
||||
initializeOptimizePHIsPass(Registry);
|
||||
initializePEIPass(Registry);
|
||||
initializePHIEliminationPass(Registry);
|
||||
initializePeepholeOptimizerPass(Registry);
|
||||
initializePostMachineSchedulerPass(Registry);
|
||||
initializePostRASchedulerPass(Registry);
|
||||
initializeProcessImplicitDefsPass(Registry);
|
||||
initializePEIPass(Registry);
|
||||
initializeRegisterCoalescerPass(Registry);
|
||||
initializeSlotIndexesPass(Registry);
|
||||
initializeStackProtectorPass(Registry);
|
||||
initializeStackColoringPass(Registry);
|
||||
initializeStackMapLivenessPass(Registry);
|
||||
initializeStackProtectorPass(Registry);
|
||||
initializeStackSlotColoringPass(Registry);
|
||||
initializeTailDuplicatePassPass(Registry);
|
||||
initializeTargetPassConfigPass(Registry);
|
||||
@ -70,9 +74,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
|
||||
initializeUnreachableMachineBlockElimPass(Registry);
|
||||
initializeVirtRegMapPass(Registry);
|
||||
initializeVirtRegRewriterPass(Registry);
|
||||
initializeLowerIntrinsicsPass(Registry);
|
||||
initializeMachineFunctionPrinterPassPass(Registry);
|
||||
initializeStackMapLivenessPass(Registry);
|
||||
initializeWinEHPreparePass(Registry);
|
||||
}
|
||||
|
||||
void LLVMInitializeCodeGen(LLVMPassRegistryRef R) {
|
||||
|
Reference in New Issue
Block a user