Message ID | CO2PR07MB269360E44C7422C22E2FB51E83D70@CO2PR07MB2693.namprd07.prod.outlook.com |
---|---|
State | New |
Headers | show |
Hi, Please consider this as a personal reminder to review the patch at following link and let me know your comments on the same. https://gcc.gnu.org/ml/gcc-patches/2017-07/msg00178.html Thanks, Naveen
On 07/04/2017 05:13 AM, Hurugalawadi, Naveen wrote: > Hi, > > Thanks for the review and comments on the patch. > >>> The proposed patch handled both the same. This means the pattern >>> shouldn't use range-info but instead match a more complex > > The patch handles as per the discussion by matching the pattern > in match.pd. > > Bootstrapped and Regression tested on AArch64 and X86_64. > Please review the patch and let us know if its okay? > > Thanks, > Naveen > > 2017-07-04 Naveen H.S <Naveen.Hurugalawadi@cavium.com> > > gcc > * match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0) New > pattern. > > gcc/testsuite > * gcc.dg/tree-ssa/vrp116.c: New Test. > OK for the trunk. Sorry for the delay. Presumably EQ/NE are handled by a different pattern? Jeff
diff --git a/gcc/match.pd b/gcc/match.pd index 4c64b21..d914db1 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -1088,6 +1088,12 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) && tree_nop_conversion_p (type, TREE_TYPE (@1))) (convert (bit_and (bit_not @1) @0)))) +/* (m1 CMP m2) * d -> (m1 CMP m2) ? d : 0 */ +(for cmp (gt lt ge le) +(simplify + (mult (convert (cmp @0 @1)) @2) + (cond (cmp @0 @1) @2 { build_zero_cst (type); }))) + /* For integral types with undefined overflow and C != 0 fold x * C EQ/NE y * C into x EQ/NE y. */ (for cmp (eq ne) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/vrp116.c b/gcc/testsuite/gcc.dg/tree-ssa/vrp116.c new file mode 100644 index 0000000..d9d7b23 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/vrp116.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-vrp1" } */ + +int +f (int m1, int m2, int c) +{ + int d = m1 > m2; + int e = d * c; + return e ? m1 : m2; +} + +/* { dg-final { scan-tree-dump-times "\\? c_\[0-9\]\\(D\\) : 0" 1 "vrp1" } } */