File tree Expand file tree Collapse file tree 2 files changed +17
-1
lines changed Expand file tree Collapse file tree 2 files changed +17
-1
lines changed Original file line number Diff line number Diff line change 7171#include " llvm/Transforms/Scalar/Sink.h"
7272#include " llvm/Transforms/Scalar/StructurizeCFG.h"
7373#include " llvm/Transforms/Utils.h"
74+
7475#include " llvm/Transforms/Utils/FixIrreducible.h"
7576#include " llvm/Transforms/Utils/LCSSA.h"
77+
78+ #include " llvm/Transforms/Utils/LowerSwitch.h"
79+
7680#include " llvm/Transforms/Utils/SimplifyLibCalls.h"
7781#include " llvm/Transforms/Utils/UnifyLoopExits.h"
7882#include " llvm/Transforms/Vectorize/LoadStoreVectorizer.h"
@@ -1768,6 +1772,16 @@ AMDGPUCodeGenPassBuilder::AMDGPUCodeGenPassBuilder(
17681772 ShadowStackGCLoweringPass>();
17691773}
17701774
1775+ void AMDGPUCodeGenPassBuilder::addCodeGenPrepare (AddIRPass &addPass) const {
1776+ Base::addCodeGenPrepare (addPass);
1777+
1778+ // LowerSwitch pass may introduce unreachable blocks that can cause unexpected
1779+ // behavior for subsequent passes. Placing it here seems better that these
1780+ // blocks would get cleaned up by UnreachableBlockElim inserted next in the
1781+ // pass flow.
1782+ addPass (LowerSwitchPass ());
1783+ }
1784+
17711785void AMDGPUCodeGenPassBuilder::addPreISel (AddIRPass &addPass) const {
17721786 const bool LateCFGStructurize = AMDGPUTargetMachine::EnableLateStructurizeCFG;
17731787 const bool DisableStructurizer = AMDGPUTargetMachine::DisableStructurizer;
Original file line number Diff line number Diff line change @@ -165,11 +165,13 @@ 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);
172-
174+ void addCodeGenPrepare (AddIRPass &) const ;
173175 void addPreISel (AddIRPass &addPass) const ;
174176 void addAsmPrinter (AddMachinePass &, CreateMCStreamer) const ;
175177 Error addInstSelector (AddMachinePass &) const ;
You can’t perform that action at this time.
0 commit comments