This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: bootstrap failed during 'make check'


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]