From 65c045482b5b629a2ac5098a083f1a6566e888e8 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Wed, 26 Feb 2003 23:09:58 +0000 Subject: [PATCH] builtins.c (purge_builtin_constant_p): Handle subreg of constant_p_rtx too. * builtins.c (purge_builtin_constant_p): Handle subreg of constant_p_rtx too. From-SVN: r63490 --- gcc/ChangeLog | 3 +++ gcc/builtins.c | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 79c335915a88..9cf8fa1652f0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2003-02-26 Alexandre Oliva + * builtins.c (purge_builtin_constant_p): Handle subreg of + constant_p_rtx too. + * function.c (assign_stack_local_1): Truncate constant added to frame_pointer_rtx or virtual_stack_vars_rtx for Pmode. diff --git a/gcc/builtins.c b/gcc/builtins.c index 81e38db73aac..d2505cd3a7ee 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -4952,9 +4952,12 @@ purge_builtin_constant_p () for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) if (INSN_P (insn) && (set = single_set (insn)) != NULL_RTX - && GET_CODE (SET_SRC (set)) == CONSTANT_P_RTX) + && (GET_CODE (arg = SET_SRC (set)) == CONSTANT_P_RTX + || (GET_CODE (arg) == SUBREG + && (GET_CODE (arg = SUBREG_REG (arg)) + == CONSTANT_P_RTX)))) { - arg = XEXP (SET_SRC (set), 0); + arg = XEXP (arg, 0); new = CONSTANT_P (arg) ? const1_rtx : const0_rtx; validate_change (insn, &SET_SRC (set), new, 0); -- 2.43.5