max(INT_MIN, x) -> x
2016-04-21 Marc Glisse <marc.glisse@inria.fr> gcc/ * match.pd (min(int_max, x), max(int_min, x)): New transformations. gcc/testsuite/ * gcc.dg/tree-ssa/minmax-1.c: New testcase. From-SVN: r235323
This commit is contained in:
parent
bbe008b6e9
commit
2c2870a1b1
|
@ -1,3 +1,7 @@
|
|||
2016-04-21 Marc Glisse <marc.glisse@inria.fr>
|
||||
|
||||
* match.pd (min(int_max, x), max(int_min, x)): New transformations.
|
||||
|
||||
2016-04-20 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* ipa-inline.c (can_inline_edge_p): Pass caller info to
|
||||
|
|
26
gcc/match.pd
26
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. */
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2016-04-21 Marc Glisse <marc.glisse@inria.fr>
|
||||
|
||||
* gcc.dg/tree-ssa/minmax-1.c: New testcase.
|
||||
|
||||
2016-04-20 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
PR ipa/70018
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O -fdump-tree-optimized" } */
|
||||
|
||||
static int min(int a,int b){return (a<b)?a:b;}
|
||||
static int max(int a,int b){return (a<b)?b:a;}
|
||||
int f(int x){return max(x,-__INT_MAX__-1);}
|
||||
int g(int x){return min(x,__INT_MAX__);}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "return x_\[0-9\]+.D.;" 2 "optimized" } } */
|
Loading…
Reference in New Issue