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 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.





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