Then we are talking at cross-purposes. What exactly do you mean by
memory tracking here? Could you give me an example?
I'm talking about the content of MEM_EXPR, especially as used in
output_asm_operand_names.
So, for
struct r1 {int x;};
struct foo {int a; struct r1 f;};
int
bar (struct foo *p)
{
return p->a + p->f.x;
}
on Alpha, we have:
ldl $1,4($16) # <variable>.f.x, <variable>.f.x
ldl $0,0($16) # <variable>.a, <variable>.a
addl $0,$1,$0 # <variable>.a, <variable>.b, tmp75
ret $31,($26),1
The issue is how to preserve which field you are referencing if you
convert all COMPONENT_REF/ARRAY_REF nestings into address calculations.