tree.c (build_common_tree_nodes): Initialize ptrdiff_type_node.
authorPrathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
Sat, 26 Nov 2016 10:41:55 +0000 (10:41 +0000)
committerPrathamesh Kulkarni <prathamesh3492@gcc.gnu.org>
Sat, 26 Nov 2016 10:41:55 +0000 (10:41 +0000)
2016-11-26  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

* tree.c (build_common_tree_nodes): Initialize ptrdiff_type_node.
(free_lang_data): Remove assignment to ptrdiff_type_node.
c-family/
* c-common.c (c_common_nodes_and_builtins): Remove initialization of
ptrdiff_type_node.
lto/
* lto-lang.c (lto_init): Remove initialization of ptrdiff_type_node.

From-SVN: r242888

gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/lto/ChangeLog
gcc/lto/lto-lang.c
gcc/tree.c

index bd9929b802c9b1c4743619571934ee4572f3fd0f..80124c2091011ff4a1f03037619b1348a8a9cd23 100644 (file)
@@ -1,3 +1,8 @@
+2016-11-26  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+
+       * tree.c (build_common_tree_nodes): Initialize ptrdiff_type_node.
+       (free_lang_data): Remove assignment to ptrdiff_type_node.
+
 2016-11-25  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/78526
index b2f712f5256d50c9355a0d838407df1b2018dda3..183493d6e3ac33f6d6a3879d7976ceffd1592b23 100644 (file)
@@ -1,3 +1,8 @@
+2016-11-26  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+
+       * c-common.c (c_common_nodes_and_builtins): Remove initialization of
+       ptrdiff_type_node;
+
 2016-11-23  James Greenhalgh  <james.greenhalgh@arm.com>
 
        * c-common.c (excess_precision_mode_join): New.
index 62174a9eaa5c708df386bc6f94f9a6f1f99a6661..0749361fb4414e3197ff38638b0fd8655e2c8ae8 100644 (file)
@@ -4475,8 +4475,6 @@ c_common_nodes_and_builtins (void)
 
   default_function_type
     = build_varargs_function_type_list (integer_type_node, NULL_TREE);
-  ptrdiff_type_node
-    = TREE_TYPE (identifier_global_value (get_identifier (PTRDIFF_TYPE)));
   unsigned_ptrdiff_type_node = c_common_unsigned_type (ptrdiff_type_node);
 
   lang_hooks.decls.pushdecl
index cf65f02288603f0b2977dab606e101c40d459d6f..7957b2b7deff65d16707470cc89a14b33d8487ab 100644 (file)
@@ -1,3 +1,7 @@
+2016-11-26  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+
+       * lto-lang.c (lto_init): Remove initialization of ptrdiff_type_node.
+
 2016-11-23  Richard Biener  <rguenther@suse.de>
 
        PR lto/78472
index a5f04ba8e7210e1d1fd41510a821ed11b9c0977f..58f6e0c747ef5941fe3e2c6d65ecaee301b12625 100644 (file)
@@ -1271,8 +1271,6 @@ lto_init (void)
   gcc_assert (TYPE_MAIN_VARIANT (const_tm_ptr_type_node)
              == const_ptr_type_node);
 
-  ptrdiff_type_node = integer_type_node;
-
   lto_build_c_type_nodes ();
   gcc_assert (va_list_type_node);
 
index dd6ef6397984ecc0cbb4972b32ec77c9e40a67ff..0f0e6753b19bcf027594a1b49144d6d8fc250c3b 100644 (file)
@@ -6006,7 +6006,6 @@ free_lang_data (void)
   free_lang_data_in_cgraph ();
 
   /* Create gimple variants for common types.  */
-  ptrdiff_type_node = integer_type_node;
   fileptr_type_node = ptr_type_node;
   const_tm_ptr_type_node = const_ptr_type_node;
 
@@ -10314,6 +10313,30 @@ build_common_tree_nodes (bool signed_char)
        gcc_unreachable ();
     }
 
+  /* Define what type to use for ptrdiff_t.  */
+  if (strcmp (PTRDIFF_TYPE, "int") == 0)
+    ptrdiff_type_node = integer_type_node;
+  else if (strcmp (PTRDIFF_TYPE, "long int") == 0)
+    ptrdiff_type_node = long_integer_type_node;
+  else if (strcmp (PTRDIFF_TYPE, "long long int") == 0)
+    ptrdiff_type_node = long_long_integer_type_node;
+  else if (strcmp (PTRDIFF_TYPE, "short int") == 0)
+    ptrdiff_type_node = short_integer_type_node;
+  else
+    {
+      ptrdiff_type_node = NULL_TREE;
+      for (int i = 0; i < NUM_INT_N_ENTS; i++)
+       if (int_n_enabled_p[i])
+         {
+           char name[50];
+           sprintf (name, "__int%d", int_n_data[i].bitsize);
+           if (strcmp (name, PTRDIFF_TYPE) == 0)
+             ptrdiff_type_node = int_n_trees[i].signed_type;
+         }
+      if (ptrdiff_type_node == NULL_TREE)
+       gcc_unreachable ();
+    }
+
   /* Fill in the rest of the sized types.  Reuse existing type nodes
      when possible.  */
   intQI_type_node = make_or_reuse_type (GET_MODE_BITSIZE (QImode), 0);