This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch c-family]: Fix Bug 35330 - [4.8/4.9/5 regression] ICE with invalid pragma weak
- From: Marek Polacek <polacek at redhat dot com>
- To: Kai Tietz <ktietz70 at googlemail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 26 Feb 2015 19:53:01 +0100
- Subject: Re: [patch c-family]: Fix Bug 35330 - [4.8/4.9/5 regression] ICE with invalid pragma weak
- Authentication-results: sourceware.org; auth=none
- References: <CAEwic4YgnSikw_8vnPH4Z0_6jCniMMa+QKDT6xgbT=C5H37r0A at mail dot gmail dot com>
On Thu, Feb 26, 2015 at 07:28:02PM +0100, Kai Tietz wrote:
> Hi,
>
> This patch addresses the reported ICE about #pragma weak used on
> declarations not var or function.
>
> ChangeLog
>
> 2015-02-26 Kai Tietz <ktietz@redhat.com>
>
> * c-pragma.c (handle_pragma_weak): Do not try to creat
"create"
> weak/alias of declarations
> not being function, or variable declarations.
"functions"
> --- c-pragma.c (Revision 221019)
> +++ c-pragma.c (Arbeitskopie)
> @@ -392,6 +392,11 @@ handle_pragma_weak (cpp_reader * ARG_UNUSED (dummy
> decl = identifier_global_value (name);
> if (decl && DECL_P (decl))
> {
> + if (TREE_CODE (decl) != FUNCTION_DECL && TREE_CODE (decl) != VAR_DECL)
Use !VAR_OR_FUNCTION_DECL_P.
> + {
> + error ("weak declaration of %q+D not allowed", decl);
> + return;
> + }
I think that shouldn't be an error, merely a warning. Thus, use
GCC_BAD2 ("..., ignored", decl);
instead?
Also please add a testcase.
Marek