[Bug debug/60655] [4.9 Regression] ICE: output_operand: invalid expression as operand
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Mar 26 09:46:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60655
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
As discussed yesterday with Ramana on IRC, my suggested fix for this for 4.9 is
something like:
--- gcc/dwarf2out.c 2014-03-03 08:24:14.841895755 +0100
+++ gcc/dwarf2out.c 2014-03-26 10:42:32.027508796 +0100
@@ -11326,7 +11326,12 @@ const_ok_for_output_1 (rtx *rtlp, void *
}
if (GET_CODE (rtl) != SYMBOL_REF)
- return 0;
+ {
+ /* NOT is not handled by output_addr_const. */
+ if (GET_CODE (rtl) == NOT)
+ return 1;
+ return 0;
+ }
if (CONSTANT_POOL_ADDRESS_P (rtl))
{
and for 5.0 we want to gather some statistics what we actually accept as CONST
operands in const_ok_for_output and then successfully emit it into debug info
and assemble that, and based on that adjust const_ok_for_output or it's
callers, so that for CONST expressions that have no chance of being assembled
we actually ignore the CONST around the expression and try to emit it as the
individual expressions. So, say instead of trying to emit DW_OP_addr
(-1-symbol) in this case which won't assemble we emit it as DW_OP_const1s -1
DW_OP_addr (symbol) DW_OP_minus.
More information about the Gcc-bugs
mailing list