@@ -120,10 +120,9 @@ void ModuleShaderFlags::updateFunctionFlags(ComputedShaderFlags &CSF,
120120 case Intrinsic::dx_resource_handlefrombinding: {
121121 dxil::ResourceTypeInfo &RTI = DRTM[cast<TargetExtType>(II->getType ())];
122122
123- // If -res-may-alias is NOT specified, and DXIL Ver > 1.7.
124- // Then set ResMayNotAlias if function uses UAVs.
125- if (!CSF.ResMayNotAlias && !ResMayAlias &&
126- MMDI.DXILVersion > VersionTuple (1 , 7 ) && RTI.isUAV ()) {
123+ // Set ResMayNotAlias if DXIL version >= 1.8 and function uses UAVs
124+ if (!CSF.ResMayNotAlias && CanSetResMayNotAlias &&
125+ MMDI.DXILVersion >= VersionTuple (1 , 8 ) && RTI.isUAV ()) {
127126 CSF.ResMayNotAlias = true ;
128127 }
129128
@@ -165,12 +164,14 @@ void ModuleShaderFlags::initialize(Module &M, DXILResourceTypeMap &DRTM,
165164 DXILBindingMap &DBM,
166165 const ModuleMetadataInfo &MMDI) {
167166
167+ CanSetResMayNotAlias = MMDI.DXILVersion >= VersionTuple (1 , 7 );
168+
168169 // Check if -res-may-alias was provided on the command line.
169170 // The command line option will set the dx.resmayalias module flag to 1.
170171 if (auto *RMA = mdconst::extract_or_null<ConstantInt>(
171172 M.getModuleFlag (" dx.resmayalias" ))) {
172173 if (RMA->getValue () != 0 )
173- ResMayAlias = true ;
174+ CanSetResMayNotAlias = false ;
174175 }
175176
176177 CallGraph CG (M);
@@ -197,9 +198,9 @@ void ModuleShaderFlags::initialize(Module &M, DXILResourceTypeMap &DRTM,
197198 continue ;
198199 }
199200
200- // If -res-may-alias is NOT specified, and DXIL Ver <= 1.7.
201- // Then set ResMayNotAlias to true if there are UAVs present globally.
202- if (!ResMayAlias && MMDI.DXILVersion <= VersionTuple (1 , 7 )) {
201+ // Set ResMayNotAlias to true if DXIL version < 1.8 and there are UAVs
202+ // present globally.
203+ if (CanSetResMayNotAlias && MMDI.DXILVersion < VersionTuple (1 , 8 )) {
203204 SCCSF.ResMayNotAlias = !DBM.uavs ().empty ();
204205 }
205206
0 commit comments