http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48377
--- Comment #2 from Matt Hargett <matt at use dot net> 2011-04-01 01:38:20 UTC --- (In reply to comment #1) > Does the issue reproduce without using -ftree-loop-linear? In general try > to avoid loads of -f switches and stick to basic (and well tested) -Ox > options. Does it fail with just -O3? Yes, it appears to fail in the same way with all of the -ftree-* flags removed: SOGS-g++ -pipe -m64 -minline-all-stringops -fvisibility-inlines-hidden -ggdb -g3 -c -fpic -nostdinc -march=amdfam10 -Wa,-mtune=amdfam10 -Wchar-subscripts -Wreturn-type -Wunknown-pragmas -Wno-int-to-pointer-cast -Wformat -Wformat-nonliteral -Wformat-security -Wpointer-arith -Wcast-align -Wwrite-strings -Wsign-compare -Wunused-variable -Wunused-parameter -Wparentheses -fasynchronous-unwind-tables -fno-enforce-eh-specs -fcheck-new -O3 -fno-omit-frame-pointer -fno-strict-aliasing -fno-builtin-abort -fno-builtin-calloc -fno-builtin-exit -fno-builtin-free -fno-builtin-malloc -fno-builtin-realloc -fvisibility=hidden -fno-threadsafe-statics -Werror -I/home/matt/src/clueboat/porkius/main/src/include/libc -I/home/matt/src/clueboat/porkius/main/src/include/os -I/home/matt/src/clueboat/porkius/main/src/include/hal/x86_64 -I/home/matt/src/clueboat/porkius/main/src/include/hal -I/home/matt/src/clueboat/porkius/main/src/common/include -I/home/matt/src/clueboat/porkius/main/src/common/portability/shared/include -I. -I/home/matt/src/clueboat/porkius/main/src/common/portability/shared/include -I/home/matt/src/clueboat/porkius/main/src/common/include -I/home/matt/src/clueboat/porkius/main/src/include/legacy -I/home/matt/src/clueboat/porkius/main/src/network/stack/sys -I/home/matt/src/clueboat/porkius/main/src/network/stack/local -I/home/matt/src/clueboat/porkius/main/src/network/stack/include -I/home/matt/src/clueboat/porkius/main/src/standard/include -I/home/matt/src/clueboat/porkius/main/src/include/legacy/cfssl -I/home/matt/src/clueboat/porkius/main/src/include/legacy/openssl -I/home/matt/src/clueboat/porkius/main/src/include/os/core/platform -I/home/matt/src/clueboat/porkius/main/src/proxy/ssl/ssl_proxy -I/home/matt/src/clueboat/porkius/toolchain/linux/x86_64_host/gcc-cross/x86_64_target/v4.6.0/x86_64-iscb-SOGS/include/c++/4.6.0 -I/home/matt/src/clueboat/porkius/toolchain/linux/x86_64_host/gcc-cross/x86_64_target/v4.6.0/x86_64-iscb-SOGS/include/c++/4.6.0/x86_64-iscb-SOGS -DCFSSL_PROXY -DOPENSSL_FIPS -DSOGS_ANY -DSOGS_NATIVE -DSOGS_porkius -DSOGS_TARGET_NAME=x86_64 -D_CRTBLD -DSOGS_SRC_ROOT="\"/home/matt/src/clueboat/porkius/main/src/proxy/ssl/\"" -o build_products/shared/x86_64/SOGS_native/release/gcc_v4.6.0/cli.o /home/matt/src/clueboat/porkius/main/src/proxy/ssl/cli.cpp I do generally agree with you on not employing too many individual optimization flags. We did a lot of testing with GCC 4.4.x and found this set of flags produced optimal system performance for our codebase. If plain -O3 in 4.6.0 provides superior performance, then I have an argument for simplifying thing. If plain -O3 is worse than 4.4.x, the product performance would regress and I'll have no legitimate argument ;) Either way, it used to work fine, so it's still a regression. I have attached the object file output compiled with the above commandline.