diff options
Diffstat (limited to 'gcc/optc-gen.awk')
-rw-r--r-- | gcc/optc-gen.awk | 123 |
1 files changed, 115 insertions, 8 deletions
diff --git a/gcc/optc-gen.awk b/gcc/optc-gen.awk index 3ed1cf881be..973e3b704cc 100644 --- a/gcc/optc-gen.awk +++ b/gcc/optc-gen.awk @@ -51,8 +51,14 @@ BEGIN { # Dump that array of options into a C file. END { -print "/* This file is auto-generated by opts.sh. */" +# APPLE LOCAL begin optimization pragmas 3124235/3420242 +print "/* This file is auto-generated by optc-gen.awk. */" print "" +print "#include " quote "config.h" quote +print "#include " quote "system.h" quote +print "#include " quote "coretypes.h" quote +print "#include " quote "hwint.h" quote +# APPLE LOCAL end optimization pragmas 3124235/3420242 print "#include <intl.h>" print "#include " quote header_name quote print "#include " quote "opts.h" quote @@ -63,23 +69,97 @@ for (i = 0; i < n_opts; i++) { if (name == "") continue; - if (flags[i] ~ "VarExists") - continue; +# APPLE LOCAL begin optimization pragmas 3124235/3420242 + if (flag_set_p("VarExists", flags[i])) + continue; + if (flag_set_p("PerFunc", flags[i])) + continue; +# APPLE LOCAL end optimization pragmas 3124235/3420242 if (flags[i] ~ "Init\\(") { init = flags[i]; sub(".*Init\\(","",init); sub("\\).*","",init); - init = " = " init; +# APPLE LOCAL begin optimization pragmas 3124235/3420242 +# APPLE LOCAL end optimization pragmas 3124235/3420242 } else - init = ""; +# APPLE LOCAL optimization pragmas 3124235/3420242 + init = "0"; - printf ("/* Set by -%s.\n %s */\nint %s%s;\n\n", +# APPLE LOCAL optimization pragmas 3124235/3420242 + printf ("/* Set by -%s.\n %s */\nint %s = %s;\n\n", opts[i], help[i], name,init) } +# APPLE LOCAL begin optimization pragmas 3124235/3420242 +print "struct cl_perfunc_opts cl_pf_opts = {\n" + +# Per-function bitfield initializers. + +for (i = 0; i < n_opts; i++) { + name = var_name(flags[i]); + if (name == "") + continue; + + if (flag_set_p("VarExists", flags[i])) + continue; + if (!flag_set_p("PerFunc", flags[i])) + continue; + if (flag_set_p("VarUint", flags[i])) + continue; + + if (flags[i] ~ "Init\\(") + { + init = flags[i]; + sub(".*Init\\(","",init); + sub("\\).*","",init); + } + else + init = "0"; + + print init ", /* fld_" name " */ " +} + +print "0, /* fld_optimize_size */" + +# Padding, see comments in opth-gen.awk. + +print "0, /* padding */" + +# Per-function non-bitfield initializers. + +for (i = 0; i < n_opts; i++) { + name = var_name(flags[i]); + if (name == "") + continue; + + if (flag_set_p("VarExists", flags[i])) + continue; + if (!flag_set_p("PerFunc", flags[i])) + continue; + if (!flag_set_p("VarUint", flags[i])) + continue; + + if (flags[i] ~ "Init\\(") + { + init = flags[i]; + sub(".*Init\\(","",init); + sub("\\).*","",init); + } + else + init = "0"; + + print init ", /* fld_" name " */ " +} + +print "0 /* fld_optimize */" +print "};" + +print "struct cl_perfunc_opts cl_pf_opts_raw;" +print "struct cl_perfunc_opts cl_pf_opts_cooked;" +# APPLE LOCAL end optimization pragmas 3124235/3420242 print "const char * const lang_names[] =\n{" for (i = 0; i < n_langs; i++) { @@ -92,6 +172,30 @@ for (i = 0; i < n_langs; i++) { print " 0\n};\n" print "const unsigned int cl_options_count = N_OPTS;\n" +# APPLE LOCAL begin optimization pragmas 3124235/3420242 +# Access functions for per-function bitfields. + +for (i = 0; i < n_opts; i++) { + name = var_name(flags[i]); + if (name == "") + continue; + if (flag_set_p("VarExists", flags[i])) + continue; + if (!flag_set_p("PerFunc", flags[i])) + continue; + if (!flag_set_p("VarUint", flags[i])) { + print "int cl_opt_access_func_" name " (int value, unsigned int rw)" + print "{" + print " if (rw == 1)" + print " {" + printf (" cl_pf_opts.fld_%s = value;\n", name) + print " }" + printf (" return cl_pf_opts.fld_%s;\n", name) + print "}" + } +} +# APPLE LOCAL end optimization pragmas 3124235/3420242 + print "const struct cl_option cl_options[] =\n{" for (i = 0; i < n_opts; i++) @@ -134,10 +238,13 @@ for (i = 0; i < n_opts; i++) else hlp = "N_(" quote help[i] quote ")"; - printf(" { %c-%s%c,\n %s,\n %s, %u, %s, %s, %s }%s\n", +# APPLE LOCAL begin optimization pragmas 3124235/3420242 + printf(" { %c-%s%c,\n %s,\n %s, %u, %s, %s, %s, %s }%s\n", quote, opts[i], quote, hlp, back_chain[i], len, switch_flags(flags[i]), - var_ref(flags[i]), var_set(flags[i]), comma) + var_ref(flags[i]), access_ref(flags[i]), + var_set(flags[i]), comma) +# APPLE LOCAL end optimization pragmas 3124235/3420242 } print "};" |