r288207 - Don't try to merge DLL attributes on redeclaration of invalid decl (PR31069)

David Majnemer via cfe-commits cfe-commits at lists.llvm.org
Tue Nov 29 16:37:33 PST 2016


On Tue, Nov 29, 2016 at 2:31 PM, Hans Wennborg via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> Author: hans
> Date: Tue Nov 29 16:31:00 2016
> New Revision: 288207
>
> URL: http://llvm.org/viewvc/llvm-project?rev=288207&view=rev
> Log:
> Don't try to merge DLL attributes on redeclaration of invalid decl
> (PR31069)
>
> Modified:
>     cfe/trunk/lib/Sema/SemaDecl.cpp
>     cfe/trunk/test/Sema/dllimport.c
>
> Modified: cfe/trunk/lib/Sema/SemaDecl.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/
> SemaDecl.cpp?rev=288207&r1=288206&r2=288207&view=diff
> ============================================================
> ==================
> --- cfe/trunk/lib/Sema/SemaDecl.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaDecl.cpp Tue Nov 29 16:31:00 2016
> @@ -5651,6 +5651,9 @@ static void checkDLLAttributeRedeclarati
>                                             NamedDecl *NewDecl,
>                                             bool IsSpecialization,
>                                             bool IsDefinition) {
> +  if(OldDecl->isInvalidDecl())
> +    return;
> +
>

Formatting looks weird here.


>    if (TemplateDecl *OldTD = dyn_cast<TemplateDecl>(OldDecl)) {
>      OldDecl = OldTD->getTemplatedDecl();
>      if (!IsSpecialization)
>
> Modified: cfe/trunk/test/Sema/dllimport.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/
> dllimport.c?rev=288207&r1=288206&r2=288207&view=diff
> ============================================================
> ==================
> --- cfe/trunk/test/Sema/dllimport.c (original)
> +++ cfe/trunk/test/Sema/dllimport.c Tue Nov 29 16:31:00 2016
> @@ -210,6 +210,10 @@ __declspec(dllimport) void redecl6();
>                        void redecl7();
>  __declspec(dllimport) inline void redecl7() {}
>
> +// PR31069: Don't crash trying to merge attributes for redeclaration of
> invalid decl.
> +void __declspec(dllimport) redecl8(unknowntype X); //
> expected-error{{unknown type name 'unknowntype'}}
> +void redecl8(unknowntype X) { } // expected-error{{unknown type name
> 'unknowntype'}}
> +
>  // External linkage is required.
>  __declspec(dllimport) static int staticFunc(); //
> expected-error{{'staticFunc' must have external linkage when declared
> 'dllimport'}}
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20161129/eb49c420/attachment.html>


More information about the cfe-commits mailing list