var_save_seen[name]++;
otype = var_type_struct(flags[i])
+ if (opt_args("Mask", flags[i]) != "" \
+ || opt_args("InverseMask", flags[i]))
+ var_target_explicit_mask[name] = 1;
+
if (otype ~ "^((un)?signed +)?int *$")
var_target_int[n_target_int++] = name;
}
} else {
var_target_int[n_target_int++] = "target_flags";
+ var_target_explicit_mask["target_flags"] = 1;
}
have_assert = 0;
}
for (i = 0; i < n_target_other; i++) {
+ if (var_target_other[i] in var_target_explicit_mask) {
+ print " ptr->explicit_mask_" var_target_other[i] " = opts_set->x_" var_target_other[i] ";";
+ continue;
+ }
print " if (opts_set->x_" var_target_other[i] ") mask |= HOST_WIDE_INT_1U << " j ";";
j++;
if (j == 64) {
}
for (i = 0; i < n_target_int; i++) {
+ if (var_target_int[i] in var_target_explicit_mask) {
+ print " ptr->explicit_mask_" var_target_int[i] " = opts_set->x_" var_target_int[i] ";";
+ continue;
+ }
print " if (opts_set->x_" var_target_int[i] ") mask |= HOST_WIDE_INT_1U << " j ";";
j++;
if (j == 64) {
}
for (i = 0; i < n_target_other; i++) {
+ if (var_target_other[i] in var_target_explicit_mask) {
+ print " opts_set->x_" var_target_other[i] " = ptr->explicit_mask_" var_target_other[i] ";";
+ continue;
+ }
if (j == 64) {
print " mask = ptr->explicit_mask[" k "];";
k++;
}
for (i = 0; i < n_target_int; i++) {
+ if (var_target_int[i] in var_target_explicit_mask) {
+ print " opts_set->x_" var_target_int[i] " = ptr->explicit_mask_" var_target_int[i] ";";
+ continue;
+ }
if (j == 64) {
print " mask = ptr->explicit_mask[" k "];";
k++;
print " if (ptr1->explicit_mask[i] != ptr2->explicit_mask[i])";
print " return false;"
+for (i = 0; i < n_target_other; i++) {
+ if (var_target_other[i] in var_target_explicit_mask) {
+ print " if (ptr1->explicit_mask_" var_target_other[i] " != ptr2->explicit_mask_" var_target_other[i] ")";
+ print " return false;";
+ }
+}
+
+for (i = 0; i < n_target_int; i++) {
+ if (var_target_int[i] in var_target_explicit_mask) {
+ print " if (ptr1->explicit_mask_" var_target_int[i] " != ptr2->explicit_mask_" var_target_int[i] ")";
+ print " return false;";
+ }
+}
+
print " return true;";
print "}";
}
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]);";
+
+for (i = 0; i < n_target_other; i++) {
+ if (var_target_other[i] in var_target_explicit_mask)
+ print " hstate.add_hwi (ptr->explicit_mask_" var_target_other[i] ");";
+}
+
+for (i = 0; i < n_target_int; i++) {
+ if (var_target_int[i] in var_target_explicit_mask)
+ print " hstate.add_hwi (ptr->explicit_mask_" var_target_int[i] ");";
+}
+
print " return hstate.end ();";
print "}";
n_target_enum = 0;
n_target_other = 0;
n_target_explicit = n_extra_target_vars;
+n_target_explicit_mask = 0;
for (i = 0; i < n_target_save; i++) {
if (target_save_decl[i] ~ "^((un)?signed +)?int +[_" alnum "]+$")
var_save_seen[name]++;
n_target_explicit++;
otype = var_type_struct(flags[i])
+
+ if (opt_args("Mask", flags[i]) != "" \
+ || opt_args("InverseMask", flags[i]))
+ var_target_explicit_mask[n_target_explicit_mask++] \
+ = otype "explicit_mask_" name;
+
if (otype ~ "^((un)?signed +)?int *$")
var_target_int[n_target_int++] = otype "x_" name;
} else {
var_target_int[n_target_int++] = "int x_target_flags";
n_target_explicit++;
+ var_target_explicit_mask[n_target_explicit_mask++] \
+ = "int explicit_mask_target_flags";
}
for (i = 0; i < n_target_other; i++) {
print " " var_target_char[i] ";";
}
-print " /* " n_target_explicit " members */";
-print " unsigned HOST_WIDE_INT explicit_mask[" int ((n_target_explicit + 63) / 64) "];";
+print " /* " n_target_explicit - n_target_explicit_mask " members */";
+print " unsigned HOST_WIDE_INT explicit_mask[" int ((n_target_explicit - n_target_explicit_mask + 63) / 64) "];";
+
+for (i = 0; i < n_target_explicit_mask; i++) {
+ print " " var_target_explicit_mask[i] ";";
+}
print "};";
print "";