View previous topic :: View next topic |
Author |
Message |
kernelOfTruth Watchman
Joined: 20 Dec 2005 Posts: 6111 Location: Vienna, Austria; Germany; hello world :)
|
Posted: Sat Apr 17, 2010 7:13 pm Post subject: |
|
|
Neo2 wrote: |
@kernelOfTruth: isn't -march= -mtune= redundant/conflicting?
Quote: | -mtune=cpu-type
Tune to cpu-type everything applicable about the generated code, except for the ABI and the set of available instructions. The choices for cpu-type are:
generic
Produce code optimized for the most common IA32/AMD64/EM64T processors. If you know the CPU on which your code will run, then you should use the corresponding -mtune option instead of -mtune=generic. But, if you do not know exactly what CPU users of your application will have, then you should use this option.
As new processors are deployed in the marketplace, the behavior of this option will change. Therefore, if you upgrade to a newer version of GCC, the code generated option will change to reflect the processors that were most common when that version of GCC was released.
There is no -march=generic option because -march indicates the instruction set the compiler can use, and there is no generic instruction set applicable to all processors. In contrast, -mtune indicates the processor (or, in this case, collection of processors) for which the code is optimized.
native
This selects the CPU to tune for at compilation time by determining the processor type of the compiling machine. Using -mtune=native will produce code optimized for the local machine under the constraints of the selected instruction set. Using -march=native will enable all instruction subsets supported by the local machine (hence the result might not run on different machines).
...
-march=cpu-type
Generate instructions for the machine type cpu-type. The choices for cpu-type are the same as for -mtune. Moreover, specifying -march=cpu-type implies -mtune=cpu-type.
|
|
I don't really care since those are the options gcc uses by itself when being called with -march=native _________________ https://github.com/kernelOfTruth/ZFS-for-SystemRescueCD/tree/ZFS-for-SysRescCD-4.9.0
https://github.com/kernelOfTruth/pulseaudio-equalizer-ladspa
Hardcore Gentoo Linux user since 2004 |
|
Back to top |
|
|
Neo2 Apprentice
Joined: 25 Sep 2006 Posts: 224 Location: Italy
|
Posted: Sat Apr 17, 2010 7:15 pm Post subject: |
|
|
@Ormaaj:
You can get additional benefits out of it, but lto works even without it.
With gold support (specifically: gold plugin support), GCC will be able to extract symbols from the libraries which it's linking against, further reducing the amount of output code. At the moment, I'm unsure if the plugin is already available in the toolchain (I don't think so by the way).
@kernelOfTruth:
I must have missed something _________________ Neo2
Unofficial minimal liveCD for x86/amd64 w/reiser4+truecrypt |
|
Back to top |
|
|
kernelOfTruth Watchman
Joined: 20 Dec 2005 Posts: 6111 Location: Vienna, Austria; Germany; hello world :)
|
Posted: Sat Apr 17, 2010 7:42 pm Post subject: |
|
|
Neo2,
according to the passage you quoted
-mtune tweaks the code to the CPU-family (leaving the ABI and the set of available instructions open)
-march literally speaking adds the final touch and uses the specific ABI and instructions of that very CPU model
I'm however a little puzzled why it uses march=atom for core i7 (lynnfield family) (mtune=core2 should be clear) - strange
anyone tried out -fira-loop-pressure ?
that seems to be a hell of a optimization:
Quote: | Use IRA to evaluate register pressure in loops for decision to move loop invariants. Usage of this option usually results in generation of faster and smaller code on machines with big register files (>= 32 registers) but it can slow compiler down.
This option is enabled at level -O3 for some targets. |
compilation of kdelibs now already takes twice the time than normal _________________ https://github.com/kernelOfTruth/ZFS-for-SystemRescueCD/tree/ZFS-for-SysRescCD-4.9.0
https://github.com/kernelOfTruth/pulseaudio-equalizer-ladspa
Hardcore Gentoo Linux user since 2004 |
|
Back to top |
|
|
ComaWhite Tux's lil' helper
Joined: 07 Oct 2008 Posts: 125
|
Posted: Sat Apr 17, 2010 10:59 pm Post subject: |
|
|
atom for i7? O_O That's weird, to use Atom especially for an Xeon (mine is just the server version of the i7). I use -march=native anyways |
|
Back to top |
|
|
kernelOfTruth Watchman
Joined: 20 Dec 2005 Posts: 6111 Location: Vienna, Austria; Germany; hello world :)
|
Posted: Sun Apr 18, 2010 12:35 am Post subject: |
|
|
ComaWhite wrote: | atom for i7? O_O That's weird, to use Atom especially for an Xeon (mine is just the server version of the i7). I use -march=native anyways |
yeah, I was wondering too
I better switch from =march-native to explicit -march=core2 (and other explicit stuff) before anything bad happens:
Quote: | [34744.518662] blkid[28348] trap invalid opcode ip:7f41c3f874ef sp:7fff99222000 error:0 in libblkid.so.1.1.0[7f41c3f72000+21000]
[34744.525977] blkid[28353] trap invalid opcode ip:7f7d6bfaf4ef sp:7fff672e2a70 error:0 in libblkid.so.1.1.0[7f7d6bf9a000+21000]
[34757.859945] blkid[28364] trap invalid opcode ip:7f8accd9e4ef sp:7fff10629b80 error:0 in libblkid.so.1.1.0[7f8accd89000+21000]
[34757.864853] blkid[28366] trap invalid opcode ip:7f0ba3a414ef sp:7fff6c5e4450 error:0 in libblkid.so.1.1.0[7f0ba3a2c000+21000]
[34757.873027] blkid[28371] trap invalid opcode ip:7f1e1bfe74ef sp:7fff84ae69a0 error:0 in libblkid.so.1.1.0[7f1e1bfd2000+21000]
[34757.882684] blkid[28363] trap invalid opcode ip:7f3ad03b24ef sp:7ffff6b08fc0 error:0 in libblkid.so.1.1.0[7f3ad039d000+21000]
[34762.077490] blkid[28377] trap invalid opcode ip:7fd34d9eb4ef sp:7fffb812f2a0 error:0 in libblkid.so.1.1.0[7fd34d9d6000+21000]
[34762.112103] blkid[28382] trap invalid opcode ip:7febeadf64ef sp:7fff22a63f80 error:0 in libblkid.so.1.1.0[7febeade1000+21000]
[34766.588555] Adding 4096536k swap on /dev/mapper/system-swap. Priority:-1 extents:1 across:4096536k
[35840.110748] pkgdata[32385] general protection ip:2b8e6964abe2 sp:7fff3fc90500 error:0 in libc-2.11.so[2b8e695d1000+169000]
[39403.991901] ld[9086] trap invalid opcode ip:2b3ae97e2890 sp:7fffe618c0e0 error:0 in ld[2b3ae97ae000+98000]
[39404.108026] ld[9132] trap invalid opcode ip:2ba60d3ea890 sp:7fff3daa2e60 error:0 in ld[2ba60d3b6000+98000]
[39405.219188] ld[9319] trap invalid opcode ip:2acac4b52890 sp:7fff48fc6eb0 error:0 in ld[2acac4b1e000+98000]
[39405.245665] ld[9334] trap invalid opcode ip:2b2e8af3c890 sp:7fff10e89ce0 error:0 in ld[2b2e8af08000+98000]
[39405.274817] ld[9347] trap invalid opcode ip:2aeea25b2890 sp:7fff669f7db0 error:0 in ld[2aeea257e000+98000]
[39405.667732] ld[9368] trap invalid opcode ip:2ac878a8f890 sp:7fff2637aeb0 error:0 in ld[2ac878a5b000+98000]
[40101.432222] conftest[4128] trap divide error ip:7f8e500048bc sp:7fff17959fc0 error:0 in conftest[7f8e50004000+1000]
|
edit:
I thought about it:
I'd try to play it cool and see if it brakes the system
there's still the stage4-tarball so if anything goes wrong I'll use that
another change is also from:
Quote: | --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=256 |
to
Quote: | --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=8192 |
interesting _________________ https://github.com/kernelOfTruth/ZFS-for-SystemRescueCD/tree/ZFS-for-SysRescCD-4.9.0
https://github.com/kernelOfTruth/pulseaudio-equalizer-ladspa
Hardcore Gentoo Linux user since 2004
Last edited by kernelOfTruth on Sun Apr 18, 2010 12:48 am; edited 1 time in total |
|
Back to top |
|
|
platojones Veteran
Joined: 23 Oct 2002 Posts: 1602 Location: Just over the horizon
|
Posted: Sun Apr 18, 2010 12:44 am Post subject: |
|
|
Hrmmm...playing around with it now. Two big apps that don't compile with gcc 4.5 at all are chromium and openoffice. Seems like there was a slight change in behavior in the C++ compilation that blows up chromium and openoffice actively checks the gcc version and blows up in the middle of the compile if it detects any gcc version greater than 4.4.
I imagine there will be patches out for those soon. In any event, I'm ricing and having fun |
|
Back to top |
|
|
Uzytkownik Guru
Joined: 31 Oct 2004 Posts: 399 Location: Bay Area, US
|
Posted: Sun Apr 18, 2010 1:32 am Post subject: |
|
|
I have problems with:
Code: | CFLAGS="-O2 -pipe -ggdb3 -march=native -msahf -mcx16 -fgcse-sm -fgcse-las -fgcse-after-reload -ftracer -floop-interchange -floop-strip-mine -floop-block" |
Many programs (bash, paludis...) crashes with such flags. I demaged system beyond repair and I'm during 'rescue mission'. I had almost identical (with addition of explicit -mmmx/-msse etc. and -march=core2).
In dmesg there are segfaults in libc (even not rebuilt) and libcap. Any idea?
Edit: paludis crashed (errors in libc) with "-O2 -pipe"
Edit 2: Problem was with libxml - even one from stage. After rebuilding all seems to be ok so far - I hope. _________________ I've probably left my head... somwhere. Please wait untill I find it.
Last edited by Uzytkownik on Sun Apr 18, 2010 5:14 am; edited 1 time in total |
|
Back to top |
|
|
Ormaaj Guru
Joined: 28 Jan 2008 Posts: 319
|
Posted: Sun Apr 18, 2010 4:04 am Post subject: |
|
|
I'm getting the correct march and mtune on an i7 with -march=native
Code: | ~/programs/trunk $ LC_ALL=C gcc -Q -march=native -O3 -msse4 -mmmx -floop-interchange -floop-strip-mine -floop-block -ftree-parallelize-loops=8 -floop-parallelize-all --help=target
The following options are target specific:
-m128bit-long-double [disabled]
-m32 [disabled]
-m3dnow [disabled]
-m3dnowa [disabled]
-m64 [enabled]
-m80387 [enabled]
-m96bit-long-double [enabled]
-mabi=
-mabm [disabled]
-maccumulate-outgoing-args [disabled]
-maes [disabled]
-malign-double [disabled]
-malign-functions=
-malign-jumps=
-malign-loops=
-malign-stringops [enabled]
-march= core2
-masm=
-mavx [disabled]
-mbranch-cost=
-mcld [disabled]
-mcmodel=
-mcrc32 [disabled]
-mcx16 [enabled]
-mfancy-math-387 [enabled]
-mfma [disabled]
-mfma4 [disabled]
-mforce-drap [disabled]
-mfp-ret-in-387 [enabled]
-mfpmath=
-mfused-madd [enabled]
-mglibc [enabled]
-mhard-float [enabled]
-mieee-fp [enabled]
-mincoming-stack-boundary=
-minline-all-stringops [disabled]
-minline-stringops-dynamically [disabled]
-mintel-syntax [disabled]
-mlarge-data-threshold=
-mlwp [disabled]
-mmmx [enabled]
-mmovbe [disabled]
-mms-bitfields [disabled]
-mno-align-stringops [disabled]
-mno-fancy-math-387 [disabled]
-mno-push-args [disabled]
-mno-red-zone [disabled]
-mno-sse4 [disabled]
-momit-leaf-frame-pointer [disabled]
-mpc
-mpclmul [disabled]
-mpopcnt [enabled]
-mpreferred-stack-boundary=
-mpush-args [enabled]
-mrecip [disabled]
-mred-zone [enabled]
-mregparm=
-mrtd [disabled]
-msahf [enabled]
-msoft-float [disabled]
-msse [enabled]
-msse2 [enabled]
-msse2avx [disabled]
-msse3 [enabled]
-msse4 [enabled]
-msse4.1 [enabled]
-msse4.2 [enabled]
-msse4a [disabled]
-msseregparm [disabled]
-mssse3 [enabled]
-mstack-arg-probe [disabled]
-mstackrealign [enabled]
-mstringop-strategy=
-mtls-dialect=
-mtls-direct-seg-refs [enabled]
-mtune= core2
-muclibc [disabled]
-mveclibabi=
-mxop [disabled] |
Last edited by Ormaaj on Wed Oct 20, 2010 3:43 am; edited 1 time in total |
|
Back to top |
|
|
kernelOfTruth Watchman
Joined: 20 Dec 2005 Posts: 6111 Location: Vienna, Austria; Germany; hello world :)
|
|
Back to top |
|
|
PuckPoltergeist Apprentice
Joined: 28 Jul 2004 Posts: 189
|
Posted: Sun Apr 18, 2010 2:20 pm Post subject: |
|
|
Did anyone tried the new -march=atom CPU switch? Last time I've tested this, gcc-bootstrap failed in stage2-stage3 comparison. _________________ printk(KERN_CRIT "Whee.. Swapped out page in kernel page table\n");
linux-2.6.6/mm/vmalloc.c |
|
Back to top |
|
|
Ormaaj Guru
Joined: 28 Jan 2008 Posts: 319
|
Posted: Sun Apr 18, 2010 2:21 pm Post subject: |
|
|
kernelOfTruth wrote: | Ormaaj could you please post your output of
?
thanks ! |
Code: | gcc-4_5-branch # gcc -v
Using built-in specs.
COLLECT_GCC=/usr/x86_64-pc-linux-gnu/gcc-bin/4.5.1-pre9999/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.5.1-pre9999/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-4.5.1_pre9999/work/gcc-4.5.1-9999/configure --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.5.1-pre9999 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.1-pre9999/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.5.1-pre9999 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.5.1-pre9999/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.5.1-pre9999/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.1-pre9999/include/g++-v4 --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec --disable-fixed-point --with-ppl --with-cloog --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --enable-multilib --enable-libmudflap --disable-libssp --enable-libgomp --enable-cld --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.5.1-pre9999/python --disable-libgcj --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo SVN' --enable-lto --disable-checking
Thread model: posix
gcc version 4.5.1-pre9999 20100418 (prerelease) rev. 158483 (Gentoo SVN)
gcc-4_5-branch # svn log -r HEAD
------------------------------------------------------------------------
r158486 | jsm28 | 2010-04-18 07:33:37 -0500 (Sun, 18 Apr 2010) | 2 lines
* es.po: Update.
------------------------------------------------------------------------ |
I'll start using an actual 4.5.0 ebuild when it becomes available.
Last edited by Ormaaj on Wed Oct 20, 2010 3:45 am; edited 1 time in total |
|
Back to top |
|
|
Neo2 Apprentice
Joined: 25 Sep 2006 Posts: 224 Location: Italy
|
Posted: Sun Apr 18, 2010 2:22 pm Post subject: |
|
|
I'm on full unstable and I'm using gcc-4.5.1_pre9999. I'm undergoing emerge -e1 @system.
Just wanted to drop a note: if you're compiling with -flto, you'll notice many packages failing with errors like: "x86_64-pc-gnu-linux-gcc: /var/tmp/foo/bar/work/5fadla.lto.tmp: no such file". Removing any CFLAGS apart -flto has no effect, but adding -fPIC solves the problem for many of them (I'll report when all of them are finished).
Shall I post a list here so that mantainers can take proper actions? _________________ Neo2
Unofficial minimal liveCD for x86/amd64 w/reiser4+truecrypt |
|
Back to top |
|
|
pigeon768 l33t
Joined: 02 Jan 2006 Posts: 683
|
Posted: Sun Apr 18, 2010 5:53 pm Post subject: |
|
|
PuckPoltergeist wrote: | Did anyone tried the new -march=atom CPU switch? Last time I've tested this, gcc-bootstrap failed in stage2-stage3 comparison. | Hmm. I have an atom, with CFLAGS="-O2 -pipe -march=native" and got the same error from a few of the alphas from the toolchain overlay. |
|
Back to top |
|
|
kernelOfTruth Watchman
Joined: 20 Dec 2005 Posts: 6111 Location: Vienna, Austria; Germany; hello world :)
|
Posted: Sun Apr 18, 2010 7:50 pm Post subject: |
|
|
1st note:
gcc doesn't recognize: --param max-gcse-passes
anymore !
2nd note / annoyance:
why are packages depending on the previous version of libstdc++.so.6 when building it with the new gcc version ? what to do about it ?
e.g.
Quote: | Generating ../Docs/cmake-gui.txt
Generating ../Docs/cmake.txt
Generating ../Docs/ctest.txt
Generating ../Docs/ccmake.txt
../bin/ctest: /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ../bin/ctest)
../bin/ccmake: /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ../bin/ccmake)
../bin/cmake-gui: /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ../bin/cmake-gui)
make[2]: *** [Docs/ctest.txt] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [Docs/ccmake.txt] Error 1
../bin/cpack: /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ../bin/cpack)
make[2]: *** [Docs/cmake-gui.txt] Error 1
make[2]: *** [Docs/cpack.txt] Error 1
../bin/cmake: /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ../bin/cmake)
make[2]: *** [Docs/cmake.txt] Error 1
make[1]: *** [Utilities/CMakeFiles/documentation.dir/all] Error 2
make: *** [all] Error 2
* ERROR: dev-util/cmake-2.8.1-r1 failed:
|
since this is a testing thread I'll post my erroneous results (failing/regressing packages) with gcc 4.5 so far [this is for emerge -e system]:
dev-scheme/guile 1.8.7:
fails with even basic flags: CFLAGS="-O2 -march=core2 -mtune=core2 -pipe" CXXFLAGS="${CFLAGS}" on vanilla & hardened specs
Quote: | /bin/sh ../libtool --tag=CC --mode=link x86_64-pc-linux-gnu-gcc -pthread -O2 -march=core2 -mtune=core2 -pipe -Wall -Wmissing-prototypes -pthread -Wl,-O1 -Wl,--hash-style=both -Wl,--sort-common -Wl,--enable-new-dtags -Wl,--relax -Wl,-z,now -Wl,-z,relro -Wl,--as-needed -Wl,-z,common-page-size=16384 -o guile guile-guile.o libguile.la -lgmp -lcrypt -lm -lltdl
libtool: link: x86_64-pc-linux-gnu-gcc -pthread -O2 -march=core2 -mtune=core2 -pipe -Wall -Wmissing-prototypes -pthread -Wl,-O1 -Wl,--hash-style=both -Wl,--sort-common -Wl,--enable-new-dtags -Wl,--relax -Wl,-z -Wl,now -Wl,-z -Wl,relro -Wl,-z -Wl,common-page-size=16384 -o .libs/guile guile-guile.o -Wl,--as-needed ./.libs/libguile.so /usr/lib64/libgmp.so -lcrypt -lm /usr/lib64/libltdl.so -ldl -pthread
cat alist.doc arbiters.doc async.doc backtrace.doc boolean.doc chars.doc continuations.doc debug.doc deprecation.doc deprecated.doc discouraged.doc dynl.doc dynwind.doc environments.doc eq.doc error.doc eval.doc evalext.doc extensions.doc feature.doc fluids.doc fports.doc futures.doc gc.doc goops.doc gsubr.doc gc-mark.doc gc-segment.doc gc-malloc.doc gc-card.doc guardians.doc hash.doc hashtab.doc hooks.doc i18n.doc init.doc ioext.doc keywords.doc lang.doc list.doc load.doc macros.doc mallocs.doc modules.doc numbers.doc objects.doc objprop.doc options.doc pairs.doc ports.doc print.doc procprop.doc procs.doc properties.doc random.doc rdelim.doc read.doc root.doc rw.doc scmsigs.doc script.doc simpos.doc smob.doc sort.doc srcprop.doc stackchk.doc stacks.doc stime.doc strings.doc srfi-4.doc srfi-13.doc srfi-14.doc strorder.doc strports.doc struct.doc symbols.doc threads.doc throw.doc values.doc variable.doc vectors.doc version.doc vports.doc weaks.doc ramap.doc unif.doc dynl.doc filesys.doc posix.doc net_db.doc socket.doc regex-posix.doc | GUILE="/var/tmp/portage/dev-scheme/guile-1.8.7/work/guile-1.8.7/pre-inst-guile" ../scripts/snarf-check-and-output-texi > guile-procedures.texi || { rm guile-procedures.texi; false; }
ERROR: unknown doc attribute: (location (string . alist.c) (int . 40) (hash . hash))
make[3]: *** [guile-procedures.texi] Error 1
make[3]: Leaving directory `/var/tmp/portage/dev-scheme/guile-1.8.7/work/guile-1.8.7/libguile'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/var/tmp/portage/dev-scheme/guile-1.8.7/work/guile-1.8.7/libguile'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/dev-scheme/guile-1.8.7/work/guile-1.8.7'
make: *** [all] Error 2 |
gnome-base/nautilus-2.30.0 (with enabled xmp USE-flag from gnome-overlay - probably also media-gfx/eog) fails with error message [will post that later] because it can't find something in libexempi.so (libexempi.so.3.2.1 - the version is media-libs/exempi-2.1.1)
media-libs/libmp4v2-1.9.1: (dunno what that error means)
Quote: | help2man -m "MP4v2 Utilities" -N ./mp4subtitle -o doc/man/man1/mp4subtitle.1
help2man -m "MP4v2 Utilities" -N ./mp4track -o doc/man/man1/mp4track.1
help2man: can't get `--help' info from ./mp4file
Try `--no-discard-stderr' if option outputs to stderr
make: *** [doc/man/man1/mp4file.1] Error 1
make: *** Waiting for unfinished jobs....
help2man: can't get `--help' info from ./mp4subtitle
Try `--no-discard-stderr' if option outputs to stderr
make: *** [doc/man/man1/mp4subtitle.1] Error 1
help2man: can't get `--help' info from ./mp4track
Try `--no-discard-stderr' if option outputs to stderr
make: *** [doc/man/man1/mp4track.1] Error 1
help2man: can't get `--help' info from ./mp4art
Try `--no-discard-stderr' if option outputs to stderr
make: *** [doc/man/man1/mp4art.1] Error 1 |
_________________ https://github.com/kernelOfTruth/ZFS-for-SystemRescueCD/tree/ZFS-for-SysRescCD-4.9.0
https://github.com/kernelOfTruth/pulseaudio-equalizer-ladspa
Hardcore Gentoo Linux user since 2004 |
|
Back to top |
|
|
Uzytkownik Guru
Joined: 31 Oct 2004 Posts: 399 Location: Bay Area, US
|
Posted: Mon Apr 19, 2010 8:21 am Post subject: |
|
|
I get problems with -floop-pararellize for sys-libs/gdbm as libgdbm_compat is relinked in src_install phase without LDFLAGS:
Code: | >>> Starting src_install
make -j2 -j1 INSTALL_ROOT=/var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image/ install install-compat
./mkinstalldirs /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64 \
/var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/include/gdbm /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/share/man/man3 \
/var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/share/info
mkdir /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr
mkdir /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64
mkdir /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/include
mkdir /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/include/gdbm
mkdir /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/share
mkdir /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/share/man
mkdir /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/share/man/man3
mkdir /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/share/info
/bin/sh ./libtool /usr/bin/install -c -c libgdbm.la /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64/libgdbm.la
/usr/bin/install -c -c .libs/libgdbm.so.3.0.0 /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64/libgdbm.so.3.0.0
(cd /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64 && rm -f libgdbm.so.3 && ln -s libgdbm.so.3.0.0 libgdbm.so.3)
(cd /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64 && rm -f libgdbm.so && ln -s libgdbm.so.3.0.0 libgdbm.so)
/usr/bin/install -c -c .libs/libgdbm.lai /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64/libgdbm.la
/usr/bin/install -c -c .libs/libgdbm.a /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64/libgdbm.a
x86_64-pc-linux-gnu-ranlib /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64/libgdbm.a
chmod 644 /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64/libgdbm.a
/usr/bin/install -c -m 644 gdbm.h /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/include/gdbm/gdbm.h
libtool: install: warning: remember to run `libtool --finish /usr/lib64'
/usr/bin/install -c -m 644 ./gdbm.3 /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/share/man/man3/gdbm.3
/usr/bin/install -c -m 644 ./gdbm.info /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/share/info/gdbm.info
./mkinstalldirs /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64 \
/var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/include/gdbm
/bin/sh ./libtool /usr/bin/install -c -c libgdbm_compat.la \
/var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64/libgdbm_compat.la
cd /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/work/gdbm-1.8.3; /bin/sh ./libtool --mode=relink x86_64-pc-linux-gnu-gcc -Wl,-O1 -Wl,--as-needed -Wl,--add-needed -Wl,--hash-style=both -Wl,--sort-common -fopenmp -lgomp -o libgdbm_compat.la -rpath /usr/lib64 -version-info 3 0 0 dbminit.lo delete.lo fetch.lo store.lo seq.lo close.lo dbmopen.lo dbmdelete.lo dbmfetch.lo dbmstore.lo dbmseq.lo dbmclose.lo dbmdirfno.lo dbmpagfno.lo dbmrdonly.lo libgdbm.la -inst-prefix-dir /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image/
libtool: install: warning: relinking `libgdbm_compat.la'
*** Warning: This library needs some functionality provided by -lgomp.
*** I have the capability to make that library automatically link in when
*** you link to this library. But I can only do this if you have a
*** shared version of the library, which you do not appear to have.
*** The inter-library dependencies that have been dropped here will be
*** automatically added whenever a program is linked with this library
*** or is declared to -dlopen it.
x86_64-pc-linux-gnu-gcc -shared dbminit.lo delete.lo fetch.lo store.lo seq.lo close.lo dbmopen.lo dbmdelete.lo dbmfetch.lo dbmstore.lo dbmseq.lo dbmclose.lo dbmdirfno.lo dbmpagfno.lo dbmrdonly.lo -Wl,--rpath -Wl,/usr/lib64 -Wl,--as-needed -L/usr/lib64 -L/var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64 -lgdbm -Wl,-O1 -Wl,--add-needed -Wl,--hash-style=both -Wl,--sort-common -Wl,-soname -Wl,libgdbm_compat.so.3 -o .libs/libgdbm_compat.so.3.0.0
/usr/bin/install -c -c .libs/libgdbm_compat.so.3.0.0T /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64/libgdbm_compat.so.3.0.0
(cd /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64 && rm -f libgdbm_compat.so.3 && ln -s libgdbm_compat.so.3.0.0 libgdbm_compat.so.3)
(cd /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64 && rm -f libgdbm_compat.so && ln -s libgdbm_compat.so.3.0.0 libgdbm_compat.so)
/usr/bin/install -c -c .libs/libgdbm_compat.lai /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64/libgdbm_compat.la
/usr/bin/install -c -c .libs/libgdbm_compat.a /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64/libgdbm_compat.a
x86_64-pc-linux-gnu-ranlib /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64/libgdbm_compat.a
chmod 644 /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/lib64/libgdbm_compat.a
/usr/bin/install -c -m 644 ./dbm.h /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/include/gdbm/dbm.h
libtool: install: warning: remember to run `libtool --finish /usr/lib64'
/usr/bin/install -c -m 644 ./ndbm.h /var/tmp/paludis/sys-libs-gdbm-1.8.3-r4/image//usr/include/gdbm/ndbm.h
>>> Done src_install
|
My LDFLAGS are "-Wl,-O1 -Wl,--as-needed -Wl,--add-needed -Wl,--hash-style=both -Wl,--sort-common -fopenmp -lgomp". Strangely ld seems to be happy to have a few 'undefined references'. _________________ I've probably left my head... somwhere. Please wait untill I find it. |
|
Back to top |
|
|
Tom_ Guru
Joined: 20 May 2004 Posts: 444 Location: France
|
Posted: Mon Apr 19, 2010 9:08 am Post subject: |
|
|
Any feedback on new Link Time Optimization ? |
|
Back to top |
|
|
Ormaaj Guru
Joined: 28 Jan 2008 Posts: 319
|
Posted: Mon Apr 19, 2010 9:49 am Post subject: |
|
|
Tom_ wrote: | Any feedback on new Link Time Optimization ? | Most things seem to fail with -flto. Couldn't give you any numbers. Phoronix just did a benchmark today but as usual they didn't mention CFLAGS. I suspect they weren't using either graphite or lto. www.phoronix.com/scan.php?page=article&item=gcc_45_benchmarks&num=1 |
|
Back to top |
|
|
Uzytkownik Guru
Joined: 31 Oct 2004 Posts: 399 Location: Bay Area, US
|
Posted: Mon Apr 19, 2010 9:59 am Post subject: |
|
|
x11-libs/qt-gui-4.6.2 - I'm not quite sure If I understend the error message.
Code: | rcc styles/qstyle.qrc
rcc dialogs/qmessagebox.qrc
uic dialogs/qprintpropertieswidget.ui
compiling[mmx] painting/qdrawhelper_mmx.cpp
compiling[mmx3dnow] painting/qdrawhelper_mmx3dnow.cpp
In file included from ../../include/QtGui/private/qdrawhelper_mmx_p.h:1:0,
from painting/qdrawhelper_mmx.cpp:46:
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h: In function 'void comp_func_Clear(uint*, const uint*, int, uint) [with MM = QMMXIntrinsics, uint = unsigned int]':
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h:168:25: error: DECL_GIMPLE_REG_P set on a variable with address taken
mmx_0x0080
cc1plus: note: in statement
mmx_0x0080.677_221 = &mmx_0x0080;
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h:168: confused by earlier errors, bailing out
make: *** [.obj/release-shared/qdrawhelper_mmx.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from ../../include/QtGui/private/qdrawhelper_mmx_p.h:1:0,
from painting/qdrawhelper_mmx3dnow.cpp:46:
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h: In function 'void comp_func_Clear(uint*, const uint*, int, uint) [with MM = QMMX3DNOWIntrinsics, uint = unsigned int]':
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h:168:25: error: DECL_GIMPLE_REG_P set on a variable with address taken
mmx_0x0080
cc1plus: note: in statement
mmx_0x0080.677_221 = &mmx_0x0080;
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h:168: confused by earlier errors, bailing out
make: *** [.obj/release-shared/qdrawhelper_mmx3dnow.o] Error 1
/usr/libexec/paludis/utils/emake: emake returned error 2
|
_________________ I've probably left my head... somwhere. Please wait untill I find it. |
|
Back to top |
|
|
kernelOfTruth Watchman
Joined: 20 Dec 2005 Posts: 6111 Location: Vienna, Austria; Germany; hello world :)
|
Posted: Mon Apr 19, 2010 11:42 am Post subject: |
|
|
Uzytkownik wrote: | x11-libs/qt-gui-4.6.2 - I'm not quite sure If I understend the error message.
Code: | rcc styles/qstyle.qrc
rcc dialogs/qmessagebox.qrc
uic dialogs/qprintpropertieswidget.ui
compiling[mmx] painting/qdrawhelper_mmx.cpp
compiling[mmx3dnow] painting/qdrawhelper_mmx3dnow.cpp
In file included from ../../include/QtGui/private/qdrawhelper_mmx_p.h:1:0,
from painting/qdrawhelper_mmx.cpp:46:
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h: In function 'void comp_func_Clear(uint*, const uint*, int, uint) [with MM = QMMXIntrinsics, uint = unsigned int]':
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h:168:25: [b]error: DECL_GIMPLE_REG_P set on a variable with address taken[/b]
mmx_0x0080
cc1plus: note: in statement
mmx_0x0080.677_221 = &mmx_0x0080;
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h:168: confused by earlier errors, bailing out
make: *** [.obj/release-shared/qdrawhelper_mmx.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from ../../include/QtGui/private/qdrawhelper_mmx_p.h:1:0,
from painting/qdrawhelper_mmx3dnow.cpp:46:
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h: In function 'void comp_func_Clear(uint*, const uint*, int, uint) [with MM = QMMX3DNOWIntrinsics, uint = unsigned int]':
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h:168:25: error: DECL_GIMPLE_REG_P set on a variable with address taken
mmx_0x0080
cc1plus: note: in statement
mmx_0x0080.677_221 = &mmx_0x0080;
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h:168: confused by earlier errors, bailing out
make: *** [.obj/release-shared/qdrawhelper_mmx3dnow.o] Error 1
/usr/libexec/paludis/utils/emake: emake returned error 2
|
|
that should be a problem with gimple aka. flto
disable flto and you should be fine to go _________________ https://github.com/kernelOfTruth/ZFS-for-SystemRescueCD/tree/ZFS-for-SysRescCD-4.9.0
https://github.com/kernelOfTruth/pulseaudio-equalizer-ladspa
Hardcore Gentoo Linux user since 2004 |
|
Back to top |
|
|
Uzytkownik Guru
Joined: 31 Oct 2004 Posts: 399 Location: Bay Area, US
|
Posted: Mon Apr 19, 2010 11:53 am Post subject: |
|
|
kernelOfTruth wrote: | Uzytkownik wrote: | x11-libs/qt-gui-4.6.2 - I'm not quite sure If I understend the error message.
Code: | rcc styles/qstyle.qrc
rcc dialogs/qmessagebox.qrc
uic dialogs/qprintpropertieswidget.ui
compiling[mmx] painting/qdrawhelper_mmx.cpp
compiling[mmx3dnow] painting/qdrawhelper_mmx3dnow.cpp
In file included from ../../include/QtGui/private/qdrawhelper_mmx_p.h:1:0,
from painting/qdrawhelper_mmx.cpp:46:
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h: In function 'void comp_func_Clear(uint*, const uint*, int, uint) [with MM = QMMXIntrinsics, uint = unsigned int]':
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h:168:25: [b]error: DECL_GIMPLE_REG_P set on a variable with address taken[/b]
mmx_0x0080
cc1plus: note: in statement
mmx_0x0080.677_221 = &mmx_0x0080;
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h:168: confused by earlier errors, bailing out
make: *** [.obj/release-shared/qdrawhelper_mmx.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from ../../include/QtGui/private/qdrawhelper_mmx_p.h:1:0,
from painting/qdrawhelper_mmx3dnow.cpp:46:
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h: In function 'void comp_func_Clear(uint*, const uint*, int, uint) [with MM = QMMX3DNOWIntrinsics, uint = unsigned int]':
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h:168:25: error: DECL_GIMPLE_REG_P set on a variable with address taken
mmx_0x0080
cc1plus: note: in statement
mmx_0x0080.677_221 = &mmx_0x0080;
../../include/QtGui/private/../../../src/gui/painting/qdrawhelper_mmx_p.h:168: confused by earlier errors, bailing out
make: *** [.obj/release-shared/qdrawhelper_mmx3dnow.o] Error 1
/usr/libexec/paludis/utils/emake: emake returned error 2
|
|
that should be a problem with gimple aka. flto
disable flto and you should be fine to go |
I have it disabled. My bashrc:
Code: | CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -ggdb -march=native -msahf -mcx16 -fgcse-sm -fgcse-las -fgcse-after-reload -ftracer -floop-interchange -floop-strip-mine -floop-block -floop-parallelize-all -ftree-parallelize-loops=2"
# CFLAGS+="-ftree-loop-distribution -ftree-loop-im" # Might be interesting. TODO: Check if they are safe
# CFLAGS+="-fsched-pressure -fsched-spec-load"
CXXFLAGS="${CFLAGS}"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--add-needed -Wl,--hash-style=both -Wl,--sort-common -fopenmp -lgomp"
MAKEOPTS="-j2"
I_PROMISE_TO_SUPPLY_PATCHES_WITH_BUGS=1
function inarray {
local var=$1
shift
local array=("${@}")
for elem in "${array[@]}"; do
if [[ x$var == x$elem ]]; then
return 0
fi
done
return 1
}
DONT_PARARELLIZE=(sys-libs/gdbm dev-lang/perl)
if inarray "${CATEGORY}/${PN}" ${DONT_PARARELLIZE[*]}; then
CFLAGS=${CFLAGS%-floop-parallelize-all -ftree-parallelize-loops=2} #TODO: Check delete anywhere instead of delete from end
fi
LD_MEMORY_SAVE=(app-office/openoffice net-libs/webkit-gtk)
if inarray "${CATEGORY}/${PN}" ${LD_MEMORY_SAVE[*]}; then
LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
fi
CCACHE_ENABLED=(app-emulation/wine)
if inarray "${CATEGORY}/${PN}" ${CCACHE_ENABLED[*]} || test x${PV} = x9999; then
PATH="/usr/lib/ccache/bin/:${PATH}"
CCACHE_DIR="/var/tmp/ccache"
SANDBOX_WRITE="${SANDBOX_WRITE}:${CCACHE_DIR}"
fi
|
Edit: fixed inarray function in case anybody needed it. _________________ I've probably left my head... somwhere. Please wait untill I find it. |
|
Back to top |
|
|
phajdan.jr Retired Dev
Joined: 23 Mar 2006 Posts: 1777 Location: Poland
|
Posted: Mon Apr 19, 2010 12:50 pm Post subject: |
|
|
platojones wrote: | Two big apps that don't compile with gcc 4.5 at all are chromium and openoffice. Seems like there was a slight change in behavior in the C++ compilation that blows up chromium |
Neither I or the upstream developers use gcc 4.5 at this moment. However, patches or just bug reports with the build logs are welcome. _________________ http://phajdan-jr.blogspot.com/ |
|
Back to top |
|
|
platojones Veteran
Joined: 23 Oct 2002 Posts: 1602 Location: Just over the horizon
|
Posted: Mon Apr 19, 2010 1:30 pm Post subject: |
|
|
phajdan.jr wrote: | platojones wrote: | Two big apps that don't compile with gcc 4.5 at all are chromium and openoffice. Seems like there was a slight change in behavior in the C++ compilation that blows up chromium |
Neither I or the upstream developers use gcc 4.5 at this moment. However, patches or just bug reports with the build logs are welcome. |
Thanks. I checked and there are already bugs assigned upstream for the issues. Looks like it's being worked. |
|
Back to top |
|
|
Genewb Apprentice
Joined: 09 Jan 2007 Posts: 165
|
Posted: Mon Apr 19, 2010 1:51 pm Post subject: |
|
|
Tom_ wrote: | Any feedback on new Link Time Optimization ? |
Makes programmes larger, haven't done any benchmarks.
As you can tell from the thread, quite a number of packages fail to build with it. whole-program can now be used with lto, which reduces binary size dramatically, though it impairs binaries which need to export symbols (some programmes' plugins won't work, for instance, for example gmpc plugins).
Here's a list of packages that have failed for me with lto so far:
p7zip, enchant, evince, hunspell, glib, poppler, gnome-menus, gnome-vfs, gvfs, libglade, libgnome, libgnomeui, gnome-media, gucharmap, exempi, gstreamer, gst-plugins-bad, imagemagick, libdvdnav, libdvdread, gnome-mplayer, mplayer, vlc, webkit-gtk, xulrunner, goffice:0.8, gtk+, gtksourceview, libwnck, pango, vte
...and three packages which don't like whole-program: alsa-lib, gmpc, gnutls
The only problems I've found thus far with lto are ICEs rather than miscompilation, but I hasten to add that I haven't tried it on any critical packages--that is to say, any which are required for being able to log in and use portage.
Edit: Speaking of benchmarks, holy ****, using -flto -fwhole-program on ffmpeg increased a transcode's rate from 96fps to 141fps. That's mightily impressive! Perhaps I should take a few benchmarks and do SD... _________________ I don't give a darn about "experience", just functional copyleft software. |
|
Back to top |
|
|
Tom_ Guru
Joined: 20 May 2004 Posts: 444 Location: France
|
Posted: Mon Apr 19, 2010 2:37 pm Post subject: |
|
|
Thank you for your feebacks.
Even if it looks promising, there are too many ebuilds failing for me |
|
Back to top |
|
|
Genewb Apprentice
Joined: 09 Jan 2007 Posts: 165
|
Posted: Mon Apr 19, 2010 3:30 pm Post subject: |
|
|
Tom_ wrote: | Thank you for your feebacks.
Even if it looks promising, there are too many ebuilds failing for me |
You're welcome. You could use /etc/portage/env for packages that don't like lto, Diego wrote a guide about using custom per-package environments recently : http://blog.flameeyes.eu/2010/04/14/avoid-building-some-static-libraries
ffmpeg benchmarks, using 10 transcodes for each and rounded, mean +- 2SDs:
lto, whole-program:
65.05 +- 14.73s
no lto, no whole-program:
71.70 +- 24.38s
That was using youtube video UFBZ_uAbxS0, format 18.
ffmpeg -benchmark -i UFBZ_uAbxS0.mp4 -vcodec wmv2 -acodec aac z.mkv
Far too much variance to draw any conclusions really. Not so much cause for excitement.... _________________ I don't give a darn about "experience", just functional copyleft software. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|