https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117456
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2024-11-05 Ever confirmed|0 |1 Summary|ICE: in expand_expr_real_2, |ICE: in expand_expr_real_2, |at expr.cc:10567 with |at expr.cc:10567 with |__builtin_stdc_rotate_left( |__builtin_stdc_rotate_left( |) on bitfield or _BitInt() |) on bitfield or _BitInt() | |of non-mode size CC| |jakub at gcc dot gnu.org --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed. The middle-end does not know how to handle [LR]ROTATE_EXPR for !type_has_mode_precision_p types. We have a check in simplify_rotate about this already: /* Only create rotates in complete modes. Other cases are not expanded properly. */ if (!INTEGRAL_TYPE_P (rtype) || !type_has_mode_precision_p (rtype)) return false; I wonder if we should have a check in tree-cfg.cc in verify_gimple for this too to catch it before expand.