bootstrap/6619: irix cc chokes on rtl_check macros?
David.Billinghurst@riotinto.com
David.Billinghurst@riotinto.com
Thu May 9 17:56:00 GMT 2002
>Number: 6619
>Category: bootstrap
>Synopsis: irix cc chokes on rtl_check macros?
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu May 09 17:56:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: David Billinghurst
>Release: gcc-3.2
>Organization:
>Environment:
mips-sgi-irix6.5
>Description:
gcc-3.2 on irix6.5 using cc fails in rtl.c. It got past this point yesterday.
The problem may be related to
2002-05-08 Janis Johnson <janis187@us.ibm.com>
* rtl.h (RTL_FLAG_CHECK*): Add an argument for the macro name,
and use it in all invocations of these macros. Clean up comments.
* rtl.c (rtl_check_failed_flag): Add an argument for the name
of the flag access macro whose check failed.
* doc/rtl.texi (Flags): Document additional flag uses.
The error is
"/exd4/billingd/src/gcc/gcc/rtl.c", line 474: error(1029): expected an
expression
|| REG_FUNCTION_VALUE_P (x) == REG_FUNCTION_VALUE_P (y)));
^
"/exd4/billingd/src/gcc/gcc/rtl.c", line 474: error(1029): expected an
expression
|| REG_FUNCTION_VALUE_P (x) == REG_FUNCTION_VALUE_P (y)));
^
2 errors detected in the compilation of "/exd4/billingd/src/gcc/gcc/rtl.c".
The code fragment is
switch (code)
{
case REG:
/* Until rtl generation is complete, don't consider a reference
to the return register of the current function the same as
the return from a called function. This eases the job of
function integration. Once the distinction is no longer
needed, they can be considered equivalent. */
return (REGNO (x) == REGNO (y)
&& (! rtx_equal_function_value_matters
|| REG_FUNCTION_VALUE_P (x) == REG_FUNCTION_VALUE_P (y)));
case LABEL_REF:
return XEXP (x, 0) == XEXP (y, 0);
Looking at the preprocessed file I see
switch (code)
{
case REG:
return ((((x)->fld[0]). rtuint) == (((y)->fld[0]). rtuint)
&& (! rtx_equal_function_value_matters
|| ( ({ rtx const _rtx = ((x)); if (((enum rtx_code) (_rtx)->code) != REG) rtl_check_failed_flag ("REG_FUNCTION_VALUE_P", _rtx, "/exd4/billingd/src/gcc/gcc/rtl.c", 474, "?"); _rtx; })->integrated) == ( ({ rtx const _rtx = ((y)); if (((enum rtx_code) (_rtx)->code) != REG) rtl_check_failed_flag ("REG_FUNCTION_VALUE_P", _rtx, "/exd4/billingd/src/gcc/gcc/rtl.c", 474, "?"); _rtx; })->integrated)));
case LABEL_REF:
return (((x)->fld[0]). rtx) == (((y)->fld[0]). rtx);
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-bugs
mailing list