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