mrg
43eb93d243
pull across from the GCC3 tree:
>revision 1.2 >date: 2003/10/29 21:25:03; author: mycroft; state: Exp; lines: +40 -11 >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.
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
Description
No description provided
Languages
C
85.3%
Roff
7.2%
Assembly
3.1%
Shell
1.7%
Makefile
1.2%
Other
0.9%