NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: bin/46978: internal compiler error building qt4-libs
The following reply was made to PR bin/46978; it has been noted by GNATS.
From: Joerg Sonnenberger <joerg%britannica.bec.de@localhost>
To: Nick Hudson <skrll%netbsd.org@localhost>
Cc: gnats-bugs%netbsd.org@localhost, gnats-admin%netbsd.org@localhost
Subject: Re: bin/46978: internal compiler error building qt4-libs
Date: Sun, 30 Sep 2012 23:08:45 +0200
--7AUc2qLy4jB3hD7Z
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
More detailed analysis shows that this happens under the following
conditions:
(1) MMX is enabled
(2) MMX registers are spilled to the stack
(3) Stack alignment is 32bit
(4) Preferred stack boundary is 32bit too
What happens is that ix86_local_alignment gets called to create the
stack slot for a MMX register with mode DImode. This is handled as if it
was a "long long" and the 64bit alignment is overriden and downgraded to
32bit.
The attached patch makes sure that MMX registers use the vector mode,
not DImode for spill slots to distinguish this from "long long".
Joerg
--7AUc2qLy4jB3hD7Z
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="i386.h.diff"
Index: i386.h
===================================================================
RCS file:
/home/joerg/repo/netbsd/src/external/gpl3/gcc/dist/gcc/config/i386/i386.h,v
retrieving revision 1.1.1.2
diff -u -p -r1.1.1.2 i386.h
--- i386.h 18 Sep 2012 06:15:11 -0000 1.1.1.2
+++ i386.h 30 Sep 2012 20:20:51 -0000
@@ -1085,6 +1085,7 @@ enum target_cpu_default
#define HARD_REGNO_CALLER_SAVE_MODE(REGNO, NREGS, MODE)
\
(CC_REGNO_P (REGNO) ? VOIDmode \
+ : MMX_REGNO_P (REGNO) ? V8QImode \
: (MODE) == VOIDmode && (NREGS) != 1 ? VOIDmode \
: (MODE) == VOIDmode ? choose_hard_reg_mode ((REGNO), (NREGS), false) \
: (MODE) == HImode && !TARGET_PARTIAL_REG_STALL ? SImode \
--7AUc2qLy4jB3hD7Z--
Home |
Main Index |
Thread Index |
Old Index