This merge brings the branch up to rev 172662.

There are some LTO failures which are ICEs induced by a new
assertion I added in bp_pack_value.  We discussed this in
http://gcc.gnu.org/ml/gcc-patches/2011-04/msg01115.html.

The failure happens when we try to pack DECL_OFFSET_ALIGN.  We
only try to pack 8 bits, but in the case of
testsuite/gcc.c-torture/execute/20010904-1.c, DECL_OFFSET_ALIGN
is a very large 64 bit quantity:

typedef struct x { int a; int b; } __attribute__((aligned(32))) X;

#define DECL_OFFSET_ALIGN(NODE) \
  (((unsigned HOST_WIDE_INT)1) << FIELD_DECL_CHECK 
(NODE)->decl_common.off_align)

Whether correctly or incorrectly, for field 'a',
decl_common.off_align is 0xff.  So, DECL_OFFSET_ALIGN is 1 << 0xff
this triggers the assert I added.

Now, this happens during WPA, so I'm suspecting some bad values
being streamed.

Richi, I think it's better if we ICE than if we silently cut
these values short.


Diego.

Reply via email to