On Thu, Oct 19, 2006 at 07:10:27PM +0200, Frank Riese wrote:
> 
> when I -fdump-rtl-all-details, I get:
> 
> function8.c.104r.expand   function8.c.108r.initvals  function8.c.111r.jump  
> function8.c.106r.locators  function8.c.105r.sibling
> function8.c.109r.unshare  function8.c.110r.vregs

   Something goes wrong during the vregs pass. This pass is the first one to
refer to your ARG_POINTER_REGNUM, if you have one, or else to your
FRAME_POINTER_REGNUM. Are you passing arguments in registers or on the
stack? From the dump files, I'd say in registers.

   Also, looking at the insns added during the vregs pass, notice that some
of them use HImode registers. Have you forgotten to change something from
HImode to QImode? Maybe your Pmode? For example, this sequence is clearly
bogus, since the upper half of (reg:HI 17) is not initialized before use:

(insn 25 24 26 3 (clobber (reg:HI 17)) -1 (nil)
    (nil))

(insn 26 25 27 3 (set (subreg:QI (reg:HI 17) 0)
        (reg/f:QI 6 R[6])) -1 (nil)
    (nil))

(insn 27 26 7 3 (set (reg:HI 18)
        (plus:HI (reg:HI 17)
            (const_int -2 [0xfffffffe]))) -1 (nil)
    (nil))

   In hindsight, I should have told you to set a breakpoint in the debugger
to see what outputs these two insns:

(insn 28 20 29 (set (reg/f:QI 20)
        (subreg:QI (reg:HI 18) 0)) 3 {movqi} (nil)
    (nil))

(insn 29 28 0 (set (reg:QI 19)
        (mem/c/i:QI (reg/f:QI 20) [0 i+0 S1 A16])) 3 {movqi} (nil)
    (nil))

   Try

break make_insn_raw if cur_insn_uid >= 28

and get a backtrace from there. Go back a few frames, looking for a function
which uses macros or target hooks from your target.[ch], such as those in
<URL:http://gcc.gnu.org/onlinedocs/gccint/Stack-and-Calling.html>. And when
you hit the breakpoint, also

call debug_rtx (stack_pointer_rtx)

   And btw, which GCC version?

-- 
Rask Ingemann Lambertsen

Reply via email to