------- Comment #3 from pinskia at gmail dot com 2010-02-27 13:06 ------- Subject: Re: New: Endianness and Optimization
Sent from my iPhone On Feb 27, 2010, at 2:56 AM, "kai dot extern at googlemail dot com" <gcc-bugzi...@gcc.gnu.org > wrote: > The attached code (which tries to generically load given-endianness > values of > varying width from memory) shows some interesting optimization > quirks. It's > especially pussling why optimization quality varies so greatly with > width, and > is actually worst for the native word width. You are violating c++ aliasing rules. You access a uint8_t via different types. > > For example: > > $ gcc -Wall -Wextra bad.cc -lstdc++ -O3 -### > Using built-in specs. > Target: x86_64-linux-gnu > Configured with: ../src/configure -v --with-pkgversion='Ubuntu > 4.4.1-4ubuntu9' > --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs > --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable- > shared > --enable-multiarch --enable-linker-build-id --with-system-zlib > --libexecdir=/usr/lib --without-included-gettext --enable- > threads=posix > --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 -- > enable-nls > --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc -- > disable-werror > --with-arch-32=i486 --with-tune=generic --enable-checking=release > --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64- > linux-gnu > Thread model: posix > gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu9) > COLLECT_GCC_OPTIONS='-Wall' '-Wextra' '-O3' '-mtune=generic' > "/usr/lib/gcc/x86_64-linux-gnu/4.4.1/cc1plus" "-quiet" "-D_GNU_SOURCE" > "bad.cc" "-D_FORTIFY_SOURCE=2" "-quiet" "-dumpbase" "bad.cc" "- > mtune=generic" > "-auxbase" "bad" "-O3" "-Wall" "-Wextra" "-fstack-protector" "-o" > "/tmp/ccnHgEb9.s" > COLLECT_GCC_OPTIONS='-Wall' '-Wextra' '-O3' '-mtune=generic' > "as" "-Qy" "-o" "/tmp/cceJWVC8.o" "/tmp/ccnHgEb9.s" > COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.1/:/usr/lib/gcc/ > x86_64-linux-gnu/4.4.1/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/ > x86_64-linux-gnu/4.4.1/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/ > x86_64-linux-gnu/4.4.1/:/usr/lib/gcc/x86_64-linux-gnu/ > LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.4.1/:/usr/lib/gcc/ > x86_64-linux-gnu/4.4.1/:/usr/lib/gcc/x86_64-linux-gnu/ > 4.4.1/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/ > x86_64-linux-gnu/4.4.1/../../../:/lib/:/usr/lib/:/usr/lib/x86_64- > linux-gnu/ > COLLECT_GCC_OPTIONS='-Wall' '-Wextra' '-O3' '-mtune=generic' > "/usr/lib/gcc/x86_64-linux-gnu/4.4.1/collect2" "--build-id" "--eh- > frame-hdr" > "-m" "elf_x86_64" "--hash-style=both" "-dynamic-linker" > "/lib64/ld-linux-x86-64.so.2" "-z" "relro" > "/usr/lib/gcc/x86_64-linux-gnu/4.4.1/../../../../lib/crt1.o" > "/usr/lib/gcc/x86_64-linux-gnu/4.4.1/../../../../lib/crti.o" > "/usr/lib/gcc/x86_64-linux-gnu/4.4.1/crtbegin.o" > "-L/usr/lib/gcc/x86_64-linux-gnu/4.4.1" "-L/usr/lib/gcc/x86_64-linux- > gnu/4.4.1" > "-L/usr/lib/gcc/x86_64-linux-gnu/4.4.1/../../../../lib" "-L/lib/../ > lib" > "-L/usr/lib/../lib" "-L/usr/lib/gcc/x86_64-linux-gnu/4.4.1/../../.." > "-L/usr/lib/x86_64-linux-gnu" "/tmp/cceJWVC8.o" "-lstdc++" "-lgcc" > "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" > "-lgcc_s" > "--no-as-needed" "/usr/lib/gcc/x86_64-linux-gnu/4.4.1/crtend.o" > "/usr/lib/gcc/x86_64-linux-gnu/4.4.1/../../../../lib/crtn.o" > $ objdump -d a.out | c++filt | sed -n '/Test_/,/constructors/ p' > out > > (See attachments for source and output.) > > > -- > Summary: Endianness and Optimization > Product: gcc > Version: 4.4.1 > Status: UNCONFIRMED > Severity: normal > Priority: P3 > Component: tree-optimization > AssignedTo: unassigned at gcc dot gnu dot org > ReportedBy: kai dot extern at googlemail dot com > GCC build triplet: x86_64-linux-gnu > GCC host triplet: x86_64-linux-gnu > GCC target triplet: x86_64-linux-gnu > > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43197 > -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43197