optc-save-gen.awk: Generate cl_target_option_free and cl_optimization_option_free.
* optc-save-gen.awk: Generate cl_target_option_free and cl_optimization_option_free. * opth-en.awk: Declare cl_target_option_free and cl_optimization_option_free. * tree.c (free_node): Use it. From-SVN: r277926
This commit is contained in:
parent
4629ea5560
commit
c6145f2ac6
4 changed files with 43 additions and 0 deletions
|
@ -1,3 +1,11 @@
|
|||
2019-11-07 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* optc-save-gen.awk: Generate cl_target_option_free
|
||||
and cl_optimization_option_free.
|
||||
* opth-en.awk: Declare cl_target_option_free
|
||||
and cl_optimization_option_free.
|
||||
* tree.c (free_node): Use it.
|
||||
|
||||
2019-11-06 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* lto-streamer-in.c: Include alloc-pool.h.
|
||||
|
|
|
@ -802,6 +802,17 @@ for (i = 0; i < n_target_val; i++) {
|
|||
|
||||
print "}";
|
||||
|
||||
print "/* free heap memory used by target options */";
|
||||
print "void";
|
||||
print "cl_target_option_free (struct cl_target_option *ptr ATTRIBUTE_UNUSED)";
|
||||
print "{";
|
||||
for (i = 0; i < n_target_str; i++) {
|
||||
name = var_target_str[i]
|
||||
print " if (ptr->" name")";
|
||||
print " free (const_cast <char *>(ptr->" name"));";
|
||||
}
|
||||
print "}";
|
||||
|
||||
n_opt_val = 4;
|
||||
var_opt_val[0] = "x_optimize"
|
||||
var_opt_val_type[0] = "char "
|
||||
|
@ -921,4 +932,18 @@ for (i = 0; i < n_opt_val; i++) {
|
|||
print " ptr->" name" = (" var_opt_val_type[i] ") bp_unpack_value (bp, 64);";
|
||||
}
|
||||
print "}";
|
||||
print "/* Free heap memory used by optimization options */";
|
||||
print "void";
|
||||
print "cl_optimization_option_free (struct cl_optimization *ptr ATTRIBUTE_UNUSED)";
|
||||
print "{";
|
||||
for (i = 0; i < n_opt_val; i++) {
|
||||
name = var_opt_val[i]
|
||||
otype = var_opt_val_type[i];
|
||||
if (otype ~ "^const char \\**$")
|
||||
{
|
||||
print " if (ptr->" name")";
|
||||
print " free (const_cast <char *>(ptr->" name"));";
|
||||
}
|
||||
}
|
||||
print "}";
|
||||
}
|
||||
|
|
|
@ -303,6 +303,9 @@ print "";
|
|||
print "/* Compare two target option variables from a structure. */";
|
||||
print "extern bool cl_target_option_eq (const struct cl_target_option *, const struct cl_target_option *);";
|
||||
print "";
|
||||
print "/* Free heap memory used by target option variables. */";
|
||||
print "extern void cl_target_option_free (struct cl_target_option *);";
|
||||
print "";
|
||||
print "/* Hash option variables from a structure. */";
|
||||
print "extern hashval_t cl_target_option_hash (const struct cl_target_option *);";
|
||||
print "";
|
||||
|
@ -312,6 +315,9 @@ print "";
|
|||
print "/* Compare two optimization options. */";
|
||||
print "extern bool cl_optimization_option_eq (cl_optimization const *ptr1, cl_optimization const *ptr2);"
|
||||
print "";
|
||||
print "/* Free heap memory used by optimization options. */";
|
||||
print "extern void cl_optimization_option_free (cl_optimization *ptr1);"
|
||||
print "";
|
||||
print "/* Generator files may not have access to location_t, and don't need these. */"
|
||||
print "#if defined(UNKNOWN_LOCATION)"
|
||||
print "bool "
|
||||
|
|
|
@ -1170,6 +1170,10 @@ free_node (tree node)
|
|||
vec_free (BLOCK_NONLOCALIZED_VARS (node));
|
||||
else if (code == TREE_BINFO)
|
||||
vec_free (BINFO_BASE_ACCESSES (node));
|
||||
else if (code == OPTIMIZATION_NODE)
|
||||
cl_optimization_option_free (TREE_OPTIMIZATION (node));
|
||||
else if (code == TARGET_OPTION_NODE)
|
||||
cl_target_option_free (TREE_TARGET_OPTION (node));
|
||||
ggc_free (node);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue