aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@casey.cygnus.com>2000-03-28 19:42:28 +0000
committerJason Merrill <jason@gcc.gnu.org>2000-03-28 14:42:28 -0500
commit46406379bd6b9790d4eea02def6885494ccbdaff (patch)
tree0617cdec9d93d73187f76f60984da9a00dfec999 /gcc
parentda3d4dfa91a591ace5286a262e7cc817a60b5827 (diff)
downloadgcc-46406379bd6b9790d4eea02def6885494ccbdaff.zip
gcc-46406379bd6b9790d4eea02def6885494ccbdaff.tar.gz
gcc-46406379bd6b9790d4eea02def6885494ccbdaff.tar.bz2
arm.md (return peepholes): Update to reflect the new call insn patterns.
* config/arm/arm.md (return peepholes): Update to reflect the new call insn patterns. * config/arm/arm.c (arm_volatile_func): Also check current_function_nothrow. (output_return_instruction, output_func_prologue): Use it. (arm_output_epilogue, arm_expand_prologue): Likewise. From-SVN: r32788
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/arm/arm.c15
-rw-r--r--gcc/config/arm/arm.md3
3 files changed, 18 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2e679b4..41f3741 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2000-03-28 Jason Merrill <jason@casey.cygnus.com>
+
+ * config/arm/arm.md (return peepholes): Update to reflect the new
+ call insn patterns.
+ * config/arm/arm.c (arm_volatile_func): Also check
+ current_function_nothrow.
+ (output_return_instruction, output_func_prologue): Use it.
+ (arm_output_epilogue, arm_expand_prologue): Likewise.
+
2000-03-27 Tom Tromey <tromey@cygnus.com>
* gcc.c (handle_braces): In {x*...} case, break out of loop if
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 3177a64..adeeae7 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -5781,8 +5781,7 @@ output_return_instruction (operand, really_return, reverse)
{
char instr[100];
int reg, live_regs = 0;
- int volatile_func = (optimize > 0
- && TREE_THIS_VOLATILE (current_function_decl));
+ int volatile_func = arm_volatile_func ();
return_used_this_function = 1;
@@ -5914,7 +5913,8 @@ output_return_instruction (operand, really_return, reverse)
int
arm_volatile_func ()
{
- return (optimize > 0 && TREE_THIS_VOLATILE (current_function_decl));
+ return (optimize > 0 && current_function_nothrow
+ && TREE_THIS_VOLATILE (current_function_decl));
}
/* Write the function name into the code section, directly preceding
@@ -5977,8 +5977,7 @@ output_func_prologue (f, frame_size)
int frame_size;
{
int reg, live_regs_mask = 0;
- int volatile_func = (optimize > 0
- && TREE_THIS_VOLATILE (current_function_decl));
+ int volatile_func = arm_volatile_func ();
/* Nonzero if we must stuff some register arguments onto the stack as if
they were passed there. */
@@ -6056,8 +6055,7 @@ arm_output_epilogue ()
rtx operands[3];
int frame_size = get_frame_size ();
FILE *f = asm_out_file;
- int volatile_func = (optimize > 0
- && TREE_THIS_VOLATILE (current_function_decl));
+ int volatile_func = arm_volatile_func ();
if (use_return_insn (FALSE) && return_used_this_function)
return "";
@@ -6408,8 +6406,7 @@ arm_expand_prologue ()
int store_arg_regs = 0;
/* If this function doesn't return, then there is no need to push
the call-saved regs. */
- int volatile_func = (optimize > 0
- && TREE_THIS_VOLATILE (current_function_decl));
+ int volatile_func = arm_volatile_func ();
rtx insn;
/* Naked functions don't have prologues. */
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index ed1a3da..314beac 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -6356,6 +6356,7 @@
(define_peephole
[(parallel [(call (mem:SI (match_operand:SI 0 "" "X"))
(match_operand:SI 1 "general_operand" "g"))
+ (use (match_operand:SI 2 "" ""))
(clobber (reg:SI 14))])
(return)]
"(GET_CODE (operands[0]) == SYMBOL_REF && USE_RETURN_INSN (FALSE)
@@ -6384,6 +6385,7 @@
[(parallel [(set (match_operand 0 "s_register_operand" "=rf")
(call (mem:SI (match_operand:SI 1 "" "X"))
(match_operand:SI 2 "general_operand" "g")))
+ (use (match_operand:SI 3 "" ""))
(clobber (reg:SI 14))])
(return)]
"(GET_CODE (operands[1]) == SYMBOL_REF && USE_RETURN_INSN (FALSE)
@@ -6415,6 +6417,7 @@
[(parallel [(set (match_operand 0 "s_register_operand" "=rf")
(call (mem:SI (match_operand:SI 1 "" "X"))
(match_operand:SI 2 "general_operand" "g")))
+ (use (match_operand:SI 3 "" ""))
(clobber (reg:SI 14))])
(use (match_dup 0))
(return)]