diff options
author | yxj-github-437 <2457369732@qq.com> | 2025-01-16 08:36:15 +0800 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2025-01-24 11:54:34 -0500 |
commit | 3469d0f6eaa6251882364ba304a3f67327f46a84 (patch) | |
tree | a4de9a370ecc9b43b59b67585420500ab09eeea6 /gcc/config/aarch64 | |
parent | 4d18acf8023ba0495007aa7a6f36d5509a51760b (diff) | |
download | gcc-3469d0f6eaa6251882364ba304a3f67327f46a84.zip gcc-3469d0f6eaa6251882364ba304a3f67327f46a84.tar.gz gcc-3469d0f6eaa6251882364ba304a3f67327f46a84.tar.bz2 |
c++/modules: Fix linkage checks for exported using-decls
This patch attempts to fix an error when build module std. The reason for
the error is __builtin_va_list (aka struct __va_list) has internal linkage.
so mark this builtin type as TREE_PUBLIC to make struct __va_list has
external linkage.
g++ -fmodules -std=c++23 -fsearch-include-path bits/std.cc -c
std.cc:3642:14:error: exporting ‘typedef __gnuc_va_list va_list’ that does not have external linkage
3642 | using std::va_list;
| ^~~~~~~
<built-in>: note: ‘struct __va_list’ declared here with internal linkage
gcc/ChangeLog:
* config/aarch64/aarch64.cc (aarch64_build_builtin_va_list): Mark
__builtin_va_list as TREE_PUBLIC.
* config/arm/arm.cc (arm_build_builtin_va_list): Likewise.
gcc/testsuite/ChangeLog:
* g++.dg/modules/builtin-8.C: New test.
Reviewed-by: Jason Merrill <jason@redhat.com>
Diffstat (limited to 'gcc/config/aarch64')
-rw-r--r-- | gcc/config/aarch64/aarch64.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index a1f5619..9c4e9bc 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -21584,6 +21584,7 @@ aarch64_build_builtin_va_list (void) get_identifier ("__va_list"), va_list_type); DECL_ARTIFICIAL (va_list_name) = 1; + TREE_PUBLIC (va_list_name) = 1; TYPE_NAME (va_list_type) = va_list_name; TYPE_STUB_DECL (va_list_type) = va_list_name; |