>> I was reading the description for -tree at >> https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html. The >> description states: >> >> -free >> Attempt to remove redundant extension instructions. This is >> especially helpful for the x86-64 architecture, which implicitly >> zero-extends in 64-bit registers after writing to their lower >> 32-bit half. >> >> Enabled for Alpha, AArch64 and x86 at levels -O2, -O3, -Os. >> >> Debian is reporting issues to us under three Chroot environments: >> armel, arm64, and amd64 (arm64 is aarch64). The issues are around an >> area where Big Integers are used, and it only occurs at -O2 and above. >> The Big Integers have some hand-tuned assembly language routines. >> >> Interactions with -tree are at the top of my list because of the >> symptoms, but I am not sure about armel. >> >> Does -tree apply to armel? >> > > Not that I'm aware of. As the documentation states, it's only enabled > for Alpha, AArch64 and x86 (I think in 64-bit mode). The pass is only > useful on machines that have instructions that directly operate on a > sub-register (eg the bottom 32 bits) but have a side effect that the > upper bits of the register are set to zero when the result is written. Thanks Richard. (And for completeness, thanks JW for 's|tree|free|g'). We've got it narrowed down to inlining. With -fno-inline, the issue goes away. The problem is, without inlining, the time it takes the test program to execute is on the order it takes to compile it :) We're going to try and narrow it further next. Jeff