https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79753
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Simplified testcase: int foo (void) { return 0; } void bar (int **p) { *p = (int *) (__UINTPTR_TYPE__) foo (); } Now, if foo returns int *, then the bndret is transformed during inlining into __chkp_none_bounds, but not when it is not a pointer.