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 <>
To: Nick Hudson <>
Subject: Re: bin/46978: internal compiler error building qt4-libs
Date: Sun, 30 Sep 2012 23:08:45 +0200

 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 More detailed analysis shows that this happens under the following
 (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
 The attached patch makes sure that MMX registers use the vector mode,
 not DImode for spill slots to distinguish this from "long long".
 Content-Type: text/x-diff; charset=us-ascii
 Content-Disposition: attachment; filename="i386.h.diff"
 Index: i386.h
 RCS file: 
 retrieving revision
 diff -u -p -r1.1.1.2 i386.h
 --- i386.h     18 Sep 2012 06:15:11 -0000
 +++ 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           \

Home | Main Index | Thread Index | Old Index