From 8f3e551a0abced0a47ce6b98af4b98391de676ab Mon Sep 17 00:00:00 2001 From: sayle Date: Mon, 17 Apr 2006 16:49:54 +0000 Subject: [PATCH 1/1] * expr.c (expand_assignment): Optimize away no-op moves where the source and destination are equal and have no side-effects. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113009 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/expr.c | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index af150ff0005..6595ef506de 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-04-17 Roger Sayle + + * expr.c (expand_assignment): Optimize away no-op moves where the + source and destination are equal and have no side-effects. + 2006-04-17 Richard Guenther PR target/26826 diff --git a/gcc/expr.c b/gcc/expr.c index b0e958c23b6..f59cc426a17 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -3988,13 +3988,16 @@ expand_assignment (tree to, tree from) rtx result; /* Don't crash if the lhs of the assignment was erroneous. */ - if (TREE_CODE (to) == ERROR_MARK) { result = expand_normal (from); return; } + /* Optimize away no-op moves without side-effects. */ + if (operand_equal_p (to, from, 0)) + return; + /* Assignment of a structure component needs special treatment if the structure component's rtx is not simply a MEM. Assignment of an array element at a constant index, and assignment of -- 2.11.0