From: glisse Date: Thu, 21 Apr 2016 09:32:32 +0000 (+0000) Subject: max(INT_MIN, x) -> x X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=523f3a9d4fcbb5281bfd83c4010b22ce8aadad7b;p=thirdparty%2Fgcc.git max(INT_MIN, x) -> x 2016-04-21 Marc Glisse gcc/ * match.pd (min(int_max, x), max(int_min, x)): New transformations. gcc/testsuite/ * gcc.dg/tree-ssa/minmax-1.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235323 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d2a345cf7f5b..26d1861456f6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2016-04-21 Marc Glisse + + * match.pd (min(int_max, x), max(int_min, x)): New transformations. + 2016-04-20 Jan Hubicka * ipa-inline.c (can_inline_edge_p): Pass caller info to diff --git a/gcc/match.pd b/gcc/match.pd index 75aa6013b2e2..38193216aee1 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -1192,16 +1192,26 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) @1) (simplify (min @0 @1) - (if (INTEGRAL_TYPE_P (type) - && TYPE_MIN_VALUE (type) - && operand_equal_p (@1, TYPE_MIN_VALUE (type), OEP_ONLY_CONST)) - @1)) + (switch + (if (INTEGRAL_TYPE_P (type) + && TYPE_MIN_VALUE (type) + && operand_equal_p (@1, TYPE_MIN_VALUE (type), OEP_ONLY_CONST)) + @1) + (if (INTEGRAL_TYPE_P (type) + && TYPE_MAX_VALUE (type) + && operand_equal_p (@1, TYPE_MAX_VALUE (type), OEP_ONLY_CONST)) + @0))) (simplify (max @0 @1) - (if (INTEGRAL_TYPE_P (type) - && TYPE_MAX_VALUE (type) - && operand_equal_p (@1, TYPE_MAX_VALUE (type), OEP_ONLY_CONST)) - @1)) + (switch + (if (INTEGRAL_TYPE_P (type) + && TYPE_MAX_VALUE (type) + && operand_equal_p (@1, TYPE_MAX_VALUE (type), OEP_ONLY_CONST)) + @1) + (if (INTEGRAL_TYPE_P (type) + && TYPE_MIN_VALUE (type) + && operand_equal_p (@1, TYPE_MIN_VALUE (type), OEP_ONLY_CONST)) + @0))) (for minmax (FMIN FMAX) /* If either argument is NaN, return the other one. Avoid the transformation if we get (and honor) a signalling NaN. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index eb47876726e4..98db7d0577c4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2016-04-21 Marc Glisse + + * gcc.dg/tree-ssa/minmax-1.c: New testcase. + 2016-04-20 Jan Hubicka PR ipa/70018 diff --git a/gcc/testsuite/gcc.dg/tree-ssa/minmax-1.c b/gcc/testsuite/gcc.dg/tree-ssa/minmax-1.c new file mode 100644 index 000000000000..dfd7ed232776 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/minmax-1.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-O -fdump-tree-optimized" } */ + +static int min(int a,int b){return (a