> Type of the expression passed to get_alias_set. And without the > component_uses_parent_alias_set loop.
So you mean the type of the *field*? That can't work. That type can't be used for *anything*! Otherwise, if you have struct foo {int a: 32; int b: 32; }; struct bar {int c: 32; int d: 32; }; you have the fields A and C conflicting, which is wrong. The "T" has to be the *record type*, so that when you share alias sets, it's the same for every type in the same record, not every occurence of some random type in different records.