[Mesa-dev] [PATCH] glsl: use -O0 optimization for builtin_functions.cpp with MinGW
Nicolai Hähnle
nhaehnle at gmail.com
Fri Mar 31 06:03:19 UTC 2017
On 31.03.2017 05:26, Brian Paul wrote:
> On 03/30/2017 09:23 PM, Brian Paul wrote:
>> Some versions of MinGW-w64 such as 5.3.1 and 6.2.0 produce bad code
>> with -O2 or -O3 causing a random driver crash when running programs
>> that use GLSL. Most Mesa demos in the glsl/ directory trigger the
>> bug, but not the fragcoord.c test.
>>
>> Use a #pragma to force -O1 for this file for later MinGW versions.
>> Luckily, this is basically one-time setup code. I suspect the bug
>> is related to the sheer size of this file.
>>
>> This should let us move to newer versions of MinGW-w64 for Mesa.
>> ---
>> src/compiler/glsl/builtin_functions.cpp | 20 ++++++++++++++++++++
>> 1 file changed, 20 insertions(+)
>>
>> diff --git a/src/compiler/glsl/builtin_functions.cpp
>> b/src/compiler/glsl/builtin_functions.cpp
>> index e30509a..e32b18c 100644
>> --- a/src/compiler/glsl/builtin_functions.cpp
>> +++ b/src/compiler/glsl/builtin_functions.cpp
>> @@ -53,6 +53,26 @@
>> * name and parameters.
>> */
>>
>> +
>> +/**
>> + * Unfortunately, some versions of MinGW produce bad code if this file
>> + * is compiled with -O2 or -O3. The resulting driver will crash in
>> random
>> + * places if the app uses GLSL.
>> + * The work-around is to disable optimizations for just this file.
>> Luckily,
>> + * this code is basically just executed once.
>> + *
>> + * MinGW 4.6.3 (in Ubuntu 13.10) does not have this bug.
>> + * MinGW 5.3.1 (in Ubuntu 16.04) definitely has this bug.
>> + * MinGW 6.2.0 (in Ubuntu 16.10) definitely has this bug.
>> + * MinGW x.y.z - don't know. Assume versions after 4.6.x are buggy
>> + */
>> +
>> +#if defined(__MINGW32__) && ((__GNUC__ * 100) + __GNUC_MINOR >= 407)
>> +#warning "disabling optimizations for this file to work around
>> compiler bug"
>> +#pragma GCC optimize("O0")
>
> Ugh, that should be "O1". Fixed locally and verified.
Assuming the patch title is also changed:
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
>
> -Brian
>
>> +#endif
>> +
>> +
>> #include <stdarg.h>
>> #include <stdio.h>
>> #include "main/core.h" /* for struct gl_shader */
>>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
More information about the mesa-dev
mailing list