[Bug debug/60655] [4.9 Regression] ICE: output_operand: invalid expression as operand
ramana at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Mar 26 17:48:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60655
--- Comment #7 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #5)
> 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;
> + }
>
In addition looks like we need to handle
(minus (const_int) (sym_ref)) because with the reduced testcase with -g and
removing the -fdata-sections I get an error with
const ( minus (323) (sym_ref)) and gas won't grok that because there is no
relocation that will deal with this.
(note 220 219 221 5 (var_location r2 (plus:SI (plus:SI (reg:SI 3 r3 [orig:192
ivtmp.37 ] [192])
(symbol_ref:SI ("*.LANCHOR0") [flags 0x182]))
(const:SI (minus:SI (const_int 323 [0x143])
(symbol_ref:SI ("*.LANCHOR0") [flags 0x182])))))
NOTE_INSN_VAR_LOCATION)
Uggh this is proving to be more ugly.
More information about the Gcc-bugs
mailing list