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

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-05-28 
13:25:34 UTC ---
SRA creates:
  <unnamed-unsigned:1> a$6;
...
  a$6_21 = MEM[(const struct A &)D.9923_20 + 6];
  D.10122_23 = (int) a$6_21;
which expansion doesn't handle as extract_bit_field (both MEM_REF and
TARGET_MEM_REF are expanded that way), so the zero extension is performed just
as QI->SImode zero extension.

I'd say that SRA shouldn't be creating such MEM_REFs and instead should keep
the BIT_FIELD_REFs.

Reply via email to