summaryrefslogtreecommitdiff
path: root/src/compiler/nir/nir_deref.c
diff options
context:
space:
mode:
authorDaniel Schürmann <daniel@schuermann.dev>2019-08-14 18:52:50 +0200
committerDaniel Schürmann <daniel@schuermann.dev>2019-08-20 17:39:52 +0200
commit204846ad062fe4e154406fa2d9093cdab4461ea2 (patch)
tree95dde9abaa04420aeea83d02d61366c317262523 /src/compiler/nir/nir_deref.c
parent7c56a68c8bd45208ef7c7e6e61bfeb6147ded4b6 (diff)
downloadmesa-204846ad062fe4e154406fa2d9093cdab4461ea2.tar.gz
nir/lcssa: handle deref instructions properly
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Fixes: 414148cdc124 "nir: Support deref instructions in loop_analyze"
Diffstat (limited to 'src/compiler/nir/nir_deref.c')
-rw-r--r--src/compiler/nir/nir_deref.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/compiler/nir/nir_deref.c b/src/compiler/nir/nir_deref.c
index da66c5f0487..f7a07c6b465 100644
--- a/src/compiler/nir/nir_deref.c
+++ b/src/compiler/nir/nir_deref.c
@@ -216,17 +216,15 @@ nir_deref_instr_has_complex_use(nir_deref_instr *deref)
unsigned
nir_deref_instr_ptr_as_array_stride(nir_deref_instr *deref)
{
- assert(deref->deref_type == nir_deref_type_ptr_as_array);
- nir_deref_instr *parent = nir_deref_instr_parent(deref);
- switch (parent->deref_type) {
+ switch (deref->deref_type) {
case nir_deref_type_array:
- return glsl_get_explicit_stride(nir_deref_instr_parent(parent)->type);
+ return glsl_get_explicit_stride(nir_deref_instr_parent(deref)->type);
case nir_deref_type_ptr_as_array:
- return nir_deref_instr_ptr_as_array_stride(parent);
+ return nir_deref_instr_ptr_as_array_stride(nir_deref_instr_parent(deref));
case nir_deref_type_cast:
- return parent->cast.ptr_stride;
+ return deref->cast.ptr_stride;
default:
- unreachable("Invalid parent for ptr_as_array deref");
+ return 0;
}
}