This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: 1997-11-22 egcs snapshot available
- To: Horst von Brand <vonbrand at sleipnir dot valparaiso dot cl>
- Subject: Re: 1997-11-22 egcs snapshot available
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Tue, 25 Nov 1997 21:48:17 -0800
- Cc: egcs at cygnus dot com
- Reply-To: law at cygnus dot com
The reason egcs fails is because it's much better at finding loop
invariants than gcc-2.7.
As a result you end up with an asm like this:
(insn 37 34 39 (asm_operands/v ("movw $(( 1 << 3) - 1),%1
movw %%ax,%2
rorl $16,%%eax
movb %%al,%3
movb $0x82,%4
movb $0x00,%5
movb %%ah,%6
rorl $16,%%eax") ("") 0[
(symbol_ref:SI ("default_ldt"))
(mem:QI (plus:SI (reg:SI 37)
(reg:SI 23)))
(mem/s:QI (reg:SI 42))
(mem/s:QI (reg:SI 41))
(mem/s:QI (reg:SI 40))
(mem/s:QI (reg:SI 39))
(mem/s:QI (reg:SI 38))
]
[
(asm_input:SI ("a"))
(asm_input:QI ("m"))
(asm_input:QI ("m"))
(asm_input:QI ("m"))
(asm_input:QI ("m"))
(asm_input:QI ("m"))
(asm_input:QI ("m"))
] ("k.c") 16) -1 (nil)
(nil))
Note that this asm needs 7 hard registers, which is more than you can
count on being available on the x86.
So while we could probably disable the aggressive loop invariant detection,
it would just be papering over the real bug, which is the asm itself.
jeff