mesa/src/util
Nicolai Hähnle 98c348d26b st/glsl_to_tgsi: reduce stack explosion in recursive expression visitor
In optimized builds, visit(ir_expression *) experiences inlining with gcc that
leads the function to have a roughly 32KB stack frame. This is a problem given
that the function is called recursively. In non-optimized builds, the stack
frame is much smaller, hence one gets crashes that happen only in optimized
builds.

Arguably there is a compiler bug or at least severe misfeature here. In any
case, the easy thing to do for now seems to be moving the bulk of the
non-recursive code into a separate function. This is sufficient to convince my
version of gcc not to blow up the stack frame of the recursive part. Just to be
sure, add the gcc-specific noinline attribute to prevent this bug from
reoccuring if inliner heuristics change.

v2: put ATTRIBUTE_NOINLINE into macros.h

Cc: "11.1 11.2" <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95133
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95026
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92850
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Rob Clark <robdclark@gmail.com>
2016-04-29 11:52:59 -05:00
..
tests/hash_table util/hash_table: add _mesa_hash_table_clear (v4) 2016-02-03 14:03:25 +01:00
.gitignore
Android.mk
bitset.h util/bitset: Allow iterating over const bitsets 2016-03-24 15:20:44 -07:00
debug.c
debug.h
format_srgb.h
format_srgb.py
half_float.c
half_float.h
hash_table.c util/hash_table: add _mesa_hash_table_clear (v4) 2016-02-03 14:03:25 +01:00
hash_table.h util: fix new gcc6 warnings 2016-02-18 17:10:55 -05:00
list.h util/list: Add list splicing functions 2016-04-15 13:29:09 -07:00
macros.h st/glsl_to_tgsi: reduce stack explosion in recursive expression visitor 2016-04-29 11:52:59 -05:00
Makefile.am configure: Eliminate MSVC2008 compatibility. 2016-02-11 21:36:00 +00:00
Makefile.sources
mesa-sha1.c util: Fix warning of invalid return value 2016-04-15 15:00:58 -07:00
mesa-sha1.h util/sha: do not wrap header inclusion in extern "C" 2016-03-09 17:16:50 +00:00
ralloc.c
ralloc.h
register_allocate.c
register_allocate.h
rgtc.c
rgtc.h
roundeven_test.c
rounding.h
SConscript scons: Add a "check" target to run all unit tests. 2016-04-14 07:19:04 +01:00
set.c
set.h
simple_list.h
strndup.c
strndup.h
strtod.c
strtod.h
texcompress_rgtc_tmp.h
u_atomic.h util/u_atomic: Remove MSVC 2008 support. 2016-02-12 10:31:15 +00:00
u_atomic_test.c