On 09/02/15 19:17, Ian Romanick wrote:
On 02/06/2015 11:46 AM, Jose Fonseca wrote:
I haven't tried this sort of code with MSVC 2013 U4, but at least in the
past, MSVC 2013 was refusing certain kinds of variable length arrays.
And Jan's patch is a stepping stone to -Wvla option when compiling
(option which apply to the whole tree, including parts that are not
built with MSVC), in order to preemptively spot uses of VLA in places
where MSVC would break.
In Mesa, we can change compiler options in subdirectories. Is it
possible to do this with cmake? Like, could we remove -Wvla in
directories that are only built on Linux? It seems like that could give
us the best of both worlds...
Yes, I just confirmed that MSVC 2013 U4 still fails to compile VLA code
and was about to propose something similar.
In theory this
string (REPLACE "-Wvla" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
should undo. And it does work. But there's a minor snafu: this line
must be put in the tests/spec/foo/CMakeLists.txt -- if it's put in the
tests/spec/foo/CMakeLists.gl*.txt it has no effect -- CMAKE_C_FLAGS is
changed, but the source files are still build with -Wvla.
(I'm always amazed that the CMakeLists.txt -> CMakeLists.gl*.txt system
works!)
So let me do the following: I'll see if MSVC 2013 accepts or refuses the
VLA code that caused problems the first time, and then we'll take it
from there.
Jose
For the record these were MSVC errors:
AILED: C:\PROGRA~2\MICROS~4.0\VC\bin\cl.exe /nologo /DWIN32 /D_WINDOWS
/W3 /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 -I..\..\src
-IH:\msvc32\freeglut\include -Itests\util -I..\..\tests\util
-IH:\noarch\glext -W3 -wd4018 -wd4244 -wd4305 -wd4800 /showIncludes
-DGLAPIENTRY=__stdcall -DNOMINMAX -DPIGLIT_USE_GLUT
-DPIGLIT_USE_GLUT_INIT_ERROR_FUNC -DPIGLIT_USE_OPENGL
-DWIN32_LEAN_AND_MEAN=1 -D_CRT_NONSTDC_NO_WARNINGS
-D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_GNU_SOURCE
-D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES
/Fotarget_api\gl\tests\spec\gl-1.0\CMakeFiles\gl-1.0-readpixsanity.dir\readpix.c.obj
/Fdtarget_api\gl\tests\spec\gl-1.0\CMakeFiles\gl-1.0-readpixsanity.dir/
/FS -c ..\..\tests\spec\gl-1.0\readpix.c
..\..\tests\spec\gl-1.0\readpix.c(103) : error C2057: expected constant
expression
..\..\tests\spec\gl-1.0\readpix.c(103) : error C2466: cannot allocate an
array of constant size 0
..\..\tests\spec\gl-1.0\readpix.c(103) : error C2087: 'buf' : missing
subscript
..\..\tests\spec\gl-1.0\readpix.c(103) : error C2133: 'buf' : unknown size
..\..\tests\spec\gl-1.0\readpix.c(200) : error C2057: expected constant
expression
..\..\tests\spec\gl-1.0\readpix.c(200) : error C2466: cannot allocate an
array of constant size 0
..\..\tests\spec\gl-1.0\readpix.c(200) : error C2087: 'buf' : missing
subscript
..\..\tests\spec\gl-1.0\readpix.c(200) : error C2133: 'buf' : unknown size
..\..\tests\spec\gl-1.0\readpix.c(281) : error C2057: expected constant
expression
..\..\tests\spec\gl-1.0\readpix.c(281) : error C2466: cannot allocate an
array of constant size 0
..\..\tests\spec\gl-1.0\readpix.c(281) : error C2087: 'buf' : missing
subscript
..\..\tests\spec\gl-1.0\readpix.c(281) : error C2133: 'buf' : unknown size
So there's no doubt here: by expecting a constant expression it is clear
that MSVC does not support VLA at all.
Jose
_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/piglit