diff options
Diffstat (limited to 'gcc/opt-functions.awk')
-rw-r--r-- | gcc/opt-functions.awk | 51 |
1 files changed, 36 insertions, 15 deletions
diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk index f5f5cd4656e..19bdf3afb06 100644 --- a/gcc/opt-functions.awk +++ b/gcc/opt-functions.awk @@ -42,6 +42,16 @@ function test_flag(regex, flags, string) return "" } +# Return a field initializer, with trailing comma, for a field that is +# 1 if FLAGS contains a flag matching REGEX and 0 otherwise. +function flag_init(regex, flags) +{ + if (flag_set_p(regex, flags)) + return "1 /* " regex " */, " + else + return "0, " +} + # If FLAGS contains a "NAME(...argument...)" flag, return the value # of the argument. Return the empty string otherwise. function opt_args(name, flags) @@ -87,27 +97,38 @@ function switch_flags (flags) test_flag("Common", flags, " | CL_COMMON") \ test_flag("Target", flags, " | CL_TARGET") \ test_flag("Driver", flags, " | CL_DRIVER") \ - test_flag("RejectDriver", flags, " | CL_REJECT_DRIVER") \ - test_flag("NoDriverArg", flags, " | CL_NO_DRIVER_ARG") \ - test_flag("SeparateAlias", flags, " | CL_SEPARATE_ALIAS") \ - test_flag("NegativeAlias", flags, " | CL_NEGATIVE_ALIAS") \ - test_flag("Save", flags, " | CL_SAVE") \ test_flag("Joined", flags, " | CL_JOINED") \ - test_flag("JoinedOrMissing", flags, " | CL_JOINED | CL_MISSING_OK") \ + test_flag("JoinedOrMissing", flags, " | CL_JOINED") \ test_flag("Separate", flags, " | CL_SEPARATE") \ - test_flag("RejectNegative", flags, " | CL_REJECT_NEGATIVE") \ - test_flag("UInteger", flags, " | CL_UINTEGER") \ test_flag("Undocumented", flags, " | CL_UNDOCUMENTED") \ test_flag("Warning", flags, " | CL_WARNING") \ - test_flag("Optimization", flags, " | CL_OPTIMIZATION") \ - test_flag("Report", flags, " | CL_REPORT") + test_flag("Optimization", flags, " | CL_OPTIMIZATION") + sub( "^0 \\| ", "", result ) + return result +} + +# Return bit-field initializers for option flags FLAGS. +function switch_bit_fields (flags) +{ + result = "" sep_args = opt_args("Args", flags) - if (sep_args != "") { + if (sep_args == "") + sep_args = 0 + else sep_args-- - result = result " | (" sep_args \ - " << CL_SEPARATE_NARGS_SHIFT)" - } - sub( "^0 \\| ", "", result ) + result = result sep_args ", " + + result = result \ + flag_init("SeparateAlias", flags) \ + flag_init("NegativeAlias", flags) \ + flag_init("NoDriverArg", flags) \ + flag_init("RejectDriver", flags) \ + flag_init("RejectNegative", flags) \ + flag_init("JoinedOrMissing", flags) \ + flag_init("UInteger", flags) \ + flag_init("Report", flags) + + sub(", $", "", result) return result } |