Skip to content

Commit 10b2d46

Browse files
committed
Add SROA pass to the DXIL backend with -O0
1 parent c73620d commit 10b2d46

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

llvm/lib/Target/DirectX/DirectXTargetMachine.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
#include "llvm/Target/TargetLoweringObjectFile.h"
4949
#include "llvm/Transforms/IPO/GlobalDCE.h"
5050
#include "llvm/Transforms/Scalar.h"
51+
#include "llvm/Transforms/Scalar/SROA.h"
5152
#include "llvm/Transforms/Scalar/Scalarizer.h"
5253
#include <optional>
5354

@@ -107,6 +108,10 @@ class DirectXPassConfig : public TargetPassConfig {
107108

108109
FunctionPass *createTargetRegisterAllocator(bool) override { return nullptr; }
109110
void addCodeGenPrepare() override {
111+
// Clang does not apply SROA with -O0, but it is required for DXIL. So we
112+
// add SROA here when -O0 is given.
113+
if (getOptLevel() == CodeGenOptLevel::None)
114+
addPass(createSROAPass(/*PreserveCFG=*/true, /*DecomposeStructs=*/true));
110115
addPass(createDXILFinalizeLinkageLegacyPass());
111116
addPass(createGlobalDCEPass());
112117
addPass(createDXILResourceAccessLegacyPass());

llvm/lib/Target/DirectX/DirectXTargetTransformInfo.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,4 @@ bool DirectXTTIImpl::isTargetIntrinsicTriviallyScalarizable(
6666
}
6767
}
6868

69-
bool DirectXTTIImpl::shouldDecomposeStructAllocas() const {
70-
return true;
71-
}
69+
bool DirectXTTIImpl::shouldDecomposeStructAllocas() const { return true; }

0 commit comments

Comments
 (0)