Accepting because this is not a big thing and we do want this bug fixed, but: in general I wouldn't put helpers like hlsl_index_chain_has_resource_access() in hlsl.c unless it's actually necessary to have them there. Yeah, I know that the divide is kind of vague, and we do keep all of the hlsl_new_*() stuff in hlsl.c regardless, but this is pretty much a helper that's not only currently only used by parsing code, I don't think it'll ever be used by anything else.
I also have this nagging feeling that there's a better way to structure this function, mainly because hlsl_index_chain_has_resource_access() unwraps something which is then subsequently unwrapped again. I feel like there's probably a way to return the interior node from hlsl_init_deref_from_index_chain(), factor out that function call from the individual branches. But maybe it's not worth doing, and I guess it also depends how we're going to represent structured buffer stores exactly.