tree-core.h (struct tree_optimization_option): Make opts a pointer to struct cl_optim...
authorAndrew MacLeod <amacleod@redhat.com>
Thu, 25 Jun 2015 17:03:33 +0000 (17:03 +0000)
committerAndrew Macleod <amacleod@gcc.gnu.org>
Thu, 25 Jun 2015 17:03:33 +0000 (17:03 +0000)
2015-06-25  Andrew MacLeod  <amacleod@redhat.com>

* tree-core.h (struct tree_optimization_option): Make opts a pointer to
struct cl_optimization.
* tree.h (TREE_OPTIMIZATION): Return the pointer, not the address of it.
* tree.c (make_node_stat): Allocate cl_optimization struct.
(copy_node_stat): Allocate and copy cl_optimization struct.

From-SVN: r224952

gcc/ChangeLog
gcc/tree-core.h
gcc/tree.c
gcc/tree.h

index a45adfd..202c3a7 100644 (file)
@@ -1,5 +1,13 @@
 2015-06-25  Andrew MacLeod  <amacleod@redhat.com>
 
+       * tree-core.h (struct tree_optimization_option): Make opts a pointer to
+       struct cl_optimization.
+       * tree.h (TREE_OPTIMIZATION): Return the pointer, not the address of it.
+       * tree.c (make_node_stat): Allocate cl_optimization struct.
+       (copy_node_stat): Allocate and copy cl_optimization struct.
+
+2015-06-25  Andrew MacLeod  <amacleod@redhat.com>
+
        * function.h (struct incoming_args): Move struct.
        (pass_by_reference, reference_callee_copied): Remove prototypes.
        * emit-rtl.h (struct incoming_args): Relocate struct here.
index 58dc301..f23abe2 100644 (file)
@@ -1652,7 +1652,7 @@ struct GTY(()) tree_optimization_option {
   struct tree_common common;
 
   /* The optimization options used by the user.  */
-  struct cl_optimization opts;
+  struct cl_optimization *opts;
 
   /* Target optabs for this set of optimization options.  This is of
      type `struct target_optabs *'.  */
index f6ab441..d44bc18 100644 (file)
@@ -1095,9 +1095,20 @@ make_node_stat (enum tree_code code MEM_STAT_DECL)
       break;
 
     case tcc_exceptional:
-      if (code == TARGET_OPTION_NODE)
-       {
-         TREE_TARGET_OPTION(t) = ggc_cleared_alloc<struct cl_target_option> ();
+      switch (code)
+        {
+       case TARGET_OPTION_NODE:
+         TREE_TARGET_OPTION(t)
+                           = ggc_cleared_alloc<struct cl_target_option> ();
+         break;
+
+       case OPTIMIZATION_NODE:
+         TREE_OPTIMIZATION (t)
+                           = ggc_cleared_alloc<struct cl_optimization> ();
+         break;
+
+       default:
+         break;
        }
       break;
 
@@ -1188,6 +1199,12 @@ copy_node_stat (tree node MEM_STAT_DECL)
        memcpy (TREE_TARGET_OPTION (t), TREE_TARGET_OPTION (node),
                sizeof (struct cl_target_option));
       }
+    else if (code == OPTIMIZATION_NODE)
+      {
+       TREE_OPTIMIZATION (t) = ggc_alloc<struct cl_optimization>();
+       memcpy (TREE_OPTIMIZATION (t), TREE_OPTIMIZATION (node),
+               sizeof (struct cl_optimization));
+      }
 
   return t;
 }
index 34b9368..e9f0d73 100644 (file)
@@ -2827,7 +2827,7 @@ extern vec<tree, va_gc> **decl_debug_args_insert (tree);
   (STATEMENT_LIST_CHECK (NODE)->stmt_list.tail)
 
 #define TREE_OPTIMIZATION(NODE) \
-  (&OPTIMIZATION_NODE_CHECK (NODE)->optimization.opts)
+  (OPTIMIZATION_NODE_CHECK (NODE)->optimization.opts)
 
 #define TREE_OPTIMIZATION_OPTABS(NODE) \
   (OPTIMIZATION_NODE_CHECK (NODE)->optimization.optabs)