From 7bd458aabb4805c9126408032b515ab3ce106f54 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 8 Jun 2001 19:43:09 +0200 Subject: [PATCH] jump.c (mark_modified_reg): Allow jump threading if condition codes are represented by a hard register. * jump.c (mark_modified_reg): Allow jump threading if condition codes are represented by a hard register. From-SVN: r43030 --- gcc/ChangeLog | 5 +++++ gcc/jump.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f75f9b1521d..2bcea06f39a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-06-08 Jakub Jelinek + + * jump.c (mark_modified_reg): Allow jump threading if condition + codes are represented by a hard register. + 2001-06-08 Jakub Jelinek * config/ia64/ia64.c (ia64_function_arg): Use [SDT]Fmode as gr_mode diff --git a/gcc/jump.c b/gcc/jump.c index 5d5c6d6e796..feb7b4d8ca3 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -3763,7 +3763,7 @@ static int modified_mem; static void mark_modified_reg (dest, x, data) rtx dest; - rtx x ATTRIBUTE_UNUSED; + rtx x; void *data ATTRIBUTE_UNUSED; { int regno; @@ -3781,7 +3781,13 @@ mark_modified_reg (dest, x, data) regno = REGNO (dest); if (regno >= FIRST_PSEUDO_REGISTER) modified_regs[regno] = 1; - else + /* Don't consider a hard condition code register as modified, + if it is only being set. thread_jumps will check if it is set + to the same value. */ + else if (GET_MODE_CLASS (GET_MODE (dest)) != MODE_CC + || GET_CODE (x) != SET + || ! rtx_equal_p (dest, SET_DEST (x)) + || HARD_REGNO_NREGS (regno, GET_MODE (dest)) != 1) for (i = 0; i < HARD_REGNO_NREGS (regno, GET_MODE (dest)); i++) modified_regs[regno + i] = 1; } -- 2.30.2