This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Reloading index register
- To: egcs at cygnus dot com
- Subject: Reloading index register
- From: "Michael P. Hayes" <michaelh at ongaonga dot chch dot cri dot nz>
- Date: Sat, 18 Oct 1997 15:28:31 +1300
Can anybody who understands the reload pass enlighten me why it
generates,
(set (reg index2) (reg dud))
(set (reg index2) (mem (plus (reg base2) (reg index2))))
(set (reg r0) (minus (mem (plus (reg base1) (reg index1)))
(reg index2)))
instead of the better code,
(set (reg index2) (reg dud))
(set (reg r0) (minus (mem (plus (reg base1) (reg index1)))
(mem (plus (reg base2) (reg index2)))))
for the code fragment,
(set (reg r0) (minus (mem (plus (reg base1) (reg index1)))
(mem (plus (reg base2) (reg dud)))))
where the global register allocator couldn't assign reg dud to an
index register and so reload spills index register index2 to obtain a
reload register.