Commit cfdc4f33 by Marc Glisse Committed by Marc Glisse

re PR other/63387 (Optimize pairs of isnan() calls into a single isunordered())

2015-04-14  Marc Glisse  <marc.glisse@inria.fr>

	PR tree-optimization/63387
gcc/
	* match.pd ((x unord x) | (y unord y) -> (x unord y),
	(x unord x) | (x unord y) -> (x unord y)): New simplifications.
gcc/testsuite/
	* gcc.dg/pr63387.c: New testcase.

From-SVN: r222077
parent 55d2ee57
2015-04-14 Marc Glisse <marc.glisse@inria.fr>
PR tree-optimization/63387
* match.pd ((x unord x) | (y unord y) -> (x unord y),
(x unord x) | (x unord y) -> (x unord y)): New simplifications.
2015-04-14 Uros Bizjak <ubizjak@gmail.com> 2015-04-14 Uros Bizjak <ubizjak@gmail.com>
* config/i386/predicates.md (any_QIreg_operand): Rename from * config/i386/predicates.md (any_QIreg_operand): Rename from
......
...@@ -932,6 +932,15 @@ along with GCC; see the file COPYING3. If not see ...@@ -932,6 +932,15 @@ along with GCC; see the file COPYING3. If not see
(if (ic == ncmp) (if (ic == ncmp)
(ncmp @0 @1))))) (ncmp @0 @1)))))
/* Unordered tests if either argument is a NaN. */
(simplify
(bit_ior (unordered @0 @0) (unordered @1 @1))
(if ((GIMPLE && types_compatible_p (TREE_TYPE (@0), TREE_TYPE (@1)))
|| (GENERIC && TREE_TYPE (@0) == TREE_TYPE (@1)))
(unordered @0 @1)))
(simplify
(bit_ior:c (unordered @0 @0) (unordered:c@2 @0 @1))
@2)
/* Simplification of math builtins. */ /* Simplification of math builtins. */
......
2015-04-14 Marc Glisse <marc.glisse@inria.fr>
PR tree-optimization/63387
* gcc.dg/pr63387.c: New testcase.
2015-04-12 Jan Hubicka <hubicka@ucw.cz> 2015-04-12 Jan Hubicka <hubicka@ucw.cz>
* g++.dg/tree-ssa/nonzero-3.C: New testcase. * g++.dg/tree-ssa/nonzero-3.C: New testcase.
......
/* { dg-do compile } */
/* { dg-options "-O -fdump-tree-optimized" } */
int f(double aaa, double bbb){
int xa = __builtin_isunordered(aaa, aaa);
int xb = __builtin_isunordered(bbb, bbb);
return xa | xb;
}
int g(double aaa, double bbb){
int xa = __builtin_isunordered(aaa, bbb);
int xb = __builtin_isunordered(bbb, bbb);
return xa | xb;
}
int h(double ccc, float ddd){
int xc = __builtin_isunordered(ccc, ccc);
int xd = __builtin_isunordered(ddd, ddd);
return xc | xd;
}
/* { dg-final { scan-tree-dump-not "aaa\[^\n\r\]* unord aaa" "optimized" } } */
/* { dg-final { scan-tree-dump-not "bbb\[^\n\r\]* unord bbb" "optimized" } } */
/* { dg-final { scan-tree-dump-times "aaa\[^\n\r\]* unord bbb" 2 "optimized" } } */
/* { dg-final { scan-tree-dump-not "ccc\[^\n\r\]* unord ddd" "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
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