From 7fe317e4eaba64967d11ac62c117c756303a25bd Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Tue, 1 Apr 2003 17:32:33 +0000 Subject: [PATCH] s390.c (s390_fixup_clobbered_return_reg): Do nothing if __builtin_return_address was not used. * config/s390/s390.c (s390_fixup_clobbered_return_reg): Do nothing if __builtin_return_address was not used. From-SVN: r65133 --- gcc/ChangeLog | 5 +++++ gcc/config/s390/s390.c | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 03b97444fde..a53b56b7b6d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-04-01 Ulrich Weigand + + * config/s390/s390.c (s390_fixup_clobbered_return_reg): + Do nothing if __builtin_return_address was not used. + Tue Apr 1 18:18:23 CEST 2003 Jan Hubicka * i386.md (test patterns): Allow memory operand in operand1. diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index b1e7c5b1897..3a6c213e2b4 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -4905,6 +4905,12 @@ s390_fixup_clobbered_return_reg (return_reg) bool replacement_done = 0; rtx insn; + /* If we never called __builtin_return_address, register 14 + might have been used as temp during the prolog; we do + not want to touch those uses. */ + if (!has_hard_reg_initial_val (Pmode, REGNO (return_reg))) + return false; + for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) { rtx reg, off, new_insn; -- 2.30.2