diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2014-11-15 17:53:51 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-11-15 16:53:51 +0000 |
commit | ca9a04dab65aa459a69364376e4fd6188f5f78a3 (patch) | |
tree | 76e6169e67fc97082991b66e36d3b94491a938ca /gcc/optc-save-gen.awk | |
parent | 64ec531860ae0632d2e02cf545e1b2f99aa32b44 (diff) | |
download | gcc-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.awk | 57 |
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 "}"; } |