summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>2017-07-27 12:58:07 +0000
committermarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>2017-07-27 12:58:07 +0000
commit8d0410c6e9f428d8e0775bd5b264cf506af15036 (patch)
treed0abe82458345300dd2046edaf27eb7b4e3b3b44
parentca4d23b5c76894d31f7e72fa896f5075f16abe09 (diff)
downloadgcc-8d0410c6e9f428d8e0775bd5b264cf506af15036.tar.gz
Validate that Init value is within range defined by IntegerRange.
2017-07-27 Martin Liska <mliska@suse.cz> * opt-functions.awk: Add validation of value of Init. * optc-gen.awk: Pass new argument. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250625 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/opt-functions.awk4
-rw-r--r--gcc/optc-gen.awk3
3 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bcfe5f8fb2e..3beab6c5251 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -5,6 +5,11 @@
2017-07-27 Martin Liska <mliska@suse.cz>
+ * opt-functions.awk: Add validation of value of Init.
+ * optc-gen.awk: Pass new argument.
+
+2017-07-27 Martin Liska <mliska@suse.cz>
+
* auto-profile.c (autofdo_source_profile::update_inlined_ind_target):
Fix wrong condition.
diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk
index ad0b52c0903..5ee93f12feb 100644
--- a/gcc/opt-functions.awk
+++ b/gcc/opt-functions.awk
@@ -314,11 +314,13 @@ function search_var_name(name, opt_numbers, opts, flags, n_opts)
return ""
}
-function integer_range_info(range_option)
+function integer_range_info(range_option, init, option)
{
if (range_option != "") {
start = nth_arg(0, range_option);
end = nth_arg(1, range_option);
+ if (init != "" && init != "-1" && (init < start || init > end))
+ print "#error initial value " init " of '" option "' must be in range [" start "," end "]"
return start ", " end
}
else
diff --git a/gcc/optc-gen.awk b/gcc/optc-gen.awk
index 45b1b95e7ec..3cb0005ba40 100644
--- a/gcc/optc-gen.awk
+++ b/gcc/optc-gen.awk
@@ -400,7 +400,8 @@ for (i = 0; i < n_opts; i++) {
" 0, %s,\n",
cl_flags, cl_bit_fields)
printf(" %s, %s, %s }%s\n", var_ref(opts[i], flags[i]),
- var_set(flags[i]), integer_range_info(opt_args("IntegerRange", flags[i])), comma)
+ var_set(flags[i]), integer_range_info(opt_args("IntegerRange", flags[i]),
+ opt_args("Init", flags[i]), opts[i]), comma)
}
print "};"