Hi!

I've noticed that for {L,R}ROTATE_EXPR created during GENERIC folding
we end up with e.g. long int etc. second arguments, while for shifts
we truncate those to unsigned int.

Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux, ok for
trunk?

2017-10-13  Jakub Jelinek  <ja...@redhat.com>

        * c-gimplify.c (c_gimplify_expr): Handle [LR]ROTATE_EXPR like
        [LR]SHIFT_EXPR.

--- gcc/c-family/c-gimplify.c.jj        2017-05-22 10:49:37.000000000 +0200
+++ gcc/c-family/c-gimplify.c   2017-10-13 10:20:55.844841677 +0200
@@ -229,6 +229,8 @@ c_gimplify_expr (tree *expr_p, gimple_se
     {
     case LSHIFT_EXPR:
     case RSHIFT_EXPR:
+    case LROTATE_EXPR:
+    case RROTATE_EXPR:
       {
        /* We used to convert the right operand of a shift-expression
           to an integer_type_node in the FEs.  But it is unnecessary

        Jakub

Reply via email to