Skip to content

Commit

Permalink
2014-04-22 Marc Glisse <marc.glisse@inria.fr>
Browse files Browse the repository at this point in the history
	PR libstdc++/43622
gcc/c-family/
	* c-common.c (registered_builtin_types): Make non-static.
	* c-common.h (registered_builtin_types): Declare.
gcc/cp/
	* rtti.c (emit_support_tinfo_1): New function, extracted from
	emit_support_tinfos.
	(emit_support_tinfos): Call it and iterate on registered_builtin_types.
libstdc++-v3/
	* config/abi/pre/gnu.ver (CXXABI_1.3.9): New version, new symbols.
	* config/abi/pre/gnu-versioned-namespace.ver: New symbols.
	* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise.




git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209652 138bc75d-0d04-0410-961f-82ee72b054a4
  • Loading branch information
glisse committed Apr 22, 2014
1 parent 9be0994 commit c191755
Show file tree
Hide file tree
Showing 9 changed files with 97 additions and 41 deletions.
6 changes: 6 additions & 0 deletions gcc/c-family/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
2014-04-22 Marc Glisse <marc.glisse@inria.fr>

PR libstdc++/43622
* c-common.c (registered_builtin_types): Make non-static.
* c-common.h (registered_builtin_types): Declare.

2014-04-14 Richard Biener <rguenther@suse.de>
Marc Glisse <marc.glisse@inria.fr>

Expand Down
2 changes: 1 addition & 1 deletion gcc/c-family/c-common.c
Original file line number Diff line number Diff line change
Expand Up @@ -3469,7 +3469,7 @@ c_common_fixed_point_type_for_size (unsigned int ibit, unsigned int fbit,

/* Used for communication between c_common_type_for_mode and
c_register_builtin_type. */
static GTY(()) tree registered_builtin_types;
tree registered_builtin_types;

/* Return a data type that has machine mode MODE.
If the mode is an integer,
Expand Down
4 changes: 4 additions & 0 deletions gcc/c-family/c-common.h
Original file line number Diff line number Diff line change
Expand Up @@ -1013,6 +1013,10 @@ extern vec<tree, va_gc> *make_tree_vector_single (tree);
extern vec<tree, va_gc> *make_tree_vector_from_list (tree);
extern vec<tree, va_gc> *make_tree_vector_copy (const vec<tree, va_gc> *);

/* Used for communication between c_common_type_for_mode and
c_register_builtin_type. */
extern GTY(()) tree registered_builtin_types;

/* In c-gimplify.c */
extern void c_genericize (tree);
extern int c_gimplify_expr (tree *, gimple_seq *, gimple_seq *);
Expand Down
7 changes: 7 additions & 0 deletions gcc/cp/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
2014-04-22 Marc Glisse <marc.glisse@inria.fr>

PR libstdc++/43622
* rtti.c (emit_support_tinfo_1): New function, extracted from
emit_support_tinfos.
(emit_support_tinfos): Call it and iterate on registered_builtin_types.

2014-04-22 Jakub Jelinek <jakub@redhat.com>

PR c/59073
Expand Down
77 changes: 41 additions & 36 deletions gcc/cp/rtti.c
Original file line number Diff line number Diff line change
Expand Up @@ -1465,6 +1465,44 @@ create_tinfo_types (void)
pop_abi_namespace ();
}

/* Helper for emit_support_tinfos. Emits the type_info descriptor of
a single type. */

void
emit_support_tinfo_1 (tree bltn)
{
tree types[3];

if (bltn == NULL_TREE)
return;
types[0] = bltn;
types[1] = build_pointer_type (bltn);
types[2] = build_pointer_type (cp_build_qualified_type (bltn,
TYPE_QUAL_CONST));

for (int i = 0; i < 3; ++i)
{
tree tinfo = get_tinfo_decl (types[i]);
TREE_USED (tinfo) = 1;
mark_needed (tinfo);
/* The C++ ABI requires that these objects be COMDAT. But,
On systems without weak symbols, initialized COMDAT
objects are emitted with internal linkage. (See
comdat_linkage for details.) Since we want these objects
to have external linkage so that copies do not have to be
emitted in code outside the runtime library, we make them
non-COMDAT here.
It might also not be necessary to follow this detail of the
ABI. */
if (!flag_weak || ! targetm.cxx.library_rtti_comdat ())
{
gcc_assert (TREE_PUBLIC (tinfo) && !DECL_COMDAT (tinfo));
DECL_INTERFACE_KNOWN (tinfo) = 1;
}
}
}

