[Bug c/122188] ICE with __builtin_ctzg and ?:
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Oct 7 07:31:42 GMT 2025
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122188
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|ICE with __builtin_ctzg in |ICE with __builtin_ctzg and
|some cases |?:
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
```
if (fndecl
&& fndecl_built_in_p (fndecl, BUILT_IN_CLZG, BUILT_IN_CTZG)
&& call_expr_nargs (*expr_p) == 2
&& TREE_CODE (CALL_EXPR_ARG (*expr_p, 1)) != INTEGER_CST)
{
tree a = save_expr (CALL_EXPR_ARG (*expr_p, 0));
tree c = build_call_expr_loc (EXPR_LOCATION (*expr_p),
fndecl, 1, a);
*expr_p = build3_loc (EXPR_LOCATION (*expr_p), COND_EXPR,
integer_type_node,
build2_loc (EXPR_LOCATION (*expr_p),
NE_EXPR, boolean_type_node, a,
build_zero_cst (TREE_TYPE (a))),
c, CALL_EXPR_ARG (*expr_p, 1));
return GS_OK;
}
```
And then we go and gimplify this and things go down hill it seems.
Without the const things go ok and we gimplify things just ok.
More information about the Gcc-bugs
mailing list