Joern RENNECKE writes: > Joern Rennecke wrote: > > > Eric Botcazou wrote: > > > >>> make[3]: Leaving directory `/mnt/scratch/nightly/2006-07-04/i686' > >>> Comparing stages 2 and 3 > >>> warning: ./cc1-checksum.o differs > >>> warning: ./cc1plus-checksum.o differs > >>> warning: ./cc1obj-checksum.o differs > >>> Bootstrap comparison failure! > >>> > >> > >> > >> Does the attached patch make any difference? > >> > >> > > No, I still get the same set of .o files that differ, and the > > -fdump-noaddr > > (See PR other/28251) peephole2 dump for cfg.c compiled with stage1 / > > stage2 cc1 > > is still the same. > > Hmm, as far as I can tell, stage1 i386.c:ix86_split_ashr has been > miscompiled by gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-54). > > config/i386/i386.c" lines 12307 .. 12309 are: > emit_insn ((mode == DImode > ? gen_x86_shrd_1 > : gen_x86_64_shrd) (low[0], high[0], GEN_INT > (count))); > and this has been compiled as: > > 0x088af608 <ix86_split_ashr+486>: sub $0xc,%esp > 0x088af60b <ix86_split_ashr+489>: sub $0xc,%esp > 0x088af60e <ix86_split_ashr+492>: pushl 0xffffffec(%ebp) > 0x088af611 <ix86_split_ashr+495>: push $0x0 > 0x088af613 <ix86_split_ashr+497>: call 0x8468f42 <gen_rtx_CONST_INT> > 0x088af618 <ix86_split_ashr+502>: add $0x14,%esp > 0x088af61b <ix86_split_ashr+505>: mov $0x88969da,%edx /* > gen_x86_64_shrd */ > 0x088af620 <ix86_split_ashr+510>: sub $0x8,%esp > 0x088af623 <ix86_split_ashr+513>: push %eax > 0x088af624 <ix86_split_ashr+514>: pushl 0xfffffff0(%ebp) > 0x088af627 <ix86_split_ashr+517>: pushl 0xfffffff8(%ebp) > 0x088af62a <ix86_split_ashr+520>: call *%edx > 0x088af62c <ix86_split_ashr+522>: add $0x14,%esp > 0x088af62f <ix86_split_ashr+525>: push %eax > 0x088af630 <ix86_split_ashr+526>: call 0x84710dd <emit_insn> > 0x088af635 <ix86_split_ashr+531>: add $0x10,%esp > > I.e. we are always calling gen_x86_64_shrd no matter what the value of > mode is. > stepping in gdb also shows that we end up in gen_x86_64_shrd in the > stage1 compiler, > but in gen_x86_shrd_1 in the stage2 compiler (mode is DImode). > > So it seems I have to abandom the system compiler for doing bootstraps.
Can you make a simple testcase for this? Andrew.