Commit 009b7fc1 by Jeff Law Committed by Jeff Law

re PR tree-optimization/65217 (__builtin_unreachable in if statement causes bad…

re PR tree-optimization/65217 (__builtin_unreachable in if statement causes bad assembly generation)

	PR tree-optimization/65217
	* tree-ssa-dom.c (record_equality): Given two SSA_NAMEs, if just one
	of them has a single use, make sure it is the LHS of the implied
	copy.

        PR tree-optimization/65217
	* gcc.target/i386/pr65217.c: Remove XFAIL.

From-SVN: r222499
parent 3954ead0
2015-04-27 Jeff Law <law@redhat.com>
PR tree-optimization/65217
* tree-ssa-dom.c (record_equality): Given two SSA_NAMEs, if just one
of them has a single use, make sure it is the LHS of the implied
copy.
2015-04-28 Alan Modra <amodra@gmail.com>
PR target/65810
......
2015-04-27 Jeff Law <law@redhat.com>
PR tree-optimization/65217
* gcc.target/i386/pr65217.c: Remove XFAIL.
2015-04-27 Andre Vehreschild <vehre@gmx.de>
PR fortran/60322
......
/* { dg-do compile } */
/* { dg-options "-O" } */
/* { dg-final { scan-assembler-not "negl" { xfail *-*-* } } } */
/* { dg-final { scan-assembler-not "andl" { xfail *-*-* } } } */
/* { dg-final { scan-assembler-not "negl" } } */
/* { dg-final { scan-assembler-not "andl" } } */
int
test(int n)
......
......@@ -1762,6 +1762,20 @@ record_equality (tree x, tree y)
if (tree_swap_operands_p (x, y, false))
std::swap (x, y);
/* Most of the time tree_swap_operands_p does what we want. But there's
cases where we we know one operand is better for copy propagation than
the other. Given no other code cares about ordering of equality
comparison operators for that purpose, we just handle the special cases
here. */
if (TREE_CODE (x) == SSA_NAME && TREE_CODE (y) == SSA_NAME)
{
/* If one operand is a single use operand, then make it
X. This will preserve its single use properly and if this
conditional is eliminated, the computation of X can be
eliminated as well. */
if (has_single_use (y) && ! has_single_use (x))
std::swap (x, y);
}
if (TREE_CODE (x) == SSA_NAME)
prev_x = SSA_NAME_VALUE (x);
if (TREE_CODE (y) == SSA_NAME)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment