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]

Re: 1997-11-22 egcs snapshot available



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



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