public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug c/17205] New: Strange behaviour when function prototypes appear inside other functions @ 2004-08-27 6:14 anton at samba dot org 2004-08-27 6:16 ` [Bug c/17205] " pinskia at gcc dot gnu dot org ` (6 more replies) 0 siblings, 7 replies; 8+ messages in thread From: anton at samba dot org @ 2004-08-27 6:14 UTC (permalink / raw) To: gcc-bugs gcc version 3.5.0 20040827 (experimental) A 2.6 kernel compilation encountered a link failure. The following sequence shows how things fail if a function protoype appears inside another function: #define BROKE #ifndef BROKE static void foo(void); #endif int main() { #ifdef BROKE static void foo(void); #endif foo(); } static void foo(void) { printf("bar\n"); } define BROKE and foo disappears completely, undefine it and it works as expected. To be honest Im not even sure this is valid C. -- Summary: Strange behaviour when function prototypes appear inside other functions Product: gcc Version: 3.5.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: anton at samba dot org CC: gcc-bugs at gcc dot gnu dot org GCC target triplet: powerpc64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17205 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c/17205] Strange behaviour when function prototypes appear inside other functions 2004-08-27 6:14 [Bug c/17205] New: Strange behaviour when function prototypes appear inside other functions anton at samba dot org @ 2004-08-27 6:16 ` pinskia at gcc dot gnu dot org 2004-08-27 6:17 ` [Bug c/17205] [3.5 Regression] " pinskia at gcc dot gnu dot org ` (5 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: pinskia at gcc dot gnu dot org @ 2004-08-27 6:16 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From pinskia at gcc dot gnu dot org 2004-08-27 06:16 ------- This is not valid C. We should be warning or erroring out. -- What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed| |1 Last reconfirmed|0000-00-00 00:00:00 |2004-08-27 06:16:44 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17205 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c/17205] [3.5 Regression] Strange behaviour when function prototypes appear inside other functions 2004-08-27 6:14 [Bug c/17205] New: Strange behaviour when function prototypes appear inside other functions anton at samba dot org 2004-08-27 6:16 ` [Bug c/17205] " pinskia at gcc dot gnu dot org @ 2004-08-27 6:17 ` pinskia at gcc dot gnu dot org 2004-08-27 9:44 ` jsm at polyomino dot org dot uk ` (4 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: pinskia at gcc dot gnu dot org @ 2004-08-27 6:17 UTC (permalink / raw) To: gcc-bugs -- What |Removed |Added ---------------------------------------------------------------------------- GCC target triplet|powerpc64-unknown-linux-gnu | Keywords| |diagnostic, wrong-code Summary|Strange behaviour when |[3.5 Regression] Strange |function prototypes appear |behaviour when function |inside other functions |prototypes appear inside | |other functions Target Milestone|--- |3.5.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17205 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c/17205] [3.5 Regression] Strange behaviour when function prototypes appear inside other functions 2004-08-27 6:14 [Bug c/17205] New: Strange behaviour when function prototypes appear inside other functions anton at samba dot org 2004-08-27 6:16 ` [Bug c/17205] " pinskia at gcc dot gnu dot org 2004-08-27 6:17 ` [Bug c/17205] [3.5 Regression] " pinskia at gcc dot gnu dot org @ 2004-08-27 9:44 ` jsm at polyomino dot org dot uk 2004-08-27 13:51 ` geoffk at gcc dot gnu dot org ` (3 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: jsm at polyomino dot org dot uk @ 2004-08-27 9:44 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From jsm at polyomino dot org dot uk 2004-08-27 09:44 ------- Subject: Re: Strange behaviour when function prototypes appear inside other functions On Fri, 27 Aug 2004, pinskia at gcc dot gnu dot org wrote: > This is not valid C. > We should be warning or erroring out. To be precise, it's compile-time undefined for block-scope function declarations to have any storage-class specifier other than extern. I don't object to removing this undocumented extension, but this bug report shows it does have users. The problem appears with a compiler from before my patch for bug 13801 went in, so it is not a problem caused by that patch. However, an appropriate fix if we keep the extension would probably be along the lines I suggested for a possible future refinement to that patch: add an internal scope between the external scope and the file scope, which stores hidden declarations of objects and functions with internal linkage used for type checking the same way as the external scope, then merge the handling of static function declarations at block scope with the handling of external and file scope declarations. (So everything with external linkage goes in the external scope, in addition to its proper scope, and everything with internal linkage in a given translation unit goes in the internal scope, in addition to its proper scope, static function declarations at block scope are defined as having internal linkage, and the internal scope, just like the external scope, accumulates composite type information from all declarations, while the file scope and scopes below that have the type information from visible declarations only.) I might look at doing this, but not immediately given the problem isn't caused by my patch. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17205 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c/17205] [3.5 Regression] Strange behaviour when function prototypes appear inside other functions 2004-08-27 6:14 [Bug c/17205] New: Strange behaviour when function prototypes appear inside other functions anton at samba dot org ` (2 preceding siblings ...) 2004-08-27 9:44 ` jsm at polyomino dot org dot uk @ 2004-08-27 13:51 ` geoffk at gcc dot gnu dot org 2004-08-30 22:19 ` cvs-commit at gcc dot gnu dot org ` (2 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: geoffk at gcc dot gnu dot org @ 2004-08-27 13:51 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From geoffk at gcc dot gnu dot org 2004-08-27 13:51 ------- This is probably related to 12738. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17205 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c/17205] [3.5 Regression] Strange behaviour when function prototypes appear inside other functions 2004-08-27 6:14 [Bug c/17205] New: Strange behaviour when function prototypes appear inside other functions anton at samba dot org ` (3 preceding siblings ...) 2004-08-27 13:51 ` geoffk at gcc dot gnu dot org @ 2004-08-30 22:19 ` cvs-commit at gcc dot gnu dot org 2004-08-30 22:23 ` geoffk at gcc dot gnu dot org 2004-09-01 22:12 ` cvs-commit at gcc dot gnu dot org 6 siblings, 0 replies; 8+ messages in thread From: cvs-commit at gcc dot gnu dot org @ 2004-08-30 22:19 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From cvs-commit at gcc dot gnu dot org 2004-08-30 22:19 ------- Subject: Bug 17205 CVSROOT: /cvs/gcc Module name: gcc Changes by: geoffk@gcc.gnu.org 2004-08-30 22:19:24 Modified files: gcc : ChangeLog c-decl.c gcc/testsuite : ChangeLog gcc/testsuite/gcc.c-torture/compile: 920625-2.c gcc/testsuite/gcc.c-torture/execute: 20010605-1.c nest-stdar-1.c gcc/testsuite/gcc.dg: 20011130-1.c 20021014-1.c 20030331-2.c Added files: gcc/testsuite/gcc.dg: funcdef-storage-1.c Log message: 2004-08-30 Geoffrey Keating <geoffk@apple.com> PR 12738 PR 17205 Radar 3460526 Radar 3775729 * c-decl.c (grokdeclarator): Produce error for 'static' on local function declaration. Index: testsuite/ChangeLog 2004-08-30 Geoffrey Keating <geoffk@apple.com> * gcc.dg/funcdef-storage-1.c: New. * gcc.c-torture/compile/920625-2.c: Don't use 'static' to declare an extern function in local scope. * gcc.c-torture/execute/20010605-1.c: Don't use 'static inline' to declare an 'auto inline' function in local scope. * gcc.dg/20011130-1.c: Likewise. * gcc.c-torture/execute/nest-stdar-1.c: Don't use 'static' to declare an 'auto' function in local scope. * gcc.dg/20021014-1.c: Likewise. * gcc.dg/20030331-2.c: Likewise. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.5161&r2=2.5162 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/c-decl.c.diff?cvsroot=gcc&r1=1.565&r2=1.566 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.4211&r2=1.4212 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/compile/920625-2.c.diff?cvsroot=gcc&r1=1.2&r2=1.3 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/execute/20010605-1.c.diff?cvsroot=gcc&r1=1.2&r2=1.3 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/execute/nest-stdar-1.c.diff?cvsroot=gcc&r1=1.2&r2=1.3 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/funcdef-storage-1.c.diff?cvsroot=gcc&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/20011130-1.c.diff?cvsroot=gcc&r1=1.1&r2=1.2 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/20021014-1.c.diff?cvsroot=gcc&r1=1.10&r2=1.11 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/20030331-2.c.diff?cvsroot=gcc&r1=1.3&r2=1.4 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17205 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c/17205] [3.5 Regression] Strange behaviour when function prototypes appear inside other functions 2004-08-27 6:14 [Bug c/17205] New: Strange behaviour when function prototypes appear inside other functions anton at samba dot org ` (4 preceding siblings ...) 2004-08-30 22:19 ` cvs-commit at gcc dot gnu dot org @ 2004-08-30 22:23 ` geoffk at gcc dot gnu dot org 2004-09-01 22:12 ` cvs-commit at gcc dot gnu dot org 6 siblings, 0 replies; 8+ messages in thread From: geoffk at gcc dot gnu dot org @ 2004-08-30 22:23 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From geoffk at gcc dot gnu dot org 2004-08-30 22:23 ------- Fixed, by declaring this code invalid and producing an error message on it. The kernel will need to be changed to Not Do That, by moving the prototype for the 'static' function to file scope. -- What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17205 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug c/17205] [3.5 Regression] Strange behaviour when function prototypes appear inside other functions 2004-08-27 6:14 [Bug c/17205] New: Strange behaviour when function prototypes appear inside other functions anton at samba dot org ` (5 preceding siblings ...) 2004-08-30 22:23 ` geoffk at gcc dot gnu dot org @ 2004-09-01 22:12 ` cvs-commit at gcc dot gnu dot org 6 siblings, 0 replies; 8+ messages in thread From: cvs-commit at gcc dot gnu dot org @ 2004-09-01 22:12 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From cvs-commit at gcc dot gnu dot org 2004-09-01 22:12 ------- Subject: Bug 17205 CVSROOT: /cvs/gcc Module name: gcc Branch: apple-ppc-branch Changes by: geoffk@gcc.gnu.org 2004-09-01 22:12:16 Modified files: gcc : c-decl.c gcc/testsuite/gcc.c-torture/compile: 920625-2.c gcc/testsuite/gcc.c-torture/execute: 20010605-1.c nest-stdar-1.c gcc/testsuite/gcc.dg: 20011130-1.c 20021014-1.c 20030331-2.c Added files: gcc/testsuite/gcc.dg: funcdef-storage-1.c Log message: PR 12738 PR 17205 Radar 3460526 Radar 3775729 * c-decl.c (grokdeclarator): Produce error for 'static' on local function declaration. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/c-decl.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.334.2.87.2.19&r2=1.334.2.87.2.20 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/compile/920625-2.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.2&r2=1.2.116.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/execute/20010605-1.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.2&r2=1.2.92.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/execute/nest-stdar-1.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.2&r2=1.2.116.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/funcdef-storage-1.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=NONE&r2=1.2.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/20011130-1.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1&r2=1.1.88.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/20021014-1.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.1.8.9&r2=1.1.8.9.2.1 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/20030331-2.c.diff?cvsroot=gcc&only_with_tag=apple-ppc-branch&r1=1.2.4.1.8.1&r2=1.2.4.1.8.2 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17205 ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2004-09-01 22:12 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2004-08-27 6:14 [Bug c/17205] New: Strange behaviour when function prototypes appear inside other functions anton at samba dot org 2004-08-27 6:16 ` [Bug c/17205] " pinskia at gcc dot gnu dot org 2004-08-27 6:17 ` [Bug c/17205] [3.5 Regression] " pinskia at gcc dot gnu dot org 2004-08-27 9:44 ` jsm at polyomino dot org dot uk 2004-08-27 13:51 ` geoffk at gcc dot gnu dot org 2004-08-30 22:19 ` cvs-commit at gcc dot gnu dot org 2004-08-30 22:23 ` geoffk at gcc dot gnu dot org 2004-09-01 22:12 ` cvs-commit at gcc dot gnu dot org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).