+  hash_table <simduid_to_vf> simduid_to_vf_htab;
+  hash_table <decl_to_simduid> decl_to_simduid_htab;

Why two hashes?  Seems like you can map from decl to vf directly.  At what
point do you have a simduid integer, but not the decl from whence it came?

decl_to_simduid seems to be a misnomer. What it really is, is a "omp_simd_array_to_simduid" map. OMP simd array, being the temporary array used to hold simd lane private variable copies and such.

The hash is not really mapping the simd DECL to the simduid, since that's just a matter of DECL_UID(simduid), but the OMP simd array to the index used to reference it (simduid), like thus:

                _7 = GOMP_SIMD_LANE (simduid.0)
                ...
                ...
                D.1737[_7] = stuff;

decl_to_simduid is a mapping from the simduid.0 to the D.1737[] (the OMP simd array).

Agreed, or am I missing something?

Reply via email to