------- Additional Comments From steven at gcc dot gnu dot org  2005-06-09 
09:20 -------
Here is the initial RTL for the call to foo: 
 
(call_insn 44 20 45 (call_placeholder 40 31 22 27 (cond [ 
  (const_string "normal") (sequence [ 
    (insn 40 0 39 (set (reg:SI 63) 
                (reg/v:SI 58 [ n ])) -1 (nil) 
            (nil)) 
    (insn 39 40 41 (parallel [ 
                    (set (reg/v:SI 58 [ n ]) 
                        (plus:SI (reg/v:SI 58 [ n ]) 
                            (const_int 1 [0x1]))) 
                    (clobber (reg:CC 17 flags)) 
                ]) -1 (nil) 
            (nil)) 
    (insn 41 39 42 (set (reg:SI 62) 
                (reg:SI 63)) -1 (nil) 
            (nil)) 
    (insn 42 41 43 (set (reg:SI 5 di) 
                (reg:SI 62)) -1 (nil) 
            (nil)) 
    (call_insn 43 42 0 (call (mem:QI (symbol_ref:DI ("foo") [flags 0x3] 
<function_decl 0x2a9592b9c0 foo>) [0 S1 A8]) 
                (const_int 0 [0x0])) -1 (nil) 
            (nil) 
            (expr_list (use (reg:SI 5 di)) 
                (nil))) 
    ]) 
  (const_string "tail_call") (sequence [ 
    (note 31 0 32 NOTE_INSN_DELETED) 
    (note 32 31 34 NOTE_INSN_DELETED) 
    (insn 34 32 33 (set (reg:SI 61) 
                (reg/v:SI 58 [ n ])) -1 (nil) 
            (nil)) 
    (insn 33 34 35 (parallel [ 
                    (set (reg/v:SI 58 [ n ]) 
                        (plus:SI (reg/v:SI 58 [ n ]) 
                            (const_int 1 [0x1]))) 
                    (clobber (reg:CC 17 flags)) 
                ]) -1 (nil) 
            (nil)) 
    (insn 35 33 36 (set (reg:SI 60) 
                (reg:SI 61)) -1 (nil) 
            (nil)) 
    (insn 36 35 37 (set (reg:SI 5 di) 
                (reg:SI 60)) -1 (nil) 
            (nil)) 
    (call_insn/j 37 36 38 (call (mem:QI (symbol_ref:DI ("foo") [flags 0x3] 
<function_decl 0x2a9592b9c0 foo>) [0 S1 A8]) 
                (const_int 0 [0x0])) -1 (nil) 
            (nil) 
            (expr_list (use (reg:SI 5 di)) 
                (nil))) 
    (barrier 38 37 0) 
    ]) 
  (const_string "tail_recursion") (sequence [ 
    (note 22 0 23 NOTE_INSN_DELETED) 
    (note 23 22 25 NOTE_INSN_DELETED) 
    (insn 25 23 26 (set (reg:SI 59) 
                (reg/v:SI 58 [ n ])) -1 (nil) 
            (nil)) 
    (insn 26 25 24 (set (reg/v:SI 58 [ n ]) 
                (reg:SI 59)) -1 (nil) 
            (nil)) 
    (insn 24 26 28 (parallel [ 
                    (set (reg/v:SI 58 [ n ]) 
                        (plus:SI (reg/v:SI 58 [ n ]) 
                            (const_int 1 [0x1]))) 
                    (clobber (reg:CC 17 flags)) 
                ]) -1 (nil) 
            (nil)) 
    (jump_insn 28 24 29 (set (pc) 
                (label_ref 27)) -1 (nil) 
            (nil)) 
    (barrier 29 28 30) 
    (barrier 30 29 0) 
    ]) 
  ])) -1 (nil) 
    (nil) 
    (nil)) 
 
 
You have to set debug_call_placeholder_verbose = 1 in print-rtl.c to 
see what is going on. 

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21964

Reply via email to