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