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
This commit is contained in:
Andrew MacLeod 2015-06-17 17:55:26 +00:00 committed by Andrew Macleod
parent 21bdef94b1
commit f6e3667f97
4 changed files with 25 additions and 2 deletions

View File

@ -1,3 +1,13 @@
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>
* tree.h (merge_dllimport_decl_attributes, handle_dll_attribute):

View File

@ -1676,7 +1676,7 @@ struct GTY(()) tree_target_option {
struct target_globals *globals;
/* 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.

View File

@ -1094,6 +1094,13 @@ 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> ();
}
break;
default:
/* Other classes need no special treatment. */
break;
@ -1175,6 +1182,12 @@ copy_node_stat (tree node MEM_STAT_DECL)
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;
}

View File

@ -2839,7 +2839,7 @@ extern vec<tree, va_gc> **decl_debug_args_insert (tree);
extern tree build_optimization_node (struct gcc_options *opts);
#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) \
(TARGET_OPTION_NODE_CHECK (NODE)->target_option.globals)