From 4bc8aadf033c7dbbbb16ba99e3260da0c0fd39bf Mon Sep 17 00:00:00 2001 From: "Jose E. Marchesi" Date: Mon, 9 Sep 2019 11:44:23 +0200 Subject: [PATCH] opt-functions.awk: fix comparison of limit, begin and end 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 | 5 +++++ gcc/opt-functions.awk | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c39e0d4d55a..a8c3a2a2aab 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2019-09-09 Jose E. Marchesi + + * opt-functions.awk (integer_range_info): Make sure values are in + numeric context before operating with them. + 2019-09-08 Segher Boessenkool * genemit.c (gen_split): Print the filename and line number where the diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk index 1190e6d6b66..c1da80c648c 100644 --- a/gcc/opt-functions.awk +++ b/gcc/opt-functions.awk @@ -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 } -- 2.30.2