aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Tietz <ktietz@redhat.com>2012-12-28 22:49:59 +0100
committerKai Tietz <ktietz@gcc.gnu.org>2012-12-28 22:49:59 +0100
commit1c773c7a2ecd36d0d58a285b535dc4fddcb1b370 (patch)
tree968e91501ffdcc82581e75d7cf5355921f4100cf
parent5fabac29f7201639991f102e8354b3bb85ac2bc9 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/cp/rtti.c10
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;