From: Jakub Jelinek Date: Fri, 8 Jun 2001 17:43:09 +0000 (+0200) Subject: jump.c (mark_modified_reg): Allow jump threading if condition codes are represented... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7bd458aabb4805c9126408032b515ab3ce106f54;p=gcc.git 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 --- 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; }