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]

[PATCH] ICE with uninitialized CDImode (of subreg of TImode)


Hi,
  gcc.c-torture/compile/20000804-1.c with -O3 -funroll-loops on spu-elf 
ICEs currently because we produce a subreg of CDImode of a TImode register 
(as spu-elf's registers are TImode long).  This causes a problem as the 
register is only partly initialized and initialized via a subreg so the 
uninitialized subreg initializer comes about and tries to initialize the 
register in CDImode with zeros but const_tiny_rtx is not initialized for 
complex modes and this causes a seg fault.  This patch initializes 
const_tiny_rtx for the two set of complex modes (integer and float) which 
fixes this issue and allows this testcase to pass now on spu-elf.

OK? Built and tested for spu-elf with no regressions.

Thanks,
Andrew Pinski

PS this and the CSE caused ICE were the last known ICEs in spu-elf's 
testsuite.

ChangeLog:

        * emit-rtl.c (init_emit_once): Initialize const_tiny_rtx
        for complex integers and complex float modes.

Attachment: fixuninit.diff.txt
Description: Text document


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