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

--- Comment #25 from Iain Sandoe <iains at gcc dot gnu.org> 2011-12-01 11:08:28 
UTC ---
the following tried using the vendor's gcc-4.2:

typedef struct
{
  unsigned short flda:9;
  float b;
  unsigned int fldc:17;
  float d;
  unsigned long long flde:33;
  float f;
} Struct;

extern float __attribute__((noinline)) foo (Struct s);

int main ()
{
  Struct q = {0x1fd, 1.0F, 0x1fffd, 2.0F, 0x1fffffffdLL, 3.0F};

  /* Is layed out thus xx = space directives:
     0xfe 0x80 xx xx
     0x3F800000
     0xff fe 80 xx
     0x40000000
     ff ff ff fe 80 xx xx xx
     0x40400000

     i.e. all ms aligned...
 */

  /* It is passed in r3..r9 in 32 bit chunks with the same organization as
memory
     - no shuffling at that stage.  */
  return (int) foo (q);
}

Reply via email to