diff options
author | Kai Tietz <ktietz@redhat.com> | 2012-12-28 22:49:59 +0100 |
---|---|---|
committer | Kai Tietz <ktietz@gcc.gnu.org> | 2012-12-28 22:49:59 +0100 |
commit | 1c773c7a2ecd36d0d58a285b535dc4fddcb1b370 (patch) | |
tree | 968e91501ffdcc82581e75d7cf5355921f4100cf | |
parent | 5fabac29f7201639991f102e8354b3bb85ac2bc9 (diff) | |
download | gcc-1c773c7a2ecd36d0d58a285b535dc4fddcb1b370.zip gcc-1c773c7a2ecd36d0d58a285b535dc4fddcb1b370.tar.gz gcc-1c773c7a2ecd36d0d58a285b535dc4fddcb1b370.tar.bz2 |
rtti.c (LONGPTR_T): New helper-macro.
* rtti.c (LONGPTR_T): New helper-macro.
(get_pseudo_ti_init): Initialize offset_type by LONGPTR_T
type instead of 'long' type.
(create_tinfo_types): Use for offset/flags field LONGPTR_T
type instead of 'long' type.
From-SVN: r194745
-rw-r--r-- | gcc/cp/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/cp/rtti.c | 10 |
2 files changed, 16 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f6abef6..a57051e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,11 @@ +2012-12-28 Kai Tietz <ktietz@redhat.com> + + * rtti.c (LONGPTR_T): New helper-macro. + (get_pseudo_ti_init): Initialize offset_type by LONGPTR_T + type instead of 'long' type. + (create_tinfo_types): Use for offset/flags field LONGPTR_T + type instead of 'long' type. + 2012-12-19 Jason Merrill <jason@redhat.com> PR c++/55724 diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c index b13ec17..de28371 100644 --- a/gcc/cp/rtti.c +++ b/gcc/cp/rtti.c @@ -89,6 +89,12 @@ typedef enum tinfo_kind /* ... abi::__vmi_type_info<I> */ } tinfo_kind; +/* Helper macro to get maximum scalar-width of pointer or of the 'long'-type. + This of interest for llp64 targets. */ +#define LONGPTR_T \ + integer_types[(POINTER_SIZE <= TYPE_PRECISION (integer_types[itk_long]) \ + ? itk_long : itk_long_long)] + /* A vector of all tinfo decls that haven't yet been emitted. */ vec<tree, va_gc> *unemitted_tinfo_decls; @@ -1116,7 +1122,7 @@ get_pseudo_ti_init (tree type, unsigned tk_index) tree binfo = TYPE_BINFO (type); int nbases = BINFO_N_BASE_BINFOS (binfo); vec<tree, va_gc> *base_accesses = BINFO_BASE_ACCESSES (binfo); - tree offset_type = integer_types[itk_long]; + tree offset_type = LONGPTR_T; tree base_inits = NULL_TREE; int ix; vec<constructor_elt, va_gc> *init_vec = NULL; @@ -1420,7 +1426,7 @@ create_tinfo_types (void) fields = field; field = build_decl (BUILTINS_LOCATION, - FIELD_DECL, NULL_TREE, integer_types[itk_long]); + FIELD_DECL, NULL_TREE, LONGPTR_T); DECL_CHAIN (field) = fields; fields = field; |