http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54402



--- Comment #21 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-12-12 
22:09:59 UTC ---

Created attachment 28941

  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28941

sparc hack



I think on SPARC that is partly the fault of the sparc.md part of

http://gcc.gnu.org/ml/gcc-patches/2011-06/msg01423.html

The old insn pattern was much closer to what the insn actually does, so now

neither cselib nor var-tracking has any clue on what the insn is doing, doesn't

consider it as a a fp_setter among other things.

If the looked the way it did before, and even better also described what it

does with the o0-o5 registers too, then no hacks like var-tracking.c

HAVE_window_save code would be needed, cselib would just understand it.



That said, another alternative is another hack when we already have some, treat

window_save insn as fp_setter_insn (or could derive it from some of the CFA

flags).  Still I think that earlier when discussing UNSPEC_VOLATILE we were

talking that UNSPEC_VOLATILE is mainly about being a scheduling barrier and

that it shouldn't e.g. modify registers that it doesn't say that are modified.



Haven't measured how much this patch improves the compile time, but not enough

in a x86_64-linux -> sparc-solaris cross.  So I'm going to attach other patches

too, to be tried separately and/or together with this.

Reply via email to