|
@@ -3301,7 +3301,14 @@ void CGMSHLSLRuntime::FinishCodeGen() {
|
|
|
bool bWaveEnabledStage = m_pHLModule->GetShaderModel()->IsPS() ||
|
|
|
m_pHLModule->GetShaderModel()->IsCS() ||
|
|
|
m_pHLModule->GetShaderModel()->IsLib();
|
|
|
- if (CGM.getCodeGenOpts().HLSLStructurizeReturns)
|
|
|
+
|
|
|
+ // Handle lang extensions if provided.
|
|
|
+ if (CGM.getCodeGenOpts().HLSLExtensionsCodegen) {
|
|
|
+ ExtensionCodeGen(HLM, CGM);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (CGM.getCodeGenOpts().HLSLOptimizationToggles.count("structurize-returns") &&
|
|
|
+ CGM.getCodeGenOpts().HLSLOptimizationToggles.find("structurize-returns")->second)
|
|
|
StructurizeMultiRet(M, m_ScopeMap, bWaveEnabledStage, m_DxBreaks);
|
|
|
|
|
|
FinishEntries(HLM, Entry, CGM, entryFunctionMap, HSEntryPatchConstantFuncAttr,
|
|
@@ -3341,10 +3348,6 @@ void CGMSHLSLRuntime::FinishCodeGen() {
|
|
|
// Add dx.break function and make appropriate breaks conditional on it.
|
|
|
AddDxBreak(M, m_DxBreaks);
|
|
|
|
|
|
- // Handle lang extensions if provided.
|
|
|
- if (CGM.getCodeGenOpts().HLSLExtensionsCodegen) {
|
|
|
- ExtensionCodeGen(HLM, CGM);
|
|
|
- }
|
|
|
// At this point, we have a high-level DXIL module - record this.
|
|
|
SetPauseResumePasses(*m_pHLModule->GetModule(), "hlsl-hlemit",
|
|
|
"hlsl-hlensure");
|