c++: Fix static local vars in extern "C".
authorJason Merrill <jason@redhat.com>
Thu, 13 Feb 2020 15:42:04 +0000 (16:42 +0100)
committerJason Merrill <jason@redhat.com>
Thu, 13 Feb 2020 21:29:25 +0000 (22:29 +0100)
commitabc79c6498a99e9c39e6056f432796c6dde3a887
tree1093a665d33c96e5f27b37b70894361574830d42
parent613c932f5e5c0cc2e4b88e21d9870fa7b1a6ce5d
c++: Fix static local vars in extern "C".

Since my patch for PR 91476 moved visibility determination sooner, a local
static in a vague linkage function now gets TREE_PUBLIC set before
retrofit_lang_decl calls set_decl_linkage, which was making decl_linkage
think that it has external linkage.  It still has no linkage according to
the standard.

gcc/cp/ChangeLog
2020-02-13  Jason Merrill  <jason@redhat.com>

PR c++/93643
PR c++/91476
* tree.c (decl_linkage): Always lk_none for locals.
gcc/cp/ChangeLog
gcc/cp/tree.c
gcc/testsuite/g++.dg/lookup/extern-c-static1.C [new file with mode: 0644]