This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
"return" expander
- From: Momchil Velikov <velco at fadata dot bg>
- To: gcc at gcc dot gnu dot org
- Date: 28 Jul 2002 02:26:33 +0300
- Subject: "return" expander
The return insn on v850 is ``jmp [r31]''. I have a case with a
function where r31 is allocated and the jump at the end of the
function jumps to nowhere. I guess the ``return'' pattern should make
``r31'' live at the end so it is either saved/restored or not
allocated. I've tried with
(define_expand "return"
[(parallel [(return)
(use (reg:SI 31))])]
"reload_completed && compute_frame_size (get_frame_size (), (long *)0) == 0"
"
{
current_function_anonymous_args = 0;
v850_interrupt_cache_p = FALSE;
v850_interrupt_p = FALSE;
}")
and got
$ v850-elf-gcc -da -S -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions 980716-1.c
980716-1.c: In function `stub':
980716-1.c:18: error: Too many outgoing branch edges from bb 18
980716-1.c:18: internal compiler error: verify_flow_info failed
because the above description generated ``insn'' instead of
``jump_insn''.
What is the proper way to describe insn like these ?
~velco