[Mesa-dev] Use of nested functions in nouveau_array.c

Brian Paul brianp at vmware.com
Thu Dec 1 06:46:52 PST 2011


On 12/01/2011 07:36 AM, İsmail Dönmez wrote:
> Hi;
>
> On Wed, Nov 9, 2011 at 8:08 PM, İsmail Dönmez <ismail at namtrac.org
> <mailto:ismail at namtrac.org>> wrote:
>
>     Another thing to notice that nested functions require executable
>     stack. This is also another reason to get rid of them.
>
>     On Wed, Nov 9, 2011 at 3:11 PM, İsmail Dönmez <ismail at namtrac.org
>     <mailto:ismail at namtrac.org>> wrote:
>
>         Hi;
>
>         nouveau_array.c seems to be using nested functions which is
>         not supported by clang (or the EDG based compilers it seems),
>         the reduced testcase looks like this:
>
>         foo()
>         {
>              auto void f();
>              void f() {};
>         }
>
>         I talked to the clang developers and they don't plan to
>         support this GNU extension since (they say) it would be too
>         hard to support it in the parser. Clang website notes the
>         following about this issue (from
>         http://clang.llvm.org/docs/UsersManual.html#c_unimpl_gcc )
>
>         <quote>
>         clang does not support nested functions; this is a complex
>         feature which is infrequently used, so it is unlikely to be
>         implemented anytime soon.
>         </quote>
>
>         Is there any chance of removing such code from Mesa?
>
>
> Would be nice to get a comment on this.

I imagine you're the first person to try to compile that driver with 
clang because nobody else has mentioned this before.

I don't think anyone would object to the code being rewritten to avoid 
nested functions.  Is that something that you could do?

-Brian


More information about the mesa-dev mailing list