Validate that Init value is within range defined by IntegerRange.
authorMartin Liska <mliska@suse.cz>
Thu, 27 Jul 2017 12:58:07 +0000 (14:58 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Thu, 27 Jul 2017 12:58:07 +0000 (12:58 +0000)
2017-07-27  Martin Liska  <mliska@suse.cz>

* opt-functions.awk: Add validation of value of Init.
* optc-gen.awk: Pass new argument.

From-SVN: r250625

gcc/ChangeLog
gcc/opt-functions.awk
gcc/optc-gen.awk

index bcfe5f8fb2e72a74190a4a69aed5b1f64086fe89..3beab6c5251c8c66cb76d9aecbc7fc4bcce8e7fb 100644 (file)
@@ -3,6 +3,11 @@
        * config/sparc/sparc.c (sparc_option_override): Set MASK_FSMULD flag
        earlier and only if MASK_FPU is set.  Adjust formatting.
 
+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):
index ad0b52c090323913be0e8538893a34c5159d8f39..5ee93f12febb1cf149b45adcd0e768f863bc50ee 100644 (file)
@@ -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
index 45b1b95e7ec2f7a01afa6f4e26d769ff8c3c219d..3cb0005ba40d4e9d22c1270113c115026ce684ad 100644 (file)
@@ -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 "};"