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:
parent
085b68226c
commit
40a1c5cb5e
@ -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.
|
||||
|
@ -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()
|
||||
|
@ -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)
|
||||
|
@ -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.
|
||||
|
14
gcc/testsuite/g++.dg/abi/arm_rtti1.C
Normal file
14
gcc/testsuite/g++.dg/abi/arm_rtti1.C
Normal 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;
|
||||
}
|
@ -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>
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user