This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [ada] can't build g-awk.adb in gcc cvs trunk 20041212 on sparc-linux: GCC error: in expand_expr_addr_expr_1, at expr.c:6047, Error detected at g-awk.adb:1316:24
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- To: ebotcazou at libertysurf dot fr
- Cc: gcc at gcc dot gnu dot org
- Date: Tue, 14 Dec 04 09:49:43 EST
- Subject: Re: [ada] can't build g-awk.adb in gcc cvs trunk 20041212 on sparc-linux: GCC error: in expand_expr_addr_expr_1, at expr.c:6047, Error detected at g-awk.adb:1316:24
The problematic expression reaches expand_expr_addr_expr_1 unmodified
because it was accepted at least once by handled_component_p at an
earlier stage (e.g. the gimplifier).
OK, now I understand. Unfortunately, *not* "accepting" it is also
problematic since the gimplifier, if it doesn't accept that, will make a
temporary for the result of the VIEW_CONVERT_EXPR, so the ADDR_EXPR would be
returning the address of that temporary and not the operand of the V_C_E,
which is exactly what you *don't* want to happen for TYPE_ALIGN_OK.
So this maybe indeed be the single exception to the correspondance between
get_inner_refrence and handled_component_p. I don't particularly care
for that, but if there's no other way, we should at least document it
*very* clearly ...
This is tricky stuff!