This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [tree-ssa] PATCH to &&/|| gimplification


    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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]