https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117492
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2024-11-08
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
Component|c |middle-end
Assignee|unassigned at gcc dot gnu.org |pinskia at gcc dot
gnu.org
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
/* Two consecutive rotates adding up to the some integer
multiple of the precision of the type can be ignored. */
if (code == RROTATE_EXPR && TREE_CODE (arg1) == INTEGER_CST
&& TREE_CODE (arg0) == RROTATE_EXPR
&& TREE_CODE (TREE_OPERAND (arg0, 1)) == INTEGER_CST
&& wi::umod_trunc (wi::to_wide (arg1)
+ wi::to_wide (TREE_OPERAND (arg0, 1)),
prec) == 0)
return fold_convert_loc (loc, type, TREE_OPERAND (arg0, 0));
This is all old code too.
I suspect it should be using wi::to_widest instead.
Let me try that.
Plus I suspect this should be moved to match too.