Problem with ColdFire restricted addressing modes (mode5.6 combination)
James E Wilson
wilson@specifixinc.com
Fri Aug 20 01:23:00 GMT 2004
On Wed, 2004-08-18 at 18:59, Peter Barada wrote:
> Any other suggestions?
You don't seem to have included the testcase, so my only options seem to
be to explain how to debug reload.
The first step is figuring out whether this instruction was emitted by
reload, or existed before reload started. I am assuming the latter
based on the insn UID. If the former, then you need to figure out which
instruction this was emitted as a reload insn for, which should be an
insn a few instructions before it or after it.
You need to look at the RTL for the instruction before reload starts,
and after reload ends, and figure out what changes reload made to it.
You need to look at the list of reloads that were generated for the
insn. This is available in the greg dump file. From this, you should
be able to figure out why reload transformed the insn the way it did.
You need to look at pseudo-regs used by the insn, and determine whether
they were allocated to registers or to stack slots, and if to registers,
which ones.
The list of reloads is generated by find_reload_insns(). Step through
it to see which constraints match, which alternative is chosen as the
cheapest one, and what reloads were generated to try to satisfy that
alternative.
Step through choose_reload_regs to see how we choose which instructions
to satisfy the reloads.
Step through emit_reload_insns to see how we emit the insns to satisfy
the reloads.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com
More information about the Gcc
mailing list