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. |
||
---|---|---|
.. | ||
autoconf | ||
bc | ||
cvs | ||
diffutils | ||
gawk | ||
gcc | ||
gdb | ||
gettext | ||
grep | ||
groff | ||
postfix | ||
sendmail | ||
texinfo | ||
toolchain | ||
README.toolchain |
$NetBSD: README.toolchain,v 1.4 2003/03/05 08:42:49 skrll Exp $ HOW TO BUILD A CROSS COMPILER ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [Section to be written.] See also: http://www.netbsd.org/Documentation/cross/ IMPORTED VERSIONS ~~~~~~~~~~~~~~~~~ The following software is in gnusrc/gnu/dist/toolchain, in a unified build structure: gcc-2.95.3 binutils-2.13.2.1 gdb-5.0 IMPORT STEPS ~~~~~~~~~~~~ 1. All distributions were unpacked and all `.cvsignore' files were removed. 2. All files in gcc's `include' top level directory were removed from binutils's `include' top level directory (these are the libiberty include files). cd gcc-*/include; for f in *; do rm -f ../../binutils-*/include/$f; done 3. The gcc distribution was imported in one shot into src/gnu/dist/toolchain, including the recursive build structure. 4. The binutils distribution was stripped down to the following directories, with no files at the top level: bfd, binutils, gas, gprof, include, intl, ld, opcodes 5. Binutils was imported into src/gnu/dist/toolchain, which included only the subdirectories above. 6. The gdb distribution was stripped down to the following directories, with no files at the top level: gdb, mmalloc, readline, sim 7. Gdb was imported into src/gnu/dist/toolchain, which included only the subdirectories above.