From 4d450e9ac8afcf340b62980a0a24c44f2c217092 Mon Sep 17 00:00:00 2001 From: Richard Earnshaw Date: Wed, 17 Dec 2003 18:20:44 +0000 Subject: re PR rtl-optimization/10592 ([arm] caller-save incorrectly handles a reloaded SET_DEST operand) PR optimization/10592 * caller-save.c (mark_referenced_regs): Don't short-circuit a reg or subreg in SET_DEST if it isn't a hard register. From-SVN: r74747 --- gcc/caller-save.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gcc/caller-save.c') diff --git a/gcc/caller-save.c b/gcc/caller-save.c index 9a0a4e3..6eaa533 100644 --- a/gcc/caller-save.c +++ b/gcc/caller-save.c @@ -568,8 +568,10 @@ mark_referenced_regs (rtx x) { x = SET_DEST (x); code = GET_CODE (x); - if (code == REG || code == PC || code == CC0 + if ((code == REG && REGNO (x) < FIRST_PSEUDO_REGISTER) + || code == PC || code == CC0 || (code == SUBREG && GET_CODE (SUBREG_REG (x)) == REG + && REGNO (SUBREG_REG (x)) < FIRST_PSEUDO_REGISTER /* If we're setting only part of a multi-word register, we shall mark it as referenced, because the words that are not being set should be restored. */ -- cgit v1.1