On 7/14/25 16:30, Segher Boessenkool wrote:
PRE is run whenever you use -fgcse, to a first order approximation 🙂 The biggest contraindication is functions that call setjmp, those will never get PRE done.
On both aarch64 and x86_64 -fno-gcse flag is given as a gcc command line argument; the typical call is
/pkgs/gcc-15.1.0/bin/gcc -save-temps -O1 -fexpensive-optimizations -fno-gcse --param max-gcse-memory=400000 -Wno-unused -Wno-write-strings -Wdisabled-optimization -fwrapv -fno-strict-aliasing -fno-trapping-math -fno-math-errno -fschedule-insns2 -foptimize-sibling-calls -fomit-frame-pointer -fipa-ra -fmove-loop-invariants -march=native -fPIC -fno-common -mpc64 -I"../include" -c -o _num.o -I. -DHAVE_CONFIG_H -D___GAMBITDIR="\"/usr/local/Gambit/v4.9.7\"" -D___GAMBITDIR_USERLIB="\"\176/.gambit_userlib\"" -D___GAMBITDIR_INSTLIB="\"\176\176userlib\"" -D___SYS_TYPE_CPU="\"x86_64\"" -D___SYS_TYPE_VENDOR="\"pc\"" -D___SYS_TYPE_OS="\"linux-gnu\"" -D___CONFIGURE_COMMAND="\"./configure 'CC=/pkgs/gcc-15.1.0/bin/gcc' '--enable-march=native' '--enable-dynamic-clib' '--enable-single-host' '--enable-multiple-versions' '--enable-shared' '--enable-trust-c-tco'"\" -D___OBJ_EXTENSION="\".o\"" -D___EXE_EXTENSION="\"\"" -D___BAT_EXTENSION="\"\"" -D___PRIMAL _num.c -D___LIBRARY
So maybe with this combination of flags, PRE is run on aarch64 and not on x86_64, and there's no mystery.
Thanks. Brad