File tree 2 files changed +14
-0
lines changed
2 files changed +14
-0
lines changed Original file line number Diff line number Diff line change 73
73
#include " llvm/Transforms/Utils.h"
74
74
#include " llvm/Transforms/Utils/FixIrreducible.h"
75
75
#include " llvm/Transforms/Utils/LCSSA.h"
76
+ #include " llvm/Transforms/Utils/LowerSwitch.h"
76
77
#include " llvm/Transforms/Utils/SimplifyLibCalls.h"
77
78
#include " llvm/Transforms/Utils/UnifyLoopExits.h"
78
79
#include " llvm/Transforms/Vectorize/LoadStoreVectorizer.h"
@@ -1768,6 +1769,16 @@ AMDGPUCodeGenPassBuilder::AMDGPUCodeGenPassBuilder(
1768
1769
ShadowStackGCLoweringPass>();
1769
1770
}
1770
1771
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
+
1771
1782
void AMDGPUCodeGenPassBuilder::addPreISel (AddIRPass &addPass) const {
1772
1783
const bool LateCFGStructurize = AMDGPUTargetMachine::EnableLateStructurizeCFG;
1773
1784
const bool DisableStructurizer = AMDGPUTargetMachine::DisableStructurizer;
Original file line number Diff line number Diff line change @@ -165,11 +165,14 @@ class AMDGPUPassConfig : public TargetPassConfig {
165
165
166
166
class AMDGPUCodeGenPassBuilder
167
167
: public CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine> {
168
+ using Base = CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine>;
169
+
168
170
public:
169
171
AMDGPUCodeGenPassBuilder (GCNTargetMachine &TM,
170
172
const CGPassBuilderOption &Opts,
171
173
PassInstrumentationCallbacks *PIC);
172
174
175
+ void addCodeGenPrepare (AddIRPass &) const ;
173
176
void addPreISel (AddIRPass &addPass) const ;
174
177
void addAsmPrinter (AddMachinePass &, CreateMCStreamer) const ;
175
178
Error addInstSelector (AddMachinePass &) const ;
You can’t perform that action at this time.
0 commit comments