------- Comment #6 from amodra at bigpond dot net dot au  2005-11-21 07:08 
-------
Testing a fix.  The reason gcc-3.3 doesn't fail on this testcase is that the
first arg to store_bit_field there is a mem:BLK while gcc-3.4 and gcc-4 pass a
mem:SI.  Code after the following comment in store_bit_field fails badly,
trying to insert a 64-bit field into an SImode reg.

          /* Get the mode to use for inserting into this field.  If OP0 is
             BLKmode, get the smallest mode consistent with the alignment. If
             OP0 is a non-BLKmode object that is no wider than MAXMODE, use its
             mode. Otherwise, use the smallest mode containing the field.  */

I think we just need to check that bestmode is at least as big as fieldmode. 
This will prevent trying to use insv, and fall thru to store_fixed_bit_field,
which is what happens with a BLKmode MEM.


-- 

amodra at bigpond dot net dot au changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |amodra at bigpond dot net
                   |dot org                     |dot au
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2005-11-21 01:53:20         |2005-11-21 07:08:37
               date|                            |
   Target Milestone|4.0.3                       |---


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24950

Reply via email to