summaryrefslogtreecommitdiff
path: root/gcc/opth-gen.awk
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/opth-gen.awk')
-rw-r--r--gcc/opth-gen.awk26
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk
index 6cea944bc49..83d19343e87 100644
--- a/gcc/opth-gen.awk
+++ b/gcc/opth-gen.awk
@@ -53,6 +53,7 @@ print ""
print "#ifndef OPTIONS_H"
print "#define OPTIONS_H"
print ""
+print "extern int target_flags;"
for (i = 0; i < n_opts; i++) {
name = var_name(flags[i]);
@@ -66,6 +67,31 @@ for (i = 0; i < n_opts; i++) {
}
+masknum = 0
+for (i = 0; i < n_opts; i++) {
+ name = opt_args("Mask", flags[i])
+ if (name != "")
+ print "#define MASK_" name " (1 << " masknum++ ")"
+}
+if (masknum > 31)
+ print "#error too many target masks"
+print ""
+
+for (i = 0; i < n_opts; i++) {
+ name = opt_args("Mask", flags[i])
+ if (name != "")
+ print "#define TARGET_" name \
+ " ((target_flags & MASK_" name ") != 0)"
+}
+print ""
+
+for (i = 0; i < n_opts; i++) {
+ opt = opt_args("InverseMask", flags[i])
+ if (opt ~ ",")
+ print "#define TARGET_" nth_arg(1, opt) \
+ " ((target_flags & MASK_" nth_arg(0, opt) ") == 0)"
+}
+print ""
for (i = 0; i < n_langs; i++) {
macros[i] = "CL_" langs[i]