File tree Expand file tree Collapse file tree 2 files changed +6
-3
lines changed Expand file tree Collapse file tree 2 files changed +6
-3
lines changed Original file line number Diff line number Diff line change 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 ());
Original file line number Diff line number Diff 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 ; }
You can’t perform that action at this time.
0 commit comments