From 6793908a3f243c846c516f9b0c4a05d1a6dedd25 Mon Sep 17 00:00:00 2001 From: Hein-Pieter van Braam Date: Fri, 18 Jan 2019 16:22:22 +0100 Subject: Work around a GCC optimizer bug at -O3 This bug has been reported upstream, once it gets fixed we'll add some version guards to only disable this for specific GCC versions. This fixes #19633 --- drivers/gles3/rasterizer_scene_gles3.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'drivers/gles3') diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index 0e030d13a5..d1d063ad5b 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -2677,6 +2677,11 @@ void RasterizerSceneGLES3::_setup_environment(Environment *env, const CameraMatr glBindBuffer(GL_UNIFORM_BUFFER, 0); } +// Drop -O3 for this function as it triggers a GCC bug up until at least GCC 8.2.1. +// This refers to GH issue #19633. +// The bug has been reported to the GCC project. +#pragma GCC push_options +#pragma GCC optimize ("-O2") void RasterizerSceneGLES3::_setup_directional_light(int p_index, const Transform &p_camera_inverse_transform, bool p_use_shadows) { LightInstance *li = directional_lights[p_index]; @@ -2794,6 +2799,7 @@ void RasterizerSceneGLES3::_setup_directional_light(int p_index, const Transform glBindBufferBase(GL_UNIFORM_BUFFER, 3, state.directional_ubo); } +#pragma GCC pop_options void RasterizerSceneGLES3::_setup_lights(RID *p_light_cull_result, int p_light_cull_count, const Transform &p_camera_inverse_transform, const CameraMatrix &p_camera_projection, RID p_shadow_atlas) { -- cgit v1.2.3