[5/5] clover: Dynamically calculate __OPENCL_VERSION__ and CLC language version

Submitted by Aaron Watry on March 1, 2018, 7:39 p.m.

Details

Message ID 20180301193908.17161-6-awatry@gmail.com
State New
Headers show
Series "A few clover fixes for both CTS and eventual 1.2 support" ( rev: 2 ) in Mesa

Not browsing as part of any series.

Commit Message

Aaron Watry March 1, 2018, 7:39 p.m.
Use get_language_version to calculate default cl standard based on
device capabilities and -cl-std specified in build options.

v4: Squash the __OPENCL_VERSION__ and CLC language version patches
v3: (Jan) Allow device_version up to 2.2 while device_clc_version
    only goes to 2.0
    Use get_cl_version to calculate version instead
v2: Split out from the previous patch (Pierre)

Signed-off-by: Aaron Watry <awatry@gmail.com>
CC: Pierre Moreau <pierre.morrow@free.fr>
CC: Jan Vesely <jan.vesely@rutgers.edu>
---
 src/gallium/state_trackers/clover/llvm/invocation.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Patch hide | download patch | download mbox

diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp
index 8d76f203de..f146695585 100644
--- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
+++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
@@ -194,7 +194,7 @@  namespace {
       compat::set_lang_defaults(c->getInvocation(), c->getLangOpts(),
                                 compat::ik_opencl, ::llvm::Triple(target.triple),
                                 c->getPreprocessorOpts(),
-                                clang::LangStandard::lang_opencl11);
+                                get_language_version(opts, device_clc_version));
 
       c->createDiagnostics(new clang::TextDiagnosticPrinter(
                               *new raw_string_ostream(r_log),
@@ -225,7 +225,9 @@  namespace {
       c.getPreprocessorOpts().Includes.push_back("clc/clc.h");
 
       // Add definition for the OpenCL version
-      c.getPreprocessorOpts().addMacroDef("__OPENCL_VERSION__=110");
+      c.getPreprocessorOpts().addMacroDef("__OPENCL_VERSION__=" +
+              std::to_string(get_cl_version(
+                                  dev.device_version()).version_number));
 
       // clc.h requires that this macro be defined:
       c.getPreprocessorOpts().addMacroDef("cl_clang_storage_class_specifiers");

Comments

ping.

This is the last of the series that still needs review.

--Aaron

On Thu, Mar 1, 2018 at 1:39 PM, Aaron Watry <awatry@gmail.com> wrote:
> Use get_language_version to calculate default cl standard based on
> device capabilities and -cl-std specified in build options.
>
> v4: Squash the __OPENCL_VERSION__ and CLC language version patches
> v3: (Jan) Allow device_version up to 2.2 while device_clc_version
>     only goes to 2.0
>     Use get_cl_version to calculate version instead
> v2: Split out from the previous patch (Pierre)
>
> Signed-off-by: Aaron Watry <awatry@gmail.com>
> CC: Pierre Moreau <pierre.morrow@free.fr>
> CC: Jan Vesely <jan.vesely@rutgers.edu>
> ---
>  src/gallium/state_trackers/clover/llvm/invocation.cpp | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> index 8d76f203de..f146695585 100644
> --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
> +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> @@ -194,7 +194,7 @@ namespace {
>        compat::set_lang_defaults(c->getInvocation(), c->getLangOpts(),
>                                  compat::ik_opencl, ::llvm::Triple(target.triple),
>                                  c->getPreprocessorOpts(),
> -                                clang::LangStandard::lang_opencl11);
> +                                get_language_version(opts, device_clc_version));
>
>        c->createDiagnostics(new clang::TextDiagnosticPrinter(
>                                *new raw_string_ostream(r_log),
> @@ -225,7 +225,9 @@ namespace {
>        c.getPreprocessorOpts().Includes.push_back("clc/clc.h");
>
>        // Add definition for the OpenCL version
> -      c.getPreprocessorOpts().addMacroDef("__OPENCL_VERSION__=110");
> +      c.getPreprocessorOpts().addMacroDef("__OPENCL_VERSION__=" +
> +              std::to_string(get_cl_version(
> +                                  dev.device_version()).version_number));
>
>        // clc.h requires that this macro be defined:
>        c.getPreprocessorOpts().addMacroDef("cl_clang_storage_class_specifiers");
> --
> 2.14.1
>
Oops, sorry.

Reviewed-by: Pierre Moreau <pierre.morrow@free.fr>

Thanks again for the series!
Pierre

On 2018-03-20 — 20:23, Aaron Watry wrote:
> ping.
> 
> This is the last of the series that still needs review.
> 
> --Aaron
> 
> On Thu, Mar 1, 2018 at 1:39 PM, Aaron Watry <awatry@gmail.com> wrote:
> > Use get_language_version to calculate default cl standard based on
> > device capabilities and -cl-std specified in build options.
> >
> > v4: Squash the __OPENCL_VERSION__ and CLC language version patches
> > v3: (Jan) Allow device_version up to 2.2 while device_clc_version
> >     only goes to 2.0
> >     Use get_cl_version to calculate version instead
> > v2: Split out from the previous patch (Pierre)
> >
> > Signed-off-by: Aaron Watry <awatry@gmail.com>
> > CC: Pierre Moreau <pierre.morrow@free.fr>
> > CC: Jan Vesely <jan.vesely@rutgers.edu>
> > ---
> >  src/gallium/state_trackers/clover/llvm/invocation.cpp | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> > index 8d76f203de..f146695585 100644
> > --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
> > +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> > @@ -194,7 +194,7 @@ namespace {
> >        compat::set_lang_defaults(c->getInvocation(), c->getLangOpts(),
> >                                  compat::ik_opencl, ::llvm::Triple(target.triple),
> >                                  c->getPreprocessorOpts(),
> > -                                clang::LangStandard::lang_opencl11);
> > +                                get_language_version(opts, device_clc_version));
> >
> >        c->createDiagnostics(new clang::TextDiagnosticPrinter(
> >                                *new raw_string_ostream(r_log),
> > @@ -225,7 +225,9 @@ namespace {
> >        c.getPreprocessorOpts().Includes.push_back("clc/clc.h");
> >
> >        // Add definition for the OpenCL version
> > -      c.getPreprocessorOpts().addMacroDef("__OPENCL_VERSION__=110");
> > +      c.getPreprocessorOpts().addMacroDef("__OPENCL_VERSION__=" +
> > +              std::to_string(get_cl_version(
> > +                                  dev.device_version()).version_number));
> >
> >        // clc.h requires that this macro be defined:
> >        c.getPreprocessorOpts().addMacroDef("cl_clang_storage_class_specifiers");
> > --
> > 2.14.1
> >
On Tue, 2018-03-20 at 20:23 -0500, Aaron Watry wrote:
> ping.
> 
> This is the last of the series that still needs review.

Hi,

sorry for the delay. I once again really dislike the approach of
implement and enable in separate patches, because it breaks bisection
(I think 4 and 5 should be squashed).

> 
> --Aaron
> 
> On Thu, Mar 1, 2018 at 1:39 PM, Aaron Watry <awatry@gmail.com> wrote:
> > Use get_language_version to calculate default cl standard based on
> > device capabilities and -cl-std specified in build options.
> > 
> > v4: Squash the __OPENCL_VERSION__ and CLC language version patches
> > v3: (Jan) Allow device_version up to 2.2 while device_clc_version
> >     only goes to 2.0
> >     Use get_cl_version to calculate version instead
> > v2: Split out from the previous patch (Pierre)
> > 
> > Signed-off-by: Aaron Watry <awatry@gmail.com>
> > CC: Pierre Moreau <pierre.morrow@free.fr>
> > CC: Jan Vesely <jan.vesely@rutgers.edu>
> > ---
> >  src/gallium/state_trackers/clover/llvm/invocation.cpp | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> > index 8d76f203de..f146695585 100644
> > --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
> > +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> > @@ -194,7 +194,7 @@ namespace {
> >        compat::set_lang_defaults(c->getInvocation(), c->getLangOpts(),
> >                                  compat::ik_opencl, ::llvm::Triple(target.triple),
> >                                  c->getPreprocessorOpts(),
> > -                                clang::LangStandard::lang_opencl11);
> > +                                get_language_version(opts, device_clc_version));

why is this necessary? clang handles multiple -cl-std= arguments fine
(takes the last on the commandline), so why can't we just prepend -cl-
std=$device_clc_version to the list of arguments? (or set it in
set_lang_defaults if it works the same).

Jan

> > 
> >        c->createDiagnostics(new clang::TextDiagnosticPrinter(
> >                                *new raw_string_ostream(r_log),
> > @@ -225,7 +225,9 @@ namespace {
> >        c.getPreprocessorOpts().Includes.push_back("clc/clc.h");
> > 
> >        // Add definition for the OpenCL version
> > -      c.getPreprocessorOpts().addMacroDef("__OPENCL_VERSION__=110");
> > +      c.getPreprocessorOpts().addMacroDef("__OPENCL_VERSION__=" +
> > +              std::to_string(get_cl_version(
> > +                                  dev.device_version()).version_number));
> > 
> >        // clc.h requires that this macro be defined:
> >        c.getPreprocessorOpts().addMacroDef("cl_clang_storage_class_specifiers");
> > --
> > 2.14.1
> >
Aaron, this patch breaks the meson build-test in our CI:

 ../src/gallium/state_trackers/clover/llvm/invocation.cpp:88:36: error: ‘lang_opencl10’ is not a member of ‘clang::LangStandard’
         { 100, clang::LangStandard::lang_opencl10},

configured with:

meson -Dbuild-tests=true -Dgallium-drivers=r300,r600,radeonsi,nouveau,swrast,swr,freedreno,vc4,pl111,etnaviv,imx,svga,virgl -Dgallium-vdpau=true -Dgallium-xvmc=true -Dgallium-xa=true -Dgallium-va=true -Dgallium-nine=true -Dgallium-opencl=standalone -Dgallium-omx=bellagio

Pierre Moreau <pierre.morrow@free.fr> writes:

> Oops, sorry.
>
> Reviewed-by: Pierre Moreau <pierre.morrow@free.fr>
>
> Thanks again for the series!
> Pierre
>
> On 2018-03-20 — 20:23, Aaron Watry wrote:
>> ping.
>> 
>> This is the last of the series that still needs review.
>> 
>> --Aaron
>> 
>> On Thu, Mar 1, 2018 at 1:39 PM, Aaron Watry <awatry@gmail.com> wrote:
>> > Use get_language_version to calculate default cl standard based on
>> > device capabilities and -cl-std specified in build options.
>> >
>> > v4: Squash the __OPENCL_VERSION__ and CLC language version patches
>> > v3: (Jan) Allow device_version up to 2.2 while device_clc_version
>> >     only goes to 2.0
>> >     Use get_cl_version to calculate version instead
>> > v2: Split out from the previous patch (Pierre)
>> >
>> > Signed-off-by: Aaron Watry <awatry@gmail.com>
>> > CC: Pierre Moreau <pierre.morrow@free.fr>
>> > CC: Jan Vesely <jan.vesely@rutgers.edu>
>> > ---
>> >  src/gallium/state_trackers/clover/llvm/invocation.cpp | 6 ++++--
>> >  1 file changed, 4 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp
>> > index 8d76f203de..f146695585 100644
>> > --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
>> > +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
>> > @@ -194,7 +194,7 @@ namespace {
>> >        compat::set_lang_defaults(c->getInvocation(), c->getLangOpts(),
>> >                                  compat::ik_opencl, ::llvm::Triple(target.triple),
>> >                                  c->getPreprocessorOpts(),
>> > -                                clang::LangStandard::lang_opencl11);
>> > +                                get_language_version(opts, device_clc_version));
>> >
>> >        c->createDiagnostics(new clang::TextDiagnosticPrinter(
>> >                                *new raw_string_ostream(r_log),
>> > @@ -225,7 +225,9 @@ namespace {
>> >        c.getPreprocessorOpts().Includes.push_back("clc/clc.h");
>> >
>> >        // Add definition for the OpenCL version
>> > -      c.getPreprocessorOpts().addMacroDef("__OPENCL_VERSION__=110");
>> > +      c.getPreprocessorOpts().addMacroDef("__OPENCL_VERSION__=" +
>> > +              std::to_string(get_cl_version(
>> > +                                  dev.device_version()).version_number));
>> >
>> >        // clc.h requires that this macro be defined:
>> >        c.getPreprocessorOpts().addMacroDef("cl_clang_storage_class_specifiers");
>> > --
>> > 2.14.1
>> >
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
On Wed, Mar 21, 2018 at 2:37 PM, Mark Janes <mark.a.janes@intel.com> wrote:
> Aaron, this patch breaks the meson build-test in our CI:
>
>  ../src/gallium/state_trackers/clover/llvm/invocation.cpp:88:36: error: ‘lang_opencl10’ is not a member of ‘clang::LangStandard’
>          { 100, clang::LangStandard::lang_opencl10},
>
> configured with:
>
> meson -Dbuild-tests=true -Dgallium-drivers=r300,r600,radeonsi,nouveau,swrast,swr,freedreno,vc4,pl111,etnaviv,imx,svga,virgl -Dgallium-vdpau=true -Dgallium-xvmc=true -Dgallium-xa=true -Dgallium-va=true -Dgallium-nine=true -Dgallium-opencl=standalone -Dgallium-omx=bellagio

I've seen issues with building clover in the past when an incomplete
set of clang headers is installed. This happens to be the case with at
least Ubuntu's stock packaged clang. I'm not really sure what your CI
system is running, but I did just verify that I was able to build my
full mesa stack in meson with the following build configuration (what
my normal build script uses when I tell it to use its meson path):

CXXFLAGS=' -O2' CFLAGS=' -O2 -march=native' LD='ld.gold' LDFLAGS=''
CC='gcc' CXX='g++' meson --prefix /usr/local -D dri-drivers=
--sysconfdir /etc --libdir /usr/local/lib --buildtype release
--buildtype release -D gallium-opencl=icd -D gles1=true -D gles2=true
-D texture-float=true -D gallium-va=true -D gallium-xvmc=false -D
build-tests=true -D gallium-drivers=radeonsi,r600,swrast -D
vulkan-drivers=radeon ../

That being said, I'm building against an llvm/clang 7.0 build
installed in /usr/local which meson picks up in preference to the
system headers.

--Aaron

>
> Pierre Moreau <pierre.morrow@free.fr> writes:
>
>> Oops, sorry.
>>
>> Reviewed-by: Pierre Moreau <pierre.morrow@free.fr>
>>
>> Thanks again for the series!
>> Pierre
>>
>> On 2018-03-20 — 20:23, Aaron Watry wrote:
>>> ping.
>>>
>>> This is the last of the series that still needs review.
>>>
>>> --Aaron
>>>
>>> On Thu, Mar 1, 2018 at 1:39 PM, Aaron Watry <awatry@gmail.com> wrote:
>>> > Use get_language_version to calculate default cl standard based on
>>> > device capabilities and -cl-std specified in build options.
>>> >
>>> > v4: Squash the __OPENCL_VERSION__ and CLC language version patches
>>> > v3: (Jan) Allow device_version up to 2.2 while device_clc_version
>>> >     only goes to 2.0
>>> >     Use get_cl_version to calculate version instead
>>> > v2: Split out from the previous patch (Pierre)
>>> >
>>> > Signed-off-by: Aaron Watry <awatry@gmail.com>
>>> > CC: Pierre Moreau <pierre.morrow@free.fr>
>>> > CC: Jan Vesely <jan.vesely@rutgers.edu>
>>> > ---
>>> >  src/gallium/state_trackers/clover/llvm/invocation.cpp | 6 ++++--
>>> >  1 file changed, 4 insertions(+), 2 deletions(-)
>>> >
>>> > diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp
>>> > index 8d76f203de..f146695585 100644
>>> > --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
>>> > +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
>>> > @@ -194,7 +194,7 @@ namespace {
>>> >        compat::set_lang_defaults(c->getInvocation(), c->getLangOpts(),
>>> >                                  compat::ik_opencl, ::llvm::Triple(target.triple),
>>> >                                  c->getPreprocessorOpts(),
>>> > -                                clang::LangStandard::lang_opencl11);
>>> > +                                get_language_version(opts, device_clc_version));
>>> >
>>> >        c->createDiagnostics(new clang::TextDiagnosticPrinter(
>>> >                                *new raw_string_ostream(r_log),
>>> > @@ -225,7 +225,9 @@ namespace {
>>> >        c.getPreprocessorOpts().Includes.push_back("clc/clc.h");
>>> >
>>> >        // Add definition for the OpenCL version
>>> > -      c.getPreprocessorOpts().addMacroDef("__OPENCL_VERSION__=110");
>>> > +      c.getPreprocessorOpts().addMacroDef("__OPENCL_VERSION__=" +
>>> > +              std::to_string(get_cl_version(
>>> > +                                  dev.device_version()).version_number));
>>> >
>>> >        // clc.h requires that this macro be defined:
>>> >        c.getPreprocessorOpts().addMacroDef("cl_clang_storage_class_specifiers");
>>> > --
>>> > 2.14.1
>>> >
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
On Wed, Mar 21, 2018 at 2:52 PM, Aaron Watry <awatry@gmail.com> wrote:
> On Wed, Mar 21, 2018 at 2:37 PM, Mark Janes <mark.a.janes@intel.com> wrote:
>> Aaron, this patch breaks the meson build-test in our CI:
>>
>>  ../src/gallium/state_trackers/clover/llvm/invocation.cpp:88:36: error: ‘lang_opencl10’ is not a member of ‘clang::LangStandard’
>>          { 100, clang::LangStandard::lang_opencl10},
>>
>> configured with:
>>
>> meson -Dbuild-tests=true -Dgallium-drivers=r300,r600,radeonsi,nouveau,swrast,swr,freedreno,vc4,pl111,etnaviv,imx,svga,virgl -Dgallium-vdpau=true -Dgallium-xvmc=true -Dgallium-xa=true -Dgallium-va=true -Dgallium-nine=true -Dgallium-opencl=standalone -Dgallium-omx=bellagio
>
> I've seen issues with building clover in the past when an incomplete
> set of clang headers is installed. This happens to be the case with at
> least Ubuntu's stock packaged clang. I'm not really sure what your CI
> system is running, but I did just verify that I was able to build my
> full mesa stack in meson with the following build configuration (what
> my normal build script uses when I tell it to use its meson path):
>
> CXXFLAGS=' -O2' CFLAGS=' -O2 -march=native' LD='ld.gold' LDFLAGS=''
> CC='gcc' CXX='g++' meson --prefix /usr/local -D dri-drivers=
> --sysconfdir /etc --libdir /usr/local/lib --buildtype release
> --buildtype release -D gallium-opencl=icd -D gles1=true -D gles2=true
> -D texture-float=true -D gallium-va=true -D gallium-xvmc=false -D
> build-tests=true -D gallium-drivers=radeonsi,r600,swrast -D
> vulkan-drivers=radeon ../
>
> That being said, I'm building against an llvm/clang 7.0 build
> installed in /usr/local which meson picks up in preference to the
> system headers.

I think I see what's going on.  The opencl 1.0 language standard was
renamed in clang/Frontend/LangStandards.def between clang 4.0 and 5.0.

It used to just be opencl, now it's opencl10 in clang 5+.  I'll work
on a patch to use the clang version to switch the definition out
appropriately.

--Aaron

>
> --Aaron
>
>>
>> Pierre Moreau <pierre.morrow@free.fr> writes:
>>
>>> Oops, sorry.
>>>
>>> Reviewed-by: Pierre Moreau <pierre.morrow@free.fr>
>>>
>>> Thanks again for the series!
>>> Pierre
>>>
>>> On 2018-03-20 — 20:23, Aaron Watry wrote:
>>>> ping.
>>>>
>>>> This is the last of the series that still needs review.
>>>>
>>>> --Aaron
>>>>
>>>> On Thu, Mar 1, 2018 at 1:39 PM, Aaron Watry <awatry@gmail.com> wrote:
>>>> > Use get_language_version to calculate default cl standard based on
>>>> > device capabilities and -cl-std specified in build options.
>>>> >
>>>> > v4: Squash the __OPENCL_VERSION__ and CLC language version patches
>>>> > v3: (Jan) Allow device_version up to 2.2 while device_clc_version
>>>> >     only goes to 2.0
>>>> >     Use get_cl_version to calculate version instead
>>>> > v2: Split out from the previous patch (Pierre)
>>>> >
>>>> > Signed-off-by: Aaron Watry <awatry@gmail.com>
>>>> > CC: Pierre Moreau <pierre.morrow@free.fr>
>>>> > CC: Jan Vesely <jan.vesely@rutgers.edu>
>>>> > ---
>>>> >  src/gallium/state_trackers/clover/llvm/invocation.cpp | 6 ++++--
>>>> >  1 file changed, 4 insertions(+), 2 deletions(-)
>>>> >
>>>> > diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp
>>>> > index 8d76f203de..f146695585 100644
>>>> > --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
>>>> > +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
>>>> > @@ -194,7 +194,7 @@ namespace {
>>>> >        compat::set_lang_defaults(c->getInvocation(), c->getLangOpts(),
>>>> >                                  compat::ik_opencl, ::llvm::Triple(target.triple),
>>>> >                                  c->getPreprocessorOpts(),
>>>> > -                                clang::LangStandard::lang_opencl11);
>>>> > +                                get_language_version(opts, device_clc_version));
>>>> >
>>>> >        c->createDiagnostics(new clang::TextDiagnosticPrinter(
>>>> >                                *new raw_string_ostream(r_log),
>>>> > @@ -225,7 +225,9 @@ namespace {
>>>> >        c.getPreprocessorOpts().Includes.push_back("clc/clc.h");
>>>> >
>>>> >        // Add definition for the OpenCL version
>>>> > -      c.getPreprocessorOpts().addMacroDef("__OPENCL_VERSION__=110");
>>>> > +      c.getPreprocessorOpts().addMacroDef("__OPENCL_VERSION__=" +
>>>> > +              std::to_string(get_cl_version(
>>>> > +                                  dev.device_version()).version_number));
>>>> >
>>>> >        // clc.h requires that this macro be defined:
>>>> >        c.getPreprocessorOpts().addMacroDef("cl_clang_storage_class_specifiers");
>>>> > --
>>>> > 2.14.1
>>>> >
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev@lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev