Charles M. Hannum | 28 Oct 2003 19:51

m68k uninitialized variable warnings (patch)

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.

I've built a kernel and libc with these changes, and they seem to work.  The 
rest of my build hasn't finished yet.
Attachment (m68k-diff): text/x-diff, 3614 bytes

Gmane