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

Reply via email to