On Mon, 2007-09-17 at 23:41 +0200, Andreas Schwab wrote: > Janis Johnson <[EMAIL PROTECTED]> writes: > > > Bootstrap of powerpc64-linux fails building libgfortran with: > > > > /home/janis/gcc_trunk_anonsvn/gcc/libgfortran/io/read.c: In function > > 'set_integer': > > /home/janis/gcc_trunk_anonsvn/gcc/libgfortran/io/read.c:81: internal > > compiler error: in set_variable_part, at var-tracking.c:2381 > > Please submit a full bug report, with preprocessed source if appropriate. > > See <http://gcc.gnu.org/bugs.html> for instructions. > > > > My last successful build was revision 128522; earliest known break > > was 128536, still breaks with 128551. > > Bisection has identified this change: > > 2007-09-16 Richard Sandiford <[EMAIL PROTECTED]> > > * dse.c (find_shift_sequence): Allow word as well as subword shifts. > Do the tentative shift expansion with the DF_NO_INSN_RESCAN flag set. > Fix the call to insn_rtx_cost. Skip access sizes that require a > real truncation of the store register. Use convert_move instead > of gen_lowpart when narrowing the result. > (replace_read): Use convert_move instead of gen_lowpart when > narrowing the store rhs.
My hunt just found the same patch Here's a small test that fails with cc1 for powerpc64-linux with "-O2 -g -m64 -mstrict-align": ------------- extern void *memcpy (void *, const void *, signed long); void set_integer (void *dest, __int128_t value, int length) { switch (length) { case 16: { __int128_t tmp = value; memcpy (dest, (void *) &tmp, length); } break; case 1: { signed char tmp = value; memcpy (dest, (void *) &tmp, length); } break; } } ----------- Janis