]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
rtlanal.c (replace_label): Fix replacing labels in constant pool.
authorJosef Zlomek <zlomekj@suse.cz>
Tue, 24 Feb 2004 21:45:20 +0000 (22:45 +0100)
committerJosef Zlomek <zlomek@gcc.gnu.org>
Tue, 24 Feb 2004 21:45:20 +0000 (21:45 +0000)
PR/14240
* rtlanal.c (replace_label): Fix replacing labels in constant pool.

From-SVN: r78392

gcc/ChangeLog
gcc/rtlanal.c

index 9f5df1d52f12c7a7d3efef116f9eda54f9dedd9e..0cdd56bed6bcb0febd3aaee673ec740af5161f4c 100644 (file)
@@ -1,3 +1,8 @@
+2004-02-24  Josef Zlomek  <zlomekj@suse.cz>
+
+       PR/14240
+       * rtlanal.c (replace_label): Fix replacing labels in constant pool.
+
 2004-02-24  Geoffrey Keating  <geoffk@apple.com>
 
        * config/darwin.h (TARGET_HAS_F_SETLKW): Define.
index f643dfe192a3c634ce897feadf110fe89d28b3ab..0ec52dad726c6a1aeed5b73dd49584beeb15aa29 100644 (file)
@@ -2715,7 +2715,6 @@ int
 replace_label (rtx *x, void *data)
 {
   rtx l = *x;
-  rtx tmp;
   rtx old_label = ((replace_label_data *) data)->r1;
   rtx new_label = ((replace_label_data *) data)->r2;
   bool update_label_nuses = ((replace_label_data *) data)->update_label_nuses;
@@ -2723,12 +2722,10 @@ replace_label (rtx *x, void *data)
   if (l == NULL_RTX)
     return 0;
 
-  if (GET_CODE (l) == MEM
-      && (tmp = XEXP (l, 0)) != NULL_RTX
-      && GET_CODE (tmp) == SYMBOL_REF
-      && CONSTANT_POOL_ADDRESS_P (tmp))
+  if (GET_CODE (l) == SYMBOL_REF
+      && CONSTANT_POOL_ADDRESS_P (l))
     {
-      rtx c = get_pool_constant (tmp);
+      rtx c = get_pool_constant (l);
       if (rtx_referenced_p (old_label, c))
        {
          rtx new_c, new_l;
@@ -2744,7 +2741,7 @@ replace_label (rtx *x, void *data)
 
          /* Add the new constant NEW_C to constant pool and replace
             the old reference to constant by new reference.  */
-         new_l = force_const_mem (get_pool_mode (tmp), new_c);
+         new_l = XEXP (force_const_mem (get_pool_mode (l), new_c), 0);
          *x = replace_rtx (l, l, new_l);
        }
       return 0;