Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/gnu/dist/gcc/gcc/config/m68k



Module Name:    src
Committed By:   mycroft
Date:           Wed Oct 29 21:25:03 UTC 2003

Modified Files:
        src/gnu/dist/gcc/gcc/config/m68k: m68k.md

Log Message:
As seen on tech-toolchain:

So the problem is thus:

* The {u,}mulsidi3 generate two parallel sets which modify the upper and lower
halves of the target register.

* life_analysis() does not track subregister modifications -- if you don't
modify the whole register with a single set, it considers the register
unused.

The simple, if klugy, solution to this is to stick an explicit clobber in.  It
seems to work.

While doing this, I noticed that constant folding was not happening for
32x32->64 multiplies.  This is because the parallel set generated by
{u,}mulsidi3 cannot be folded at all.  To solve this, I first expand to a
normal multiply, and then use a define_insn_and_split to convert it to the
parallel set after CSE and constant folding.

This patch has also been submitted to GCC bugzilla, but who knows if I'll get
a reply to that.


To generate a diff of this commit:
cvs rdiff -r1.1.1.1 -r1.2 src/gnu/dist/gcc/gcc/config/m68k/m68k.md

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index