aboutsummaryrefslogtreecommitdiff
path: root/gcc/builtins.c
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2003-02-26 23:09:58 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2003-02-26 23:09:58 +0000
commit65c045482b5b629a2ac5098a083f1a6566e888e8 (patch)
treebb82fd600d50271ab4fa36c3dc68debb48a0f875 /gcc/builtins.c
parentc41536f56a6a1217ca42091a358992d902b7be34 (diff)
downloadgcc-65c045482b5b629a2ac5098a083f1a6566e888e8.zip
gcc-65c045482b5b629a2ac5098a083f1a6566e888e8.tar.gz
gcc-65c045482b5b629a2ac5098a083f1a6566e888e8.tar.bz2
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
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r--gcc/builtins.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 81e38db..d2505cd 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);