https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93583
--- Comment #14 from Martin Liška <marxin at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #12)
> void *bar(const char*);
> static void *__attribute__((malloc,noinline)) foo(const char *p)
> {
> return bar (p);
> }
>
> int main(int argc, char **argv)
> {
> foo (argv[0]);
> return 0;
> }
>
>
> doesn't ICE on x86_64
In this testcase you don't have foo being transformed to void function:
gcc malloc.c -c -O2 -fdump-tree-optimized=/dev/stdout
;; Function foo (foo, funcdef_no=0, decl_uid=1913, cgraph_uid=1,
symbol_order=0) (executed once)
__attribute__((noinline, malloc))
foo (const char * p)
{
void * _4;
<bb 2> [local count: 1073741824]:
_4 = bar (p_2(D)); [tail call]
return _4;
}