aboutsummaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build10
1 files changed, 10 insertions, 0 deletions
diff --git a/meson.build b/meson.build
index 7d8a3a315..a208151ac 100644
--- a/meson.build
+++ b/meson.build
@@ -142,6 +142,16 @@ else
cpp_pch = []
endif
+# gcc 12 is known to miscompile some coroutine-based code quite horribly,
+# causing (among other things) copies of move-only objects and the double
+# frees one would expect when the objects are unique_ptrs. these problems
+# often show up as memory corruption when nesting generators (since we do
+# treat generators like owned memory) and will cause inexplicable crashs.
+assert(
+ cxx.get_id() != 'gcc' or cxx.version().version_compare('>=13'),
+ 'GCC 12 and earlier are known to miscompile lix coroutines, use GCC 13 or clang.'
+)
+
# Translate some historical and Mesony CPU names to Lixy CPU names.
# FIXME(Qyriad): the 32-bit x86 code is not tested right now, because cross compilation for Lix