Skip to content

Commit 673d0b7

Browse files
committed
AMDGPU/NewPM: Start implementing addCodeGenPrepare
1 parent 97c4b4c commit 673d0b7

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

llvm/lib/Target/AMDGPU/AMDGPUCodeGenPassBuilder.cpp

+11
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "llvm/Transforms/Scalar/StructurizeCFG.h"
2020
#include "llvm/Transforms/Utils/FixIrreducible.h"
2121
#include "llvm/Transforms/Utils/LCSSA.h"
22+
#include "llvm/Transforms/Utils/LowerSwitch.h"
2223
#include "llvm/Transforms/Utils/UnifyLoopExits.h"
2324

2425
using namespace llvm;
@@ -35,6 +36,16 @@ AMDGPUCodeGenPassBuilder::AMDGPUCodeGenPassBuilder(
3536
ShadowStackGCLoweringPass>();
3637
}
3738

39+
void AMDGPUCodeGenPassBuilder::addCodeGenPrepare(AddIRPass &addPass) const {
40+
Base::addCodeGenPrepare(addPass);
41+
42+
// LowerSwitch pass may introduce unreachable blocks that can cause unexpected
43+
// behavior for subsequent passes. Placing it here seems better that these
44+
// blocks would get cleaned up by UnreachableBlockElim inserted next in the
45+
// pass flow.
46+
addPass(LowerSwitchPass());
47+
}
48+
3849
void AMDGPUCodeGenPassBuilder::addPreISel(AddIRPass &addPass) const {
3950
const bool LateCFGStructurize = AMDGPUTargetMachine::EnableLateStructurizeCFG;
4051
const bool DisableStructurizer = AMDGPUTargetMachine::DisableStructurizer;

llvm/lib/Target/AMDGPU/AMDGPUCodeGenPassBuilder.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@ class GCNTargetMachine;
1919
class AMDGPUCodeGenPassBuilder
2020
: public CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine> {
2121
public:
22+
using Base = CodeGenPassBuilder<AMDGPUCodeGenPassBuilder, GCNTargetMachine>;
23+
2224
AMDGPUCodeGenPassBuilder(GCNTargetMachine &TM,
2325
const CGPassBuilderOption &Opts,
2426
PassInstrumentationCallbacks *PIC);
25-
27+
void addCodeGenPrepare(AddIRPass &) const;
2628
void addPreISel(AddIRPass &addPass) const;
2729
void addAsmPrinter(AddMachinePass &, CreateMCStreamer) const;
2830
Error addInstSelector(AddMachinePass &) const;

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
#include "llvm/Transforms/Scalar/GVN.h"
6868
#include "llvm/Transforms/Scalar/InferAddressSpaces.h"
6969
#include "llvm/Transforms/Utils.h"
70+
#include "llvm/Transforms/Utils/LowerSwitch.h"
7071
#include "llvm/Transforms/Utils/SimplifyLibCalls.h"
7172
#include "llvm/Transforms/Vectorize/LoadStoreVectorizer.h"
7273
#include <optional>

0 commit comments

Comments
 (0)