/* Emit the type_info descriptors which are guaranteed to be in the runtime
support. Generating them here guarantees consistency with the other
structures. We use the following heuristic to determine when the runtime
Expand Down Expand Up @@ -1507,42 +1545,9 @@ emit_support_tinfos (void)
return;
doing_runtime = 1;
for (ix = 0; fundamentals[ix]; ix++)
{
tree bltn = *fundamentals[ix];
tree types[3];
int i;

if (bltn == NULL_TREE)
continue;
types[0] = bltn;
types[1] = build_pointer_type (bltn);
types[2] = build_pointer_type (cp_build_qualified_type (bltn,
TYPE_QUAL_CONST));

for (i = 0; i < 3; ++i)
{
tree tinfo;

tinfo = get_tinfo_decl (types[i]);
TREE_USED (tinfo) = 1;
mark_needed (tinfo);
/* The C++ ABI requires that these objects be COMDAT. But,
On systems without weak symbols, initialized COMDAT
objects are emitted with internal linkage. (See
comdat_linkage for details.) Since we want these objects
to have external linkage so that copies do not have to be
emitted in code outside the runtime library, we make them
non-COMDAT here.
It might also not be necessary to follow this detail of the
ABI. */
if (!flag_weak || ! targetm.cxx.library_rtti_comdat ())
{
gcc_assert (TREE_PUBLIC (tinfo) && !DECL_COMDAT (tinfo));
DECL_INTERFACE_KNOWN (tinfo) = 1;
}
}
}
emit_support_tinfo_1 (*fundamentals[ix]);
for (tree t = registered_builtin_types; t; t = TREE_CHAIN (t))
emit_support_tinfo_1 (TREE_VALUE (t));
}

