This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: fix rtl-opt/15289, part 1
- From: Eric Botcazou <ebotcazou at libertysurf dot fr>
- To: Richard Henderson <rth at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org,kenner at nyu dot edu
- Date: Tue, 30 Nov 2004 18:49:13 +0100
- Subject: Re: fix rtl-opt/15289, part 1
- References: <20041130042626.GA1850@redhat.com>
> This is the beginning of a fix for rtl-opt/15289.
>
> The end to which I am working is to remove gen_realpart/gen_imagpart.
Note that I'm still seeing the execution failures (wrong code) on the SPARC
that prompted me to post my message about representable subregs, related to
unaligned complex numbers. The problem now is that store_bit_field silently
turns CONCATs into paradoxical subregs here:
/* If VALUE is a floating-point mode, access it as an integer of the
corresponding size. This can occur on a machine with 64 bit registers
that uses SFmode for float. This can also occur for unaligned float
structure fields. */
orig_value = value;
if (GET_MODE_CLASS (GET_MODE (value)) != MODE_INT
&& GET_MODE_CLASS (GET_MODE (value)) != MODE_PARTIAL_INT)
value = gen_lowpart ((GET_MODE (value) == VOIDmode
? word_mode : int_mode_for_mode (GET_MODE (value))),
value);
I'll wait until after your series of patches is in to further investigate.
--
Eric Botcazou