OSDN Git Service

* optabs.c (emit_libcall_block): Remove spurious REG_EQUAL notes
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 5 Apr 2000 18:36:20 +0000 (18:36 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 5 Apr 2000 18:36:20 +0000 (18:36 +0000)
        from the insn where REG_RETVAL is added.
        (emit_no_conflict_block): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32935 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/optabs.c

index f2f4df9..43c4ef8 100644 (file)
@@ -1,3 +1,9 @@
+Wed Apr  5 12:35:18 2000  Hans-Peter Nilsson  <hp@axis.com>
+
+       * optabs.c (emit_libcall_block): Remove spurious REG_EQUAL notes
+       from the insn where REG_RETVAL is added.
+       (emit_no_conflict_block): Ditto.
+
 Wed Apr  5 18:03:31 2000  Toshiyasu Morita  (toshi.morita@sega.com)
                           J"orn Rennecke <amylaar@cygnus.co.uk>
 
index 61b1547..dbdea04 100644 (file)
@@ -2699,7 +2699,16 @@ emit_no_conflict_block (insns, target, op0, op1, equiv)
        set_unique_reg_note (last, REG_EQUAL, equiv);
     }
   else
-    last = get_last_insn ();
+    {
+      last = get_last_insn ();
+
+      /* Remove any existing REG_EQUAL note from "last", or else it will
+        be mistaken for a note referring to the full contents of the
+        alleged libcall value when found together with the REG_RETVAL
+        note added below.  An existing note can come from an insn
+        expansion at "last".  */
+      remove_note (last, find_reg_note (last, REG_EQUAL, NULL_RTX));
+    }
 
   if (prev == 0)
     first = get_insns ();
@@ -2810,6 +2819,15 @@ emit_libcall_block (insns, target, result, equiv)
   if (mov_optab->handlers[(int) GET_MODE (target)].insn_code
       != CODE_FOR_nothing)
     set_unique_reg_note (last, REG_EQUAL, copy_rtx (equiv));
+  else
+    {
+      /* Remove any existing REG_EQUAL note from "last", or else it will
+        be mistaken for a note referring to the full contents of the
+        libcall value when found together with the REG_RETVAL note added
+        below.  An existing note can come from an insn expansion at
+        "last".  */
+      remove_note (last, find_reg_note (last, REG_EQUAL, NULL_RTX));
+    }
 
   if (prev == 0)
     first = get_insns ();