tips on debugging a GCC 3.4.3 MIPS RTL optim problem?
James E Wilson
wilson@specifixinc.com
Tue Apr 26 02:32:00 GMT 2005
Gary Funck wrote:
> (call_insn 84 66 141 (call_placeholder 77 67 0 0 (call_insn 83 82 0 (parallel [
call_placeholder is a special kind of RTL. It contains 3 instruction
sequences for the 3 different possible kinds of calls: a normal call, a
tail call, and a sibling call. These aren't printed in the dumps, but
you can print them inside the debugger. See the docs for
call_placeholder (look at rtl.def in particular).
The missing instructions you are looking for are all inside the
call_placeholder.
This stuff is already gone in gcc-4.0, so we no longer have this problem.
> Am I wrong in assuming that the two digits in the names of the RTL
> dump files indicate the sequence of the RTL passes?
You are not wrong.
> Any tips on debugging this codegen issue would be appreciated.
Try putting breakpoints in make_insn_raw, conditional on the instruction
numbers for the insns that load the arguments, then go up the call stack
to see how the values were computed.
Try looking at the decls for the local variables to see what address
they were allocated to.
Make sure decls are being properly marked as used. -funit-at-a-time is
much better at optimizing away that appears to be unused.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com
More information about the Gcc
mailing list