[Mesa-dev] [PATCH] i965: Fix union usage for GCC <= 4.6.

Matt Turner mattst88 at gmail.com
Fri Dec 5 18:56:27 PST 2014


On Fri, Dec 5, 2014 at 6:18 PM, Vinson Lee <vlee at freedesktop.org> wrote:
> This patch fixes this build error with GCC <= 4.6.
>
>   CXX    test_vf_float_conversions.o
> test_vf_float_conversions.cpp: In function ‘unsigned int f2u(float)’:
> test_vf_float_conversions.cpp:63:20: error: expected primary-expression before ‘.’ token
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86939
> Signed-off-by: Vinson Lee <vlee at freedesktop.org>
> ---
>  .../drivers/dri/i965/test_vf_float_conversions.cpp |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/i965/test_vf_float_conversions.cpp b/src/mesa/drivers/dri/i965/test_vf_float_conversions.cpp
> index 2ea36fd..6a8bcea 100644
> --- a/src/mesa/drivers/dri/i965/test_vf_float_conversions.cpp
> +++ b/src/mesa/drivers/dri/i965/test_vf_float_conversions.cpp
> @@ -60,7 +60,8 @@ union fu {
>  static unsigned
>  f2u(float f)
>  {
> -   union fu fu = { .f = f };
> +   union fu fu;
> +   fu.f = f;
>     return fu.u;
>  }

I'm surprised that this is necessary. Can someone point me to some
documentation that says that designated initializers for unions only
were added with gcc-4.7?

Jonathan, can you confirm that this is required? I suppose you didn't
notice because you didn't build with 'make check'?


More information about the mesa-dev mailing list