[Mesa-dev] [PATCH 01/13] i965: Add a dependency on libisl

Chad Versace chad.versace at intel.com
Fri Apr 22 18:19:04 UTC 2016


On 04/22/2016 10:50 AM, Jason Ekstrand wrote:
> 
> 
> On Fri, Apr 22, 2016 at 10:15 AM, Jonathan Gray <jsg at jsg.id.au
> <mailto:jsg at jsg.id.au>> wrote:
> 
> On Fri, Apr 22, 2016 at 05:31:29PM +0100, Emil Velikov wrote:
>> On 22 April 2016 at 16:08, Jonathan Gray <jsg at jsg.id.au
>> <mailto:jsg at jsg.id.au>> wrote:
>>> It is worth noting that the isl code extensively requires
>>> designated initialisers on anonymous structs.  It isn't clear to
>>> me when gcc introduced support for this but it isn't in 4.2.
>>> 
>> I think it should work for GCC 4.2 with -fms-extensions. We used
>> to set -std=gnu99 for pre 4.6 which effectively enables it the
>> extension. Can you double-check ?
> 
> The part that sets gnu99 for < gcc 4.6 is still there, using
> -fms-extensions does not help for these. 


> At least for the errors you're seeing there, I see two options:  1)
> Use the isl_extentNd constructor functions in isl.h.  2) Stop making
> isl_extentNd have anonymous unions.  I'm not sure how much the
> anonymous unions are really doing for us but I'd like chad to chip in
> before we throw them out.

I like the anonymous unions because they make some equations more concise.
But, they don't provide anymore than that. I'll accept patches to remove
them, as other people have also commented on their awkwardness.
 
> Here's another question: I know BSD doesn't ship gcc newer than 4.2
> for license issues, but do you have a recent version of clang
> available?

GCC 4.2 was released in 2007, and BSD won't upgrade it due to GPLv3.
I believe it's unreasonable to promise Mesa will indefinitely restrict
all new code to the feature set provided by a 2007-era GCC. As the years
roll by, such a promise would become untenable.

Please try clang.

>>> Would you accept patches to remove them?
>> While I cannot comment if they're OK with the idea, there might be 
>> some confusion on the topic. There is anonymous and named. I
>> believe developers were against the latter. Examples form [1]
>> 
>> struct bar { int i; }; // (1) unnamed, but tagged, ie *not*
>> anonymous struct { int j; };     // (2) unnamed, but anonymous 
>> struct { int k; } baz; // (3) named, but not tagged
>> 
>> Fwiw it would be great to use the more portable solution. Would
>> C11 buy us anything ?

I believe that C11 does fix the problem. It standardized anonymous unions and structs.
However, if we need to support GCC 4.2, then we can't use C11. In fact, GCC's C11 support
is still incomplete as 5.0. I've discovered serious bugs as recently as GCC 4.9.



More information about the mesa-dev mailing list