This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix RTL checking bootstrap on i?86/x86_64-linux


On Thu, Sep 3, 2009 at 5:59 PM, Jakub Jelinek<jakub@redhat.com> wrote:
> Hi!
>
> --enable-checking=yes,rtl bootstraps were ICEing, because loc_descriptor
> used SUBREG_REG macro on SIGN_EXTEND or ZERO_EXTEND, and after fixing that
> up it was ICEing because those don't necessarily contain a REG inside, could
> have a MEM etc.
>
> Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux with
> --enable-checking=yes,rtl, ok for trunk?

Ok.

Thanks,
Richard.

> 2009-09-03 ?Jakub Jelinek ?<jakub@redhat.com>
>
> ? ? ? ?PR debug/41236
> ? ? ? ?* dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
> ? ? ? ?SIGN_EXTEND or ZERO_EXTEND. ?Don't assume there is a REG inside of
> ? ? ? ?it or SUBREG.
>
> --- gcc/dwarf2out.c.jj ?2009-09-03 14:02:04.000000000 +0200
> +++ gcc/dwarf2out.c ? ? 2009-09-03 14:58:45.000000000 +0200
> @@ -11671,21 +11671,23 @@ loc_descriptor (rtx rtl, enum machine_mo
> ? switch (GET_CODE (rtl))
> ? ? {
> ? ? case SUBREG:
> - ? ?case SIGN_EXTEND:
> - ? ?case ZERO_EXTEND:
> ? ? ? /* The case of a subreg may arise when we have a local (register)
> ? ? ? ? variable or a formal (register) parameter which doesn't quite fill
> ? ? ? ? up an entire register. ?For now, just assume that it is
> ? ? ? ? legitimate to make the Dwarf info refer to the whole register which
> ? ? ? ? contains the given subreg. ?*/
> - ? ? ?rtl = SUBREG_REG (rtl);
> -
> - ? ? ?/* ... fall through ... ?*/
> + ? ? ?loc_result = loc_descriptor (SUBREG_REG (rtl), mode, initialized);
> + ? ? ?break;
>
> ? ? case REG:
> ? ? ? loc_result = reg_loc_descriptor (rtl, initialized);
> ? ? ? break;
>
> + ? ?case SIGN_EXTEND:
> + ? ?case ZERO_EXTEND:
> + ? ? ?loc_result = loc_descriptor (XEXP (rtl, 0), mode, initialized);
> + ? ? ?break;
> +
> ? ? case MEM:
> ? ? ? loc_result = mem_loc_descriptor (XEXP (rtl, 0), GET_MODE (rtl),
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? initialized);
>
> ? ? ? ?Jakub
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]