Skip to content

Commit 2e1ba12

Browse files
committed
AMDGPU/NewPM: Start implementing addCodeGenPrepare
1 parent a3fea06 commit 2e1ba12

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

+11
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
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+
17711782
void AMDGPUCodeGenPassBuilder::addPreISel(AddIRPass &addPass) const {
17721783
const bool LateCFGStructurize = AMDGPUTargetMachine::EnableLateStructurizeCFG;
17731784
const bool DisableStructurizer = AMDGPUTargetMachine::DisableStructurizer;

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.h

+3
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,14 @@ class AMDGPUPassConfig : public TargetPassConfig {
165165

166166
class AMDGPUCodeGenPassBuilder
167167
: public CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine> {
168+
using Base = CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine>;
169+
168170
public:
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;

0 commit comments

Comments
 (0)