opt-functions.awk: fix comparison of limit, begin and end
authorJose E. Marchesi <jose.marchesi@oracle.com>
Mon, 9 Sep 2019 09:44:23 +0000 (11:44 +0200)
committerJose E. Marchesi <jemarch@gcc.gnu.org>
Mon, 9 Sep 2019 09:44:23 +0000 (11:44 +0200)
The function integer_range_info makes sure that, if provided, the
initial value fills in the especified range.  However, it is necessary
to convert the values to a numerical context before comparing, to make
sure awk is using arithmetical order and not lexicographical order.

gcc/ChangeLog:

      * opt-functions.awk (integer_range_info): Make sure values are in
      numeric context before operating with them.

From-SVN: r275503

gcc/ChangeLog
gcc/opt-functions.awk

index c39e0d4d55aae93c9552cd9ef7acc3e9010d8fc5..a8c3a2a2aab4a44bc0442941310e46873b7e3d79 100644 (file)
@@ -1,3 +1,8 @@
+2019-09-09  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+       * opt-functions.awk (integer_range_info): Make sure values are in
+       numeric context before operating with them.
+
 2019-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
 
        * genemit.c (gen_split): Print the filename and line number where the
index 1190e6d6b6688cd30221cf246d73822adccd5353..c1da80c648c31bbbef2724388b9e1ec33e0199a7 100644 (file)
@@ -346,9 +346,10 @@ function search_var_name(name, opt_numbers, opts, flags, n_opts)
 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))
+       ival = init + 0;
+       start = nth_arg(0, range_option) + 0;
+       end = nth_arg(1, range_option) + 0;
+       if (init != "" && init != "-1" && (ival < start || ival > end))
          print "#error initial value " init " of '" option "' must be in range [" start "," end "]"
        return start ", " end
     }