[gcc(refs/users/marxin/heads/parse-opt-and-target-opts)] Add NewTargetVariables to *_eq and *_hash functutins.
Martin Liska
marxin@gcc.gnu.org
Fri Mar 5 10:23:34 GMT 2021
https://gcc.gnu.org/g:acf89b9a1a46dc4c80612a0db8e3ea95312c8132
commit acf89b9a1a46dc4c80612a0db8e3ea95312c8132
Author: Martin Liska <mliska@suse.cz>
Date: Fri Mar 5 11:15:54 2021 +0100
Add NewTargetVariables to *_eq and *_hash functutins.
Diff:
---
gcc/config/i386/i386-options.c | 1 +
gcc/optc-save-gen.awk | 34 ++++++++++++++++++++++++++++++++++
gcc/opth-gen.awk | 3 +++
3 files changed, 38 insertions(+)
diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c
index 47a4e79bcb4..99072512d29 100644
--- a/gcc/config/i386/i386-options.c
+++ b/gcc/config/i386/i386-options.c
@@ -917,6 +917,7 @@ ix86_valid_target_attribute_p (tree fndecl,
new_optimize = build_optimization_node (&func_options, &func_options_set);
+ // FIXME
if (new_target == error_mark_node)
ret = false;
diff --git a/gcc/optc-save-gen.awk b/gcc/optc-save-gen.awk
index 3ec341c322f..a0516f268e5 100644
--- a/gcc/optc-save-gen.awk
+++ b/gcc/optc-save-gen.awk
@@ -1321,6 +1321,21 @@ for (i = 0; i < n_opt_val; i++) {
else
print " hstate.add_hwi (ptr->" name");";
}
+
+for (i = 0; i < n_extra_new_target_vars; i++) {
+ otype = extra_new_target_var_types[i];
+ name = "x_" extra_new_target_vars[i]
+ if (otype ~ "^const char \\**$")
+ {
+ print " if (ptr->" name")";
+ print " hstate.add (ptr->" name", strlen (ptr->" name"));";
+ print " else";
+ print " hstate.add_int (0);";
+ }
+ else
+ print " hstate.add_hwi (ptr->" name ");";
+}
+
print " for (size_t i = 0; i < sizeof (ptr->explicit_mask) / sizeof (ptr->explicit_mask[0]); i++)";
print " hstate.add_hwi (ptr->explicit_mask[i]);";
print " return hstate.end ();";
@@ -1350,6 +1365,25 @@ for (i = 0; i < n_opt_val; i++) {
print " return false;";
}
}
+
+for (i = 0; i < n_extra_new_target_vars; i++) {
+ name = "x_" extra_new_target_vars[i]
+ otype = extra_new_target_var_types[i];
+ if (otype ~ "^const char \\**$")
+ {
+ print " if (ptr1->" name" != ptr2->" name;
+ print " && (!ptr1->" name" || !ptr2->" name
+ print " || strcmp (ptr1->" name", ptr2->" name ")))";
+ print " return false;";
+ }
+ else
+ {
+ print " if (ptr1->" name" != ptr2->" name ")";
+ print " return false;";
+ }
+}
+
+
print " for (size_t i = 0; i < sizeof (ptr1->explicit_mask) / sizeof (ptr1->explicit_mask[0]); i++)";
print " if (ptr1->explicit_mask[i] != ptr2->explicit_mask[i])";
print " return false;"
diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk
index 72e551d3eab..434af6c3cd9 100644
--- a/gcc/opth-gen.awk
+++ b/gcc/opth-gen.awk
@@ -142,10 +142,13 @@ var_opt_char[1] = "unsigned char x_optimize_size";
var_opt_char[2] = "unsigned char x_optimize_debug";
var_opt_char[3] = "unsigned char x_optimize_fast";
+print " /* Target variables */"
# FIXME: sort by type - likely
for (i = 0; i < n_new_target_save; i++) {
print " " new_target_save_decl[i] ";";
}
+print " /* End target variables */"
+print ""
for (i = 0; i < n_opts; i++) {
More information about the Gcc-cvs
mailing list