This is the mail archive of the gcc-patches@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: PATCH: Don't rename registers in CLOBBERs


>>>>> "Bernd" == Bernd Schmidt <bernds@cygnus.co.uk> writes:

    Bernd> I have run into a similar problem as well.  -fssa currently
    Bernd> seems to break match_dup operands.  I do not believe that
    Bernd> the problem is restricted to CLOBBERs - imagine if you have
    Bernd> two sets, where the source of the first must match the
    Bernd> destination of the second.

There is some infrastructure that Jeffrey Oldham is working on that
might help with that.  We're now able to do SSA on hard registers,
which is necessary to do dead-code elimination in SSA, sine CC is a
hard register.  To do that, we know how to split hard registers into
SSA form, and then make sure that all the generated pseudo registers
end up back in the same partition, so they all get renamed back to the
same hard register in the end.  Something similar might work for the
match_dup thing.

The basic architectural problem here is that the machine descriptions
are revealing too much information about the hardware too early (from
one point of view) and that's making things unncessarily difficult.
Things would be nicer if we were not machine-dependent quite so early
in our optimization efforts.

The bottom line is that I am *not* sure that my change was 100%
correct.  I do know it restores one very important test -- the x86
bootstrap.  I am going to be trying for a MIPS bootstrap today, and
also to fix one regression introduced by my patch and spotted by
Geoff's regression tester.

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com

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