From cbda7ce74d74539ce0baef4a36198081dfb0265c Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Fri, 14 Mar 2025 18:29:20 +0100 Subject: [PATCH] ECMEnableSanitizers.cmake: fix GCC's "note: variable tracking size limit exceeded" when using asan MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Set the max-vartrack-size parameter to 0 (= unlimited) to avoid GCC's "note: variable tracking size limit exceeded with -fvar-tracking-assignments, retrying without" message you get when you compile with asan sometimes. This is reported¹ to speed up compilation, not slow it down. ¹ https://stackoverflow.com/a/75704837/134841 --- modules/ECMEnableSanitizers.cmake | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/ECMEnableSanitizers.cmake b/modules/ECMEnableSanitizers.cmake index 07db1c80..45236e6d 100644 --- a/modules/ECMEnableSanitizers.cmake +++ b/modules/ECMEnableSanitizers.cmake @@ -117,6 +117,16 @@ macro (enable_sanitizer_flags sanitize_option) set(XSAN_COMPILE_FLAGS "-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls") set(XSAN_LINKER_FLAGS "asan") endif() + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") + # fixes "note: variable tracking size limit exceeded with + # -fvar-tracking-assignments, retrying without" (which is + # another way of saying "I'll go ahead and compile this + # thing _twice_") by making it unlimited + # Reference: + # https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html + # -> max-vartrack-size + string(APPEND XSAN_COMPILE_FLAGS " --param=max-vartrack-size=0") + endif () elseif (${sanitize_option} MATCHES "thread") check_compiler_version("4.8" "3.1" "99.99") set(XSAN_COMPILE_FLAGS "-fsanitize=thread") -- 2.25.1