From 2ceea767ad2286b907525c50feb77ec70e71bef3 Mon Sep 17 00:00:00 2001 From: bptato Date: Tue, 22 Jul 2025 20:22:18 +0200 Subject: [PATCH] Disable strict aliasing on clang Workaround for #24596. I also took the liberty to disable it on all targets with GCC, since their documentation claims that it is also enabled on -Os. --- config/nim.cfg | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/config/nim.cfg b/config/nim.cfg index 7c99581396df9..d67eedaeb5860 100644 --- a/config/nim.cfg +++ b/config/nim.cfg @@ -257,10 +257,12 @@ clang.objc.options.linker = "-lobjc -lgnustep-base" gcc.options.linker %= "-L $WIND_BASE/target/lib/usr/lib/ppc/PPC32/common -mrtp -fno-strict-aliasing -D_C99 -D_HAS_C9X -std=c99 -fasm -Wall -Wno-write-strings" @end +# seqs_v2 violates strict aliasing. +gcc.options.always %= "-fno-strict-aliasing" # -fno-math-errno is default in OSX, iOS, BSD, Musl, Libm, LLVM, Clang, ICC. # See https://itnext.io/why-standard-c-math-functions-are-slow-d10d02554e33 # and https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Optimize-Options.html#Optimize-Options -gcc.options.speed = "-O3 -fno-strict-aliasing -fno-ident -fno-math-errno" +gcc.options.speed = "-O3 -fno-ident -fno-math-errno" gcc.options.size = "-Os -fno-ident" @if windows: gcc.options.debug = "-g3 -Og -gdwarf-3" @@ -281,7 +283,7 @@ llvm_gcc.options.size = "-Os" # Configuration for the LLVM CLang compiler: clang.options.debug = "-g" clang.cpp.options.debug = "-g" -clang.options.always = "-w -ferror-limit=3" +clang.options.always = "-w -ferror-limit=3 -fno-strict-aliasing" clang.options.speed = "-O3" clang.options.size = "-Os"