[Mesa-dev] [PATCH] glsl: empty declarations should be valid

Chad Versace chad at chad-versace.us
Thu Aug 4 21:48:05 PDT 2011

On 08/04/2011 06:18 PM, Chad Versace wrote:
> On 08/04/2011 01:29 PM, Eric Anholt wrote:
>> On Thu,  4 Aug 2011 12:59:35 +0900, Chia-I Wu <olvaffe at gmail.com> wrote:
>>> From: Chia-I Wu <olv at lunarg.com>
>>> Unlike C++, empty declarations such as
>>>   float;
>>> should be valid.  The spec is not explicit about this actually.
>>> Some apps that generate their shader sources may rely on this.  This was
>>> noted when porting one of them to Linux from Windows.
>> Ew.  Looking the GLSL 1.20 spec, I see:
>> statement:
>>         declaration_statement
>> declaration_statement:
>>         declaration
>> declaration:
>>         init_declarator_list SEMICOLON
>> init_declarator_list:
>>         single_declaration
>> single_declaration:
>>         fully_specified_type
>>         fully_specified_type IDENTIFIER
>> so it looks like that is actually valid code.  That's awful.
> I first suspected that this was a spec grammar bug. But it is still present in
> the GLSL 4.10 spec, so it's unlikely to be a bug.
> Surprisingly, C also allows empty declarations. Compiling this
>     float;
>     int main() { return 0; }
> with `gcc --std=c99` succeeds and emits this warning:
>      warning: useless type name in empty declaration [enabled by default]
> I hate to say this, but I believe the spec grammar intentionally allows empty
> declarations. C allows it, and GLSL tries to mimic C.
> Even though I don't like empty declarations, this patch is
> Reviewed-by: Chad Versace <chad at chad-versace.us>

Also, please update the commit message to say that `gcc --std=c99` allows empty
declrations and include the appropriate quotation from the GLSL 1.20 spec's
grammar. Without that extra info, someone may stumble onto this commit and say WTF.

Chad Versace
chad at chad-versace.us

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 900 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20110804/24627f7d/attachment-0001.pgp>

More information about the mesa-dev mailing list