On 7/13/25 15:53, Segher Boessenkool wrote:
Of course it is somewhat dependent on the architecture. The number of
available general registers, for example! And aarch is way more
orthogonal than x86 in pretty much every way imaginable, so there is a
lot more freedom to the compiler always, so if it wants to exhaustively
search the possibilities (or even just try out many options) it has a
lot more possibilities, so more work to do.
Well, I tried it again on X86_64 and reduced max-gcse-memory to 400
(i.e., to nothing) and got no warning.
I've included below the cc1 process call; setting
"--param=max-gcse-memory=400" is near the end. (I presume passing this
to cc1 is derived from passing "--param max-gcse-memory=400" to gcc.)
There is no warning.
This is not that important, it's just that I like to understand what gcc
is doing to the (machine-generated) code.
Thanks.
Brad
/pkgs/gcc-15.1.0/libexec/gcc/x86_64-pc-linux-gnu/15.1.0/cc1 -quiet -I
/home/lucier/programs/gambit/gambit/include -imultiarch x86_64-linux-gnu
-D ___SINGLE_HOST -D ___TRUST_C_TCO -D ___CAN_IMPORT_CLIB_DYNAMICALLY -D
___CAN_IMPORT_SETJMP_DYNAMICALLY -D ___DYNAMIC _irregex.c -march=haswell
-mmmx -mpopcnt -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx
-mavx2 -mno-sse4a -mno-fma4 -mno-xop -mfma -mno-avx512f -mbmi -mbmi2
-maes -mpclmul -mno-avx512vl -mno-avx512bw -mno-avx512dq -mno-avx512cd
-mno-avx512vbmi -mno-avx512ifma -mno-avx512vpopcntdq -mno-avx512vbmi2
-mno-gfni -mno-vpclmulqdq -mno-avx512vnni -mno-avx512bitalg
-mno-avx512bf16 -mno-avx512vp2intersect -mno-3dnow -mno-adx -mabm
-mno-cldemote -mno-clflushopt -mno-clwb -mno-clzero -mcx16 -mno-enqcmd
-mf16c -mfsgsbase -mfxsr -mno-hle -msahf -mno-lwp -mlzcnt -mmovbe
-mno-movdir64b -mno-movdiri -mno-mwaitx -mno-pconfig -mno-pku
-mno-prfchw -mno-ptwrite -mno-rdpid -mrdrnd -mno-rdseed -mno-rtm
-mno-serialize -mno-sgx -mno-sha -mno-shstk -mno-tbm -mno-tsxldtrk
-mno-vaes -mno-waitpkg -mno-wbnoinvd -mxsave -mno-xsavec -mxsaveopt
-mno-xsaves -mno-amx-tile -mno-amx-int8 -mno-amx-bf16 -mno-uintr
-mno-hreset -mno-kl -mno-widekl -mno-avxvnni -mno-avx512fp16
-mno-avxifma -mno-avxvnniint8 -mno-avxneconvert -mno-cmpccxadd
-mno-amx-fp16 -mno-prefetchi -mno-raoint -mno-amx-complex
-mno-avxvnniint16 -mno-sm3 -mno-sha512 -mno-sm4 -mno-apxf -mno-usermsr
-mno-avx10.2 -mno-amx-avx512 -mno-amx-tf32 -mno-amx-transpose
-mno-amx-fp8 -mno-movrs -mno-amx-movrs --param l1-cache-size=32 --param
l1-cache-line-size=64 --param l2-cache-size=8192 -mtune=haswell -quiet
-dumpdir _irregex.o1- -dumpbase _irregex.c -dumpbase-ext .c -mpc64 -O1
-Wno-unused -Wno-write-strings -Wdisabled-optimization
-fexpensive-optimizations -fno-gcse -fwrapv -fno-strict-aliasing
-fno-trapping-math -fno-math-errno -fschedule-insns2
-foptimize-sibling-calls -fomit-frame-pointer -fipa-ra
-fmove-loop-invariants -fPIC -fno-common --param=max-gcse-memory=400 -o
/tmp/cccMyXeh.s