blob: fae8b7e766f6b53e6327572d35e7be0ad527f1ce [file] [log] [blame]
/* PR c/90737 - inconsistent address of a local converted to intptr_t
between callee and caller
{ dg-do compile }
{ dg-options "-O1 -Wall -Wreturn-local-addr -fdump-tree-optimized" } */
typedef __INTPTR_TYPE__ intptr_t;
const intptr_t&
return_addr_label_as_intref (void)
{
label:
if ((const intptr_t)&&label == 0)
__builtin_exit (1);
return *(const intptr_t*)&&label; // { dg-warning "\\\[-Wreturn-local-addr]" } */
}
const intptr_t&
return_addr_local_as_intref (void)
{
int a[1];
if ((const intptr_t)a == 0)
__builtin_exit (1);
return (const intptr_t&)a; // { dg-warning "\\\[-Wreturn-local-addr]" } */
}
/* Verify that the return value has been replaced with zero:
{ dg-final { scan-tree-dump-times "return 0;" 2 "optimized" } } */