Commit f6e3667f by Andrew MacLeod Committed by Andrew Macleod

tree-core.h (tree_target_option): Make opts field a pointer to a…

tree-core.h (tree_target_option): Make opts field a pointer to a cl_target_option instead of an instance of the...


2017-06-17  Andrew MacLeod  <amacleod@redhat.com>

	* tree-core.h (tree_target_option): Make opts field a pointer to a 
	cl_target_option instead of an instance of the struct.
	* tree.h (TREE_TARGET_OPTION): Return the pointer, not an address of
	the structure.
	* tree.c (make_node_stat ): Allocate a cl_target_option struct for 
	TARGET_OPTION_NODE.
	(copy_node_stat): Allocate and copy struct cl_target_option.

From-SVN: r224567
parent 21bdef94
2017-06-17 Andrew MacLeod <amacleod@redhat.com>
* tree-core.h (tree_target_option): Make opts field a pointer to a
cl_target_option instead of an instance of the struct.
* tree.h (TREE_TARGET_OPTION): Return the pointer, not an address of
the structure.
* tree.c (make_node_stat ): Allocate a cl_target_option struct for
TARGET_OPTION_NODE.
(copy_node_stat): Allocate and copy struct cl_target_option.
2015-06-17 Andrew MacLeod <amacleod@redhat.com> 2015-06-17 Andrew MacLeod <amacleod@redhat.com>
* tree.h (merge_dllimport_decl_attributes, handle_dll_attribute): * tree.h (merge_dllimport_decl_attributes, handle_dll_attribute):
......
...@@ -1676,7 +1676,7 @@ struct GTY(()) tree_target_option { ...@@ -1676,7 +1676,7 @@ struct GTY(()) tree_target_option {
struct target_globals *globals; struct target_globals *globals;
/* The optimization options used by the user. */ /* The optimization options used by the user. */
struct cl_target_option opts; struct cl_target_option *opts;
}; };
/* Define the overall contents of a tree node. /* Define the overall contents of a tree node.
......
...@@ -1094,6 +1094,13 @@ make_node_stat (enum tree_code code MEM_STAT_DECL) ...@@ -1094,6 +1094,13 @@ make_node_stat (enum tree_code code MEM_STAT_DECL)
} }
break; break;
case tcc_exceptional:
if (code == TARGET_OPTION_NODE)
{
TREE_TARGET_OPTION(t) = ggc_cleared_alloc<struct cl_target_option> ();
}
break;
default: default:
/* Other classes need no special treatment. */ /* Other classes need no special treatment. */
break; break;
...@@ -1175,6 +1182,12 @@ copy_node_stat (tree node MEM_STAT_DECL) ...@@ -1175,6 +1182,12 @@ copy_node_stat (tree node MEM_STAT_DECL)
TYPE_CACHED_VALUES (t) = NULL_TREE; TYPE_CACHED_VALUES (t) = NULL_TREE;
} }
} }
else if (code == TARGET_OPTION_NODE)
{
TREE_TARGET_OPTION (t) = ggc_alloc<struct cl_target_option>();
memcpy (TREE_TARGET_OPTION (t), TREE_TARGET_OPTION (node),
sizeof (struct cl_target_option));
}
return t; return t;
} }
......
...@@ -2839,7 +2839,7 @@ extern vec<tree, va_gc> **decl_debug_args_insert (tree); ...@@ -2839,7 +2839,7 @@ extern vec<tree, va_gc> **decl_debug_args_insert (tree);
extern tree build_optimization_node (struct gcc_options *opts); extern tree build_optimization_node (struct gcc_options *opts);
#define TREE_TARGET_OPTION(NODE) \ #define TREE_TARGET_OPTION(NODE) \
(&TARGET_OPTION_NODE_CHECK (NODE)->target_option.opts) (TARGET_OPTION_NODE_CHECK (NODE)->target_option.opts)
#define TREE_TARGET_GLOBALS(NODE) \ #define TREE_TARGET_GLOBALS(NODE) \
(TARGET_OPTION_NODE_CHECK (NODE)->target_option.globals) (TARGET_OPTION_NODE_CHECK (NODE)->target_option.globals)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment