File tree Expand file tree Collapse file tree 2 files changed +14
-0
lines changed Expand file tree Collapse file tree 2 files changed +14
-0
lines changed Original file line number Diff line number Diff line change 7373#include " llvm/Transforms/Utils.h"
7474#include " llvm/Transforms/Utils/FixIrreducible.h"
7575#include " llvm/Transforms/Utils/LCSSA.h"
76+ #include " llvm/Transforms/Utils/LowerSwitch.h"
7677#include " llvm/Transforms/Utils/SimplifyLibCalls.h"
7778#include " llvm/Transforms/Utils/UnifyLoopExits.h"
7879#include " llvm/Transforms/Vectorize/LoadStoreVectorizer.h"
@@ -1768,6 +1769,16 @@ AMDGPUCodeGenPassBuilder::AMDGPUCodeGenPassBuilder(
17681769 ShadowStackGCLoweringPass>();
17691770}
17701771
1772+ void AMDGPUCodeGenPassBuilder::addCodeGenPrepare (AddIRPass &addPass) const {
1773+ Base::addCodeGenPrepare (addPass);
1774+
1775+ // LowerSwitch pass may introduce unreachable blocks that can cause unexpected
1776+ // behavior for subsequent passes. Placing it here seems better that these
1777+ // blocks would get cleaned up by UnreachableBlockElim inserted next in the
1778+ // pass flow.
1779+ addPass (LowerSwitchPass ());
1780+ }
1781+
17711782void AMDGPUCodeGenPassBuilder::addPreISel (AddIRPass &addPass) const {
17721783 const bool LateCFGStructurize = AMDGPUTargetMachine::EnableLateStructurizeCFG;
17731784 const bool DisableStructurizer = AMDGPUTargetMachine::DisableStructurizer;
Original file line number Diff line number Diff line change @@ -165,11 +165,14 @@ class AMDGPUPassConfig : public TargetPassConfig {
165165
166166class AMDGPUCodeGenPassBuilder
167167 : public CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine> {
168+ using Base = CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine>;
169+
168170public:
169171 AMDGPUCodeGenPassBuilder (GCNTargetMachine &TM,
170172 const CGPassBuilderOption &Opts,
171173 PassInstrumentationCallbacks *PIC);
172174
175+ void addCodeGenPrepare (AddIRPass &) const ;
173176 void addPreISel (AddIRPass &addPass) const ;
174177 void addAsmPrinter (AddMachinePass &, CreateMCStreamer) const ;
175178 Error addInstSelector (AddMachinePass &) const ;
You can’t perform that action at this time.
0 commit comments