aboutsummaryrefslogtreecommitdiff
path: root/gcc/optc-save-gen.awk
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2014-11-15 17:53:51 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2014-11-15 16:53:51 +0000
commitca9a04dab65aa459a69364376e4fd6188f5f78a3 (patch)
tree76e6169e67fc97082991b66e36d3b94491a938ca /gcc/optc-save-gen.awk
parent64ec531860ae0632d2e02cf545e1b2f99aa32b44 (diff)
downloadgcc-ca9a04dab65aa459a69364376e4fd6188f5f78a3.zip
gcc-ca9a04dab65aa459a69364376e4fd6188f5f78a3.tar.gz
gcc-ca9a04dab65aa459a69364376e4fd6188f5f78a3.tar.bz2
lto-streamer-out.c (hash_tree): Use cl_optimization_hash.
* lto-streamer-out.c (hash_tree): Use cl_optimization_hash. * lto-streamer.h (cl_optimization_stream_out, cl_optimization_stream_in): Declare. * optc-save-gen.awk: Generate cl_optimization LTO streaming and hashing routines. * opth-gen.awk: Add prototype of cl_optimization_hash. * tree-streamer-in.c (unpack_ts_optimization): Remove. (streamer_unpack_tree_bitfields): Use cl_optimization_stream_in. * tree-streamer-out.c (pack_ts_optimization): Remove. (streamer_pack_tree_bitfields): Use cl_optimization_stream_out. From-SVN: r217607
Diffstat (limited to 'gcc/optc-save-gen.awk')
-rw-r--r--gcc/optc-save-gen.awk57
1 files changed, 57 insertions, 0 deletions
diff --git a/gcc/optc-save-gen.awk b/gcc/optc-save-gen.awk
index 8616834..54c2ed2 100644
--- a/gcc/optc-save-gen.awk
+++ b/gcc/optc-save-gen.awk
@@ -551,4 +551,61 @@ for (i = 0; i < n_target_val; i++) {
print "}";
+n_opt_val = 2;
+var_opt_val[0] = "x_optimize"
+var_opt_val_type[0] = "char "
+var_opt_val[1] = "x_optimize_size"
+var_opt_val_type[1] = "char "
+for (i = 0; i < n_opts; i++) {
+ if (flag_set_p("Optimization", flags[i])) {
+ name = var_name(flags[i])
+ if(name == "")
+ continue;
+
+ if(name in var_opt_list_seen)
+ continue;
+
+ var_opt_list_seen[name]++;
+
+ otype = var_type_struct(flags[i])
+ var_opt_val_type[n_opt_val] = otype;
+ var_opt_val[n_opt_val++] = "x_" name;
+ }
+}
+print "";
+print "/* Hash optimization options */";
+print "hashval_t";
+print "cl_optimization_hash (struct cl_optimization const *ptr ATTRIBUTE_UNUSED)";
+print "{";
+print " inchash::hash hstate;";
+for (i = 0; i < n_opt_val; i++) {
+ name = var_opt_val[i]
+ print " hstate.add_wide_int (ptr->" name");";
+}
+print " return hstate.end ();";
+print "}";
+
+print "";
+print "/* Stream out optimization options */";
+print "void";
+print "cl_optimization_stream_out (struct bitpack_d *bp,";
+print " struct cl_optimization *ptr)";
+print "{";
+for (i = 0; i < n_opt_val; i++) {
+ name = var_opt_val[i]
+ print " bp_pack_value (bp, ptr->" name", 64);";
+}
+print "}";
+
+print "";
+print "/* Stream in optimization options */";
+print "void";
+print "cl_optimization_stream_in (struct bitpack_d *bp,";
+print " struct cl_optimization *ptr)";
+print "{";
+for (i = 0; i < n_opt_val; i++) {
+ name = var_opt_val[i]
+ print " ptr->" name" = (" var_opt_val_type[i] ") bp_unpack_value (bp, 64);";
+}
+print "}";
}