https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113406
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2024-01-15 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 Component|tree-optimization |middle-end --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed, scrub is changing the IR to: ``` void * .strub.watermark.2; _BitInt(146) retval.1; <bb 2> [local count: 10000]: __builtin___strub_enter (&.strub.watermark.2); retval.1_3 = foo.strub.0 (&.strub.watermark.2); __builtin___strub_leave (&.strub.watermark.2); .strub.watermark.2 ={v} {CLOBBER}; return retval.1_3; ``` Which looks fine but bitintlower is not expecting a gimple ssa of _BitInt(N) in the GIMPLE_RETURN . Here is a reduced _GIMPLE testcase without the need for -fstrub=internal : ``` _BitInt(146) foo1(void); _BitInt(146) __GIMPLE() foo(void) { _BitInt(146) t; t = foo1(); return t; } ```