This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug debug/41717] [4.5.0 regression] internal compiler error: in expand_debug_expr
- From: "jakub at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 15 Oct 2009 20:37:27 -0000
- Subject: [Bug debug/41717] [4.5.0 regression] internal compiler error: in expand_debug_expr
- References: <bug-41717-15192@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #7 from jakub at gcc dot gnu dot org 2009-10-15 20:37 -------
I see several issues:
1) expand_debug_expr should handle CONJ_EXPR. The easiest would be just
to handle the case where op0 is CONCAT (then just
return gen_rtx_CONCAT (mode, XEXP (op0, 0), gen_rtx_NEG (GET_MODE (XEXP (op0,
1)), XEXP (op0, 1))); ), but perhaps some other cases could be handled (e.g.
when op0 is a MEM, it is possible to create two mems for the parts). In the
testcase op0 is DEBUG_EXPR, and using SUBREG on it would be weird (and, ATM
dwarf2out.c handles SUBREGS badly anyway, assumes it is always low part subreg
apparently).
2) seems that case SUBREG: handing in mem_loc_descriptor has to reject inner
mode which is not MODE_INT, otherwise we might very well end up emitting e.g.
floating point operations using dwarf3 expression opcodes (but those are
integer operations).
--
jakub at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |aoliva at gcc dot gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41717