This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix a thinko in vt_expand_loc_callback (PR debug/43304)
- From: Richard Guenther <rguenther at suse dot de>
- To: Jakub Jelinek <jakub at redhat dot com>
- Cc: Alexandre Oliva <aoliva at redhat dot com>, gcc-patches at gcc dot gnu dot org
- Date: Tue, 9 Mar 2010 16:35:36 +0100 (CET)
- Subject: Re: [PATCH] Fix a thinko in vt_expand_loc_callback (PR debug/43304)
- References: <20100309152054.GR2817@tyan-ft48-01.lab.bos.redhat.com>
On Tue, 9 Mar 2010, Jakub Jelinek wrote:
> Hi!
>
> This patch fixes vmx/fft.c, vmx/7-01.c and vmx/7-01a.c tests
> on powerpc - in the SUBREG case I've missed one case which needs to
> call the dummy variant of the function when in dummy variant. Otherwise
> it allocates memory (wastes GC space) and, what's worse, it calls the
> callback still in dummy mode so it returns pc_rtx on success instead of
> some real expression, and simplification can then ICE when simplifying an
> expression involving (pc) in places it doesn't expect.
>
> Fixed thusly, bootstrap/regtest on x86_64-linux, i686-linux and
> powerpc64-linux pending. Ok for trunk?
Ok.
Thanks,
Richard.
> 2010-03-09 Jakub Jelinek <jakub@redhat.com>
>
> PR debug/43304
> * var-tracking.c (vt_expand_loc_callback) <case SUBREG>: If dummy,
> call cselib_dummy_expand_value_rtx_cb instead of
> cselib_expand_value_rtx_cb.
>
> --- gcc/var-tracking.c.jj 2010-03-09 12:25:04.000000000 +0100
> +++ gcc/var-tracking.c 2010-03-09 13:15:36.000000000 +0100
> @@ -6610,6 +6610,16 @@ vt_expand_loc_callback (rtx x, bitmap re
> switch (GET_CODE (x))
> {
> case SUBREG:
> + if (dummy)
> + {
> + if (cselib_dummy_expand_value_rtx_cb (SUBREG_REG (x), regs,
> + max_depth - 1,
> + vt_expand_loc_callback, data))
> + return pc_rtx;
> + else
> + return NULL;
> + }
> +
> subreg = cselib_expand_value_rtx_cb (SUBREG_REG (x), regs,
> max_depth - 1,
> vt_expand_loc_callback, data);
> @@ -6617,9 +6627,6 @@ vt_expand_loc_callback (rtx x, bitmap re
> if (!subreg)
> return NULL;
>
> - if (dummy)
> - return pc_rtx;
> -
> result = simplify_gen_subreg (GET_MODE (x), subreg,
> GET_MODE (SUBREG_REG (x)),
> SUBREG_BYTE (x));
>
> Jakub
>
>
--
Richard Guenther <rguenther@suse.de>
Novell / SUSE Labs
SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746 - GF: Markus Rex