b9c785bd44
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. |
||
---|---|---|
.. | ||
config | ||
contrib | ||
gcc | ||
include | ||
INSTALL | ||
libf2c | ||
libiberty | ||
libobjc | ||
libstdc++-v3 | ||
maintainer-scripts | ||
BUGS | ||
bugs.html | ||
ChangeLog | ||
config-ml.in | ||
config.guess | ||
config.if | ||
config.sub | ||
configure | ||
configure.in | ||
COPYING | ||
COPYING.LIB | ||
FAQ | ||
faq.html | ||
install-sh | ||
libtool.m4 | ||
ltcf-c.sh | ||
ltcf-cxx.sh | ||
ltcf-gcj.sh | ||
ltconfig | ||
ltmain.sh | ||
MAINTAINERS | ||
Makefile.def | ||
Makefile.in | ||
Makefile.tpl | ||
missing | ||
mkdep | ||
mkinstalldirs | ||
move-if-change | ||
README | ||
README.SCO | ||
symlink-tree | ||
ylwrap |
This directory contains the GNU Compiler Collection (GCC). The GNU Compiler Collection is free software. See the file COPYING for copying permission. The manuals, and some of the runtime libraries, are under different terms; see the individual source files for details. The directory INSTALL contains copies of the installation information as HTML and plain text. The source of this information is gcc/doc/install.texi. The installation information includes details of what is included in the GCC sources and what files GCC installs. See the file gcc/doc/gcc.texi (together with other files that it includes) for usage and porting information. An online readable version of the manual is in the files gcc/doc/gcc.info*. See http://gcc.gnu.org/bugs.html for how to report bugs usefully.