]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* rtti.c (LONGPTR_T): New helper-macro.
authorktietz <ktietz@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Dec 2012 21:49:59 +0000 (21:49 +0000)
committerktietz <ktietz@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Dec 2012 21:49:59 +0000 (21:49 +0000)
        (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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@194745 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/rtti.c

index f6abef6368268a6bb137cc7f884d4ce25e8561ab..a57051ebf5fa1587b7f44929b9bc714ada1a9865 100644 (file)
@@ -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
index b13ec171bbb230161afce90fe5c6d47440742c2b..de28371c67968b81dbf7f89b0efad3e0dc26e2b1 100644 (file)
@@ -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;