rx.c (rx_can_use_simple_return): New function.
* config/rx/rx.c (rx_can_use_simple_return): New function. * config/rx/rx-protos.h (rx_can_use_simple_return): Prototype. * config/rx/rx.md (return): Predicate on rx_can_use_simple_return. From-SVN: r183252
This commit is contained in:
parent
99eb180f66
commit
be61ce5214
@ -1,3 +1,9 @@
|
||||
2012-01-17 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* config/rx/rx.c (rx_can_use_simple_return): New function.
|
||||
* config/rx/rx-protos.h (rx_can_use_simple_return): Prototype.
|
||||
* config/rx/rx.md (return): Predicate on rx_can_use_simple_return.
|
||||
|
||||
2012-01-17 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/51782
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* Exported function prototypes from the Renesas RX backend.
|
||||
Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008, 2009, 2010, 2011, 2012
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Red Hat.
|
||||
|
||||
This file is part of GCC.
|
||||
@ -21,6 +22,8 @@
|
||||
#ifndef GCC_RX_PROTOS_H
|
||||
#define GCC_RX_PROTOS_H
|
||||
|
||||
extern bool rx_can_use_simple_return (void);
|
||||
extern void rx_expand_epilogue (bool);
|
||||
extern void rx_expand_prologue (void);
|
||||
extern int rx_initial_elimination_offset (int, int);
|
||||
|
||||
@ -29,7 +32,6 @@ extern int rx_adjust_insn_length (rtx, int);
|
||||
extern int rx_align_for_label (rtx, int);
|
||||
extern void rx_emit_stack_popm (rtx *, bool);
|
||||
extern void rx_emit_stack_pushm (rtx *);
|
||||
extern void rx_expand_epilogue (bool);
|
||||
extern char * rx_gen_move_template (rtx *, bool);
|
||||
extern bool rx_is_legitimate_constant (enum machine_mode, rtx);
|
||||
extern bool rx_is_restricted_memory_address (rtx,
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* Subroutines used for code generation on Renesas RX processors.
|
||||
Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008, 2009, 2010, 2011, 2012
|
||||
Free Software Foundation, Inc.
|
||||
Contributed by Red Hat.
|
||||
|
||||
This file is part of GCC.
|
||||
@ -1819,6 +1820,30 @@ gen_rx_popm_vector (unsigned int low, unsigned int high)
|
||||
return vector;
|
||||
}
|
||||
|
||||
/* Returns true if a simple return insn can be used. */
|
||||
|
||||
bool
|
||||
rx_can_use_simple_return (void)
|
||||
{
|
||||
unsigned int low;
|
||||
unsigned int high;
|
||||
unsigned int frame_size;
|
||||
unsigned int stack_size;
|
||||
unsigned int register_mask;
|
||||
|
||||
if (is_naked_func (NULL_TREE)
|
||||
|| is_fast_interrupt_func (NULL_TREE)
|
||||
|| is_interrupt_func (NULL_TREE))
|
||||
return false;
|
||||
|
||||
rx_get_stack_layout (& low, & high, & register_mask,
|
||||
& frame_size, & stack_size);
|
||||
|
||||
return (register_mask == 0
|
||||
&& (frame_size + stack_size) == 0
|
||||
&& low == 0);
|
||||
}
|
||||
|
||||
void
|
||||
rx_expand_epilogue (bool is_sibcall)
|
||||
{
|
||||
|
@ -1,5 +1,6 @@
|
||||
;; Machine Description for Renesas RX processors
|
||||
;; Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2008, 2009, 2010, 2011, 2012
|
||||
;; Free Software Foundation, Inc.
|
||||
;; Contributed by Red Hat.
|
||||
|
||||
;; This file is part of GCC.
|
||||
@ -342,7 +343,7 @@
|
||||
|
||||
(define_expand "return"
|
||||
[(return)]
|
||||
""
|
||||
"rx_can_use_simple_return ()"
|
||||
"rx_expand_epilogue (false); DONE;"
|
||||
)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user