From 04de731462db7abf438903fa71b850ac046f1067 Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Tue, 23 May 2000 17:28:23 +0000 Subject: [PATCH] * c-decl.c (pushdecl): Invert sense of test for non-global types. From-SVN: r34107 --- gcc/ChangeLog | 4 ++++ gcc/c-decl.c | 2 +- gcc/testsuite/gcc.dg/ext-glob.c | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/ext-glob.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4b1b63d5679..76023f87633 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2000-05-23 Zack Weinberg + + * c-decl.c (pushdecl): Invert sense of test for non-global types. + Tue May 23 18:11:42 2000 J"orn Rennecke * reload1.c (reload_cse_move2add): Honor TRULY_NOOP_TRUNCATION. diff --git a/gcc/c-decl.c b/gcc/c-decl.c index d1393d4ba95..20c60895c18 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -2202,7 +2202,7 @@ pushdecl (x) { if (type == error_mark_node) break; - if (! TYPE_CONTEXT (type)) + if (TYPE_CONTEXT (type)) { warning_with_decl (x, "type of external `%s' is not global"); /* By exiting the loop early, we leave TYPE nonzero, diff --git a/gcc/testsuite/gcc.dg/ext-glob.c b/gcc/testsuite/gcc.dg/ext-glob.c new file mode 100644 index 00000000000..cc772f574a3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ext-glob.c @@ -0,0 +1,18 @@ +/* Test for the warning about external functions with non-global + types. In -traditional mode, these functions are globally visible + even if declared in an inner scope, so their return types should + also be visible. */ + +/* { dg-do compile } */ +/* { dg-options -traditional } */ + +int +main () +{ + struct foo { int a, b; }; + + extern struct foo *bar(); /* { dg-warning "type of external" "good warn" } */ + extern int baz(); /* { dg-bogus "type of external" "bad warn" } */ + + return 0; +} -- 2.30.2