This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH V4 02/11] opt-functions.awk: fix comparison of limit, begin and end


    
    >  function integer_range_info(range_option, init, option)
    >  {
    >      if (range_option != "") {
    > -       start = nth_arg(0, range_option);
    > -       end = nth_arg(1, range_option);
    > +       init = init + 0;
    > +       start = nth_arg(0, range_option) + 0;
    > +       end = nth_arg(1, range_option) + 0;
    >         if (init != "" && init != "-1" && (init < start || init > end))
    
    
    In this case the test for init != "" is at least unnecessary.

Right! Thanks for noticing.

    Maybe something else has to be used.  I didn't trace the uses but if init
    is deliberately set to "" then the test would have to be replaced with init
    != 0.

Hm, in principle Init() can specify any non-negative number, including
0... what about a conservative approach that fixes the ordering problem
but leaves the "special cases" -1 and "" with exactly the same semantics
than before:

function integer_range_info(range_option, init, option)
{
    if (range_option != "") {
	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
    }
    else
        return "-1, -1"
}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]