/* Finish a type info decl. DECL_PTR is a pointer to an unemitted
Expand Down
7 changes: 7 additions & 0 deletions libstdc++-v3/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
2014-04-22 Marc Glisse <marc.glisse@inria.fr>

PR libstdc++/43622
* config/abi/pre/gnu.ver (CXXABI_1.3.9): New version, new symbols.
* config/abi/pre/gnu-versioned-namespace.ver: New symbols.
* config/abi/post/x86_64-linux-gnu/baseline_symbols.txt: Likewise.

2014-04-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>

* configure.host: Remove solaris2.9 handling.
Expand Down
13 changes: 13 additions & 0 deletions libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2520,6 +2520,7 @@ OBJECT:0:CXXABI_1.3.5
OBJECT:0:CXXABI_1.3.6
OBJECT:0:CXXABI_1.3.7
OBJECT:0:CXXABI_1.3.8
OBJECT:0:CXXABI_1.3.9
OBJECT:0:CXXABI_TM_1
OBJECT:0:GLIBCXX_3.4
OBJECT:0:GLIBCXX_3.4.1
Expand Down Expand Up @@ -2624,6 +2625,7 @@ OBJECT:16:_ZTIc@@CXXABI_1.3
OBJECT:16:_ZTId@@CXXABI_1.3
OBJECT:16:_ZTIe@@CXXABI_1.3
OBJECT:16:_ZTIf@@CXXABI_1.3
OBJECT:16:_ZTIg@@CXXABI_1.3.9
OBJECT:16:_ZTIh@@CXXABI_1.3
OBJECT:16:_ZTIi@@CXXABI_1.3
OBJECT:16:_ZTIj@@CXXABI_1.3
Expand Down Expand Up @@ -3124,11 +3126,14 @@ OBJECT:2:_ZTSc@@CXXABI_1.3
OBJECT:2:_ZTSd@@CXXABI_1.3
OBJECT:2:_ZTSe@@CXXABI_1.3
OBJECT:2:_ZTSf@@CXXABI_1.3
OBJECT:2:_ZTSg@@CXXABI_1.3.9
OBJECT:2:_ZTSh@@CXXABI_1.3
OBJECT:2:_ZTSi@@CXXABI_1.3
OBJECT:2:_ZTSj@@CXXABI_1.3
OBJECT:2:_ZTSl@@CXXABI_1.3
OBJECT:2:_ZTSm@@CXXABI_1.3
OBJECT:2:_ZTSn@@CXXABI_1.3.9
OBJECT:2:_ZTSo@@CXXABI_1.3.9
OBJECT:2:_ZTSs@@CXXABI_1.3
OBJECT:2:_ZTSt@@CXXABI_1.3
OBJECT:2:_ZTSv@@CXXABI_1.3
Expand All @@ -3155,6 +3160,7 @@ OBJECT:32:_ZTIPKc@@CXXABI_1.3
OBJECT:32:_ZTIPKd@@CXXABI_1.3
OBJECT:32:_ZTIPKe@@CXXABI_1.3
OBJECT:32:_ZTIPKf@@CXXABI_1.3
OBJECT:32:_ZTIPKg@@CXXABI_1.3.9
OBJECT:32:_ZTIPKh@@CXXABI_1.3
OBJECT:32:_ZTIPKi@@CXXABI_1.3
OBJECT:32:_ZTIPKj@@CXXABI_1.3
Expand All @@ -3174,6 +3180,7 @@ OBJECT:32:_ZTIPc@@CXXABI_1.3
OBJECT:32:_ZTIPd@@CXXABI_1.3
OBJECT:32:_ZTIPe@@CXXABI_1.3
OBJECT:32:_ZTIPf@@CXXABI_1.3
OBJECT:32:_ZTIPg@@CXXABI_1.3.9
OBJECT:32:_ZTIPh@@CXXABI_1.3
OBJECT:32:_ZTIPi@@CXXABI_1.3
OBJECT:32:_ZTIPj@@CXXABI_1.3
Expand Down Expand Up @@ -3228,11 +3235,14 @@ OBJECT:3:_ZTSPc@@CXXABI_1.3
OBJECT:3:_ZTSPd@@CXXABI_1.3
OBJECT:3:_ZTSPe@@CXXABI_1.3
OBJECT:3:_ZTSPf@@CXXABI_1.3
OBJECT:3:_ZTSPg@@CXXABI_1.3.9
OBJECT:3:_ZTSPh@@CXXABI_1.3
OBJECT:3:_ZTSPi@@CXXABI_1.3
OBJECT:3:_ZTSPj@@CXXABI_1.3
OBJECT:3:_ZTSPl@@CXXABI_1.3
OBJECT:3:_ZTSPm@@CXXABI_1.3
OBJECT:3:_ZTSPn@@CXXABI_1.3.9
OBJECT:3:_ZTSPo@@CXXABI_1.3.9
OBJECT:3:_ZTSPs@@CXXABI_1.3
OBJECT:3:_ZTSPt@@CXXABI_1.3
OBJECT:3:_ZTSPv@@CXXABI_1.3
Expand Down Expand Up @@ -3555,11 +3565,14 @@ OBJECT:4:_ZTSPKc@@CXXABI_1.3
OBJECT:4:_ZTSPKd@@CXXABI_1.3
OBJECT:4:_ZTSPKe@@CXXABI_1.3
OBJECT:4:_ZTSPKf@@CXXABI_1.3
OBJECT:4:_ZTSPKg@@CXXABI_1.3.9
OBJECT:4:_ZTSPKh@@CXXABI_1.3
OBJECT:4:_ZTSPKi@@CXXABI_1.3
OBJECT:4:_ZTSPKj@@CXXABI_1.3
OBJECT:4:_ZTSPKl@@CXXABI_1.3
OBJECT:4:_ZTSPKm@@CXXABI_1.3
OBJECT:4:_ZTSPKn@@CXXABI_1.3.9
OBJECT:4:_ZTSPKo@@CXXABI_1.3.9
OBJECT:4:_ZTSPKs@@CXXABI_1.3
OBJECT:4:_ZTSPKt@@CXXABI_1.3
OBJECT:4:_ZTSPKv@@CXXABI_1.3
Expand Down
8 changes: 4 additions & 4 deletions libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
Original file line number Diff line number Diff line change
Expand Up @@ -321,10 +321,10 @@ CXXABI_2.0 {
_ZTIPDn;
_ZTIPKDn;

# typeinfo for __int128 and unsigned __int128
_ZTI[no];
_ZTIP[no];
_ZTIPK[no];
# typeinfo for __int128, unsigned __int128 and __float128
_ZTI[gno];
_ZTIP[gno];
_ZTIPK[gno];

# virtual table
_ZTVN10__cxxabiv117__array_type_infoE;
Expand Down
14 changes: 14 additions & 0 deletions libstdc++-v3/config/abi/pre/gnu.ver
Original file line number Diff line number Diff line change
Expand Up @@ -1584,6 +1584,20 @@ CXXABI_1.3.8 {

} CXXABI_1.3.7;

CXXABI_1.3.9 {

# typeinfo name for __int128, unsigned __int128 and __float128
_ZTS[gno];
_ZTSP[gno];
_ZTSPK[gno];

# typeinfo for __float128
_ZTIg;
_ZTIPg;
_ZTIPKg;

} CXXABI_1.3.8;

# Symbols in the support library (libsupc++) supporting transactional memory.
CXXABI_TM_1 {

Expand Down

0 comments on commit c191755

Please sign in to comment.