From 08e57f6bc2b781225037893e0df4ee962872f8a4 Mon Sep 17 00:00:00 2001 From: Ahmed Arif Date: Mon, 2 Mar 2026 01:50:32 +0100 Subject: [PATCH] [CRT/GCC] Fix infinite recursion in memset/memcpy/memmove at -O2 --- sdk/lib/crt/mem/mem.cmake | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sdk/lib/crt/mem/mem.cmake b/sdk/lib/crt/mem/mem.cmake index 63aecf7318e..bb3b920fa6d 100644 --- a/sdk/lib/crt/mem/mem.cmake +++ b/sdk/lib/crt/mem/mem.cmake @@ -21,6 +21,12 @@ else() mem/memmove.c mem/memset.c ) + if(CMAKE_C_COMPILER_ID STREQUAL "GNU") + # Prevent GCC from optimizing loops in memcpy/memmove/memset back into + # calls to memcpy/memmove/memset, causing infinite recursion at -O2. + set_source_files_properties(mem/memcpy.c mem/memmove.c mem/memset.c + PROPERTIES COMPILE_FLAGS "-fno-tree-loop-distribute-patterns") + endif() endif() #list(APPEND CRT_MEM_SOURCE