OSDN Git Service

(expand_fix): Don't copy TARGET to TO if same.
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 16 Jan 1996 13:20:15 +0000 (13:20 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 16 Jan 1996 13:20:15 +0000 (13:20 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@11017 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/optabs.c

index cae4c4e..a2bad29 100644 (file)
@@ -1,5 +1,5 @@
 /* Expand the basic unary and binary arithmetic operations, for GNU compiler.
-   Copyright (C) 1987, 88, 92, 93, 94, 1995 Free Software Foundation, Inc.
+   Copyright (C) 1987, 88, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -3884,10 +3884,19 @@ expand_fix (to, from, unsignedp)
                                   GET_MODE (to), from));
     }
       
-  if (GET_MODE (to) == GET_MODE (target))
-    emit_move_insn (to, target);
-  else
-    convert_move (to, target, 0);
+  /* Do NOT copy, if "to" is the same as "target".  See
+     expand_float().  It used to cause a bogus "clobber" of the
+     input, causing it's ancestors to be deleted.  Hopefully the call
+     is just unnecessary now, causing extra time in optimization, or
+     some extra instructions.
+     / Hans-Peter.Nilsson@axis.se */ 
+  if (target != to)
+    {
+      if (GET_MODE (to) == GET_MODE (target))
+        emit_move_insn (to, target);
+      else
+        convert_move (to, target, 0);
+    }
 }
 \f
 static optab