summaryrefslogtreecommitdiffstats
path: root/gcc/optc-gen.awk
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/optc-gen.awk')
-rw-r--r--gcc/optc-gen.awk110
1 files changed, 64 insertions, 46 deletions
diff --git a/gcc/optc-gen.awk b/gcc/optc-gen.awk
index 4a146dddffb..c43557b1b03 100644
--- a/gcc/optc-gen.awk
+++ b/gcc/optc-gen.awk
@@ -85,8 +85,19 @@ print "#endif /* GCC_DRIVER */"
print ""
have_save = 0;
+print "struct gcc_options global_options =\n{"
for (i = 0; i < n_extra_vars; i++) {
- print extra_vars[i] ";"
+ var = extra_vars[i]
+ init = extra_vars[i]
+ if (var ~ "=" ) {
+ sub(".*= *", "", init)
+ sub(" *=.*", "", var)
+ sub("^.*[ *]", "", var)
+ } else {
+ init = "0"
+ }
+ var_seen[var] = 1
+ print " " init ", /* " var " */"
}
for (i = 0; i < n_opts; i++) {
if (flag_set_p("Save", flags[i]))
@@ -96,24 +107,31 @@ for (i = 0; i < n_opts; i++) {
if (name == "")
continue;
- if (flag_set_p("VarExists", flags[i])) {
- continue;
- }
- else {
- init = opt_args("Init", flags[i])
- if (init != "")
- init = " = " init;
- else if (name in var_seen)
- continue;
+ init = opt_args("Init", flags[i])
+ if (init != "") {
+ if (name in var_init && var_init[name] != init)
+ print "#error multiple initializers for " name
+ var_init[name] = init
}
+}
+for (i = 0; i < n_opts; i++) {
+ name = var_name(flags[i]);
+ if (name == "")
+ continue;
+
+ if (name in var_seen)
+ continue;
+
+ if (name in var_init)
+ init = var_init[name]
+ else
+ init = "0"
- print "/* Set by -" opts[i] "."
- print " " help[i] " */"
- print var_type(flags[i]) name init ";"
- print ""
+ print " " init ", /* " name " */"
var_seen[name] = 1;
}
+print "};"
print ""
print "/* Local state variables. */"
@@ -332,19 +350,19 @@ for (i = 0; i < n_opt_char; i++) {
print "";
for (i = 0; i < n_opt_other; i++) {
- print " ptr->" var_opt_other[i] " = " var_opt_other[i] ";";
+ print " ptr->x_" var_opt_other[i] " = " var_opt_other[i] ";";
}
for (i = 0; i < n_opt_int; i++) {
- print " ptr->" var_opt_int[i] " = " var_opt_int[i] ";";
+ print " ptr->x_" var_opt_int[i] " = " var_opt_int[i] ";";
}
for (i = 0; i < n_opt_short; i++) {
- print " ptr->" var_opt_short[i] " = " var_opt_short[i] ";";
+ print " ptr->x_" var_opt_short[i] " = " var_opt_short[i] ";";
}
for (i = 0; i < n_opt_char; i++) {
- print " ptr->" var_opt_char[i] " = " var_opt_char[i] ";";
+ print " ptr->x_" var_opt_char[i] " = " var_opt_char[i] ";";
}
print "}";
@@ -356,19 +374,19 @@ print "cl_optimization_restore (struct cl_optimization *ptr)";
print "{";
for (i = 0; i < n_opt_other; i++) {
- print " " var_opt_other[i] " = ptr->" var_opt_other[i] ";";
+ print " " var_opt_other[i] " = ptr->x_" var_opt_other[i] ";";
}
for (i = 0; i < n_opt_int; i++) {
- print " " var_opt_int[i] " = ptr->" var_opt_int[i] ";";
+ print " " var_opt_int[i] " = ptr->x_" var_opt_int[i] ";";
}
for (i = 0; i < n_opt_short; i++) {
- print " " var_opt_short[i] " = ptr->" var_opt_short[i] ";";
+ print " " var_opt_short[i] " = ptr->x_" var_opt_short[i] ";";
}
for (i = 0; i < n_opt_char; i++) {
- print " " var_opt_char[i] " = ptr->" var_opt_char[i] ";";
+ print " " var_opt_char[i] " = ptr->x_" var_opt_char[i] ";";
}
print " targetm.override_options_after_change ();";
@@ -384,38 +402,38 @@ print "{";
print " fputs (\"\\n\", file);";
for (i = 0; i < n_opt_other; i++) {
- print " if (ptr->" var_opt_other[i] ")";
+ print " if (ptr->x_" var_opt_other[i] ")";
print " fprintf (file, \"%*s%s (%#lx)\\n\",";
print " indent_to, \"\",";
print " \"" var_opt_other[i] "\",";
- print " (unsigned long)ptr->" var_opt_other[i] ");";
+ print " (unsigned long)ptr->x_" var_opt_other[i] ");";
print "";
}
for (i = 0; i < n_opt_int; i++) {
- print " if (ptr->" var_opt_int[i] ")";
+ print " if (ptr->x_" var_opt_int[i] ")";
print " fprintf (file, \"%*s%s (%#x)\\n\",";
print " indent_to, \"\",";
print " \"" var_opt_int[i] "\",";
- print " ptr->" var_opt_int[i] ");";
+ print " ptr->x_" var_opt_int[i] ");";
print "";
}
for (i = 0; i < n_opt_short; i++) {
- print " if (ptr->" var_opt_short[i] ")";
+ print " if (ptr->x_" var_opt_short[i] ")";
print " fprintf (file, \"%*s%s (%#x)\\n\",";
print " indent_to, \"\",";
print " \"" var_opt_short[i] "\",";
- print " ptr->" var_opt_short[i] ");";
+ print " ptr->x_" var_opt_short[i] ");";
print "";
}
for (i = 0; i < n_opt_char; i++) {
- print " if (ptr->" var_opt_char[i] ")";
+ print " if (ptr->x_" var_opt_char[i] ")";
print " fprintf (file, \"%*s%s (%#x)\\n\",";
print " indent_to, \"\",";
print " \"" var_opt_char[i] "\",";
- print " ptr->" var_opt_char[i] ");";
+ print " ptr->x_" var_opt_char[i] ");";
print "";
}
@@ -482,19 +500,19 @@ print " targetm.target_option.save (ptr);";
print "";
for (i = 0; i < n_target_other; i++) {
- print " ptr->" var_target_other[i] " = " var_target_other[i] ";";
+ print " ptr->x_" var_target_other[i] " = " var_target_other[i] ";";
}
for (i = 0; i < n_target_int; i++) {
- print " ptr->" var_target_int[i] " = " var_target_int[i] ";";
+ print " ptr->x_" var_target_int[i] " = " var_target_int[i] ";";
}
for (i = 0; i < n_target_short; i++) {
- print " ptr->" var_target_short[i] " = " var_target_short[i] ";";
+ print " ptr->x_" var_target_short[i] " = " var_target_short[i] ";";
}
for (i = 0; i < n_target_char; i++) {
- print " ptr->" var_target_char[i] " = " var_target_char[i] ";";
+ print " ptr->x_" var_target_char[i] " = " var_target_char[i] ";";
}
print "}";
@@ -506,19 +524,19 @@ print "cl_target_option_restore (struct cl_target_option *ptr)";
print "{";
for (i = 0; i < n_target_other; i++) {
- print " " var_target_other[i] " = ptr->" var_target_other[i] ";";
+ print " " var_target_other[i] " = ptr->x_" var_target_other[i] ";";
}
for (i = 0; i < n_target_int; i++) {
- print " " var_target_int[i] " = ptr->" var_target_int[i] ";";
+ print " " var_target_int[i] " = ptr->x_" var_target_int[i] ";";
}
for (i = 0; i < n_target_short; i++) {
- print " " var_target_short[i] " = ptr->" var_target_short[i] ";";
+ print " " var_target_short[i] " = ptr->x_" var_target_short[i] ";";
}
for (i = 0; i < n_target_char; i++) {
- print " " var_target_char[i] " = ptr->" var_target_char[i] ";";
+ print " " var_target_char[i] " = ptr->x_" var_target_char[i] ";";
}
# This must occur after the normal variables in case the code depends on those
@@ -539,38 +557,38 @@ print "{";
print " fputs (\"\\n\", file);";
for (i = 0; i < n_target_other; i++) {
- print " if (ptr->" var_target_other[i] ")";
+ print " if (ptr->x_" var_target_other[i] ")";
print " fprintf (file, \"%*s%s (%#lx)\\n\",";
print " indent, \"\",";
print " \"" var_target_other[i] "\",";
- print " (unsigned long)ptr->" var_target_other[i] ");";
+ print " (unsigned long)ptr->x_" var_target_other[i] ");";
print "";
}
for (i = 0; i < n_target_int; i++) {
- print " if (ptr->" var_target_int[i] ")";
+ print " if (ptr->x_" var_target_int[i] ")";
print " fprintf (file, \"%*s%s (%#x)\\n\",";
print " indent, \"\",";
print " \"" var_target_int[i] "\",";
- print " ptr->" var_target_int[i] ");";
+ print " ptr->x_" var_target_int[i] ");";
print "";
}
for (i = 0; i < n_target_short; i++) {
- print " if (ptr->" var_target_short[i] ")";
+ print " if (ptr->x_" var_target_short[i] ")";
print " fprintf (file, \"%*s%s (%#x)\\n\",";
print " indent, \"\",";
print " \"" var_target_short[i] "\",";
- print " ptr->" var_target_short[i] ");";
+ print " ptr->x_" var_target_short[i] ");";
print "";
}
for (i = 0; i < n_target_char; i++) {
- print " if (ptr->" var_target_char[i] ")";
+ print " if (ptr->x_" var_target_char[i] ")";
print " fprintf (file, \"%*s%s (%#x)\\n\",";
print " indent, \"\",";
print " \"" var_target_char[i] "\",";
- print " ptr->" var_target_char[i] ");";
+ print " ptr->x_" var_target_char[i] ");";
print "";
}
OpenPOWER on IntegriCloud