]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR rtl-optimization/12147 (Wrong code with -O2 in context of reload)
authorUlrich Weigand <uweigand@de.ibm.com>
Fri, 5 Mar 2004 20:16:49 +0000 (20:16 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Fri, 5 Mar 2004 20:16:49 +0000 (20:16 +0000)
PR optimization/12147
* reload1.c (reload_reg_free_p): RELOAD_OTHER conflicts with
RELOAD_FOR_OPADDR_ADDR.
(reload_reg_reaches_end_p): A RELOAD_FOR_OTHER_ADDRESS register
might be reused as RELOAD_FOR_OPADDR_ADDR register.

From-SVN: r78981

gcc/ChangeLog
gcc/reload1.c

index 9b4e41a9b6e6fc869aa465e4669e2093e8ebc031..c6e20f99f2926b6814372980652c08f92498c780 100644 (file)
@@ -1,3 +1,11 @@
+2004-03-05  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       PR optimization/12147
+       * reload1.c (reload_reg_free_p): RELOAD_OTHER conflicts with
+       RELOAD_FOR_OPADDR_ADDR.
+       (reload_reg_reaches_end_p): A RELOAD_FOR_OTHER_ADDRESS register
+       might be reused as RELOAD_FOR_OPADDR_ADDR register.
+
 2004-03-05  Ian Lance Taylor  <ian@wasabisystems.com>
 
        PR target/1532
index 116f0a0ffebf674abe0f464c97e128de78c2ae07..edab53a0e85a786c5b0fc755684028133fb58d2d 100644 (file)
@@ -4397,6 +4397,7 @@ reload_reg_free_p (regno, opnum, type)
       /* In use for anything means we can't use it for RELOAD_OTHER.  */
       if (TEST_HARD_REG_BIT (reload_reg_used_in_other_addr, regno)
          || TEST_HARD_REG_BIT (reload_reg_used_in_op_addr, regno)
+         || TEST_HARD_REG_BIT (reload_reg_used_in_op_addr_reload, regno)
          || TEST_HARD_REG_BIT (reload_reg_used_in_insn, regno))
        return 0;
 
@@ -4578,6 +4579,7 @@ reload_reg_reaches_end_p (regno, opnum, type)
          return 0;
 
       return (! TEST_HARD_REG_BIT (reload_reg_used_in_op_addr, regno)
+             && ! TEST_HARD_REG_BIT (reload_reg_used_in_op_addr_reload, regno)
              && ! TEST_HARD_REG_BIT (reload_reg_used_in_insn, regno)
              && ! TEST_HARD_REG_BIT (reload_reg_used, regno));