From: Jakub Jelinek Date: Fri, 30 Aug 2019 11:26:42 +0000 (+0200) Subject: backport: re PR c/88568 ('dllimport' no longer implies 'extern' in C) X-Git-Tag: releases/gcc-7.5.0~275 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=190a7b0624139e1f89e4d9efe60288e37e1f2b61;p=thirdparty%2Fgcc.git backport: re PR c/88568 ('dllimport' no longer implies 'extern' in C) Backported from mainline 2019-01-10 Jakub Jelinek PR c/88568 * tree.c (handle_dll_attribute): Clear TREE_STATIC after setting DECL_EXTERNAL. * gcc.dg/pr88568.c: New test. From-SVN: r275086 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 22045257e812..7b77ef9622db 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,12 @@ 2019-08-30 Jakub Jelinek Backported from mainline + 2019-01-10 Jakub Jelinek + + PR c/88568 + * tree.c (handle_dll_attribute): Clear TREE_STATIC after setting + DECL_EXTERNAL. + 2019-01-05 Jakub Jelinek PR middle-end/82564 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5bdf54d36779..808983ea6a39 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2019-08-30 Jakub Jelinek Backported from mainline + 2019-01-10 Jakub Jelinek + + PR c/88568 + * gcc.dg/pr88568.c: New test. + 2019-01-05 Jakub Jelinek PR middle-end/82564 diff --git a/gcc/testsuite/gcc.dg/pr88568.c b/gcc/testsuite/gcc.dg/pr88568.c new file mode 100644 index 000000000000..65d57d7eb45c --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr88568.c @@ -0,0 +1,4 @@ +/* PR c/88568 */ +/* { dg-do compile } */ +/* { dg-require-dll "" } */ +__attribute__((dllimport)) struct S var; /* { dg-bogus "storage size of .var. isn.t known" } */ diff --git a/gcc/tree.c b/gcc/tree.c index d00753482646..f92ce9ebce80 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -6456,6 +6456,8 @@ handle_dll_attribute (tree * pnode, tree name, tree args, int flags, a function global scope, unless declared static. */ if (current_function_decl != NULL_TREE && !TREE_STATIC (node)) TREE_PUBLIC (node) = 1; + /* Clear TREE_STATIC because DECL_EXTERNAL is set. */ + TREE_STATIC (node) = 0; } if (*no_add_attrs == false)