From 066c84df53d126335c412cd047c529007325ba9c Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Sun, 11 Mar 2001 01:46:24 +0000 Subject: [PATCH] tree.c (build_common_tree_nodes_2): Don't copy va_list_type_node if it's a record type. * tree.c (build_common_tree_nodes_2): Don't copy va_list_type_node if it's a record type. From-SVN: r40376 --- gcc/ChangeLog | 5 +++++ gcc/tree.c | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b6d072ab5e1..7fd1e0f7c4d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Sat Mar 10 22:42:05 2001 Alexandre Oliva + + * tree.c (build_common_tree_nodes_2): Don't copy va_list_type_node + if it's a record type. + Sat Mar 10 17:52:54 2001 Christopher Faylor * config/i386/cygwin.h: Make ../w32api a system directory. Reorganize diff --git a/gcc/tree.c b/gcc/tree.c index db286c859e2..ae7f005becd 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -4828,7 +4828,16 @@ build_common_tree_nodes_2 (short_double) { tree t; BUILD_VA_LIST_TYPE (t); - va_list_type_node = build_type_copy (t); + + /* Many back-ends define record types without seting TYPE_NAME. + If we copied the record type here, we'd keep the original + record type without a name. This breaks name mangling. So, + don't copy record types and let c_common_nodes_and_builtins() + declare the type to be __builtin_va_list. */ + if (TREE_CODE (t) != RECORD_TYPE) + t = build_type_copy (t); + + va_list_type_node = t; } V4SF_type_node = make_node (VECTOR_TYPE); -- 2.30.2