This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Fix PR399955: rs6000 needs to handle SSA_NAMEs
- From: Michael Matz <matz at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Date: Wed, 29 Apr 2009 19:48:07 +0200 (CEST)
- Subject: Fix PR399955: rs6000 needs to handle SSA_NAMEs
Hi,
currently we get ICEs on powerpc when SDmode variables are involved,
because the backend goes over the gimple instructions to detect the usage
of that mode and allocate a stack slot. With SSA expand this can contain
SSA_NAMEs which we need to look at too, not just VAR_DECLs.
This patch was regstrapped on powerpc64-linux with the same configure
options that Janis is using (so I can compare testresults posting with my
results).
The FAILs I now see are either preexisting (from
http://gcc.gnu.org/ml/gcc-testresults/2009-04/msg02785.html), are Richards
ICEs with the type verifier where the vectorizer introduces invalid
conversions, or are these ones:
FAIL: gcc.dg/sms-8.c scan-rtl-dump-times sms "SMS succeeded" 1
FAIL: gcc.dg/vect/slp-perm-8.c scan-tree-dump-times vect "vectorized 1 loops" 2
FAIL: gcc.target/powerpc/20050603-3.c scan-assembler-not inm
FAIL: gcc.target/powerpc/405-dlmzb-strlen-1.c scan-assembler dlmzb\\\\.
FAIL: gcc.target/powerpc/440-dlmzb-strlen-1.c scan-assembler dlmzb\\\\.
FAIL: events output
FAIL: 22_locale/codecvt/unshift/char/1.cc execution test
sms-8 uses long long arithmetic on 32 bit, which involves setting
SImode subregs of DImode regs, which SMS can't handle. No idea why it
should have worked before. The other scan-asm and vector test are most
probably changes exposed by the limited TER, but I haven't investigated in
detail yet. 1.cc seems to fail also for others sometimes. no idea about
the "events output" one.
Okay?
Ciao,
Michael.
--
PR tree-optimization/39955
* config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
Index: config/rs6000/rs6000.c
===================================================================
--- config/rs6000/rs6000.c (revision 146824)
+++ config/rs6000/rs6000.c (working copy)
@@ -11545,6 +11545,7 @@ rs6000_check_sdmode (tree *tp, int *walk
case PARM_DECL:
case FIELD_DECL:
case RESULT_DECL:
+ case SSA_NAME:
case REAL_CST:
case INDIRECT_REF:
case ALIGN_INDIRECT_REF: