This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

"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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]