From: ktietz Date: Fri, 27 Feb 2015 10:44:43 +0000 (+0000) Subject: 2015-02-27 Kai Tietz X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=688a864ee9c6604024f35f053a4071cc9069557e;p=thirdparty%2Fgcc.git 2015-02-27 Kai Tietz PR c/35330 * c-pragma.c (handle_pragma_weak): Do not try to create weak/alias of declarations not being function, or variable declarations. 2015-02-27 Kai Tietz PR c/35330 * gcc.dg/weak/weak-17.c: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221053 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index ffa01c6337c5..ca5a412fad92 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,10 @@ +2015-02-27 Kai Tietz + + PR c/35330 + * c-pragma.c (handle_pragma_weak): Do not try to create + weak/alias of declarations not being function, or variable + declarations. + 2015-02-24 Thomas Schwinge PR libgomp/64625 diff --git a/gcc/c-family/c-pragma.c b/gcc/c-family/c-pragma.c index 718a310cf501..6894f0e7c3d1 100644 --- a/gcc/c-family/c-pragma.c +++ b/gcc/c-family/c-pragma.c @@ -392,6 +392,9 @@ handle_pragma_weak (cpp_reader * ARG_UNUSED (dummy)) decl = identifier_global_value (name); if (decl && DECL_P (decl)) { + if (!VAR_OR_FUNCTION_DECL_P (decl)) + GCC_BAD2 ("%<#pragma weak%> declaration of %q+D not allowed," + " ignored", decl); apply_pragma_weak (decl, value); if (value) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3200f413e6c0..5ca86b107f89 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-02-27 Kai Tietz + + PR c/35330 + * gcc.dg/weak/weak-17.c: New file. + 2015-02-27 Richard Biener PR lto/65193 diff --git a/gcc/testsuite/gcc.dg/weak/weak-17.c b/gcc/testsuite/gcc.dg/weak/weak-17.c new file mode 100644 index 000000000000..b4bda9bc0cba --- /dev/null +++ b/gcc/testsuite/gcc.dg/weak/weak-17.c @@ -0,0 +1,5 @@ +/* { dg-do compile } */ +/* { dg-require-weak "" } */ +#pragma weak int = foo + +/* { dg-warning "declaration of" "weak" { target *-*-* } 0 } */