/* 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.
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