From 51a43c06be6ae849a6503a3babf8603e4742e069 Mon Sep 17 00:00:00 2001 From: glisse Date: Wed, 31 Aug 2016 18:22:58 +0000 Subject: [PATCH] match.pd: Revert a * (1 << b) relaxation. 2016-08-31 Marc Glisse PR tree-optimization/73714 gcc/ * match.pd (a * (1 << b)): Revert change from 2016-05-23. gcc/testsuite/ * gcc.dg/tree-ssa/pr73714.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@239902 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/match.pd | 3 +-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/tree-ssa/pr73714.c | 8 ++++++++ 4 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr73714.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4f113217423..2d508331e50 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-08-31 Marc Glisse + + PR tree-optimization/73714 + * match.pd (a * (1 << b)): Revert change from 2016-05-23. + 2016-08-31 David Malcolm * selftest.c: Move "namespace selftest {" to top of file, diff --git a/gcc/match.pd b/gcc/match.pd index 123e754483e..786cf4ce042 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -468,8 +468,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (simplify (mult:c @0 (convert? (lshift integer_onep@1 @2))) (if (! FLOAT_TYPE_P (type) - && (element_precision (type) <= element_precision (TREE_TYPE (@1)) - || TYPE_UNSIGNED (TREE_TYPE (@1)))) + && tree_nop_conversion_p (type, TREE_TYPE (@1))) (lshift @0 @2))) /* Fold (C1/X)*C2 into (C1*C2)/X. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 20535a191a0..4a9043c07cf 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-08-31 Marc Glisse + + PR tree-optimization/73714 + * gcc.dg/tree-ssa/pr73714.c: New test. + 2016-08-31 Jerry DeLisle PR libgfortran/77393 diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr73714.c b/gcc/testsuite/gcc.dg/tree-ssa/pr73714.c new file mode 100644 index 00000000000..40604b8a913 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr73714.c @@ -0,0 +1,8 @@ +/* { dg-do compile { target lp64 } } */ +/* { dg-options "-O2 -fdump-tree-optimized-raw" } */ + +int f(int a, int b){ + return a * (int)(1L << b); +} + +/* { dg-final { scan-tree-dump "mult_expr" "optimized" } } */ -- 2.11.4.GIT