Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gcc.dg/Wreturn-local-addr-5.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
line wrap: on
line source
/* PR c/71924 - missing -Wreturn-local-addr returning alloca result { dg-do compile } { dg-options "-O2 -Wall" } */ void sink (void*); void* loop_idx (int x) { char a[32]; /* { dg-message "declared here" } */ char *p = a; sink (a); int i; for (i = 0; i != 32; ++i) if (p[i] == x) break; p = i < 32 ? &p[i] : 0; return p; /* { dg-warning "may return address of local variable" } */ } void* loop_ptr (int i, int x) { char a[32]; /* { dg-message "declared here" } */ char *p; sink (a); /* The warning for the statement below would ideally be a "returns" because it definitely returns the address of a, but when both returns get merged into one we end up with a "may return". */ for (p = a; *p; ++p) if (*p == x) return p; /* { dg-warning "(returns|may return) address of local variable" "missing location" { xfail *-*-* } } */ /* { dg-warning "(returns|may return) address of local variable" "pr90735" { target *-*-* } 0 } */ return 0; }