mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 12:30:09 +01:00
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> |
||
|---|---|---|
| .. | ||
| tests/hash_table | ||
| .gitignore | ||
| Android.mk | ||
| bitset.h | ||
| debug.c | ||
| debug.h | ||
| format_srgb.h | ||
| format_srgb.py | ||
| half_float.c | ||
| half_float.h | ||
| hash_table.c | ||
| hash_table.h | ||
| list.h | ||
| macros.h | ||
| Makefile.am | ||
| Makefile.sources | ||
| mesa-sha1.c | ||
| mesa-sha1.h | ||
| ralloc.c | ||
| ralloc.h | ||
| register_allocate.c | ||
| register_allocate.h | ||
| rgtc.c | ||
| rgtc.h | ||
| roundeven_test.c | ||
| rounding.h | ||
| SConscript | ||
| set.c | ||
| set.h | ||
| simple_list.h | ||
| strndup.c | ||
| strndup.h | ||
| strtod.c | ||
| strtod.h | ||
| texcompress_rgtc_tmp.h | ||
| u_atomic.h | ||
| u_atomic_test.c | ||