bpabi.h (TARGET_BPABI_CPP_BUILTINS): Define.

* config/arm/bpabi.h (TARGET_BPABI_CPP_BUILTINS): Define.
	(TARGET_OS_CPP_BUILTINS): Likewise.
	* config/arm/symbian.h (TARGET_OS_CPP_BUILTINS): Include
	TARGET_BPABI_CPP_BUILTINS.

	* g++.dg/abi/arm_rtti1.C: New test.

	* libsupc++/typeinfo: Honor __GXX_MERGED_TYPEINFO_NAMES if already
	defined.

[[Split portion of a mixed commit.]]

From-SVN: r87018.2
This commit is contained in:
Mark Mitchell 2004-09-03 00:43:59 +00:00 committed by Mark Mitchell
parent 085b68226c
commit 40a1c5cb5e
7 changed files with 59 additions and 8 deletions

View File

@ -1,3 +1,10 @@
2004-09-02 Mark Mitchell <mark@codesourcery.com>
* config/arm/bpabi.h (TARGET_BPABI_CPP_BUILTINS): Define.
(TARGET_OS_CPP_BUILTINS): Likewise.
* config/arm/symbian.h (TARGET_OS_CPP_BUILTINS): Include
TARGET_BPABI_CPP_BUILTINS.
2004-09-02 Roman Zippel <zippel@linux-m68k.org>
* combine.c (distribute_notes): Don't add REG_LABEL to jump insn.

View File

@ -84,3 +84,19 @@
#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdisf, l2f)
#endif
/* The BPABI requires that we always use an out-of-line implementation
of RTTI comparison, even if the target supports weak symbols,
because the same object file might be used on a target that does
not support merging symbols across DLL boundaries. This macro is
broken out separately so that it can be used within
TARGET_OS_CPP_BUILTINS in configuration files for systems based on
the BPABI. */
#define TARGET_BPABI_CPP_BUILTINS() \
do \
{ \
builtin_define ("__GXX_MERGED_TYPEINFO_NAMES=0"); \
} \
while (false)
#define TARGET_OS_CPP_BUILTINS() \
TARGET_BPABI_CPP_BUILTINS()

View File

@ -75,9 +75,12 @@
#define RENAME_LIBRARY(GCC_NAME, AEABI_NAME) /* empty */
/* Define the __symbian__ macro. */
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
do \
do \
{ \
/* Include the default BPABI stuff. */ \
TARGET_BPABI_CPP_BUILTINS (); \
builtin_define ("__symbian__"); \
} \
} \
while (false)

View File

@ -1,3 +1,7 @@
2004-09-02 Mark Mitchell <mark@codesourcery.com>
* g++.dg/abi/arm_rtti1.C: New test.
2004-09-02 Geoffrey Keating <geoffk@apple.com>
* gcc.dg/ppc-vector-memcpy.c: New.

View File

@ -0,0 +1,14 @@
// { dg-do compile { target arm*-*-eabi* arm*-*-symbianelf* } }
// { dg-options "-O2" }
// Check that, even when optimizing, we emit an out-of-line call to
// the type-info comparison function.
// { dg-final { scan-assembler _ZNKSt9type_infoeqERKS_ } }
#include <typeinfo>
extern const std::type_info& t1;
extern const std::type_info& t2;
bool f() {
return t1 == t2;
}

View File

@ -1,3 +1,8 @@
2004-09-02 Mark Mitchell <mark@codesourcery.com>
* libsupc++/typeinfo: Honor __GXX_MERGED_TYPEINFO_NAMES if already
defined.
2004-09-02 Benjamin Kosnik <bkoz@redhat.com>
Simon Richter <Simon.Richter@hogyros.de>

View File

@ -46,12 +46,14 @@ namespace __cxxabiv1
class __class_type_info;
} // namespace __cxxabiv1
#if !__GXX_WEAK__
// If weak symbols are not supported, typeinfo names are not merged.
#define __GXX_MERGED_TYPEINFO_NAMES 0
#else
// On platforms that support weak symbols, typeinfo names are merged.
#define __GXX_MERGED_TYPEINFO_NAMES 1
#ifndef __GXX_MERGED_TYPEINFO_NAMES
#if !__GXX_WEAK__
// If weak symbols are not supported, typeinfo names are not merged.
#define __GXX_MERGED_TYPEINFO_NAMES 0
#else
// On platforms that support weak symbols, typeinfo names are merged.
#define __GXX_MERGED_TYPEINFO_NAMES 1
#endif
#endif
namespace std