mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 09:28:07 +02:00
nir/deref: Don't try to compare derefs containing casts
One day, we may want copy_prop_vars or other passes to be able to see through certain types of casts such as when someone casts a uint64_t to a uvec2. However, for now we should just avoid casts all together. Fixes:d8e3edb784"nir/deref: Support casts and ptr_as_array in..." Tested-by: Jesse Natalie <jenatali@microsoft.com> Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6072> (cherry picked from commit611f654fcf)
This commit is contained in:
parent
d23bbc8c28
commit
d1ac2ffeb6
2 changed files with 7 additions and 5 deletions
|
|
@ -688,7 +688,7 @@
|
|||
"description": "nir/deref: Don't try to compare derefs containing casts",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "d8e3edb784d3afb313420fc8d58b491a57fad9c1"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -505,8 +505,8 @@ nir_compare_deref_paths(nir_deref_path *a_path,
|
|||
}
|
||||
|
||||
/* We're at either the tail or the divergence point between the two deref
|
||||
* paths. Look to see if either contains a ptr_as_array deref. It it
|
||||
* does we don't know how to safely make any inferences. Hopefully,
|
||||
* paths. Look to see if either contains cast or a ptr_as_array deref. If
|
||||
* it does we don't know how to safely make any inferences. Hopefully,
|
||||
* nir_opt_deref will clean most of these up and we can start inferring
|
||||
* things again.
|
||||
*
|
||||
|
|
@ -516,11 +516,13 @@ nir_compare_deref_paths(nir_deref_path *a_path,
|
|||
* different constant indices.
|
||||
*/
|
||||
for (nir_deref_instr **t_p = a_p; *t_p; t_p++) {
|
||||
if ((*t_p)->deref_type == nir_deref_type_ptr_as_array)
|
||||
if ((*t_p)->deref_type == nir_deref_type_cast ||
|
||||
(*t_p)->deref_type == nir_deref_type_ptr_as_array)
|
||||
return nir_derefs_may_alias_bit;
|
||||
}
|
||||
for (nir_deref_instr **t_p = b_p; *t_p; t_p++) {
|
||||
if ((*t_p)->deref_type == nir_deref_type_ptr_as_array)
|
||||
if ((*t_p)->deref_type == nir_deref_type_cast ||
|
||||
(*t_p)->deref_type == nir_deref_type_ptr_as_array)
|
||||
return nir_derefs_may_alias_bit;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue