Hello,this patch was bootstrapped and regtested on powerpc64le-unknown-linux-gnu. Already committed, since this is simply reverting part of my patch.
-- Marc Glisse
Index: gcc/ChangeLog =================================================================== --- gcc/ChangeLog (revision 239901) +++ gcc/ChangeLog (working copy) @@ -1,10 +1,15 @@ +2016-08-31 Marc Glisse <marc.gli...@inria.fr> + + PR tree-optimization/73714 + * match.pd (a * (1 << b)): Revert change from 2016-05-23. + 2016-08-31 David Malcolm <dmalc...@redhat.com> * selftest.c: Move "namespace selftest {" to top of file, removing explicit "selftest::" qualifiers throughout. 2016-08-31 Marc Glisse <marc.gli...@inria.fr> * config/i386/avx512fintrin.h (__m512_u, __m512i_u, __m512d_u): New types. (_mm512_loadu_pd, _mm512_storeu_pd, _mm512_loadu_ps, Index: gcc/testsuite/gcc.dg/tree-ssa/pr73714.c =================================================================== --- gcc/testsuite/gcc.dg/tree-ssa/pr73714.c (revision 0) +++ gcc/testsuite/gcc.dg/tree-ssa/pr73714.c (revision 239902) @@ -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" } } */ Index: gcc/testsuite/ChangeLog =================================================================== --- gcc/testsuite/ChangeLog (revision 239901) +++ gcc/testsuite/ChangeLog (working copy) @@ -1,10 +1,15 @@ +2016-08-31 Marc Glisse <marc.gli...@inria.fr> + + PR tree-optimization/73714 + * gcc.dg/tree-ssa/pr73714.c: New test. + 2016-08-31 Jerry DeLisle <jvdeli...@gcc.gnu.org> PR libgfortran/77393 * gfortran.dg/fmt_f0_2.f90: New test. 2016-08-31 Marc Glisse <marc.gli...@inria.fr> * gcc.target/i386/pr59539-2.c: Adapt options. * gcc.target/i386/avx512f-vmovdqu32-1.c: Relax expected asm. Index: gcc/match.pd =================================================================== --- gcc/match.pd (revision 239901) +++ gcc/match.pd (working copy) @@ -461,22 +461,21 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (for ops (conj negate) (for cabss (CABS) (simplify (cabss (ops @0)) (cabss @0)))) /* Fold (a * (1 << b)) into (a << b) */ (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. */ (simplify (mult (rdiv@3 REAL_CST@0 @1) REAL_CST@2) (if (flag_associative_math && single_use (@3)) (with { tree tem = const_binop (MULT_EXPR, type, @0, @2); } (if (tem)