[PATCH] Fix driver handling of multiple -ftree-parallelize-loops=<n> options (PR driver/69805)

Jeff Law law@redhat.com
Fri Feb 19 22:15:00 GMT 2016


On 02/16/2016 08:24 AM, Jakub Jelinek wrote:
> Hi!
>
> As mentioned in the PR, %{ftree-parallelize-loops=*} expands to
> all -ftree-parallelize-loops= options, not just the last one.
> So greater_than_spec_func is actually called say for
> -ftree-parallelize-loops=0 -ftree-parallelize-loops=2 with
> - ftree-parallelize-loops=0 - ftree-parallelize-loops=2 1
> (each whitespace separated sequence separate arg), but it asserts
> it sees just 3 arguments.
> Passing the - and ftree-parallelize-loops= stuff looks weird,
> and we have %* that substitutes just the variable part of the option,
> so in addition to fixing the case of multiple options I've also changed
> %:gt() behaviour, so that it now gets just the numbers and compares the
> last two of them.  So for the above options it would be called with
> 0 2 1
> and would compare
> 2 > 1
> and return "", or for
> -ftree-parallelize-loops=2 -ftree-parallelize-loops=0 -ftree-parallelize-loops=1
> would be
> 2 0 1 1
> and compare
> 1 > 1
> and return NULL. %:gt() is not used anywhere else, and has been introduced
> only in GCC 6.
>
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
>
> 2016-02-16  Jakub Jelinek  <jakub@redhat.com>
>
> 	PR driver/69805
> 	* gcc.c (LINK_COMMAND_SPEC, GOMP_SELF_SPECS): Use
> 	:%* in %:gt() argument.
> 	(greater_than_spec_func): Adjust for expecting only numbers,
> 	if there are more than two numbers, compare the last two.
>
> 	* testsuite/libgomp.c/pr69805.c: New test.
I'll note that Tom ack'd in c#3, and he certainly know this 
functionality better than I.  So OK for trunk.

Jeff



More information about the Gcc-patches mailing list