This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: TMSC320C6x port: return label is being deleted
- From: Adrian Strätling<adrian dot straetling at cs dot tu-chemnitz dot de>
- To: GCC <gcc at gcc dot gnu dot org>
- Date: Thu, 16 Sep 2004 19:33:17 +0200
- Subject: Re: TMSC320C6x port: return label is being deleted
- References: <20040914180905.12117.qmail@web86110.mail.ukl.yahoo.com>
Hi,
Graham Stott wrote:
You only need a label to appear in the generated .s file so your call
pattern can take care of making one up when the time comes to output your
call fragment.
Ok,
can I somehow attach the label to the call insn, so that the output
function can get the label number and print it?
I tried:
"
insn = gen_rtx_CALL (VOIDmode, mem, const0_rtx);
emit_call_insn(insn);
emit_label(ret_label);
REG_NOTES (insn) = gen_rtx_INSN_LIST (REG_LABEL, ret_label,
REG_NOTES(insn));
LABEL_NUSES(ret_label)++;
"
which results in RTL:
"
(insn 17 15 18 2 (set (mem:SI (pre_dec:SI (reg/f:SI 47 b15)) [0 S4 A32])
(label_ref:SI 19)) -1 (nil)
(insn_list:REG_LABEL 19 (nil)))
(call_insn 18 17 19 2 (call (mem:QI (symbol_ref:SI ("nop") [flags 0x3]
<function_decl 0x401d45e4 nop>) [0 S1 A8])
(const_int 0 [0x0])) -1 (nil)
(expr_list:REG_EH_REGION (const_int 0 [0x0])
(nil))
(nil))
(code_label 19 18 34 3 5 "" [1 uses])
"
It seems I have to emit the label to get the REFs right.
However, I miss the the "REG_LABEL 19" in the insn list of the call insn.
Another approach would be to walk the dependency list at the time of
output, but I'd rather prefer the first one.
Thanks,
Adrian