aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.6
diff options
context:
space:
mode:
authorJing Yu <jingyu@google.com>2012-02-15 15:40:16 -0800
committerJing Yu <jingyu@google.com>2012-02-15 15:40:16 -0800
commit3f73d6ef90458b45bbbb33ef4c2b174d4662a22d (patch)
tree1b5f0d96c51b51168b3713058a1b62e92f1136eb /gcc-4.6
parentd7030123e04baab5dbff9c9ee04c0de99bd9a774 (diff)
downloadtoolchain_gcc-3f73d6ef90458b45bbbb33ef4c2b174d4662a22d.tar.gz
toolchain_gcc-3f73d6ef90458b45bbbb33ef4c2b174d4662a22d.tar.bz2
toolchain_gcc-3f73d6ef90458b45bbbb33ef4c2b174d4662a22d.zip
Sync down FSF r184235@google/gcc-4_6_2-mobile branch
1) Get mostly new patches from FSF gcc-4.6 branch 2) Fix PR52129 3) Insert GNU-stack note for all ARM targets Change-Id: I2b9926981210e517e4021242908074319a91d6bd
Diffstat (limited to 'gcc-4.6')
-rw-r--r--gcc-4.6/ChangeLog24
-rw-r--r--gcc-4.6/ChangeLog.google-4_69
-rw-r--r--gcc-4.6/Makefile.def7
-rw-r--r--gcc-4.6/Makefile.in1014
-rw-r--r--gcc-4.6/boehm-gc/ChangeLog8
-rwxr-xr-xgcc-4.6/boehm-gc/configure12
-rw-r--r--gcc-4.6/config/ChangeLog8
-rw-r--r--gcc-4.6/config/acx.m48
-rwxr-xr-xgcc-4.6/configure13
-rw-r--r--gcc-4.6/configure.ac11
-rw-r--r--gcc-4.6/contrib/ChangeLog4
-rw-r--r--gcc-4.6/contrib/ChangeLog.google-4_621
-rw-r--r--gcc-4.6/contrib/reghunt/ChangeLog4
-rw-r--r--gcc-4.6/contrib/regression/ChangeLog4
-rwxr-xr-xgcc-4.6/contrib/testsuite-management/validate_failures.py337
-rw-r--r--gcc-4.6/contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail13
-rw-r--r--gcc-4.6/fixincludes/ChangeLog4
-rw-r--r--gcc-4.6/function_reordering_plugin/ChangeLog.google-4_611
-rw-r--r--gcc-4.6/function_reordering_plugin/Makefile.am38
-rw-r--r--gcc-4.6/function_reordering_plugin/Makefile.in548
-rw-r--r--gcc-4.6/function_reordering_plugin/aclocal.m49008
-rw-r--r--gcc-4.6/function_reordering_plugin/callgraph.c597
-rw-r--r--gcc-4.6/function_reordering_plugin/callgraph.h272
-rw-r--r--gcc-4.6/function_reordering_plugin/config.h.in68
-rwxr-xr-xgcc-4.6/function_reordering_plugin/configure13086
-rw-r--r--gcc-4.6/function_reordering_plugin/configure.ac14
-rw-r--r--gcc-4.6/function_reordering_plugin/function_reordering_plugin.c248
-rw-r--r--gcc-4.6/gcc/ChangeLog1124
-rw-r--r--gcc-4.6/gcc/ChangeLog.google-4_6474
-rw-r--r--gcc-4.6/gcc/ChangeLog.google-main10
-rw-r--r--gcc-4.6/gcc/DATESTAMP2
-rw-r--r--gcc-4.6/gcc/Makefile.in15
-rw-r--r--gcc-4.6/gcc/ada/ChangeLog81
-rw-r--r--gcc-4.6/gcc/ada/Make-generated.in31
-rw-r--r--gcc-4.6/gcc/ada/gcc-interface/Makefile.in56
-rw-r--r--gcc-4.6/gcc/ada/gcc-interface/decl.c25
-rw-r--r--gcc-4.6/gcc/ada/gcc-interface/trans.c22
-rw-r--r--gcc-4.6/gcc/ada/gnatvsn.ads4
-rw-r--r--gcc-4.6/gcc/ada/init.c23
-rw-r--r--gcc-4.6/gcc/ada/mlib-tgt-specific-darwin.adb12
-rw-r--r--gcc-4.6/gcc/ada/system-darwin-ppc64.ads149
-rw-r--r--gcc-4.6/gcc/ada/tracebak.c20
-rw-r--r--gcc-4.6/gcc/basic-block.h1
-rw-r--r--gcc-4.6/gcc/builtins.c30
-rw-r--r--gcc-4.6/gcc/c-decl.c17
-rw-r--r--gcc-4.6/gcc/c-family/ChangeLog22
-rw-r--r--gcc-4.6/gcc/c-family/ChangeLog.google-4_639
-rw-r--r--gcc-4.6/gcc/c-family/c-common.c56
-rw-r--r--gcc-4.6/gcc/c-family/c-common.h12
-rw-r--r--gcc-4.6/gcc/c-family/c-opts.c23
-rw-r--r--gcc-4.6/gcc/c-family/c-pretty-print.c4
-rw-r--r--gcc-4.6/gcc/c-family/c-pretty-print.h2
-rw-r--r--gcc-4.6/gcc/c-family/c.opt40
-rw-r--r--gcc-4.6/gcc/c-parser.c2
-rw-r--r--gcc-4.6/gcc/c-typeck.c12
-rw-r--r--gcc-4.6/gcc/calls.c151
-rw-r--r--gcc-4.6/gcc/cfgcleanup.c18
-rw-r--r--gcc-4.6/gcc/cfgexpand.c58
-rw-r--r--gcc-4.6/gcc/cfgloop.c55
-rw-r--r--gcc-4.6/gcc/cfgloop.h1
-rw-r--r--gcc-4.6/gcc/cgraph.c9
-rw-r--r--gcc-4.6/gcc/cgraph.h2
-rw-r--r--gcc-4.6/gcc/cgraphbuild.c11
-rw-r--r--gcc-4.6/gcc/cgraphunit.c1
-rw-r--r--gcc-4.6/gcc/combine.c1
-rw-r--r--gcc-4.6/gcc/common.opt48
-rw-r--r--gcc-4.6/gcc/compare-elim.c8
-rw-r--r--gcc-4.6/gcc/config.gcc26
-rw-r--r--gcc-4.6/gcc/config.in6
-rw-r--r--gcc-4.6/gcc/config/alpha/alpha.c10
-rw-r--r--gcc-4.6/gcc/config/alpha/elf.h2
-rw-r--r--gcc-4.6/gcc/config/alpha/linux-unwind.h33
-rw-r--r--gcc-4.6/gcc/config/alpha/netbsd.h2
-rw-r--r--gcc-4.6/gcc/config/alpha/osf5.h2
-rw-r--r--gcc-4.6/gcc/config/arm/arm.c63
-rw-r--r--gcc-4.6/gcc/config/arm/arm.h4
-rw-r--r--gcc-4.6/gcc/config/arm/arm.md17
-rwxr-xr-xgcc-4.6/gcc/config/avr/avr-devices.c6
-rw-r--r--gcc-4.6/gcc/config/avr/avr.c35
-rw-r--r--gcc-4.6/gcc/config/avr/avr.md4
-rw-r--r--gcc-4.6/gcc/config/avr/libgcc.S28
-rw-r--r--gcc-4.6/gcc/config/darwin.c167
-rw-r--r--gcc-4.6/gcc/config/i386/avxintrin.h2
-rw-r--r--gcc-4.6/gcc/config/i386/constraints.md6
-rw-r--r--gcc-4.6/gcc/config/i386/cygwin.h2
-rw-r--r--gcc-4.6/gcc/config/i386/darwin.h2
-rw-r--r--gcc-4.6/gcc/config/i386/freebsd.h3
-rw-r--r--gcc-4.6/gcc/config/i386/i386-builtin-types.def1
-rw-r--r--gcc-4.6/gcc/config/i386/i386.c1112
-rw-r--r--gcc-4.6/gcc/config/i386/i386.md177
-rw-r--r--gcc-4.6/gcc/config/i386/i386.opt4
-rw-r--r--gcc-4.6/gcc/config/i386/libgcc-glibc.ver12
-rw-r--r--gcc-4.6/gcc/config/i386/linux.h2
-rw-r--r--gcc-4.6/gcc/config/i386/linux64.h2
-rw-r--r--gcc-4.6/gcc/config/i386/mingw32.h8
-rw-r--r--gcc-4.6/gcc/config/i386/predicates.md2
-rw-r--r--gcc-4.6/gcc/config/i386/sse.md40
-rw-r--r--gcc-4.6/gcc/config/ia64/linux.h2
-rw-r--r--gcc-4.6/gcc/config/m68k/m68k.c17
-rw-r--r--gcc-4.6/gcc/config/mips/linux.h2
-rw-r--r--gcc-4.6/gcc/config/pa/pa.c5
-rw-r--r--gcc-4.6/gcc/config/pa/pa.h3
-rw-r--r--gcc-4.6/gcc/config/rs6000/rs6000.c164
-rw-r--r--gcc-4.6/gcc/config/rs6000/rs6000.md239
-rw-r--r--gcc-4.6/gcc/config/rx/rx.md84
-rw-r--r--gcc-4.6/gcc/config/s390/s390-protos.h2
-rw-r--r--gcc-4.6/gcc/config/s390/s390.c2
-rw-r--r--gcc-4.6/gcc/config/sparc/freebsd.h2
-rw-r--r--gcc-4.6/gcc/config/sparc/linux.h2
-rw-r--r--gcc-4.6/gcc/config/sparc/linux64.h2
-rw-r--r--gcc-4.6/gcc/config/sparc/sol2.h2
-rw-r--r--gcc-4.6/gcc/config/sparc/sp-elf.h2
-rw-r--r--gcc-4.6/gcc/config/sparc/sp64-elf.h2
-rw-r--r--gcc-4.6/gcc/config/sparc/sparc.c115
-rw-r--r--gcc-4.6/gcc/config/sparc/sparc.h1
-rw-r--r--gcc-4.6/gcc/config/sparc/sparc.md92
-rw-r--r--gcc-4.6/gcc/config/sparc/sparc.opt5
-rwxr-xr-xgcc-4.6/gcc/configure69
-rw-r--r--gcc-4.6/gcc/configure.ac44
-rw-r--r--gcc-4.6/gcc/convert.c9
-rw-r--r--gcc-4.6/gcc/coverage.c144
-rw-r--r--gcc-4.6/gcc/cp/ChangeLog285
-rw-r--r--gcc-4.6/gcc/cp/ChangeLog.google-4_682
-rw-r--r--gcc-4.6/gcc/cp/call.c50
-rw-r--r--gcc-4.6/gcc/cp/class.c87
-rw-r--r--gcc-4.6/gcc/cp/cp-tree.h1
-rw-r--r--gcc-4.6/gcc/cp/decl.c83
-rw-r--r--gcc-4.6/gcc/cp/error.c20
-rw-r--r--gcc-4.6/gcc/cp/init.c38
-rw-r--r--gcc-4.6/gcc/cp/mangle.c11
-rw-r--r--gcc-4.6/gcc/cp/method.c5
-rw-r--r--gcc-4.6/gcc/cp/name-lookup.c5
-rw-r--r--gcc-4.6/gcc/cp/parser.c50
-rw-r--r--gcc-4.6/gcc/cp/pt.c204
-rw-r--r--gcc-4.6/gcc/cp/semantics.c61
-rw-r--r--gcc-4.6/gcc/cp/tree.c12
-rw-r--r--gcc-4.6/gcc/cp/typeck.c22
-rw-r--r--gcc-4.6/gcc/cp/typeck2.c12
-rw-r--r--gcc-4.6/gcc/df.h2
-rw-r--r--gcc-4.6/gcc/doc/extend.texi50
-rw-r--r--gcc-4.6/gcc/doc/install.texi5
-rw-r--r--gcc-4.6/gcc/doc/invoke.texi320
-rw-r--r--gcc-4.6/gcc/doc/md.texi22
-rw-r--r--gcc-4.6/gcc/doc/tm.texi10
-rw-r--r--gcc-4.6/gcc/doc/tm.texi.in10
-rw-r--r--gcc-4.6/gcc/dwarf2out.c406
-rw-r--r--gcc-4.6/gcc/expr.c137
-rw-r--r--gcc-4.6/gcc/expr.h2
-rw-r--r--gcc-4.6/gcc/final.c13
-rw-r--r--gcc-4.6/gcc/flag-types.h7
-rw-r--r--gcc-4.6/gcc/fortran/ChangeLog232
-rw-r--r--gcc-4.6/gcc/fortran/array.c4
-rw-r--r--gcc-4.6/gcc/fortran/check.c29
-rw-r--r--gcc-4.6/gcc/fortran/class.c2
-rw-r--r--gcc-4.6/gcc/fortran/dependency.c14
-rw-r--r--gcc-4.6/gcc/fortran/expr.c80
-rw-r--r--gcc-4.6/gcc/fortran/gfortran.h2
-rw-r--r--gcc-4.6/gcc/fortran/interface.c2
-rw-r--r--gcc-4.6/gcc/fortran/invoke.texi33
-rw-r--r--gcc-4.6/gcc/fortran/module.c5
-rw-r--r--gcc-4.6/gcc/fortran/parse.c1
-rw-r--r--gcc-4.6/gcc/fortran/primary.c40
-rw-r--r--gcc-4.6/gcc/fortran/resolve.c152
-rw-r--r--gcc-4.6/gcc/fortran/trans-array.c22
-rw-r--r--gcc-4.6/gcc/fortran/trans-common.c10
-rw-r--r--gcc-4.6/gcc/fortran/trans-decl.c31
-rw-r--r--gcc-4.6/gcc/fortran/trans-expr.c25
-rw-r--r--gcc-4.6/gcc/fortran/trans-io.c6
-rw-r--r--gcc-4.6/gcc/fortran/trans-openmp.c6
-rw-r--r--gcc-4.6/gcc/fortran/trans-types.c6
-rw-r--r--gcc-4.6/gcc/gcc.c15
-rw-r--r--gcc-4.6/gcc/ggc.h5
-rw-r--r--gcc-4.6/gcc/gimple-fold.c66
-rw-r--r--gcc-4.6/gcc/gimple.c14
-rw-r--r--gcc-4.6/gcc/go/ChangeLog4
-rw-r--r--gcc-4.6/gcc/godump.c21
-rw-r--r--gcc-4.6/gcc/graphite-scop-detection.c10
-rw-r--r--gcc-4.6/gcc/ipa-inline.c126
-rw-r--r--gcc-4.6/gcc/ipa-prop.c6
-rw-r--r--gcc-4.6/gcc/ipa-split.c60
-rw-r--r--gcc-4.6/gcc/java/ChangeLog4
-rw-r--r--gcc-4.6/gcc/libgcov.c1
-rw-r--r--gcc-4.6/gcc/longlong.h25
-rw-r--r--gcc-4.6/gcc/loop-unroll.c166
-rw-r--r--gcc-4.6/gcc/lto-cgraph.c6
-rw-r--r--gcc-4.6/gcc/lto-opts.c6
-rw-r--r--gcc-4.6/gcc/lto-section-in.c2
-rw-r--r--gcc-4.6/gcc/lto-streamer-in.c6
-rw-r--r--gcc-4.6/gcc/lto-streamer-out.c15
-rw-r--r--gcc-4.6/gcc/lto/ChangeLog11
-rw-r--r--gcc-4.6/gcc/lto/lto.c24
-rw-r--r--gcc-4.6/gcc/lto/lto.h2
-rw-r--r--gcc-4.6/gcc/mcf.c3
-rw-r--r--gcc-4.6/gcc/mversn-dispatch.c735
-rw-r--r--gcc-4.6/gcc/objc/ChangeLog19
-rw-r--r--gcc-4.6/gcc/objc/objc-act.c5
-rw-r--r--gcc-4.6/gcc/objc/objc-next-runtime-abi-01.c5
-rw-r--r--gcc-4.6/gcc/objcp/ChangeLog4
-rw-r--r--gcc-4.6/gcc/omp-low.c6
-rw-r--r--gcc-4.6/gcc/opts.c9
-rw-r--r--gcc-4.6/gcc/opts.h1
-rw-r--r--gcc-4.6/gcc/output.h1
-rw-r--r--gcc-4.6/gcc/params.def26
-rw-r--r--gcc-4.6/gcc/passes.c1
-rw-r--r--gcc-4.6/gcc/po/ChangeLog32
-rw-r--r--gcc-4.6/gcc/po/de.po2054
-rw-r--r--gcc-4.6/gcc/po/ja.po853
-rw-r--r--gcc-4.6/gcc/po/sv.po108
-rw-r--r--gcc-4.6/gcc/postreload.c3
-rw-r--r--gcc-4.6/gcc/predict.c368
-rw-r--r--gcc-4.6/gcc/predict.def4
-rw-r--r--gcc-4.6/gcc/profile.c24
-rw-r--r--gcc-4.6/gcc/regmove.c2
-rw-r--r--gcc-4.6/gcc/reload1.c4
-rw-r--r--gcc-4.6/gcc/reorg.c4
-rw-r--r--gcc-4.6/gcc/sched-deps.c6
-rw-r--r--gcc-4.6/gcc/simplify-rtx.c18
-rw-r--r--gcc-4.6/gcc/target.def14
-rw-r--r--gcc-4.6/gcc/testsuite/ChangeLog856
-rw-r--r--gcc-4.6/gcc/testsuite/ChangeLog.google-4_6175
-rw-r--r--gcc-4.6/gcc/testsuite/ChangeLog.google-main5
-rw-r--r--gcc-4.6/gcc/testsuite/ada/acats/overflow.lst1
-rw-r--r--gcc-4.6/gcc/testsuite/c-c++-common/Wunused-var-14.c13
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/auto31.C12
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-48089.C26
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-98.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-array4.C14
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-initlist5.C15
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-non-const-arg3.C23
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-static8.C7
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-static8_nonpedantic.C7
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-typedef1.C11
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-value3.C10
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/decltype31.C13
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/decltype35.C15
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/decltype36.C21
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/defaulted2.C3
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/defaulted32.C21
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist-49216.C6
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist17.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist36.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist5.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist57.C8
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist7.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-50220.C9
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg2.C7
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh2.C3
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-qualified.C17
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-use2.C11
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/noexcept11.C4
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr42844-2.C4
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr50491.C17
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr50901.C9
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr51150.C20
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/rv-cast3.C18
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/rv-cast4.C13
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/sfinae27.C20
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/union5.C23
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic-unresolved.C12
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic103.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic114.C27
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic115.C19
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic116.C32
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/debug/dwarf2/icf.C8
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/dfp/44473-1.C122
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/dfp/44473-2.C25
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/dfp/base.C23
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-1.C40
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-2.C28
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-3.C28
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-4.C35
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-5.C29
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/dfp/nofields.C19
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/eh/defarg1.C10
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/ext/altivec-17.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/ext/pretty3.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/fstack-protector-strong.C35
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/gcov/gcov-2.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/init/array28.C7
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/init/const8.C11
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/init/pr42844.C14
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/init/ref20.C8
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/init/value10.C27
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/init/value9.C32
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/init/vbase1.C39
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/mversn10.C4
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/mversn10a.C4
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/mversn16.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/mversn8.C8
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/other/enum2.C3
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/other/offsetof7.C17
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/other/pr50464.C170
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/other/sized-delete-1.C14
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/pr44486.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/pr48660.C22
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/pr51151.C12
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/template/partial12.C27
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-79.C24
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-81.C17
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-82.C48
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-83.C55
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-84.C29
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-85.C22
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/torture/pr49309.C (renamed from gcc-4.6/libmudflap/testsuite/libmudflap.c++/pass68-frag.cxx)2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/torture/pr49628.C37
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/torture/pr49720.C8
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/torture/pr50189.C121
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/tree-prof/callgraph-profiles.C30
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/tree-prof/mversn15.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/tree-ssa/pr49911.C41
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/tree-ssa/pr50622.C30
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/vect/pr51485.cc14
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/vect/slp-pr50413.cc165
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/vect/vect.exp13
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/warn/Wuninitializable-member.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.dg/warn/pr35711.C2
-rw-r--r--gcc-4.6/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog4
-rw-r--r--gcc-4.6/gcc/testsuite/g++.old-deja/g++.pt/memtemp77.C2
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/compile/20110906-1.c22
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/compile/20110913-1.c26
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr49049.c28
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr50565-1.c4
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr50565-2.c4
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr51077.c15
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/execute/20111208-1.c94
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/execute/20111212-1.c34
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/execute/20120105-1.c24
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/execute/ieee/pr50310.c73
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr49279.c35
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr49768.c12
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr51323.c35
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr51466.c43
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr52129.c28
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/automversn_1.c27
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/builtin-object-size-12.c19
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/compat/struct-layout-1_test.h6
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/cpp/assert4.c4
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/debug/dwarf2/pr49871.c12
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c13
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/delay-slot-2.c116
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/fstack-protector-strong.c135
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/gomp/pr51339.c15
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/inline-dump.c11
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/inline_1.c1
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/inline_2.c1
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/inline_3.c1
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/inline_4.c1
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/ipa/ipa-sra-2.c1
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/ipa/ipa-sra-6.c1
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/mversn2.c10
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/pr26570.c2
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/pr32773.c4
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/pr40209.c2
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/pr45819.c20
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/pr48739-1.c27
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/pr48739-2.c27
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/pr49799.c25
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/pr49948.c22
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/pr50078.c14
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/pr50310-2.c47
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/pr50571.c11
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/pr51408.c22
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/predict-1.c19
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/predict-2.c19
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/predict-3.c19
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/predict-4.c19
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/record-gcc-switches-in-elf-1.c16
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/sample-profile-generate-1.c26
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/torture/pr49518.c19
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/torture/pr49886.c102
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50092.c15
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50287.c109
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50396.c22
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50472.c12
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50723.c26
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/torture/pr51042.c22
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/torture/pr51070-2.c35
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/torture/pr51070.c34
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c4
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/tree-prof/lipo/inliner-1_0.c4
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c2
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pr49671-1.c17
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pr49671-2.c17
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pr51583.c34
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c2
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c2
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/unroll_1.c1
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/unroll_2.c1
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/unroll_3.c1
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/unroll_4.c1
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.dg/vect/vect-70.c2
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/arm/pr49641.c18
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/arm/sibcall-2.c12
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/i386/aes-avx-check.h6
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/i386/avx-check.h4
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/i386/avx-os-support.h10
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/i386/builtin_target.c61
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/i386/movdi-rex64.c11
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h6
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/i386/pr48721.c51
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/i386/pr49866.c23
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/i386/pr49920.c23
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/i386/pr50202.c15
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/i386/pr50712.c33
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/i386/pr50788.c10
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/i386/pr51393.c22
-rw-r--r--gcc-4.6/gcc/testsuite/gcc.target/powerpc/pr51623.c123
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/abstract_type_6.f032
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/alloc_comp_initializer_3.f9015
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/allocate_error_3.f909
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/assumed_charlen_arg_2.f9016
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/auto_char_dummy_array_3.f9025
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/bessel_6.f902
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/c_kind_tests_3.f0311
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/class_46.f0318
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/common_16.f9012
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/default_initialization_5.f9066
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/extends_12.f0324
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/implicit_pure_1.f9053
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/implicit_pure_2.f9017
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/initialization_28.f909
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/lto/pr45586-2_0.f9034
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/move_alloc_8.f90106
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/namelist_72.f33
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/namelist_73.f9028
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/pointer_check_11.f9024
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/pointer_check_12.f9022
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/pointer_comp_init_1.f9030
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/pointer_intent_5.f9024
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/pr49675.f906
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/pr50875.f9039
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/proc_decl_27.f9025
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/realloc_on_assign_8.f9017
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/result_in_spec_4.f9027
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/string_5.f907
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/typebound_proc_24.f0332
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/vect/pr50178.f9029
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/vect/pr50412.f9012
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/warn_function_without_result_2.f9019
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/where_3.f9015
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/whole_file_35.f9028
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/widechar_compare_1.f9010
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.dg/zero_stride_1.f907
-rw-r--r--gcc-4.6/gcc/testsuite/gfortran.fortran-torture/compile/pr50260.f9048
-rw-r--r--gcc-4.6/gcc/testsuite/gnat.dg/atomic5.adb20
-rw-r--r--gcc-4.6/gcc/testsuite/gnat.dg/atomic5.ads25
-rw-r--r--gcc-4.6/gcc/testsuite/gnat.dg/frame_overflow.adb25
-rw-r--r--gcc-4.6/gcc/testsuite/gnat.dg/frame_overflow.ads17
-rw-r--r--gcc-4.6/gcc/testsuite/gnat.dg/specs/addr1.ads2
-rw-r--r--gcc-4.6/gcc/testsuite/lib/gcc-dg.exp18
-rw-r--r--gcc-4.6/gcc/testsuite/lib/prune.exp3
-rw-r--r--gcc-4.6/gcc/testsuite/lib/target-supports-dg.exp10
-rw-r--r--gcc-4.6/gcc/testsuite/lib/target-supports.exp85
-rw-r--r--gcc-4.6/gcc/testsuite/obj-c++.dg/property/cxx-property-1.mm10
-rw-r--r--gcc-4.6/gcc/testsuite/obj-c++.dg/property/cxx-property-2.mm22
-rw-r--r--gcc-4.6/gcc/tree-inline.c4
-rw-r--r--gcc-4.6/gcc/tree-loop-distribution.c103
-rw-r--r--gcc-4.6/gcc/tree-object-size.c30
-rw-r--r--gcc-4.6/gcc/tree-optimize.c51
-rw-r--r--gcc-4.6/gcc/tree-outof-ssa.c5
-rw-r--r--gcc-4.6/gcc/tree-pass.h1
-rw-r--r--gcc-4.6/gcc/tree-profile.c45
-rw-r--r--gcc-4.6/gcc/tree-sra.c150
-rw-r--r--gcc-4.6/gcc/tree-ssa-alias.c25
-rw-r--r--gcc-4.6/gcc/tree-ssa-ccp.c17
-rw-r--r--gcc-4.6/gcc/tree-ssa-forwprop.c26
-rw-r--r--gcc-4.6/gcc/tree-ssa-loop-ivcanon.c11
-rw-r--r--gcc-4.6/gcc/tree-ssa-pre.c113
-rw-r--r--gcc-4.6/gcc/tree-ssa-structalias.c28
-rw-r--r--gcc-4.6/gcc/tree-ssa.c6
-rw-r--r--gcc-4.6/gcc/tree-threadsafe-analyze.c246
-rw-r--r--gcc-4.6/gcc/tree-vect-data-refs.c55
-rw-r--r--gcc-4.6/gcc/tree-vect-stmts.c58
-rw-r--r--gcc-4.6/gcc/tree-vrp.c10
-rw-r--r--gcc-4.6/gcc/tree.c25
-rw-r--r--gcc-4.6/gcc/tree.h1
-rw-r--r--gcc-4.6/gcc/value-prof.c84
-rw-r--r--gcc-4.6/gcc/varasm.c21
-rw-r--r--gcc-4.6/gnattools/ChangeLog4
-rw-r--r--gcc-4.6/include/ChangeLog16
-rw-r--r--gcc-4.6/include/ChangeLog.google-4_635
-rw-r--r--gcc-4.6/include/demangle.h4
-rw-r--r--gcc-4.6/include/dwarf2.h13
-rw-r--r--gcc-4.6/include/plugin-api.h87
-rw-r--r--gcc-4.6/intl/ChangeLog4
-rw-r--r--gcc-4.6/libada/ChangeLog10
-rw-r--r--gcc-4.6/libada/Makefile.in11
-rw-r--r--gcc-4.6/libcpp/ChangeLog4
-rw-r--r--gcc-4.6/libcpp/ChangeLog.google-4_69
-rw-r--r--gcc-4.6/libcpp/include/cpplib.h2
-rw-r--r--gcc-4.6/libcpp/init.c8
-rw-r--r--gcc-4.6/libcpp/po/ChangeLog4
-rw-r--r--gcc-4.6/libdecnumber/ChangeLog4
-rw-r--r--gcc-4.6/libffi/ChangeLog18
-rwxr-xr-xgcc-4.6/libffi/configure6
-rw-r--r--gcc-4.6/libffi/src/arm/ffi.c6
-rw-r--r--gcc-4.6/libffi/src/powerpc/darwin_closure.S7
-rw-r--r--gcc-4.6/libgcc/ChangeLog29
-rw-r--r--gcc-4.6/libgcc/ChangeLog.google-4_627
-rw-r--r--gcc-4.6/libgcc/config.host11
-rw-r--r--gcc-4.6/libgcc/config/arm/bpabi-lib.h11
-rw-r--r--gcc-4.6/libgcc/config/i386/64/sfp-machine.h12
-rw-r--r--gcc-4.6/libgcc/config/i386/i386-cpuinfo.c307
-rw-r--r--gcc-4.6/libgcc/config/i386/t-cpuinfo1
-rw-r--r--gcc-4.6/libgcc/config/libbid/ChangeLog4
-rw-r--r--gcc-4.6/libgcc/generic-morestack.c4
-rw-r--r--gcc-4.6/libgfortran/ChangeLog167
-rwxr-xr-xgcc-4.6/libgfortran/configure12
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_16_i1.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_16_i16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_16_i2.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_16_i4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_16_i8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_16_r10.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_16_r16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_16_r4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_16_r8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_4_i1.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_4_i16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_4_i2.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_4_i4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_4_i8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_4_r10.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_4_r16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_4_r4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_4_r8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_8_i1.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_8_i16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_8_i2.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_8_i4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_8_i8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_8_r10.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_8_r16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_8_r4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxloc1_8_r8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxval_i1.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxval_i16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxval_i2.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxval_i4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxval_i8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxval_r10.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxval_r16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxval_r4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/maxval_r8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_16_i1.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_16_i16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_16_i2.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_16_i4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_16_i8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_16_r10.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_16_r16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_16_r4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_16_r8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_4_i1.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_4_i16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_4_i2.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_4_i4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_4_i8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_4_r10.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_4_r16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_4_r4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_4_r8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_8_i1.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_8_i16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_8_i2.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_8_i4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_8_i8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_8_r10.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_8_r16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_8_r4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minloc1_8_r8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minval_i1.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minval_i16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minval_i2.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minval_i4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minval_i8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minval_r10.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minval_r16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minval_r4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/minval_r8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/product_c10.c3
-rw-r--r--gcc-4.6/libgfortran/generated/product_c16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/product_c4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/product_c8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/product_i1.c3
-rw-r--r--gcc-4.6/libgfortran/generated/product_i16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/product_i2.c3
-rw-r--r--gcc-4.6/libgfortran/generated/product_i4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/product_i8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/product_r10.c3
-rw-r--r--gcc-4.6/libgfortran/generated/product_r16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/product_r4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/product_r8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/sum_c10.c3
-rw-r--r--gcc-4.6/libgfortran/generated/sum_c16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/sum_c4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/sum_c8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/sum_i1.c3
-rw-r--r--gcc-4.6/libgfortran/generated/sum_i16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/sum_i2.c3
-rw-r--r--gcc-4.6/libgfortran/generated/sum_i4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/sum_i8.c3
-rw-r--r--gcc-4.6/libgfortran/generated/sum_r10.c3
-rw-r--r--gcc-4.6/libgfortran/generated/sum_r16.c3
-rw-r--r--gcc-4.6/libgfortran/generated/sum_r4.c3
-rw-r--r--gcc-4.6/libgfortran/generated/sum_r8.c3
-rw-r--r--gcc-4.6/libgfortran/intrinsics/string_intrinsics.c21
-rw-r--r--gcc-4.6/libgfortran/intrinsics/string_intrinsics_inc.c2
-rw-r--r--gcc-4.6/libgfortran/io/file_pos.c2
-rw-r--r--gcc-4.6/libgfortran/io/inquire.c5
-rw-r--r--gcc-4.6/libgfortran/io/intrinsics.c4
-rw-r--r--gcc-4.6/libgfortran/io/list_read.c12
-rw-r--r--gcc-4.6/libgfortran/io/unix.c25
-rw-r--r--gcc-4.6/libgfortran/io/unix.h3
-rw-r--r--gcc-4.6/libgfortran/libgfortran.h4
-rw-r--r--gcc-4.6/libgfortran/m4/ifunction.m43
-rw-r--r--gcc-4.6/libgomp/ChangeLog23
-rwxr-xr-xgcc-4.6/libgomp/configure12
-rw-r--r--gcc-4.6/libgomp/testsuite/libgomp.c/pr49897-1.c31
-rw-r--r--gcc-4.6/libgomp/testsuite/libgomp.c/pr49897-2.c25
-rw-r--r--gcc-4.6/libgomp/testsuite/libgomp.c/pr49898-1.c26
-rw-r--r--gcc-4.6/libgomp/testsuite/libgomp.c/pr49898-2.c18
-rw-r--r--gcc-4.6/libgomp/testsuite/libgomp.fortran/pr49792-1.f9018
-rw-r--r--gcc-4.6/libgomp/testsuite/libgomp.fortran/pr49792-2.f9022
-rw-r--r--gcc-4.6/libiberty/ChangeLog38
-rw-r--r--gcc-4.6/libiberty/cp-demangle.c57
-rw-r--r--gcc-4.6/libiberty/simple-object-mach-o.c515
-rw-r--r--gcc-4.6/libiberty/testsuite/demangle-expected47
-rw-r--r--gcc-4.6/libiberty/testsuite/test-expandargv.c7
-rw-r--r--gcc-4.6/libjava/ChangeLog29
-rw-r--r--gcc-4.6/libjava/classpath/ChangeLog4
-rw-r--r--gcc-4.6/libjava/classpath/ChangeLog.gcj6
-rwxr-xr-xgcc-4.6/libjava/classpath/config.rpath4
-rwxr-xr-xgcc-4.6/libjava/classpath/configure12
-rwxr-xr-xgcc-4.6/libjava/configure16
-rw-r--r--gcc-4.6/libjava/configure.ac2
-rw-r--r--gcc-4.6/libjava/include/dwarf2-signal.h15
-rw-r--r--gcc-4.6/libjava/java/lang/natClass.cc4
-rw-r--r--gcc-4.6/libjava/libltdl/ChangeLog9
-rw-r--r--gcc-4.6/libjava/libltdl/acinclude.m46
-rwxr-xr-xgcc-4.6/libjava/libltdl/configure4
-rw-r--r--gcc-4.6/libjava/prims.cc13
-rw-r--r--gcc-4.6/libmudflap/ChangeLog17
-rwxr-xr-xgcc-4.6/libmudflap/configure6
-rw-r--r--gcc-4.6/libobjc/ChangeLog31
-rw-r--r--gcc-4.6/libobjc/class.c62
-rwxr-xr-xgcc-4.6/libobjc/configure6
-rw-r--r--gcc-4.6/libobjc/init.c9
-rw-r--r--gcc-4.6/libquadmath/ChangeLog18
-rw-r--r--gcc-4.6/libquadmath/Makefile.am3
-rw-r--r--gcc-4.6/libquadmath/Makefile.in3
-rwxr-xr-xgcc-4.6/libquadmath/configure6
-rw-r--r--gcc-4.6/libquadmath/math/rem_pio2q.c18
-rw-r--r--gcc-4.6/libssp/ChangeLog8
-rwxr-xr-xgcc-4.6/libssp/configure6
-rw-r--r--gcc-4.6/libstdc++-v3/ChangeLog226
-rw-r--r--gcc-4.6/libstdc++-v3/ChangeLog.google-4_6105
-rw-r--r--gcc-4.6/libstdc++-v3/acinclude.m411
-rw-r--r--gcc-4.6/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver56
-rw-r--r--gcc-4.6/libstdc++-v3/config/abi/pre/gnu.ver11
-rw-r--r--gcc-4.6/libstdc++-v3/config/locale/generic/c_locale.cc12
-rw-r--r--gcc-4.6/libstdc++-v3/config/locale/generic/c_locale.h2
-rw-r--r--gcc-4.6/libstdc++-v3/config/locale/generic/time_members.cc8
-rwxr-xr-xgcc-4.6/libstdc++-v3/configure42
-rw-r--r--gcc-4.6/libstdc++-v3/configure.ac6
-rw-r--r--gcc-4.6/libstdc++-v3/include/backward/hashtable.h26
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/basic_string.h8
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/c++0x_warning.h6
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/c++config37
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/deque.tcc4
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/functional_hash.h80
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/hashtable.h12
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/random.tcc8
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/regex.h2
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/shared_ptr.h10
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/shared_ptr_base.h9
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/stl_algo.h263
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/stl_algobase.h2
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/stl_bvector.h5
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/stl_map.h5
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/stl_multimap.h5
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/stl_numeric.h13
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/stl_tree.h10
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/stl_uninitialized.h21
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/stl_vector.h69
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/unique_ptr.h2
-rw-r--r--gcc-4.6/libstdc++-v3/include/bits/vector.tcc15
-rw-r--r--gcc-4.6/libstdc++-v3/include/c_global/cmath10
-rw-r--r--gcc-4.6/libstdc++-v3/include/c_global/cwchar4
-rw-r--r--gcc-4.6/libstdc++-v3/include/debug/bitset2
-rw-r--r--gcc-4.6/libstdc++-v3/include/debug/deque6
-rw-r--r--gcc-4.6/libstdc++-v3/include/debug/map.h4
-rw-r--r--gcc-4.6/libstdc++-v3/include/debug/multimap.h4
-rw-r--r--gcc-4.6/libstdc++-v3/include/debug/unordered_map8
-rw-r--r--gcc-4.6/libstdc++-v3/include/debug/unordered_set8
-rw-r--r--gcc-4.6/libstdc++-v3/include/debug/vector17
-rw-r--r--gcc-4.6/libstdc++-v3/include/ext/type_traits.h59
-rw-r--r--gcc-4.6/libstdc++-v3/include/ext/vstring.h8
-rw-r--r--gcc-4.6/libstdc++-v3/include/parallel/algo.h12
-rw-r--r--gcc-4.6/libstdc++-v3/include/profile/bitset2
-rw-r--r--gcc-4.6/libstdc++-v3/include/profile/map.h4
-rw-r--r--gcc-4.6/libstdc++-v3/include/profile/multimap.h4
-rw-r--r--gcc-4.6/libstdc++-v3/include/profile/vector2
-rw-r--r--gcc-4.6/libstdc++-v3/include/std/bitset29
-rw-r--r--gcc-4.6/libstdc++-v3/include/std/complex11
-rw-r--r--gcc-4.6/libstdc++-v3/include/std/condition_variable23
-rw-r--r--gcc-4.6/libstdc++-v3/include/std/system_error2
-rw-r--r--gcc-4.6/libstdc++-v3/include/std/thread2
-rw-r--r--gcc-4.6/libstdc++-v3/include/std/typeindex4
-rw-r--r--gcc-4.6/libstdc++-v3/include/tr1/complex9
-rw-r--r--gcc-4.6/libstdc++-v3/include/tr1/poly_hermite.tcc4
-rw-r--r--gcc-4.6/libstdc++-v3/libsupc++/del_op.cc8
-rw-r--r--gcc-4.6/libstdc++-v3/libsupc++/new1
-rw-r--r--gcc-4.6/libstdc++-v3/libsupc++/typeinfo2
-rw-r--r--gcc-4.6/libstdc++-v3/src/compatibility-c++0x.cc59
-rw-r--r--gcc-4.6/libstdc++-v3/src/compatibility-ldbl.cc11
-rw-r--r--gcc-4.6/libstdc++-v3/src/hash-long-double-aux.cc50
-rw-r--r--gcc-4.6/libstdc++-v3/src/hash-long-double-tr1-aux.cc56
-rw-r--r--gcc-4.6/libstdc++-v3/src/hash_c++0x.cc26
-rw-r--r--gcc-4.6/libstdc++-v3/src/hash_tr1.cc6
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/18_support/headers/cstdint/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/20_util/allocator/51626.cc66
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/20_util/headers/type_traits/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc4
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc10
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc12
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/bitset/cons/50268.cc84
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/3.cc6
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/50529.cc38
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/array/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/tuple/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc38
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc38
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc38
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc38
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc41
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc41
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc41
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc41
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/50529.cc38
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/25_algorithms/inplace_merge/49559.cc72
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable.cc60
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable2.cc62
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/25_algorithms/stable_sort/49559.cc68
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/26_numerics/cmath/51083.cc62
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/26_numerics/complex/50880.cc53
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/26_numerics/complex/51083.cc54
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/random/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc31
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc31
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc80
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/future/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/mutex/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/thread/std_c++0x_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc2
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc62
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc51
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc54
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/util/testsuite_abi.cc3
-rw-r--r--gcc-4.6/libstdc++-v3/testsuite/util/testsuite_rvalref.h1
-rw-r--r--gcc-4.6/libtool.m48
-rw-r--r--gcc-4.6/lto-plugin/ChangeLog21
-rw-r--r--gcc-4.6/lto-plugin/Makefile.am2
-rw-r--r--gcc-4.6/lto-plugin/Makefile.in4
-rw-r--r--gcc-4.6/lto-plugin/aclocal.m41
-rwxr-xr-xgcc-4.6/lto-plugin/configure50
-rw-r--r--gcc-4.6/lto-plugin/configure.ac1
-rw-r--r--gcc-4.6/maintainer-scripts/ChangeLog9
-rwxr-xr-xgcc-4.6/maintainer-scripts/update_web_docs_svn1
-rw-r--r--gcc-4.6/zlib/ChangeLog8
-rwxr-xr-xgcc-4.6/zlib/configure6
793 files changed, 46660 insertions, 4613 deletions
diff --git a/gcc-4.6/ChangeLog b/gcc-4.6/ChangeLog
index 15bba207a..249743aad 100644
--- a/gcc-4.6/ChangeLog
+++ b/gcc-4.6/ChangeLog
@@ -1,3 +1,27 @@
+2012-01-02 Richard Guenther <rguenther@suse.de>
+
+ PR bootstrap/51686
+ * Makefile.def (install-strip-gcc): Depend on install-strip-lto-plugin.
+ * Makefile.in: Regenerate.
+
+2011-12-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * configure: Regenerate.
+
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * libtool.m4: Additional FreeBSD 10 fixes.
+
+2011-11-18 Iain Sandoe <iains@gcc.gnu.org>
+
+ PR target/49992
+ * configure.ac: Remove ranlib special-casing for Darwin.
+ * configure: Regenerate.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Hans-Peter Nilsson <hp@axis.com>
PR regression/47836
diff --git a/gcc-4.6/ChangeLog.google-4_6 b/gcc-4.6/ChangeLog.google-4_6
index 02015e83e..5e5096c8a 100644
--- a/gcc-4.6/ChangeLog.google-4_6
+++ b/gcc-4.6/ChangeLog.google-4_6
@@ -1,3 +1,11 @@
+2011-09-27 Sriraman Tallam <tmsriram@google.com>
+
+ * Makefile.in: Regenerate.
+ * configure.ac: Add build for function_reordering_plugin.
+ * configure: Regenerate.
+ * Makefile.def: Add function_reodering_plugin.
+ * function_reordering_plugin: New directory.
+
2011-08-03 Sriraman Tallam <tmsriram@google.com>
Revert:
@@ -30,4 +38,3 @@
(tv_update_section_order): New struct member.
(tv_allow_section_ordering): New struct member.
(tv_get_view): New struct member.
-
diff --git a/gcc-4.6/Makefile.def b/gcc-4.6/Makefile.def
index cadb70939..2cfcd1221 100644
--- a/gcc-4.6/Makefile.def
+++ b/gcc-4.6/Makefile.def
@@ -147,6 +147,8 @@ host_modules= { module= utils; no_check=true; };
host_modules= { module= gnattools; };
host_modules= { module= lto-plugin; bootstrap=true;
extra_configure_flags=--enable-shared; };
+host_modules= { module= function_reordering_plugin; bootstrap=true;
+ extra_configure_flags=--enable-shared; };
target_modules = { module= libstdc++-v3;
bootstrap=true;
@@ -322,6 +324,7 @@ dependencies = { module=all-build-fixincludes; on=all-build-libiberty; };
// Host modules specific to gcc.
dependencies = { module=configure-gcc; on=configure-intl; };
dependencies = { module=configure-gcc; on=all-lto-plugin; };
+dependencies = { module=configure-gcc; on=all-function_reordering_plugin; };
dependencies = { module=configure-gcc; on=all-binutils; };
dependencies = { module=configure-gcc; on=all-gas; };
dependencies = { module=configure-gcc; on=all-ld; };
@@ -346,13 +349,16 @@ dependencies = { module=all-gcc; on=all-libdecnumber; hard=true; };
dependencies = { module=all-gcc; on=all-libiberty; };
dependencies = { module=all-gcc; on=all-fixincludes; };
dependencies = { module=all-gcc; on=all-lto-plugin; };
+dependencies = { module=all-gcc; on=all-function_reordering_plugin; };
dependencies = { module=info-gcc; on=all-build-libiberty; };
dependencies = { module=dvi-gcc; on=all-build-libiberty; };
dependencies = { module=pdf-gcc; on=all-build-libiberty; };
dependencies = { module=html-gcc; on=all-build-libiberty; };
dependencies = { module=install-gcc ; on=install-fixincludes; };
dependencies = { module=install-gcc ; on=install-lto-plugin; };
+dependencies = { module=install-gcc ; on=install-function_reordering_plugin; };
dependencies = { module=install-strip-gcc ; on=install-strip-fixincludes; };
+dependencies = { module=install-strip-gcc ; on=install-strip-lto-plugin; };
dependencies = { module=configure-libcpp; on=configure-libiberty; hard=true; };
dependencies = { module=configure-libcpp; on=configure-intl; };
@@ -364,6 +370,7 @@ dependencies = { module=all-fixincludes; on=all-libiberty; };
dependencies = { module=all-gnattools; on=all-target-libada; };
dependencies = { module=all-lto-plugin; on=all-libiberty; };
+dependencies = { module=all-function_reordering_plugin; on=all-libiberty; };
dependencies = { module=configure-mpfr; on=all-gmp; };
dependencies = { module=configure-mpc; on=all-mpfr; };
diff --git a/gcc-4.6/Makefile.in b/gcc-4.6/Makefile.in
index 132f9dfac..b09e0d61e 100644
--- a/gcc-4.6/Makefile.in
+++ b/gcc-4.6/Makefile.in
@@ -951,7 +951,8 @@ configure-host: \
maybe-configure-libtermcap \
maybe-configure-utils \
maybe-configure-gnattools \
- maybe-configure-lto-plugin
+ maybe-configure-lto-plugin \
+ maybe-configure-function_reordering_plugin
.PHONY: configure-target
configure-target: \
maybe-configure-target-libstdc++-v3 \
@@ -1130,6 +1131,9 @@ all-host: maybe-all-gnattools
@if lto-plugin-no-bootstrap
all-host: maybe-all-lto-plugin
@endif lto-plugin-no-bootstrap
+@if function_reordering_plugin-no-bootstrap
+all-host: maybe-all-function_reordering_plugin
+@endif function_reordering_plugin-no-bootstrap
.PHONY: all-target
@@ -1256,6 +1260,7 @@ info-host: maybe-info-libtermcap
info-host: maybe-info-utils
info-host: maybe-info-gnattools
info-host: maybe-info-lto-plugin
+info-host: maybe-info-function_reordering_plugin
.PHONY: info-target
@@ -1371,6 +1376,7 @@ dvi-host: maybe-dvi-libtermcap
dvi-host: maybe-dvi-utils
dvi-host: maybe-dvi-gnattools
dvi-host: maybe-dvi-lto-plugin
+dvi-host: maybe-dvi-function_reordering_plugin
.PHONY: dvi-target
@@ -1486,6 +1492,7 @@ pdf-host: maybe-pdf-libtermcap
pdf-host: maybe-pdf-utils
pdf-host: maybe-pdf-gnattools
pdf-host: maybe-pdf-lto-plugin
+pdf-host: maybe-pdf-function_reordering_plugin
.PHONY: pdf-target
@@ -1601,6 +1608,7 @@ html-host: maybe-html-libtermcap
html-host: maybe-html-utils
html-host: maybe-html-gnattools
html-host: maybe-html-lto-plugin
+html-host: maybe-html-function_reordering_plugin
.PHONY: html-target
@@ -1716,6 +1724,7 @@ TAGS-host: maybe-TAGS-libtermcap
TAGS-host: maybe-TAGS-utils
TAGS-host: maybe-TAGS-gnattools
TAGS-host: maybe-TAGS-lto-plugin
+TAGS-host: maybe-TAGS-function_reordering_plugin
.PHONY: TAGS-target
@@ -1831,6 +1840,7 @@ install-info-host: maybe-install-info-libtermcap
install-info-host: maybe-install-info-utils
install-info-host: maybe-install-info-gnattools
install-info-host: maybe-install-info-lto-plugin
+install-info-host: maybe-install-info-function_reordering_plugin
.PHONY: install-info-target
@@ -1946,6 +1956,7 @@ install-pdf-host: maybe-install-pdf-libtermcap
install-pdf-host: maybe-install-pdf-utils
install-pdf-host: maybe-install-pdf-gnattools
install-pdf-host: maybe-install-pdf-lto-plugin
+install-pdf-host: maybe-install-pdf-function_reordering_plugin
.PHONY: install-pdf-target
@@ -2061,6 +2072,7 @@ install-html-host: maybe-install-html-libtermcap
install-html-host: maybe-install-html-utils
install-html-host: maybe-install-html-gnattools
install-html-host: maybe-install-html-lto-plugin
+install-html-host: maybe-install-html-function_reordering_plugin
.PHONY: install-html-target
@@ -2176,6 +2188,7 @@ installcheck-host: maybe-installcheck-libtermcap
installcheck-host: maybe-installcheck-utils
installcheck-host: maybe-installcheck-gnattools
installcheck-host: maybe-installcheck-lto-plugin
+installcheck-host: maybe-installcheck-function_reordering_plugin
.PHONY: installcheck-target
@@ -2291,6 +2304,7 @@ mostlyclean-host: maybe-mostlyclean-libtermcap
mostlyclean-host: maybe-mostlyclean-utils
mostlyclean-host: maybe-mostlyclean-gnattools
mostlyclean-host: maybe-mostlyclean-lto-plugin
+mostlyclean-host: maybe-mostlyclean-function_reordering_plugin
.PHONY: mostlyclean-target
@@ -2406,6 +2420,7 @@ clean-host: maybe-clean-libtermcap
clean-host: maybe-clean-utils
clean-host: maybe-clean-gnattools
clean-host: maybe-clean-lto-plugin
+clean-host: maybe-clean-function_reordering_plugin
.PHONY: clean-target
@@ -2521,6 +2536,7 @@ distclean-host: maybe-distclean-libtermcap
distclean-host: maybe-distclean-utils
distclean-host: maybe-distclean-gnattools
distclean-host: maybe-distclean-lto-plugin
+distclean-host: maybe-distclean-function_reordering_plugin
.PHONY: distclean-target
@@ -2636,6 +2652,7 @@ maintainer-clean-host: maybe-maintainer-clean-libtermcap
maintainer-clean-host: maybe-maintainer-clean-utils
maintainer-clean-host: maybe-maintainer-clean-gnattools
maintainer-clean-host: maybe-maintainer-clean-lto-plugin
+maintainer-clean-host: maybe-maintainer-clean-function_reordering_plugin
.PHONY: maintainer-clean-target
@@ -2805,7 +2822,8 @@ check-host: \
maybe-check-libtermcap \
maybe-check-utils \
maybe-check-gnattools \
- maybe-check-lto-plugin
+ maybe-check-lto-plugin \
+ maybe-check-function_reordering_plugin
.PHONY: check-target
check-target: \
@@ -2946,7 +2964,8 @@ install-host-nogcc: \
maybe-install-libtermcap \
maybe-install-utils \
maybe-install-gnattools \
- maybe-install-lto-plugin
+ maybe-install-lto-plugin \
+ maybe-install-function_reordering_plugin
.PHONY: install-host
install-host: \
@@ -3027,7 +3046,8 @@ install-host: \
maybe-install-libtermcap \
maybe-install-utils \
maybe-install-gnattools \
- maybe-install-lto-plugin
+ maybe-install-lto-plugin \
+ maybe-install-function_reordering_plugin
.PHONY: install-target
install-target: \
@@ -3161,7 +3181,8 @@ install-strip-host: \
maybe-install-strip-libtermcap \
maybe-install-strip-utils \
maybe-install-strip-gnattools \
- maybe-install-strip-lto-plugin
+ maybe-install-strip-lto-plugin \
+ maybe-install-strip-function_reordering_plugin
.PHONY: install-strip-target
install-strip-target: \
@@ -46093,6 +46114,893 @@ maintainer-clean-lto-plugin:
+.PHONY: configure-function_reordering_plugin maybe-configure-function_reordering_plugin
+maybe-configure-function_reordering_plugin:
+@if gcc-bootstrap
+configure-function_reordering_plugin: stage_current
+@endif gcc-bootstrap
+@if function_reordering_plugin
+maybe-configure-function_reordering_plugin: configure-function_reordering_plugin
+configure-function_reordering_plugin:
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ test ! -f $(HOST_SUBDIR)/function_reordering_plugin/Makefile || exit 0; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/function_reordering_plugin ; \
+ $(HOST_EXPORTS) \
+ echo Configuring in $(HOST_SUBDIR)/function_reordering_plugin; \
+ cd "$(HOST_SUBDIR)/function_reordering_plugin" || exit 1; \
+ case $(srcdir) in \
+ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ *) topdir=`echo $(HOST_SUBDIR)/function_reordering_plugin/ | \
+ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ esac; \
+ srcdiroption="--srcdir=$${topdir}/function_reordering_plugin"; \
+ libsrcdir="$$s/function_reordering_plugin"; \
+ $(SHELL) $${libsrcdir}/configure \
+ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ --target=${target_alias} $${srcdiroption} --enable-shared \
+ || exit 1
+@endif function_reordering_plugin
+
+
+
+.PHONY: configure-stage1-function_reordering_plugin maybe-configure-stage1-function_reordering_plugin
+maybe-configure-stage1-function_reordering_plugin:
+@if function_reordering_plugin-bootstrap
+maybe-configure-stage1-function_reordering_plugin: configure-stage1-function_reordering_plugin
+configure-stage1-function_reordering_plugin:
+ @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start
+ @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/function_reordering_plugin
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ TFLAGS="$(STAGE1_TFLAGS)"; \
+ test ! -f $(HOST_SUBDIR)/function_reordering_plugin/Makefile || exit 0; \
+ $(HOST_EXPORTS) \
+ CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
+ CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \
+ LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \
+ echo Configuring stage 1 in $(HOST_SUBDIR)/function_reordering_plugin ; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/function_reordering_plugin ; \
+ cd $(HOST_SUBDIR)/function_reordering_plugin || exit 1; \
+ case $(srcdir) in \
+ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ *) topdir=`echo $(HOST_SUBDIR)/function_reordering_plugin/ | \
+ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ esac; \
+ srcdiroption="--srcdir=$${topdir}/function_reordering_plugin"; \
+ libsrcdir="$$s/function_reordering_plugin"; \
+ $(SHELL) $${libsrcdir}/configure \
+ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ --target=${target_alias} $${srcdiroption} \
+ $(STAGE1_CONFIGURE_FLAGS) \
+ --enable-shared
+@endif function_reordering_plugin-bootstrap
+
+.PHONY: configure-stage2-function_reordering_plugin maybe-configure-stage2-function_reordering_plugin
+maybe-configure-stage2-function_reordering_plugin:
+@if function_reordering_plugin-bootstrap
+maybe-configure-stage2-function_reordering_plugin: configure-stage2-function_reordering_plugin
+configure-stage2-function_reordering_plugin:
+ @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start
+ @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/function_reordering_plugin
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ TFLAGS="$(STAGE2_TFLAGS)"; \
+ test ! -f $(HOST_SUBDIR)/function_reordering_plugin/Makefile || exit 0; \
+ $(HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
+ CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
+ CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \
+ LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \
+ echo Configuring stage 2 in $(HOST_SUBDIR)/function_reordering_plugin ; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/function_reordering_plugin ; \
+ cd $(HOST_SUBDIR)/function_reordering_plugin || exit 1; \
+ case $(srcdir) in \
+ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ *) topdir=`echo $(HOST_SUBDIR)/function_reordering_plugin/ | \
+ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ esac; \
+ srcdiroption="--srcdir=$${topdir}/function_reordering_plugin"; \
+ libsrcdir="$$s/function_reordering_plugin"; \
+ $(SHELL) $${libsrcdir}/configure \
+ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ --target=${target_alias} $${srcdiroption} \
+ --with-build-libsubdir=$(HOST_SUBDIR) \
+ $(STAGE2_CONFIGURE_FLAGS) \
+ --enable-shared
+@endif function_reordering_plugin-bootstrap
+
+.PHONY: configure-stage3-function_reordering_plugin maybe-configure-stage3-function_reordering_plugin
+maybe-configure-stage3-function_reordering_plugin:
+@if function_reordering_plugin-bootstrap
+maybe-configure-stage3-function_reordering_plugin: configure-stage3-function_reordering_plugin
+configure-stage3-function_reordering_plugin:
+ @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start
+ @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/function_reordering_plugin
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ TFLAGS="$(STAGE3_TFLAGS)"; \
+ test ! -f $(HOST_SUBDIR)/function_reordering_plugin/Makefile || exit 0; \
+ $(HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
+ CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
+ CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \
+ LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \
+ echo Configuring stage 3 in $(HOST_SUBDIR)/function_reordering_plugin ; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/function_reordering_plugin ; \
+ cd $(HOST_SUBDIR)/function_reordering_plugin || exit 1; \
+ case $(srcdir) in \
+ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ *) topdir=`echo $(HOST_SUBDIR)/function_reordering_plugin/ | \
+ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ esac; \
+ srcdiroption="--srcdir=$${topdir}/function_reordering_plugin"; \
+ libsrcdir="$$s/function_reordering_plugin"; \
+ $(SHELL) $${libsrcdir}/configure \
+ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ --target=${target_alias} $${srcdiroption} \
+ --with-build-libsubdir=$(HOST_SUBDIR) \
+ $(STAGE3_CONFIGURE_FLAGS) \
+ --enable-shared
+@endif function_reordering_plugin-bootstrap
+
+.PHONY: configure-stage4-function_reordering_plugin maybe-configure-stage4-function_reordering_plugin
+maybe-configure-stage4-function_reordering_plugin:
+@if function_reordering_plugin-bootstrap
+maybe-configure-stage4-function_reordering_plugin: configure-stage4-function_reordering_plugin
+configure-stage4-function_reordering_plugin:
+ @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start
+ @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/function_reordering_plugin
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ TFLAGS="$(STAGE4_TFLAGS)"; \
+ test ! -f $(HOST_SUBDIR)/function_reordering_plugin/Makefile || exit 0; \
+ $(HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
+ CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
+ CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \
+ LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \
+ echo Configuring stage 4 in $(HOST_SUBDIR)/function_reordering_plugin ; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/function_reordering_plugin ; \
+ cd $(HOST_SUBDIR)/function_reordering_plugin || exit 1; \
+ case $(srcdir) in \
+ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ *) topdir=`echo $(HOST_SUBDIR)/function_reordering_plugin/ | \
+ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ esac; \
+ srcdiroption="--srcdir=$${topdir}/function_reordering_plugin"; \
+ libsrcdir="$$s/function_reordering_plugin"; \
+ $(SHELL) $${libsrcdir}/configure \
+ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ --target=${target_alias} $${srcdiroption} \
+ --with-build-libsubdir=$(HOST_SUBDIR) \
+ $(STAGE4_CONFIGURE_FLAGS) \
+ --enable-shared
+@endif function_reordering_plugin-bootstrap
+
+.PHONY: configure-stageprofile-function_reordering_plugin maybe-configure-stageprofile-function_reordering_plugin
+maybe-configure-stageprofile-function_reordering_plugin:
+@if function_reordering_plugin-bootstrap
+maybe-configure-stageprofile-function_reordering_plugin: configure-stageprofile-function_reordering_plugin
+configure-stageprofile-function_reordering_plugin:
+ @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start
+ @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/function_reordering_plugin
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ TFLAGS="$(STAGEprofile_TFLAGS)"; \
+ test ! -f $(HOST_SUBDIR)/function_reordering_plugin/Makefile || exit 0; \
+ $(HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
+ CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \
+ CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \
+ LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \
+ echo Configuring stage profile in $(HOST_SUBDIR)/function_reordering_plugin ; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/function_reordering_plugin ; \
+ cd $(HOST_SUBDIR)/function_reordering_plugin || exit 1; \
+ case $(srcdir) in \
+ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ *) topdir=`echo $(HOST_SUBDIR)/function_reordering_plugin/ | \
+ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ esac; \
+ srcdiroption="--srcdir=$${topdir}/function_reordering_plugin"; \
+ libsrcdir="$$s/function_reordering_plugin"; \
+ $(SHELL) $${libsrcdir}/configure \
+ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ --target=${target_alias} $${srcdiroption} \
+ --with-build-libsubdir=$(HOST_SUBDIR) \
+ $(STAGEprofile_CONFIGURE_FLAGS) \
+ --enable-shared
+@endif function_reordering_plugin-bootstrap
+
+.PHONY: configure-stagefeedback-function_reordering_plugin maybe-configure-stagefeedback-function_reordering_plugin
+maybe-configure-stagefeedback-function_reordering_plugin:
+@if function_reordering_plugin-bootstrap
+maybe-configure-stagefeedback-function_reordering_plugin: configure-stagefeedback-function_reordering_plugin
+configure-stagefeedback-function_reordering_plugin:
+ @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start
+ @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/function_reordering_plugin
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ TFLAGS="$(STAGEfeedback_TFLAGS)"; \
+ test ! -f $(HOST_SUBDIR)/function_reordering_plugin/Makefile || exit 0; \
+ $(HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
+ CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \
+ CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \
+ LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \
+ echo Configuring stage feedback in $(HOST_SUBDIR)/function_reordering_plugin ; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/function_reordering_plugin ; \
+ cd $(HOST_SUBDIR)/function_reordering_plugin || exit 1; \
+ case $(srcdir) in \
+ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ *) topdir=`echo $(HOST_SUBDIR)/function_reordering_plugin/ | \
+ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ esac; \
+ srcdiroption="--srcdir=$${topdir}/function_reordering_plugin"; \
+ libsrcdir="$$s/function_reordering_plugin"; \
+ $(SHELL) $${libsrcdir}/configure \
+ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ --target=${target_alias} $${srcdiroption} \
+ --with-build-libsubdir=$(HOST_SUBDIR) \
+ $(STAGEfeedback_CONFIGURE_FLAGS) \
+ --enable-shared
+@endif function_reordering_plugin-bootstrap
+
+
+
+
+
+.PHONY: all-function_reordering_plugin maybe-all-function_reordering_plugin
+maybe-all-function_reordering_plugin:
+@if gcc-bootstrap
+all-function_reordering_plugin: stage_current
+@endif gcc-bootstrap
+@if function_reordering_plugin
+TARGET-function_reordering_plugin=all
+maybe-all-function_reordering_plugin: all-function_reordering_plugin
+all-function_reordering_plugin: configure-function_reordering_plugin
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) \
+ $(TARGET-function_reordering_plugin))
+@endif function_reordering_plugin
+
+
+
+.PHONY: all-stage1-function_reordering_plugin maybe-all-stage1-function_reordering_plugin
+.PHONY: clean-stage1-function_reordering_plugin maybe-clean-stage1-function_reordering_plugin
+maybe-all-stage1-function_reordering_plugin:
+maybe-clean-stage1-function_reordering_plugin:
+@if function_reordering_plugin-bootstrap
+maybe-all-stage1-function_reordering_plugin: all-stage1-function_reordering_plugin
+all-stage1: all-stage1-function_reordering_plugin
+TARGET-stage1-function_reordering_plugin = $(TARGET-function_reordering_plugin)
+all-stage1-function_reordering_plugin: configure-stage1-function_reordering_plugin
+ @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ TFLAGS="$(STAGE1_TFLAGS)"; \
+ $(HOST_EXPORTS) \
+ cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE1_CFLAGS)" \
+ CXXFLAGS="$(STAGE1_CXXFLAGS)" \
+ LIBCFLAGS="$(LIBCFLAGS)" \
+ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ $(EXTRA_HOST_FLAGS) \
+ TFLAGS="$(STAGE1_TFLAGS)" \
+ $(TARGET-stage1-function_reordering_plugin)
+
+maybe-clean-stage1-function_reordering_plugin: clean-stage1-function_reordering_plugin
+clean-stage1: clean-stage1-function_reordering_plugin
+clean-stage1-function_reordering_plugin:
+ @if [ $(current_stage) = stage1 ]; then \
+ [ -f $(HOST_SUBDIR)/function_reordering_plugin/Makefile ] || exit 0; \
+ else \
+ [ -f $(HOST_SUBDIR)/stage1-function_reordering_plugin/Makefile ] || exit 0; \
+ $(MAKE) stage1-start; \
+ fi; \
+ cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
+ clean
+@endif function_reordering_plugin-bootstrap
+
+
+.PHONY: all-stage2-function_reordering_plugin maybe-all-stage2-function_reordering_plugin
+.PHONY: clean-stage2-function_reordering_plugin maybe-clean-stage2-function_reordering_plugin
+maybe-all-stage2-function_reordering_plugin:
+maybe-clean-stage2-function_reordering_plugin:
+@if function_reordering_plugin-bootstrap
+maybe-all-stage2-function_reordering_plugin: all-stage2-function_reordering_plugin
+all-stage2: all-stage2-function_reordering_plugin
+TARGET-stage2-function_reordering_plugin = $(TARGET-function_reordering_plugin)
+all-stage2-function_reordering_plugin: configure-stage2-function_reordering_plugin
+ @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ TFLAGS="$(STAGE2_TFLAGS)"; \
+ $(HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
+ cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE2_CFLAGS)" \
+ CXXFLAGS="$(STAGE2_CXXFLAGS)" \
+ LIBCFLAGS="$(STAGE2_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
+ TFLAGS="$(STAGE2_TFLAGS)" \
+ $(TARGET-stage2-function_reordering_plugin)
+
+maybe-clean-stage2-function_reordering_plugin: clean-stage2-function_reordering_plugin
+clean-stage2: clean-stage2-function_reordering_plugin
+clean-stage2-function_reordering_plugin:
+ @if [ $(current_stage) = stage2 ]; then \
+ [ -f $(HOST_SUBDIR)/function_reordering_plugin/Makefile ] || exit 0; \
+ else \
+ [ -f $(HOST_SUBDIR)/stage2-function_reordering_plugin/Makefile ] || exit 0; \
+ $(MAKE) stage2-start; \
+ fi; \
+ cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
+ $(POSTSTAGE1_FLAGS_TO_PASS) \
+ clean
+@endif function_reordering_plugin-bootstrap
+
+
+.PHONY: all-stage3-function_reordering_plugin maybe-all-stage3-function_reordering_plugin
+.PHONY: clean-stage3-function_reordering_plugin maybe-clean-stage3-function_reordering_plugin
+maybe-all-stage3-function_reordering_plugin:
+maybe-clean-stage3-function_reordering_plugin:
+@if function_reordering_plugin-bootstrap
+maybe-all-stage3-function_reordering_plugin: all-stage3-function_reordering_plugin
+all-stage3: all-stage3-function_reordering_plugin
+TARGET-stage3-function_reordering_plugin = $(TARGET-function_reordering_plugin)
+all-stage3-function_reordering_plugin: configure-stage3-function_reordering_plugin
+ @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ TFLAGS="$(STAGE3_TFLAGS)"; \
+ $(HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
+ cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE3_CFLAGS)" \
+ CXXFLAGS="$(STAGE3_CXXFLAGS)" \
+ LIBCFLAGS="$(STAGE3_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
+ TFLAGS="$(STAGE3_TFLAGS)" \
+ $(TARGET-stage3-function_reordering_plugin)
+
+maybe-clean-stage3-function_reordering_plugin: clean-stage3-function_reordering_plugin
+clean-stage3: clean-stage3-function_reordering_plugin
+clean-stage3-function_reordering_plugin:
+ @if [ $(current_stage) = stage3 ]; then \
+ [ -f $(HOST_SUBDIR)/function_reordering_plugin/Makefile ] || exit 0; \
+ else \
+ [ -f $(HOST_SUBDIR)/stage3-function_reordering_plugin/Makefile ] || exit 0; \
+ $(MAKE) stage3-start; \
+ fi; \
+ cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
+ $(POSTSTAGE1_FLAGS_TO_PASS) \
+ clean
+@endif function_reordering_plugin-bootstrap
+
+
+.PHONY: all-stage4-function_reordering_plugin maybe-all-stage4-function_reordering_plugin
+.PHONY: clean-stage4-function_reordering_plugin maybe-clean-stage4-function_reordering_plugin
+maybe-all-stage4-function_reordering_plugin:
+maybe-clean-stage4-function_reordering_plugin:
+@if function_reordering_plugin-bootstrap
+maybe-all-stage4-function_reordering_plugin: all-stage4-function_reordering_plugin
+all-stage4: all-stage4-function_reordering_plugin
+TARGET-stage4-function_reordering_plugin = $(TARGET-function_reordering_plugin)
+all-stage4-function_reordering_plugin: configure-stage4-function_reordering_plugin
+ @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ TFLAGS="$(STAGE4_TFLAGS)"; \
+ $(HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
+ cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGE4_CFLAGS)" \
+ CXXFLAGS="$(STAGE4_CXXFLAGS)" \
+ LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
+ TFLAGS="$(STAGE4_TFLAGS)" \
+ $(TARGET-stage4-function_reordering_plugin)
+
+maybe-clean-stage4-function_reordering_plugin: clean-stage4-function_reordering_plugin
+clean-stage4: clean-stage4-function_reordering_plugin
+clean-stage4-function_reordering_plugin:
+ @if [ $(current_stage) = stage4 ]; then \
+ [ -f $(HOST_SUBDIR)/function_reordering_plugin/Makefile ] || exit 0; \
+ else \
+ [ -f $(HOST_SUBDIR)/stage4-function_reordering_plugin/Makefile ] || exit 0; \
+ $(MAKE) stage4-start; \
+ fi; \
+ cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
+ $(POSTSTAGE1_FLAGS_TO_PASS) \
+ clean
+@endif function_reordering_plugin-bootstrap
+
+
+.PHONY: all-stageprofile-function_reordering_plugin maybe-all-stageprofile-function_reordering_plugin
+.PHONY: clean-stageprofile-function_reordering_plugin maybe-clean-stageprofile-function_reordering_plugin
+maybe-all-stageprofile-function_reordering_plugin:
+maybe-clean-stageprofile-function_reordering_plugin:
+@if function_reordering_plugin-bootstrap
+maybe-all-stageprofile-function_reordering_plugin: all-stageprofile-function_reordering_plugin
+all-stageprofile: all-stageprofile-function_reordering_plugin
+TARGET-stageprofile-function_reordering_plugin = $(TARGET-function_reordering_plugin)
+all-stageprofile-function_reordering_plugin: configure-stageprofile-function_reordering_plugin
+ @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ TFLAGS="$(STAGEprofile_TFLAGS)"; \
+ $(HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
+ cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGEprofile_CFLAGS)" \
+ CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \
+ LIBCFLAGS="$(STAGEprofile_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
+ TFLAGS="$(STAGEprofile_TFLAGS)" \
+ $(TARGET-stageprofile-function_reordering_plugin)
+
+maybe-clean-stageprofile-function_reordering_plugin: clean-stageprofile-function_reordering_plugin
+clean-stageprofile: clean-stageprofile-function_reordering_plugin
+clean-stageprofile-function_reordering_plugin:
+ @if [ $(current_stage) = stageprofile ]; then \
+ [ -f $(HOST_SUBDIR)/function_reordering_plugin/Makefile ] || exit 0; \
+ else \
+ [ -f $(HOST_SUBDIR)/stageprofile-function_reordering_plugin/Makefile ] || exit 0; \
+ $(MAKE) stageprofile-start; \
+ fi; \
+ cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
+ $(POSTSTAGE1_FLAGS_TO_PASS) \
+ clean
+@endif function_reordering_plugin-bootstrap
+
+
+.PHONY: all-stagefeedback-function_reordering_plugin maybe-all-stagefeedback-function_reordering_plugin
+.PHONY: clean-stagefeedback-function_reordering_plugin maybe-clean-stagefeedback-function_reordering_plugin
+maybe-all-stagefeedback-function_reordering_plugin:
+maybe-clean-stagefeedback-function_reordering_plugin:
+@if function_reordering_plugin-bootstrap
+maybe-all-stagefeedback-function_reordering_plugin: all-stagefeedback-function_reordering_plugin
+all-stagefeedback: all-stagefeedback-function_reordering_plugin
+TARGET-stagefeedback-function_reordering_plugin = $(TARGET-function_reordering_plugin)
+all-stagefeedback-function_reordering_plugin: configure-stagefeedback-function_reordering_plugin
+ @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ TFLAGS="$(STAGEfeedback_TFLAGS)"; \
+ $(HOST_EXPORTS) \
+ $(POSTSTAGE1_HOST_EXPORTS) \
+ cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) \
+ CFLAGS="$(STAGEfeedback_CFLAGS)" \
+ CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \
+ LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \
+ CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \
+ TFLAGS="$(STAGEfeedback_TFLAGS)" \
+ $(TARGET-stagefeedback-function_reordering_plugin)
+
+maybe-clean-stagefeedback-function_reordering_plugin: clean-stagefeedback-function_reordering_plugin
+clean-stagefeedback: clean-stagefeedback-function_reordering_plugin
+clean-stagefeedback-function_reordering_plugin:
+ @if [ $(current_stage) = stagefeedback ]; then \
+ [ -f $(HOST_SUBDIR)/function_reordering_plugin/Makefile ] || exit 0; \
+ else \
+ [ -f $(HOST_SUBDIR)/stagefeedback-function_reordering_plugin/Makefile ] || exit 0; \
+ $(MAKE) stagefeedback-start; \
+ fi; \
+ cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(EXTRA_HOST_FLAGS) \
+ $(POSTSTAGE1_FLAGS_TO_PASS) \
+ clean
+@endif function_reordering_plugin-bootstrap
+
+
+
+
+
+.PHONY: check-function_reordering_plugin maybe-check-function_reordering_plugin
+maybe-check-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-check-function_reordering_plugin: check-function_reordering_plugin
+
+check-function_reordering_plugin:
+ @: $(MAKE); $(unstage)
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(FLAGS_TO_PASS) check)
+
+@endif function_reordering_plugin
+
+.PHONY: install-function_reordering_plugin maybe-install-function_reordering_plugin
+maybe-install-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-install-function_reordering_plugin: install-function_reordering_plugin
+
+install-function_reordering_plugin: installdirs
+ @: $(MAKE); $(unstage)
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(FLAGS_TO_PASS) install)
+
+@endif function_reordering_plugin
+
+.PHONY: install-strip-function_reordering_plugin maybe-install-strip-function_reordering_plugin
+maybe-install-strip-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-install-strip-function_reordering_plugin: install-strip-function_reordering_plugin
+
+install-strip-function_reordering_plugin: installdirs
+ @: $(MAKE); $(unstage)
+ @r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(FLAGS_TO_PASS) install-strip)
+
+@endif function_reordering_plugin
+
+# Other targets (info, dvi, pdf, etc.)
+
+.PHONY: maybe-info-function_reordering_plugin info-function_reordering_plugin
+maybe-info-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-info-function_reordering_plugin: info-function_reordering_plugin
+
+info-function_reordering_plugin: \
+ configure-function_reordering_plugin
+ @[ -f ./function_reordering_plugin/Makefile ] || exit 0; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ for flag in $(EXTRA_HOST_FLAGS) ; do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ echo "Doing info in function_reordering_plugin" ; \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ info) \
+ || exit 1
+
+@endif function_reordering_plugin
+
+.PHONY: maybe-dvi-function_reordering_plugin dvi-function_reordering_plugin
+maybe-dvi-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-dvi-function_reordering_plugin: dvi-function_reordering_plugin
+
+dvi-function_reordering_plugin: \
+ configure-function_reordering_plugin
+ @[ -f ./function_reordering_plugin/Makefile ] || exit 0; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ for flag in $(EXTRA_HOST_FLAGS) ; do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ echo "Doing dvi in function_reordering_plugin" ; \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ dvi) \
+ || exit 1
+
+@endif function_reordering_plugin
+
+.PHONY: maybe-pdf-function_reordering_plugin pdf-function_reordering_plugin
+maybe-pdf-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-pdf-function_reordering_plugin: pdf-function_reordering_plugin
+
+pdf-function_reordering_plugin: \
+ configure-function_reordering_plugin
+ @[ -f ./function_reordering_plugin/Makefile ] || exit 0; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ for flag in $(EXTRA_HOST_FLAGS) ; do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ echo "Doing pdf in function_reordering_plugin" ; \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ pdf) \
+ || exit 1
+
+@endif function_reordering_plugin
+
+.PHONY: maybe-html-function_reordering_plugin html-function_reordering_plugin
+maybe-html-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-html-function_reordering_plugin: html-function_reordering_plugin
+
+html-function_reordering_plugin: \
+ configure-function_reordering_plugin
+ @[ -f ./function_reordering_plugin/Makefile ] || exit 0; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ for flag in $(EXTRA_HOST_FLAGS) ; do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ echo "Doing html in function_reordering_plugin" ; \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ html) \
+ || exit 1
+
+@endif function_reordering_plugin
+
+.PHONY: maybe-TAGS-function_reordering_plugin TAGS-function_reordering_plugin
+maybe-TAGS-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-TAGS-function_reordering_plugin: TAGS-function_reordering_plugin
+
+TAGS-function_reordering_plugin: \
+ configure-function_reordering_plugin
+ @[ -f ./function_reordering_plugin/Makefile ] || exit 0; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ for flag in $(EXTRA_HOST_FLAGS) ; do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ echo "Doing TAGS in function_reordering_plugin" ; \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ TAGS) \
+ || exit 1
+
+@endif function_reordering_plugin
+
+.PHONY: maybe-install-info-function_reordering_plugin install-info-function_reordering_plugin
+maybe-install-info-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-install-info-function_reordering_plugin: install-info-function_reordering_plugin
+
+install-info-function_reordering_plugin: \
+ configure-function_reordering_plugin \
+ info-function_reordering_plugin
+ @[ -f ./function_reordering_plugin/Makefile ] || exit 0; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ for flag in $(EXTRA_HOST_FLAGS) ; do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ echo "Doing install-info in function_reordering_plugin" ; \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ install-info) \
+ || exit 1
+
+@endif function_reordering_plugin
+
+.PHONY: maybe-install-pdf-function_reordering_plugin install-pdf-function_reordering_plugin
+maybe-install-pdf-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-install-pdf-function_reordering_plugin: install-pdf-function_reordering_plugin
+
+install-pdf-function_reordering_plugin: \
+ configure-function_reordering_plugin \
+ pdf-function_reordering_plugin
+ @[ -f ./function_reordering_plugin/Makefile ] || exit 0; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ for flag in $(EXTRA_HOST_FLAGS) ; do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ echo "Doing install-pdf in function_reordering_plugin" ; \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ install-pdf) \
+ || exit 1
+
+@endif function_reordering_plugin
+
+.PHONY: maybe-install-html-function_reordering_plugin install-html-function_reordering_plugin
+maybe-install-html-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-install-html-function_reordering_plugin: install-html-function_reordering_plugin
+
+install-html-function_reordering_plugin: \
+ configure-function_reordering_plugin \
+ html-function_reordering_plugin
+ @[ -f ./function_reordering_plugin/Makefile ] || exit 0; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ for flag in $(EXTRA_HOST_FLAGS) ; do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ echo "Doing install-html in function_reordering_plugin" ; \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ install-html) \
+ || exit 1
+
+@endif function_reordering_plugin
+
+.PHONY: maybe-installcheck-function_reordering_plugin installcheck-function_reordering_plugin
+maybe-installcheck-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-installcheck-function_reordering_plugin: installcheck-function_reordering_plugin
+
+installcheck-function_reordering_plugin: \
+ configure-function_reordering_plugin
+ @[ -f ./function_reordering_plugin/Makefile ] || exit 0; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ for flag in $(EXTRA_HOST_FLAGS) ; do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ echo "Doing installcheck in function_reordering_plugin" ; \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ installcheck) \
+ || exit 1
+
+@endif function_reordering_plugin
+
+.PHONY: maybe-mostlyclean-function_reordering_plugin mostlyclean-function_reordering_plugin
+maybe-mostlyclean-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-mostlyclean-function_reordering_plugin: mostlyclean-function_reordering_plugin
+
+mostlyclean-function_reordering_plugin:
+ @[ -f ./function_reordering_plugin/Makefile ] || exit 0; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ for flag in $(EXTRA_HOST_FLAGS) ; do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ echo "Doing mostlyclean in function_reordering_plugin" ; \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ mostlyclean) \
+ || exit 1
+
+@endif function_reordering_plugin
+
+.PHONY: maybe-clean-function_reordering_plugin clean-function_reordering_plugin
+maybe-clean-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-clean-function_reordering_plugin: clean-function_reordering_plugin
+
+clean-function_reordering_plugin:
+ @[ -f ./function_reordering_plugin/Makefile ] || exit 0; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ for flag in $(EXTRA_HOST_FLAGS) ; do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ echo "Doing clean in function_reordering_plugin" ; \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ clean) \
+ || exit 1
+
+@endif function_reordering_plugin
+
+.PHONY: maybe-distclean-function_reordering_plugin distclean-function_reordering_plugin
+maybe-distclean-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-distclean-function_reordering_plugin: distclean-function_reordering_plugin
+
+distclean-function_reordering_plugin:
+ @[ -f ./function_reordering_plugin/Makefile ] || exit 0; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ for flag in $(EXTRA_HOST_FLAGS) ; do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ echo "Doing distclean in function_reordering_plugin" ; \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ distclean) \
+ || exit 1
+
+@endif function_reordering_plugin
+
+.PHONY: maybe-maintainer-clean-function_reordering_plugin maintainer-clean-function_reordering_plugin
+maybe-maintainer-clean-function_reordering_plugin:
+@if function_reordering_plugin
+maybe-maintainer-clean-function_reordering_plugin: maintainer-clean-function_reordering_plugin
+
+maintainer-clean-function_reordering_plugin:
+ @[ -f ./function_reordering_plugin/Makefile ] || exit 0; \
+ r=`${PWD_COMMAND}`; export r; \
+ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ $(HOST_EXPORTS) \
+ for flag in $(EXTRA_HOST_FLAGS) ; do \
+ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ done; \
+ echo "Doing maintainer-clean in function_reordering_plugin" ; \
+ (cd $(HOST_SUBDIR)/function_reordering_plugin && \
+ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ "RANLIB=$${RANLIB}" \
+ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ maintainer-clean) \
+ || exit 1
+
+@endif function_reordering_plugin
+
+
+
# ---------------------------------------
# Modules which run on the target machine
# ---------------------------------------
@@ -57900,6 +58808,11 @@ stage1-start::
mkdir stage1-lto-plugin; \
mv stage1-lto-plugin lto-plugin
@endif lto-plugin
+@if function_reordering_plugin
+ @cd $(HOST_SUBDIR); [ -d stage1-function_reordering_plugin ] || \
+ mkdir stage1-function_reordering_plugin; \
+ mv stage1-function_reordering_plugin function_reordering_plugin
+@endif function_reordering_plugin
@[ -d stage1-$(TARGET_SUBDIR) ] || \
mkdir stage1-$(TARGET_SUBDIR); \
mv stage1-$(TARGET_SUBDIR) $(TARGET_SUBDIR)
@@ -58000,6 +58913,11 @@ stage1-end::
cd $(HOST_SUBDIR); mv lto-plugin stage1-lto-plugin ; \
fi
@endif lto-plugin
+@if function_reordering_plugin
+ @if test -d $(HOST_SUBDIR)/function_reordering_plugin ; then \
+ cd $(HOST_SUBDIR); mv function_reordering_plugin stage1-function_reordering_plugin ; \
+ fi
+@endif function_reordering_plugin
@if test -d $(TARGET_SUBDIR) ; then \
mv $(TARGET_SUBDIR) stage1-$(TARGET_SUBDIR) ; \
fi
@@ -58162,6 +59080,12 @@ stage2-start::
mv stage2-lto-plugin lto-plugin ; \
mv stage1-lto-plugin prev-lto-plugin || test -f stage1-lean
@endif lto-plugin
+@if function_reordering_plugin
+ @cd $(HOST_SUBDIR); [ -d stage2-function_reordering_plugin ] || \
+ mkdir stage2-function_reordering_plugin; \
+ mv stage2-function_reordering_plugin function_reordering_plugin ; \
+ mv stage1-function_reordering_plugin prev-function_reordering_plugin || test -f stage1-lean
+@endif function_reordering_plugin
@[ -d stage2-$(TARGET_SUBDIR) ] || \
mkdir stage2-$(TARGET_SUBDIR); \
mv stage2-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \
@@ -58282,6 +59206,12 @@ stage2-end::
mv prev-lto-plugin stage1-lto-plugin ; : ; \
fi
@endif lto-plugin
+@if function_reordering_plugin
+ @if test -d $(HOST_SUBDIR)/function_reordering_plugin ; then \
+ cd $(HOST_SUBDIR); mv function_reordering_plugin stage2-function_reordering_plugin ; \
+ mv prev-function_reordering_plugin stage1-function_reordering_plugin ; : ; \
+ fi
+@endif function_reordering_plugin
@if test -d $(TARGET_SUBDIR) ; then \
mv $(TARGET_SUBDIR) stage2-$(TARGET_SUBDIR) ; \
mv prev-$(TARGET_SUBDIR) stage1-$(TARGET_SUBDIR) ; : ; \
@@ -58468,6 +59398,12 @@ stage3-start::
mv stage3-lto-plugin lto-plugin ; \
mv stage2-lto-plugin prev-lto-plugin || test -f stage2-lean
@endif lto-plugin
+@if function_reordering_plugin
+ @cd $(HOST_SUBDIR); [ -d stage3-function_reordering_plugin ] || \
+ mkdir stage3-function_reordering_plugin; \
+ mv stage3-function_reordering_plugin function_reordering_plugin ; \
+ mv stage2-function_reordering_plugin prev-function_reordering_plugin || test -f stage2-lean
+@endif function_reordering_plugin
@[ -d stage3-$(TARGET_SUBDIR) ] || \
mkdir stage3-$(TARGET_SUBDIR); \
mv stage3-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \
@@ -58588,6 +59524,12 @@ stage3-end::
mv prev-lto-plugin stage2-lto-plugin ; : ; \
fi
@endif lto-plugin
+@if function_reordering_plugin
+ @if test -d $(HOST_SUBDIR)/function_reordering_plugin ; then \
+ cd $(HOST_SUBDIR); mv function_reordering_plugin stage3-function_reordering_plugin ; \
+ mv prev-function_reordering_plugin stage2-function_reordering_plugin ; : ; \
+ fi
+@endif function_reordering_plugin
@if test -d $(TARGET_SUBDIR) ; then \
mv $(TARGET_SUBDIR) stage3-$(TARGET_SUBDIR) ; \
mv prev-$(TARGET_SUBDIR) stage2-$(TARGET_SUBDIR) ; : ; \
@@ -58830,6 +59772,12 @@ stage4-start::
mv stage4-lto-plugin lto-plugin ; \
mv stage3-lto-plugin prev-lto-plugin || test -f stage3-lean
@endif lto-plugin
+@if function_reordering_plugin
+ @cd $(HOST_SUBDIR); [ -d stage4-function_reordering_plugin ] || \
+ mkdir stage4-function_reordering_plugin; \
+ mv stage4-function_reordering_plugin function_reordering_plugin ; \
+ mv stage3-function_reordering_plugin prev-function_reordering_plugin || test -f stage3-lean
+@endif function_reordering_plugin
@[ -d stage4-$(TARGET_SUBDIR) ] || \
mkdir stage4-$(TARGET_SUBDIR); \
mv stage4-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \
@@ -58950,6 +59898,12 @@ stage4-end::
mv prev-lto-plugin stage3-lto-plugin ; : ; \
fi
@endif lto-plugin
+@if function_reordering_plugin
+ @if test -d $(HOST_SUBDIR)/function_reordering_plugin ; then \
+ cd $(HOST_SUBDIR); mv function_reordering_plugin stage4-function_reordering_plugin ; \
+ mv prev-function_reordering_plugin stage3-function_reordering_plugin ; : ; \
+ fi
+@endif function_reordering_plugin
@if test -d $(TARGET_SUBDIR) ; then \
mv $(TARGET_SUBDIR) stage4-$(TARGET_SUBDIR) ; \
mv prev-$(TARGET_SUBDIR) stage3-$(TARGET_SUBDIR) ; : ; \
@@ -59180,6 +60134,12 @@ stageprofile-start::
mv stageprofile-lto-plugin lto-plugin ; \
mv stage1-lto-plugin prev-lto-plugin || test -f stage1-lean
@endif lto-plugin
+@if function_reordering_plugin
+ @cd $(HOST_SUBDIR); [ -d stageprofile-function_reordering_plugin ] || \
+ mkdir stageprofile-function_reordering_plugin; \
+ mv stageprofile-function_reordering_plugin function_reordering_plugin ; \
+ mv stage1-function_reordering_plugin prev-function_reordering_plugin || test -f stage1-lean
+@endif function_reordering_plugin
@[ -d stageprofile-$(TARGET_SUBDIR) ] || \
mkdir stageprofile-$(TARGET_SUBDIR); \
mv stageprofile-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \
@@ -59300,6 +60260,12 @@ stageprofile-end::
mv prev-lto-plugin stage1-lto-plugin ; : ; \
fi
@endif lto-plugin
+@if function_reordering_plugin
+ @if test -d $(HOST_SUBDIR)/function_reordering_plugin ; then \
+ cd $(HOST_SUBDIR); mv function_reordering_plugin stageprofile-function_reordering_plugin ; \
+ mv prev-function_reordering_plugin stage1-function_reordering_plugin ; : ; \
+ fi
+@endif function_reordering_plugin
@if test -d $(TARGET_SUBDIR) ; then \
mv $(TARGET_SUBDIR) stageprofile-$(TARGET_SUBDIR) ; \
mv prev-$(TARGET_SUBDIR) stage1-$(TARGET_SUBDIR) ; : ; \
@@ -59463,6 +60429,12 @@ stagefeedback-start::
mv stagefeedback-lto-plugin lto-plugin ; \
mv stageprofile-lto-plugin prev-lto-plugin || test -f stageprofile-lean
@endif lto-plugin
+@if function_reordering_plugin
+ @cd $(HOST_SUBDIR); [ -d stagefeedback-function_reordering_plugin ] || \
+ mkdir stagefeedback-function_reordering_plugin; \
+ mv stagefeedback-function_reordering_plugin function_reordering_plugin ; \
+ mv stageprofile-function_reordering_plugin prev-function_reordering_plugin || test -f stageprofile-lean
+@endif function_reordering_plugin
@[ -d stagefeedback-$(TARGET_SUBDIR) ] || \
mkdir stagefeedback-$(TARGET_SUBDIR); \
mv stagefeedback-$(TARGET_SUBDIR) $(TARGET_SUBDIR) ; \
@@ -59583,6 +60555,12 @@ stagefeedback-end::
mv prev-lto-plugin stageprofile-lto-plugin ; : ; \
fi
@endif lto-plugin
+@if function_reordering_plugin
+ @if test -d $(HOST_SUBDIR)/function_reordering_plugin ; then \
+ cd $(HOST_SUBDIR); mv function_reordering_plugin stagefeedback-function_reordering_plugin ; \
+ mv prev-function_reordering_plugin stageprofile-function_reordering_plugin ; : ; \
+ fi
+@endif function_reordering_plugin
@if test -d $(TARGET_SUBDIR) ; then \
mv $(TARGET_SUBDIR) stagefeedback-$(TARGET_SUBDIR) ; \
mv prev-$(TARGET_SUBDIR) stageprofile-$(TARGET_SUBDIR) ; : ; \
@@ -59797,6 +60775,14 @@ configure-stage3-gcc: maybe-all-stage3-lto-plugin
configure-stage4-gcc: maybe-all-stage4-lto-plugin
configure-stageprofile-gcc: maybe-all-stageprofile-lto-plugin
configure-stagefeedback-gcc: maybe-all-stagefeedback-lto-plugin
+configure-gcc: maybe-all-function_reordering_plugin
+
+configure-stage1-gcc: maybe-all-stage1-function_reordering_plugin
+configure-stage2-gcc: maybe-all-stage2-function_reordering_plugin
+configure-stage3-gcc: maybe-all-stage3-function_reordering_plugin
+configure-stage4-gcc: maybe-all-stage4-function_reordering_plugin
+configure-stageprofile-gcc: maybe-all-stageprofile-function_reordering_plugin
+configure-stagefeedback-gcc: maybe-all-stagefeedback-function_reordering_plugin
configure-gcc: maybe-all-binutils
configure-stage1-gcc: maybe-all-stage1-binutils
@@ -59982,6 +60968,14 @@ all-stage3-gcc: maybe-all-stage3-lto-plugin
all-stage4-gcc: maybe-all-stage4-lto-plugin
all-stageprofile-gcc: maybe-all-stageprofile-lto-plugin
all-stagefeedback-gcc: maybe-all-stagefeedback-lto-plugin
+all-gcc: maybe-all-function_reordering_plugin
+
+all-stage1-gcc: maybe-all-stage1-function_reordering_plugin
+all-stage2-gcc: maybe-all-stage2-function_reordering_plugin
+all-stage3-gcc: maybe-all-stage3-function_reordering_plugin
+all-stage4-gcc: maybe-all-stage4-function_reordering_plugin
+all-stageprofile-gcc: maybe-all-stageprofile-function_reordering_plugin
+all-stagefeedback-gcc: maybe-all-stagefeedback-function_reordering_plugin
info-gcc: maybe-all-build-libiberty
info-stage1-gcc: maybe-all-build-libiberty
@@ -60016,7 +61010,9 @@ html-stageprofile-gcc: maybe-all-build-libiberty
html-stagefeedback-gcc: maybe-all-build-libiberty
install-gcc: maybe-install-fixincludes
install-gcc: maybe-install-lto-plugin
+install-gcc: maybe-install-function_reordering_plugin
install-strip-gcc: maybe-install-strip-fixincludes
+install-strip-gcc: maybe-install-strip-lto-plugin
configure-libcpp: configure-libiberty
configure-stage1-libcpp: configure-stage1-libiberty
@@ -60059,6 +61055,14 @@ all-stage3-lto-plugin: maybe-all-stage3-libiberty
all-stage4-lto-plugin: maybe-all-stage4-libiberty
all-stageprofile-lto-plugin: maybe-all-stageprofile-libiberty
all-stagefeedback-lto-plugin: maybe-all-stagefeedback-libiberty
+all-function_reordering_plugin: maybe-all-libiberty
+
+all-stage1-function_reordering_plugin: maybe-all-stage1-libiberty
+all-stage2-function_reordering_plugin: maybe-all-stage2-libiberty
+all-stage3-function_reordering_plugin: maybe-all-stage3-libiberty
+all-stage4-function_reordering_plugin: maybe-all-stage4-libiberty
+all-stageprofile-function_reordering_plugin: maybe-all-stageprofile-libiberty
+all-stagefeedback-function_reordering_plugin: maybe-all-stagefeedback-libiberty
configure-mpfr: maybe-all-gmp
configure-stage1-mpfr: maybe-all-stage1-gmp
diff --git a/gcc-4.6/boehm-gc/ChangeLog b/gcc-4.6/boehm-gc/ChangeLog
index fd90c5cfc..f12180416 100644
--- a/gcc-4.6/boehm-gc/ChangeLog
+++ b/gcc-4.6/boehm-gc/ChangeLog
@@ -1,3 +1,11 @@
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure: Regenerate.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/boehm-gc/configure b/gcc-4.6/boehm-gc/configure
index 55ba5a9c4..cb4170b66 100755
--- a/gcc-4.6/boehm-gc/configure
+++ b/gcc-4.6/boehm-gc/configure
@@ -9619,7 +9619,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -10535,7 +10535,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -10553,7 +10553,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
@@ -12443,7 +12443,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
esac
;;
- freebsd[12]*)
+ freebsd2.*)
# C++ shared libraries reported to be fairly broken before
# switch to ELF
ld_shlibs_CXX=no
@@ -14218,7 +14218,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -14236,7 +14236,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
diff --git a/gcc-4.6/config/ChangeLog b/gcc-4.6/config/ChangeLog
index e09a68b52..3c92ff460 100644
--- a/gcc-4.6/config/ChangeLog
+++ b/gcc-4.6/config/ChangeLog
@@ -1,3 +1,11 @@
+2011-12-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * acx.m4 (Test for GNAT): Update comment and add quotes in final test.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/config/acx.m4 b/gcc-4.6/config/acx.m4
index b559c03eb..9ff31eb85 100644
--- a/gcc-4.6/config/acx.m4
+++ b/gcc-4.6/config/acx.m4
@@ -356,9 +356,9 @@ m4_define([AC_CHECK_HEADER],m4_defn([_AC_CHECK_HEADER_OLD]))
ac_c_preproc_warn_flag=yes])# AC_PROG_CPP_WERROR
# Test for GNAT.
-# We require the gnatbind program, and a compiler driver that
-# understands Ada. We use the user's CC setting, already found,
-# and possibly add $1 to the command-line parameters.
+# We require the gnatbind & gnatmake programs, as well as a compiler driver
+# that understands Ada. We use the user's CC setting, already found, and
+# possibly add $1 to the command-line parameters.
#
# Sets the shell variable have_gnat to yes or no as appropriate, and
# substitutes GNATBIND and GNATMAKE.
@@ -387,7 +387,7 @@ if test x"$errors" = x && test -f conftest.$ac_objext; then
fi
rm -f conftest.*])
-if test x$GNATBIND != xno && test x$GNATMAKE != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
+if test "x$GNATBIND" != xno && test "x$GNATMAKE" != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
have_gnat=yes
else
have_gnat=no
diff --git a/gcc-4.6/configure b/gcc-4.6/configure
index ffb394516..434a1d5b8 100755
--- a/gcc-4.6/configure
+++ b/gcc-4.6/configure
@@ -5120,7 +5120,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_cc_gcc_supports_ada" >&5
$as_echo "$acx_cv_cc_gcc_supports_ada" >&6; }
-if test x$GNATBIND != xno && test x$GNATMAKE != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
+if test "x$GNATBIND" != xno && test "x$GNATMAKE" != xno && test x$acx_cv_cc_gcc_supports_ada != xno; then
have_gnat=yes
else
have_gnat=no
@@ -6199,6 +6199,8 @@ esac
if test $target_elf = yes; then :
# ELF platforms build the lto-plugin always.
build_lto_plugin=yes
+ # Allow ELF platforms to build the function_reordering_plugin always.
+ build_function_reordering_plugin=yes
else
if test x"$default_enable_lto" = x"yes" ; then
@@ -6330,6 +6332,11 @@ if test -d ${srcdir}/gcc; then
extra_host_libiberty_configure_flags=--enable-shared
fi
fi
+ if test "${build_function_reordering_plugin}" = "yes" ; then
+ configdirs="$configdirs function_reordering_plugin"
+ extra_host_libiberty_configure_flags=--enable-shared
+ fi
+
missing_languages=`echo ",$enable_languages," | sed -e s/,all,/,/ -e s/,c,/,/ `
@@ -6947,10 +6954,6 @@ case "${target}" in
extra_arflags_for_target=" -X32_64"
extra_nmflags_for_target=" -B -X32_64"
;;
- *-*-darwin[3-9]*)
- # ranlib before Darwin10 requires the -c flag to look at common symbols.
- extra_ranlibflags_for_target=" -c"
- ;;
mips*-*-pe | sh*-*-pe | *arm-wince-pe)
target_makefile_frag="config/mt-wince"
;;
diff --git a/gcc-4.6/configure.ac b/gcc-4.6/configure.ac
index af8ad3844..020536e54 100644
--- a/gcc-4.6/configure.ac
+++ b/gcc-4.6/configure.ac
@@ -1738,6 +1738,8 @@ enable_lto=yes; default_enable_lto=yes)
ACX_ELF_TARGET_IFELSE([# ELF platforms build the lto-plugin always.
build_lto_plugin=yes
+ # Allow ELF platforms to build the function_reordering_plugin always.
+ build_function_reordering_plugin=yes
],[if test x"$default_enable_lto" = x"yes" ; then
case $target in
*-apple-darwin9 | *-cygwin* | *-mingw*) ;;
@@ -1865,6 +1867,11 @@ if test -d ${srcdir}/gcc; then
extra_host_libiberty_configure_flags=--enable-shared
fi
fi
+ if test "${build_function_reordering_plugin}" = "yes" ; then
+ configdirs="$configdirs function_reordering_plugin"
+ extra_host_libiberty_configure_flags=--enable-shared
+ fi
+
AC_SUBST(extra_host_libiberty_configure_flags)
missing_languages=`echo ",$enable_languages," | sed -e s/,all,/,/ -e s/,c,/,/ `
@@ -2431,10 +2438,6 @@ case "${target}" in
extra_arflags_for_target=" -X32_64"
extra_nmflags_for_target=" -B -X32_64"
;;
- *-*-darwin[[3-9]]*)
- # ranlib before Darwin10 requires the -c flag to look at common symbols.
- extra_ranlibflags_for_target=" -c"
- ;;
mips*-*-pe | sh*-*-pe | *arm-wince-pe)
target_makefile_frag="config/mt-wince"
;;
diff --git a/gcc-4.6/contrib/ChangeLog b/gcc-4.6/contrib/ChangeLog
index 59269e88d..2e5f30837 100644
--- a/gcc-4.6/contrib/ChangeLog
+++ b/gcc-4.6/contrib/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/contrib/ChangeLog.google-4_6 b/gcc-4.6/contrib/ChangeLog.google-4_6
index 17e645a76..7d8dcaad9 100644
--- a/gcc-4.6/contrib/ChangeLog.google-4_6
+++ b/gcc-4.6/contrib/ChangeLog.google-4_6
@@ -1,3 +1,24 @@
+2011-10-02 Diego Novillo <dnovillo@google.com>
+
+ * testsuite-management/x86_64-unknown-linux-gnu.xfail: Update
+ for a new XPASS inherited from gcc-4_6-branch.
+
+2011-09-21 Diego Novillo <dnovillo@google.com>
+
+ * testsuite-management/x86_64-unknown-linux-gnu.xfail: Update
+ for fixed failures since last merge.
+
+2011-09-15 Diego Novillo <dnovillo@google.com>
+
+ * testsuite-management/x86_64-unknown-linux-gnu.xfail: New.
+
+2011-09-13 Diego Novillo <dnovillo@google.com>
+
+ Merge rev 178833 from trunk.
+
+ * testsuite-management: New.
+ * testsuite-management/validate_failures.py: New.
+
2011-06-24 Diego Novillo <dnovillo@google.com>
Merge rev 175374 from trunk
diff --git a/gcc-4.6/contrib/reghunt/ChangeLog b/gcc-4.6/contrib/reghunt/ChangeLog
index be81728a0..9e84bfdb2 100644
--- a/gcc-4.6/contrib/reghunt/ChangeLog
+++ b/gcc-4.6/contrib/reghunt/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/contrib/regression/ChangeLog b/gcc-4.6/contrib/regression/ChangeLog
index 4c5f9f7a9..47a3b4a7c 100644
--- a/gcc-4.6/contrib/regression/ChangeLog
+++ b/gcc-4.6/contrib/regression/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/contrib/testsuite-management/validate_failures.py b/gcc-4.6/contrib/testsuite-management/validate_failures.py
new file mode 100755
index 000000000..be2ffcee5
--- /dev/null
+++ b/gcc-4.6/contrib/testsuite-management/validate_failures.py
@@ -0,0 +1,337 @@
+#!/usr/bin/python
+
+# Script to compare testsuite failures against a list of known-to-fail
+# tests.
+
+# Contributed by Diego Novillo <dnovillo@google.com>
+#
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING. If not, write to
+# the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+"""This script provides a coarser XFAILing mechanism that requires no
+detailed DejaGNU markings. This is useful in a variety of scenarios:
+
+- Development branches with many known failures waiting to be fixed.
+- Release branches with known failures that are not considered
+ important for the particular release criteria used in that branch.
+
+The script must be executed from the toplevel build directory. When
+executed it will:
+
+1- Determine the target built: TARGET
+2- Determine the source directory: SRCDIR
+3- Look for a failure manifest file in
+ <SRCDIR>/contrib/testsuite-management/<TARGET>.xfail
+4- Collect all the <tool>.sum files from the build tree.
+5- Produce a report stating:
+ a- Failures expected in the manifest but not present in the build.
+ b- Failures in the build not expected in the manifest.
+6- If all the build failures are expected in the manifest, it exits
+ with exit code 0. Otherwise, it exits with error code 1.
+"""
+
+import optparse
+import os
+import re
+import sys
+
+# Handled test results.
+_VALID_TEST_RESULTS = [ 'FAIL', 'UNRESOLVED', 'XPASS', 'ERROR' ]
+
+# Pattern for naming manifest files. The first argument should be
+# the toplevel GCC source directory. The second argument is the
+# target triple used during the build.
+_MANIFEST_PATH_PATTERN = '%s/contrib/testsuite-management/%s.xfail'
+
+def Error(msg):
+ print >>sys.stderr, '\nerror: %s' % msg
+ sys.exit(1)
+
+
+class TestResult(object):
+ """Describes a single DejaGNU test result as emitted in .sum files.
+
+ We are only interested in representing unsuccessful tests. So, only
+ a subset of all the tests are loaded.
+
+ The summary line used to build the test result should have this format:
+
+ attrlist | XPASS: gcc.dg/unroll_1.c (test for excess errors)
+ ^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^
+ optional state name description
+ attributes
+
+ Attributes:
+ attrlist: A comma separated list of attributes.
+ Valid values:
+ flaky Indicates that this test may not always fail. These
+ tests are reported, but their presence does not affect
+ the results.
+
+ expire=YYYYMMDD After this date, this test will produce an error
+ whether it is in the manifest or not.
+
+ state: One of UNRESOLVED, XPASS or FAIL.
+ name: File name for the test.
+ description: String describing the test (flags used, dejagnu message, etc)
+ """
+
+ def __init__(self, summary_line):
+ try:
+ self.attrs = ''
+ if '|' in summary_line:
+ (self.attrs, summary_line) = summary_line.split('|', 1)
+ (self.state,
+ self.name,
+ self.description) = re.match(r' *([A-Z]+): ([^ ]+) (.*)',
+ summary_line).groups()
+ self.attrs = self.attrs.strip()
+ self.state = self.state.strip()
+ self.description = self.description.strip()
+ except ValueError:
+ Error('Cannot parse summary line "%s"' % summary_line)
+
+ if self.state not in _VALID_TEST_RESULTS:
+ Error('Invalid test result %s in "%s" (parsed as "%s")' % (
+ self.state, summary_line, self))
+
+ def __lt__(self, other):
+ return self.name < other.name
+
+ def __hash__(self):
+ return hash(self.state) ^ hash(self.name) ^ hash(self.description)
+
+ def __eq__(self, other):
+ return (self.state == other.state and
+ self.name == other.name and
+ self.description == other.description)
+
+ def __ne__(self, other):
+ return not (self == other)
+
+ def __str__(self):
+ attrs = ''
+ if self.attrs:
+ attrs = '%s | ' % self.attrs
+ return '%s%s: %s %s' % (attrs, self.state, self.name, self.description)
+
+
+def GetMakefileValue(makefile_name, value_name):
+ if os.path.exists(makefile_name):
+ with open(makefile_name) as makefile:
+ for line in makefile:
+ if line.startswith(value_name):
+ (_, value) = line.split('=', 1)
+ value = value.strip()
+ return value
+ return None
+
+
+def ValidBuildDirectory(builddir, target):
+ if (not os.path.exists(builddir) or
+ not os.path.exists('%s/Makefile' % builddir) or
+ not os.path.exists('%s/build-%s' % (builddir, target))):
+ return False
+ return True
+
+
+def IsInterestingResult(line):
+ """Return True if the given line is one of the summary lines we care about."""
+ line = line.strip()
+ if line.startswith('#'):
+ return False
+ if '|' in line:
+ (_, line) = line.split('|', 1)
+ line = line.strip()
+ for result in _VALID_TEST_RESULTS:
+ if line.startswith(result):
+ return True
+ return False
+
+
+def ParseSummary(sum_fname):
+ """Create a set of TestResult instances from the given summary file."""
+ result_set = set()
+ with open(sum_fname) as sum_file:
+ for line in sum_file:
+ if IsInterestingResult(line):
+ result_set.add(TestResult(line))
+ return result_set
+
+
+def GetManifest(manifest_name):
+ """Build a set of expected failures from the manifest file.
+
+ Each entry in the manifest file should have the format understood
+ by the TestResult constructor.
+
+ If no manifest file exists for this target, it returns an empty
+ set.
+ """
+ if os.path.exists(manifest_name):
+ return ParseSummary(manifest_name)
+ else:
+ return set()
+
+
+def GetSumFiles(builddir):
+ sum_files = []
+ for root, dirs, files in os.walk(builddir):
+ if '.svn' in dirs:
+ dirs.remove('.svn')
+ for fname in files:
+ if fname.endswith('.sum'):
+ sum_files.append(os.path.join(root, fname))
+ return sum_files
+
+
+def GetResults(builddir):
+ """Collect all the test results from .sum files under the given build
+ directory."""
+ sum_files = GetSumFiles(builddir)
+ build_results = set()
+ for sum_fname in sum_files:
+ print '\t%s' % sum_fname
+ build_results |= ParseSummary(sum_fname)
+ return build_results
+
+
+def CompareResults(manifest, actual):
+ """Compare sets of results and return two lists:
+ - List of results present in MANIFEST but missing from ACTUAL.
+ - List of results present in ACTUAL but missing from MANIFEST.
+ """
+ # Report all the actual results not present in the manifest.
+ actual_vs_manifest = set()
+ for actual_result in actual:
+ if actual_result not in manifest:
+ actual_vs_manifest.add(actual_result)
+
+ # Simlarly for all the tests in the manifest.
+ manifest_vs_actual = set()
+ for expected_result in manifest:
+ # Ignore tests marked flaky.
+ if 'flaky' in expected_result.attrs:
+ continue
+ if expected_result not in actual:
+ manifest_vs_actual.add(expected_result)
+
+ return actual_vs_manifest, manifest_vs_actual
+
+
+def GetBuildData(options):
+ target = GetMakefileValue('%s/Makefile' % options.build_dir, 'target=')
+ srcdir = GetMakefileValue('%s/Makefile' % options.build_dir, 'srcdir =')
+ if not ValidBuildDirectory(options.build_dir, target):
+ Error('%s is not a valid GCC top level build directory.' %
+ options.build_dir)
+ print 'Source directory: %s' % srcdir
+ print 'Build target: %s' % target
+ return srcdir, target, True
+
+
+def PrintSummary(msg, summary):
+ print '\n\n%s' % msg
+ for result in sorted(summary):
+ print result
+
+
+def CheckExpectedResults(options):
+ (srcdir, target, valid_build) = GetBuildData(options)
+ if not valid_build:
+ return False
+
+ manifest_name = _MANIFEST_PATH_PATTERN % (srcdir, target)
+ print 'Manifest: %s' % manifest_name
+ manifest = GetManifest(manifest_name)
+
+ print 'Getting actual results from build'
+ actual = GetResults(options.build_dir)
+
+ if options.verbosity >= 1:
+ PrintSummary('Tests expected to fail', manifest)
+ PrintSummary('\nActual test results', actual)
+
+ actual_vs_manifest, manifest_vs_actual = CompareResults(manifest, actual)
+
+ tests_ok = True
+ if len(actual_vs_manifest) > 0:
+ PrintSummary('Build results not in the manifest', actual_vs_manifest)
+ tests_ok = False
+
+ if len(manifest_vs_actual) > 0:
+ PrintSummary('Manifest results not present in the build'
+ '\n\nNOTE: This is not a failure. It just means that the '
+ 'manifest expected\nthese tests to fail, '
+ 'but they worked in this configuration.\n',
+ manifest_vs_actual)
+
+ if tests_ok:
+ print '\nSUCCESS: No unexpected failures.'
+
+ return tests_ok
+
+
+def ProduceManifest(options):
+ (srcdir, target, valid_build) = GetBuildData(options)
+ if not valid_build:
+ return False
+
+ manifest_name = _MANIFEST_PATH_PATTERN % (srcdir, target)
+ if os.path.exists(manifest_name) and not options.force:
+ Error('Manifest file %s already exists.\nUse --force to overwrite.' %
+ manifest_name)
+
+ actual = GetResults(options.build_dir)
+ with open(manifest_name, 'w') as manifest_file:
+ for result in sorted(actual):
+ print result
+ manifest_file.write('%s\n' % result)
+
+ return True
+
+
+def Main(argv):
+ parser = optparse.OptionParser(usage=__doc__)
+ parser.add_option('--build_dir', action='store', type='string',
+ dest='build_dir', default='.',
+ help='Build directory to check (default = .)')
+ parser.add_option('--manifest', action='store_true', dest='manifest',
+ default=False, help='Produce the manifest for the current '
+ 'build (default = False)')
+ parser.add_option('--force', action='store_true', dest='force',
+ default=False, help='When used with --manifest, it will '
+ 'overwrite an existing manifest file (default = False)')
+ parser.add_option('--verbosity', action='store', dest='verbosity',
+ type='int', default=0, help='Verbosity level (default = 0)')
+ (options, _) = parser.parse_args(argv[1:])
+
+ if options.manifest:
+ retval = ProduceManifest(options)
+ else:
+ retval = CheckExpectedResults(options)
+
+ if retval:
+ return 0
+ else:
+ return 1
+
+if __name__ == '__main__':
+ retval = Main(sys.argv)
+ sys.exit(retval)
diff --git a/gcc-4.6/contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail b/gcc-4.6/contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail
new file mode 100644
index 000000000..43c73e536
--- /dev/null
+++ b/gcc-4.6/contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail
@@ -0,0 +1,13 @@
+# Failures inherited from upstream gcc-4_6-branch.
+XPASS: g++.dg/uninit-pred-3_b.C (test for excess errors)
+
+# This test fails or succeeds depending on machine load.
+flaky | FAIL: libmudflap.cth/pass40-frag.c (-O2) output pattern test
+flaky | FAIL: libmudflap.cth/pass40-frag.c execution test
+flaky | FAIL: libmudflap.cth/pass40-frag.c (-static -DSTATIC) execution test
+flaky | FAIL: libmudflap.cth/pass40-frag.c (-static -DSTATIC) output pattern test
+flaky | FAIL: libmudflap.cth/pass40-frag.c output pattern test
+flaky | FAIL: libmudflap.cth/pass40-frag.c (-O3) execution test
+flaky | FAIL: libmudflap.cth/pass40-frag.c (-O3) output pattern test
+flaky | FAIL: libmudflap.cth/pass40-frag.c (-O2) execution test
+flaky | FAIL: libmudflap.cth/pass39-frag.c (-static -DSTATIC) (test for excess errors)
diff --git a/gcc-4.6/fixincludes/ChangeLog b/gcc-4.6/fixincludes/ChangeLog
index 91b0b9070..e1242194b 100644
--- a/gcc-4.6/fixincludes/ChangeLog
+++ b/gcc-4.6/fixincludes/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/function_reordering_plugin/ChangeLog.google-4_6 b/gcc-4.6/function_reordering_plugin/ChangeLog.google-4_6
new file mode 100644
index 000000000..86ce33829
--- /dev/null
+++ b/gcc-4.6/function_reordering_plugin/ChangeLog.google-4_6
@@ -0,0 +1,11 @@
+2011-09-27 Sriraman Tallam <tmsriram@google.com>
+
+ * config.h.in: New file.
+ * callgraph.c: Ditto.
+ * callgraph.h: Ditto.
+ * configure: Ditto.
+ * Makefile.in: Ditto.
+ * configure.ac: Ditto.
+ * function_reordering_plugin.c: Ditto.
+ * aclocal.m4: Ditto.
+ * Makefile.def: Ditto.
diff --git a/gcc-4.6/function_reordering_plugin/Makefile.am b/gcc-4.6/function_reordering_plugin/Makefile.am
new file mode 100644
index 000000000..7bf34b0ee
--- /dev/null
+++ b/gcc-4.6/function_reordering_plugin/Makefile.am
@@ -0,0 +1,38 @@
+# Makefile.am is used by automake 1.11 to generate Makefile.in.
+
+ACLOCAL_AMFLAGS = -I .. -I ../config
+AUTOMAKE_OPTIONS = no-dependencies
+
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+target_noncanonical := @target_noncanonical@
+libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
+
+AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS)
+AM_CFLAGS = -Wall -Werror
+AM_LIBTOOLFLAGS = --tag=disable-static
+
+libexecsub_LTLIBRARIES = libfunction_reordering_plugin.la
+gcc_build_dir = ../$(host_subdir)/gcc
+in_gcc_libs = $(foreach lib, $(libexecsub_LTLIBRARIES), $(gcc_build_dir)/$(lib))
+
+# Can be removed when libiberty becomes a normal convenience library
+Wc=-Wc,
+
+libfunction_reordering_plugin_la_SOURCES = function_reordering_plugin.c callgraph.c
+libfunction_reordering_plugin_la_LIBADD = \
+ $(if $(wildcard ../libiberty/pic/libiberty.a),$(Wc)../libiberty/pic/libiberty.a,)
+# Note that we intentionally override the bindir supplied by ACX_LT_HOST_FLAGS
+libfunction_reordering_plugin_la_LDFLAGS = $(lt_host_flags) -module -bindir $(libexecsubdir) \
+ $(if $(wildcard ../libiberty/pic/libiberty.a),,-Wc,../libiberty/libiberty.a)
+libfunction_reordering_plugin_la_DEPENDENCIES = $(if $(wildcard \
+ ../libiberty/pic/libiberty.a),../libiberty/pic/libiberty.a,) callgraph.h
+
+all-local: $(in_gcc_libs)
+
+$(in_gcc_libs) : $(gcc_build_dir)/%: %
+ @if test "X`dlname=; . ./$*; echo dlname:$$dlname`" = "Xdlname:"; then \
+ echo WARNING: $* is static, not copying to $@ >&2 ; \
+ else \
+ $(mkinstalldirs) $(gcc_build_dir) && \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $* `pwd`/$@ ; \
+ fi
diff --git a/gcc-4.6/function_reordering_plugin/Makefile.in b/gcc-4.6/function_reordering_plugin/Makefile.in
new file mode 100644
index 000000000..447d4369d
--- /dev/null
+++ b/gcc-4.6/function_reordering_plugin/Makefile.in
@@ -0,0 +1,548 @@
+# Makefile.in generated by automake 1.11 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Makefile.am is used by automake 1.11 to generate Makefile.in.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = .
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(top_srcdir)/configure $(am__configure_deps) \
+ $(srcdir)/config.h.in $(srcdir)/../mkinstalldirs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
+ $(top_srcdir)/../config/depstand.m4 \
+ $(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/lthostflags.m4 \
+ $(top_srcdir)/../config/override.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(libexecsubdir)"
+LTLIBRARIES = $(libexecsub_LTLIBRARIES)
+am_libfunction_reordering_plugin_la_OBJECTS = \
+ function_reordering_plugin.lo callgraph.lo
+libfunction_reordering_plugin_la_OBJECTS = \
+ $(am_libfunction_reordering_plugin_la_OBJECTS)
+libfunction_reordering_plugin_la_LINK = $(LIBTOOL) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(AM_CFLAGS) $(CFLAGS) \
+ $(libfunction_reordering_plugin_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp =
+am__depfiles_maybe =
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libfunction_reordering_plugin_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_libsubdir = @build_libsubdir@
+build_os = @build_os@
+build_subdir = @build_subdir@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_subdir = @host_subdir@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_host_flags = @lt_host_flags@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_noncanonical := @target_noncanonical@
+target_os = @target_os@
+target_subdir = @target_subdir@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+ACLOCAL_AMFLAGS = -I .. -I ../config
+AUTOMAKE_OPTIONS = no-dependencies
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
+AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS)
+AM_CFLAGS = -Wall -Werror
+AM_LIBTOOLFLAGS = --tag=disable-static
+libexecsub_LTLIBRARIES = libfunction_reordering_plugin.la
+gcc_build_dir = ../$(host_subdir)/gcc
+in_gcc_libs = $(foreach lib, $(libexecsub_LTLIBRARIES), $(gcc_build_dir)/$(lib))
+
+# Can be removed when libiberty becomes a normal convenience library
+Wc = -Wc,
+libfunction_reordering_plugin_la_SOURCES = function_reordering_plugin.c callgraph.c
+libfunction_reordering_plugin_la_LIBADD = \
+ $(if $(wildcard ../libiberty/pic/libiberty.a),$(Wc)../libiberty/pic/libiberty.a,)
+
+# Note that we intentionally override the bindir supplied by ACX_LT_HOST_FLAGS
+libfunction_reordering_plugin_la_LDFLAGS = $(lt_host_flags) -module -bindir $(libexecsubdir) \
+ $(if $(wildcard ../libiberty/pic/libiberty.a),,-Wc,../libiberty/libiberty.a)
+
+libfunction_reordering_plugin_la_DEPENDENCIES = $(if $(wildcard \
+ ../libiberty/pic/libiberty.a),../libiberty/pic/libiberty.a,) callgraph.h
+
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+ else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+install-libexecsubLTLIBRARIES: $(libexecsub_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(libexecsubdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecsubdir)"
+ @list='$(libexecsub_LTLIBRARIES)'; test -n "$(libexecsubdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libexecsubdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libexecsubdir)"; \
+ }
+
+uninstall-libexecsubLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libexecsub_LTLIBRARIES)'; test -n "$(libexecsubdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libexecsubdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libexecsubdir)/$$f"; \
+ done
+
+clean-libexecsubLTLIBRARIES:
+ -test -z "$(libexecsub_LTLIBRARIES)" || rm -f $(libexecsub_LTLIBRARIES)
+ @list='$(libexecsub_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libfunction_reordering_plugin.la: $(libfunction_reordering_plugin_la_OBJECTS) $(libfunction_reordering_plugin_la_DEPENDENCIES)
+ $(libfunction_reordering_plugin_la_LINK) -rpath $(libexecsubdir) $(libfunction_reordering_plugin_la_OBJECTS) $(libfunction_reordering_plugin_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+.c.o:
+ $(COMPILE) -c $<
+
+.c.obj:
+ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ $(LTCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool config.lt
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) config.h all-local
+installdirs:
+ for dir in "$(DESTDIR)$(libexecsubdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libexecsubLTLIBRARIES clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-hdr distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-libexecsubLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libexecsubLTLIBRARIES
+
+.MAKE: all install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am all-local am--refresh check check-am \
+ clean clean-generic clean-libexecsubLTLIBRARIES clean-libtool \
+ ctags distclean distclean-compile distclean-generic \
+ distclean-hdr distclean-libtool distclean-tags dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-libexecsubLTLIBRARIES install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-libexecsubLTLIBRARIES
+
+
+all-local: $(in_gcc_libs)
+
+$(in_gcc_libs) : $(gcc_build_dir)/%: %
+ @if test "X`dlname=; . ./$*; echo dlname:$$dlname`" = "Xdlname:"; then \
+ echo WARNING: $* is static, not copying to $@ >&2 ; \
+ else \
+ $(mkinstalldirs) $(gcc_build_dir) && \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $* `pwd`/$@ ; \
+ fi
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/gcc-4.6/function_reordering_plugin/aclocal.m4 b/gcc-4.6/function_reordering_plugin/aclocal.m4
new file mode 100644
index 000000000..c1b5e816e
--- /dev/null
+++ b/gcc-4.6/function_reordering_plugin/aclocal.m4
@@ -0,0 +1,9008 @@
+# generated automatically by aclocal 1.11 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.64],,
+[m4_warning([this file was generated for autoconf 2.64.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+# Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+m4_define([_LT_COPYING], [dnl
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+# Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+# serial 56 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+ [m4_default([$3],
+ [m4_fatal([Libtool version $1 or higher is required],
+ 63)])],
+ [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+ *\ * | *\ *)
+ AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+ case $cc_temp in
+ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ _LT_PATH_MAGIC
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+ [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+ [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+ [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME. Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+ [m4_ifval([$1], [$1], [$2])])
+ lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+ m4_ifval([$4],
+ [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+ lt_dict_add_subkey([lt_decl_dict], [$2],
+ [tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+ [0], [m4_fatal([$0: too few arguments: $#])],
+ [1], [m4_fatal([$0: too few arguments: $#: $1])],
+ [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+ [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+ [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+ m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+ m4_if([$2], [],
+ m4_quote(lt_decl_varnames),
+ m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+ lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'. VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly. In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+ [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+# # Some comment about what VAR is for.
+# visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+ [description])))[]dnl
+m4_pushdef([_libtool_name],
+ m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+ [0], [_libtool_name=[$]$1],
+ [1], [_libtool_name=$lt_[]$1],
+ [2], [_libtool_name=$lt_[]$1],
+ [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script. Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+ m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'. Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+ dnl If the libtool generation code has been placed in $CONFIG_LT,
+ dnl instead of duplicating it all over again into config.status,
+ dnl then we will have config.status run $CONFIG_LT later, so it
+ dnl needs to know what name is stored there:
+ [AC_CONFIG_COMMANDS([libtool],
+ [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+ dnl If the libtool generation code is destined for config.status,
+ dnl expand the accumulated commands and init code now:
+ [AC_CONFIG_COMMANDS([libtool],
+ [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[[\\\\\\\`\\"\\\$]]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable. If COMMENT is supplied, it is inserted after the
+# `#!' sequence but before initialization text begins. After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script. The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test $lt_write_fail = 0 && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+ echo
+ AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+ case $[1] in
+ --version | --v* | -V )
+ echo "$lt_cl_version"; exit 0 ;;
+ --help | --h* | -h )
+ echo "$lt_cl_help"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --quiet | --q* | --silent | --s* | -q )
+ lt_cl_silent=: ;;
+
+ -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+ *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+ esac
+ shift
+done
+
+if $lt_cl_silent; then
+ exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure. Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+ lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars. Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+ m4_if(_LT_TAG, [C], [
+ # See if we are running on zsh, and set the options which allow our
+ # commands through without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+_LT_EOF
+ ;;
+ esac
+
+ _LT_PROG_LTMAIN
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ _LT_PROG_XSI_SHELLFNS
+
+ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+# autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+ [C], [_LT_LANG(C)],
+ [C++], [_LT_LANG(CXX)],
+ [Java], [_LT_LANG(GCJ)],
+ [Fortran 77], [_LT_LANG(F77)],
+ [Fortran], [_LT_LANG(FC)],
+ [Windows Resource], [_LT_LANG(RC)],
+ [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+ [_LT_LANG($1)],
+ [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+ [LT_SUPPORTED_TAG([$1])dnl
+ m4_append([_LT_TAGS], [$1 ])dnl
+ m4_define([_LT_LANG_]$1[_enabled], [])dnl
+ _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [LT_LANG(CXX)],
+ [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [LT_LANG(F77)],
+ [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+ [LT_LANG(FC)],
+ [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+ [LT_LANG(GCJ)],
+ [m4_ifdef([AC_PROG_GCJ],
+ [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([A][M_PROG_GCJ],
+ [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+ m4_ifdef([LT_PROG_GCJ],
+ [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+ [LT_LANG(RC)],
+ [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+ case $host_os in
+ rhapsody* | darwin*)
+ AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+ AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+ AC_CHECK_TOOL([LIPO], [lipo], [:])
+ AC_CHECK_TOOL([OTOOL], [otool], [:])
+ AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+ _LT_DECL([], [DSYMUTIL], [1],
+ [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+ _LT_DECL([], [NMEDIT], [1],
+ [Tool to change global to local symbols on Mac OS X])
+ _LT_DECL([], [LIPO], [1],
+ [Tool to manipulate fat objects and archives on Mac OS X])
+ _LT_DECL([], [OTOOL], [1],
+ [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+ _LT_DECL([], [OTOOL64], [1],
+ [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+ AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+ [lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi])
+ AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+ [lt_cv_ld_exported_symbols_list],
+ [lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [lt_cv_ld_exported_symbols_list=yes],
+ [lt_cv_ld_exported_symbols_list=no])
+ LDFLAGS="$save_LDFLAGS"
+ ])
+ AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+ [lt_cv_ld_force_load=no
+ cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+ echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+ $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+ echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+ $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+ cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+ _lt_result=$?
+ if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+ lt_cv_ld_force_load=yes
+ else
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ fi
+ rm -f conftest.err libconftest.a conftest conftest.c
+ rm -rf conftest.dSYM
+ ])
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[[012]]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES
+# --------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+ m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ if test "$lt_cv_ld_force_load" = "yes"; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=func_echo_all
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ m4_if([$1], [CXX],
+[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+ _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+ fi
+],[])
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX
+# -----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script which will find a shell with a builtin
+# printf (which we can use as an echo command).
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`print -r -- -n 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='printf %s\n'
+else
+ # Use this function as a fallback that always works.
+ func_fallback_echo ()
+ {
+ eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+ }
+ ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO "$*"
+}
+
+case "$ECHO" in
+ printf*) AC_MSG_RESULT([printf]) ;;
+ print*) AC_MSG_RESULT([print -r]) ;;
+ *) AC_MSG_RESULT([cat]) ;;
+esac
+
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+ PATH=/empty FPATH=/empty; export PATH FPATH
+ test "X`printf %s $ECHO`" = "X$ECHO" \
+ || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
+
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AS_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+ [AC_LANG_PUSH(C)
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+ AC_LANG_POP])
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[AC_CHECK_TOOL(AR, ar, false)
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1])
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+ [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+case $host_os in
+ darwin*)
+ lock_old_archive_extraction=yes ;;
+ *)
+ lock_old_archive_extraction=no ;;
+esac
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+ [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+ [Whether to use a lock for old archive extraction])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ fi
+ $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$5], , :, [$5])
+else
+ m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ else
+ $2=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ m4_if([$4], , :, [$4])
+else
+ m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ mint*)
+ # On MiNT this can take a long time and run out of memory.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+ = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+ [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+ [$4]
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+[#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+void fnord () __attribute__((visibility("default")));
+#endif
+
+void fnord () { int i=42; }
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else
+ {
+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}]
+_LT_EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_dlunknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+ ])
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+ [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+ [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+ [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w . 2>&AS_MESSAGE_LOG_FD
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+ [Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ AC_MSG_CHECKING([if we can lock with hard links])
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ AC_MSG_RESULT([$hard_links])
+ if test "$hard_links" = no; then
+ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+ [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+ [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+ test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+ test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+ test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+ [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+ [], [
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ case $host_os in
+ mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
+ *) lt_sed_strip_eq="s,=/,/,g" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+ case $lt_search_path_spec in
+ *\;*)
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+ ;;
+ *)
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ esac
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+ if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+ # AWK program above erroneously prepends '/' to C:/dos/paths
+ # for these hosts.
+ case $host_os in
+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
+ esac
+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[[4-9]]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[[01]] | aix4.[[01]].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[[45]]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[[123]]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+haiku*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ dynamic_linker="$host_os runtime_loader"
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+ postinstall_cmds='chmod 555 $lib'
+ # or fails outright, so override atomically:
+ install_override_mode=555
+ ;;
+
+interix[[3-9]]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+
+ # Some binutils ld are patched to set DT_RUNPATH
+ AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
+ [lt_cv_shlibpath_overrides_runpath=no
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+ [lt_cv_shlibpath_overrides_runpath=yes])])
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+ ])
+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[[89]] | openbsd2.[[89]].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+ [Variables whose values should be saved in libtool wrapper scripts and
+ restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+ [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+ [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+ [[List of archive names. First name is the real one, the rest are links.
+ The last name is the one that the linker finds with -lNAME]])
+_LT_DECL([], [soname_spec], [1],
+ [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [install_override_mode], [1],
+ [Permission mode override for installation of shared libraries])
+_LT_DECL([], [postinstall_cmds], [2],
+ [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+ [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+ [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+ [[As "finish_cmds", except a single script fragment to be evaled but
+ not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+ [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+ [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+ [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] | ?:[\\/]*])
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word. This closes a longstanding sh security hole.
+ ac_dummy="m4_if([$2], , $PATH, [$2])"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$1; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ AC_MSG_RESULT($MAGIC_CMD)
+else
+ AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+ [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+ [AS_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[[45]]*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ # Keep this pattern in sync with the one in func_win32_libid.
+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc*)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+haiku*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[[3-9]]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+*nto* | *qnx*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+_LT_DECL([], [deplibs_check_method], [1],
+ [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+ [Command to use when deplibs_check_method == "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+ AC_SUBST([DUMPBIN])
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+ [lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+ cat conftest.out >&AS_MESSAGE_LOG_FD
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+ # These system don't have libm, or don't need it
+ ;;
+*-ncr-sysv4.3*)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+ ;;
+*)
+ AC_CHECK_LIB(m, cos, LIBM="-lm")
+ ;;
+esac
+AC_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ case $cc_basename in
+ nvcc*)
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
+ esac
+
+ _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+ [Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris*)
+ symcode='[[BDRT]]'
+ ;;
+sco3.2v5*)
+ symcode='[[DT]]'
+ ;;
+sysv4.2uw2*)
+ symcode='[[DT]]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[[ABDT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK ['"\
+" {last_section=section; section=\$ 3};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx]"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ AC_MSG_RESULT(failed)
+else
+ AC_MSG_RESULT(ok)
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+ [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+ [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_c_name_address],
+ [lt_cv_sys_global_symbol_to_c_name_address], [1],
+ [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+ [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+ [Transform the output of nm in a C name address pair when lib prefix is needed])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+m4_if([$1], [CXX], [
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | cygwin* | os2* | pw32* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)=
+ ;;
+ interix[[3-9]]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix[[4-9]]*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ ecpc* )
+ # old Intel C++ for x86_64 which still supported -KPIC.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ icpc* )
+ # Intel C++, used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+ # IBM XL 8.0, 9.0 on PPC and BlueGene
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ *qnx* | *nto*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)=
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+
+ case $cc_basename in
+ nvcc*) # Cuda Compiler Driver 2.2
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ m4_if([$1], [GCJ], [],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ ccc*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ xl* | bgxl* | bgf* | mpixl*)
+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ F* | *Sun*Fortran*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+ ;;
+ *Sun\ C*)
+ # Sun C 5.9
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ rdos*)
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ unicos*)
+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+ [How to pass a linker flag through the compiler])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+ [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+ [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+ [Additional compiler flags for building library objects])
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+ _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+ $lt_tmp_static_flag,
+ [],
+ [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+ [Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix[[4-9]]*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ # Also, AIX nm treats weak defined symbols like other global defined
+ # symbols, whereas GNU nm marks them as "W".
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw* | cegcc*)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+], [
+ runpath_var=
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(archive_cmds, $1)=
+ _LT_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_TAGVAR(compiler_needs_object, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_TAGVAR(hardcode_automatic, $1)=no
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_TAGVAR(inherit_rpath, $1)=no
+ _LT_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_TAGVAR(module_cmds, $1)=
+ _LT_TAGVAR(module_expsym_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+ _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_TAGVAR(include_expsyms, $1)=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+
+ # On some targets, GNU ld is compatible enough with the native linker
+ # that we're better off using the native interface for both.
+ lt_use_gnu_ld_interface=no
+ if test "$with_gnu_ld" = yes; then
+ case $host_os in
+ aix*)
+ # The AIX port of GNU ld has always aspired to compatibility
+ # with the native linker. However, as the warning in the GNU ld
+ # block says, versions before 2.19.5* couldn't really create working
+ # shared libraries, regardless of the interface used.
+ case `$LD -v 2>&1` in
+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+ *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+ *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ fi
+
+ if test "$lt_use_gnu_ld_interface" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[[3-9]]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ haiku*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group f77 and f90 compilers
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ tmp_sharedflag='--shared' ;;
+ xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ nvcc*) # Cuda Compiler Driver 2.2
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+ ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf* | bgf* | bgxlf* | mpixlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+ runpath_var=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ # Also, AIX nm treats weak defined symbols like other global
+ # defined symbols, whereas GNU nm marks them as "W".
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)=''
+ ;;
+ m68k)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[[45]]*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ freebsd1*)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ m4_if($1, [], [
+ # Older versions of the 11.00 compiler do not understand -b yet
+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+ _LT_LINKER_OPTION([if $CC understands -b],
+ _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+ [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ AC_LINK_IFELSE(int foo(void) {},
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+ )
+ LDFLAGS="$save_LDFLAGS"
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ os2*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ solaris*)
+ _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='${wl}'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+ [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_TAGVAR(archive_cmds, $1) in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ AC_CACHE_CHECK([whether -lc should be explicitly linked in],
+ [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
+ [$RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+ pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+ _LT_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+ then
+ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+ ])
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+ [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+ [enable_shared_with_static_runtimes], [0],
+ [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+ [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+ [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+ [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+ [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+ [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+ [Commands used to build a loadable module if different from building
+ a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+ [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+ [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+ [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+ [Flag to hardcode $libdir into a binary during linking.
+ This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
+ [[If ld is used when linking, flag to hardcode $libdir into a binary
+ during linking. This must work even if $libdir does not exist]])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+ [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+ DIR into the resulting binary and the resulting library dependency is
+ "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+ library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+ [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+ [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+ into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+ [Set to "yes" if building a shared library automatically hardcodes DIR
+ into the library and all subsequent libraries and executables linked
+ against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+ [Set to yes if linker adds runtime paths of dependent libraries
+ to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+ [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [fix_srcfile_path], [1],
+ [Fix the shell variable $srcfile for the compiler])
+_LT_TAGDECL([], [always_export_symbols], [0],
+ [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+ [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+ [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+ [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+ [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [file_list_spec], [1],
+ [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+ LT_SYS_DLOPEN_SELF
+ _LT_CMD_STRIPLIB
+
+ # Report which library types will actually be built
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC="$lt_save_CC"
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined. These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_PROG_CXXCPP
+else
+ _lt_caught_CXX_error=yes
+fi
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="int some_variable = 0;"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC=$CC
+ lt_save_LD=$LD
+ lt_save_GCC=$GCC
+ GCC=$GXX
+ lt_save_with_gnu_ld=$with_gnu_ld
+ lt_save_path_LD=$lt_cv_path_LD
+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+ else
+ $as_unset lt_cv_prog_gnu_ld
+ fi
+ if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+ else
+ $as_unset lt_cv_path_LD
+ fi
+ test -z "${LDCXX+set}" || LD=$LDCXX
+ CC=${CXX-"c++"}
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ # We don't want -fno-exception when compiling C++ code, so set the
+ # no_builtin_flag separately
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+ else
+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+ fi
+
+ if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+ LT_PATH_LD
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+ $GREP 'no-whole-archive' > /dev/null; then
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+ else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+ fi
+
+ # PORTME: fill in a description of your system's C++ link characteristics
+ AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_TAGVAR(archive_cmds, $1)=''
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ _LT_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to
+ # export.
+ _LT_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty
+ # executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ _LT_SYS_MODULE_PATH_AIX
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ fi
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared
+ # libraries.
+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_TAGVAR(always_export_symbols, $1)=no
+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ _LT_DARWIN_LINKER_FEATURES($1)
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ freebsd[[12]]*)
+ # C++ shared libraries reported to be fairly broken before
+ # switch to ELF
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ freebsd-elf*)
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+
+ freebsd* | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ gnu*)
+ ;;
+
+ haiku*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ hpux9*)
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ interix[[3-9]]*)
+ _LT_TAGVAR(hardcode_direct, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+ fi
+ fi
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_TAGVAR(inherit_rpath, $1)=yes
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc* | ecpc* )
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC* | pgcpp*)
+ # Portland Group C++ compiler
+ case `$CC -V` in
+ *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
+ _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+ _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+ $RANLIB $oldlib'
+ _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+ rm -rf $tpldir~
+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ *) # Version 6 and above use weak symbols
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+ ;;
+ xl* | mpixl* | bgxl*)
+ # IBM XL 8.0 on PPC, with GNU ld
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+ # Not sure whether something based on
+ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+ # would be better.
+ output_verbose_link_cmd='func_echo_all'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+
+ *nto* | *qnx*)
+ _LT_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ _LT_TAGVAR(hardcode_direct, $1)=yes
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd=func_echo_all
+ else
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ case $host in
+ osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+ *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+ esac
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ case $host in
+ osf3*)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ ;;
+ *)
+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+ $RM $lib.exp'
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ case $host in
+ osf3*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ ;;
+ esac
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ ;;
+ esac
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+ output_verbose_link_cmd='func_echo_all'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+ fi
+
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
+ '"$_LT_TAGVAR(old_archive_cmds, $1)"
+ _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
+ '"$_LT_TAGVAR(reload_cmds, $1)"
+ ;;
+ *)
+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+
+ AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+ test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+ _LT_TAGVAR(GCC, $1)="$GXX"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ CC=$lt_save_CC
+ LDCXX=$LD
+ LD=$lt_save_LD
+ GCC=$lt_save_GCC
+ with_gnu_ld=$lt_save_with_gnu_ld
+ lt_cv_path_LDCXX=$lt_cv_path_LD
+ lt_cv_path_LD=$lt_save_path_LD
+ lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+ lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library. It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+ subroutine foo
+ implicit none
+ integer a
+ a=0
+ return
+ end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+_LT_EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ for p in `eval "$output_verbose_link_cmd"`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" ||
+ test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+ _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+ _LT_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+ _LT_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ _LT_TAGVAR(predep_objects,$1)=
+ _LT_TAGVAR(postdep_objects,$1)=
+ _LT_TAGVAR(postdeps,$1)=
+ ;;
+
+linux*)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC* | sunCC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+ [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+ [Dependencies to place before and after the objects being linked to
+ create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+ [The library search path used internally by the compiler when linking
+ a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test "X$F77" = "Xno"; then
+ _lt_disable_F77=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
+ CC=${F77-"f77"}
+ compiler=$CC
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+ GCC=$G77
+ if test -n "$compiler"; then
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_TAGVAR(GCC, $1)="$G77"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC="$lt_save_CC"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test "X$FC" = "Xno"; then
+ _lt_disable_FC=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working. Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_FC" != yes; then
+ # Code to be used in simple compile tests
+ lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
+
+ # Code to be used in simple link tests
+ lt_simple_link_test_code="\
+ program t
+ end
+"
+
+ # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+ _LT_TAG_COMPILER
+
+ # save warnings/boilerplate of simple test code
+ _LT_COMPILER_BOILERPLATE
+ _LT_LINKER_BOILERPLATE
+
+ # Allow CC to be a program name with arguments.
+ lt_save_CC="$CC"
+ lt_save_GCC=$GCC
+ CC=${FC-"f95"}
+ compiler=$CC
+ GCC=$ac_cv_fc_compiler_gnu
+
+ _LT_TAGVAR(compiler, $1)=$CC
+ _LT_CC_BASENAME([$compiler])
+
+ if test -n "$compiler"; then
+ AC_MSG_CHECKING([if libtool supports shared libraries])
+ AC_MSG_RESULT([$can_build_shared])
+
+ AC_MSG_CHECKING([whether to build shared libraries])
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+ aix[[4-9]]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ AC_MSG_RESULT([$enable_shared])
+
+ AC_MSG_CHECKING([whether to build static libraries])
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ AC_MSG_RESULT([$enable_static])
+
+ _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+ _LT_TAGVAR(LD, $1)="$LD"
+
+ ## CAVEAT EMPTOR:
+ ## There is no encapsulation within the following macros, do not change
+ ## the running order or otherwise move them around unless you know exactly
+ ## what you are doing...
+ _LT_SYS_HIDDEN_LIBDEPS($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_SYS_DYNAMIC_LINKER($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+ fi # test -n "$compiler"
+
+ GCC=$lt_save_GCC
+ CC="$lt_save_CC"
+fi # test "$_lt_disable_FC" != yes
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+if test -n "$compiler"; then
+ _LT_COMPILER_NO_RTTI($1)
+ _LT_COMPILER_PIC($1)
+ _LT_COMPILER_C_O($1)
+ _LT_COMPILER_FILE_LOCKS($1)
+ _LT_LINKER_SHLIBS($1)
+ _LT_LINKER_HARDCODE_LIBPATH($1)
+
+ _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC="$lt_save_CC"
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined. These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+ :
+ _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+ [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+ [AC_CHECK_TOOL(GCJ, gcj,)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+ [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_SED. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_XSI_SHELLFNS
+# ---------------------
+# Bourne and XSI compatible variants of some useful shell functions.
+m4_defun([_LT_PROG_XSI_SHELLFNS],
+[case $xsi_shell in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+ func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+ # positional parameters, so assign one to ordinary parameter first.
+ func_stripname_result=${3}
+ func_stripname_result=${func_stripname_result#"${1}"}
+ func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=${1%%=*}
+ func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ case ${1} in
+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+ *) func_lo2o_result=${1} ;;
+ esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=$(( $[*] ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=${#1}
+}
+
+_LT_EOF
+ ;;
+ *) # Bourne compatible functions.
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ # Extract subdirectory from the argument.
+ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+}
+
+dnl func_dirname_and_basename
+dnl A portable version of this function is already defined in general.m4sh
+dnl so there is no need for it here.
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+ esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[[^=]]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+ func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=`$ECHO "${1}" | $SED 's/\.[[^.]]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=`expr "$[@]"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$[1]+=\$[2]"
+}
+_LT_EOF
+ ;;
+ *)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$[1]=\$$[1]\$[2]"
+}
+
+_LT_EOF
+ ;;
+ esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it. Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+ _LT_MANGLE_DEFUN([$1], [$2]),
+ [m4_warning([Unknown $1 option `$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+ [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME. If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+ [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+ dnl
+ dnl Simply set some default values (i.e off) if boolean options were not
+ dnl specified:
+ _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+ ])
+ _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+ ])
+ dnl
+ dnl If no reference was made to various pairs of opposing options, then
+ dnl we run the default mode handler for the pair. For example, if neither
+ dnl `shared' nor `disable-shared' was passed, we enable building of shared
+ dnl archives by default:
+ _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+ _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+ _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+ [_LT_ENABLE_FAST_INSTALL])
+ ])
+])# _LT_SET_OPTIONS
+
+
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS], [1], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+ [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+ _LT_DECL([build_libtool_libs], [enable_shared], [0],
+ [Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+ [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+ _LT_DECL([build_old_libs], [enable_static], [0],
+ [Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+ [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+ [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+ [AS_HELP_STRING([--with-pic],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [pic_mode="$withval"],
+ [pic_mode=default])
+
+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+ [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+ [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+ [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+ [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+ [m4_define([_LTDL_TYPE], [convenience])])
+
+# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+ [$#], [2], [[$2]],
+ [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+ [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+ [$#], 1, [],
+ [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+ m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+ [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+ [m4_foreach([_Lt_suffix],
+ ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+ [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+ [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+ [lt_append([$1], [$2], [$3])$4],
+ [$5])],
+ [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+ m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+ m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+ [$5],
+ [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+ [lt_join(m4_quote(m4_default([$4], [[, ]])),
+ lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+ [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
+
+# ltversion.m4 -- version numbers -*- Autoconf -*-
+#
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# Generated from ltversion.in.
+
+# serial 3165 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.2.7a])
+m4_define([LT_PACKAGE_REVISION], [1.3165])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.2.7a'
+macro_revision='1.3165'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
+
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+# Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 4 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else. This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
+m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.11], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 10
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST(install_sh)])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well. Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+ [enable], [m4_define([am_maintainer_other], [disable])],
+ [disable], [m4_define([am_maintainer_other], [enable])],
+ [m4_define([am_maintainer_other], [enable])
+ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+ dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+ AC_ARG_ENABLE([maintainer-mode],
+[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ [USE_MAINTAINER_MODE=$enableval],
+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST([MAINT])dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([../config/acx.m4])
+m4_include([../config/depstand.m4])
+m4_include([../config/lead-dot.m4])
+m4_include([../config/lthostflags.m4])
+m4_include([../config/override.m4])
diff --git a/gcc-4.6/function_reordering_plugin/callgraph.c b/gcc-4.6/function_reordering_plugin/callgraph.c
new file mode 100644
index 000000000..ee5b8679d
--- /dev/null
+++ b/gcc-4.6/function_reordering_plugin/callgraph.c
@@ -0,0 +1,597 @@
+/* Callgraph implementation.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+ Contributed by Sriraman Tallam (tmsriram@google.com).
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#include "callgraph.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <string.h>
+#include <hashtab.h>
+
+/*****************************************************************************/
+/* section_map hashtable definition and helpers. */
+
+/* Maps section name to its corresponding object handle and section index. */
+static htab_t section_map = NULL;
+
+/* Hashtable helper for section_map htab. */
+static hashval_t
+section_map_htab_hash_descriptor (const void *p)
+{
+ const Section_id *s = (const Section_id *)p;
+ const char *name = s->name;
+ return htab_hash_string(name);
+}
+
+/* Hashtable helper for section_map htab. */
+static int
+section_map_htab_eq_descriptor (const void *p1, const void *p2)
+{
+ const Section_id *s1 = (const Section_id *)p1;
+ const char *c1 = s1->name;
+ const char *c2 = (const char *)p2;
+
+ return (strcmp (c1, c2) == 0);
+}
+/*****************************************************************************/
+
+
+/*****************************************************************************/
+/* function_map hashtable definition and helpers.
+ Maps function name to a unique Node. */
+static htab_t function_map = NULL;
+static unsigned int last_function_id = 0;
+
+/* Hashtable helper for function_map htab. */
+static hashval_t
+function_map_htab_hash_descriptor (const void *p)
+{
+ const Node *s = (const Node *)p;
+ const char *name = s->name;
+ return htab_hash_string(name);
+}
+
+/* Hashtable helper for section_map htab. */
+static int
+function_map_htab_eq_descriptor (const void *p1, const void *p2)
+{
+ const Node *s1 = (const Node *)p1;
+ const char *c1 = s1->name;
+ const char *c2 = (const char *)p2;
+
+ return (strcmp (c1, c2) == 0);
+}
+/*****************************************************************************/
+
+/*****************************************************************************/
+/* edge_map hashtable definition and helpers.
+ Maps two node ids to a unique edge. */
+static htab_t edge_map = NULL;
+
+static inline hashval_t
+edge_hash_function (unsigned int id1, unsigned int id2)
+{
+ return (id1 << 16) | id2;
+}
+
+/* Hashtable helper for edge_map htab. */
+static hashval_t
+edge_map_htab_hash_descriptor (const void *p)
+{
+ Edge *e = (Edge *) p;
+ return edge_hash_function (e->first_function->id, e->second_function->id);
+}
+
+/* Hashtable helper for edge_map htab. */
+static int
+edge_map_htab_eq_descriptor (const void *p1, const void *p2)
+{
+ Edge *e1 = (Edge *) p1;
+ Raw_edge *r1 = (Raw_edge *) p2;
+ return ((e1->first_function->id == r1->n1->id)
+ && (e1->second_function->id == r1->n2->id));
+}
+
+
+/*****************************************************************************/
+
+/* Chain of all the created nodes. */
+Node *node_chain = NULL;
+/* Number of nodes that correspond to functions which will be reordered. */
+unsigned int num_real_nodes = 0;
+/* Chain of all edges in the merged callgraph. */
+Edge *active_edges = NULL;
+/* Chain of all the merged edges. */
+Edge *inactive_edges = NULL;
+
+/* Initial value of number of functions to allocate hash tables. */
+const int NUM_FUNCTIONS = 100;
+
+/* Reads off the next string from the char stream CONTENTS and updates
+ READ_LENGTH to the length of the string read. The value of CONTENTS
+ is updated to start at the next string. */
+
+static char *
+get_next_string (char **contents, unsigned int *read_length)
+{
+ char *s = *contents;
+ *read_length = strlen (*contents) + 1;
+ *contents += *read_length;
+ return s;
+}
+
+/* Add an EDGE to the list of edges in the call graph. */
+
+static void
+add_edge_to_list (Edge *edge)
+{
+ assert (edge != NULL);
+ edge->next = active_edges;
+ if (active_edges != NULL)
+ active_edges->prev = edge;
+ active_edges = edge;
+}
+
+/* Remove the edge from the list of edges in the call graph. This is done
+ when the nodes corresponding to this edge are merged. */
+
+static void
+remove_edge_from_list (Edge * curr_edge)
+{
+ assert (curr_edge != NULL);
+ if (curr_edge->prev != NULL)
+ curr_edge->prev->next = curr_edge->next;
+ if (curr_edge->next != NULL)
+ curr_edge->next->prev = curr_edge->prev;
+ if (active_edges == curr_edge)
+ active_edges = curr_edge->next;
+ curr_edge->next = NULL;
+ curr_edge->prev = NULL;
+
+ /* Add to inactive edges to be freed later. */
+ curr_edge->next = inactive_edges;
+ inactive_edges = curr_edge;
+ return;
+}
+
+/* Adds the WEIGHT value to the edge count of CALLER and CALLEE. */
+
+static void
+update_edge (Node *n1, Node *n2, unsigned int weight)
+{
+ void **slot;
+ Raw_edge re, *r;
+ Edge *e;
+
+ if (n1->id == n2->id)
+ return;
+ if (weight == 0)
+ return;
+
+ if (edge_map == NULL)
+ {
+ edge_map = htab_create ((NUM_FUNCTIONS * 2),
+ edge_map_htab_hash_descriptor,
+ edge_map_htab_eq_descriptor , NULL);
+ assert (edge_map != NULL);
+ }
+
+ r = &re;
+ init_raw_edge (r, n1, n2);
+ slot = htab_find_slot_with_hash (edge_map, r,
+ edge_hash_function (r->n1->id, r->n2->id),
+ INSERT);
+ if (*slot == NULL)
+ {
+ e = make_edge (r->n1, r->n2, weight);
+ *slot = e;
+ add_edge_to_list (e);
+ }
+ else
+ {
+ e = *slot;
+ e->weight += weight;
+ }
+}
+
+/* Create a unique node for a function. */
+
+static Node *
+get_function_node (char *name)
+{
+ void **slot = NULL;
+ Node *node;
+
+ if (function_map == NULL)
+ {
+ function_map = htab_create (NUM_FUNCTIONS,
+ function_map_htab_hash_descriptor,
+ function_map_htab_eq_descriptor , NULL);
+ assert (function_map != NULL);
+ }
+
+ slot = htab_find_slot_with_hash (function_map, name, htab_hash_string (name),
+ INSERT);
+
+ if (*slot == NULL)
+ {
+ node = make_node (last_function_id, name);
+ /* Chain the node to the node_chain. */
+ node->next = node_chain;
+ node_chain = node;
+ *slot = node;
+ last_function_id++;
+ }
+ else
+ {
+ node = (Node *)*slot;
+ }
+ return node;
+}
+
+/* Dumper funcction to print the list of functions that will be considered for
+ re-ordering. */
+
+void
+dump_functions ()
+{
+ Node *node = node_chain;
+ while (node)
+ {
+ if (node->is_real_node)
+ fprintf (stderr, "Dumping function %s\n", node->name);
+ node = node->next;
+ }
+}
+
+/* Dump all the edges existing in the callgraph. */
+
+void dump_edges (FILE *fp)
+{
+ Edge *it;
+ for (it = active_edges;
+ it != NULL;
+ it = it->next)
+ {
+ fprintf (fp,"# %s ---- (%u)---- %s\n",
+ it->first_function->name,
+ it->weight,
+ it->second_function->name);
+ }
+}
+
+/* HEADER_LEN is the length of string 'Function '. */
+const int HEADER_LEN = 9;
+
+/* Parse the section contents of ".gnu.callgraph.text" sections and create
+ call graph edges with appropriate weights. The section contents have the
+ following format :
+ Function <caller_name>
+ <callee_1>
+ <edge count between caller and callee_1>
+ <callee_2>
+ <edge count between caller and callee_2>
+ .... */
+void
+parse_callgraph_section_contents (unsigned char *section_contents,
+ unsigned int length)
+{
+ char *contents;
+ char *caller;
+ unsigned int read_length = 0, curr_length = 0;
+ Node *caller_node;
+
+ /* First string in contents is 'Function <function-name>'. */
+ assert (length > 0);
+ contents = (char*) (section_contents);
+ caller = get_next_string (&contents, &read_length);
+ assert (read_length > HEADER_LEN);
+ caller = caller + HEADER_LEN;
+ curr_length = read_length;
+ caller_node = get_function_node (caller);
+ num_real_nodes++;
+
+ while (curr_length < length)
+ {
+ /* Read callee, weight tuples. */
+ char *callee;
+ char *weight_str;
+ unsigned int weight;
+ Node *callee_node;
+
+ callee = get_next_string (&contents, &read_length);
+ curr_length += read_length;
+ callee_node = get_function_node (callee);
+
+ assert (curr_length < length);
+ weight_str = get_next_string (&contents, &read_length);
+ weight = atoi (weight_str);
+ curr_length += read_length;
+ update_edge (caller_node, callee_node, weight);
+ }
+}
+
+/* Traverse the list of edges and find the edge with the maximum weight. */
+
+static Edge *
+find_max_edge ()
+{
+ Edge *it, *max_edge;
+
+ if (active_edges == NULL)
+ return NULL;
+
+ max_edge = active_edges;
+ assert (!active_edges->is_merged);
+
+ it = active_edges->next;
+ for (;it != NULL; it = it->next)
+ {
+ assert (!it->is_merged);
+ if (edge_lower (max_edge , it))
+ max_edge = it;
+ }
+
+ return max_edge;
+}
+
+/* Change the EDGE from OLD_NODE to KEPT_NODE to be between NEW_NODE
+ and KEPT_NODE. */
+
+static void
+merge_edge (Edge *edge, Node *new_node, Node *old_node,
+ Node *kept_node)
+{
+ void **slot;
+ Raw_edge re, *r;
+
+ r = &re;
+ init_raw_edge (r, new_node, kept_node);
+ slot = htab_find_slot_with_hash (edge_map, r,
+ edge_hash_function (r->n1->id, r->n2->id),
+ INSERT);
+
+ if (*slot == NULL)
+ {
+ reset_functions (edge, new_node, kept_node);
+ *slot = edge;
+ add_edge_to_node (new_node, edge);
+ }
+ else
+ {
+ Edge *new_edge = *slot;
+ new_edge->weight += edge->weight;
+ edge->is_merged = 1;
+ remove_edge_from_list (edge);
+ }
+}
+
+/* Merge the two nodes in this EDGE. The new node's edges are the union of
+ the edges of the original nodes. */
+
+static void
+collapse_edge (Edge * edge)
+{
+ Edge_list *it;
+ Node *kept_node = edge->first_function;
+ Node *merged_node = edge->second_function;
+
+ /* Go through all merged_node edges and merge with kept_node. */
+ for (it = merged_node->edge_list; it != NULL; it = it->next)
+ {
+ Node *other_node = NULL;
+ Edge *this_edge = it->edge;
+ if (this_edge->is_merged)
+ continue;
+ if (this_edge == edge)
+ continue;
+ assert (this_edge->first_function->id == merged_node->id
+ || this_edge->second_function->id == merged_node->id);
+ other_node = (this_edge->first_function->id
+ == merged_node->id)
+ ? this_edge->second_function
+ : this_edge->first_function;
+ merge_edge (this_edge, kept_node, merged_node, other_node);
+ }
+
+ merge_node (kept_node, merged_node);
+ edge->is_merged = 1;
+ remove_edge_from_list (edge);
+}
+
+/* Make node N a real node if it can be reordered, that is, its .text
+ section is available. */
+static void set_node_type (Node *n)
+{
+ void *slot;
+ char *name = n->name;
+ slot = htab_find_with_hash (section_map, name, htab_hash_string (name));
+ if (slot != NULL)
+ set_as_real_node (n);
+}
+
+void
+find_pettis_hansen_function_layout (FILE *fp)
+{
+ Node *n_it;
+ Edge *it;
+
+ assert (node_chain != NULL);
+ assert (active_edges != NULL);
+ assert (fp != NULL);
+
+ dump_edges (fp);
+
+ /* Go over all the nodes and set it as real node only if a corresponding
+ function section exists. */
+ for (n_it = node_chain; n_it != NULL; n_it = n_it->next)
+ set_node_type (n_it);
+
+ /* Set edge types. A WEAK_EDGE has one of its nodes corresponding to a
+ function that cannot be re-ordered. */
+ for (it = active_edges; it != NULL; it = it->next)
+ set_edge_type (it);
+
+ it = find_max_edge ();
+ while (it != NULL)
+ {
+ collapse_edge (it);
+ it = find_max_edge ();
+ }
+}
+
+/* Maps the function name corresponding to section SECTION_NAME to the
+ object handle and the section index. */
+
+void
+map_section_name_to_index (char *section_name, void *handle, int shndx)
+{
+ void **slot;
+ const char *sections[] = {".text.hot.",
+ ".text.unlikely.",
+ ".text.cold.",
+ ".text.startup.",
+ ".text." };
+ char *function_name = NULL;
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE (sections); ++i)
+ {
+ if (is_prefix_of (sections[i], section_name))
+ {
+ function_name = section_name + strlen (sections[i]);
+ break;
+ }
+ }
+ assert (function_name != NULL);
+
+ /* Allocate section_map. */
+ if (section_map == NULL)
+ {
+ section_map = htab_create (NUM_FUNCTIONS,
+ section_map_htab_hash_descriptor,
+ section_map_htab_eq_descriptor , NULL);
+ assert (section_map != NULL);
+ }
+
+ slot = htab_find_slot_with_hash (section_map, function_name,
+ htab_hash_string (function_name),
+ INSERT);
+ if (*slot == NULL)
+ *slot = make_section_id (function_name, section_name, handle, shndx);
+}
+
+static void
+write_out_node (FILE *fp, char *name,
+ void **handles, unsigned int *shndx, int position)
+{
+ void *slot;
+ slot = htab_find_with_hash (section_map, name, htab_hash_string (name));
+ if (slot != NULL)
+ {
+ Section_id *s = (Section_id *)slot;
+ handles[position] = s->handle;
+ shndx[position] = s->shndx;
+ fprintf (fp, "%s\n", s->full_name);
+ /* No more use of full_name */
+ free (s->full_name);
+ }
+}
+
+/* Visit each node and print the chain of merged nodes to the file. */
+
+unsigned int
+get_layout (FILE *fp, void*** handles,
+ unsigned int** shndx)
+{
+ Node *it;
+ int position = 0;
+
+ assert (fp != NULL);
+
+ *handles = XNEWVEC (void *, num_real_nodes);
+ *shndx = XNEWVEC (unsigned int, num_real_nodes);
+
+ /* Dump edges to the final reordering file. */
+
+ for (it = node_chain; it != NULL; it = it->next)
+ {
+ Node *node;
+ if (it->is_merged)
+ continue;
+ if (it->is_real_node)
+ {
+ write_out_node (fp, it->name, *handles, *shndx, position);
+ position++;
+ }
+ node = it->merge_next;
+ while (node != NULL)
+ {
+ if (node->is_real_node)
+ {
+ write_out_node (fp, node->name, *handles, *shndx, position);
+ position++;
+ }
+ node = node->merge_next;
+ }
+ }
+ return position;
+}
+
+/* Free all heap objects. */
+
+void
+cleanup ()
+{
+ Node *node;
+
+ /* Free all nodes and edge_lists. */
+ for (node = node_chain; node != NULL; )
+ {
+ Node *next_node = node->next;
+ Edge_list *it;
+ for (it = node->edge_list; it != NULL; )
+ {
+ Edge_list *next_it = it->next;
+ free (it);
+ it = next_it;
+ }
+ free (node);
+ node = next_node;
+ }
+
+ /* Free all active_edges. */
+ free_edge_chain (active_edges);
+
+ /* Free all inactive edges. */
+ free_edge_chain (inactive_edges);
+
+ /* Delete all htabs. */
+ htab_delete (section_map);
+ htab_delete (function_map);
+ htab_delete (edge_map);
+}
+
+/* Check if the callgraph is empty. */
+unsigned int
+is_callgraph_empty ()
+{
+ if (active_edges == NULL)
+ return 1;
+ return 0;
+}
diff --git a/gcc-4.6/function_reordering_plugin/callgraph.h b/gcc-4.6/function_reordering_plugin/callgraph.h
new file mode 100644
index 000000000..66ef5b33b
--- /dev/null
+++ b/gcc-4.6/function_reordering_plugin/callgraph.h
@@ -0,0 +1,272 @@
+/* Callgraph implementation.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+ Contributed by Sriraman Tallam (tmsriram@google.com).
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#ifndef CALLGRAPH_H
+#define CALLGRAPH_H
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <hashtab.h>
+#include <string.h>
+#include "libiberty.h"
+
+struct edge_d;
+typedef struct edge_d Edge;
+
+/* Maintain a list of edges. */
+typedef struct edge_list_d
+{
+ Edge *edge;
+ struct edge_list_d *next;
+ struct edge_list_d *prev;
+} Edge_list;
+
+inline static Edge_list *
+make_edge_list (Edge *e)
+{
+ Edge_list *list = XNEW (Edge_list);
+ list->edge = e;
+ list->next = NULL;
+ list->prev = NULL;
+ return list;
+}
+
+/* Represents a node in the call graph. */
+typedef struct node_d
+{
+ unsigned int id;
+ char *name;
+ /* Chain all the Nodes created. */
+ struct node_d *next;
+ /* Pointer to the next node in the chain of merged nodes. */
+ struct node_d *merge_next;
+ /* List of all edges with this node. */
+ Edge_list *edge_list;
+ /* Pointer to the last node in the chain of merged nodes. */
+ struct node_d *last_merge_node;
+ unsigned int is_merged;
+ /* 1 if the function corresponding to this node can be re-ordered. */
+ unsigned int is_real_node;
+} Node;
+
+inline static Node *
+make_node (unsigned int id, char *name)
+{
+ Node *node = XNEW (Node);
+ node->id = id;
+ node->name = name;
+ node->is_real_node = 0;
+ node->next = NULL;
+ node->edge_list = NULL;
+ node->last_merge_node = node;
+ node->is_merged = 0;
+ node->merge_next = NULL;
+ return node;
+}
+
+/* Chain the nodes that are merged. Maintain a pointer to the last
+ node in the chain. After merging at the end, the last node in the
+ current chain is the last node in the chain of the merged node. */
+inline static void
+merge_node (Node *merger, Node *mergee)
+{
+ merger->last_merge_node->merge_next = mergee;
+ merger->last_merge_node = mergee->last_merge_node;
+ mergee->is_merged = 1;
+}
+
+inline static void
+add_edge_to_node (Node *n, Edge *e)
+{
+ Edge_list *list;
+ assert (n != NULL && e != NULL);
+ list = make_edge_list (e);
+ list->next = n->edge_list;
+ if (n->edge_list != NULL)
+ n->edge_list->prev = list;
+ n->edge_list = list;
+}
+
+/* A node is real only if the function can be reordered. */
+inline static void
+set_as_real_node (Node *node)
+{
+ node->is_real_node = 1;
+}
+
+/* WEAK if one of the nodes is not real. STRONG if both
+ nodes are real. */
+typedef enum edge_type_
+{
+ STRONG_EDGE = 0,
+ WEAK_EDGE
+} Edge_type;
+
+/*Represents an edge in the call graph. */
+struct edge_d
+{
+ Node *first_function;
+ Node *second_function;
+ unsigned int weight;
+ Edge_type type;
+ /* 1 if the nodes corresponding to this edge have been merged. */
+ unsigned int is_merged;
+ /* Doubly linked chain of created edges. */
+ struct edge_d *prev;
+ struct edge_d *next;
+};
+
+inline static Edge *
+make_edge (Node *first, Node *second, unsigned int weight)
+{
+ Edge *edge = XNEW (Edge);
+ edge->first_function = first;
+ edge->second_function = second;
+ edge->weight = weight;
+ edge->type = WEAK_EDGE;
+ edge->is_merged = 0;
+ edge->prev = NULL;
+ edge->next = NULL;
+ add_edge_to_node (first, edge);
+ add_edge_to_node (second, edge);
+ return edge;
+}
+
+/* Frees the chain of edges. */
+inline static void
+free_edge_chain (Edge *edge_chain)
+{
+ Edge *edge;
+
+ for (edge = edge_chain; edge != NULL; )
+ {
+ Edge *next_edge = edge->next;
+ free (edge);
+ edge = next_edge;
+ }
+}
+
+inline static void
+set_edge_type (Edge *edge)
+{
+ if (edge->first_function->is_real_node
+ && edge->second_function->is_real_node)
+ edge->type = STRONG_EDGE;
+ else
+ edge->type = WEAK_EDGE;
+}
+
+inline static unsigned int
+edge_lower (Edge *e1, Edge *e2)
+{
+ if (e1->type == e2->type)
+ return (e1->weight < e2->weight) ? 1 : 0;
+ if (e1->type == STRONG_EDGE)
+ return 0;
+ return 1;
+}
+
+inline static void
+reset_functions (Edge *e, Node *n1, Node *n2)
+{
+ /* No self edges. */
+ assert (n1->id != n2->id);
+ if (n1->id < n2->id)
+ {
+ e->first_function = n1;
+ e->second_function = n2;
+ }
+ else
+ {
+ e->first_function = n2;
+ e->second_function = n1;
+ }
+}
+
+/* A Section is represented by its object handle and the section index. */
+typedef struct
+{
+ /* Name of the function. */
+ char *name;
+ /* Full name of the section. */
+ char *full_name;
+ void *handle;
+ int shndx;
+} Section_id;
+
+inline static Section_id *
+make_section_id (char *name, char *full_name, void *handle, int shndx)
+{
+ Section_id *s = XNEW (Section_id);
+ s->name = name;
+ s->full_name = full_name;
+ s->handle = handle;
+ s->shndx = shndx;
+
+ return s;
+}
+
+/* A pair of nodes make a raw edge. Also, N1->id < N2->id. */
+typedef struct
+{
+ Node *n1;
+ Node *n2;
+} Raw_edge;
+
+inline static void
+init_raw_edge (Raw_edge *r, Node *n1, Node *n2)
+{
+ assert (n1 ->id != n2->id);
+ if (n1->id < n2->id)
+ {
+ r->n1 = n1;
+ r->n2 = n2;
+ }
+ else
+ {
+ r->n1 = n2;
+ r->n2 = n1;
+ }
+}
+
+inline static int is_prefix_of (const char *prefix, const char *str)
+{
+ return strncmp (prefix, str, strlen (prefix)) == 0;
+}
+
+/* Maps the function corresponding to section name to its
+ corresponding object handle and the section index. */
+void
+map_section_name_to_index (char *section_name, void *handle, int shndx);
+
+void
+parse_callgraph_section_contents (unsigned char *section_contents,
+ unsigned int length);
+
+void dump_functions ();
+void dump_edges ();
+void find_pettis_hansen_function_layout (FILE *fp);
+
+unsigned int get_layout (FILE *fp, void*** handles,
+ unsigned int** shndx);
+
+void cleanup ();
+/* Returns 1 if callgraph is empty. */
+unsigned int is_callgraph_empty ();
+#endif
diff --git a/gcc-4.6/function_reordering_plugin/config.h.in b/gcc-4.6/function_reordering_plugin/config.h.in
new file mode 100644
index 000000000..2c954a802
--- /dev/null
+++ b/gcc-4.6/function_reordering_plugin/config.h.in
@@ -0,0 +1,68 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
diff --git a/gcc-4.6/function_reordering_plugin/configure b/gcc-4.6/function_reordering_plugin/configure
new file mode 100755
index 000000000..81a6185ef
--- /dev/null
+++ b/gcc-4.6/function_reordering_plugin/configure
@@ -0,0 +1,13086 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.64 for REORDER plugin for ld 0.1.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
+# Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+
+ test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+ PATH=/empty FPATH=/empty; export PATH FPATH
+ test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ # We cannot yet assume a decent shell, so we have to provide a
+ # neutralization value for shells without unset; and this also
+ # works around shells that cannot unset nonexistent variables.
+ BASH_ENV=/dev/null
+ ENV=/dev/null
+ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$?; test $as_status -eq 0 && as_status=1
+ if test "$3"; then
+ as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ fi
+ $as_echo "$as_me: error: $1" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='REORDER plugin for ld'
+PACKAGE_TARNAME='function_reordering_plugin'
+PACKAGE_VERSION='0.1'
+PACKAGE_STRING='REORDER plugin for ld 0.1'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+target_noncanonical
+lt_host_flags
+CPP
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+RANLIB
+AR
+OBJDUMP
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+EGREP
+GREP
+SED
+LIBTOOL
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_subdir
+host_subdir
+build_subdir
+build_libsubdir
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_build_libsubdir
+enable_maintainer_mode
+enable_dependency_tracking
+enable_largefile
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_gnu_ld
+enable_libtool_lock
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information."
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures REORDER plugin for ld 0.1 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root
+ [DATAROOTDIR/doc/function_reordering_plugin]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+ --target=TARGET configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of REORDER plugin for ld 0.1:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --disable-largefile omit support for large files
+ --enable-shared[=PKGS] build shared libraries [default=yes]
+ --enable-static[=PKGS] build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-build-libsubdir=DIR Directory where to find libraries for build system
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+REORDER plugin for ld configure 0.1
+generated by GNU Autoconf 2.64
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ return $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ return $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ return $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ return $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_func
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by REORDER plugin for ld $as_me 0.1, which was
+generated by GNU Autoconf 2.64. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special
+ # files actually), so we avoid doing that.
+ if test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ for ac_t in install-sh install.sh shtool; do
+ if test -f "$ac_dir/$ac_t"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/$ac_t -c"
+ break 2
+ fi
+ done
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if test "${ac_cv_target+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$target_alias" = x; then
+ ac_cv_target=$ac_cv_host
+else
+ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+ as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+ test "$program_prefix$program_suffix$program_transform_name" = \
+ NONENONEs,x,x, &&
+ program_prefix=${target_alias}-
+
+ case ${build_alias} in
+ "") build_noncanonical=${build} ;;
+ *) build_noncanonical=${build_alias} ;;
+esac
+
+ case ${host_alias} in
+ "") host_noncanonical=${build_noncanonical} ;;
+ *) host_noncanonical=${host_alias} ;;
+esac
+
+ case ${target_alias} in
+ "") target_noncanonical=${host_noncanonical} ;;
+ *) target_noncanonical=${target_alias} ;;
+esac
+
+
+# post-stage1 host modules use a different CC_FOR_BUILD so, in order to
+# have matching libraries, they should use host libraries: Makefile.tpl
+# arranges to pass --with-build-libsubdir=$(HOST_SUBDIR).
+# However, they still use the build modules, because the corresponding
+# host modules (e.g. bison) are only built for the host when bootstrap
+# finishes. So:
+# - build_subdir is where we find build modules, and never changes.
+# - build_libsubdir is where we find build libraries, and can be overridden.
+
+# Prefix 'build-' so this never conflicts with target_subdir.
+build_subdir="build-${build_noncanonical}"
+
+# Check whether --with-build-libsubdir was given.
+if test "${with_build_libsubdir+set}" = set; then :
+ withval=$with_build_libsubdir; build_libsubdir="$withval"
+else
+ build_libsubdir="$build_subdir"
+fi
+
+# --srcdir=. covers the toplevel, while "test -d" covers the subdirectories
+if ( test $srcdir = . && test -d gcc ) \
+ || test -d $srcdir/../host-${host_noncanonical}; then
+ host_subdir="host-${host_noncanonical}"
+else
+ host_subdir=.
+fi
+# No prefix.
+target_subdir=${target_noncanonical}
+
+am__api_version='1.11'
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ test -d ./--version && rmdir ./--version
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='function_reordering_plugin'
+ VERSION='0.1'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+ if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "no acceptable C compiler found in \$PATH
+See \`config.log' for more details." "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ rm -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+if test -z "$ac_file"; then :
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "C compiler cannot create executables
+See \`config.log' for more details." "$LINENO" 5; }; }
+fi
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+rm -f conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+ enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if test "${ac_cv_sys_largefile_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ CC="$CC -n32"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_largefile_CC=' -n32'; break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+ if test "$ac_cv_sys_largefile_CC" != no; then
+ CC=$CC$ac_cv_sys_largefile_CC
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=64; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_file_offset_bits=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ if test $ac_cv_sys_file_offset_bits = unknown; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test "${ac_cv_sys_large_files+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_large_files=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ fi
+fi
+
+case `pwd` in
+ *\ * | *\ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.2.7a'
+macro_revision='1.3134'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`print -r -- -n 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='printf %s\n'
+else
+ # Use this function as a fallback that always works.
+ func_fallback_echo ()
+ {
+ eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+ }
+ ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO ""
+}
+
+case "$ECHO" in
+ printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+ print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+ *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if test "${ac_cv_path_SED+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if test "${ac_cv_path_FGREP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+ then ac_cv_path_FGREP="$GREP -F"
+ else
+ if test -z "$FGREP"; then
+ ac_path_FGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in fgrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+ # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'FGREP' >> "conftest.nl"
+ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_FGREP="$ac_path_FGREP"
+ ac_path_FGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_FGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_FGREP"; then
+ as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_FGREP=$FGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if test "${lt_cv_path_NM+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in dumpbin "link -dump"
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DUMPBIN+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DUMPBIN"; then
+ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DUMPBIN" && break
+ done
+fi
+if test -z "$DUMPBIN"; then
+ ac_ct_DUMPBIN=$DUMPBIN
+ for ac_prog in dumpbin "link -dump"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DUMPBIN"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_DUMPBIN" && break
+done
+
+ if test "x$ac_ct_DUMPBIN" = x; then
+ DUMPBIN=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DUMPBIN=$ac_ct_DUMPBIN
+ fi
+fi
+
+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if test "${lt_cv_nm_interface+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+ cat conftest.out >&5
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ mint*)
+ # On MiNT this can take a long time and run out of memory.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+ = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if test "${lt_cv_ld_reload_flag+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OBJDUMP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OBJDUMP="objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if test "${lt_cv_deplibs_check_method+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[45]*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ # Keep this pattern in sync with the one in func_win32_libid.
+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc*)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+haiku*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[3-9]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+*nto* | *qnx*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AR+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_AR="ar"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+else
+ AR="$ac_cv_prog_AR"
+fi
+
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+case $host_os in
+ darwin*)
+ lock_old_archive_extraction=yes ;;
+ *)
+ lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris*)
+ symcode='[BDRT]'
+ ;;
+sco3.2v5*)
+ symcode='[DT]'
+ ;;
+sysv4.2uw2*)
+ symcode='[DT]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[ABDT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK '"\
+" {last_section=section; section=\$ 3};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+ (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+ enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if test "${lt_cv_cc_needs_belf+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_cc_needs_belf=yes
+else
+ lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+ case $host_os in
+ rhapsody* | darwin*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DSYMUTIL+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DSYMUTIL"; then
+ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+ ac_ct_DSYMUTIL=$DSYMUTIL
+ # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DSYMUTIL"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DSYMUTIL" = x; then
+ DSYMUTIL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DSYMUTIL=$ac_ct_DSYMUTIL
+ fi
+else
+ DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_NMEDIT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NMEDIT"; then
+ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+ ac_ct_NMEDIT=$NMEDIT
+ # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NMEDIT"; then
+ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_NMEDIT="nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_NMEDIT" = x; then
+ NMEDIT=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NMEDIT=$ac_ct_NMEDIT
+ fi
+else
+ NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_LIPO+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LIPO"; then
+ ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+ ac_ct_LIPO=$LIPO
+ # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_LIPO"; then
+ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_LIPO="lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_LIPO" = x; then
+ LIPO=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LIPO=$ac_ct_LIPO
+ fi
+else
+ LIPO="$ac_cv_prog_LIPO"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OTOOL+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL"; then
+ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+ ac_ct_OTOOL=$OTOOL
+ # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL"; then
+ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OTOOL="otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL" = x; then
+ OTOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL=$ac_ct_OTOOL
+ fi
+else
+ OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OTOOL64+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL64"; then
+ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+ ac_ct_OTOOL64=$OTOOL64
+ # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL64"; then
+ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OTOOL64="otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL64" = x; then
+ OTOOL64=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL64=$ac_ct_OTOOL64
+ fi
+else
+ OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if test "${lt_cv_apple_cc_single_mod+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if test "${lt_cv_ld_exported_symbols_list+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_ld_exported_symbols_list=yes
+else
+ lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if test "${lt_cv_ld_force_load+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_force_load=no
+ cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+ echo "$AR cru libconftest.a conftest.o" >&5
+ $AR cru libconftest.a conftest.o 2>&5
+ echo "$RANLIB libconftest.a" >&5
+ $RANLIB libconftest.a 2>&5
+ cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+ _lt_result=$?
+ if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+ lt_cv_ld_force_load=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -f conftest.err libconftest.a conftest conftest.c
+ rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[012]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+eval as_val=\$$as_ac_Header
+ if test "x$as_val" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in dlfcn.h
+do :
+ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+# Set options
+
+
+
+ enable_dlopen=no
+
+
+ enable_win32_dll=no
+
+
+ # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+ enableval=$enable_shared; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+ # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+ enableval=$enable_static; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+ withval=$with_pic; pic_mode="$withval"
+else
+ pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+ # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+ enableval=$enable_fast_install; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if test "${lt_cv_objdir+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/${ac_tool_prefix}file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ case $cc_basename in
+ nvcc*)
+ lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+ *)
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+ esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+
+
+
+
+
+ lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_static='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ lt_prog_compiler_static=
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[3-9]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+
+ case $cc_basename in
+ nvcc*) # Cuda Compiler Driver 2.2
+ lt_prog_compiler_wl='-Xlinker '
+ lt_prog_compiler_pic='-Xcompiler -fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ else
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ xl* | bgxl* | bgf* | mpixl*)
+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-qpic'
+ lt_prog_compiler_static='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ F* | *Sun*Fortran*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl=''
+ ;;
+ *Sun\ C*)
+ # Sun C 5.9
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ rdos*)
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic='-Kconform_pic'
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_can_build_shared=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+ ;;
+ *)
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+$as_echo "$lt_prog_compiler_pic" >&6; }
+
+
+
+
+
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_pic_works=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+ esac
+else
+ lt_prog_compiler_pic=
+ lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ else
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+ runpath_var=
+ allow_undefined_flag=
+ always_export_symbols=no
+ archive_cmds=
+ archive_expsym_cmds=
+ compiler_needs_object=no
+ enable_shared_with_static_runtimes=no
+ export_dynamic_flag_spec=
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ hardcode_automatic=no
+ hardcode_direct=no
+ hardcode_direct_absolute=no
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld=
+ hardcode_libdir_separator=
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ inherit_rpath=no
+ link_all_deplibs=unknown
+ module_cmds=
+ module_expsym_cmds=
+ old_archive_from_new_cmds=
+ old_archive_from_expsyms_cmds=
+ thread_safe_flag_spec=
+ whole_archive_flag_spec=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+
+ # On some targets, GNU ld is compatible enough with the native linker
+ # that we're better off using the native interface for both.
+ lt_use_gnu_ld_interface=no
+ if test "$with_gnu_ld" = yes; then
+ case $host_os in
+ aix*)
+ # The AIX port of GNU ld has always aspired to compatibility
+ # with the native linker. However, as the warning in the GNU ld
+ # block says, versions before 2.19.5* couldn't really create working
+ # shared libraries, regardless of the interface used.
+ case `$LD -v 2>&1` in
+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+ *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+ *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ fi
+
+ if test "$lt_use_gnu_ld_interface" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ export_dynamic_flag_spec='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ export_dynamic_flag_spec='${wl}--export-all-symbols'
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ haiku*)
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ link_all_deplibs=yes
+ ;;
+
+ interix[3-9]*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ nvcc*) # Cuda Compiler Driver 2.2
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf* | bgf* | bgxlf* | mpixlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ # Also, AIX nm treats weak defined symbols like other global
+ # defined symbols, whereas GNU nm marks them as "W".
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds=''
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ file_list_spec='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ export_dynamic_flag_spec='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec='$convenience'
+ fi
+ archive_cmds_need_lc=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_from_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes=yes
+ ;;
+
+ darwin* | rhapsody*)
+
+
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ if test "$lt_cv_ld_force_load" = "yes"; then
+ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ else
+ whole_archive_flag_spec=''
+ fi
+ link_all_deplibs=yes
+ allow_undefined_flag="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=func_echo_all
+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+ else
+ ld_shlibs=no
+ fi
+
+ ;;
+
+ dgux*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld='+b $libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+
+ # Older versions of the 11.00 compiler do not understand -b yet
+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if test "${lt_cv_prog_compiler__b+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler__b=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -b"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler__b=yes
+ fi
+ else
+ lt_cv_prog_compiler__b=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ *)
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int foo(void) {}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ inherit_rpath=yes
+ link_all_deplibs=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ newsos6)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_shlibpath_var=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ hardcode_direct_absolute=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_separator=:
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='${wl}'
+ archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds='$CC -r -o $output$reload_objs'
+ hardcode_direct=no
+ ;;
+ motorola)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag='${wl}-z,text'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag='${wl}-z,text'
+ allow_undefined_flag='${wl}-z,nodefs'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-R,$libdir'
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if test "${lt_cv_archive_cmds_need_lc+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ pic_flag=$lt_prog_compiler_pic
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag
+ allow_undefined_flag=
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ then
+ lt_cv_archive_cmds_need_lc=no
+ else
+ lt_cv_archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+ archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ case $host_os in
+ mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+ *) lt_sed_strip_eq="s,=/,/,g" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+ case $lt_search_path_spec in
+ *\;*)
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+ ;;
+ *)
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ esac
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[lt_foo]++; }
+ if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+ # AWK program above erroneously prepends '/' to C:/dos/paths
+ # for these hosts.
+ case $host_os in
+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+ $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+ esac
+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[4-9]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+haiku*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ dynamic_linker="$host_os runtime_loader"
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+ postinstall_cmds='chmod 555 $lib'
+ # or fails outright, so override atomically:
+ install_override_mode=555
+ ;;
+
+interix[3-9]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+
+ # Some binutils ld are patched to set DT_RUNPATH
+ if test "${lt_cv_shlibpath_overrides_runpath+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_shlibpath_overrides_runpath=no
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+ lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+fi
+
+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+ test -n "$runpath_var" ||
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$hardcode_direct" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+ test "$hardcode_minus_L" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+ test "$inherit_rpath" = yes; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+
+
+
+
+ if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = x""yes; then :
+ lt_cv_dlopen="shl_load"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_shl_load=yes
+else
+ ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = x""yes; then :
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+ ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = x""yes; then :
+ lt_cv_dlopen="dlopen"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_svld_dlopen=yes
+else
+ ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = x""yes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_dld_link=yes
+else
+ ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = x""yes; then :
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+void fnord () __attribute__((visibility("default")));
+#endif
+
+void fnord () { int i=42; }
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else
+ {
+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self_static+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+void fnord () __attribute__((visibility("default")));
+#endif
+
+void fnord () { int i=42; }
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else
+ {
+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ ;;
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+ # Report which library types will actually be built
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+
+
+
+case $host in
+ *-cygwin* | *-mingw*)
+ # 'host' will be top-level target in the case of a target lib,
+ # we must compare to with_cross_host to decide if this is a native
+ # or cross-compiler and select where to install dlls appropriately.
+ if test -n "$with_cross_host" &&
+ test x"$with_cross_host" != x"no"; then
+ lt_host_flags='-no-undefined -bindir "$(toolexeclibdir)"';
+ else
+ lt_host_flags='-no-undefined -bindir "$(bindir)"';
+ fi
+ ;;
+ *)
+ lt_host_flags=
+ ;;
+esac
+
+
+
+
+ac_config_files="$ac_config_files Makefile"
+
+ac_config_headers="$ac_config_headers config.h"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ test "x$cache_file" != "x/dev/null" &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ as_fn_error "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$?; test $as_status -eq 0 && as_status=1
+ if test "$3"; then
+ as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ fi
+ $as_echo "$as_me: error: $1" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by REORDER plugin for ld $as_me 0.1, which was
+generated by GNU Autoconf 2.64. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_version="\\
+REORDER plugin for ld config.status 0.1
+configured by $0, generated by GNU Autoconf 2.64,
+ with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h)
+ # Conflict between --help and --header
+ as_fn_error "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+ --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in SHELL \
+ECHO \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+AR \
+AR_FLAGS \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_wl \
+lt_prog_compiler_pic \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_flag_spec_ld \
+hardcode_libdir_separator \
+fix_srcfile_path \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'
+
+
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+
+ *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp=
+ trap 'exit_status=$?
+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\).*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\).*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+ || as_fn_error "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[ ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+ ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_t"; then
+ break
+ elif $ac_last_try; then
+ as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any. Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[ ]*#[ ]*define[ ][ ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ for (key in D) D_is_set[key] = 1
+ FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+ line = \$ 0
+ split(line, arg, " ")
+ if (arg[1] == "#") {
+ defundef = arg[2]
+ mac1 = arg[3]
+ } else {
+ defundef = substr(arg[1], 2)
+ mac1 = arg[2]
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
+ prefix = substr(line, 1, index(line, defundef) - 1)
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+ # Replace #undef with comments. This is necessary, for example,
+ # in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+ if (defundef == "undef") {
+ print "/*", prefix defundef, macro, "*/"
+ next
+ }
+ }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ as_fn_error "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$tmp/stdin" \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&2;}
+
+ rm -f "$tmp/stdin"
+ case $ac_file in
+ -) cat "$tmp/out" && rm -f "$tmp/out";;
+ *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+ ;;
+ :H)
+ #
+ # CONFIG_HEADER
+ #
+ if test x"$ac_file" != x-; then
+ {
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+ } >"$tmp/config.h" \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+ if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ rm -f "$ac_file"
+ mv "$tmp/config.h" "$ac_file" \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+ fi
+ else
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+ || as_fn_error "could not create -" "$LINENO" 5
+ fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$_am_arg" : 'X\(//\)[^/]' \| \
+ X"$_am_arg" : 'X\(//\)$' \| \
+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+ "libtool":C)
+
+ # See if we are running on zsh, and set the options which allow our
+ # commands through without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+# Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags=""
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking. This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+_LT_EOF
+ ;;
+ esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ case $xsi_shell in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+ func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+ # positional parameters, so assign one to ordinary parameter first.
+ func_stripname_result=${3}
+ func_stripname_result=${func_stripname_result#"${1}"}
+ func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=${1%%=*}
+ func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ case ${1} in
+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+ *) func_lo2o_result=${1} ;;
+ esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=$(( $* ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=${#1}
+}
+
+_LT_EOF
+ ;;
+ *) # Bourne compatible functions.
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ # Extract subdirectory from the argument.
+ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+}
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+ esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[^=]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+ func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=`expr "$@"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$1+=\$2"
+}
+_LT_EOF
+ ;;
+ *)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$1=\$$1\$2"
+}
+
+_LT_EOF
+ ;;
+ esac
+
+
+ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+ ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit $?
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/gcc-4.6/function_reordering_plugin/configure.ac b/gcc-4.6/function_reordering_plugin/configure.ac
new file mode 100644
index 000000000..9e3f4b59c
--- /dev/null
+++ b/gcc-4.6/function_reordering_plugin/configure.ac
@@ -0,0 +1,14 @@
+AC_PREREQ(2.64)
+AC_INIT([REORDER plugin for ld], 0.1,,[function_reordering_plugin])
+AC_CANONICAL_SYSTEM
+GCC_TOPLEV_SUBDIRS
+AM_INIT_AUTOMAKE([foreign no-dist])
+AM_MAINTAINER_MODE
+AC_PROG_CC
+AC_SYS_LARGEFILE
+AM_PROG_LIBTOOL
+ACX_LT_HOST_FLAGS
+AC_SUBST(target_noncanonical)
+AC_CONFIG_FILES(Makefile)
+AC_CONFIG_HEADERS(config.h)
+AC_OUTPUT
diff --git a/gcc-4.6/function_reordering_plugin/function_reordering_plugin.c b/gcc-4.6/function_reordering_plugin/function_reordering_plugin.c
new file mode 100644
index 000000000..d5710c581
--- /dev/null
+++ b/gcc-4.6/function_reordering_plugin/function_reordering_plugin.c
@@ -0,0 +1,248 @@
+/* Function re-ordering plugin for gold.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+ Contributed by Sriraman Tallam (tmsriram@google.com).
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+/* This plugin should be invoked only when callgraph edge profile
+ information is available in the object files generated using the
+ compiler flag -fcallgraph-profiles-sections. The callgraph edge
+ profiles are stored in special sections marked .gnu.callgraph.*
+
+ This plugin reads the callgraph sections and constructs an annotated
+ callgraph. It then repeatedly groups sections that are connected by
+ hot edges and passes the new function layout to the linker. The
+ layout is based on the procedure reordering algorithm described
+ in the paper :
+
+ "Profile guided code positioning", K. Pettis, R. Hansen
+ Proceedings of PLDI 1990.
+
+ This plugin dumps the final layout order of the functions in a file
+ called "final_layout.txt". To change the output file, pass the new
+ file name with --plugin-opt. To dump to stderr instead, just pass
+ stderr to --plugin-opt. */
+
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <string.h>
+#include <elf.h>
+#include "config.h"
+#include "plugin-api.h"
+#include "callgraph.h"
+
+enum ld_plugin_status claim_file_hook (const struct ld_plugin_input_file *file,
+ int *claimed);
+enum ld_plugin_status all_symbols_read_hook ();
+
+static ld_plugin_get_input_section_count get_input_section_count = NULL;
+static ld_plugin_get_input_section_type get_input_section_type = NULL;
+static ld_plugin_get_input_section_name get_input_section_name = NULL;
+static ld_plugin_get_input_section_contents get_input_section_contents = NULL;
+static ld_plugin_update_section_order update_section_order = NULL;
+static ld_plugin_allow_section_ordering allow_section_ordering = NULL;
+
+/* The file where the final function order will be stored.
+ It is "./final_layout.txt". It can be changed by passing
+ new name to --plugin-opt */
+
+char *out_file = "./final_layout.txt";
+
+int is_api_exist = 0;
+
+/* Copies new output file name out_file */
+void get_filename (const char *name)
+{
+ if (strcmp (name, "stderr") == 0)
+ {
+ out_file = NULL;
+ return;
+ }
+ out_file = (char *) malloc (strlen (name) + 1);
+ strcpy (out_file, name);
+}
+
+/* Plugin entry point. */
+enum ld_plugin_status
+onload (struct ld_plugin_tv *tv)
+{
+ struct ld_plugin_tv *entry;
+ for (entry = tv; entry->tv_tag != LDPT_NULL; ++entry)
+ {
+ switch (entry->tv_tag)
+ {
+ case LDPT_API_VERSION:
+ break;
+ case LDPT_GOLD_VERSION:
+ break;
+ case LDPT_OPTION:
+ get_filename (entry->tv_u.tv_string);
+ break;
+ case LDPT_REGISTER_CLAIM_FILE_HOOK:
+ assert ((*entry->tv_u.tv_register_claim_file) (claim_file_hook) == LDPS_OK);
+ break;
+ case LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK:
+ assert ((*entry->tv_u.tv_register_all_symbols_read) (all_symbols_read_hook)
+ == LDPS_OK);
+ break;
+ case LDPT_GET_INPUT_SECTION_COUNT:
+ get_input_section_count = *entry->tv_u.tv_get_input_section_count;
+ break;
+ case LDPT_GET_INPUT_SECTION_TYPE:
+ get_input_section_type = *entry->tv_u.tv_get_input_section_type;
+ break;
+ case LDPT_GET_INPUT_SECTION_NAME:
+ get_input_section_name = *entry->tv_u.tv_get_input_section_name;
+ break;
+ case LDPT_GET_INPUT_SECTION_CONTENTS:
+ get_input_section_contents = *entry->tv_u.tv_get_input_section_contents;
+ break;
+ case LDPT_UPDATE_SECTION_ORDER:
+ update_section_order = *entry->tv_u.tv_update_section_order;
+ break;
+ case LDPT_ALLOW_SECTION_ORDERING:
+ allow_section_ordering = *entry->tv_u.tv_allow_section_ordering;
+ break;
+ default:
+ break;
+ }
+ }
+
+ if (get_input_section_count != NULL
+ && get_input_section_type != NULL
+ && get_input_section_name != NULL
+ && get_input_section_contents != NULL
+ && update_section_order != NULL
+ && allow_section_ordering != NULL)
+ is_api_exist = 1;
+
+ return LDPS_OK;
+}
+
+static int is_ordering_specified = 0;
+
+/* This function is called by the linker for every new object it encounters. */
+
+enum ld_plugin_status
+claim_file_hook (const struct ld_plugin_input_file *file, int *claimed)
+{
+ unsigned int count = 0;
+ struct ld_plugin_section section;
+ unsigned int shndx;
+
+ (void) claimed;
+
+ /* Silently return if the plugin APIs are not supported. */
+ if (!is_api_exist)
+ return LDPS_OK;
+
+ if (is_ordering_specified == 0)
+ {
+ /* Inform the linker to prepare for section reordering. */
+ (*allow_section_ordering) ();
+ is_ordering_specified = 1;
+ }
+
+ (*get_input_section_count) (file->handle, &count);
+
+ for (shndx = 0; shndx < count; ++shndx)
+ {
+ unsigned int type = SHT_NULL;
+ char *name = NULL;
+
+ section.handle = file->handle;
+ section.shndx = shndx;
+ (*get_input_section_type) (section, &type);
+
+ (*get_input_section_name) (section, &name);
+ if (type == SHT_PROGBITS && is_prefix_of (".text.", name))
+ {
+ map_section_name_to_index (name, file->handle, shndx);
+ }
+ else if (is_prefix_of (".gnu.callgraph.text", name))
+ {
+ /* Process callgraph sections. */
+ unsigned char *section_contents_ptr = NULL;
+ size_t length;
+ (*get_input_section_contents) (section,
+ (const unsigned char **)&section_contents_ptr,
+ &length);
+ unsigned char *section_contents;
+ section_contents = (unsigned char *) malloc (length);
+ memcpy (section_contents, section_contents_ptr, length);
+ parse_callgraph_section_contents (section_contents, (unsigned int)length);
+ }
+ else if (name != NULL)
+ free (name);
+ }
+
+ return LDPS_OK;
+}
+
+/* This function is called by the linker after all the symbols have been read.
+ At this stage, it is fine to tell the linker the desired function order. */
+
+enum ld_plugin_status
+all_symbols_read_hook (void)
+{
+ unsigned int num_entries;
+ unsigned int i;
+ struct ld_plugin_section *section_list;
+ void **handles;
+ unsigned int *shndx;
+ FILE *fp;
+
+ /* Silently return if the plugin APIs are not supported. */
+ if (!is_api_exist)
+ return LDPS_OK;
+
+ if (is_callgraph_empty ())
+ return LDPS_OK;
+
+ /* Open the file to write the final layout */
+ if (out_file == NULL)
+ fp = stderr;
+ else
+ fp = fopen (out_file, "w");
+
+ fprintf (fp, "# Remove lines starting with \'#\' to"
+ " pass to --section-ordering-file\n");
+ fprintf (fp, "# Lines starting with \'#\' are the edge profiles\n");
+
+ find_pettis_hansen_function_layout (fp);
+ num_entries = get_layout (fp, &handles, &shndx);
+ section_list = (struct ld_plugin_section *)
+ malloc (num_entries * sizeof (struct ld_plugin_section));
+ for (i = 0; i < num_entries; i++)
+ {
+ section_list[i].handle = handles[i];
+ section_list[i].shndx = shndx[i];
+ }
+
+ if (out_file != NULL)
+ fclose (fp);
+ /* Pass the new order of functions to the linker. */
+ update_section_order (section_list, num_entries);
+ free (section_list);
+ free (handles);
+ free (shndx);
+ cleanup ();
+ return LDPS_OK;
+}
diff --git a/gcc-4.6/gcc/ChangeLog b/gcc-4.6/gcc/ChangeLog
index fbb22be69..3437317c7 100644
--- a/gcc-4.6/gcc/ChangeLog
+++ b/gcc-4.6/gcc/ChangeLog
@@ -1,18 +1,1114 @@
-2011-08-08 Martin Jambor <mjambor@suse.cz>
+2012-01-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ Backport from mainline
+ 2012-01-06 Arnaud Charlet <charlet@adacore.com>
+
+ * c-decl.c (ext_block): Moved up.
+ (collect_all_refs, for_each_global_decl): Take ext_block into account.
+
+2012-01-06 Richard Sandiford <richard.sandiford@linaro.org>
+
+ PR middle-end/48660
+ * expr.h (copy_blkmode_to_reg): Declare.
+ * expr.c (copy_blkmode_to_reg): New function.
+ (expand_assignment): Don't expand register RESULT_DECLs before
+ the lhs. Use copy_blkmode_to_reg to copy BLKmode values into a
+ RESULT_DECL register.
+ (expand_expr_real_1): Handle BLKmode decls when looking for promotion.
+
+2012-01-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR tree-optimization/51315
+ * tree-sra.c (tree_non_aligned_mem_for_access_p): New predicate.
+ (build_accesses_from_assign): Use it instead of tree_non_aligned_mem_p.
+
+2012-01-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR tree-optimization/51624
+ * tree-sra.c (build_ref_for_model): When replicating a chain of
+ COMPONENT_REFs, stop as soon as the offset would become negative.
+
+2012-01-04 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/49651
+ * tree-ssa-structalias.c (type_can_have_subvars): New function.
+ (var_can_have_subvars): Use it.
+ (get_constraint_for_1): Only consider subfields if there
+ can be any.
+
+2012-01-03 Sandra Loosemore <sandra@codesourcery.com>
+
+ Backport from mainline:
+ 2012-01-02 Sandra Loosemore <sandra@codesourcery.com>
+
+ * doc/invoke.texi (-flto and related options): Copy-edit.
+
+2012-01-03 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-11-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/51042
+ * tree-ssa-pre.c (phi_translate_1): Avoid recursing on
+ self-referential expressions. Refactor code to avoid duplication.
+
+2012-01-03 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/51070
+ * tree-loop-distribution.c (generate_builtin): Do not replace
+ the loop with a builtin if the partition contains statements which
+ results are used outside of the loop.
+ (stmt_has_scalar_dependences_outside_loop): Properly handle calls.
+
+2011-12-30 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Backport from the mainline
+ 2011-12-30 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ * config/rs6000/rs6000.c (rs6000_inner_target_options): Fix thinko
+ in setting options via target #pragma or attribute.
+
+2011-12-28 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Backport from mainline
+ 2011-12-28 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/51623
+ * config/rs6000/rs6000.c (rs6000_assemble_integer): Don't call
+ unlikely_text_section_p. Instead check for being in a code
+ section.
+
+2011-12-23 Richard Guenther <rguenther@suse.de>
+
+ PR rtl-optimization/50396
+ * simplify-rtx.c (simplify_binary_operation_1): Properly
+ guard code that only works for integers.
+
+2011-12-22 Doug Kwan <dougkwan@google.com>
+
+ Backport from mainline
+ 2011-03-23 Julian Brown <julian@codesourcery.com>
+
+ * expr.c (expand_expr_real_1): Only use BLKmode for volatile
+ accesses which are not naturally aligned.
+
+ 2011-11-20 Joey Ye <joey.ye@arm.com>
+
+ * expr.c (expand_expr_real_1): Correctly handle strict volatile
+ bitfield loads smaller than mode size.
+
+2011-12-21 Richard Earnshaw <rearnsha@arm.com>
+
+ PR target/51643
+ * arm.c (arm_function_ok_for_sibcall): Use DECL_WEAK in previous
+ change.
+
+2011-12-21 Richard Earnshaw <rearnsha@arm.com>
+
+ PR target/51643
+ * arm.c (arm_function_ok_for_sibcall): Don't try to tailcall a
+ weak function on bare-metal EABI targets.
+
+2011-12-21 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2011-12-21 Richard Guenther <rguenther@suse.de>
+
+ PR lto/41159
+ * tree-outof-ssa.c (insert_value_copy_on_edge): Use the
+ mode of the pseudo as destination mode. Only assert that
+ is equal to the promoted mode of the decl if it is a REG.
+
+2011-12-21 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/alpha/linux-unwind.h: Update copyright years.
+ (MD_FROB_UPDATE_CONTEXT): New define.
+ (alpha_frob_update_context): New function.
+
+2011-12-19 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/51583
+ * tree-sra.c (load_assign_lhs_subreplacements): Call
+ force_gimple_operand_gsi when necessary also in case of no
+ corresponding replacement on the RHS.
+
+2011-12-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/sparc/sparc.md (UNSPEC_FRAME_BLOCKAGE): New constant.
+ (frame_blockage): New expander.
+ (frame_blockage<P:mode>): New instruction.
+ * config/sparc/sparc.c (sparc_expand_prologue): When the sequence of
+ instructions establishing the frame isn't atomic, emit frame blockage.
+
+2011-12-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ Backport from mainline.
+ 2011-10-28 Chung-Lin Tang <cltang@codesourcery.com>
+
+ PR rtl-optimization/49720
+ * simplify-rtx.c (simplify_relational_operation_1): Detect
+ infinite recursion condition in "(eq/ne (plus x cst1) cst2)
+ simplifies to (eq/ne x (cst2 - cst1))" case.
+
+2011-12-15 Andreas Tobler <andreast@fgznet.ch>
+
+ Backport from mainline.
+ 2011-12-15 Andreas Tobler <andreast@fgznet.ch>
+
+ * config/i386/freebsd.h (TARGET_ASM_FILE_END): Define.
+
+2011-12-13 Eric Botcazou <ebotcazou@adacore.com>
+
+ * lto-streamer-out.c (write_symbol): Use proper 64-bit host type.
+ * lto-cgraph.c (input_cgraph_opt_section): Use 'int' for offsets.
+ * lto-streamer-in.c (lto_read_body): Likewise.
+ (lto_input_toplevel_asms): Likewise.
+ * lto-section-in.c (lto_create_simple_input_block): Likewise.
+ * lto-opts.c (lto_read_file_options): Likewise.
+ * ipa-prop.c (ipa_prop_read_section): Likewise.
+
+ * df.h (DF_NOTE): Fix typo in comment.
+
+2011-12-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * regmove.c (fixup_match_2): Only access call_used_regs with hard
+ regs.
+
+2011-12-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/51510
+ * calls.c (internal_arg_pointer_based_exp_scan): Don't use
+ VEC_safe_grow_cleared if idx is smaller than VEC_length.
+
+ Backported from mainline
+ 2011-12-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/51485
+ * tree-vect-data-refs.c (vect_analyze_data_refs): Give up on
+ DRs in call stmts.
+
+2011-12-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR tree-optimization/50569
+ * tree-sra.c (build_ref_for_model): Replicate a chain of COMPONENT_REFs
+ in the expression of MODEL instead of just the last one.
+
+2011-12-09 Michael Meissner <meissner@the-meissners.org>
+
+ Backport from mainline
+ 2011-12-09 Michael Meissner <meissner@the-meissners.org>
+
+ PR rtl-optimization/51469
+ * varasm.c (default_binds_local_p_1): If the symbol is a gnu
+ indirect function, mark the symbol as non-local.
+
+2011-12-09 Jakub Jelinek <jakub@redhat.com>
+
+ Backport from mainline
+ 2011-12-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/51466
+ * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also copy
+ TREE_SIDE_EFFECTS.
+
+ 2011-11-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/50078
+ * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Copy over
+ TREE_THIS_VOLATILE also from the old to new lhs resp. rhs.
+
+2011-12-09 Kazu Hirata <kazu@codesourcery.com>
+
+ Backport from mainline:
+
+ 2011-12-05 Kazu Hirata <kazu@codesourcery.com>
+
+ PR target/51408
+ * config/arm/arm.md (*minmax_arithsi): Always require the else
+ clause in the MINUS case.
+
+2011-12-08 Teresa Johnson <tejohnson@google.com>
+
+ Backport from mainline:
+
+ 2011-08-05 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (*movdi_internal_rex64): Use "!o" constraint
+ instead of "!m" for operand 0, alternative 4.
+ (*movdf_internal_rex64): Ditto for operand 0, alernative 6.
+
+2011-12-08 Jakub Jelinek <jakub@redhat.com>
+
+ Backport from mainline
+ 2011-12-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/51410
+ * c-decl.c (pop_scope): Don't add DECL_EXTERNAL decls
+ for debug info if scope is file_scope.
+
+ PR c/51339
+ * c-decl.c (c_finish_incomplete_decl, finish_decl): Call
+ relayout_decl instead of layout_decl.
+
+ 2011-12-05 Jakub Jelinek <jakub@redhat.com>
+ Eric Botcazou <ebotcazou@adacore.com>
+
+ PR middle-end/51323
+ PR middle-end/50074
+ * calls.c (internal_arg_pointer_exp_state): New variable.
+ (internal_arg_pointer_based_exp_1,
+ internal_arg_pointer_exp_scan): New functions.
+ (internal_arg_pointer_based_exp): New function.
+ (mem_overlaps_already_clobbered_arg_p): Use it.
+ (expand_call): Free internal_arg_pointer_exp_state.cache vector
+ and clear internal_arg_pointer_exp_state.scan_start.
+
+ 2011-11-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/48721
+ * sched-deps.c (sched_analyze_insn): For SIBLING_CALL_P set
+ reg_pending_barrier to TRUE_BARRIER.
+
+ 2011-11-26 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ PR middle-end/50074
+ * calls.c (mem_overlaps_already_clobbered_arg_p):
+ Return false if no outgoing arguments have been stored so far.
+
+2011-12-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR tree-optimization/51315
+ * tree-sra.c (tree_non_mode_aligned_mem_p): Rename to...
+ (tree_non_aligned_mem_p): ...this. Add ALIGN parameter. Look into
+ MEM_REFs and use get_object_or_type_alignment for them.
+ (build_accesses_from_assign): Adjust for above change.
+ (access_precludes_ipa_sra_p): Likewise.
+
+2011-12-06 Martin Jambor <mjambor@suse.cz>
+
+ Backport from mainline:
+
+ 2011-12-02 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/50622
+ * tree-sra.c (load_assign_lhs_subreplacements): Force gimple operand
+ if both lacc and racc are grp_partial_lhs.
+
+2011-12-06 Iain Sandoe <iains@gcc.gnu.org>
+
+ * config/rs6000/rs6000.c (darwin_rs6000_override_options): Initialize
+ rs6000_current_abi.
+
+2011-12-06 Alan Modra <amodra@gmail.com>
+
+ PR target/50906
+ * config/rs6000/rs6000.c (rs6000_emit_prologue <TARGET_SPE_ABI>):
+ Do not mark r11 setup as frame-related. Pass correct offset to
+ rs6000_emit_savres_rtx. Correct out-of-line rs6000_frame_related
+ arguments. Correct sp_offset. Remove "offset" fudge from
+ in-line rs6000_frame_related call. Rename misleading variable.
+ Fix comments and whitespace. Tidy some expressions.
+ (rs6000_emit_epilogue <TARGET_SPE_ABI>): Always set frame_reg_rtx
+ to r11 in out-of-line case. Correct sp_offset. Pass correct
+ offset to rs6000_emit_savres_rtx. Rename misleading variable.
+ Fix comments and whitespace. Tidy some expressions.
+ (rs6000_emit_epilogue <non-TARGET_SPE_ABI>): Add sp_offset
+ adjustment when !saving_GPRs_inline. Correct register mode
+ used in address calcs.
+ (rs6000_emit_epilogue <non-TARGET_SPE_ABI>): Similarly when
+ !restoring_GPRs_inline.
+
+2011-12-04 Jérémie Detrey <Jeremie.Detrey@loria.fr>
+
+ PR target/51393
+ * config/i386/avxintrin.h (_mm256_insert_epi64): Declare second
+ parameter as long long.
+
+2011-12-02 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/51002
+ PR target/51345
+ * config/avr/libgcc.S (__prologue_saves__, __epilogue_restores__):
+ Enclose parts using __SP_H__ in !defined (__AVR_HAVE_8BIT_SP__).
+ Add FIXME comments.
+ * config/avr/avr.md (movhi_sp_r_irq_off, movhi_sp_r_irq_on): Set
+ insn condition to !AVR_HAVE_8BIT_SP.
+ * config/avr/avr.c (output_movhi): "clr%B0" instead of "in
+ %B0,__SP_H__" if AVR_HAVE_8BIT_SP.
+ (avr_file_start): Only print "__SP_H__ = 0x3e" if !AVR_HAVE_8BIT_SP.
+ * config/avr/avr-devices.c (avr_mcu_types): ATtiny4313 and
+ AT86RF401 have a 16-bit SP (their manual is bogus).
+
+2011-11-25 Richard Sandiford <richard.sandiford@linaro.org>
+
+ Backport from mainline:
+
+ 2011-03-29 Richard Sandiford <richard.sandiford@linaro.org>
+
+ PR debug/48190
+ * dwarf2out.c (dw_loc_list_node): Add resolved_addr and replaced.
+ (cached_dw_loc_list_def): New structure.
+ (cached_dw_loc_list): New typedef.
+ (cached_dw_loc_list_table): New variable.
+ (cached_dw_loc_list_table_hash): New function.
+ (cached_dw_loc_list_table_eq): Likewise.
+ (add_location_or_const_value_attribute): Take a bool cache_p.
+ Cache the list when the parameter is true.
+ (gen_formal_parameter_die): Update caller.
+ (gen_variable_die): Likewise.
+ (dwarf2out_finish): Likewise.
+ (dwarf2out_abstract_function): Nullify cached_dw_loc_list_table
+ while generating debug info for the decl.
+ (dwarf2out_function_decl): Clear cached_dw_loc_list_table.
+ (dwarf2out_init): Initialize cached_dw_loc_list_table.
+ (resolve_addr): Cache the result of resolving a chain of
+ location lists.
+
+2011-11-24 Enkovich Ilya <ilya.enkovich@intel.com>
+
+ PR target/51287
+ * i386.c (distance_non_agu_define): Fix insn attr check.
+
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure: Regenerate.
+
+2011-11-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR rtl-optimization/51187
+ * reorg.c (relax_delay_slots): Do not consider a jump useless if there
+ is a barrier between the jump and its target label.
+
+2011-11-19 Richard Earnshaw <rearnsha@arm.com>
+
+ PR target/50493
+ * config/arm/arm.c (neon_disambiguate_copy): Correctly handle partial
+ overlap of src and dest operands.
+
+2011-11-18 Iain Sandoe <iains@gcc.gnu.org>
+
+ PR target/49992
+ * configure.ac: Remove ranlib special-casing for Darwin.
+ * configure: Regenerate.
+
+2011-11-16 Richard Earnshaw <rearnsha@arm.com>
+ Bernd Schmidt <bernds@coudesourcery.com>
+ Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ PR target/49641
+ * config/arm/arm.c (store_multiple_sequence): Avoid cases where
+ the base reg is stored iff compiling for Thumb1.
+
+2011-11-13 Iain Sandoe <iains@gcc.gnu.org>
+
+ PR target/48108
+ Backport from mainline r180523
+ * config/darwin.c (top level): Amend comments concerning LTO output.
+ (lto_section_num): New variable. (darwin_lto_section_e): New GTY.
+ (LTO_SECTS_SECTION, LTO_INDEX_SECTION): New.
+ (LTO_NAMES_SECTION): Rename.
+ (darwin_asm_named_section): Record LTO section counts and switches
+ in a vec of darwin_lto_section_e.
+ (darwin_file_start): Remove unused code.
+ (darwin_file_end): Put an LTO section termination label. Handle
+ output of the wrapped LTO sections, index and names table.
+
+2011-11-12 Iain Sandoe <iains@gcc.gnu.org>
+
+ PR target/45233
+ * config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
+ Only expand a symbol ref. into an access when the entity is defined
+ in the TU.
+
+2011-11-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/51077
+ * tree-object-size.c (addr_object_size): Check TREE_CODE of
+ MEM_REF's operand rather than code of the MEM_REF itself.
+
+2011-11-07 Alan Modra <amodra@gmail.com>
+
+ PR target/30282
+ * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Always emit
+ blockage for ABI_V4.
+
+2011-11-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR c++/50608
+ * c-parser.c (c_parser_postfix_expression) <RID_OFFSETOF>: Adjust call
+ to fold_offsetof.
+ * c-typeck.c (build_unary_op) <ADDR_EXPR>: Call fold_offsetof_1.
+
+2011-11-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/50979
+ * config/sparc/sparc.h (ASM_CPU_SPEC): Pass -Av8 if -mcpu=v8.
+
+2011-11-03 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (lround<X87MODEF:mode><SWI248x:mode>2,
+ rint<mode>2, floor<mode>2, lfloor<MODEF:mode><SWI48:mode>2,
+ btrunc<mode>2, lwp_lwpval<mode>3): Use operands[N] instead of operandN.
+
+2011-11-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/50945
+ * config/sparc/sparc.md (movsf_insn): Reindent constraints.
+ (movsf_insn_no_fpu): Likewise.
+ (movdf_insn_sp32): Likewise.
+ (movdf_insn_sp32_no_fpu): Likewise.
+ (movdf_insn_sp32_v9): Likewise. Remove redundant GY constraint.
+ (movdf_insn_sp32_v9_no_fpu): Likewise.
+ (movdf_insn_sp64): Likewise.
+ (movdf_insn_sp64_no_fpu): Likewise.
+ (movtf_insn_sp32): Likewise.
+ (movtf_insn_sp32_no_fpu): Likewise.
+ (movtf_insn_sp64): Likewise.
+ (movtf_insn_sp64_hq): Likewise.
+ (movtf_insn_sp64_no_fpu): Likewise.
+
+2011-11-02 Bernd Schmidt <bernds@codesourcery.com>
+
+ * cfgcleanup.c (try_head_merge_bb): If get_condition returns
+ NULL for a jump that is a cc0 insn, pick the previous insn for
+ move_before.
+
+2011-11-01 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (splitters for int-float conversion): Use
+ SUBREG_REG on SUBREGs in splitter constraints.
+
+2011-11-01 Julian Brown <julian@codesourcery.com>
+
+ PR rtl-optimization/47918
+ * reload1.c (set_initial_label_offsets): Use initial offsets
+ for labels on the nonlocal_goto_handler_labels chain.
+
+2011-10-29 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR target/50691
+ * config/pa/pa.c (emit_move_sequence): Legitimize TLS symbol references.
+ * config/pa/pa.h (LEGITIMATE_CONSTANT_P): Return false for
+ TLS_MODEL_GLOBAL_DYNAMIC and TLS_MODEL_LOCAL_DYNAMIC symbol references.
+
+2011-10-27 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50875
+ * config/i386/sse.md (*avx_unpcklpd256): Remove extra insn
+ constraints. Change alternative 1 to "x,m,1".
+
+2011-10-26 Jakub Jelinek <jakub@redhat.com>
+
+ * BASE-VER: Set to 4.6.3.
+ * DEV-PHASE: Set to prerelease.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-10-25 Kai Tietz <ktietz@redhat.com>
+
+ * config/i386/mingw32.h (SUBTARGET_FRAME_POINTER_REQUIRED):
+ Use for 32-bit frame-pointer, if setjmp is used.
+
+2011-10-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/50816
+ * dwarf2out.c (dwarf2out_source_line): Emit discriminators only if
+ -gdwarf-4 or not -gstrict-dwarf.
+
+2011-10-24 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/49824
+ Backport from mainline r180385
+ * doc/extend.texi (Declaring Attributes of Functions):
+ Document OS_main and OS_task attributes.
+ (Specifying Attributes of Variables): Move up
+ subsection "AVR Variable Attributes" as of alphabetical order.
+
+2011-10-24 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/50820
+ * doc/invoke.texi (AVR Options): New subsubsection to explain EIND
+ handling and indirect jump/calls on devices > 128k.
+
+2011-10-23 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50788
+ * config/i386/sse.md (avx_maskload<ssemodesuffix><avxmodesuffix>):
+ Remove (match_dup 0).
+
+2011-10-21 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/50820
+ Backport from Mainline r180299.
+ * config/avr/libgcc.S (__EIND__): New define to 0x3C.
+ (__tablejump__): Consistently use EIND for indirect jump/call.
+ (__tablejump_elpm__): Ditto.
+
+2011-10-20 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+
+ PR target/50106
+ Backport from mainline.
+ 2011-10-20 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+
+ * config/arm/arm.c (thumb_unexpanded_epilogue): Handle return
+ reg size from 1-3.
+
+2011-10-19 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf2out.c (loc_descriptor): For SUBREG pass SUBREG_REG's mode as
+ second argument instead of mode.
+
+ PR target/50350
+ Backport from mainline
+ 2011-09-27 Richard Sandiford <rdsandiford@googlemail.com>
+
+ PR middle-end/50386
+ PR middle-end/50326
+ * tree-sra.c (build_ref_for_model): Use the type of the field as
+ the type of the COMPONENT_REF.
+
+2011-10-18 Uros Bizjak <ubizjak@gmail.com>
+ Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/50737
+ * config/alpha/linux-unwind.h (alpha_fallback_frame_state): Set
+ fs->signal_frame to 1.
+
+2011-10-14 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-10-14 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50723
+ * ipa-split.c (split_function): Use GSI_CONTINUE_LINKING.
+
+ 2011-10-13 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50712
+ * ipa-split.c (split_function): Always re-gimplify parameters
+ when they are not gimple vals before passing them. Properly
+ check for type compatibility.
+
+2011-10-13 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/invoke.texi (SPARC options): Document -mfix-at697f.
+ * config/sparc/sparc.opt (mfix-at697f): New option.
+ * config/sparc/sparc.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
+ (sparc_reorg): New function.
+
+2011-10-12 Steve Ellcey <sje@cup.hp.com>
+
+ PR target/49967
+ Backport from Mainline 179472.
+ * configure.ac (gcc_cv_ld_static_dynamic): Define for *-*-hpux*.
+ (gcc_cv_ld_static_option): Ditto.
+ (gcc_cv_ld_dynamic_option): Ditto.
+ * configure: Regenerate.
+
+2011-10-12 Paul Koning <pkoning@gcc.gnu.org>
+
+ PR tree-optimization/50189
+ * tree-vrp.c (extract_range_from_assert): Use the type of
+ the variable, not the limit.
+
+2011-10-12 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50700
+ * tree-object-size.c (addr_object_size): Simplify and treat
+ MEM_REF bases consistently.
+
+2011-10-12 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/50565
+ * convert.c (convert_to_integer): Do not narrow operands of
+ pointer subtraction.
+
+2011-10-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/49965
+ * config/sparc/sparc.md (mov<I:mode>cc): Do not save comparison code.
+ (mov<F:mode>cc): Likewise.
+
+2011-10-11 Nick Clifton <nickc@redhat.com>
+
+ PR middle-end/49801
+ * compare-elim.c (find_comparisons_in_bb): Use df_get_live_in and
+ df_get_live_out instead of accessing the bitmaps directly.
+ (execute_compare_elim_after_reload): Remove calls to df_set_flags,
+ df_live_add_problem and df_analyze.
+
+2011-10-10 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/50652
+ Backport from Mainline r179737.
+ * config/avr/avr-devices.c (avr_mcu_types): Set
+ .data_section_start of atmega164a to 0x100.
+
+2011-10-07 Bernd Schmidt <bernds@codesourcery.com>
+
+ PR target/49049
+ * config/arm/arm.md (arm_subsi3_insn): Lose the last alternative.
+
+2011-10-06 Jakub Jelinek <jakub@redhat.com>
+
+ * tree.h (avoid_folding_inline_builtin): New prototype.
+ * builtins.c (avoid_folding_inline_builtin): No longer static.
+ * gimple-fold.c (gimple_fold_builtin): Give up if
+ avoid_folding_inline_builtin returns true.
+
+ PR tree-optimization/49279
+ * tree-ssa-structalias.c (find_func_aliases): Don't handle
+ CAST_RESTRICT.
+
+2011-10-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * longlong.h (smul_ppmm, sdiv_qrnnd): Add underscores to the local
+ variables. Fix second operand of DR. Swap inputs for sdiv_qrnnd.
+
+2011-10-03 Jakub Jelinek <jakub@redhat.com>
+ Ian Lance Taylor <iant@google.com>
+
+ * godump.c (go_output_typedef): Support printing enum values that
+ don't fit in a signed HOST_WIDE_INT.
+
+2011-09-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR inline-asm/50571
+ * gimple-fold.c (fold_stmt_1) <case GIMPLE_ASM>: If
+ input constraints allow mem and not reg, pass true instead of
+ false as second argument to maybe_fold_reference.
+
+2011-09-30 Jakub Jelinek <jakub@redhat.com>
+ Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-alias.c (call_may_clobber_ref_p_1): Fix
+ handling of BUILT_IN_STRNCAT.
+ (ref_maybe_used_by_call_p_1): Fix handling of BUILT_IN_STRCAT,
+ and BUILT_IN_STRNCAT.
+
+2011-09-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
+
+ * graphite-scop-detection.c (make_close_phi_nodes_unique): New
+ forward declaration.
+ (remove_duplicate_close_phi): Detect and repair creation of
+ duplicate close-phis for a containing loop.
+
+2011-09-26 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50472
+ * tree-ssa-ccp.c (fold_const_aggregate_ref): Do not fold
+ volatile references.
+
+2011-09-25 Ira Rosen <ira.rosen@linaro.org>
+
+ PR tree-optimization/50413
+ * tree-vect-data-refs.c (vect_analyze_data_refs): Fail to vectorize
+ a basic block if one of its data-refs can't be analyzed.
+
+2011-09-25 Ira Rosen <ira.rosen@linaro.org>
+
+ PR tree-optimization/50412
+ * tree-vect-data-refs.c (vect_analyze_group_access): Fail for
+ accesses that require epilogue loop if vectorizing outer loop.
+
+2011-09-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50464
+ * config/i386/sse.md (xop_pcmov_<mode>): Change operand 1 predicate
+ to register_operand and operand 2 predicate to nonimmediate_operand.
+ (xop_pcmov_<mode>256): Ditto.
+ * config/i386/i386.c (ix86_expand_sse_movcc): When generating
+ xop_pcmov, force op_true to register. Also, force op_false to
+ register if it doesn't satisfy nonimmediate_operand predicate.
+
+2011-09-19 Alan Modra <amodra@gmail.com>
+ Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/50341
+ * config/rs6000/rs6000.md (call_indirect_aix32): Do not split the
+ load of the indirect function's TOC from the call to prevent the
+ compiler from moving the load of the new TOC above code that
+ references the current function's TOC.
+ (call_indirect_aix64): Ditto.
+ (call_value_indirect_aix32): Ditto.
+ (call_value_indirect_aix64): Ditto.
+ (call_indirect_nonlocal_aix32_internal): Ditto.
+ (call_indirect_nonlocal_aix32): Ditto.
+ (call_indirect_nonlocal_aix64_internal): Ditto.
+ (call_indirect_nonlocal_aix64): Ditto.
+ (call_value_indirect_nonlocal_aix32_internal): Ditto.
+ (call_value_indirect_nonlocal_aix32): Ditto.
+ (call_value_indirect_nonlocal_aix64_internal): Ditto.
+ (call_value_indirect_nonlocal_aix64): Ditto.
+
+2011-09-19 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/49886
+ * ipa-split.c (split_function): Do not change signature if it is
+ not possible or there are attribute types.
+
+2011-09-18 Eric Botcazou <ebotcazou@adacore.com>
+ Iain Sandoe <developer@sandoe-acoustics.co.uk>
+
+ PR target/50091
+ * config/rs6000/rs6000.md (probe_stack): Use explicit operand.
+ * config/rs6000/rs6000.c (output_probe_stack_range): Likewise.
+
+2011-09-14 Diego Novillo <dnovillo@google.com>
+
+ * tree-vect-stmts.c (vect_transform_stmt): Remove unused
+ local variable ORIG_SCALAR_STMT.
+
+2011-09-08 Martin Jambor <mjambor@suse.cz>
+
+ Backport from mainline
+ 2011-09-07 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/49911
+ * tree-sra.c (analyze_access_subtree): Change type of to-be-replaced
+ enumerations to the corresponding plain integer type.
+
+2011-09-08 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-07-04 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/49518
+ PR tree-optimization/49628
+ * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Skip
+ irrelevant data-references.
+
+2011-09-08 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-08-23 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50162
+ * tree-vect-stmts.c (vectorizable_call): Fix argument lookup.
+
+2011-09-08 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-05-05 Michael Matz <matz@suse.de>
+
+ * config/alpha/elf.h (ENDFILE_SPEC): Add Ofast.
+ * config/alpha/osf5.h (ENDFILE_SPEC): Add Ofast.
+ * config/alpha/netbsd.h (ENDFILE_SPEC): Add Ofast.
+ * config/sparc/linux.h (ENDFILE_SPEC): Add Ofast.
+ * config/sparc/sp64-elf.h (ENDFILE_SPEC): Add Ofast.
+ * config/sparc/sp-elf.h (ENDFILE_SPEC): Add Ofast.
+ * config/sparc/linux64.h (ENDFILE_SPEC): Add Ofast.
+ * config/sparc/freebsd.h (ENDFILE_SPEC): Add Ofast.
+ * config/sparc/sol2.h (ENDFILE_SPEC): Add Ofast.
+ * config/i386/cygwin.h (ENDFILE_SPEC): Add Ofast.
+ * config/i386/linux.h (ENDFILE_SPEC): Add Ofast.
+ * config/i386/linux64.h (ENDFILE_SPEC): Add Ofast.
+ * config/i386/darwin.h (ENDFILE_SPEC): Add Ofast.
+ * config/i386/mingw32.h (ENDFILE_SPEC): Add Ofast.
+ * config/ia64/linux.h (ENDFILE_SPEC): Add Ofast.
+ * config/mips/linux.h (ENDFILE_SPEC): Add Ofast.
+
+2011-09-08 Eric Botcazou <ebotcazou@adacore.com>
+ Iain Sandoe <iains@gcc.gnu.org>
+
+ Backport from mainline (restore powerpc-darwin Ada bootstrap).
+ * config/rs6000/rs6000.c (compute_save_world_info): Test
+ cfun->has_nonlocal_label to determine if the out-of-line save
+ world call may be used.
+
+2011-09-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/50310
+ * config/i386/i386.c (ix86_prepare_sse_fp_compare_args): Return
+ code early if TARGET_AVX.
+ (ix86_expand_fp_vcond): Handle LTGT and UNEQ.
+
+2011-09-06 Martin Jambor <mjambor@suse.cz>
+
+ Revert
+ 2011-09-02 Martin Jambor <mjambor@suse.cz>
+ PR middle-end/49886
+ * ipa-split.c (split_function): Do not skip any arguments if
+ can_change_signature is set or there are function type attributes.
+
+2011-09-05 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/50289
+ Backport from mainline r178528
+ * config/avr/avr.c (sequent_regs_live): Don't recognize sequences
+ that contain global register variable.
+
+2011-09-02 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/49886
+ * ipa-split.c (split_function): Do not skip any arguments if
+ can_change_signature is set or there are function type attributes.
+
+2011-09-01 Ira Rosen <ira.rosen@linaro.org>
+
+ PR tree-optimization/50178
+ * tree-vect-stmts.c (vectorizable_call): Update the related
+ pattern statement before deleting the original call.
+ (vect_transform_stmt): Don't expect the related pattern statement
+ to match the original statement after transformation.
+
+2011-08-29 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/50116
+ * varasm.c (decode_addr_const): Handle MEM_REF[&X, OFF].
+
+2011-08-27 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/sse.md (vec_extract_lo_<mode>): Prevent both
+ operands in memory.
+ (vec_extract_lo_v16hi): Ditto.
+ (*vec_extract_v4sf_mem): Add TARGET_SSE insn constraint.
+ * config/i386/i386.c (legitimize_tls_address): Change REG_EQIV
+ notes to REG_EQUAL.
+
+2011-08-27 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50202
+ * config/i386/sse.md (sse4_2_pcmpestr): Emit NOTE_INSN_DELETED note
+ when all outputs are unused.
+ (sse4_2_pcmpistr): Ditto.
+
+2011-08-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/50179
+ * c-typeck.c (c_process_expr_stmt): Skip over nops and
+ call mark_exp_read even if exprv is ADDR_EXPR.
+
+2011-08-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/48739
+ * tree-ssa.c: Include cfgloop.h.
+ (execute_update_addresses_taken): When updating ssa, if in
+ loop closed SSA form, call rewrite_into_loop_closed_ssa instead of
+ update_ssa.
+ * Makefile.in (tree-ssa.o): Depend on $(CFGLOOP_H).
+
+2011-08-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/50092
+ * config/i386/i386.c (assign_386_stack_local): Call validize_mem
+ on the result before returning it.
+
+2011-08-16 Liang Wang <lwang1@marvell.com>
+
+ * ggc.h (ggc_alloc_rtvec_sized): Change arguments of
+ ggc_alloc_zone_vec_rtvec_def.
+
+2011-08-12 Nick Clifton <nickc@redhat.com>
+
+ * builtins.c (expand_builtin_memcmp): Do not use cmpstrnsi
+ pattern.
+ * doc/md.texi (cmpstrn): Note that the comparison stops if both
+ fetched bytes are zero.
+ (cmpstr): Likewise.
+ (cmpmem): Note that the comparison does not stop if both of the
+ fetched bytes are zero.
+
+2011-08-11 Kazuhiro Inaoka <kazuhiro.inaoka.ud@renesas.com>
+
+ * config/rx/rx.md (movsicc): Allow register to register
+ transfers.
+ (*movsicc): Likewise.
+ (*stcc): Restrict this pattern to EQ and NE compares.
+ (*stcc_reg): New pattern. Works for any comparison but only for
+ register transfers.
+
+2011-08-10 DJ Delorie <dj@redhat.com>
+
+ * expr.c (expand_expr_addr_expr_1): Detect a user request for
+ a local frame in a naked function, and produce a suitable
+ error for that specific case.
+
+2011-08-09 Martin Jambor <mjambor@suse.cz>
PR middle-end/49923
* tree-sra.c (access_precludes_ipa_sra_p): Also check access
memory alignment.
-2011-05-11 Satoru Takabayashi <satorux@google.com>
- Paul Pluzhnikov <ppluzhnikov@google.com>
+2011-08-09 Nick Clifton <nickc@redhat.com>
+
+ * config/rx/rx.md: Disable extender peepholes at -O3.
+
+2011-08-06 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50001
+ * config/alpha/alpha.c (alpha_instantiate_decls): New function.
+ (TARGET_INSTANTIATE_DECLS): New define.
+
+2011-08-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ Backport from mainline
+ 2011-08-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/i386/i386.c (processor_alias_table): Add core-avx-i.
+
+ * doc/invoke.texi: Document core-avx-i.
+
+2011-08-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/49948
+ * gimple.c (walk_stmt_load_store_addr_ops): Walk CONSTRUCTOR elements.
+
+2011-08-02 Uros Bizjak <ubizjak@gmail.com>
+
+ * doc/md.texi (stack_protect_set): The pattern moves ptr_mode value.
+ (stack_protect_test): The pattern compares ptr_mode value.
+
+2011-07-31 Uros Bizjak <ubizjak@gmail.com>
- * gcc/doc/install.texi (Configuration): Document
- --with-linker-hash-style.
- * gcc/gcc.c (init_spec): Handle LINKER_HASH_STYLE.
- * gcc/config.in: Add LINKER_HASH_STYLE.
- * gcc/configure.ac: Add --with-linker-hash-style.
- * gcc/configure: Regenerate.
+ PR target/49920
+ * config/i386/i386.md (strset): Do not expand strset_singleop
+ when %eax or $edi are fixed.
+ (*strsetdi_rex_1): Disable when %eax or %edi are fixed.
+ (*strsetsi_1): Ditto.
+ (*strsethi_1): Ditto.
+ (*strsetqi_1): Ditto.
+ (*rep_stosdi_rex64): Disable when %eax, %ecx or %edi are fixed.
+ (*rep_stossi): Ditto.
+ (*rep_stosqi): Ditto.
+ (*strlenqi_1): Ditto.
+ (cmpstrnsi): Also fail when %ecx is fixed.
+ (*cmpstrnqi_nz_1): Disable when %ecx, %esi or %edi are fixed.
+ (*cmpstrnqi_1): Ditto.
+ (*strmovdi_rex_1): Disable when %esi or %edi are fixed.
+ (*strmovsi_1): Ditto.
+ (*strmovhi_1): Ditto.
+ (*strmovqi_1): Ditto.
+ (*rep_movdi_rex64): Disable when %ecx, %esi or %edi are fixed.
+ (*rep_movsi): Ditto.
+ (*rep_movqi): Ditto.
+
+2011-07-31 Mikael Pettersson <mikpe@it.uu.se>
+
+ PR target/47908
+ * config/m68k/m68k.c (m68k_override_options_after_change): New function.
+ Disable instruction scheduling for non-ColdFire targets.
+ (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define.
+
+2011-07-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/49897
+ PR middle-end/49898
+ * omp-low.c (use_pointer_for_field): If disallowing copy-in/out
+ in nested parallel and outer is a gimple_reg, mark it as addressable
+ and set its bit in task_shared_vars bitmap too.
+
+2011-07-29 Wei Guozhi <carrot@google.com>
+
+ Backport from mainline
+ 2011-07-29 Wei Guozhi <carrot@google.com>
+
+ PR rtl-optimization/49799
+ * combine.c (make_compound_operation): Check if the bit field is valid
+ before change it to bit field extraction.
+
+2011-07-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/49871
+ * dwarf2out.c (size_of_die, value_format, output_die): Use
+ DW_FORM_udata instead of DW_FORM_data[48] for
+ dw_val_class_unsigned_const DW_AT_data_member_location for DWARF 3.
+
+2011-07-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ Backport from mainline
+ 2011-07-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/47364
+ * config/i386/i386.md (strlen<mode>): Replace SWI48x with P.
+
+2011-07-28 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+ Backport from mainline:
+ 2011-07-26 Martin Jambor <mjambor@suse.cz>
+
+ * tree-sra.c (tree_non_mode_aligned_mem_p): Strip conversions and
+ return false for invariants.
+
+2011-07-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/49866
+ * config/i386/i386.md (*call_pop_1_vzeroupper, *call_pop_1,
+ *sibcall_pop_1_vzeroupper, *sibcall_pop_1, *call_1_vzeroupper,
+ *call_1, *sibcall_1_vzeroupper, *sibcall_1, *call_1_rex64_vzeroupper,
+ *call_1_rex64, *call_1_rex64_ms_sysv_vzeroupper,
+ *call_1_rex64_ms_sysv, *sibcall_1_rex64_vzeroupper,
+ *sibcall_1_rex64, *call_value_pop_1_vzeroupper,
+ *call_value_pop_1, *sibcall_value_pop_1_vzeroupper,
+ *sibcall_value_pop_1, *call_value_1_vzeroupper,
+ *call_value_1, *sibcall_value_1_vzeroupper,
+ *sibcall_value_1, *call_value_1_rex64_vzeroupper,
+ *call_value_1_rex64, *call_value_1_rex64_ms_sysv_vzeroupper,
+ *call_value_1_rex64_ms_sysv, *sibcall_value_1_rex64_vzeroupper,
+ *sibcall_value_1_rex64): Use z constraint instead of s constraint.
+
+ Backport from mainline
+ 2011-05-16 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/constraints.md (z): New constraint.
+
+2011-07-25 Andrew Pinski <apinski@cavium.com>
+
+ PR tree-opt/49671
+ * tree-inline.c (remap_gimple_op_r): Copy TREE_THIS_VOLATILE and
+ TREE_THIS_NOTRAP into the inner most MEM_REF.
+ Always copy TREE_THIS_VOLATILE.
+ * tree-sra.c (ptr_parm_has_direct_uses): Check that the lhs, rhs and
+ arguments are not volatile references.
+
+2011-07-25 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/39386
+ Backport from mainline r176756
+ 2011-07-25 Georg-Johann Lay
+ * config/avr/avr.c (out_shift_with_cnt): Use tmp_reg as
+ shift counter for x << x and x >> x shifts.
+
+2011-07-22 Uros Bizjak <ubizjak@gmail.com>
+
+ * config.gcc (x86_64-*-linux*): Set
+ default_gnu_indirect_function to yes.
+
+2011-07-22 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/45819
+ * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
+ preserve volatile and notrap flags.
+
+2011-07-21 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2011-07-04 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/49600
+ * config/i386/i386.md (SSE2 int->float split): Push operand 1 in
+ general register to memory for !TARGET_INTER_UNIT_MOVES.
+
+2011-07-20 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * config/s390/s390.c (s390_class_max_nregs): Fix return type.
+ * config/s390/s390-protos.h (s390_class_max_nregs): Likewise.
+
+2011-07-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/49768
+ * tree-ssa-ccp.c (fold_nonarray_ctor_reference): Return NULL
+ if offset is smaller than bitoffset, but offset+size is bigger
+ than bitoffset.
+
+2011-07-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/49675
+ * tree.c (build_common_builtin_nodes): Register
+ __builtin_return_address, __cyg_profile_func_enter
+ and __cyg_profile_func_exit.
2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
@@ -79,7 +1175,7 @@
Use the correct type for the new tree.
2011-07-14 Georg-Johann Lay <avr@gjlay.de>
-
+
PR target/49487
Backport from mainline r176276
2011-07-14 Georg-Johann Lay
@@ -103,7 +1199,7 @@
(build_accesses_from_assign): Use it.
2011-07-11 Georg-Johann Lay <avr@gjlay.de>
-
+
PR target/39633
Backport from mainline r176141
2011-07-11 Georg-Johann Lay
@@ -126,7 +1222,7 @@
Likewise.
2011-07-08 Georg-Johann Lay <avr@gjlay.de>
-
+
PR target/46779
Backport from mainline SVN 176053.
2011-07-08 Georg-Johann Lay <avr@gjlay.de>
@@ -211,7 +1307,7 @@
Backport from mainline
2011-07-04 Georg-Johann Lay <avr@gjlay.de>
-
+
PR target/44643
* config/avr/avr.c (avr_insert_attributes): Use TYPE_READONLY
instead of TREE_READONLY.
@@ -393,7 +1489,7 @@
2011-06-20 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
Backport from mainline.
- 2011-06-13 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+ 2011-06-13 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
PR target/48454
* config/arm/neon.md (vec_pack_trunc): Set the lengths
diff --git a/gcc-4.6/gcc/ChangeLog.google-4_6 b/gcc-4.6/gcc/ChangeLog.google-4_6
index 309acfb48..ae66f5584 100644
--- a/gcc-4.6/gcc/ChangeLog.google-4_6
+++ b/gcc-4.6/gcc/ChangeLog.google-4_6
@@ -1,15 +1,481 @@
-2011-12-05 Jing Yu <jingyu@google.com>
+2012-02-14 Jing Yu <jingyu@google.com>
+
+ Backport r184226 from google/main (Google ref 42402-p2)
+ * config/arm/arm.h: Emit GNU-stack note for all arm targets by
+ default.
+
+2012-02-10 Wei Guozhi <carrot@google.com>
+ Backported r183933 from mainline
+ 2012-02-06 Jakub Jelinek <jakub@redhat.com>
+
+ * calls.c (mem_overlaps_already_clobbered_arg_p): If val is
+ CONST_INT_P, subtract resp. add crtl->args.pretend_args_size to it.
+
+2012-02-01 Dehao Chen <dehao@google.com>
+
+ * predict.c (predict_iv_comparison): Add new parameter, ensure that
+ the loop_iv_base and compare_base are identical.
+
+2012-01-31 Dehao Chen <dehao@google.com>
+
+ * predict.c (strips_small_constant): New
+ (get_base_value): New
+ (find_ssa_name_in_assign_stmt): New
+ (is_comparison_with_loop_invariant_p): New
+ (expr_coherent_p): New
+ (predict_iv_comparison): New
+ (predict_loops): Add heuristic for loop-nested branches that compare an
+ induction variable to a loop bound variable.
+ * predict.def (PRED_LOOP_IV_COMPARE): New macro
+
+2012-01-23 Diego Novillo <dnovillo@google.com>
+
+ Merge from gcc-4_6-branch rev 182961.
+
+2012-01-20 Sterling Augustine <saugustine@google.com>
+ Backport from google/main
+
+ * gcc/dwarf2out.c (break_out_comdat_types): Call add_AT_lineptr with
+ DW_AT_GNU_pubnames and DW_AT_GNU_pubtypes.
+
+2012-01-12 Rong Xu <xur@google.com>
+ Backport r183142 from google/main
+
+ * gcc/profile.c (compute_value_histograms): ignore the
+ histrogram when the counters not found in gcda file.
+
+2012-01-11 Sriraman Tallam <tmsriram@google.com>
+
+ Add new target builtins: __builtin_cpu_is_amdfam15h_bdver1 and
+ __builtin_cpu_is_amdfam15h_bdver2, to check for AMD Family 15h
+ (0x15) processors, version 1 and 2 respectively.
+
+ * i386.c (IX86_BUILTIN_CPU_IS_AMDFAM15H_BDVER1): New enum value.
+ (IX86_BUILTIN_CPU_IS_AMDFAM15H_BDVER2): New enum value.
+ (IX86_BUILTIN_CPU_IS_AMDFAM10H): Rename IX86_BUILTIN_CPU_IS_AMDFAM10.
+ (IX86_BUILTIN_CPU_IS_AMDFAM10H_BARCELONA): Rename IX86_BUILTIN_CPU_IS_AMDFAM10_BARCELONA.
+ (IX86_BUILTIN_CPU_IS_AMDFAM10H_SHANGHAI): Rename IX86_BUILTIN_CPU_IS_AMDFAM10_SHANGHAI.
+ (IX86_BUILTIN_CPU_IS_AMDFAM10H_ISTANBUL): Rename IX86_BUILTIN_CPU_IS_AMDFAM10_ISTANBUL.
+ (fold_builtin_cpu): Process IX86_BUILTIN_CPU_IS_AMDFAM15H_BDVER1
+ and IX86_BUILTIN_CPU_IS_AMDFAM15H_BDVER2.
+ (M_AMDFAM10H): Rename M_AMDFAM10.
+ (M_AMDFAM10H_BARCELONA): Rename M_AMDFAM10_BARCELONA.
+ (M_AMDFAM10H_SHANGHAI): Rename M_AMDFAM10_SHANGHAI.
+ (M_AMDFAM10H_ISTANBUL): Rename M_AMDFAM10_ISTANBUL.
+ (ix86_init_platform_type_builtins): Make new builtins __builtin_cpu_is_amdfam15_bdver1
+ and __builtin_cpu_is_amdfam15_bdver2.
+ (ix86_expand_builtin): Expand IX86_BUILTIN_CPU_IS_AMDFAM15_BDVER1 and
+ IX86_BUILTIN_CPU_IS_AMDFAM15_BDVER2.
+ * testsuite/gcc.target/builtin_target.c (fn1): Call new builtins.
+
+2012-01-10 Rong Xu <xur@google.com>
+
+ Backport r183081 from google/main
+
+ * gcc/profile.c (compute_value_histograms): handle the
+ case when INDIR_CALL counters not available in gcda files.
+
+
+2012-01-09 Dehao Chen <dehao@google.com>
+
+ * ipa-inline.c (cgraph_node_opt_info): Print profile info if available
+ (dump_inline_decision): Disable einline dump at OPT_INFO_MIN
+
+2012-01-04 Sterling Augustine <saugustine@google.com>
+
+ Backport from google/main
+
+ * dwarf2out.c (add_pubname): Move conditional clause from outer to
+ inner if-statement.
+ (dwarf2out_finish): Fix conditions to output DW_AT_GNU_pubnames and
+ DW_AT_GNU_pubtypes. Move decision to output pubnames and pubtypes from
+ here...
+ (output_pubnames): ...to here.
+ (pubtypes_section_empty): Delete unused function.
+
+2012-01-02 Dehao Chen <dehao@google.com>
+
+ * ipa-inline.c (cgraph_node_opt_info): Print more concise info when
+ dumping inline decisions.
+
+2011-12-19 Sterling Augustine <saugustine@google.com>
+
+ Backport from google/main
+
+ * dwarf2out.c (DEBUG_PUBNAMES_SECTION_LABEL,
+ DEBUG_PUBTYPES_SECTION_LABEL): Define.
+ (debug_pubnames_section_label, debug_pubtypes_section_label):
+ Declare.
+ (is_namespace_die, is_class_die): New functions.
+ (add_enumerator_pubname): New function.
+ (add_pubname): Call is_namespace_die, is_cu_die, and is_class_die in
+ conditional.
+ (add_pubtype): Call is_namespace_die. Rework name calculation. Call
+ type_tag, lang_hooks.dwarf_name and add_enumerator_pubname.
+ (output_pubnames): Output debug_pubnames_section_label or
+ debug_pubtypes_section_label.
+ (base_type_die): Call add_pubtype.
+ (gen_namespace_die): Call add_pubname_string and lang_hooks.dwarf_name.
+ (dwarf2_out_init): Generate debug_pubnames_section_label and
+ debug_pubtypes_section_label.
+ (pubtypes_section_empty): New function.
+ (dwarf2_out_finish): Call add_AT_lineptr if pubnames or pubtypes is
+ non-empty. When dealing with pubnames, change assertion to conditional.
+ Call pubtypes_section_empty. Likewise when dealing with pubtypes.
+ Move code checking for empty section to...
+ (pubtypes_section_empty): Here.
+ * target.def: Switch boolean to enable pubnames and pubtypes.
+
+2011-12-17 Sriraman Tallam <tmsriram@google.com>
+
+ * mversn-dispatch.c (make_name): Use '.' to concatenate to suffix
+ mangled names.
+ (clone_function): Do not make clones ctors/dtors. Recompute dominance
+ info.
+ (make_bb_flow): New function.
+ (get_selector_gimple_seq): New function.
+ (make_selector_function): New function.
+ (make_attribute): New function.
+ (make_ifunc_function): New function.
+ (copy_decl_attributes): New function.
+ (dispatch_using_ifunc): New function.
+ (purge_function_body): New function.
+ (function_can_make_abnormal_goto): New function.
+ (make_function_not_cloneable): New function.
+ (do_auto_clone): New function.
+ (pass_auto_clone): New gimple pass.
+ (make_specialized_call_to_clone): Fix clone names.
+ * passes.c (init_optimization_passes): Add pass_auto_clone to list.
+ * tree-pass.h (pass_auto_clone): New pass.
+ * params.def (PARAM_MAX_FUNCTION_SIZE_FOR_AUTO_CLONING): New param.
+ * target.def (mversion_function): New target hook.
+ * config/i386/i386.c (ix86_option_override_internal): Check correctness
+ of ix86_mv_arch_string.
+ (add_condition_to_bb): New function.
+ (make_empty_function): New function.
+ (make_condition_function): New function.
+ (is_loop_form_vectorizable): New function.
+ (is_loop_stmts_vectorizable): New function.
+ (any_loops_vectorizable_with_load_store): New function.
+ (mversionable_for_core2_p): New function.
+ (ix86_mversion_function): New function.
+ * config/i386/i386.opt (mvarch): New option.
+ * doc/tm.texi (TARGET_MVERSION_FUNCTION): Document.
+ * doc/tm.texi.in (TARGET_MVERSION_FUNCTION): Document.
+ * testsuite/gcc.dg/automversn_1.c: New test case.
+ * testsuite/gcc.dg/mversn2.c: Fix cloned names.
+ * testsuite/g++.dg/mversn8.C: Ditto.
+ * testsuite/g++.dg/mversn10a.C: Ditto.
+ * testsuite/g++.dg/mversn15.C: Ditto.
+ * testsuite/g++.dg/mversn10.C: Ditto.
+ * testsuite/g++.dg/mversn16.C: Ditto.
+
+2011-12-17 Sriraman Tallam <tmsriram@google.com>
+
+ * gcc/config/i386/i386.c
+ (IX86_BUILTIN_CPU_IS_INTEL_COREI7): New enum value.
+ (IX86_BUILTIN_CPU_IS_AMDFAM10): New enum value.
+ (fold_builtin_cpu): Fold the new builtins.
+ (ix86_init_platform_type_builtins): Make new buitins
+ __builtin_cpu_is_intel_corei7 and
+ __builtin_cpu_is_amdfam10.
+ * testsuite/gcc.target/i386/builtin_target.c (fn1):
+ Call the new builtins.
+
+2011-12-17 Easwaran Raman <eraman@google.com>
+ Backport r182443 from google/main.
+
+ 2011-12-17 Easwaran Raman <eraman@google.com>
+
+ * common.opt (fsized-delete): New option.
+
+2011-12-16 Rong Xu <xur@google.com>
+ Backport r182416 from google/main.
+
+ 2011-12-16 Rong Xu <xur@google.com>
+
+ * libgcc/libgcov.c (gcov_merge_gcda_file): reset summary_pos.
+
+2011-12-16 Dehao Chen <dehao@google.com>
+
+ * ipa-inline.c (dump_inline_decision): New function.
+ (cgraph_node_call_chain): New function.
+ (cgraph_node_opt_info): New function.
+ (cgraph_mark_inline_edge): Dump inline decisions to stderr.
+
+2011-12-14 Sriraman Tallam <tmsriram@google.com>
+
+ Backport r182344 from google/main.
+
+ 2011-12-14 Sriraman Tallam <tmsriram@google.com>
+
+ Do not vectorize loops on Core2 that need to use unaligned
+ vector load/stores.
+ * tree-vect-stmts.c (is_vector_load_store_slow): New function.
+ (vectorizable_load): Return false if the load
+ is unaligned and slow.
+ (vectorizable_store): Ditto.
+ * target.def (TARGET_SLOW_UNALIGNED_VECTOR_MEMOP): New target hook.
+ * doc/m.texi.in: Document new target hook:
+ TARGET_SLOW_UNALIGNED_VECTOR_MEMOP
+ * doc/m.texi: Regenerate.
+ * config/i386/i386.c (ix86_slow_unaligned_vector_memop): New function.
+ (TARGET_SLOW_UNALIGNED_VECTOR_MEMOP): New macro.
+
+2011-12-12 Teresa Johnson <tejohnson@google.com>
+
+
+2011-12-11 Diego Novillo <dnovillo@google.com>
+
+ Merge from gcc-4_6-branch rev 182135.
+
+2011-11-30 Doug Kwan <dougkwan@google.com>
Backport r171347 and r181549 from trunk.
2011-03-23 Julian Brown <julian@codesourcery.com>
* expr.c (expand_expr_real_1): Only use BLKmode for volatile
accesses which are not naturally aligned.
-
+
2011-11-20 Joey Ye <joey.ye@arm.com>
+
+ * expr.c (expand_expr_real_1): Correctly handle strict volatile
+ bitfield loads smaller than mode size.
+
+2011-11-23 Teresa Johnson <tejohnson@google.com>
+
+ Backport r181671 from google/main.
+
+2011-11-18 Diego Novillo <dnovillo@google.com>
+
+ Rollback revisiong 179815 from gcc-4_6-branch.
+
+2011-11-16 Rong Xu <xur@google.com>
+
+ Backport r181432 from google/main.
+
+2011-11-10 DeLesley Hutchins <delesley@google.com>
+
+ * tree-threadsafe-analyze.c:
+ factors out code to get function decl.
+ (get_fdecl_from_gimple_stmt): new factored-out function
+ (handle_call_gs): original definition of code
+ (get_lock_returned_by_call): call new function
+ (get_trylock_info): call new function
+ (handle_unlock_primitive_attr): use passed fdecl
+
+2011-11-10 DeLesley Hutchins <delesley@google.com>
+
+ * tree-threadsafe-analyze.c (get_canonical_lock_expr):
+ Add support for pointer arithmetic operations
+
+2011-11-04 Rong Xu <xur@google.com>
+
+ Backport r181129 from google/main.
+
+2011-11-06 Teresa Johnson <tejohnson@google.com>
+
+ Backport r180925 from google/main.
+
+2011-11-06 Teresa Johnson <tejohnson@google.com>
+
+ Backport r180783 from trunk.
+
+2011-11-04 DeLesley Hutchins <delesley@google.com>
+ * tree-threadsafe-analyze.c:
+ Ignores invalid attributes, issues a warning, recovers gracefully.
+ * common.opt:
+ Adds new thread safety warning.
+
+2011-11-04 Rong Xu <xur@google.com>
+
+ Backport r180971 from google/main.
+
+2011-11-04 Rong Xu <xur@google.com>
+
+ Backport r180973 from google/main.
+
+2011-11-04 Rong Xu <xur@google.com>
+
+ Backport r180269 from google/main.
+
+2011-11-02 Diego Novillo <dnovillo@google.com>
+
+ Merge from gcc-4_6-branch rev 180729.
+
+2011-10-25 Xinliang David Li <davidxl@google.com>
+
+ * profile.c (compute_branch_probablies): recompute
+ function frequency summary after profile annotation.
+
+2011-10-24 Diego Novillo <dnovillo@google.com>
+
+ Merge from gcc-4_6-branch rev 180298.
+
+2011-10-21 Diego Novillo <dnovillo@google.com>
+
+ Merge from gcc-4_6-branch rev 179421.
+
+2011-10-17 Dehao Chen <dehao@google.com>
+
+ Add a flag (-frecord-gcc-switches-in-elf) to record compiler
+ command line options to .gnu.switches.text sections of
+ the object file.
+ * coverage.c (write_opts_to_asm): Write the options to
+ .gnu.switches.text sections.
+ * common.opt: Ditto.
+ * opts.h: Ditto.
+
+2011-10-14 DeLesley Hutchins <delesley@google.com>
+
+ * tree-threadsafe-analyze.c (get_canonical_lock_expr):
+ Bugfix: add lock to hash set, even if it refers to a base class
+
+2011-10-14 DeLesley Hutchins <delesley@google.com>
+
+ * tree-threadsafe-analyze.c (remove_lock_from_lockset):
+ Bugfix: shared lock now removed properly when the universal lock
+ is in the exclusive lock set.
+
+2011-09-30 Sharad Singhai <singhai@google.com>
+
+ * gcc.c (cc1_options): Add -fno-early-inlining for improved coverage.
+
+2011-09-30 Easwaran Raman <eraman@google.com>
+
+ * tree-profile.c (gcov_sample_counter_decl): Add GTY marker.
+ (gcov_sampling_rate_decl): Likewise.
+ (add_sampling_to_edge_counters): Do not free
+ instrumentation_to_be_sampled.
+ (cleanup_instrumentation_sampling): New function.
+ (tree_profiling): Call cleanup_instrumentation_sampling at the end.
+
+2011-09-30 DeLesley Hutchins <delesley@google.com>
+
+ * tree-threadsafe-analyze.c (process_function_attrs):
+ Detect clones and suppress warnings.
+
+2011-09-27 Sriraman Tallam <tmsriram@google.com>
+
+ * output.h (SECTION_EXCLUDE): New flag for exclude sections.
+ * varasm.c (default_elf_asm_named_section): Add "e" to section flags
+ marked as SECTION_EXCLUDE.
+ * final.c (rest_of_handle_final): Exclude .gnu.callgraph sections.
+
+2011-09-22 Sriraman Tallam <tmsriram@google.com>
+
+ * cgraphbuild.c (remove_cgraph_callee_edges): Preserve callee edges if
+ callgraph profiles are needed.
+ * final.c (rest_of_handle_final): Rename .note.callgraph sections as
+ .gnu.callgraph sections.
+ * tree-optimize.c (gate_all_optimizations): Set
+ cgraph_callee_edges_final_cleanup to true.
+ (cgraph_callee_edges_final_cleanup): New global variable.
+ * params.def (PARAM_NOTE_CGRAPH_SECTION_EDGE_THRESHOLD): Fix comment.
+
+2011-09-22 Guozhi Wei <carrot@google.com>
+
+ Backport r178995 from trunk.
+
+ 2011-09-20 Wei Guozhi <carrot@google.com>
+
+ PR rtl-optimization/49452
+ * postreload.c (reload_combine): Invalidate use information when
+ across volatile insn.
+
+2011-09-21 Diego Novillo <dnovillo@google.com>
+
+ Merge from gcc-4_6-branch rev 179031.
+
+2011-09-15 Easwaran Raman <eraman@google.com>
+
+ Backport r178898 from google/main.
+
+ 2011-09-15 Easwaran Raman <eraman@google.com>
+
+ * Makefile.in (PLUGIN_HEADERS): Add l-ipo.h.
+
+2011-09-15 Easwaran Raman <eraman@google.com>
+
+ Backport r176741 from trunk.
+
+ 2011-07-22 Romain Geissler <romain.geissler@gmail.com>
- * expr.c (expand_expr_real_1): Correctly handle strict volatile
- bitfield loads smaller than mode size.
+ PR plugins/45348
+ PR plugins/48425
+ PR plugins/46577
+ * Makefile.in: Do not flatten c-family directory when installing
+ plugin headers.
+
+2011-09-15 Diego Novillo <dnovillo@google.com>
+
+ Merge from gcc-4_6-branch rev 178854.
+
+2011-9-13 DeLesley Hutchins <delesley@google.com>
+
+ * tree-threadsafe-analyze.c (get_canonical_lock_expr):
+ don't remove & on recursive call
+
+2011-09-01 Sriraman Tallam <tmsriram@google.com>
+
+ * config/i386/i386.c (build_struct_with_one_bit_fields): New function.
+ (make_var_decl): New function.
+ (get_field_from_struct): New function.
+ (fold_builtin_target): New function.
+ (ix86_fold_builtin): New function.
+ (ix86_expand_builtin): Expand new builtins by folding them.
+ (TARGET_FOLD_BUILTIN): New macro.
+ (IX86_BUILTIN_CPU_SUPPORTS_CMOV): New enum value.
+ (IX86_BUILTIN_CPU_SUPPORTS_MMX): New enum value.
+ (IX86_BUILTIN_CPU_SUPPORTS_POPCOUNT): New enum value.
+ (IX86_BUILTIN_CPU_SUPPORTS_SSE): New enum value.
+ (IX86_BUILTIN_CPU_SUPPORTS_SSE2): New enum value.
+ (IX86_BUILTIN_CPU_SUPPORTS_SSE3): New enum value.
+ (IX86_BUILTIN_CPU_SUPPORTS_SSSE3): New enum value.
+ (IX86_BUILTIN_CPU_SUPPORTS_SSE4_1): New enum value.
+ (IX86_BUILTIN_CPU_SUPPORTS_SSE4_2): New enum value.
+ (IX86_BUILTIN_CPU_INIT): New enum value.
+ (IX86_BUILTIN_CPU_IS_AMD): New enum value.
+ (IX86_BUILTIN_CPU_IS_INTEL): New enum value.
+ (IX86_BUILTIN_CPU_IS_INTEL_ATOM): New enum value.
+ (IX86_BUILTIN_CPU_IS_INTEL_CORE2): New enum value.
+ (IX86_BUILTIN_CPU_IS_INTEL_COREI7_NEHALEM): New enum value.
+ (IX86_BUILTIN_CPU_IS_INTEL_COREI7_WESTMERE): New enum value.
+ (IX86_BUILTIN_CPU_IS_INTEL_COREI7_SANDYBRIDGE): New enum value.
+ (IX86_BUILTIN_CPU_IS_AMDFAM10_BARCELONA): New enum value.
+ (IX86_BUILTIN_CPU_IS_AMDFAM10_SHANGHAI): New enum value.
+ (IX86_BUILTIN_CPU_IS_AMDFAM10_ISTANBUL): New enum value.
+ * config/i386/libgcc-glibc.ver (__cpu_indicator_init): Export symbol.
+ (__cpu_model): Export symbol.
+ (__cpu_features): Export symbol.
+ * config/i386/i386-builtin-types.def: New function type.
+
+2011-08-24 Mark Heffernan <meheff@google.com>
+
+ * params.def (hot-bb-count-fraction): Change default value.
+
+2011-08-24 David Li <davidxl@google.com>
+
+ * profile.c (compute_branch_probabilities): Partially revert
+ change in r176997 which led to perf regression of important
+ apps.
+
+2011-08-23 Mark Heffernan <meheff@google.com>
+
+ * basic-block.h (maybe_hot_frequency_p): Add prototype.
+ * cgraph.c (dump_cgraph_node): Add field to dump.
+ (cgraph_clone_node) Handle new field.
+ * cgraph.h (cgraph_node): New field max_bb_count.
+ * cgraphbuild.c (rebuild_cgraph_edges): Compute max_bb_count.
+ * cgraphunit.c (cgraph_copy_node_for_versioning) Handle new field.
+ * common.opt (finline-hot-caller): New option.
+ * ipa-inline.c (cgraph_mark_inline_edge) Update max_bb_count.
+ (edge_hot_enough_p) New function.
+ (cgraph_decide_inlining_of_small_functions) Call edge_hot_enough_p.
+ * predict.c (maybe_hot_frequency_p): Remove static keyword and
+ guard with profile_info check.
+ * testsuite/gcc.dg/tree-prof/inliner-1.c: Add flag.
+ * testsuite/gcc.dg/tree-prof/lipo/inliner-1_0.c: Add flag.
2011-08-16 Guozhi Wei <carrot@google.com>
diff --git a/gcc-4.6/gcc/ChangeLog.google-main b/gcc-4.6/gcc/ChangeLog.google-main
index 8d10d659f..d91bfa6a6 100644
--- a/gcc-4.6/gcc/ChangeLog.google-main
+++ b/gcc-4.6/gcc/ChangeLog.google-main
@@ -1,3 +1,11 @@
+2011-01-26 Han Shen <shenhan@google.com>
+
+ Add a new option "-fstack-protector-strong".
+ * cfgexpand.c (expand_used_vars): Add logic handling
+ stack-protector-strong.
+ (record_or_union_type_has_array): New, tests if a record or union type
+ contains an array.
+ * common.opt (fstack-protector-strong): New option.
2011-07-11 DeLesley Hutchins <delesley@google.com>
* cp/gc.class (cp_get_virtual_function_decl.c handle_call_gs):
@@ -13,7 +21,7 @@
Backport upstream patch under review.
2011-01-19 NNick Clifton <nickc@redhat.com>
- Matthias Klose <doko@debian.org>
+ Matthias Klose <doko@debian.org>
* configure.ac (gcc_cv_gold_srcdir): New cached variable -
contains the location of the gold sources.
diff --git a/gcc-4.6/gcc/DATESTAMP b/gcc-4.6/gcc/DATESTAMP
index b2bbcdf3d..16c7269ca 100644
--- a/gcc-4.6/gcc/DATESTAMP
+++ b/gcc-4.6/gcc/DATESTAMP
@@ -1 +1 @@
-20110718
+20120106
diff --git a/gcc-4.6/gcc/Makefile.in b/gcc-4.6/gcc/Makefile.in
index 24a972eca..031db74b2 100644
--- a/gcc-4.6/gcc/Makefile.in
+++ b/gcc-4.6/gcc/Makefile.in
@@ -2394,7 +2394,7 @@ tree-ssa.o : tree-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_DUMP_H) langhooks.h $(TREE_PASS_H) $(BASIC_BLOCK_H) $(BITMAP_H) \
$(FLAGS_H) $(GGC_H) $(HASHTAB_H) pointer-set.h \
$(GIMPLE_H) $(TREE_INLINE_H) $(TARGET_H) tree-pretty-print.h \
- gimple-pretty-print.h l-ipo.h
+ gimple-pretty-print.h $(CFGLOOP_H) l-ipo.h
tree-into-ssa.o : tree-into-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(EXPR_H) output.h $(DIAGNOSTIC_H) \
$(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
@@ -2526,7 +2526,8 @@ tree-threadsafe-analyze.o : tree-threadsafe-analyze.c \
tree-threadsafe-analyze.h $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
$(TM_H) coretypes.h $(C_COMMON_H) toplev.h $(INPUT_H) $(DIAGNOSTIC_H) \
intl.h $(BASIC_BLOCK_H) $(TIMEVAR_H) $(TREE_PASS_H) $(TREE_DUMP_H) \
- langhooks.h pointer-set.h tree-pretty-print.h tree-ssa-propagate.h
+ $(GIMPLE_H) langhooks.h pointer-set.h tree-pretty-print.h \
+ tree-ssa-propagate.h
tree-ssa-sink.o : tree-ssa-sink.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
$(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) alloc-pool.h \
@@ -3071,7 +3072,7 @@ coverage.o : coverage.c $(GCOV_IO_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) \
$(FUNCTION_H) $(BASIC_BLOCK_H) toplev.h $(DIAGNOSTIC_CORE_H) $(GGC_H) langhooks.h $(COVERAGE_H) \
$(HASHTAB_H) tree-iterator.h $(CGRAPH_H) $(TREE_PASS_H) gcov-io.c $(TM_P_H) \
- opts.h $(TREE_FLOW_H) $(DIAGNOSTIC_CORE_H) intl.h gt-coverage.h l-ipo.h
+ opts.h $(TREE_FLOW_H) $(DIAGNOSTIC_CORE_H) intl.h gt-coverage.h l-ipo.h dwarf2asm.h
cselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(RECOG_H) \
$(EMIT_RTL_H) $(DIAGNOSTIC_CORE_H) output.h $(FUNCTION_H) $(TREE_PASS_H) \
@@ -4548,7 +4549,7 @@ PLUGIN_HEADERS = $(TREE_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(EXCEPT_H) tree-ssa-sccvn.h real.h output.h $(IPA_UTILS_H) \
$(C_PRAGMA_H) $(CPPLIB_H) $(FUNCTION_H) \
cppdefault.h flags.h $(MD5_H) params.def params.h prefix.h tree-inline.h \
- $(IPA_PROP_H) $(RTL_H) $(TM_P_H) $(CFGLOOP_H) $(EMIT_RTL_H) version.h
+ $(IPA_PROP_H) $(RTL_H) $(TM_P_H) $(CFGLOOP_H) $(EMIT_RTL_H) version.h l-ipo.h
# generate the 'build fragment' b-header-vars
s-header-vars: Makefile
@@ -4559,8 +4560,8 @@ s-header-vars: Makefile
# Install the headers needed to build a plugin.
install-plugin: installdirs lang.install-plugin s-header-vars
-# We keep the directory structure for files in config and .def files. All
-# other files are flattened to a single directory.
+# We keep the directory structure for files in config or c-family and .def
+# files. All other files are flattened to a single directory.
$(mkinstalldirs) $(DESTDIR)$(plugin_includedir)
headers=`echo $(PLUGIN_HEADERS) | tr ' ' '\012' | sort -u`; \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \
@@ -4572,7 +4573,7 @@ install-plugin: installdirs lang.install-plugin s-header-vars
else continue; \
fi; \
case $$path in \
- "$(srcdir)"/config/* | "$(srcdir)"/*.def ) \
+ "$(srcdir)"/config/* | "$(srcdir)"/c-family/* | "$(srcdir)"/*.def ) \
base=`echo "$$path" | sed -e "s|$$srcdirstrip/||"`;; \
*) base=`basename $$path` ;; \
esac; \
diff --git a/gcc-4.6/gcc/ada/ChangeLog b/gcc-4.6/gcc/ada/ChangeLog
index 646cf5ed5..6b52cbfab 100644
--- a/gcc-4.6/gcc/ada/ChangeLog
+++ b/gcc-4.6/gcc/ada/ChangeLog
@@ -1,3 +1,84 @@
+2012-01-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnatvsn.ads (Current_Year): Bump to 2011.
+
+2011-12-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR tree-optimization/51315
+ Backport from mainline
+ 2011-09-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Do not promote
+ the alignment if this doesn't prevent BLKmode access to the object.
+
+2011-11-13 Iain Sandoe <iains@gcc.gnu.org>
+
+ Backport from mainline r181474
+ PR target/50678
+ * init.c (__gnat_error_handler) [Darwin]: Move work-around to the
+ bug filed as radar #10302855 from __gnat_error_handler ...
+ ... to (__gnat_adjust_context_for_raise) [Darwin]: New.
+ (HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE) [Darwin]: Define.
+ (__gnat_error_handler) [Darwin]: Use __gnat_adjust_context_for_raise.
+
+2011-11-18 Tristan Gingold <gingold@adacore.com>
+ Iain Sandoe <iains@gcc.gnu.org>
+
+ PR target/49992
+ * mlib-tgt-specific-darwin.adb (Archive_Indexer_Options): Remove.
+ * gcc-interface/Makefile.in (darwin): Remove ranlib special-casing
+ for Darwin.
+
+2011-11-13 Iain Sandoe <iains@gcc.gnu.org>
+
+ Backport from mainline r181319
+ * gcc-interface/Makefile.in (stamp-gnatlib-$(RTSDIR)): Don't link
+ s-oscons.ads.
+ (OSCONS_CPP, OSCONS_EXTRACT): New.
+ (./bldtools/oscons/xoscons): New Target.
+ ($(RTSDIR)/s-oscons.ads): New Target.
+ (gnatlib): Depend on $(RTSDIR)/s-oscons.ads.
+ * Make-generated.in: Remove machinery to generate xoscons and
+ ada/s-oscons.ads.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-09-19 Iain Sandoe <iains@gcc.gnu.org>
+
+ Backport from mainline (restore powerpc-darwin Ada bootstrap).
+ * traceback.c (Darwin) USE_GCC_UNWINDER for Darwin versions >= 8.
+
+2011-09-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (maybe_pad_type): Do not try to change the form
+ of an addressable type.
+ * gcc-interface/trans.c (gnat_gimplify_expr) <VIEW_CONVERT_EXPR>: New.
+ Deal with those cases for which creating a temporary is mandatory.
+
+2011-09-08 Iain Sandoe <iains@gcc.gnu.org>
+
+ Backport from mainline (restore powerpc-darwin Ada bootstrap).
+ * gcc-interface/Makefile.in (darwin): Provide powerpc64 system
+ implementation.
+ * system-darwin-ppc64.ads: New file.
+
+2011-09-06 Iain Sandoe <iains@gcc.gnu.org>
+
+ Backport from mainline.
+ * gcc-interface/Makefile.in (darwin, SO_OPTS): Provide architecture
+ size switches to the link phase for shared libs.
+
+2011-07-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ Backport from mainline
+ 2011-07-23 Arnaud Charlet <charlet@adacore.com>
+
+ PR ada/49819
+ * gcc-interface/Makefile.in (powerpc-linux): Remove reference to
+ g-trasym-dwarf.adb.
+
2011-07-15 Eric Botcazou <ebotcazou@adacore.com>
PR ada/48711
diff --git a/gcc-4.6/gcc/ada/Make-generated.in b/gcc-4.6/gcc/ada/Make-generated.in
index 30ce14e91..ac52e491e 100644
--- a/gcc-4.6/gcc/ada/Make-generated.in
+++ b/gcc-4.6/gcc/ada/Make-generated.in
@@ -64,37 +64,6 @@ $(ADA_GEN_SUBDIR)/nmake.ads : $(ADA_GEN_SUBDIR)/sinfo.ads $(ADA_GEN_SUBDIR)/nma
$(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/nmake_s
(cd $(ADA_GEN_SUBDIR)/bldtools/nmake_s; gnatmake -q xnmake ; ./xnmake -s ../../nmake.ads )
-ifeq ($(strip $(filter-out alpha64 ia64 dec hp vms% openvms% alphavms%,$(subst -, ,$(host)))),)
-OSCONS_CPP=../../../$(DECC) -E /comment=as_is -DNATIVE \
- -DTARGET='""$(target)""' s-oscons-tmplt.c
-
-OSCONS_EXTRACT=../../../$(DECC) -DNATIVE \
- -DTARGET='""$(target)""' s-oscons-tmplt.c ; \
- ld -o s-oscons-tmplt.exe s-oscons-tmplt.obj; \
- ./s-oscons-tmplt.exe > s-oscons-tmplt.s
-
-else
-# GCC_FOR_TARGET has paths relative to the gcc directory, so we need to ajust
-# for running it from $(ADA_GEN_SUBDIR)/bldtools/oscons
-OSCONS_CC=`echo "$(GCC_FOR_TARGET)" \
- | sed -e 's^\./xgcc^../../../xgcc^' -e 's^-B./^-B../../../^'`
-OSCONS_CPP=$(OSCONS_CC) $(GNATLIBCFLAGS) -E -C \
- -DTARGET=\"$(target)\" s-oscons-tmplt.c > s-oscons-tmplt.i
-OSCONS_EXTRACT=$(OSCONS_CC) -S s-oscons-tmplt.i
-endif
-
-$(ADA_GEN_SUBDIR)/s-oscons.ads : $(ADA_GEN_SUBDIR)/s-oscons-tmplt.c $(ADA_GEN_SUBDIR)/gsocket.h $(ADA_GEN_SUBDIR)/xoscons.adb $(ADA_GEN_SUBDIR)/xutil.ads $(ADA_GEN_SUBDIR)/xutil.adb
- -$(MKDIR) $(ADA_GEN_SUBDIR)/bldtools/oscons
- $(RM) $(addprefix $(ADA_GEN_SUBDIR)/bldtools/oscons/,$(notdir $^))
- $(CP) $^ $(ADA_GEN_SUBDIR)/bldtools/oscons
- (cd $(ADA_GEN_SUBDIR)/bldtools/oscons ; gnatmake -q xoscons ; \
- $(RM) s-oscons-tmplt.i s-oscons-tmplt.s ; \
- $(OSCONS_CPP) ; \
- $(OSCONS_EXTRACT) ; \
- ./xoscons ; \
- $(RM) ../../s-oscons.ads ; \
- $(CP) s-oscons.ads s-oscons.h ../../)
-
$(ADA_GEN_SUBDIR)/sdefault.adb: $(ADA_GEN_SUBDIR)/stamp-sdefault ; @true
$(ADA_GEN_SUBDIR)/stamp-sdefault : $(srcdir)/version.c Makefile
$(ECHO) "pragma Style_Checks (Off);" >tmp-sdefault.adb
diff --git a/gcc-4.6/gcc/ada/gcc-interface/Makefile.in b/gcc-4.6/gcc/ada/gcc-interface/Makefile.in
index b64ba5579..77027dd82 100644
--- a/gcc-4.6/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc-4.6/gcc/ada/gcc-interface/Makefile.in
@@ -1792,7 +1792,6 @@ ifeq ($(strip $(filter-out powerpc% linux%,$(arch) $(osys))),)
s-osinte.adb<s-osinte-posix.adb \
s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
g-sercom.adb<g-sercom-linux.adb \
- g-trasym.adb<g-trasym-dwarf.adb \
$(ATOMICS_TARGET_PAIRS)
ifeq ($(strip $(filter-out xenomai,$(THREAD_KIND))),)
@@ -2105,6 +2104,7 @@ ifeq ($(strip $(filter-out %x86_64 linux%,$(arch) $(osys))),)
endif
ifeq ($(strip $(filter-out darwin%,$(osys))),)
+ SO_OPTS = -Wl,-flat_namespace -shared-libgcc
ifeq ($(strip $(filter-out %86,$(arch))),)
LIBGNAT_TARGET_PAIRS = \
a-intnam.ads<a-intnam-darwin.ads \
@@ -2124,6 +2124,7 @@ ifeq ($(strip $(filter-out darwin%,$(osys))),)
ifeq ($(strip $(MULTISUBDIR)),/x86_64)
LIBGNAT_TARGET_PAIRS += \
system.ads<system-darwin-x86_64.ads
+ SO_OPTS += -m64
else
LIBGNAT_TARGET_PAIRS += \
system.ads<system-darwin-x86.ads
@@ -2150,6 +2151,7 @@ ifeq ($(strip $(filter-out darwin%,$(osys))),)
ifeq ($(strip $(MULTISUBDIR)),/i386)
LIBGNAT_TARGET_PAIRS += \
system.ads<system-darwin-x86.ads
+ SO_OPTS += -m32
else
LIBGNAT_TARGET_PAIRS += \
system.ads<system-darwin-x86_64.ads
@@ -2171,8 +2173,15 @@ ifeq ($(strip $(filter-out darwin%,$(osys))),)
a-numaux.ads<a-numaux-darwin.ads \
a-numaux.adb<a-numaux-darwin.adb \
g-trasym.ads<g-trasym-unimplemented.ads \
- g-trasym.adb<g-trasym-unimplemented.adb \
- system.ads<system-darwin-ppc.ads
+ g-trasym.adb<g-trasym-unimplemented.adb
+ ifeq ($(strip $(MULTISUBDIR)),/ppc64)
+ LIBGNAT_TARGET_PAIRS += \
+ system.ads<system-darwin-ppc64.ads
+ SO_OPTS += -m64
+ else
+ LIBGNAT_TARGET_PAIRS += \
+ system.ads<system-darwin-ppc.ads
+ endif
endif
TOOLS_TARGET_PAIRS = \
@@ -2180,8 +2189,6 @@ ifeq ($(strip $(filter-out darwin%,$(osys))),)
EH_MECHANISM=-gcc
GNATLIB_SHARED = gnatlib-shared-darwin
- SO_OPTS = -Wl,-flat_namespace -shared-libgcc
- RANLIB = ranlib -c
GMEM_LIB = gmemlib
LIBRARY_VERSION := $(LIB_VERSION)
soext = .dylib
@@ -2439,21 +2446,52 @@ install-gnatlib: ../stamp-gnatlib-$(RTSDIR)
$(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \
$(LN_S) $(fsrcpfx)ada/$(word 2,$(subst <, ,$(PAIR))) \
$(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));)
-# Copy generated target dependent sources
- $(RM) $(RTSDIR)/s-oscons.ads
- (cd $(RTSDIR); $(LN_S) ../s-oscons.ads s-oscons.ads)
+# Copy tsystem.h
+ $(CP) $(srcdir)/tsystem.h $(RTSDIR)
$(RM) ../stamp-gnatlib-$(RTSDIR)
touch ../stamp-gnatlib1-$(RTSDIR)
# GNULLI End #############################################################
+ifeq ($(strip $(filter-out alpha64 ia64 dec hp vms% openvms% alphavms%,$(subst -, ,$(host)))),)
+OSCONS_CPP=../../$(DECC) -E /comment=as_is -DNATIVE \
+ -DTARGET='""$(target)""' $(fsrcpfx)ada/s-oscons-tmplt.c
+
+OSCONS_EXTRACT=../../$(DECC) -DNATIVE \
+ -DTARGET='""$(target)""' $(fsrcpfx)ada/s-oscons-tmplt.c ; \
+ ld -o s-oscons-tmplt.exe s-oscons-tmplt.obj; \
+ ./s-oscons-tmplt.exe > s-oscons-tmplt.s
+
+else
+# GCC_FOR_TARGET has paths relative to the gcc directory, so we need to adjust
+# for running it from $(RTSDIR)
+OSCONS_CC=`echo "$(GCC_FOR_TARGET)" \
+ | sed -e 's^\./xgcc^../../xgcc^' -e 's^-B./^-B../../^'`
+OSCONS_CPP=$(OSCONS_CC) $(GNATLIBCFLAGS) -E -C \
+ -DTARGET=\"$(target)\" $(fsrcpfx)ada/s-oscons-tmplt.c > s-oscons-tmplt.i
+OSCONS_EXTRACT=$(OSCONS_CC) -S s-oscons-tmplt.i
+endif
+
+./bldtools/oscons/xoscons: xoscons.adb xutil.ads xutil.adb
+ -$(MKDIR) ./bldtools/oscons
+ $(RM) $(addprefix ./bldtools/oscons/,$(notdir $^))
+ $(CP) $^ ./bldtools/oscons
+ (cd ./bldtools/oscons ; gnatmake -q xoscons)
+
+$(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons
+ $(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s
+ (cd $(RTSDIR) ; \
+ $(OSCONS_CPP) ; \
+ $(OSCONS_EXTRACT) ; \
+ ../bldtools/oscons/xoscons)
+
# Don't use semicolon separated shell commands that involve list expansions.
# The semicolon triggers a call to DCL on VMS and DCL can't handle command
# line lengths in excess of 256 characters.
# Example: cd $(RTSDIR); ar rc libfoo.a $(LONG_LIST_OF_OBJS)
# is guaranteed to overflow the buffer.
-gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR)
+gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR) $(RTSDIR)/s-oscons.ads
$(MAKE) -C $(RTSDIR) \
CC="`echo \"$(GCC_FOR_TARGET)\" \
| sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
diff --git a/gcc-4.6/gcc/ada/gcc-interface/decl.c b/gcc-4.6/gcc/ada/gcc-interface/decl.c
index e5768950d..58459d4ab 100644
--- a/gcc-4.6/gcc/ada/gcc-interface/decl.c
+++ b/gcc-4.6/gcc/ada/gcc-interface/decl.c
@@ -808,16 +808,30 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
&& No (Address_Clause (gnat_entity))))
&& TREE_CODE (TYPE_SIZE (gnu_type)) == INTEGER_CST)
{
- /* No point in jumping through all the hoops needed in order
+ unsigned int size_cap, align_cap;
+
+ /* No point in promoting the alignment if this doesn't prevent
+ BLKmode access to the object, in particular block copy, as
+ this will for example disable the NRV optimization for it.
+ No point in jumping through all the hoops needed in order
to support BIGGEST_ALIGNMENT if we don't really have to.
So we cap to the smallest alignment that corresponds to
a known efficient memory access pattern of the target. */
- unsigned int align_cap = Is_Atomic (gnat_entity)
- ? BIGGEST_ALIGNMENT
- : get_mode_alignment (ptr_mode);
+ if (Is_Atomic (gnat_entity))
+ {
+ size_cap = UINT_MAX;
+ align_cap = BIGGEST_ALIGNMENT;
+ }
+ else
+ {
+ size_cap = MAX_FIXED_MODE_SIZE;
+ align_cap = get_mode_alignment (ptr_mode);
+ }
if (!host_integerp (TYPE_SIZE (gnu_type), 1)
- || compare_tree_int (TYPE_SIZE (gnu_type), align_cap) >= 0)
+ || compare_tree_int (TYPE_SIZE (gnu_type), size_cap) > 0)
+ align = 0;
+ else if (compare_tree_int (TYPE_SIZE (gnu_type), align_cap) > 0)
align = align_cap;
else
align = ceil_alignment (tree_low_cst (TYPE_SIZE (gnu_type), 1));
@@ -6422,6 +6436,7 @@ maybe_pad_type (tree type, tree size, unsigned int align,
if (align != 0
&& TREE_CODE (type) == RECORD_TYPE
&& TYPE_MODE (type) == BLKmode
+ && !TREE_ADDRESSABLE (type)
&& TREE_CODE (orig_size) == INTEGER_CST
&& !TREE_OVERFLOW (orig_size)
&& compare_tree_int (orig_size, MAX_FIXED_MODE_SIZE) <= 0
diff --git a/gcc-4.6/gcc/ada/gcc-interface/trans.c b/gcc-4.6/gcc/ada/gcc-interface/trans.c
index b60cccf1e..29253958d 100644
--- a/gcc-4.6/gcc/ada/gcc-interface/trans.c
+++ b/gcc-4.6/gcc/ada/gcc-interface/trans.c
@@ -6276,6 +6276,28 @@ gnat_gimplify_expr (tree *expr_p, gimple_seq *pre_p,
return GS_UNHANDLED;
+ case VIEW_CONVERT_EXPR:
+ op = TREE_OPERAND (expr, 0);
+
+ /* If we are view-converting a CONSTRUCTOR or a call from an aggregate
+ type to a scalar one, explicitly create the local temporary. That's
+ required if the type is passed by reference. */
+ if ((TREE_CODE (op) == CONSTRUCTOR || TREE_CODE (op) == CALL_EXPR)
+ && AGGREGATE_TYPE_P (TREE_TYPE (op))
+ && !AGGREGATE_TYPE_P (TREE_TYPE (expr)))
+ {
+ tree mod, new_var = create_tmp_var_raw (TREE_TYPE (op), "C");
+ gimple_add_tmp_var (new_var);
+
+ mod = build2 (INIT_EXPR, TREE_TYPE (new_var), new_var, op);
+ gimplify_and_add (mod, pre_p);
+
+ TREE_OPERAND (expr, 0) = new_var;
+ return GS_OK;
+ }
+
+ return GS_UNHANDLED;
+
case DECL_EXPR:
op = DECL_EXPR_DECL (expr);
diff --git a/gcc-4.6/gcc/ada/gnatvsn.ads b/gcc-4.6/gcc/ada/gnatvsn.ads
index c73824e5f..1224b3b5c 100644
--- a/gcc-4.6/gcc/ada/gnatvsn.ads
+++ b/gcc-4.6/gcc/ada/gnatvsn.ads
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -92,7 +92,7 @@ package Gnatvsn is
Verbose_Library_Version : constant String := "GNAT Lib v" & Library_Version;
-- Version string stored in e.g. ALI files
- Current_Year : constant String := "2010";
+ Current_Year : constant String := "2011";
-- Used in printing copyright messages
end Gnatvsn;
diff --git a/gcc-4.6/gcc/ada/init.c b/gcc-4.6/gcc/ada/init.c
index 9b6370e1a..f6c1a5b4e 100644
--- a/gcc-4.6/gcc/ada/init.c
+++ b/gcc-4.6/gcc/ada/init.c
@@ -2216,12 +2216,33 @@ __gnat_is_stack_guard (mach_vm_address_t addr)
return 0;
}
+#define HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE
+
+void
+__gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED,
+ void *ucontext ATTRIBUTE_UNUSED)
+{
+#if defined (__x86_64__)
+ /* Work around radar #10302855/pr50678, where the unwinders (libunwind or
+ libgcc_s depending on the system revision) and the DWARF unwind data for
+ the sigtramp have different ideas about register numbering (causing rbx
+ and rdx to be transposed).. */
+ ucontext_t *uc = (ucontext_t *)ucontext ;
+ unsigned long t = uc->uc_mcontext->__ss.__rbx;
+
+ uc->uc_mcontext->__ss.__rbx = uc->uc_mcontext->__ss.__rdx;
+ uc->uc_mcontext->__ss.__rdx = t;
+#endif
+}
+
static void
-__gnat_error_handler (int sig, siginfo_t *si, void *ucontext ATTRIBUTE_UNUSED)
+__gnat_error_handler (int sig, siginfo_t *si, void *ucontext)
{
struct Exception_Data *exception;
const char *msg;
+ __gnat_adjust_context_for_raise (sig, ucontext);
+
switch (sig)
{
case SIGSEGV:
diff --git a/gcc-4.6/gcc/ada/mlib-tgt-specific-darwin.adb b/gcc-4.6/gcc/ada/mlib-tgt-specific-darwin.adb
index 5bab21df7..fc6642386 100644
--- a/gcc-4.6/gcc/ada/mlib-tgt-specific-darwin.adb
+++ b/gcc-4.6/gcc/ada/mlib-tgt-specific-darwin.adb
@@ -36,8 +36,6 @@ package body MLib.Tgt.Specific is
-- Non default subprograms
- function Archive_Indexer_Options return String_List_Access;
-
procedure Build_Dynamic_Library
(Ofiles : Argument_List;
Options : Argument_List;
@@ -67,15 +65,6 @@ package body MLib.Tgt.Specific is
(1 => Flat_Namespace'Access,
2 => Shared_Libgcc'Access);
- -----------------------------
- -- Archive_Indexer_Options --
- -----------------------------
-
- function Archive_Indexer_Options return String_List_Access is
- begin
- return new String_List'(1 => new String'("-c"));
- end Archive_Indexer_Options;
-
---------------------------
-- Build_Dynamic_Library --
---------------------------
@@ -180,7 +169,6 @@ package body MLib.Tgt.Specific is
end Is_Archive_Ext;
begin
- Archive_Indexer_Options_Ptr := Archive_Indexer_Options'Access;
Build_Dynamic_Library_Ptr := Build_Dynamic_Library'Access;
DLL_Ext_Ptr := DLL_Ext'Access;
Dynamic_Option_Ptr := Dynamic_Option'Access;
diff --git a/gcc-4.6/gcc/ada/system-darwin-ppc64.ads b/gcc-4.6/gcc/ada/system-darwin-ppc64.ads
new file mode 100644
index 000000000..c4d3c1440
--- /dev/null
+++ b/gcc-4.6/gcc/ada/system-darwin-ppc64.ads
@@ -0,0 +1,149 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME COMPONENTS --
+-- --
+-- S Y S T E M --
+-- --
+-- S p e c --
+-- (Darwin/PPC64 Version) --
+-- --
+-- Copyright (C) 2011, Free Software Foundation, Inc. --
+-- --
+-- This specification is derived from the Ada Reference Manual for use with --
+-- GNAT. The copyright notice above, and the license provisions that follow --
+-- apply solely to the contents of the part following the private keyword. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception, --
+-- version 3.1, as published by the Free Software Foundation. --
+-- --
+-- You should have received a copy of the GNU General Public License and --
+-- a copy of the GCC Runtime Library Exception along with this program; --
+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
+-- <http://www.gnu.org/licenses/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+package System is
+ pragma Pure;
+ -- Note that we take advantage of the implementation permission to make
+ -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
+ -- 2005, this is Pure in any case (AI-362).
+
+ type Name is (SYSTEM_NAME_GNAT);
+ System_Name : constant Name := SYSTEM_NAME_GNAT;
+
+ -- System-Dependent Named Numbers
+
+ Min_Int : constant := Long_Long_Integer'First;
+ Max_Int : constant := Long_Long_Integer'Last;
+
+ Max_Binary_Modulus : constant := 2 ** Long_Long_Integer'Size;
+ Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
+
+ Max_Base_Digits : constant := Long_Long_Float'Digits;
+ Max_Digits : constant := Long_Long_Float'Digits;
+
+ Max_Mantissa : constant := 63;
+ Fine_Delta : constant := 2.0 ** (-Max_Mantissa);
+
+ Tick : constant := 0.01;
+
+ -- Storage-related Declarations
+
+ type Address is private;
+ pragma Preelaborable_Initialization (Address);
+ Null_Address : constant Address;
+
+ Storage_Unit : constant := 8;
+ Word_Size : constant := 64;
+ Memory_Size : constant := 2 ** 64;
+
+ -- Address comparison
+
+ function "<" (Left, Right : Address) return Boolean;
+ function "<=" (Left, Right : Address) return Boolean;
+ function ">" (Left, Right : Address) return Boolean;
+ function ">=" (Left, Right : Address) return Boolean;
+ function "=" (Left, Right : Address) return Boolean;
+
+ pragma Import (Intrinsic, "<");
+ pragma Import (Intrinsic, "<=");
+ pragma Import (Intrinsic, ">");
+ pragma Import (Intrinsic, ">=");
+ pragma Import (Intrinsic, "=");
+
+ -- Other System-Dependent Declarations
+
+ type Bit_Order is (High_Order_First, Low_Order_First);
+ Default_Bit_Order : constant Bit_Order := High_Order_First;
+ pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
+
+ -- Priority-related Declarations (RM D.1)
+
+ -- The values defined here are copied from the ppc version.
+
+ Max_Interrupt_Priority : constant Positive := 63;
+ Max_Priority : constant Positive := Max_Interrupt_Priority - 1;
+
+ subtype Any_Priority is Integer range 0 .. Max_Interrupt_Priority;
+ subtype Priority is Any_Priority range 0 .. Max_Priority;
+ subtype Interrupt_Priority is Any_Priority
+ range Priority'Last + 1 .. Max_Interrupt_Priority;
+
+ Default_Priority : constant Priority :=
+ (Priority'Last - Priority'First) / 2;
+
+private
+
+ type Address is mod Memory_Size;
+ Null_Address : constant Address := 0;
+
+ --------------------------------------
+ -- System Implementation Parameters --
+ --------------------------------------
+
+ -- These parameters provide information about the target that is used
+ -- by the compiler. They are in the private part of System, where they
+ -- can be accessed using the special circuitry in the Targparm unit
+ -- whose source should be consulted for more detailed descriptions
+ -- of the individual switch values.
+
+ Backend_Divide_Checks : constant Boolean := False;
+ Backend_Overflow_Checks : constant Boolean := True;
+ Command_Line_Args : constant Boolean := True;
+ Configurable_Run_Time : constant Boolean := False;
+ Denorm : constant Boolean := True;
+ Duration_32_Bits : constant Boolean := False;
+ Exit_Status_Supported : constant Boolean := True;
+ Fractional_Fixed_Ops : constant Boolean := False;
+ Frontend_Layout : constant Boolean := False;
+ Machine_Overflows : constant Boolean := False;
+ Machine_Rounds : constant Boolean := True;
+ Preallocated_Stacks : constant Boolean := False;
+ Signed_Zeros : constant Boolean := True;
+ Stack_Check_Default : constant Boolean := False;
+ Stack_Check_Probes : constant Boolean := False;
+ Stack_Check_Limits : constant Boolean := False;
+ Support_64_Bit_Divides : constant Boolean := True;
+ Support_Aggregates : constant Boolean := True;
+ Support_Composite_Assign : constant Boolean := True;
+ Support_Composite_Compare : constant Boolean := True;
+ Support_Long_Shifts : constant Boolean := True;
+ Always_Compatible_Rep : constant Boolean := False;
+ Suppress_Standard_Library : constant Boolean := False;
+ Use_Ada_Main_Program_Name : constant Boolean := False;
+ ZCX_By_Default : constant Boolean := True;
+ GCC_ZCX_Support : constant Boolean := True;
+
+end System;
diff --git a/gcc-4.6/gcc/ada/tracebak.c b/gcc-4.6/gcc/ada/tracebak.c
index c16741de7..d1f74b4f4 100644
--- a/gcc-4.6/gcc/ada/tracebak.c
+++ b/gcc-4.6/gcc/ada/tracebak.c
@@ -199,10 +199,24 @@ extern void (*Unlock_Task) (void);
*/
-/*--------------------------- PPC AIX/Darwin ----------------------------*/
+/*--------------------------- Darwin 8 or newer ----------------------------*/
+#if defined (__APPLE__) \
+ && defined (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) \
+ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1040
+
+#define USE_GCC_UNWINDER
+
+#if defined (__i386__) || defined (__x86_64__)
+#define PC_ADJUST -2
+#elif defined (__ppc__) || defined (__ppc64__)
+#define PC_ADJUST -4
+#else
+#error Unhandled darwin architecture.
+#endif
-#if ((defined (_POWER) && defined (_AIX)) || \
-(defined (__ppc__) && defined (__APPLE__)))
+/*------------------------ PPC AIX/Older Darwin -------------------------*/
+#elif ((defined (_POWER) && defined (_AIX)) \
+ || (defined (__APPLE__) && defined (__ppc__)))
#define USE_GENERIC_UNWINDER
diff --git a/gcc-4.6/gcc/basic-block.h b/gcc-4.6/gcc/basic-block.h
index 1544e4c76..4de6a50e7 100644
--- a/gcc-4.6/gcc/basic-block.h
+++ b/gcc-4.6/gcc/basic-block.h
@@ -744,6 +744,7 @@ extern struct edge_list *pre_edge_rev_lcm (int, sbitmap *,
extern void compute_available (sbitmap *, sbitmap *, sbitmap *, sbitmap *);
/* In predict.c */
+extern bool maybe_hot_count_p (gcov_type);
extern bool maybe_hot_bb_p (const_basic_block);
extern bool maybe_hot_edge_p (edge);
extern bool probably_never_executed_bb_p (const_basic_block);
diff --git a/gcc-4.6/gcc/builtins.c b/gcc-4.6/gcc/builtins.c
index 3361264c4..fd996113e 100644
--- a/gcc-4.6/gcc/builtins.c
+++ b/gcc-4.6/gcc/builtins.c
@@ -4117,9 +4117,9 @@ expand_builtin_bzero (tree exp)
}
/* Expand expression EXP, which is a call to the memcmp built-in function.
- Return NULL_RTX if we failed and the
- caller should emit a normal call, otherwise try to get the result in
- TARGET, if convenient (and in mode MODE, if that's convenient). */
+ Return NULL_RTX if we failed and the caller should emit a normal call,
+ otherwise try to get the result in TARGET, if convenient (and in mode
+ MODE, if that's convenient). */
static rtx
expand_builtin_memcmp (tree exp, ATTRIBUTE_UNUSED rtx target,
@@ -4131,7 +4131,10 @@ expand_builtin_memcmp (tree exp, ATTRIBUTE_UNUSED rtx target,
POINTER_TYPE, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
return NULL_RTX;
-#if defined HAVE_cmpmemsi || defined HAVE_cmpstrnsi
+ /* Note: The cmpstrnsi pattern, if it exists, is not suitable for
+ implementing memcmp because it will stop if it encounters two
+ zero bytes. */
+#if defined HAVE_cmpmemsi
{
rtx arg1_rtx, arg2_rtx, arg3_rtx;
rtx result;
@@ -4146,16 +4149,9 @@ expand_builtin_memcmp (tree exp, ATTRIBUTE_UNUSED rtx target,
= get_pointer_alignment (arg2, BIGGEST_ALIGNMENT) / BITS_PER_UNIT;
enum machine_mode insn_mode;
-#ifdef HAVE_cmpmemsi
if (HAVE_cmpmemsi)
insn_mode = insn_data[(int) CODE_FOR_cmpmemsi].operand[0].mode;
else
-#endif
-#ifdef HAVE_cmpstrnsi
- if (HAVE_cmpstrnsi)
- insn_mode = insn_data[(int) CODE_FOR_cmpstrnsi].operand[0].mode;
- else
-#endif
return NULL_RTX;
/* If we don't have POINTER_TYPE, call the function. */
@@ -4180,18 +4176,10 @@ expand_builtin_memcmp (tree exp, ATTRIBUTE_UNUSED rtx target,
set_mem_size (arg2_rtx, arg3_rtx);
}
-#ifdef HAVE_cmpmemsi
if (HAVE_cmpmemsi)
insn = gen_cmpmemsi (result, arg1_rtx, arg2_rtx, arg3_rtx,
GEN_INT (MIN (arg1_align, arg2_align)));
else
-#endif
-#ifdef HAVE_cmpstrnsi
- if (HAVE_cmpstrnsi)
- insn = gen_cmpstrnsi (result, arg1_rtx, arg2_rtx, arg3_rtx,
- GEN_INT (MIN (arg1_align, arg2_align)));
- else
-#endif
gcc_unreachable ();
if (insn)
@@ -4217,7 +4205,7 @@ expand_builtin_memcmp (tree exp, ATTRIBUTE_UNUSED rtx target,
else
return convert_to_mode (mode, result, 0);
}
-#endif
+#endif /* HAVE_cmpmemsi. */
return NULL_RTX;
}
@@ -10772,7 +10760,7 @@ fold_builtin_varargs (location_t loc, tree fndecl, tree exp,
been inlined, otherwise e.g. -D_FORTIFY_SOURCE checking
might not be performed. */
-static bool
+bool
avoid_folding_inline_builtin (tree fndecl)
{
return (DECL_DECLARED_INLINE_P (fndecl)
diff --git a/gcc-4.6/gcc/c-decl.c b/gcc-4.6/gcc/c-decl.c
index 3706d3cd0..e3f02c597 100644
--- a/gcc-4.6/gcc/c-decl.c
+++ b/gcc-4.6/gcc/c-decl.c
@@ -745,7 +745,7 @@ c_finish_incomplete_decl (tree decl)
complete_array_type (&TREE_TYPE (decl), NULL_TREE, true);
- layout_decl (decl, 0);
+ relayout_decl (decl);
}
}
}
@@ -1234,7 +1234,7 @@ pop_scope (void)
BLOCK_VARS (block) = p;
}
}
- else if (VAR_OR_FUNCTION_DECL_P (p))
+ else if (VAR_OR_FUNCTION_DECL_P (p) && scope != file_scope)
{
/* For block local externs add a special
DECL_EXTERNAL decl for debug info generation. */
@@ -4346,7 +4346,7 @@ finish_decl (tree decl, location_t init_loc, tree init,
if (DECL_INITIAL (decl))
TREE_TYPE (DECL_INITIAL (decl)) = type;
- layout_decl (decl, 0);
+ relayout_decl (decl);
}
if (TREE_CODE (decl) == VAR_DECL)
@@ -9880,6 +9880,9 @@ collect_source_ref_cb (tree decl)
collect_source_ref (LOCATION_FILE (decl_sloc (decl, false)));
}
+/* Preserve the external declarations scope across a garbage collect. */
+static GTY(()) tree ext_block;
+
/* Collect all references relevant to SOURCE_FILE. */
static void
@@ -9890,6 +9893,8 @@ collect_all_refs (const char *source_file)
FOR_EACH_VEC_ELT (tree, all_translation_units, i, t)
collect_ada_nodes (BLOCK_VARS (DECL_INITIAL (t)), source_file);
+
+ collect_ada_nodes (BLOCK_VARS (ext_block), source_file);
}
/* Iterate over all global declarations and call CALLBACK. */
@@ -9908,10 +9913,10 @@ for_each_global_decl (void (*callback) (tree decl))
for (decl = BLOCK_VARS (decls); decl; decl = TREE_CHAIN (decl))
callback (decl);
}
-}
-/* Preserve the external declarations scope across a garbage collect. */
-static GTY(()) tree ext_block;
+ for (decl = BLOCK_VARS (ext_block); decl; decl = TREE_CHAIN (decl))
+ callback (decl);
+}
void
c_write_global_declarations (void)
diff --git a/gcc-4.6/gcc/c-family/ChangeLog b/gcc-4.6/gcc/c-family/ChangeLog
index 66fa7b7cc..cb1d017ca 100644
--- a/gcc-4.6/gcc/c-family/ChangeLog
+++ b/gcc-4.6/gcc/c-family/ChangeLog
@@ -1,3 +1,25 @@
+2011-11-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR c++/50608
+ * c-common.c (c_fully_fold_internal) <ADDR_EXPR>: Call fold_offsetof_1.
+ (fold_offsetof_1): Make global. Remove STOP_REF argument and adjust.
+ <INDIRECT_REF>: Return the argument.
+ <ARRAY_REF>: Remove special code for negative offset.
+ Call fold_build_pointer_plus instead of size_binop.
+ (fold_offsetof): Remove STOP_REF argument and adjust.
+ * c-common.h (fold_offsetof_1): Declare.
+ (fold_offsetof): Remove STOP_REF argument.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-09-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR middle-end/50266
+ * c-common.c (c_fully_fold_internal) <ADDR_EXPR>: Fold offsetof-like
+ computations.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/gcc/c-family/ChangeLog.google-4_6 b/gcc-4.6/gcc/c-family/ChangeLog.google-4_6
new file mode 100644
index 000000000..23679871f
--- /dev/null
+++ b/gcc-4.6/gcc/c-family/ChangeLog.google-4_6
@@ -0,0 +1,39 @@
+2011-12-19 Sterling Augustine <saugustine@google.com>
+
+ Backport from google/main
+
+ * c-pretty-print.c (pp_c_specifier_qualifier_list): Move conditional
+ from beginning to end.
+
+2011-12-06 Jeffrey Yasskin <jyasskin@google.com>
+
+ Backport from rev 180707
+
+ 2011-10-31 Jason Merrill <jason@redhat.com>
+
+ PR c++/50920
+ * c-common.h (cxx_dialect): Add cxx11 and cxx03.
+ * c.opt: Add -std=c++11, -std=gnu++11, -std=gnu++03,
+ and -Wc++11-compat.
+ * c-opts.c (set_std_cxx11): Rename from set_std_cxx0x.
+
+2011-11-02 Jeffrey Yasskin <jyasskin@google.com>
+
+ Backport from rev 176665
+
+ 2011-07-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/49793
+ * c.opt (Wnarrowing): New.
+
+2011-10-17 Dehao Chen <dehao@google.com>
+ * c-opts.c (c_common_parse_file): Write the options to
+ .gnu.switches.text sections.
+
+2011-09-15 Easwaran Raman <eraman@google.com>
+
+ Backport r176741 from trunk.
+
+ 2011-07-25 Romain Geissler <romain.geissler@gmail.com>
+
+ * c-pretty-print.h: Search c-common.h in c-family.
diff --git a/gcc-4.6/gcc/c-family/c-common.c b/gcc-4.6/gcc/c-family/c-common.c
index 011df8f0a..1429eee7c 100644
--- a/gcc-4.6/gcc/c-family/c-common.c
+++ b/gcc-4.6/gcc/c-family/c-common.c
@@ -1295,7 +1295,15 @@ c_fully_fold_internal (tree expr, bool in_init, bool *maybe_const_operands,
STRIP_TYPE_NOPS (op0);
if (code != ADDR_EXPR && code != REALPART_EXPR && code != IMAGPART_EXPR)
op0 = decl_constant_value_for_optimization (op0);
- if (op0 != orig_op0 || in_init)
+ /* ??? Cope with user tricks that amount to offsetof. The middle-end is
+ not prepared to deal with them if they occur in initializers. */
+ if (op0 != orig_op0
+ && code == ADDR_EXPR
+ && (op1 = get_base_address (op0)) != NULL_TREE
+ && TREE_CODE (op1) == INDIRECT_REF
+ && TREE_CONSTANT (TREE_OPERAND (op1, 0)))
+ ret = fold_convert_loc (loc, TREE_TYPE (expr), fold_offsetof_1 (op0));
+ else if (op0 != orig_op0 || in_init)
ret = in_init
? fold_build1_initializer_loc (loc, code, TREE_TYPE (expr), op0)
: fold_build1_loc (loc, code, TREE_TYPE (expr), op0);
@@ -9285,20 +9293,15 @@ c_common_to_target_charset (HOST_WIDE_INT c)
return uc;
}
-/* Build the result of __builtin_offsetof. EXPR is a nested sequence of
- component references, with STOP_REF, or alternatively an INDIRECT_REF of
- NULL, at the bottom; much like the traditional rendering of offsetof as a
- macro. Returns the folded and properly cast result. */
+/* Fold an offsetof-like expression. EXPR is a nested sequence of component
+ references with an INDIRECT_REF of a constant at the bottom; much like the
+ traditional rendering of offsetof as a macro. Return the folded result. */
-static tree
-fold_offsetof_1 (tree expr, tree stop_ref)
+tree
+fold_offsetof_1 (tree expr)
{
- enum tree_code code = PLUS_EXPR;
tree base, off, t;
- if (expr == stop_ref && TREE_CODE (expr) != ERROR_MARK)
- return size_zero_node;
-
switch (TREE_CODE (expr))
{
case ERROR_MARK:
@@ -9315,15 +9318,15 @@ fold_offsetof_1 (tree expr, tree stop_ref)
case NOP_EXPR:
case INDIRECT_REF:
- if (!integer_zerop (TREE_OPERAND (expr, 0)))
+ if (!TREE_CONSTANT (TREE_OPERAND (expr, 0)))
{
error ("cannot apply %<offsetof%> to a non constant address");
return error_mark_node;
}
- return size_zero_node;
+ return TREE_OPERAND (expr, 0);
case COMPONENT_REF:
- base = fold_offsetof_1 (TREE_OPERAND (expr, 0), stop_ref);
+ base = fold_offsetof_1 (TREE_OPERAND (expr, 0));
if (base == error_mark_node)
return base;
@@ -9341,21 +9344,14 @@ fold_offsetof_1 (tree expr, tree stop_ref)
break;
case ARRAY_REF:
- base = fold_offsetof_1 (TREE_OPERAND (expr, 0), stop_ref);
+ base = fold_offsetof_1 (TREE_OPERAND (expr, 0));
if (base == error_mark_node)
return base;
t = TREE_OPERAND (expr, 1);
- if (TREE_CODE (t) == INTEGER_CST && tree_int_cst_sgn (t) < 0)
- {
- code = MINUS_EXPR;
- t = fold_build1_loc (input_location, NEGATE_EXPR, TREE_TYPE (t), t);
- }
- t = convert (sizetype, t);
- off = size_binop (MULT_EXPR, TYPE_SIZE_UNIT (TREE_TYPE (expr)), t);
/* Check if the offset goes beyond the upper bound of the array. */
- if (code == PLUS_EXPR && TREE_CODE (t) == INTEGER_CST)
+ if (TREE_CODE (t) == INTEGER_CST && tree_int_cst_sgn (t) >= 0)
{
tree upbound = array_ref_up_bound (expr);
if (upbound != NULL_TREE
@@ -9395,26 +9391,30 @@ fold_offsetof_1 (tree expr, tree stop_ref)
}
}
}
+
+ t = convert (sizetype, t);
+ off = size_binop (MULT_EXPR, TYPE_SIZE_UNIT (TREE_TYPE (expr)), t);
break;
case COMPOUND_EXPR:
/* Handle static members of volatile structs. */
t = TREE_OPERAND (expr, 1);
gcc_assert (TREE_CODE (t) == VAR_DECL);
- return fold_offsetof_1 (t, stop_ref);
+ return fold_offsetof_1 (t);
default:
gcc_unreachable ();
}
- return size_binop (code, base, off);
+ return fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (base), base, off);
}
+/* Likewise, but convert it to the return type of offsetof. */
+
tree
-fold_offsetof (tree expr, tree stop_ref)
+fold_offsetof (tree expr)
{
- /* Convert back from the internal sizetype to size_t. */
- return convert (size_type_node, fold_offsetof_1 (expr, stop_ref));
+ return convert (size_type_node, fold_offsetof_1 (expr));
}
/* Warn for A ?: C expressions (with B omitted) where A is a boolean
diff --git a/gcc-4.6/gcc/c-family/c-common.h b/gcc-4.6/gcc/c-family/c-common.h
index 566aba726..0bddae175 100644
--- a/gcc-4.6/gcc/c-family/c-common.h
+++ b/gcc-4.6/gcc/c-family/c-common.h
@@ -607,11 +607,12 @@ extern int flag_use_repository;
/* The supported C++ dialects. */
enum cxx_dialect {
- /* C++98 */
+ /* C++98 with TC1 */
cxx98,
- /* Experimental features that are likely to become part of
- C++0x. */
- cxx0x
+ cxx03 = cxx98,
+ /* C++11 */
+ cxx0x,
+ cxx11 = cxx0x
};
/* The C++ dialect being used. C++98 is the default. */
@@ -916,7 +917,8 @@ extern bool c_dump_tree (void *, tree);
extern void verify_sequence_points (tree);
-extern tree fold_offsetof (tree, tree);
+extern tree fold_offsetof_1 (tree);
+extern tree fold_offsetof (tree);
/* Places where an lvalue, or modifiable lvalue, may be required.
Used to select diagnostic messages in lvalue_error and
diff --git a/gcc-4.6/gcc/c-family/c-opts.c b/gcc-4.6/gcc/c-family/c-opts.c
index 994bf9040..5db3bd8fd 100644
--- a/gcc-4.6/gcc/c-family/c-opts.c
+++ b/gcc-4.6/gcc/c-family/c-opts.c
@@ -108,7 +108,7 @@ static size_t include_cursor;
static void handle_OPT_d (const char *);
static void set_std_cxx98 (int);
-static void set_std_cxx0x (int);
+static void set_std_cxx11 (int);
static void set_std_c89 (int, int);
static void set_std_c99 (int);
static void set_std_c1x (int);
@@ -757,10 +757,10 @@ c_common_handle_option (size_t scode, const char *arg, int value,
set_std_cxx98 (code == OPT_std_c__98 /* ISO */);
break;
- case OPT_std_c__0x:
- case OPT_std_gnu__0x:
+ case OPT_std_c__11:
+ case OPT_std_gnu__11:
if (!preprocessing_asm_p)
- set_std_cxx0x (code == OPT_std_c__0x /* ISO */);
+ set_std_cxx11 (code == OPT_std_c__11 /* ISO */);
break;
case OPT_std_c90:
@@ -1088,8 +1088,9 @@ lipo_max_mem_reached (unsigned int i)
> (size_t) PARAM_VALUE (PARAM_MAX_LIPO_MEMORY))) {
i++;
do {
- inform (input_location, "Not importing %s: maximum memory "
- "consumption reached", in_fnames[i]);
+ if (flag_opt_info >= OPT_INFO_MED)
+ inform (input_location, "Not importing %s: maximum memory "
+ "consumption reached", in_fnames[i]);
i++;
} while (i < num_in_fnames);
return true;
@@ -1109,6 +1110,8 @@ c_common_parse_file (void)
for (;;)
{
c_finish_options ();
+ if (flag_record_gcc_switches_in_elf && i == 0)
+ write_opts_to_asm ();
pch_init ();
set_lipo_c_parsing_context (parse_in, i, verbose);
push_file_scope ();
@@ -1522,15 +1525,15 @@ set_std_cxx98 (int iso)
cxx_dialect = cxx98;
}
-/* Set the C++ 0x working draft "standard" (without GNU extensions if ISO). */
+/* Set the C++ 2011 standard (without GNU extensions if ISO). */
static void
-set_std_cxx0x (int iso)
+set_std_cxx11 (int iso)
{
- cpp_set_lang (parse_in, iso ? CLK_CXX0X: CLK_GNUCXX0X);
+ cpp_set_lang (parse_in, iso ? CLK_CXX11: CLK_GNUCXX11);
flag_no_gnu_keywords = iso;
flag_no_nonansi_builtin = iso;
flag_iso = iso;
- cxx_dialect = cxx0x;
+ cxx_dialect = cxx11;
}
/* Args to -d specify what to dump. Silently ignore
diff --git a/gcc-4.6/gcc/c-family/c-pretty-print.c b/gcc-4.6/gcc/c-family/c-pretty-print.c
index 74b897a85..278927c95 100644
--- a/gcc-4.6/gcc/c-family/c-pretty-print.c
+++ b/gcc-4.6/gcc/c-family/c-pretty-print.c
@@ -445,8 +445,6 @@ pp_c_specifier_qualifier_list (c_pretty_printer *pp, tree t)
{
const enum tree_code code = TREE_CODE (t);
- if (TREE_CODE (t) != POINTER_TYPE)
- pp_c_type_qualifier_list (pp, t);
switch (code)
{
case REFERENCE_TYPE:
@@ -491,6 +489,8 @@ pp_c_specifier_qualifier_list (c_pretty_printer *pp, tree t)
pp_simple_type_specifier (pp, t);
break;
}
+ if (TREE_CODE (t) != POINTER_TYPE)
+ pp_c_type_qualifier_list (pp, t);
}
/* parameter-type-list:
diff --git a/gcc-4.6/gcc/c-family/c-pretty-print.h b/gcc-4.6/gcc/c-family/c-pretty-print.h
index f0daa4aef..ed6e9b5d4 100644
--- a/gcc-4.6/gcc/c-family/c-pretty-print.h
+++ b/gcc-4.6/gcc/c-family/c-pretty-print.h
@@ -23,7 +23,7 @@ along with GCC; see the file COPYING3. If not see
#define GCC_C_PRETTY_PRINTER
#include "tree.h"
-#include "c-common.h"
+#include "c-family/c-common.h"
#include "pretty-print.h"
diff --git a/gcc-4.6/gcc/c-family/c.opt b/gcc-4.6/gcc/c-family/c.opt
index eff66fdc7..651e5c335 100644
--- a/gcc-4.6/gcc/c-family/c.opt
+++ b/gcc-4.6/gcc/c-family/c.opt
@@ -289,7 +289,11 @@ Warn about C constructs that are not in the common subset of C and C++
Wc++0x-compat
C++ ObjC++ Var(warn_cxx0x_compat) Warning
-Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 200x
+Deprecated in favor of -Wc++11-compat
+
+Wc++11-compat
+C++ ObjC++ Warning Alias(Wc++0x-compat)
+Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011
Wcast-qual
C ObjC C++ ObjC++ Var(warn_cast_qual) Warning
@@ -493,6 +497,10 @@ Wmultichar
C ObjC C++ ObjC++ Warning
Warn about use of multi-character character constants
+Wnarrowing
+C ObjC C++ ObjC++ Warning Var(warn_narrowing) Init(1)
+-Wno-narrowing In C++0x mode, ignore ill-formed narrowing conversions within { }
+
Wnested-externs
C ObjC Var(warn_nested_externs) Warning
Warn about \"extern\" declarations not at file scope
@@ -1151,12 +1159,13 @@ std=c++03
C++ ObjC++ Alias(std=c++98)
Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum
-std=c++0x
+std=c++11
C++ ObjC++
-Conform to the ISO 1998 C++ standard, with extensions that are likely to
-become a part of the upcoming ISO C++ standard, dubbed C++0x. Note that the
-extensions enabled by this mode are experimental and may be removed in
-future releases of GCC.
+Conform to the ISO 2011 C++ standard (experimental and incomplete support)
+
+std=c++0x
+C++ ObjC++ Alias(std=c++11)
+Deprecated in favor of -std=c++11
std=c1x
C ObjC
@@ -1180,14 +1189,21 @@ Deprecated in favor of -std=c99
std=gnu++98
C++ ObjC++
-Conform to the ISO 1998 C++ standard with GNU extensions
+Conform to the ISO 1998 C++ standard revised by the 2003 technical
+corrigendum with GNU extensions
-std=gnu++0x
+std=gnu++03
+C++ ObjC++ Alias(std=gnu++98)
+Conform to the ISO 1998 C++ standard revised by the 2003 technical
+corrigendum with GNU extensions
+
+std=gnu++11
C++ ObjC++
-Conform to the ISO 1998 C++ standard, with GNU extensions and
-extensions that are likely to become a part of the upcoming ISO C++
-standard, dubbed C++0x. Note that the extensions enabled by this mode
-are experimental and may be removed in future releases of GCC.
+Conform to the ISO 2011 C++ standard with GNU extensions (experimental and incomplete support)
+
+std=gnu++0x
+C++ ObjC++ Alias(std=gnu++11)
+Deprecated in favor of -std=gnu++11
std=gnu1x
C ObjC
diff --git a/gcc-4.6/gcc/c-parser.c b/gcc-4.6/gcc/c-parser.c
index 49b1f4372..ca4d557a5 100644
--- a/gcc-4.6/gcc/c-parser.c
+++ b/gcc-4.6/gcc/c-parser.c
@@ -6306,7 +6306,7 @@ c_parser_postfix_expression (c_parser *parser)
c_parser_error (parser, "expected identifier");
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
"expected %<)%>");
- expr.value = fold_offsetof (offsetof_ref, NULL_TREE);
+ expr.value = fold_offsetof (offsetof_ref);
}
break;
case RID_CHOOSE_EXPR:
diff --git a/gcc-4.6/gcc/c-typeck.c b/gcc-4.6/gcc/c-typeck.c
index 0392b93bc..c86cfe984 100644
--- a/gcc-4.6/gcc/c-typeck.c
+++ b/gcc-4.6/gcc/c-typeck.c
@@ -3831,11 +3831,7 @@ build_unary_op (location_t location,
if (val && TREE_CODE (val) == INDIRECT_REF
&& TREE_CONSTANT (TREE_OPERAND (val, 0)))
{
- tree op0 = fold_convert_loc (location, sizetype,
- fold_offsetof (arg, val)), op1;
-
- op1 = fold_convert_loc (location, argtype, TREE_OPERAND (val, 0));
- ret = fold_build2_loc (location, POINTER_PLUS_EXPR, argtype, op1, op0);
+ ret = fold_convert_loc (location, argtype, fold_offsetof_1 (arg));
goto return_build_unary_op;
}
@@ -9124,7 +9120,11 @@ c_process_expr_stmt (location_t loc, tree expr)
exprv = expr;
while (TREE_CODE (exprv) == COMPOUND_EXPR)
exprv = TREE_OPERAND (exprv, 1);
- if (DECL_P (exprv) || handled_component_p (exprv))
+ while (CONVERT_EXPR_P (exprv))
+ exprv = TREE_OPERAND (exprv, 0);
+ if (DECL_P (exprv)
+ || handled_component_p (exprv)
+ || TREE_CODE (exprv) == ADDR_EXPR)
mark_exp_read (exprv);
/* If the expression is not of a type to which we cannot assign a line
diff --git a/gcc-4.6/gcc/calls.c b/gcc-4.6/gcc/calls.c
index 0909524c8..ac8279d9f 100644
--- a/gcc-4.6/gcc/calls.c
+++ b/gcc-4.6/gcc/calls.c
@@ -1550,6 +1550,131 @@ rtx_for_function_call (tree fndecl, tree addr)
return funexp;
}
+/* Internal state for internal_arg_pointer_based_exp and its helpers. */
+static struct
+{
+ /* Last insn that has been scanned by internal_arg_pointer_based_exp_scan,
+ or NULL_RTX if none has been scanned yet. */
+ rtx scan_start;
+ /* Vector indexed by REGNO - FIRST_PSEUDO_REGISTER, recording if a pseudo is
+ based on crtl->args.internal_arg_pointer. The element is NULL_RTX if the
+ pseudo isn't based on it, a CONST_INT offset if the pseudo is based on it
+ with fixed offset, or PC if this is with variable or unknown offset. */
+ VEC(rtx, heap) *cache;
+} internal_arg_pointer_exp_state;
+
+static rtx internal_arg_pointer_based_exp (rtx, bool);
+
+/* Helper function for internal_arg_pointer_based_exp. Scan insns in
+ the tail call sequence, starting with first insn that hasn't been
+ scanned yet, and note for each pseudo on the LHS whether it is based
+ on crtl->args.internal_arg_pointer or not, and what offset from that
+ that pointer it has. */
+
+static void
+internal_arg_pointer_based_exp_scan (void)
+{
+ rtx insn, scan_start = internal_arg_pointer_exp_state.scan_start;
+
+ if (scan_start == NULL_RTX)
+ insn = get_insns ();
+ else
+ insn = NEXT_INSN (scan_start);
+
+ while (insn)
+ {
+ rtx set = single_set (insn);
+ if (set && REG_P (SET_DEST (set)) && !HARD_REGISTER_P (SET_DEST (set)))
+ {
+ rtx val = NULL_RTX;
+ unsigned int idx = REGNO (SET_DEST (set)) - FIRST_PSEUDO_REGISTER;
+ /* Punt on pseudos set multiple times. */
+ if (idx < VEC_length (rtx, internal_arg_pointer_exp_state.cache)
+ && (VEC_index (rtx, internal_arg_pointer_exp_state.cache, idx)
+ != NULL_RTX))
+ val = pc_rtx;
+ else
+ val = internal_arg_pointer_based_exp (SET_SRC (set), false);
+ if (val != NULL_RTX)
+ {
+ if (idx
+ >= VEC_length (rtx, internal_arg_pointer_exp_state.cache))
+ VEC_safe_grow_cleared (rtx, heap,
+ internal_arg_pointer_exp_state.cache,
+ idx + 1);
+ VEC_replace (rtx, internal_arg_pointer_exp_state.cache,
+ idx, val);
+ }
+ }
+ if (NEXT_INSN (insn) == NULL_RTX)
+ scan_start = insn;
+ insn = NEXT_INSN (insn);
+ }
+
+ internal_arg_pointer_exp_state.scan_start = scan_start;
+}
+
+/* Helper function for internal_arg_pointer_based_exp, called through
+ for_each_rtx. Return 1 if *LOC is a register based on
+ crtl->args.internal_arg_pointer. Return -1 if *LOC is not based on it
+ and the subexpressions need not be examined. Otherwise return 0. */
+
+static int
+internal_arg_pointer_based_exp_1 (rtx *loc, void *data ATTRIBUTE_UNUSED)
+{
+ if (REG_P (*loc) && internal_arg_pointer_based_exp (*loc, false) != NULL_RTX)
+ return 1;
+ if (MEM_P (*loc))
+ return -1;
+ return 0;
+}
+
+/* Compute whether RTL is based on crtl->args.internal_arg_pointer. Return
+ NULL_RTX if RTL isn't based on it, a CONST_INT offset if RTL is based on
+ it with fixed offset, or PC if this is with variable or unknown offset.
+ TOPLEVEL is true if the function is invoked at the topmost level. */
+
+static rtx
+internal_arg_pointer_based_exp (rtx rtl, bool toplevel)
+{
+ if (CONSTANT_P (rtl))
+ return NULL_RTX;
+
+ if (rtl == crtl->args.internal_arg_pointer)
+ return const0_rtx;
+
+ if (REG_P (rtl) && HARD_REGISTER_P (rtl))
+ return NULL_RTX;
+
+ if (GET_CODE (rtl) == PLUS && CONST_INT_P (XEXP (rtl, 1)))
+ {
+ rtx val = internal_arg_pointer_based_exp (XEXP (rtl, 0), toplevel);
+ if (val == NULL_RTX || val == pc_rtx)
+ return val;
+ return plus_constant (val, INTVAL (XEXP (rtl, 1)));
+ }
+
+ /* When called at the topmost level, scan pseudo assignments in between the
+ last scanned instruction in the tail call sequence and the latest insn
+ in that sequence. */
+ if (toplevel)
+ internal_arg_pointer_based_exp_scan ();
+
+ if (REG_P (rtl))
+ {
+ unsigned int idx = REGNO (rtl) - FIRST_PSEUDO_REGISTER;
+ if (idx < VEC_length (rtx, internal_arg_pointer_exp_state.cache))
+ return VEC_index (rtx, internal_arg_pointer_exp_state.cache, idx);
+
+ return NULL_RTX;
+ }
+
+ if (for_each_rtx (&rtl, internal_arg_pointer_based_exp_1, NULL))
+ return pc_rtx;
+
+ return NULL_RTX;
+}
+
/* Return true if and only if SIZE storage units (usually bytes)
starting from address ADDR overlap with already clobbered argument
area. This function is used to determine if we should give up a
@@ -1559,20 +1684,22 @@ static bool
mem_overlaps_already_clobbered_arg_p (rtx addr, unsigned HOST_WIDE_INT size)
{
HOST_WIDE_INT i;
+ rtx val;
- if (addr == crtl->args.internal_arg_pointer)
- i = 0;
- else if (GET_CODE (addr) == PLUS
- && XEXP (addr, 0) == crtl->args.internal_arg_pointer
- && CONST_INT_P (XEXP (addr, 1)))
- i = INTVAL (XEXP (addr, 1));
- /* Return true for arg pointer based indexed addressing. */
- else if (GET_CODE (addr) == PLUS
- && (XEXP (addr, 0) == crtl->args.internal_arg_pointer
- || XEXP (addr, 1) == crtl->args.internal_arg_pointer))
+ if (sbitmap_empty_p (stored_args_map))
+ return false;
+ val = internal_arg_pointer_based_exp (addr, true);
+ if (val == NULL_RTX)
+ return false;
+ else if (val == pc_rtx)
return true;
else
- return false;
+ i = INTVAL (val);
+#ifdef STACK_GROWS_DOWNWARD
+ i -= crtl->args.pretend_args_size;
+#else
+ i += crtl->args.pretend_args_size;
+#endif
#ifdef ARGS_GROW_DOWNWARD
i = -i - size;
@@ -3177,6 +3304,8 @@ expand_call (tree exp, rtx target, int ignore)
}
sbitmap_free (stored_args_map);
+ internal_arg_pointer_exp_state.scan_start = NULL_RTX;
+ VEC_free (rtx, heap, internal_arg_pointer_exp_state.cache);
}
else
{
diff --git a/gcc-4.6/gcc/cfgcleanup.c b/gcc-4.6/gcc/cfgcleanup.c
index aaa0ea5d2..0a6449800 100644
--- a/gcc-4.6/gcc/cfgcleanup.c
+++ b/gcc-4.6/gcc/cfgcleanup.c
@@ -1969,7 +1969,14 @@ try_head_merge_bb (basic_block bb)
cond = get_condition (jump, &move_before, true, false);
if (cond == NULL_RTX)
- move_before = jump;
+ {
+#ifdef HAVE_cc0
+ if (reg_mentioned_p (cc0_rtx, jump))
+ move_before = prev_nonnote_nondebug_insn (jump);
+ else
+#endif
+ move_before = jump;
+ }
for (ix = 0; ix < nedges; ix++)
if (EDGE_SUCC (bb, ix)->dest == EXIT_BLOCK_PTR)
@@ -2131,7 +2138,14 @@ try_head_merge_bb (basic_block bb)
jump = BB_END (final_dest_bb);
cond = get_condition (jump, &move_before, true, false);
if (cond == NULL_RTX)
- move_before = jump;
+ {
+#ifdef HAVE_cc0
+ if (reg_mentioned_p (cc0_rtx, jump))
+ move_before = prev_nonnote_nondebug_insn (jump);
+ else
+#endif
+ move_before = jump;
+ }
}
do
diff --git a/gcc-4.6/gcc/cfgexpand.c b/gcc-4.6/gcc/cfgexpand.c
index 103396889..72a388750 100644
--- a/gcc-4.6/gcc/cfgexpand.c
+++ b/gcc-4.6/gcc/cfgexpand.c
@@ -1348,15 +1348,39 @@ estimated_stack_frame_size (struct cgraph_node *node)
return size;
}
+/* Helper routine to check if a record or union contains an array field. */
+
+static int
+record_or_union_type_has_array_p (const_tree tree_type)
+{
+ tree fields = TYPE_FIELDS (tree_type);
+ tree f;
+
+ for (f = fields; f; f = DECL_CHAIN (f))
+ {
+ if (TREE_CODE (f) == FIELD_DECL)
+ {
+ tree field_type = TREE_TYPE (f);
+ if (RECORD_OR_UNION_TYPE_P (field_type))
+ return record_or_union_type_has_array_p (field_type);
+ if (TREE_CODE (field_type) == ARRAY_TYPE)
+ return 1;
+ }
+ }
+ return 0;
+}
+
/* Expand all variables used in the function. */
static void
expand_used_vars (void)
{
tree var, outer_block = DECL_INITIAL (current_function_decl);
+ referenced_var_iterator rvi;
VEC(tree,heap) *maybe_local_decls = NULL;
unsigned i;
unsigned len;
+ int gen_stack_protect_signal = 0;
/* Compute the phase of the stack frame for this function. */
{
@@ -1389,6 +1413,23 @@ expand_used_vars (void)
}
}
+ FOR_EACH_REFERENCED_VAR (cfun, var, rvi)
+ if (!is_global_var (var))
+ {
+ tree var_type = TREE_TYPE (var);
+ /* Examine local referenced variables that have their addresses taken,
+ contain an array, or are arrays. */
+ if (TREE_CODE (var) == VAR_DECL
+ && (TREE_CODE (var_type) == ARRAY_TYPE
+ || TREE_ADDRESSABLE (var)
+ || (RECORD_OR_UNION_TYPE_P (var_type)
+ && record_or_union_type_has_array_p (var_type))))
+ {
+ ++gen_stack_protect_signal;
+ break;
+ }
+ }
+
/* At this point all variables on the local_decls with TREE_USED
set are not associated with any block scope. Lay them out. */
@@ -1478,11 +1519,18 @@ expand_used_vars (void)
dump_stack_var_partition ();
}
- /* There are several conditions under which we should create a
- stack guard: protect-all, alloca used, protected decls present. */
- if (flag_stack_protect == 2
- || (flag_stack_protect
- && (cfun->calls_alloca || has_protected_decls)))
+ /* Create stack guard, if
+ a) "-fstack-protector-all" - always;
+ b) "-fstack-protector-strong" - if there are arrays, memory
+ references to local variables, alloca used, or protected decls present;
+ c) "-fstack-protector" - if alloca used, or protected decls present */
+ if (flag_stack_protect == 3 /* -fstack-protector-all */
+ || (flag_stack_protect == 2 /* -fstack-protector-strong */
+ && (gen_stack_protect_signal || cfun->calls_alloca
+ || has_protected_decls))
+ || (flag_stack_protect == 1 /* -fstack-protector */
+ && (cfun->calls_alloca
+ || has_protected_decls)))
create_stack_guard ();
/* Assign rtl to each variable based on these partitions. */
diff --git a/gcc-4.6/gcc/cfgloop.c b/gcc-4.6/gcc/cfgloop.c
index 3f14551f1..28701d792 100644
--- a/gcc-4.6/gcc/cfgloop.c
+++ b/gcc-4.6/gcc/cfgloop.c
@@ -1640,3 +1640,58 @@ loop_exits_from_bb_p (struct loop *loop, basic_block bb)
return false;
}
+
+/* Return location corresponding to the loop control condition if possible. */
+
+location_t
+get_loop_location (struct loop *loop)
+{
+ rtx insn = NULL;
+ struct niter_desc *desc = NULL;
+ edge exit;
+
+ /* For a for or while loop, we would like to return the location
+ * of the for or while statement, if possible. To do this, look
+ * for the branch guarding the loop back-edge.
+ */
+
+ /* If this is a simple loop with an in_edge, then the loop control
+ * branch is typically at the end of its source.
+ */
+ desc = get_simple_loop_desc (loop);
+ if (desc->in_edge)
+ {
+ FOR_BB_INSNS_REVERSE (desc->in_edge->src, insn)
+ {
+ if (INSN_P (insn))
+ return RTL_LOCATION (insn);
+ }
+ }
+ /* If loop has a single exit, then the loop control branch
+ * must be at the end of its source.
+ */
+ if ((exit = single_exit(loop)))
+ {
+ FOR_BB_INSNS_REVERSE (exit->src, insn)
+ {
+ if (INSN_P (insn))
+ return RTL_LOCATION (insn);
+ }
+ }
+ /* Next check the latch, to see if it is non-empty. */
+ FOR_BB_INSNS_REVERSE (loop->latch, insn)
+ {
+ if (INSN_P (insn))
+ return RTL_LOCATION (insn);
+ }
+ /* Finally, if none of the above identifies the loop control branch,
+ * return the first location in the loop header.
+ */
+ FOR_BB_INSNS (loop->header, insn)
+ {
+ if (INSN_P (insn))
+ return RTL_LOCATION (insn);
+ }
+ /* If all else fails, simply return the current function location. */
+ return DECL_SOURCE_LOCATION (current_function_decl);
+}
diff --git a/gcc-4.6/gcc/cfgloop.h b/gcc-4.6/gcc/cfgloop.h
index 0ff44de67..c6178e827 100644
--- a/gcc-4.6/gcc/cfgloop.h
+++ b/gcc-4.6/gcc/cfgloop.h
@@ -235,6 +235,7 @@ extern bool loop_exit_edge_p (const struct loop *, const_edge);
extern bool loop_exits_to_bb_p (struct loop *, basic_block);
extern bool loop_exits_from_bb_p (struct loop *, basic_block);
extern void mark_loop_exit_edges (void);
+extern location_t get_loop_location (struct loop *loop);
/* Loops & cfg manipulation. */
extern basic_block *get_loop_body (const struct loop *);
diff --git a/gcc-4.6/gcc/cgraph.c b/gcc-4.6/gcc/cgraph.c
index e91855e82..fdc5000a9 100644
--- a/gcc-4.6/gcc/cgraph.c
+++ b/gcc-4.6/gcc/cgraph.c
@@ -1904,6 +1904,9 @@ dump_cgraph_node (FILE *f, struct cgraph_node *node)
if (node->count)
fprintf (f, " executed "HOST_WIDEST_INT_PRINT_DEC"x",
(HOST_WIDEST_INT)node->count);
+ if (node->max_bb_count)
+ fprintf (f, " hottest bb executed "HOST_WIDEST_INT_PRINT_DEC"x",
+ (HOST_WIDEST_INT)node->max_bb_count);
if (node->local.inline_summary.self_time)
fprintf (f, " %i time, %i benefit", node->local.inline_summary.self_time,
node->local.inline_summary.time_inlining_benefit);
@@ -2234,6 +2237,9 @@ cgraph_clone_node (struct cgraph_node *n, tree decl, gcov_type count, int freq,
new_node->global = n->global;
new_node->rtl = n->rtl;
new_node->count = count;
+ new_node->max_bb_count = count;
+ if (n->count)
+ new_node->max_bb_count = count * n->max_bb_count / n->count;
new_node->is_versioned_clone = n->is_versioned_clone;
new_node->frequency = n->frequency;
new_node->clone = n->clone;
@@ -2252,6 +2258,9 @@ cgraph_clone_node (struct cgraph_node *n, tree decl, gcov_type count, int freq,
n->count -= count;
if (n->count < 0)
n->count = 0;
+ n->max_bb_count -= new_node->max_bb_count;
+ if (n->max_bb_count < 0)
+ n->max_bb_count = 0;
}
FOR_EACH_VEC_ELT (cgraph_edge_p, redirect_callers, i, e)
diff --git a/gcc-4.6/gcc/cgraph.h b/gcc-4.6/gcc/cgraph.h
index f30c9badf..4a12b5987 100644
--- a/gcc-4.6/gcc/cgraph.h
+++ b/gcc-4.6/gcc/cgraph.h
@@ -235,6 +235,8 @@ struct GTY((chain_next ("%h.next"), chain_prev ("%h.previous"))) cgraph_node {
/* Expected number of executions: calculated in profile.c. */
gcov_type count;
+ /* Maximum count of any basic block in the function. */
+ gcov_type max_bb_count;
/* How to scale counts at materialization time; used to merge
LTO units with different number of profile runs. */
int count_materialization_scale;
diff --git a/gcc-4.6/gcc/cgraphbuild.c b/gcc-4.6/gcc/cgraphbuild.c
index 3e53a0ec5..aa291fe9e 100644
--- a/gcc-4.6/gcc/cgraphbuild.c
+++ b/gcc-4.6/gcc/cgraphbuild.c
@@ -591,9 +591,12 @@ rebuild_cgraph_edges (void)
ipa_remove_all_references (&node->ref_list);
node->count = ENTRY_BLOCK_PTR->count;
+ node->max_bb_count = 0;
FOR_EACH_BB (bb)
{
+ if (bb->count > node->max_bb_count)
+ node->max_bb_count = bb->count;
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple stmt = gsi_stmt (gsi);
@@ -694,10 +697,18 @@ struct gimple_opt_pass pass_rebuild_cgraph_edges =
}
};
+/* Defined in tree-optimize.c */
+extern bool cgraph_callee_edges_final_cleanup;
static unsigned int
remove_cgraph_callee_edges (void)
{
+ /* The -fcallgraph-profiles-sections flag needs the call-graph preserved
+ till pass_final. */
+ if (cgraph_callee_edges_final_cleanup
+ && flag_callgraph_profiles_sections)
+ return 0;
+
cgraph_node_remove_callees (cgraph_node (current_function_decl));
return 0;
}
diff --git a/gcc-4.6/gcc/cgraphunit.c b/gcc-4.6/gcc/cgraphunit.c
index 4e3f3d707..4bc0f1392 100644
--- a/gcc-4.6/gcc/cgraphunit.c
+++ b/gcc-4.6/gcc/cgraphunit.c
@@ -2187,6 +2187,7 @@ cgraph_copy_node_for_versioning (struct cgraph_node *old_version,
new_version->rtl = old_version->rtl;
new_version->reachable = true;
new_version->count = old_version->count;
+ new_version->max_bb_count = old_version->max_bb_count;
new_version->is_versioned_clone = true;
for (e = old_version->callees; e; e=e->next_callee)
diff --git a/gcc-4.6/gcc/combine.c b/gcc-4.6/gcc/combine.c
index 5e3d36875..0ffd284ca 100644
--- a/gcc-4.6/gcc/combine.c
+++ b/gcc-4.6/gcc/combine.c
@@ -7719,6 +7719,7 @@ make_compound_operation (rtx x, enum rtx_code in_code)
&& GET_CODE (lhs) == ASHIFT
&& CONST_INT_P (XEXP (lhs, 1))
&& INTVAL (rhs) >= INTVAL (XEXP (lhs, 1))
+ && INTVAL (XEXP (lhs, 1)) >= 0
&& INTVAL (rhs) < mode_width)
{
new_rtx = make_compound_operation (XEXP (lhs, 0), next_code);
diff --git a/gcc-4.6/gcc/common.opt b/gcc-4.6/gcc/common.opt
index d4da362fb..bf047556f 100644
--- a/gcc-4.6/gcc/common.opt
+++ b/gcc-4.6/gcc/common.opt
@@ -680,6 +680,10 @@ Wthread-attr-bind-param
Common Var(warn_thread_attr_bind_param) Init(1) Warning
Make the thread safety analysis try to bind the function parameters used in the attributes
+Wthread-warn-optimization
+Common Var(warn_thread_optimization) Init(1) Warning
+Warn when optimizations invalidate the thread safety analysis.
+
Wtype-limits
Common Var(warn_type_limits) Init(-1) Warning
Warn if a comparison is always true or always false due to the limited range of the data type
@@ -1099,10 +1103,13 @@ Common Report Var(flag_ripa_no_promote_always_inline) Init(0)
Don't promote always inline static functions assuming they
will be inlined and no copy is needed.
+fripa-peel-size-limit
+Common Report Var(flag_ripa_peel_size_limit) Init(1) Optimization
+Limit non-const non-FP loop peeling under dynamic IPA estimates of large code footprint
-fripa-verbose
-Common Report Var(flag_ripa_verbose)
-Enable verbose informational messages for LIPO compilation
+fripa-unroll-size-limit
+Common Report Var(flag_ripa_unroll_size_limit) Init(1) Optimization
+Limit non-const non-FP loop unrolling under dynamic IPA estimates of large code footprint
fearly-inlining
Common Report Var(flag_early_inlining) Init(1) Optimization
@@ -1327,6 +1334,10 @@ finline-limit=
Common RejectNegative Joined UInteger
-finline-limit=<number> Limit the size of inlined functions to <number>
+finline-hot-caller
+Common Report Var(flag_inline_hot_caller) Init(1) Optimization
+Consider inlining cold callsites if the caller includes hot code
+
finstrument-functions
Common Report Var(flag_instrument_function_entry_exit)
Instrument function entry and exit with profiling calls
@@ -1547,6 +1558,19 @@ fomit-frame-pointer
Common Report Var(flag_omit_frame_pointer) Optimization
When possible do not generate stack frames
+fopt-info
+Common Report Var(flag_opt_info) Optimization Init(0)
+Enable verbose informational messages for optimizations (same as -fopt-info=1)
+
+; fopt-info=0: no message will be emitted.
+; fopt-info or fopt-info=1: emit important warnings and optimization messages with
+; large performance impact.
+; fopt-info=2: warnings and optimization messages targeting power users.
+; fopt-info=3: informational messages for compiler developers.
+fopt-info=
+Common RejectNegative Joined UInteger Optimization
+-fopt-info=[0|1|2|3] Set the verbose level of informational messages for optimizations
+
foptimize-register-move
Common Report Var(flag_regmove) Optimization
Do the full register move optimization pass
@@ -1693,6 +1717,14 @@ frecord-gcc-switches
Common Report Var(flag_record_gcc_switches)
Record gcc command line switches in the object file.
+; This option differs from frecord-gcc-switches in the way that it
+; divide the command line options into several categories. And the
+; section is not mergable so that linker can save gcc switches for
+; each module.
+frecord-gcc-switches-in-elf
+Common Report Var(flag_record_gcc_switches_in_elf)
+Record the compiler optimizations in a .gnu.switches.text section.
+
freg-struct-return
Common Report Var(flag_pcc_struct_return,0) Optimization
Return small aggregates in registers
@@ -1866,6 +1898,10 @@ fsingle-precision-constant
Common Report Var(flag_single_precision_constant) Optimization
Convert floating point constants to single precision constants
+fsized-delete
+Common Report Var(flag_sized_delete) Optimization
+Support delete operator with objetc's size as the second parameter.
+
fsplit-ivs-in-unroller
Common Report Var(flag_split_ivs_in_unroller) Init(1) Optimization
Split lifetimes of induction variables when loops are unrolled
@@ -1905,8 +1941,12 @@ fstack-protector
Common Report Var(flag_stack_protect, 1)
Use propolice as a stack protection method
-fstack-protector-all
+fstack-protector-strong
Common Report RejectNegative Var(flag_stack_protect, 2)
+Use a smart stack protection method for certain functions
+
+fstack-protector-all
+Common Report RejectNegative Var(flag_stack_protect, 3)
Use a stack protection method for every function
fstack-usage
diff --git a/gcc-4.6/gcc/compare-elim.c b/gcc-4.6/gcc/compare-elim.c
index c3eecfa28..62abd9c7d 100644
--- a/gcc-4.6/gcc/compare-elim.c
+++ b/gcc-4.6/gcc/compare-elim.c
@@ -356,7 +356,7 @@ find_comparisons_in_bb (struct dom_walk_data *data ATTRIBUTE_UNUSED,
/* Look to see if the flags register is live outgoing here, and
incoming to any successor not part of the extended basic block. */
- if (bitmap_bit_p (&DF_LIVE_BB_INFO (bb)->out, targetm.flags_regnum))
+ if (bitmap_bit_p (df_get_live_out (bb), targetm.flags_regnum))
{
edge e;
edge_iterator ei;
@@ -364,7 +364,7 @@ find_comparisons_in_bb (struct dom_walk_data *data ATTRIBUTE_UNUSED,
FOR_EACH_EDGE (e, ei, bb->succs)
{
basic_block dest = e->dest;
- if (bitmap_bit_p (&DF_LIVE_BB_INFO (dest)->in,
+ if (bitmap_bit_p (df_get_live_in (bb),
targetm.flags_regnum)
&& !single_pred_p (dest))
{
@@ -580,8 +580,6 @@ try_eliminate_compare (struct comparison *cmp)
static unsigned int
execute_compare_elim_after_reload (void)
{
- df_set_flags (DF_DEFER_INSN_RESCAN);
- df_live_add_problem ();
df_analyze ();
gcc_checking_assert (all_compares == NULL);
@@ -602,8 +600,6 @@ execute_compare_elim_after_reload (void)
VEC_free (comparison_struct_p, heap, all_compares);
all_compares = NULL;
-
- df_analyze ();
}
return 0;
diff --git a/gcc-4.6/gcc/config.gcc b/gcc-4.6/gcc/config.gcc
index 9a6078e66..d9ac0fae9 100644
--- a/gcc-4.6/gcc/config.gcc
+++ b/gcc-4.6/gcc/config.gcc
@@ -1288,10 +1288,17 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
tm_file="${tm_file} i386/linux.h"
fi
;;
- i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} i386/linux.h knetbsd-gnu.h i386/knetbsd-gnu.h" ;;
- i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} i386/linux.h kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;;
- i[34567]86-*-kopensolaris*-gnu) tm_file="${tm_file} i386/linux.h kopensolaris-gnu.h i386/kopensolaris-gnu.h" ;;
- i[34567]86-*-gnu*) tm_file="$tm_file i386/linux.h gnu.h i386/gnu.h";;
+ i[34567]86-*-knetbsd*-gnu)
+ tm_file="${tm_file} i386/linux.h knetbsd-gnu.h i386/knetbsd-gnu.h"
+ ;;
+ i[34567]86-*-kfreebsd*-gnu)
+ tm_file="${tm_file} i386/linux.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
+ ;;
+ i[34567]86-*-kopensolaris*-gnu)
+ tm_file="${tm_file} i386/linux.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
+ ;;
+ i[34567]86-*-gnu*)
+ tm_file="$tm_file i386/linux.h gnu.h i386/gnu.h";;
esac
tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules"
if [ "$with_sysroot" = "/usr/grte/v2" ]; then
@@ -1303,9 +1310,14 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
i386/x86-64.h i386/linux64.h"
case ${target} in
x86_64-*-linux*)
- default_gnu_indirect_function=glibc-2011 ;;
- x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;;
- x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;;
+ default_gnu_indirect_function=yes
+ ;;
+ x86_64-*-kfreebsd*-gnu)
+ tm_file="${tm_file} kfreebsd-gnu.h"
+ ;;
+ x86_64-*-knetbsd*-gnu)
+ tm_file="${tm_file} knetbsd-gnu.h"
+ ;;
esac
tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules"
if [ "$with_sysroot" = "/usr/grte/v2" ]; then
diff --git a/gcc-4.6/gcc/config.in b/gcc-4.6/gcc/config.in
index 6416267a7..f7541ec66 100644
--- a/gcc-4.6/gcc/config.in
+++ b/gcc-4.6/gcc/config.in
@@ -1583,12 +1583,6 @@
#endif
-/* The linker hash style */
-#ifndef USED_FOR_TARGET
-#undef LINKER_HASH_STYLE
-#endif
-
-
/* Define to the name of the LTO plugin DSO that must be passed to the
linker's -plugin=LIB option. */
#ifndef USED_FOR_TARGET
diff --git a/gcc-4.6/gcc/config/alpha/alpha.c b/gcc-4.6/gcc/config/alpha/alpha.c
index b41404eb6..34ec96747 100644
--- a/gcc-4.6/gcc/config/alpha/alpha.c
+++ b/gcc-4.6/gcc/config/alpha/alpha.c
@@ -4918,6 +4918,13 @@ alpha_gp_save_rtx (void)
return m;
}
+static void
+alpha_instantiate_decls (void)
+{
+ if (cfun->machine->gp_save_rtx != NULL_RTX)
+ instantiate_decl_rtl (cfun->machine->gp_save_rtx);
+}
+
static int
alpha_ra_ever_killed (void)
{
@@ -11110,6 +11117,9 @@ alpha_conditional_register_usage (void)
#undef TARGET_TRAMPOLINE_INIT
#define TARGET_TRAMPOLINE_INIT alpha_trampoline_init
+#undef TARGET_INSTANTIATE_DECLS
+#define TARGET_INSTANTIATE_DECLS alpha_instantiate_decls
+
#undef TARGET_SECONDARY_RELOAD
#define TARGET_SECONDARY_RELOAD alpha_secondary_reload
diff --git a/gcc-4.6/gcc/config/alpha/elf.h b/gcc-4.6/gcc/config/alpha/elf.h
index 78cafedb9..0293f26ee 100644
--- a/gcc-4.6/gcc/config/alpha/elf.h
+++ b/gcc-4.6/gcc/config/alpha/elf.h
@@ -397,7 +397,7 @@ do { \
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
/* Select a format to encode pointers in exception handling data. CODE
diff --git a/gcc-4.6/gcc/config/alpha/linux-unwind.h b/gcc-4.6/gcc/config/alpha/linux-unwind.h
index e43aacfd0..4c811dca4 100644
--- a/gcc-4.6/gcc/config/alpha/linux-unwind.h
+++ b/gcc-4.6/gcc/config/alpha/linux-unwind.h
@@ -1,5 +1,5 @@
/* DWARF2 EH unwinding support for Alpha Linux.
- Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2009, 2011 Free Software Foundation, Inc.
This file is part of GCC.
@@ -36,16 +36,17 @@ alpha_fallback_frame_state (struct _Unwind_Context *context,
{
unsigned int *pc = context->ra;
struct sigcontext *sc;
- long new_cfa, i;
+ long new_cfa;
+ int i;
if (pc[0] != 0x47fe0410 /* mov $30,$16 */
- || pc[2] != 0x00000083 /* callsys */)
+ || pc[2] != 0x00000083) /* callsys */
return _URC_END_OF_STACK;
if (context->cfa == 0)
return _URC_END_OF_STACK;
if (pc[1] == 0x201f0067) /* lda $0,NR_sigreturn */
sc = context->cfa;
- else if (pc[1] == 0x201f015f) /* lda $0,NR_rt_sigreturn */
+ else if (pc[1] == 0x201f015f) /* lda $0,NR_rt_sigreturn */
{
struct rt_sigframe {
struct siginfo info;
@@ -55,6 +56,7 @@ alpha_fallback_frame_state (struct _Unwind_Context *context,
}
else
return _URC_END_OF_STACK;
+
new_cfa = sc->sc_regs[30];
fs->regs.cfa_how = CFA_REG_OFFSET;
fs->regs.cfa_reg = 30;
@@ -63,16 +65,35 @@ alpha_fallback_frame_state (struct _Unwind_Context *context,
{
fs->regs.reg[i].how = REG_SAVED_OFFSET;
fs->regs.reg[i].loc.offset
- = (long)&sc->sc_regs[i] - new_cfa;
+ = (long) &sc->sc_regs[i] - new_cfa;
}
for (i = 0; i < 31; ++i)
{
fs->regs.reg[i+32].how = REG_SAVED_OFFSET;
fs->regs.reg[i+32].loc.offset
- = (long)&sc->sc_fpregs[i] - new_cfa;
+ = (long) &sc->sc_fpregs[i] - new_cfa;
}
fs->regs.reg[64].how = REG_SAVED_OFFSET;
fs->regs.reg[64].loc.offset = (long)&sc->sc_pc - new_cfa;
fs->retaddr_column = 64;
+ fs->signal_frame = 1;
+
return _URC_NO_REASON;
}
+
+#define MD_FROB_UPDATE_CONTEXT alpha_frob_update_context
+
+/* Fix up for signal handlers that don't have S flag set. */
+
+static void
+alpha_frob_update_context (struct _Unwind_Context *context,
+ _Unwind_FrameState *fs ATTRIBUTE_UNUSED)
+{
+ unsigned int *pc = context->ra;
+
+ if (pc[0] == 0x47fe0410 /* mov $30,$16 */
+ && pc[2] == 0x00000083 /* callsys */
+ && (pc[1] == 0x201f0067 /* lda $0,NR_sigreturn */
+ || pc[1] == 0x201f015f)) /* lda $0,NR_rt_sigreturn */
+ _Unwind_SetSignalFrame (context, 1);
+}
diff --git a/gcc-4.6/gcc/config/alpha/netbsd.h b/gcc-4.6/gcc/config/alpha/netbsd.h
index 0dc45daf9..bd86d1c13 100644
--- a/gcc-4.6/gcc/config/alpha/netbsd.h
+++ b/gcc-4.6/gcc/config/alpha/netbsd.h
@@ -70,7 +70,7 @@ along with GCC; see the file COPYING3. If not see
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{ffast-math|funsafe-math-optimizations:crtfm%O%s} \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfm%O%s} \
%(netbsd_endfile_spec)"
diff --git a/gcc-4.6/gcc/config/alpha/osf5.h b/gcc-4.6/gcc/config/alpha/osf5.h
index 97a789f86..7713b7ee0 100644
--- a/gcc-4.6/gcc/config/alpha/osf5.h
+++ b/gcc-4.6/gcc/config/alpha/osf5.h
@@ -102,7 +102,7 @@ along with GCC; see the file COPYING3. If not see
"%{!shared:%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}}"
#define ENDFILE_SPEC \
- "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
#define MD_STARTFILE_PREFIX "/usr/lib/cmplrs/cc/"
diff --git a/gcc-4.6/gcc/config/arm/arm.c b/gcc-4.6/gcc/config/arm/arm.c
index 45c157f57..a6cce8b00 100644
--- a/gcc-4.6/gcc/config/arm/arm.c
+++ b/gcc-4.6/gcc/config/arm/arm.c
@@ -5099,6 +5099,14 @@ arm_function_ok_for_sibcall (tree decl, tree exp)
if (IS_STACKALIGN (func_type))
return false;
+ /* The AAPCS says that, on bare-metal, calls to unresolved weak
+ references should become a NOP. Don't convert such calls into
+ sibling calls. */
+ if (TARGET_AAPCS_BASED
+ && arm_abi == ARM_ABI_AAPCS
+ && DECL_WEAK (decl))
+ return false;
+
/* Everything else is ok. */
return true;
}
@@ -9834,6 +9842,9 @@ store_multiple_sequence (rtx *operands, int nops, int nops_total,
rtx base_reg_rtx = NULL;
int i, stm_case;
+ /* Write back of base register is currently only supported for Thumb 1. */
+ int base_writeback = TARGET_THUMB1;
+
/* Can only handle up to MAX_LDM_STM_OPS insns at present, though could be
easily extended if required. */
gcc_assert (nops >= 2 && nops <= MAX_LDM_STM_OPS);
@@ -9891,7 +9902,9 @@ store_multiple_sequence (rtx *operands, int nops, int nops_total,
/* If it isn't an integer register, then we can't do this. */
if (unsorted_regs[i] < 0
|| (TARGET_THUMB1 && unsorted_regs[i] > LAST_LO_REGNUM)
- || (TARGET_THUMB2 && unsorted_regs[i] == base_reg)
+ /* The effects are unpredictable if the base register is
+ both updated and stored. */
+ || (base_writeback && unsorted_regs[i] == base_reg)
|| (TARGET_THUMB2 && unsorted_regs[i] == SP_REGNUM)
|| unsorted_regs[i] > 14)
return 0;
@@ -19593,39 +19606,34 @@ neon_emit_pair_result_insn (enum machine_mode mode,
emit_move_insn (mem, tmp2);
}
-/* Set up operands for a register copy from src to dest, taking care not to
- clobber registers in the process.
- FIXME: This has rather high polynomial complexity (O(n^3)?) but shouldn't
- be called with a large N, so that should be OK. */
+/* Set up OPERANDS for a register copy from SRC to DEST, taking care
+ not to early-clobber SRC registers in the process.
+ We assume that the operands described by SRC and DEST represent a
+ decomposed copy of OPERANDS[1] into OPERANDS[0]. COUNT is the
+ number of components into which the copy has been decomposed. */
void
neon_disambiguate_copy (rtx *operands, rtx *dest, rtx *src, unsigned int count)
{
- unsigned int copied = 0, opctr = 0;
- unsigned int done = (1 << count) - 1;
- unsigned int i, j;
+ unsigned int i;
- while (copied != done)
+ if (!reg_overlap_mentioned_p (operands[0], operands[1])
+ || REGNO (operands[0]) < REGNO (operands[1]))
{
for (i = 0; i < count; i++)
- {
- int good = 1;
-
- for (j = 0; good && j < count; j++)
- if (i != j && (copied & (1 << j)) == 0
- && reg_overlap_mentioned_p (src[j], dest[i]))
- good = 0;
-
- if (good)
- {
- operands[opctr++] = dest[i];
- operands[opctr++] = src[i];
- copied |= 1 << i;
- }
- }
+ {
+ operands[2 * i] = dest[i];
+ operands[2 * i + 1] = src[i];
+ }
+ }
+ else
+ {
+ for (i = 0; i < count; i++)
+ {
+ operands[2 * i] = dest[count - i - 1];
+ operands[2 * i + 1] = src[count - i - 1];
+ }
}
-
- gcc_assert (opctr == count * 2);
}
/* Expand an expression EXP that calls a built-in function,
@@ -20536,7 +20544,8 @@ thumb_unexpanded_epilogue (void)
if (extra_pop > 0)
{
unsigned long extra_mask = (1 << extra_pop) - 1;
- live_regs_mask |= extra_mask << (size / UNITS_PER_WORD);
+ live_regs_mask |= extra_mask << ((size + UNITS_PER_WORD - 1)
+ / UNITS_PER_WORD);
}
/* The prolog may have pushed some high registers to use as
diff --git a/gcc-4.6/gcc/config/arm/arm.h b/gcc-4.6/gcc/config/arm/arm.h
index 151d31413..0e2e827af 100644
--- a/gcc-4.6/gcc/config/arm/arm.h
+++ b/gcc-4.6/gcc/config/arm/arm.h
@@ -2451,9 +2451,9 @@ enum arm_builtins
ARM_BUILTIN_MAX = ARM_BUILTIN_NEON_BASE /* FIXME: Wrong! */
};
-/* Do not emit .note.GNU-stack by default. */
+/* Do emit .note.GNU-stack by default. */
#ifndef NEED_INDICATE_EXEC_STACK
-#define NEED_INDICATE_EXEC_STACK 0
+#define NEED_INDICATE_EXEC_STACK 1
#endif
/* The maximum number of parallel loads or stores we support in an ldm/stm
diff --git a/gcc-4.6/gcc/config/arm/arm.md b/gcc-4.6/gcc/config/arm/arm.md
index 4511db4a8..90adc2e55 100644
--- a/gcc-4.6/gcc/config/arm/arm.md
+++ b/gcc-4.6/gcc/config/arm/arm.md
@@ -1179,27 +1179,24 @@
; ??? Check Thumb-2 split length
(define_insn_and_split "*arm_subsi3_insn"
- [(set (match_operand:SI 0 "s_register_operand" "=r,r,rk,r,r")
- (minus:SI (match_operand:SI 1 "reg_or_int_operand" "rI,r,k,?n,r")
- (match_operand:SI 2 "reg_or_int_operand" "r,rI,r, r,?n")))]
+ [(set (match_operand:SI 0 "s_register_operand" "=r,r,rk,r")
+ (minus:SI (match_operand:SI 1 "reg_or_int_operand" "rI,r,k,?n")
+ (match_operand:SI 2 "reg_or_int_operand" "r,rI,r, r")))]
"TARGET_32BIT"
"@
rsb%?\\t%0, %2, %1
sub%?\\t%0, %1, %2
sub%?\\t%0, %1, %2
- #
#"
- "&& ((GET_CODE (operands[1]) == CONST_INT
- && !const_ok_for_arm (INTVAL (operands[1])))
- || (GET_CODE (operands[2]) == CONST_INT
- && !const_ok_for_arm (INTVAL (operands[2]))))"
+ "&& (GET_CODE (operands[1]) == CONST_INT
+ && !const_ok_for_arm (INTVAL (operands[1])))"
[(clobber (const_int 0))]
"
arm_split_constant (MINUS, SImode, curr_insn,
INTVAL (operands[1]), operands[0], operands[2], 0);
DONE;
"
- [(set_attr "length" "4,4,4,16,16")
+ [(set_attr "length" "4,4,4,16")
(set_attr "predicable" "yes")]
)
@@ -3276,7 +3273,7 @@
bool need_else;
if (which_alternative != 0 || operands[3] != const0_rtx
- || (code != PLUS && code != MINUS && code != IOR && code != XOR))
+ || (code != PLUS && code != IOR && code != XOR))
need_else = true;
else
need_else = false;
diff --git a/gcc-4.6/gcc/config/avr/avr-devices.c b/gcc-4.6/gcc/config/avr/avr-devices.c
index d2884f6b1..b565a603a 100755
--- a/gcc-4.6/gcc/config/avr/avr-devices.c
+++ b/gcc-4.6/gcc/config/avr/avr-devices.c
@@ -70,7 +70,7 @@ const struct mcu_type_s avr_mcu_types[] = {
{ "attiny2313a", ARCH_AVR25, "__AVR_ATtiny2313A__", 1, 0x0060, "tn2313a" },
{ "attiny24", ARCH_AVR25, "__AVR_ATtiny24__", 1, 0x0060, "tn24" },
{ "attiny24a", ARCH_AVR25, "__AVR_ATtiny24A__", 1, 0x0060, "tn24a" },
- { "attiny4313", ARCH_AVR25, "__AVR_ATtiny4313__", 1, 0x0060, "tn4313" },
+ { "attiny4313", ARCH_AVR25, "__AVR_ATtiny4313__", 0, 0x0060, "tn4313" },
{ "attiny44", ARCH_AVR25, "__AVR_ATtiny44__", 0, 0x0060, "tn44" },
{ "attiny44a", ARCH_AVR25, "__AVR_ATtiny44A__", 0, 0x0060, "tn44a" },
{ "attiny84", ARCH_AVR25, "__AVR_ATtiny84__", 0, 0x0060, "tn84" },
@@ -88,7 +88,7 @@ const struct mcu_type_s avr_mcu_types[] = {
{ "attiny87", ARCH_AVR25, "__AVR_ATtiny87__", 0, 0x0100, "tn87" },
{ "attiny48", ARCH_AVR25, "__AVR_ATtiny48__", 0, 0x0100, "tn48" },
{ "attiny88", ARCH_AVR25, "__AVR_ATtiny88__", 0, 0x0100, "tn88" },
- { "at86rf401", ARCH_AVR25, "__AVR_AT86RF401__", 1, 0x0060, "86401" },
+ { "at86rf401", ARCH_AVR25, "__AVR_AT86RF401__", 0, 0x0060, "86401" },
/* Classic, > 8K, <= 64K. */
{ "avr3", ARCH_AVR3, NULL, 0, 0x0060, "43355" },
{ "at43usb355", ARCH_AVR3, "__AVR_AT43USB355__", 0, 0x0060, "43355" },
@@ -131,7 +131,7 @@ const struct mcu_type_s avr_mcu_types[] = {
{ "atmega161", ARCH_AVR5, "__AVR_ATmega161__", 0, 0x0060, "m161" },
{ "atmega162", ARCH_AVR5, "__AVR_ATmega162__", 0, 0x0100, "m162" },
{ "atmega163", ARCH_AVR5, "__AVR_ATmega163__", 0, 0x0060, "m163" },
- { "atmega164a", ARCH_AVR5, "__AVR_ATmega164A__", 0, 0x0060, "m164a" },
+ { "atmega164a", ARCH_AVR5, "__AVR_ATmega164A__", 0, 0x0100, "m164a" },
{ "atmega164p", ARCH_AVR5, "__AVR_ATmega164P__", 0, 0x0100, "m164p" },
{ "atmega165", ARCH_AVR5, "__AVR_ATmega165__", 0, 0x0100, "m165" },
{ "atmega165a", ARCH_AVR5, "__AVR_ATmega165A__", 0, 0x0100, "m165a" },
diff --git a/gcc-4.6/gcc/config/avr/avr.c b/gcc-4.6/gcc/config/avr/avr.c
index 98456b3a3..b5a61a364 100644
--- a/gcc-4.6/gcc/config/avr/avr.c
+++ b/gcc-4.6/gcc/config/avr/avr.c
@@ -535,6 +535,17 @@ sequent_regs_live (void)
for (reg = 0; reg < 18; ++reg)
{
+ if (fixed_regs[reg])
+ {
+ /* Don't recognize sequences that contain global register
+ variables. */
+
+ if (live_seq != 0)
+ return 0;
+ else
+ continue;
+ }
+
if (!call_used_regs[reg])
{
if (df_regs_ever_live_p (reg))
@@ -1868,9 +1879,12 @@ output_movhi (rtx insn, rtx operands[], int *l)
}
else if (test_hard_reg_class (STACK_REG, src))
{
- *l = 2;
- return (AS2 (in,%A0,__SP_L__) CR_TAB
- AS2 (in,%B0,__SP_H__));
+ *l = 2;
+ return AVR_HAVE_8BIT_SP
+ ? (AS2 (in,%A0,__SP_L__) CR_TAB
+ AS1 (clr,%B0))
+ : (AS2 (in,%A0,__SP_L__) CR_TAB
+ AS2 (in,%B0,__SP_H__));
}
if (AVR_HAVE_MOVW)
@@ -3107,8 +3121,11 @@ out_shift_with_cnt (const char *templ, rtx insn, rtx operands[],
}
else if (register_operand (operands[2], QImode))
{
- if (reg_unused_after (insn, operands[2]))
- op[3] = op[2];
+ if (reg_unused_after (insn, operands[2])
+ && !reg_overlap_mentioned_p (operands[0], operands[2]))
+ {
+ op[3] = op[2];
+ }
else
{
op[3] = tmp_reg_rtx;
@@ -5159,10 +5176,10 @@ avr_file_start (void)
default_file_start ();
-/* fprintf (asm_out_file, "\t.arch %s\n", avr_mcu_name);*/
- fputs ("__SREG__ = 0x3f\n"
- "__SP_H__ = 0x3e\n"
- "__SP_L__ = 0x3d\n", asm_out_file);
+ fputs ("__SREG__ = 0x3f\n", asm_out_file);
+ if (!AVR_HAVE_8BIT_SP)
+ fputs ("__SP_H__ = 0x3e\n", asm_out_file);
+ fputs ("__SP_L__ = 0x3d\n", asm_out_file);
fputs ("__tmp_reg__ = 0\n"
"__zero_reg__ = 1\n", asm_out_file);
diff --git a/gcc-4.6/gcc/config/avr/avr.md b/gcc-4.6/gcc/config/avr/avr.md
index 1fc6fee57..bff4f6eb2 100644
--- a/gcc-4.6/gcc/config/avr/avr.md
+++ b/gcc-4.6/gcc/config/avr/avr.md
@@ -299,7 +299,7 @@
[(set (match_operand:HI 0 "stack_register_operand" "=q")
(unspec_volatile:HI [(match_operand:HI 1 "register_operand" "r")]
UNSPECV_WRITE_SP_IRQ_OFF))]
- ""
+ "!AVR_HAVE_8BIT_SP"
"out __SP_H__, %B1
out __SP_L__, %A1"
[(set_attr "length" "2")
@@ -309,7 +309,7 @@
[(set (match_operand:HI 0 "stack_register_operand" "=q")
(unspec_volatile:HI [(match_operand:HI 1 "register_operand" "r")]
UNSPECV_WRITE_SP_IRQ_ON))]
- ""
+ "!AVR_HAVE_8BIT_SP"
"cli
out __SP_H__, %B1
sei
diff --git a/gcc-4.6/gcc/config/avr/libgcc.S b/gcc-4.6/gcc/config/avr/libgcc.S
index 2e8d9514a..89bd378cf 100644
--- a/gcc-4.6/gcc/config/avr/libgcc.S
+++ b/gcc-4.6/gcc/config/avr/libgcc.S
@@ -28,6 +28,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define __SP_H__ 0x3e
#define __SP_L__ 0x3d
#define __RAMPZ__ 0x3B
+#define __EIND__ 0x3C
/* Most of the functions here are called directly from avr.md
patterns, instead of using the standard libcall mechanisms.
@@ -581,6 +582,15 @@ __prologue_saves__:
push r17
push r28
push r29
+#if defined (__AVR_HAVE_8BIT_SP__)
+;; FIXME: __AVR_HAVE_8BIT_SP__ is set on device level, not on core level
+;; so this lines are dead code. To make it work, devices without
+;; SP_H must get their own multilib(s), see PR51345.
+ in r28,__SP_L__
+ sub r28,r26
+ clr r29
+ out __SP_L__,r28
+#else
in r28,__SP_L__
in r29,__SP_H__
sub r28,r26
@@ -590,6 +600,7 @@ __prologue_saves__:
out __SP_H__,r29
out __SREG__,__tmp_reg__
out __SP_L__,r28
+#endif
#if defined (__AVR_HAVE_EIJMP_EICALL__)
eijmp
#else
@@ -624,6 +635,15 @@ __epilogue_restores__:
ldd r16,Y+4
ldd r17,Y+3
ldd r26,Y+2
+#if defined (__AVR_HAVE_8BIT_SP__)
+;; FIXME: __AVR_HAVE_8BIT_SP__ is set on device level, not on core level
+;; so this lines are dead code. To make it work, devices without
+;; SP_H must get their own multilib(s).
+ ldd r29,Y+1
+ add r28,r30
+ out __SP_L__,r28
+ mov r28, r26
+#else
ldd r27,Y+1
add r28,r30
adc r29,__zero_reg__
@@ -634,6 +654,7 @@ __epilogue_restores__:
out __SP_L__,r28
mov_l r28, r26
mov_h r29, r27
+#endif
ret
.endfunc
#endif /* defined (L_epilogue) */
@@ -675,7 +696,6 @@ __tablejump__:
lpm __tmp_reg__, Z+
lpm r31, Z
mov r30, __tmp_reg__
-
#if defined (__AVR_HAVE_EIJMP_EICALL__)
eijmp
#else
@@ -689,7 +709,8 @@ __tablejump__:
lpm
push r0
#if defined (__AVR_HAVE_EIJMP_EICALL__)
- push __zero_reg__
+ in __tmp_reg__, __EIND__
+ push __tmp_reg__
#endif
ret
#endif
@@ -889,7 +910,8 @@ __tablejump_elpm__:
elpm
push r0
#if defined (__AVR_HAVE_EIJMP_EICALL__)
- push __zero_reg__
+ in __tmp_reg__, __EIND__
+ push __tmp_reg__
#endif
ret
#endif
diff --git a/gcc-4.6/gcc/config/darwin.c b/gcc-4.6/gcc/config/darwin.c
index 8eb116490..3b065e5b9 100644
--- a/gcc-4.6/gcc/config/darwin.c
+++ b/gcc-4.6/gcc/config/darwin.c
@@ -1753,19 +1753,51 @@ darwin_label_is_anonymous_local_objc_name (const char *name)
return (!strncmp ((const char *)p, "_OBJC_", 6));
}
-/* LTO support for Mach-O. */
+/* LTO support for Mach-O.
-/* Section names for LTO sections. */
-static unsigned int lto_section_names_offset = 0;
+ This version uses three mach-o sections to encapsulate the (unlimited
+ number of) lto sections.
-/* This is the obstack which we use to allocate the many strings. */
-static struct obstack lto_section_names_obstack;
+ __GNU_LTO, __lto_sections contains the concatented GNU LTO section data.
+ __GNU_LTO, __section_names contains the GNU LTO section names.
+ __GNU_LTO, __section_index contains an array of values that index these.
-/* Segment name for LTO sections. */
+ Indexed thus:
+ <section offset from the start of __GNU_LTO, __lto_sections>,
+ <section length>
+ <name offset from the start of __GNU_LTO, __section_names,
+ <name length>.
+
+ At present, for both m32 and m64 mach-o files each of these fields is
+ represented by a uint32_t. This is because, AFAICT, a mach-o object
+ cannot exceed 4Gb because the section_64 offset field (see below) is 32bits.
+
+ uint32_t offset;
+ "offset An integer specifying the offset to this section in the file." */
+
+/* Count lto section numbers. */
+static unsigned int lto_section_num = 0;
+
+/* A vector of information about LTO sections, at present, we only have
+ the name. TODO: see if we can get the data length somehow. */
+typedef struct GTY (()) darwin_lto_section_e {
+ const char *sectname;
+} darwin_lto_section_e ;
+DEF_VEC_O(darwin_lto_section_e);
+DEF_VEC_ALLOC_O(darwin_lto_section_e, gc);
+
+static GTY (()) VEC (darwin_lto_section_e, gc) * lto_section_names;
+
+/* Segment for LTO data. */
#define LTO_SEGMENT_NAME "__GNU_LTO"
-/* Section name for LTO section names section. */
-#define LTO_NAMES_SECTION "__section_names"
+/* Section wrapper scheme (used here to wrap the unlimited number of LTO
+ sections into three Mach-O ones).
+ NOTE: These names MUST be kept in sync with those in
+ libiberty/simple-object-mach-o. */
+#define LTO_SECTS_SECTION "__wrapper_sects"
+#define LTO_NAMES_SECTION "__wrapper_names"
+#define LTO_INDEX_SECTION "__wrapper_index"
/* File to temporarily store LTO data. This is appended to asm_out_file
in darwin_end_file. */
@@ -1808,37 +1840,38 @@ darwin_asm_named_section (const char *name,
unsigned int flags,
tree decl ATTRIBUTE_UNUSED)
{
- /* LTO sections go in a special segment __GNU_LTO. We want to replace the
- section name with something we can use to represent arbitrary-length
- names (section names in Mach-O are at most 16 characters long). */
+ /* LTO sections go in a special section that encapsulates the (unlimited)
+ number of GNU LTO sections within a single mach-o one. */
if (strncmp (name, LTO_SECTION_NAME_PREFIX,
strlen (LTO_SECTION_NAME_PREFIX)) == 0)
{
+ darwin_lto_section_e e;
/* We expect certain flags to be set... */
gcc_assert ((flags & (SECTION_DEBUG | SECTION_NAMED))
== (SECTION_DEBUG | SECTION_NAMED));
- /* Add the section name to the things to output when we end the
- current assembler output file.
- This is all not very efficient, but that doesn't matter -- this
- shouldn't be a hot path in the compiler... */
- obstack_1grow (&lto_section_names_obstack, '\t');
- obstack_grow (&lto_section_names_obstack, ".ascii ", 7);
- obstack_1grow (&lto_section_names_obstack, '"');
- obstack_grow (&lto_section_names_obstack, name, strlen (name));
- obstack_grow (&lto_section_names_obstack, "\\0\"\n", 4);
-
- /* Output the dummy section name. */
- fprintf (asm_out_file, "\t# %s\n", name);
- fprintf (asm_out_file, "\t.section %s,__%08X,regular,debug\n",
- LTO_SEGMENT_NAME, lto_section_names_offset);
-
- /* Update the offset for the next section name. Make sure we stay
- within reasonable length. */
- lto_section_names_offset += strlen (name) + 1;
- gcc_assert (lto_section_names_offset > 0
- && lto_section_names_offset < ((unsigned) 1 << 31));
- }
+ /* Switch to our combined section. */
+ fprintf (asm_out_file, "\t.section %s,%s,regular,debug\n",
+ LTO_SEGMENT_NAME, LTO_SECTS_SECTION);
+ /* Output a label for the start of this sub-section. */
+ fprintf (asm_out_file, "L_GNU_LTO%d:\t;# %s\n",
+ lto_section_num, name);
+ /* We have to jump through hoops to get the values of the intra-section
+ offsets... */
+ fprintf (asm_out_file, "\t.set L$gnu$lto$offs%d,L_GNU_LTO%d-L_GNU_LTO0\n",
+ lto_section_num, lto_section_num);
+ fprintf (asm_out_file,
+ "\t.set L$gnu$lto$size%d,L_GNU_LTO%d-L_GNU_LTO%d\n",
+ lto_section_num, lto_section_num+1, lto_section_num);
+ lto_section_num++;
+ e.sectname = xstrdup (name);
+ /* Keep the names, we'll need to make a table later.
+ TODO: check that we do not revisit sections, that would break
+ the assumption of how this is done. */
+ if (lto_section_names == NULL)
+ lto_section_names = VEC_alloc (darwin_lto_section_e, gc, 16);
+ VEC_safe_push (darwin_lto_section_e, gc, lto_section_names, &e);
+ }
else if (strncmp (name, "__DWARF,", 8) == 0)
darwin_asm_dwarf_section (name, flags, decl);
else
@@ -2711,16 +2744,12 @@ darwin_asm_output_dwarf_offset (FILE *file, int size, const char * lab,
darwin_asm_output_dwarf_delta (file, size, lab, sname);
}
-/* Called from the within the TARGET_ASM_FILE_START for each target.
- Initialize the stuff we need for LTO long section names support. */
+/* Called from the within the TARGET_ASM_FILE_START for each target. */
void
darwin_file_start (void)
{
- /* We fill this obstack with the complete section text for the lto section
- names to write in darwin_file_end. */
- obstack_init (&lto_section_names_obstack);
- lto_section_names_offset = 0;
+ /* Nothing to do. */
}
/* Called for the TARGET_ASM_FILE_END hook.
@@ -2731,8 +2760,6 @@ darwin_file_start (void)
void
darwin_file_end (void)
{
- const char *lto_section_names;
-
machopic_finish (asm_out_file);
if (strcmp (lang_hooks.name, "GNU C++") == 0)
{
@@ -2762,6 +2789,13 @@ darwin_file_end (void)
lto_asm_txt = buf = (char *) xmalloc (n + 1);
while (fgets (lto_asm_txt, n, lto_asm_out_file))
fputs (lto_asm_txt, asm_out_file);
+ /* Put a termination label. */
+ fprintf (asm_out_file, "\t.section %s,%s,regular,debug\n",
+ LTO_SEGMENT_NAME, LTO_SECTS_SECTION);
+ fprintf (asm_out_file, "L_GNU_LTO%d:\t;# end of lto\n",
+ lto_section_num);
+ /* Make sure our termination label stays in this section. */
+ fputs ("\t.space\t1\n", asm_out_file);
}
/* Remove the temporary file. */
@@ -2770,21 +2804,50 @@ darwin_file_end (void)
free (lto_asm_out_name);
}
- /* Finish the LTO section names obstack. Don't output anything if
- there are no recorded section names. */
- obstack_1grow (&lto_section_names_obstack, '\0');
- lto_section_names = XOBFINISH (&lto_section_names_obstack, const char *);
- if (strlen (lto_section_names) > 0)
+ /* Output the names and indices. */
+ if (lto_section_names && VEC_length (darwin_lto_section_e, lto_section_names))
{
- fprintf (asm_out_file,
- "\t.section %s,%s,regular,debug\n",
+ int count;
+ darwin_lto_section_e *ref;
+ /* For now, we'll make the offsets 4 bytes and unaligned - we'll fix
+ the latter up ourselves. */
+ const char *op = integer_asm_op (4,0);
+
+ /* Emit the names. */
+ fprintf (asm_out_file, "\t.section %s,%s,regular,debug\n",
LTO_SEGMENT_NAME, LTO_NAMES_SECTION);
- fprintf (asm_out_file,
- "\t# Section names in %s are offsets into this table\n",
- LTO_SEGMENT_NAME);
- fprintf (asm_out_file, "%s\n", lto_section_names);
+ FOR_EACH_VEC_ELT (darwin_lto_section_e, lto_section_names, count, ref)
+ {
+ fprintf (asm_out_file, "L_GNU_LTO_NAME%d:\n", count);
+ /* We have to jump through hoops to get the values of the intra-section
+ offsets... */
+ fprintf (asm_out_file,
+ "\t.set L$gnu$lto$noff%d,L_GNU_LTO_NAME%d-L_GNU_LTO_NAME0\n",
+ count, count);
+ fprintf (asm_out_file,
+ "\t.set L$gnu$lto$nsiz%d,L_GNU_LTO_NAME%d-L_GNU_LTO_NAME%d\n",
+ count, count+1, count);
+ fprintf (asm_out_file, "\t.asciz\t\"%s\"\n", ref->sectname);
+ }
+ fprintf (asm_out_file, "L_GNU_LTO_NAME%d:\t;# end\n", lto_section_num);
+ /* make sure our termination label stays in this section. */
+ fputs ("\t.space\t1\n", asm_out_file);
+
+ /* Emit the Index. */
+ fprintf (asm_out_file, "\t.section %s,%s,regular,debug\n",
+ LTO_SEGMENT_NAME, LTO_INDEX_SECTION);
+ fputs ("\t.align\t2\n", asm_out_file);
+ fputs ("# Section offset, Section length, Name offset, Name length\n",
+ asm_out_file);
+ FOR_EACH_VEC_ELT (darwin_lto_section_e, lto_section_names, count, ref)
+ {
+ fprintf (asm_out_file, "%s L$gnu$lto$offs%d\t;# %s\n",
+ op, count, ref->sectname);
+ fprintf (asm_out_file, "%s L$gnu$lto$size%d\n", op, count);
+ fprintf (asm_out_file, "%s L$gnu$lto$noff%d\n", op, count);
+ fprintf (asm_out_file, "%s L$gnu$lto$nsiz%d\n", op, count);
+ }
}
- obstack_free (&lto_section_names_obstack, NULL);
/* If we have section anchors, then we must prevent the linker from
re-arranging data. */
diff --git a/gcc-4.6/gcc/config/i386/avxintrin.h b/gcc-4.6/gcc/config/i386/avxintrin.h
index 8055cc607..6d4213dc8 100644
--- a/gcc-4.6/gcc/config/i386/avxintrin.h
+++ b/gcc-4.6/gcc/config/i386/avxintrin.h
@@ -759,7 +759,7 @@ _mm256_insert_epi8 (__m256i __X, int __D, int const __N)
#ifdef __x86_64__
extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_insert_epi64 (__m256i __X, int __D, int const __N)
+_mm256_insert_epi64 (__m256i __X, long long __D, int const __N)
{
__m128i __Y = _mm256_extractf128_si256 (__X, __N >> 1);
__Y = _mm_insert_epi64 (__Y, __D, __N % 2);
diff --git a/gcc-4.6/gcc/config/i386/constraints.md b/gcc-4.6/gcc/config/i386/constraints.md
index 4bc3ed64b..6233b79ec 100644
--- a/gcc-4.6/gcc/config/i386/constraints.md
+++ b/gcc-4.6/gcc/config/i386/constraints.md
@@ -19,7 +19,7 @@
;;; Unused letters:
;;; B H T W
-;;; h jk vw z
+;;; h jk vw
;; Integer register constraints.
;; It is not necessary to define 'r' here.
@@ -105,6 +105,10 @@
"TARGET_MMX && TARGET_INTER_UNIT_MOVES ? MMX_REGS : NO_REGS"
"@internal Any MMX register, when inter-unit moves are enabled.")
+(define_constraint "z"
+ "@internal Constant call address operand."
+ (match_operand 0 "constant_call_address_operand"))
+
;; Integer constant constraints.
(define_constraint "I"
"Integer constant in the range 0 @dots{} 31, for 32-bit shifts."
diff --git a/gcc-4.6/gcc/config/i386/cygwin.h b/gcc-4.6/gcc/config/i386/cygwin.h
index bedf1e735..f8daeecec 100644
--- a/gcc-4.6/gcc/config/i386/cygwin.h
+++ b/gcc-4.6/gcc/config/i386/cygwin.h
@@ -38,7 +38,7 @@ along with GCC; see the file COPYING3. If not see
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s}\
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}\
crtend.o%s"
/* Normally, -lgcc is not needed since everything in it is in the DLL, but we
diff --git a/gcc-4.6/gcc/config/i386/darwin.h b/gcc-4.6/gcc/config/i386/darwin.h
index 934ab4b82..08b6c5253 100644
--- a/gcc-4.6/gcc/config/i386/darwin.h
+++ b/gcc-4.6/gcc/config/i386/darwin.h
@@ -131,7 +131,7 @@ extern int darwin_emit_branch_islands;
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
%{mpc32:crtprec32.o%s} \
%{mpc64:crtprec64.o%s} \
%{mpc80:crtprec80.o%s}"
diff --git a/gcc-4.6/gcc/config/i386/freebsd.h b/gcc-4.6/gcc/config/i386/freebsd.h
index 61592d46b..6d2c559e7 100644
--- a/gcc-4.6/gcc/config/i386/freebsd.h
+++ b/gcc-4.6/gcc/config/i386/freebsd.h
@@ -147,3 +147,6 @@ along with GCC; see the file COPYING3. If not see
#if FBSD_MAJOR >= 6
#define SUBTARGET32_DEFAULT_CPU "i486"
#endif
+
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+
diff --git a/gcc-4.6/gcc/config/i386/i386-builtin-types.def b/gcc-4.6/gcc/config/i386/i386-builtin-types.def
index 05a7f5468..e3422dddd 100644
--- a/gcc-4.6/gcc/config/i386/i386-builtin-types.def
+++ b/gcc-4.6/gcc/config/i386/i386-builtin-types.def
@@ -131,6 +131,7 @@ DEF_FUNCTION_TYPE (UINT64)
DEF_FUNCTION_TYPE (UNSIGNED)
DEF_FUNCTION_TYPE (VOID)
DEF_FUNCTION_TYPE (PVOID)
+DEF_FUNCTION_TYPE (INT)
DEF_FUNCTION_TYPE (FLOAT, FLOAT)
DEF_FUNCTION_TYPE (FLOAT128, FLOAT128)
diff --git a/gcc-4.6/gcc/config/i386/i386.c b/gcc-4.6/gcc/config/i386/i386.c
index 16d977e8d..6117e7d7b 100644
--- a/gcc-4.6/gcc/config/i386/i386.c
+++ b/gcc-4.6/gcc/config/i386/i386.c
@@ -58,6 +58,13 @@ along with GCC; see the file COPYING3. If not see
#include "sched-int.h"
#include "sbitmap.h"
#include "fibheap.h"
+#include "tree-flow.h"
+#include "tree-pass.h"
+#include "tree-dump.h"
+#include "gimple-pretty-print.h"
+#include "cfgloop.h"
+#include "tree-scalar-evolution.h"
+#include "tree-vectorizer.h"
enum upper_128bits_state
{
@@ -2350,6 +2357,8 @@ enum processor_type ix86_tune;
/* Which instruction set architecture to use. */
enum processor_type ix86_arch;
+char ix86_varch[PROCESSOR_max];
+
/* true if sse prefetch instruction is not NOOP. */
int x86_prefetch_sse;
@@ -2489,6 +2498,7 @@ static enum calling_abi ix86_function_abi (const_tree);
/* Whether -mtune= or -march= were specified */
static int ix86_tune_defaulted;
static int ix86_arch_specified;
+static int ix86_varch_specified;
/* A mask of ix86_isa_flags that includes bit X if X
was set or cleared on the command line. */
@@ -3412,6 +3422,11 @@ ix86_option_override_internal (bool main_args_p)
PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
| PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_AVX
| PTA_CX16 | PTA_POPCNT | PTA_AES | PTA_PCLMUL},
+ {"core-avx-i", PROCESSOR_COREI7_64, CPU_COREI7,
+ PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
+ | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_AVX
+ | PTA_CX16 | PTA_POPCNT | PTA_AES | PTA_PCLMUL | PTA_FSGSBASE
+ | PTA_RDRND | PTA_F16C},
{"atom", PROCESSOR_ATOM, CPU_ATOM,
PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
| PTA_SSSE3 | PTA_CX16 | PTA_MOVBE},
@@ -4308,6 +4323,36 @@ ix86_option_override_internal (bool main_args_p)
/* Disable vzeroupper pass if TARGET_AVX is disabled. */
target_flags &= ~MASK_VZEROUPPER;
}
+
+ /* Handle ix86_mv_arch_string. The values allowed are the same as
+ -march=<>. More than one value is allowed and values must be
+ comma separated. */
+ if (ix86_mv_arch_string)
+ {
+ char *token;
+ char *varch;
+ int i;
+
+ ix86_varch_specified = 1;
+ memset (ix86_varch, 0, sizeof (ix86_varch));
+ token = XNEWVEC (char, strlen (ix86_mv_arch_string) + 1);
+ strcpy (token, ix86_mv_arch_string);
+ varch = strtok ((char *)token, ",");
+ while (varch != NULL)
+ {
+ for (i = 0; i < pta_size; i++)
+ if (!strcmp (varch, processor_alias_table[i].name))
+ {
+ ix86_varch[processor_alias_table[i].processor] = 1;
+ break;
+ }
+ if (i == pta_size)
+ error ("bad value (%s) for %sv-arch=%s %s",
+ varch, prefix, suffix, sw);
+ varch = strtok (NULL, ",");
+ }
+ free (token);
+ }
}
/* Return TRUE if VAL is passed in register with 256bit AVX modes. */
@@ -12697,7 +12742,7 @@ legitimize_tls_address (rtx x, enum tls_model model, int for_mov)
{
dest = force_reg (Pmode, gen_rtx_PLUS (Pmode, tp, dest));
- set_unique_reg_note (get_last_insn (), REG_EQUIV, x);
+ set_unique_reg_note (get_last_insn (), REG_EQUAL, x);
}
break;
@@ -12728,7 +12773,7 @@ legitimize_tls_address (rtx x, enum tls_model model, int for_mov)
{
rtx x = ix86_tls_module_base ();
- set_unique_reg_note (get_last_insn (), REG_EQUIV,
+ set_unique_reg_note (get_last_insn (), REG_EQUAL,
gen_rtx_MINUS (Pmode, x, tp));
}
@@ -12741,7 +12786,7 @@ legitimize_tls_address (rtx x, enum tls_model model, int for_mov)
{
dest = force_reg (Pmode, gen_rtx_PLUS (Pmode, dest, tp));
- set_unique_reg_note (get_last_insn (), REG_EQUIV, x);
+ set_unique_reg_note (get_last_insn (), REG_EQUAL, x);
}
break;
@@ -16324,7 +16369,6 @@ distance_non_agu_define (unsigned int regno1, unsigned int regno2,
basic_block bb = BLOCK_FOR_INSN (insn);
int distance = 0;
df_ref *def_rec;
- enum attr_type insn_type;
if (insn != BB_HEAD (bb))
{
@@ -16340,8 +16384,8 @@ distance_non_agu_define (unsigned int regno1, unsigned int regno2,
&& (regno1 == DF_REF_REGNO (*def_rec)
|| regno2 == DF_REF_REGNO (*def_rec)))
{
- insn_type = get_attr_type (prev);
- if (insn_type != TYPE_LEA)
+ if (recog_memoized (prev) < 0
+ || get_attr_type (prev) != TYPE_LEA)
goto done;
}
}
@@ -16380,8 +16424,8 @@ distance_non_agu_define (unsigned int regno1, unsigned int regno2,
&& (regno1 == DF_REF_REGNO (*def_rec)
|| regno2 == DF_REF_REGNO (*def_rec)))
{
- insn_type = get_attr_type (prev);
- if (insn_type != TYPE_LEA)
+ if (recog_memoized (prev) < 0
+ || get_attr_type (prev) != TYPE_LEA)
goto done;
}
}
@@ -18679,6 +18723,11 @@ ix86_prepare_sse_fp_compare_args (rtx dest, enum rtx_code code,
{
rtx tmp;
+ /* AVX supports all the needed comparisons, no need to swap arguments
+ nor help reload. */
+ if (TARGET_AVX)
+ return code;
+
switch (code)
{
case LTGT:
@@ -18829,11 +18878,15 @@ ix86_expand_sse_movcc (rtx dest, rtx cmp, rtx op_true, rtx op_false)
}
else if (TARGET_XOP)
{
- rtx pcmov = gen_rtx_SET (mode, dest,
- gen_rtx_IF_THEN_ELSE (mode, cmp,
- op_true,
- op_false));
- emit_insn (pcmov);
+ op_true = force_reg (mode, op_true);
+
+ if (!nonimmediate_operand (op_false, mode))
+ op_false = force_reg (mode, op_false);
+
+ emit_insn (gen_rtx_SET (mode, dest,
+ gen_rtx_IF_THEN_ELSE (mode, cmp,
+ op_true,
+ op_false)));
}
else
{
@@ -18927,7 +18980,32 @@ ix86_expand_fp_vcond (rtx operands[])
code = ix86_prepare_sse_fp_compare_args (operands[0], code,
&operands[4], &operands[5]);
if (code == UNKNOWN)
- return false;
+ {
+ rtx temp;
+ switch (GET_CODE (operands[3]))
+ {
+ case LTGT:
+ temp = ix86_expand_sse_cmp (operands[0], ORDERED, operands[4],
+ operands[5], operands[0], operands[0]);
+ cmp = ix86_expand_sse_cmp (operands[0], NE, operands[4],
+ operands[5], operands[1], operands[2]);
+ code = AND;
+ break;
+ case UNEQ:
+ temp = ix86_expand_sse_cmp (operands[0], UNORDERED, operands[4],
+ operands[5], operands[0], operands[0]);
+ cmp = ix86_expand_sse_cmp (operands[0], EQ, operands[4],
+ operands[5], operands[1], operands[2]);
+ code = IOR;
+ break;
+ default:
+ gcc_unreachable ();
+ }
+ cmp = expand_simple_binop (GET_MODE (cmp), code, temp, cmp, cmp, 1,
+ OPTAB_DIRECT);
+ ix86_expand_sse_movcc (operands[0], cmp, operands[1], operands[2]);
+ return true;
+ }
if (ix86_expand_sse_fp_minmax (operands[0], code, operands[4],
operands[5], operands[1], operands[2]))
@@ -22147,7 +22225,7 @@ assign_386_stack_local (enum machine_mode mode, enum ix86_stack_slot n)
for (s = ix86_stack_locals; s; s = s->next)
if (s->mode == mode && s->n == n)
- return copy_rtx (s->rtl);
+ return validize_mem (copy_rtx (s->rtl));
s = ggc_alloc_stack_local_entry ();
s->n = n;
@@ -22156,7 +22234,7 @@ assign_386_stack_local (enum machine_mode mode, enum ix86_stack_slot n)
s->next = ix86_stack_locals;
ix86_stack_locals = s;
- return s->rtl;
+ return validize_mem (s->rtl);
}
/* Construct the SYMBOL_REF for the tls_get_addr function. */
@@ -24443,6 +24521,33 @@ enum ix86_builtins
/* CFString built-in for darwin */
IX86_BUILTIN_CFSTRING,
+ /* Builtins to get CPU features. */
+ IX86_BUILTIN_CPU_SUPPORTS_CMOV,
+ IX86_BUILTIN_CPU_SUPPORTS_MMX,
+ IX86_BUILTIN_CPU_SUPPORTS_POPCOUNT,
+ IX86_BUILTIN_CPU_SUPPORTS_SSE,
+ IX86_BUILTIN_CPU_SUPPORTS_SSE2,
+ IX86_BUILTIN_CPU_SUPPORTS_SSE3,
+ IX86_BUILTIN_CPU_SUPPORTS_SSSE3,
+ IX86_BUILTIN_CPU_SUPPORTS_SSE4_1,
+ IX86_BUILTIN_CPU_SUPPORTS_SSE4_2,
+ /* Builtins to get CPU type. */
+ IX86_BUILTIN_CPU_INIT,
+ IX86_BUILTIN_CPU_IS_AMD,
+ IX86_BUILTIN_CPU_IS_INTEL,
+ IX86_BUILTIN_CPU_IS_INTEL_ATOM,
+ IX86_BUILTIN_CPU_IS_INTEL_CORE2,
+ IX86_BUILTIN_CPU_IS_INTEL_COREI7,
+ IX86_BUILTIN_CPU_IS_INTEL_COREI7_NEHALEM,
+ IX86_BUILTIN_CPU_IS_INTEL_COREI7_WESTMERE,
+ IX86_BUILTIN_CPU_IS_INTEL_COREI7_SANDYBRIDGE,
+ IX86_BUILTIN_CPU_IS_AMDFAM10H,
+ IX86_BUILTIN_CPU_IS_AMDFAM10H_BARCELONA,
+ IX86_BUILTIN_CPU_IS_AMDFAM10H_SHANGHAI,
+ IX86_BUILTIN_CPU_IS_AMDFAM10H_ISTANBUL,
+ IX86_BUILTIN_CPU_IS_AMDFAM15H_BDVER1,
+ IX86_BUILTIN_CPU_IS_AMDFAM15H_BDVER2,
+
IX86_BUILTIN_MAX
};
@@ -25809,6 +25914,848 @@ ix86_init_mmx_sse_builtins (void)
}
}
+/* Returns a struct type with name NAME and number of fields equal to
+ NUM_FIELDS. Each field is a unsigned int bit field of length 1 bit. */
+
+static tree
+build_struct_with_one_bit_fields (int num_fields, const char *name)
+{
+ int i;
+ char field_name [10];
+ tree field = NULL_TREE, field_chain = NULL_TREE;
+ tree type = make_node (RECORD_TYPE);
+
+ strcpy (field_name, "k_field");
+
+ for (i = 0; i < num_fields; i++)
+ {
+ /* Name the fields, 0_field, 1_field, ... */
+ field_name [0] = '0' + i;
+ field = build_decl (UNKNOWN_LOCATION, FIELD_DECL,
+ get_identifier (field_name), unsigned_type_node);
+ DECL_BIT_FIELD (field) = 1;
+ DECL_SIZE (field) = bitsize_one_node;
+ if (field_chain != NULL_TREE)
+ DECL_CHAIN (field) = field_chain;
+ field_chain = field;
+ }
+ finish_builtin_struct (type, name, field_chain, NULL_TREE);
+ return type;
+}
+
+/* Returns a extern, comdat VAR_DECL of type TYPE and name NAME. */
+
+static tree
+make_var_decl (tree type, const char *name)
+{
+ tree new_decl;
+ struct varpool_node *vnode;
+
+ new_decl = build_decl (UNKNOWN_LOCATION,
+ VAR_DECL,
+ get_identifier(name),
+ type);
+
+ DECL_EXTERNAL (new_decl) = 1;
+ TREE_STATIC (new_decl) = 1;
+ TREE_PUBLIC (new_decl) = 1;
+ DECL_INITIAL (new_decl) = 0;
+ DECL_ARTIFICIAL (new_decl) = 0;
+ DECL_PRESERVE_P (new_decl) = 1;
+
+ make_decl_one_only (new_decl, DECL_ASSEMBLER_NAME (new_decl));
+ assemble_variable (new_decl, 0, 0, 0);
+
+ vnode = varpool_node (new_decl);
+ gcc_assert (vnode != NULL);
+ /* Set finalized to 1, otherwise it asserts in function "write_symbol" in
+ lto-streamer-out.c. */
+ vnode->finalized = 1;
+
+ return new_decl;
+}
+
+/* Traverses the chain of fields in STRUCT_TYPE and returns the FIELD_NUM
+ numbered field. */
+
+static tree
+get_field_from_struct (tree struct_type, int field_num)
+{
+ int i;
+ tree field = TYPE_FIELDS (struct_type);
+
+ for (i = 0; i < field_num; i++, field = DECL_CHAIN(field))
+ {
+ gcc_assert (field != NULL_TREE);
+ }
+
+ return field;
+}
+
+/* FNDECL is a __builtin_cpu_* call that is folded into an integer defined
+ in libgcc/config/i386/i386-cpuinfo.c */
+
+static tree
+fold_builtin_cpu (enum ix86_builtins fn_code)
+{
+ /* This is the order of bit-fields in __processor_features in
+ i386-cpuinfo.c */
+ enum processor_features
+ {
+ F_CMOV = 0,
+ F_MMX,
+ F_POPCNT,
+ F_SSE,
+ F_SSE2,
+ F_SSE3,
+ F_SSSE3,
+ F_SSE4_1,
+ F_SSE4_2,
+ F_MAX
+ };
+
+ /* This is the order of bit-fields in __processor_model in
+ i386-cpuinfo.c */
+ enum processor_model
+ {
+ M_AMD = 0,
+ M_INTEL,
+ M_INTEL_ATOM,
+ M_INTEL_CORE2,
+ M_INTEL_COREI7,
+ M_INTEL_COREI7_NEHALEM,
+ M_INTEL_COREI7_WESTMERE,
+ M_INTEL_COREI7_SANDYBRIDGE,
+ M_AMDFAM10H,
+ M_AMDFAM10H_BARCELONA,
+ M_AMDFAM10H_SHANGHAI,
+ M_AMDFAM10H_ISTANBUL,
+ M_AMDFAM15H_BDVER1,
+ M_AMDFAM15H_BDVER2,
+ M_MAX
+ };
+
+ static tree __processor_features_type = NULL_TREE;
+ static tree __cpu_features_var = NULL_TREE;
+ static tree __processor_model_type = NULL_TREE;
+ static tree __cpu_model_var = NULL_TREE;
+ static tree field;
+ static tree which_struct;
+
+ if (__processor_features_type == NULL_TREE)
+ __processor_features_type = build_struct_with_one_bit_fields (F_MAX,
+ "__processor_features");
+
+ if (__processor_model_type == NULL_TREE)
+ __processor_model_type = build_struct_with_one_bit_fields (M_MAX,
+ "__processor_model");
+
+ if (__cpu_features_var == NULL_TREE)
+ __cpu_features_var = make_var_decl (__processor_features_type,
+ "__cpu_features");
+
+ if (__cpu_model_var == NULL_TREE)
+ __cpu_model_var = make_var_decl (__processor_model_type,
+ "__cpu_model");
+
+ /* Look at the code to identify the field requested. */
+ switch (fn_code)
+ {
+ case IX86_BUILTIN_CPU_SUPPORTS_CMOV:
+ field = get_field_from_struct (__processor_features_type, F_CMOV);
+ which_struct = __cpu_features_var;
+ break;
+ case IX86_BUILTIN_CPU_SUPPORTS_MMX:
+ field = get_field_from_struct (__processor_features_type, F_MMX);
+ which_struct = __cpu_features_var;
+ break;
+ case IX86_BUILTIN_CPU_SUPPORTS_POPCOUNT:
+ field = get_field_from_struct (__processor_features_type, F_POPCNT);
+ which_struct = __cpu_features_var;
+ break;
+ case IX86_BUILTIN_CPU_SUPPORTS_SSE:
+ field = get_field_from_struct (__processor_features_type, F_SSE);
+ which_struct = __cpu_features_var;
+ break;
+ case IX86_BUILTIN_CPU_SUPPORTS_SSE2:
+ field = get_field_from_struct (__processor_features_type, F_SSE2);
+ which_struct = __cpu_features_var;
+ break;
+ case IX86_BUILTIN_CPU_SUPPORTS_SSE3:
+ field = get_field_from_struct (__processor_features_type, F_SSE3);
+ which_struct = __cpu_features_var;
+ break;
+ case IX86_BUILTIN_CPU_SUPPORTS_SSSE3:
+ field = get_field_from_struct (__processor_features_type, F_SSSE3);
+ which_struct = __cpu_features_var;
+ break;
+ case IX86_BUILTIN_CPU_SUPPORTS_SSE4_1:
+ field = get_field_from_struct (__processor_features_type, F_SSE4_1);
+ which_struct = __cpu_features_var;
+ break;
+ case IX86_BUILTIN_CPU_SUPPORTS_SSE4_2:
+ field = get_field_from_struct (__processor_features_type, F_SSE4_2);
+ which_struct = __cpu_features_var;
+ break;
+ case IX86_BUILTIN_CPU_IS_AMD:
+ field = get_field_from_struct (__processor_model_type, M_AMD);
+ which_struct = __cpu_model_var;
+ break;
+ case IX86_BUILTIN_CPU_IS_INTEL:
+ field = get_field_from_struct (__processor_model_type, M_INTEL);
+ which_struct = __cpu_model_var;
+ break;
+ case IX86_BUILTIN_CPU_IS_INTEL_ATOM:
+ field = get_field_from_struct (__processor_model_type, M_INTEL_ATOM);
+ which_struct = __cpu_model_var;
+ break;
+ case IX86_BUILTIN_CPU_IS_INTEL_CORE2:
+ field = get_field_from_struct (__processor_model_type, M_INTEL_CORE2);
+ which_struct = __cpu_model_var;
+ break;
+ case IX86_BUILTIN_CPU_IS_INTEL_COREI7:
+ field = get_field_from_struct (__processor_model_type,
+ M_INTEL_COREI7);
+ which_struct = __cpu_model_var;
+ break;
+ case IX86_BUILTIN_CPU_IS_INTEL_COREI7_NEHALEM:
+ field = get_field_from_struct (__processor_model_type,
+ M_INTEL_COREI7_NEHALEM);
+ which_struct = __cpu_model_var;
+ break;
+ case IX86_BUILTIN_CPU_IS_INTEL_COREI7_WESTMERE:
+ field = get_field_from_struct (__processor_model_type,
+ M_INTEL_COREI7_WESTMERE);
+ which_struct = __cpu_model_var;
+ break;
+ case IX86_BUILTIN_CPU_IS_INTEL_COREI7_SANDYBRIDGE:
+ field = get_field_from_struct (__processor_model_type,
+ M_INTEL_COREI7_SANDYBRIDGE);
+ which_struct = __cpu_model_var;
+ break;
+ case IX86_BUILTIN_CPU_IS_AMDFAM10H:
+ field = get_field_from_struct (__processor_model_type,
+ M_AMDFAM10H);
+ which_struct = __cpu_model_var;
+ break;
+ case IX86_BUILTIN_CPU_IS_AMDFAM10H_BARCELONA:
+ field = get_field_from_struct (__processor_model_type,
+ M_AMDFAM10H_BARCELONA);
+ which_struct = __cpu_model_var;
+ break;
+ case IX86_BUILTIN_CPU_IS_AMDFAM10H_SHANGHAI:
+ field = get_field_from_struct (__processor_model_type,
+ M_AMDFAM10H_SHANGHAI);
+ which_struct = __cpu_model_var;
+ break;
+ case IX86_BUILTIN_CPU_IS_AMDFAM10H_ISTANBUL:
+ field = get_field_from_struct (__processor_model_type,
+ M_AMDFAM10H_ISTANBUL);
+ which_struct = __cpu_model_var;
+ break;
+ case IX86_BUILTIN_CPU_IS_AMDFAM15H_BDVER1:
+ field = get_field_from_struct (__processor_model_type,
+ M_AMDFAM15H_BDVER1);
+ which_struct = __cpu_model_var;
+ break;
+ case IX86_BUILTIN_CPU_IS_AMDFAM15H_BDVER2:
+ field = get_field_from_struct (__processor_model_type,
+ M_AMDFAM15H_BDVER2);
+ which_struct = __cpu_model_var;
+ break;
+ default:
+ return NULL_TREE;
+ }
+
+ return build3 (COMPONENT_REF, TREE_TYPE (field), which_struct, field, NULL_TREE);
+}
+
+static tree
+ix86_fold_builtin (tree fndecl, int n_args ATTRIBUTE_UNUSED,
+ tree *args ATTRIBUTE_UNUSED, bool ignore ATTRIBUTE_UNUSED)
+{
+ const char* decl_name = IDENTIFIER_POINTER (DECL_NAME (fndecl));
+ if (DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_MD
+ && strstr(decl_name, "__builtin_cpu") != NULL)
+ {
+ enum ix86_builtins code = (enum ix86_builtins)
+ DECL_FUNCTION_CODE (fndecl);
+ return fold_builtin_cpu (code);
+ }
+ return NULL_TREE;
+}
+
+/* This adds a condition to the basic_block NEW_BB in function FUNCTION_DECL
+ to return integer VERSION_NUM if the outcome of the function PREDICATE_DECL
+ is true (or false if INVERT_CHECK is true). This function will be called
+ during version dispatch to ecide which function version to execute. */
+
+static basic_block
+add_condition_to_bb (tree function_decl, int version_num,
+ basic_block new_bb, tree predicate_decl,
+ bool invert_check)
+{
+ gimple return_stmt;
+ gimple call_cond_stmt;
+ gimple if_else_stmt;
+
+ basic_block bb1, bb2, bb3;
+ edge e12, e23;
+
+ tree cond_var;
+ gimple_seq gseq;
+
+ tree old_current_function_decl;
+
+ old_current_function_decl = current_function_decl;
+ push_cfun (DECL_STRUCT_FUNCTION (function_decl));
+ current_function_decl = function_decl;
+
+ gcc_assert (new_bb != NULL);
+ gseq = bb_seq (new_bb);
+
+ if (predicate_decl == NULL_TREE)
+ {
+ return_stmt = gimple_build_return (build_int_cst (NULL, version_num));
+ gimple_seq_add_stmt (&gseq, return_stmt);
+ set_bb_seq (new_bb, gseq);
+ gimple_set_bb (return_stmt, new_bb);
+ pop_cfun ();
+ current_function_decl = old_current_function_decl;
+ return new_bb;
+ }
+
+ cond_var = create_tmp_var (integer_type_node, NULL);
+ call_cond_stmt = gimple_build_call (predicate_decl, 0);
+ gimple_call_set_lhs (call_cond_stmt, cond_var);
+ add_referenced_var (cond_var);
+ mark_symbols_for_renaming (call_cond_stmt);
+
+ gimple_set_block (call_cond_stmt, DECL_INITIAL (function_decl));
+ gimple_set_bb (call_cond_stmt, new_bb);
+ gimple_seq_add_stmt (&gseq, call_cond_stmt);
+
+ if (!invert_check)
+ if_else_stmt = gimple_build_cond (GT_EXPR, cond_var,
+ integer_zero_node,
+ NULL_TREE, NULL_TREE);
+ else
+ if_else_stmt = gimple_build_cond (LE_EXPR, cond_var,
+ integer_zero_node,
+ NULL_TREE, NULL_TREE);
+
+ mark_symbols_for_renaming (if_else_stmt);
+ gimple_set_block (if_else_stmt, DECL_INITIAL (function_decl));
+ gimple_set_bb (if_else_stmt, new_bb);
+ gimple_seq_add_stmt (&gseq, if_else_stmt);
+
+ return_stmt = gimple_build_return (build_int_cst (NULL, version_num));
+ gimple_seq_add_stmt (&gseq, return_stmt);
+
+
+ set_bb_seq (new_bb, gseq);
+
+ bb1 = new_bb;
+ e12 = split_block (bb1, if_else_stmt);
+ bb2 = e12->dest;
+ e12->flags &= ~EDGE_FALLTHRU;
+ e12->flags |= EDGE_TRUE_VALUE;
+
+ e23 = split_block (bb2, return_stmt);
+ gimple_set_bb (return_stmt, bb2);
+ bb3 = e23->dest;
+ make_edge (bb1, bb3, EDGE_FALSE_VALUE);
+
+ remove_edge (e23);
+ make_edge (bb2, EXIT_BLOCK_PTR, 0);
+
+ free_dominance_info (CDI_DOMINATORS);
+ free_dominance_info (CDI_POST_DOMINATORS);
+ calculate_dominance_info (CDI_DOMINATORS);
+ calculate_dominance_info (CDI_POST_DOMINATORS);
+ rebuild_cgraph_edges ();
+ update_ssa (TODO_update_ssa);
+ if (dump_file)
+ dump_function_to_file (current_function_decl, dump_file, TDF_BLOCKS);
+
+ pop_cfun ();
+ current_function_decl = old_current_function_decl;
+
+ return bb3;
+}
+
+/* This makes an empty function with one empty basic block *CREATED_BB
+ apart from the ENTRY and EXIT blocks. */
+
+static tree
+make_empty_function (basic_block *created_bb)
+{
+ tree decl, type, t;
+ basic_block new_bb;
+ tree old_current_function_decl;
+ tree decl_name;
+ char name[1000];
+ static int num = 0;
+
+ /* The condition function should return an integer. */
+ type = build_function_type_list (integer_type_node, NULL_TREE);
+
+ sprintf (name, "cond_%d", num);
+ num++;
+ decl = build_fn_decl (name, type);
+
+ decl_name = get_identifier (name);
+ SET_DECL_ASSEMBLER_NAME (decl, decl_name);
+ DECL_NAME (decl) = decl_name;
+ gcc_assert (cgraph_node (decl) != NULL);
+
+ TREE_USED (decl) = 1;
+ DECL_ARTIFICIAL (decl) = 1;
+ DECL_IGNORED_P (decl) = 0;
+ TREE_PUBLIC (decl) = 0;
+ DECL_UNINLINABLE (decl) = 1;
+ DECL_EXTERNAL (decl) = 0;
+ DECL_CONTEXT (decl) = NULL_TREE;
+ DECL_INITIAL (decl) = make_node (BLOCK);
+ DECL_STATIC_CONSTRUCTOR (decl) = 0;
+ TREE_READONLY (decl) = 0;
+ DECL_PURE_P (decl) = 0;
+
+ /* Build result decl and add to function_decl. */
+ t = build_decl (UNKNOWN_LOCATION, RESULT_DECL, NULL_TREE, ptr_type_node);
+ DECL_ARTIFICIAL (t) = 1;
+ DECL_IGNORED_P (t) = 1;
+ DECL_RESULT (decl) = t;
+
+ gimplify_function_tree (decl);
+
+ old_current_function_decl = current_function_decl;
+ push_cfun (DECL_STRUCT_FUNCTION (decl));
+ current_function_decl = decl;
+ init_empty_tree_cfg_for_function (DECL_STRUCT_FUNCTION (decl));
+
+ cfun->curr_properties |=
+ (PROP_gimple_lcf | PROP_gimple_leh | PROP_cfg | PROP_referenced_vars |
+ PROP_ssa);
+
+ new_bb = create_empty_bb (ENTRY_BLOCK_PTR);
+ make_edge (ENTRY_BLOCK_PTR, new_bb, EDGE_FALLTHRU);
+ make_edge (new_bb, EXIT_BLOCK_PTR, 0);
+
+ /* This call is very important if this pass runs when the IR is in
+ SSA form. It breaks things in strange ways otherwise. */
+ init_tree_ssa (DECL_STRUCT_FUNCTION (decl));
+ init_ssa_operands ();
+
+ cgraph_add_new_function (decl, true);
+ cgraph_call_function_insertion_hooks (cgraph_node (decl));
+ cgraph_mark_needed_node (cgraph_node (decl));
+
+ if (dump_file)
+ dump_function_to_file (decl, dump_file, TDF_BLOCKS);
+
+ pop_cfun ();
+ current_function_decl = old_current_function_decl;
+ *created_bb = new_bb;
+ return decl;
+}
+
+/* This function conservatively checks if loop LOOP is tree vectorizable.
+ The code is adapted from tree-vectorize.cc and tree-vect-stmts.cc */
+
+static bool
+is_loop_form_vectorizable (struct loop *loop)
+{
+ /* Inner most loops should have 2 basic blocks. */
+ if (!loop->inner)
+ {
+ /* This is inner most. */
+ if (loop->num_nodes != 2)
+ return false;
+ /* Empty loop. */
+ if (empty_block_p (loop->header))
+ return false;
+ }
+ else
+ {
+ /* Bail if there are multiple nested loops. */
+ if ((loop->inner)->inner || (loop->inner)->next)
+ return false;
+ /* Recursive call for the inner loop. */
+ if (!is_loop_form_vectorizable (loop->inner))
+ return false;
+ if (loop->num_nodes != 5)
+ return false;
+ /* The tree has 0 iterations. */
+ if (TREE_INT_CST_LOW (number_of_latch_executions (loop)) == 0)
+ return false;
+ }
+
+ return true;
+}
+
+/* This function checks if there is atleast one vectorizable
+ load/store in loop LOOP. Code adapted from tree-vect-stmts.cc. */
+
+static bool
+is_loop_stmts_vectorizable (struct loop *loop)
+{
+ basic_block *body;
+ unsigned int i;
+ bool vect_load_store = false;
+
+ body = get_loop_body (loop);
+
+ for (i = 0; i < loop->num_nodes; i++)
+ {
+ gimple_stmt_iterator gsi;
+ for (gsi = gsi_start_bb (body[i]); !gsi_end_p (gsi); gsi_next (&gsi))
+ {
+ gimple stmt = gsi_stmt (gsi);
+ enum gimple_code code = gimple_code (stmt);
+
+ if (gimple_has_volatile_ops (stmt))
+ return false;
+
+ /* Does it have a vectorizable store or load in a hot bb? */
+ if (code == GIMPLE_ASSIGN)
+ {
+ enum tree_code lhs_code = TREE_CODE (gimple_assign_lhs (stmt));
+ enum tree_code rhs_code = gimple_assign_rhs_code (stmt);
+
+ /* Only look at hot vectorizable loads/stores. */
+ if (profile_status == PROFILE_READ
+ && !maybe_hot_bb_p (body[i]))
+ continue;
+
+ if (lhs_code == ARRAY_REF
+ || lhs_code == INDIRECT_REF
+ || lhs_code == COMPONENT_REF
+ || lhs_code == IMAGPART_EXPR
+ || lhs_code == REALPART_EXPR
+ || lhs_code == MEM_REF)
+ vect_load_store = true;
+ else if (rhs_code == ARRAY_REF
+ || rhs_code == INDIRECT_REF
+ || rhs_code == COMPONENT_REF
+ || rhs_code == IMAGPART_EXPR
+ || rhs_code == REALPART_EXPR
+ || rhs_code == MEM_REF)
+ vect_load_store = true;
+ }
+ }
+ }
+
+ return vect_load_store;
+}
+
+/* This function checks if there are any vectorizable loops present
+ in CURRENT_FUNCTION_DECL. This function is called before the
+ loop optimization passes and is therefore very conservative in
+ checking for vectorizable loops. Also, all the checks used in the
+ vectorizer pass cannot used here since many loop optimizations
+ have not occurred which could change the loop structure and the
+ stmts.
+
+ The conditions for a loop being vectorizable are adapted from
+ tree-vectorizer.c, tree-vect-stmts.c. */
+
+static bool
+any_loops_vectorizable_with_load_store (void)
+{
+ unsigned int vect_loops_num;
+ loop_iterator li;
+ struct loop *loop;
+ bool vectorizable_loop_found = false;
+
+ loop_optimizer_init (LOOPS_NORMAL | LOOPS_HAVE_RECORDED_EXITS);
+
+ vect_loops_num = number_of_loops ();
+
+ /* Bail out if there are no loops. */
+ if (vect_loops_num <= 1)
+ {
+ loop_optimizer_finalize ();
+ return false;
+ }
+
+ scev_initialize ();
+
+ /* This is iterating over all loops. */
+ FOR_EACH_LOOP (li, loop, 0)
+ if (optimize_loop_nest_for_speed_p (loop))
+ {
+ if (!is_loop_form_vectorizable (loop))
+ continue;
+ if (!is_loop_stmts_vectorizable (loop))
+ continue;
+ vectorizable_loop_found = true;
+ break;
+ }
+
+
+ loop_optimizer_finalize ();
+ scev_finalize ();
+
+ return vectorizable_loop_found;
+}
+
+/* This makes the function that chooses the version to execute based
+ on the condition. This condition function will decide which version
+ of the function to execute. It should look like this:
+
+ int cond_i ()
+ {
+ __builtin_cpu_init (); // Get the cpu type.
+ a = __builtin_cpu_is_<type1> ();
+ if (a)
+ return 1; // first version created.
+ a = __builtin_cpu_is_<type2> ();
+ if (a)
+ return 2; // second version created.
+ ...
+ return 0; // the default version.
+ }
+
+ NEW_BB is the new last basic block of this function and to which more
+ conditions can be added. It is updated by this function. */
+
+static tree
+make_condition_function (basic_block *new_bb)
+{
+ gimple ifunc_cpu_init_stmt;
+ gimple_seq gseq;
+ tree cond_func_decl;
+ tree old_current_function_decl;
+
+
+ cond_func_decl = make_empty_function (new_bb);
+
+ old_current_function_decl = current_function_decl;
+ push_cfun (DECL_STRUCT_FUNCTION (cond_func_decl));
+ current_function_decl = cond_func_decl;
+
+ gseq = bb_seq (*new_bb);
+
+ /* Since this is possibly dispatched with IFUNC, call builtin_cpu_init
+ explicitly, as the constructor will only fire after IFUNC
+ initializers. */
+ ifunc_cpu_init_stmt = gimple_build_call_vec (
+ ix86_builtins [(int) IX86_BUILTIN_CPU_INIT], NULL);
+ gimple_seq_add_stmt (&gseq, ifunc_cpu_init_stmt);
+ gimple_set_bb (ifunc_cpu_init_stmt, *new_bb);
+ set_bb_seq (*new_bb, gseq);
+
+ pop_cfun ();
+ current_function_decl = old_current_function_decl;
+ return cond_func_decl;
+}
+
+/* Create a new target optimization node with tune set to ARCH_TUNE. */
+static tree
+create_mtune_target_opt_node (const char *arch_tune)
+{
+ struct cl_target_option target_options;
+ const char *old_tune_string;
+ tree optimization_node;
+
+ /* Build an optimization node that is the same as the current one except with
+ "tune=arch_tune". */
+ cl_target_option_save (&target_options, &global_options);
+ old_tune_string = ix86_tune_string;
+
+ ix86_tune_string = arch_tune;
+ ix86_option_override_internal (false);
+
+ optimization_node = build_target_option_node ();
+
+ ix86_tune_string = old_tune_string;
+ cl_target_option_restore (&global_options, &target_options);
+
+ return optimization_node;
+}
+
+/* Should a version of this function be specially optimized for core2?
+
+ This function should have checks to see if there are any opportunities for
+ core2 specific optimizations, otherwise do not create a clone. The
+ following opportunities are checked.
+
+ * Check if this function has vectorizable loads/stores as it is known that
+ unaligned 128-bit movs to/from memory (movdqu) are very expensive on
+ core2 whereas the later generations like corei7 have no additional
+ overhead.
+
+ This versioning is triggered only when -ftree-vectorize is turned on
+ and when multi-versioning for core2 is requested using -mvarch=core2.
+
+ Return false if no versioning is required. Return true if a version must
+ be created. Generate the *OPTIMIZATION_NODE that must be used to optimize
+ the newly created version, that is tag "tune=core2" on the new version. */
+
+static bool
+mversionable_for_core2_p (tree *optimization_node,
+ tree *cond_func_decl, basic_block *new_bb)
+{
+ tree predicate_decl;
+ bool is_mversion_target_core2 = false;
+ bool create_version = false;
+
+ if (ix86_varch_specified
+ && ix86_varch[PROCESSOR_CORE2_64])
+ is_mversion_target_core2 = true;
+
+ /* Check for criteria to create a new version for core2. */
+
+ /* If -ftree-vectorize is not used of MV is not requested, bail. */
+ if (flag_tree_vectorize && is_mversion_target_core2)
+ {
+ /* Check if there is atleast one loop that has a vectorizable load/store.
+ These are the ones that can generate the unaligned mov which is known
+ to be very slow on core2. */
+ if (any_loops_vectorizable_with_load_store ())
+ create_version = true;
+ }
+ /* else if XXX: Add more criteria to version for core2. */
+
+ if (!create_version)
+ return false;
+
+ /* If the condition function's body has not been created, create it now. */
+ if (*cond_func_decl == NULL)
+ *cond_func_decl = make_condition_function (new_bb);
+
+ *optimization_node = create_mtune_target_opt_node ("core2");
+
+ predicate_decl = ix86_builtins [(int) IX86_BUILTIN_CPU_IS_INTEL_CORE2];
+ *new_bb = add_condition_to_bb (*cond_func_decl, 0, *new_bb,
+ predicate_decl, false);
+ return true;
+}
+
+/* Should this function CURRENT_FUNCTION_DECL be multi-versioned, if so
+ the number of versions to be created (other than the original) is
+ returned. The outcome of COND_FUNC_DECL will decide the version to be
+ executed. The OPTIMIZATION_NODE_CHAIN has a unique node for each
+ version to be created. */
+
+static int
+ix86_mversion_function (tree fndecl ATTRIBUTE_UNUSED,
+ tree *optimization_node_chain,
+ tree *cond_func_decl)
+{
+ basic_block new_bb;
+ tree optimization_node;
+ int num_versions_created = 0;
+
+ if (ix86_mv_arch_string == NULL)
+ return 0;
+
+ if (mversionable_for_core2_p (&optimization_node, cond_func_decl, &new_bb))
+ num_versions_created++;
+
+ if (!num_versions_created)
+ return 0;
+
+ *optimization_node_chain = tree_cons (optimization_node,
+ NULL_TREE, *optimization_node_chain);
+
+ /* Return the default version as the last stmt in cond_func_decl. */
+ if (*cond_func_decl != NULL)
+ new_bb = add_condition_to_bb (*cond_func_decl, num_versions_created,
+ new_bb, NULL_TREE, false);
+
+ return num_versions_created;
+}
+
+/* A builtin to init/return the cpu type or feature. Returns an
+ integer and the type is a const if IS_CONST is set. */
+
+static void
+make_platform_builtin (const char* name, int code, int is_const)
+{
+ tree decl;
+ tree type;
+
+ type = ix86_get_builtin_func_type (INT_FTYPE_VOID);
+ decl = add_builtin_function (name, type, code, BUILT_IN_MD,
+ NULL, NULL_TREE);
+ gcc_assert (decl != NULL_TREE);
+ ix86_builtins[(int) code] = decl;
+ if (is_const)
+ TREE_READONLY (decl) = 1;
+}
+
+/* Builtins to get CPU type and features supported. */
+
+static void
+ix86_init_platform_type_builtins (void)
+{
+ make_platform_builtin ("__builtin_cpu_init",
+ IX86_BUILTIN_CPU_INIT, 0);
+ make_platform_builtin ("__builtin_cpu_supports_cmov",
+ IX86_BUILTIN_CPU_SUPPORTS_CMOV, 1);
+ make_platform_builtin ("__builtin_cpu_supports_mmx",
+ IX86_BUILTIN_CPU_SUPPORTS_MMX, 1);
+ make_platform_builtin ("__builtin_cpu_supports_popcount",
+ IX86_BUILTIN_CPU_SUPPORTS_POPCOUNT, 1);
+ make_platform_builtin ("__builtin_cpu_supports_sse",
+ IX86_BUILTIN_CPU_SUPPORTS_SSE, 1);
+ make_platform_builtin ("__builtin_cpu_supports_sse2",
+ IX86_BUILTIN_CPU_SUPPORTS_SSE2, 1);
+ make_platform_builtin ("__builtin_cpu_supports_sse3",
+ IX86_BUILTIN_CPU_SUPPORTS_SSE3, 1);
+ make_platform_builtin ("__builtin_cpu_supports_ssse3",
+ IX86_BUILTIN_CPU_SUPPORTS_SSSE3, 1);
+ make_platform_builtin ("__builtin_cpu_supports_sse4_1",
+ IX86_BUILTIN_CPU_SUPPORTS_SSE4_1, 1);
+ make_platform_builtin ("__builtin_cpu_supports_sse4_2",
+ IX86_BUILTIN_CPU_SUPPORTS_SSE4_2, 1);
+ make_platform_builtin ("__builtin_cpu_is_amd",
+ IX86_BUILTIN_CPU_IS_AMD, 1);
+ make_platform_builtin ("__builtin_cpu_is_intel_atom",
+ IX86_BUILTIN_CPU_IS_INTEL_ATOM, 1);
+ make_platform_builtin ("__builtin_cpu_is_intel_core2",
+ IX86_BUILTIN_CPU_IS_INTEL_CORE2, 1);
+ make_platform_builtin ("__builtin_cpu_is_intel",
+ IX86_BUILTIN_CPU_IS_INTEL, 1);
+ make_platform_builtin ("__builtin_cpu_is_intel_corei7",
+ IX86_BUILTIN_CPU_IS_INTEL_COREI7, 1);
+ make_platform_builtin ("__builtin_cpu_is_intel_corei7_nehalem",
+ IX86_BUILTIN_CPU_IS_INTEL_COREI7_NEHALEM, 1);
+ make_platform_builtin ("__builtin_cpu_is_intel_corei7_westmere",
+ IX86_BUILTIN_CPU_IS_INTEL_COREI7_WESTMERE, 1);
+ make_platform_builtin ("__builtin_cpu_is_intel_corei7_sandybridge",
+ IX86_BUILTIN_CPU_IS_INTEL_COREI7_SANDYBRIDGE, 1);
+ make_platform_builtin ("__builtin_cpu_is_amdfam10",
+ IX86_BUILTIN_CPU_IS_AMDFAM10H, 1);
+ make_platform_builtin ("__builtin_cpu_is_amdfam10_barcelona",
+ IX86_BUILTIN_CPU_IS_AMDFAM10H_BARCELONA, 1);
+ make_platform_builtin ("__builtin_cpu_is_amdfam10_shanghai",
+ IX86_BUILTIN_CPU_IS_AMDFAM10H_SHANGHAI, 1);
+ make_platform_builtin ("__builtin_cpu_is_amdfam10_istanbul",
+ IX86_BUILTIN_CPU_IS_AMDFAM10H_ISTANBUL, 1);
+ make_platform_builtin ("__builtin_cpu_is_amdfam15_bdver1",
+ IX86_BUILTIN_CPU_IS_AMDFAM15H_BDVER1, 1);
+ make_platform_builtin ("__builtin_cpu_is_amdfam15_bdver2",
+ IX86_BUILTIN_CPU_IS_AMDFAM15H_BDVER2, 1);
+}
+
+/* Detect if this unaligned vectorizable load/stores should be
+ considered slow. This is true for core2 where the movdqu insn
+ is slow, ~5x slower than the movdqa. */
+
+static bool
+ix86_slow_unaligned_vector_memop (void)
+{
+ /* This is known to be slow on core2. */
+ if (ix86_tune == PROCESSOR_CORE2_64
+ || ix86_tune == PROCESSOR_CORE2_32)
+ return true;
+
+ return false;
+}
+
/* Internal method for ix86_init_builtins. */
static void
@@ -25892,6 +26839,9 @@ ix86_init_builtins (void)
ix86_init_builtin_types ();
+ /* Builtins to get CPU type and features. */
+ ix86_init_platform_type_builtins ();
+
/* TFmode support builtins. */
def_builtin_const (0, "__builtin_infq",
FLOAT128_FTYPE_VOID, IX86_BUILTIN_INFQ);
@@ -27351,6 +28301,48 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
enum machine_mode mode0, mode1, mode2;
unsigned int fcode = DECL_FUNCTION_CODE (fndecl);
+ /* For CPU builtins that can be folded, fold first and expand the fold. */
+ switch (fcode)
+ {
+ case IX86_BUILTIN_CPU_SUPPORTS_CMOV:
+ case IX86_BUILTIN_CPU_SUPPORTS_MMX:
+ case IX86_BUILTIN_CPU_SUPPORTS_POPCOUNT:
+ case IX86_BUILTIN_CPU_SUPPORTS_SSE:
+ case IX86_BUILTIN_CPU_SUPPORTS_SSE2:
+ case IX86_BUILTIN_CPU_SUPPORTS_SSE3:
+ case IX86_BUILTIN_CPU_SUPPORTS_SSSE3:
+ case IX86_BUILTIN_CPU_SUPPORTS_SSE4_1:
+ case IX86_BUILTIN_CPU_SUPPORTS_SSE4_2:
+ case IX86_BUILTIN_CPU_IS_AMD:
+ case IX86_BUILTIN_CPU_IS_INTEL:
+ case IX86_BUILTIN_CPU_IS_INTEL_ATOM:
+ case IX86_BUILTIN_CPU_IS_INTEL_CORE2:
+ case IX86_BUILTIN_CPU_IS_INTEL_COREI7:
+ case IX86_BUILTIN_CPU_IS_INTEL_COREI7_NEHALEM:
+ case IX86_BUILTIN_CPU_IS_INTEL_COREI7_WESTMERE:
+ case IX86_BUILTIN_CPU_IS_INTEL_COREI7_SANDYBRIDGE:
+ case IX86_BUILTIN_CPU_IS_AMDFAM10H:
+ case IX86_BUILTIN_CPU_IS_AMDFAM10H_BARCELONA:
+ case IX86_BUILTIN_CPU_IS_AMDFAM10H_SHANGHAI:
+ case IX86_BUILTIN_CPU_IS_AMDFAM10H_ISTANBUL:
+ case IX86_BUILTIN_CPU_IS_AMDFAM15H_BDVER1:
+ case IX86_BUILTIN_CPU_IS_AMDFAM15H_BDVER2:
+ {
+ tree fold_expr = fold_builtin_cpu ((enum ix86_builtins) fcode);
+ gcc_assert (fold_expr != NULL_TREE);
+ return expand_expr (fold_expr, target, mode, EXPAND_NORMAL);
+ }
+ case IX86_BUILTIN_CPU_INIT:
+ {
+ /* Make it call __cpu_indicator_init in libgcc. */
+ tree call_expr, fndecl, type;
+ type = build_function_type_list (integer_type_node, NULL_TREE);
+ fndecl = build_fn_decl ("__cpu_indicator_init", type);
+ call_expr = build_call_expr (fndecl, 0);
+ return expand_expr (call_expr, target, mode, EXPAND_NORMAL);
+ }
+ }
+
/* Determine whether the builtin function is available under the current ISA.
Originally the builtin was not created if it wasn't applicable to the
current ISA based on the command line switches. With function specific
@@ -34933,6 +35925,82 @@ ix86_autovectorize_vector_sizes (void)
return (TARGET_AVX && !TARGET_PREFER_AVX128) ? 32 | 16 : 0;
}
+/* If LOOP contains a possible LCP stalling instruction on corei7,
+ calculate new number of times to unroll instead of NUNROLL so that
+ the unrolled loop will still likely fit into the loop stream detector. */
+static unsigned
+ix86_loop_unroll_adjust (unsigned nunroll, struct loop *loop)
+{
+ basic_block *body, bb;
+ unsigned i;
+ rtx insn;
+ bool found = false;
+ unsigned newunroll;
+
+ if (ix86_tune != PROCESSOR_COREI7_64 &&
+ ix86_tune != PROCESSOR_COREI7_32)
+ return nunroll;
+
+ /* Look for instructions that store a constant into HImode (16-bit)
+ memory. These require a length-changing prefix and on corei7 are
+ prone to LCP stalls. These stalls can be avoided if the loop
+ is streamed from the loop stream detector. */
+ body = get_loop_body (loop);
+ for (i = 0; i < loop->num_nodes; i++)
+ {
+ bb = body[i];
+
+ FOR_BB_INSNS (bb, insn)
+ {
+ rtx set_expr, dest;
+ set_expr = single_set (insn);
+ if (!set_expr)
+ continue;
+
+ dest = SET_DEST (set_expr);
+
+ /* Don't reduce unroll factor in loops with floating point
+ computation, which tend to benefit more heavily from
+ larger unroll factors and are less likely to bottleneck
+ at the decoder. */
+ if (FLOAT_MODE_P (GET_MODE (dest)))
+ {
+ free (body);
+ return nunroll;
+ }
+
+ if (!found
+ && GET_MODE (dest) == HImode
+ && CONST_INT_P (SET_SRC (set_expr))
+ && MEM_P (dest))
+ {
+ found = true;
+ /* Keep walking loop body to look for FP computations above. */
+ }
+ }
+ }
+ free (body);
+
+ if (!found)
+ return nunroll;
+
+ if (dump_file)
+ {
+ fprintf (dump_file,
+ ";; Loop contains HImode store of const (possible LCP stalls),\n");
+ fprintf (dump_file,
+ " reduce unroll factor to fit into Loop Stream Detector\n");
+ }
+
+ /* On corei7 the loop stream detector can hold 28 uops, so
+ don't allow unrolling to exceed that many instructions. */
+ newunroll = 28 / loop->av_ninsns;
+ if (newunroll < nunroll)
+ return newunroll;
+
+ return nunroll;
+}
+
/* Initialize the GCC target structure. */
#undef TARGET_RETURN_IN_MEMORY
#define TARGET_RETURN_IN_MEMORY ix86_return_in_memory
@@ -35097,6 +36165,15 @@ ix86_autovectorize_vector_sizes (void)
#undef TARGET_BUILD_BUILTIN_VA_LIST
#define TARGET_BUILD_BUILTIN_VA_LIST ix86_build_builtin_va_list
+#undef TARGET_FOLD_BUILTIN
+#define TARGET_FOLD_BUILTIN ix86_fold_builtin
+
+#undef TARGET_MVERSION_FUNCTION
+#define TARGET_MVERSION_FUNCTION ix86_mversion_function
+
+#undef TARGET_SLOW_UNALIGNED_VECTOR_MEMOP
+#define TARGET_SLOW_UNALIGNED_VECTOR_MEMOP ix86_slow_unaligned_vector_memop
+
#undef TARGET_ENUM_VA_LIST_P
#define TARGET_ENUM_VA_LIST_P ix86_enum_va_list
@@ -35253,6 +36330,9 @@ ix86_autovectorize_vector_sizes (void)
#define TARGET_INIT_LIBFUNCS darwin_rename_builtins
#endif
+#undef TARGET_LOOP_UNROLL_ADJUST
+#define TARGET_LOOP_UNROLL_ADJUST ix86_loop_unroll_adjust
+
struct gcc_target targetm = TARGET_INITIALIZER;
#include "gt-i386.h"
diff --git a/gcc-4.6/gcc/config/i386/i386.md b/gcc-4.6/gcc/config/i386/i386.md
index 3bfa0b3d6..b1d7e5eba 100644
--- a/gcc-4.6/gcc/config/i386/i386.md
+++ b/gcc-4.6/gcc/config/i386/i386.md
@@ -1960,7 +1960,7 @@
(define_insn "*movdi_internal_rex64"
[(set (match_operand:DI 0 "nonimmediate_operand"
- "=r,r ,r,m ,!m,*y,*y,?r ,m ,?*Ym,?*y,*x,*x,?r ,m,?*Yi,*x,?*x,?*Ym")
+ "=r,r ,r,m ,!o,*y,*y,?r ,m ,?*Ym,?*y,*x,*x,?r ,m,?*Yi,*x,?*x,?*Ym")
(match_operand:DI 1 "general_operand"
"Z ,rem,i,re,n ,C ,*y,*Ym,*y,r ,m ,C ,*x,*Yi,*x,r ,m ,*Ym,*x"))]
"TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
@@ -2905,7 +2905,7 @@
(define_insn "*movdf_internal_rex64"
[(set (match_operand:DF 0 "nonimmediate_operand"
- "=f,m,f,r ,m,!r,!m,Y2*x,Y2*x,Y2*x,m ,Yi,r ")
+ "=f,m,f,r ,m,!r,!o,Y2*x,Y2*x,Y2*x,m ,Yi,r ")
(match_operand:DF 1 "general_operand"
"fm,f,G,rm,r,F ,F ,C ,Y2*x,m ,Y2*x,r ,Yi"))]
"TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))
@@ -5103,7 +5103,7 @@
&& reload_completed
&& (SSE_REG_P (operands[0])
|| (GET_CODE (operands[0]) == SUBREG
- && SSE_REG_P (operands[0])))"
+ && SSE_REG_P (SUBREG_REG (operands[0]))))"
[(set (match_dup 0) (float:MODEF (match_dup 1)))])
(define_split
@@ -5116,7 +5116,7 @@
&& reload_completed
&& (SSE_REG_P (operands[0])
|| (GET_CODE (operands[0]) == SUBREG
- && SSE_REG_P (operands[0])))"
+ && SSE_REG_P (SUBREG_REG (operands[0]))))"
[(set (match_dup 2) (match_dup 1))
(set (match_dup 0) (float:MODEF (match_dup 2)))])
@@ -5207,7 +5207,7 @@
&& reload_completed
&& (SSE_REG_P (operands[0])
|| (GET_CODE (operands[0]) == SUBREG
- && SSE_REG_P (operands[0])))"
+ && SSE_REG_P (SUBREG_REG (operands[0]))))"
[(const_int 0)]
{
rtx op1 = operands[1];
@@ -5248,7 +5248,7 @@
&& reload_completed
&& (SSE_REG_P (operands[0])
|| (GET_CODE (operands[0]) == SUBREG
- && SSE_REG_P (operands[0])))"
+ && SSE_REG_P (SUBREG_REG (operands[0]))))"
[(const_int 0)]
{
operands[3] = simplify_gen_subreg (<ssevecmode>mode, operands[0],
@@ -5270,7 +5270,7 @@
&& reload_completed
&& (SSE_REG_P (operands[0])
|| (GET_CODE (operands[0]) == SUBREG
- && SSE_REG_P (operands[0])))"
+ && SSE_REG_P (SUBREG_REG (operands[0]))))"
[(const_int 0)]
{
rtx op1 = operands[1];
@@ -5280,11 +5280,20 @@
if (GET_CODE (op1) == SUBREG)
op1 = SUBREG_REG (op1);
- if (GENERAL_REG_P (op1) && TARGET_INTER_UNIT_MOVES)
+ if (GENERAL_REG_P (op1))
{
operands[4] = simplify_gen_subreg (V4SImode, operands[0], <MODE>mode, 0);
- emit_insn (gen_sse2_loadld (operands[4],
- CONST0_RTX (V4SImode), operands[1]));
+ if (TARGET_INTER_UNIT_MOVES)
+ emit_insn (gen_sse2_loadld (operands[4],
+ CONST0_RTX (V4SImode), operands[1]));
+ else
+ {
+ operands[5] = ix86_force_to_memory (GET_MODE (operands[1]),
+ operands[1]);
+ emit_insn (gen_sse2_loadld (operands[4],
+ CONST0_RTX (V4SImode), operands[5]));
+ ix86_free_from_memory (GET_MODE (operands[1]));
+ }
}
/* We can ignore possible trapping value in the
high part of SSE register for non-trapping math. */
@@ -5305,7 +5314,7 @@
&& reload_completed
&& (SSE_REG_P (operands[0])
|| (GET_CODE (operands[0]) == SUBREG
- && SSE_REG_P (operands[0])))"
+ && SSE_REG_P (SUBREG_REG (operands[0]))))"
[(const_int 0)]
{
operands[3] = simplify_gen_subreg (<ssevecmode>mode, operands[0],
@@ -5366,7 +5375,7 @@
&& reload_completed
&& (SSE_REG_P (operands[0])
|| (GET_CODE (operands[0]) == SUBREG
- && SSE_REG_P (operands[0])))"
+ && SSE_REG_P (SUBREG_REG (operands[0]))))"
[(set (match_dup 0) (float:MODEF (match_dup 1)))])
(define_insn "*float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit"
@@ -5401,7 +5410,7 @@
&& reload_completed
&& (SSE_REG_P (operands[0])
|| (GET_CODE (operands[0]) == SUBREG
- && SSE_REG_P (operands[0])))"
+ && SSE_REG_P (SUBREG_REG (operands[0]))))"
[(set (match_dup 2) (match_dup 1))
(set (match_dup 0) (float:MODEF (match_dup 2)))])
@@ -5414,7 +5423,7 @@
&& reload_completed
&& (SSE_REG_P (operands[0])
|| (GET_CODE (operands[0]) == SUBREG
- && SSE_REG_P (operands[0])))"
+ && SSE_REG_P (SUBREG_REG (operands[0]))))"
[(set (match_dup 0) (float:MODEF (match_dup 1)))])
(define_insn "*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp"
@@ -11341,7 +11350,7 @@
(define_insn_and_split "*call_pop_1_vzeroupper"
[(parallel
- [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lsm"))
+ [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lzm"))
(match_operand:SI 1 "" ""))
(set (reg:SI SP_REG)
(plus:SI (reg:SI SP_REG)
@@ -11356,7 +11365,7 @@
[(set_attr "type" "call")])
(define_insn "*call_pop_1"
- [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lsm"))
+ [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lzm"))
(match_operand:SI 1 "" ""))
(set (reg:SI SP_REG)
(plus:SI (reg:SI SP_REG)
@@ -11371,7 +11380,7 @@
(define_insn_and_split "*sibcall_pop_1_vzeroupper"
[(parallel
- [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "s,U"))
+ [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "z,U"))
(match_operand:SI 1 "" ""))
(set (reg:SI SP_REG)
(plus:SI (reg:SI SP_REG)
@@ -11386,7 +11395,7 @@
[(set_attr "type" "call")])
(define_insn "*sibcall_pop_1"
- [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "s,U"))
+ [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "z,U"))
(match_operand:SI 1 "" ""))
(set (reg:SI SP_REG)
(plus:SI (reg:SI SP_REG)
@@ -11437,7 +11446,7 @@
[(set_attr "type" "call")])
(define_insn_and_split "*call_1_vzeroupper"
- [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lsm"))
+ [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lzm"))
(match_operand 1 "" ""))
(unspec [(match_operand 2 "const_int_operand" "")]
UNSPEC_CALL_NEEDS_VZEROUPPER)]
@@ -11449,14 +11458,14 @@
[(set_attr "type" "call")])
(define_insn "*call_1"
- [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lsm"))
+ [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "lzm"))
(match_operand 1 "" ""))]
"!TARGET_64BIT && !SIBLING_CALL_P (insn)"
{ return ix86_output_call_insn (insn, operands[0], 0); }
[(set_attr "type" "call")])
(define_insn_and_split "*sibcall_1_vzeroupper"
- [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "s,U"))
+ [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "z,U"))
(match_operand 1 "" ""))
(unspec [(match_operand 2 "const_int_operand" "")]
UNSPEC_CALL_NEEDS_VZEROUPPER)]
@@ -11468,14 +11477,14 @@
[(set_attr "type" "call")])
(define_insn "*sibcall_1"
- [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "s,U"))
+ [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "z,U"))
(match_operand 1 "" ""))]
"!TARGET_64BIT && SIBLING_CALL_P (insn)"
{ return ix86_output_call_insn (insn, operands[0], 0); }
[(set_attr "type" "call")])
(define_insn_and_split "*call_1_rex64_vzeroupper"
- [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rsm"))
+ [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rzm"))
(match_operand 1 "" ""))
(unspec [(match_operand 2 "const_int_operand" "")]
UNSPEC_CALL_NEEDS_VZEROUPPER)]
@@ -11488,7 +11497,7 @@
[(set_attr "type" "call")])
(define_insn "*call_1_rex64"
- [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rsm"))
+ [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rzm"))
(match_operand 1 "" ""))]
"TARGET_64BIT && !SIBLING_CALL_P (insn)
&& ix86_cmodel != CM_LARGE && ix86_cmodel != CM_LARGE_PIC"
@@ -11497,7 +11506,7 @@
(define_insn_and_split "*call_1_rex64_ms_sysv_vzeroupper"
[(parallel
- [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rsm"))
+ [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rzm"))
(match_operand 1 "" ""))
(unspec [(const_int 0)] UNSPEC_MS_TO_SYSV_CALL)
(clobber (reg:TI XMM6_REG))
@@ -11522,7 +11531,7 @@
[(set_attr "type" "call")])
(define_insn "*call_1_rex64_ms_sysv"
- [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rsm"))
+ [(call (mem:QI (match_operand:DI 0 "call_insn_operand" "rzm"))
(match_operand 1 "" ""))
(unspec [(const_int 0)] UNSPEC_MS_TO_SYSV_CALL)
(clobber (reg:TI XMM6_REG))
@@ -11561,7 +11570,7 @@
[(set_attr "type" "call")])
(define_insn_and_split "*sibcall_1_rex64_vzeroupper"
- [(call (mem:QI (match_operand:DI 0 "sibcall_insn_operand" "s,U"))
+ [(call (mem:QI (match_operand:DI 0 "sibcall_insn_operand" "z,U"))
(match_operand 1 "" ""))
(unspec [(match_operand 2 "const_int_operand" "")]
UNSPEC_CALL_NEEDS_VZEROUPPER)]
@@ -11573,7 +11582,7 @@
[(set_attr "type" "call")])
(define_insn "*sibcall_1_rex64"
- [(call (mem:QI (match_operand:DI 0 "sibcall_insn_operand" "s,U"))
+ [(call (mem:QI (match_operand:DI 0 "sibcall_insn_operand" "z,U"))
(match_operand 1 "" ""))]
"TARGET_64BIT && SIBLING_CALL_P (insn)"
{ return ix86_output_call_insn (insn, operands[0], 0); }
@@ -14616,7 +14625,7 @@
emit_insn (gen_sse4_1_round<mode>2
(operands[0], operands[1], GEN_INT (0x04)));
else
- ix86_expand_rint (operand0, operand1);
+ ix86_expand_rint (operands[0], operands[1]);
}
else
{
@@ -14640,9 +14649,9 @@
if (optimize_insn_for_size_p ())
FAIL;
if (TARGET_64BIT || (<MODE>mode != DFmode))
- ix86_expand_round (operand0, operand1);
+ ix86_expand_round (operands[0], operands[1]);
else
- ix86_expand_rounddf_32 (operand0, operand1);
+ ix86_expand_rounddf_32 (operands[0], operands[1]);
DONE;
})
@@ -14787,7 +14796,7 @@
{
if (optimize_insn_for_size_p ())
FAIL;
- ix86_expand_lround (operand0, operand1);
+ ix86_expand_lround (operands[0], operands[1]);
DONE;
})
@@ -14862,9 +14871,9 @@
emit_insn (gen_sse4_1_round<mode>2
(operands[0], operands[1], GEN_INT (0x01)));
else if (TARGET_64BIT || (<MODE>mode != DFmode))
- ix86_expand_floorceil (operand0, operand1, true);
+ ix86_expand_floorceil (operands[0], operands[1], true);
else
- ix86_expand_floorceildf_32 (operand0, operand1, true);
+ ix86_expand_floorceildf_32 (operands[0], operands[1], true);
}
else
{
@@ -15044,7 +15053,7 @@
{
if (TARGET_64BIT && optimize_insn_for_size_p ())
FAIL;
- ix86_expand_lfloorceil (operand0, operand1, true);
+ ix86_expand_lfloorceil (operands[0], operands[1], true);
DONE;
})
@@ -15119,9 +15128,9 @@
else if (optimize_insn_for_size_p ())
FAIL;
else if (TARGET_64BIT || (<MODE>mode != DFmode))
- ix86_expand_floorceil (operand0, operand1, false);
+ ix86_expand_floorceil (operands[0], operands[1], false);
else
- ix86_expand_floorceildf_32 (operand0, operand1, false);
+ ix86_expand_floorceildf_32 (operands[0], operands[1], false);
}
else
{
@@ -15299,7 +15308,7 @@
"SSE_FLOAT_MODE_P (<MODEF:MODE>mode) && TARGET_SSE_MATH
&& !flag_trapping_math"
{
- ix86_expand_lfloorceil (operand0, operand1, false);
+ ix86_expand_lfloorceil (operands[0], operands[1], false);
DONE;
})
@@ -15374,9 +15383,9 @@
else if (optimize_insn_for_size_p ())
FAIL;
else if (TARGET_64BIT || (<MODE>mode != DFmode))
- ix86_expand_trunc (operand0, operand1);
+ ix86_expand_trunc (operands[0], operands[1]);
else
- ix86_expand_truncdf_32 (operand0, operand1);
+ ix86_expand_truncdf_32 (operands[0], operands[1]);
}
else
{
@@ -15699,7 +15708,8 @@
(set (match_operand:DI 1 "register_operand" "=S")
(plus:DI (match_dup 3)
(const_int 8)))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"movsq"
[(set_attr "type" "str")
(set_attr "memory" "both")
@@ -15714,7 +15724,7 @@
(set (match_operand:P 1 "register_operand" "=S")
(plus:P (match_dup 3)
(const_int 4)))]
- ""
+ "!(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"movs{l|d}"
[(set_attr "type" "str")
(set_attr "memory" "both")
@@ -15729,7 +15739,7 @@
(set (match_operand:P 1 "register_operand" "=S")
(plus:P (match_dup 3)
(const_int 2)))]
- ""
+ "!(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"movsw"
[(set_attr "type" "str")
(set_attr "memory" "both")
@@ -15744,7 +15754,7 @@
(set (match_operand:P 1 "register_operand" "=S")
(plus:P (match_dup 3)
(const_int 1)))]
- ""
+ "!(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"movsb"
[(set_attr "type" "str")
(set_attr "memory" "both")
@@ -15779,7 +15789,8 @@
(set (mem:BLK (match_dup 3))
(mem:BLK (match_dup 4)))
(use (match_dup 5))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"rep{%;} movsq"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -15798,7 +15809,7 @@
(set (mem:BLK (match_dup 3))
(mem:BLK (match_dup 4)))
(use (match_dup 5))]
- ""
+ "!(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"rep{%;} movs{l|d}"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -15815,7 +15826,7 @@
(set (mem:BLK (match_dup 3))
(mem:BLK (match_dup 4)))
(use (match_dup 5))]
- ""
+ "!(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"rep{%;} movsb"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -15858,7 +15869,9 @@
operands[3] = gen_rtx_PLUS (Pmode, operands[0],
GEN_INT (GET_MODE_SIZE (GET_MODE
(operands[2]))));
- if (TARGET_SINGLE_STRINGOP || optimize_insn_for_size_p ())
+ /* Can't use this if the user has appropriated eax or edi. */
+ if ((TARGET_SINGLE_STRINGOP || optimize_insn_for_size_p ())
+ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG]))
{
emit_insn (gen_strset_singleop (operands[0], operands[1], operands[2],
operands[3]));
@@ -15880,7 +15893,8 @@
(set (match_operand:DI 0 "register_operand" "=D")
(plus:DI (match_dup 1)
(const_int 8)))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
"stosq"
[(set_attr "type" "str")
(set_attr "memory" "store")
@@ -15892,7 +15906,7 @@
(set (match_operand:P 0 "register_operand" "=D")
(plus:P (match_dup 1)
(const_int 4)))]
- ""
+ "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
"stos{l|d}"
[(set_attr "type" "str")
(set_attr "memory" "store")
@@ -15904,7 +15918,7 @@
(set (match_operand:P 0 "register_operand" "=D")
(plus:P (match_dup 1)
(const_int 2)))]
- ""
+ "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
"stosw"
[(set_attr "type" "str")
(set_attr "memory" "store")
@@ -15916,7 +15930,7 @@
(set (match_operand:P 0 "register_operand" "=D")
(plus:P (match_dup 1)
(const_int 1)))]
- ""
+ "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
"stosb"
[(set_attr "type" "str")
(set_attr "memory" "store")
@@ -15947,7 +15961,8 @@
(const_int 0))
(use (match_operand:DI 2 "register_operand" "a"))
(use (match_dup 4))]
- "TARGET_64BIT"
+ "TARGET_64BIT
+ && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
"rep{%;} stosq"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -15964,7 +15979,7 @@
(const_int 0))
(use (match_operand:SI 2 "register_operand" "a"))
(use (match_dup 4))]
- ""
+ "!(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
"rep{%;} stos{l|d}"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -15980,7 +15995,7 @@
(const_int 0))
(use (match_operand:QI 2 "register_operand" "a"))
(use (match_dup 4))]
- ""
+ "!(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
"rep{%;} stosb"
[(set_attr "type" "str")
(set_attr "prefix_rep" "1")
@@ -16005,8 +16020,8 @@
if (optimize_insn_for_size_p () && !TARGET_INLINE_ALL_STRINGOPS)
FAIL;
- /* Can't use this if the user has appropriated esi or edi. */
- if (fixed_regs[SI_REG] || fixed_regs[DI_REG])
+ /* Can't use this if the user has appropriated ecx, esi or edi. */
+ if (fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])
FAIL;
out = operands[0];
@@ -16101,7 +16116,7 @@
(clobber (match_operand:P 0 "register_operand" "=S"))
(clobber (match_operand:P 1 "register_operand" "=D"))
(clobber (match_operand:P 2 "register_operand" "=c"))]
- ""
+ "!(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"repz{%;} cmpsb"
[(set_attr "type" "str")
(set_attr "mode" "QI")
@@ -16141,7 +16156,7 @@
(clobber (match_operand:P 0 "register_operand" "=S"))
(clobber (match_operand:P 1 "register_operand" "=D"))
(clobber (match_operand:P 2 "register_operand" "=c"))]
- ""
+ "!(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
"repz{%;} cmpsb"
[(set_attr "type" "str")
(set_attr "mode" "QI")
@@ -16153,11 +16168,11 @@
(set_attr "prefix_rep" "1")])
(define_expand "strlen<mode>"
- [(set (match_operand:SWI48x 0 "register_operand" "")
- (unspec:SWI48x [(match_operand:BLK 1 "general_operand" "")
- (match_operand:QI 2 "immediate_operand" "")
- (match_operand 3 "immediate_operand" "")]
- UNSPEC_SCAS))]
+ [(set (match_operand:P 0 "register_operand" "")
+ (unspec:P [(match_operand:BLK 1 "general_operand" "")
+ (match_operand:QI 2 "immediate_operand" "")
+ (match_operand 3 "immediate_operand" "")]
+ UNSPEC_SCAS))]
""
{
if (ix86_expand_strlen (operands[0], operands[1], operands[2], operands[3]))
@@ -16182,7 +16197,7 @@
(match_operand:P 4 "register_operand" "0")] UNSPEC_SCAS))
(clobber (match_operand:P 1 "register_operand" "=D"))
(clobber (reg:CC FLAGS_REG))]
- ""
+ "!(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
"repnz{%;} scasb"
[(set_attr "type" "str")
(set_attr "mode" "QI")
@@ -17567,7 +17582,7 @@
(define_insn_and_split "*call_value_pop_1_vzeroupper"
[(parallel
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lsm"))
+ (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lzm"))
(match_operand:SI 2 "" "")))
(set (reg:SI SP_REG)
(plus:SI (reg:SI SP_REG)
@@ -17583,7 +17598,7 @@
(define_insn "*call_value_pop_1"
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lsm"))
+ (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lzm"))
(match_operand:SI 2 "" "")))
(set (reg:SI SP_REG)
(plus:SI (reg:SI SP_REG)
@@ -17595,7 +17610,7 @@
(define_insn_and_split "*sibcall_value_pop_1_vzeroupper"
[(parallel
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "s,U"))
+ (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "z,U"))
(match_operand:SI 2 "" "")))
(set (reg:SI SP_REG)
(plus:SI (reg:SI SP_REG)
@@ -17611,7 +17626,7 @@
(define_insn "*sibcall_value_pop_1"
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "s,U"))
+ (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "z,U"))
(match_operand:SI 2 "" "")))
(set (reg:SI SP_REG)
(plus:SI (reg:SI SP_REG)
@@ -17712,7 +17727,7 @@
(define_insn_and_split "*call_value_1_vzeroupper"
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lsm"))
+ (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lzm"))
(match_operand:SI 2 "" "")))
(unspec [(match_operand 3 "const_int_operand" "")]
UNSPEC_CALL_NEEDS_VZEROUPPER)]
@@ -17725,7 +17740,7 @@
(define_insn "*call_value_1"
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lsm"))
+ (call (mem:QI (match_operand:SI 1 "call_insn_operand" "lzm"))
(match_operand:SI 2 "" "")))]
"!TARGET_64BIT && !SIBLING_CALL_P (insn)"
{ return ix86_output_call_insn (insn, operands[1], 1); }
@@ -17733,7 +17748,7 @@
(define_insn_and_split "*sibcall_value_1_vzeroupper"
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "s,U"))
+ (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "z,U"))
(match_operand:SI 2 "" "")))
(unspec [(match_operand 3 "const_int_operand" "")]
UNSPEC_CALL_NEEDS_VZEROUPPER)]
@@ -17746,7 +17761,7 @@
(define_insn "*sibcall_value_1"
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "s,U"))
+ (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "z,U"))
(match_operand:SI 2 "" "")))]
"!TARGET_64BIT && SIBLING_CALL_P (insn)"
{ return ix86_output_call_insn (insn, operands[1], 1); }
@@ -17754,7 +17769,7 @@
(define_insn_and_split "*call_value_1_rex64_vzeroupper"
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rsm"))
+ (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rzm"))
(match_operand:DI 2 "" "")))
(unspec [(match_operand 3 "const_int_operand" "")]
UNSPEC_CALL_NEEDS_VZEROUPPER)]
@@ -17768,7 +17783,7 @@
(define_insn "*call_value_1_rex64"
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rsm"))
+ (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rzm"))
(match_operand:DI 2 "" "")))]
"TARGET_64BIT && !SIBLING_CALL_P (insn)
&& ix86_cmodel != CM_LARGE && ix86_cmodel != CM_LARGE_PIC"
@@ -17778,7 +17793,7 @@
(define_insn_and_split "*call_value_1_rex64_ms_sysv_vzeroupper"
[(parallel
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rsm"))
+ (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rzm"))
(match_operand:DI 2 "" "")))
(unspec [(const_int 0)] UNSPEC_MS_TO_SYSV_CALL)
(clobber (reg:TI XMM6_REG))
@@ -17804,7 +17819,7 @@
(define_insn "*call_value_1_rex64_ms_sysv"
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rsm"))
+ (call (mem:QI (match_operand:DI 1 "call_insn_operand" "rzm"))
(match_operand:DI 2 "" "")))
(unspec [(const_int 0)] UNSPEC_MS_TO_SYSV_CALL)
(clobber (reg:TI XMM6_REG))
@@ -17846,7 +17861,7 @@
(define_insn_and_split "*sibcall_value_1_rex64_vzeroupper"
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand:DI 1 "sibcall_insn_operand" "s,U"))
+ (call (mem:QI (match_operand:DI 1 "sibcall_insn_operand" "z,U"))
(match_operand:DI 2 "" "")))
(unspec [(match_operand 3 "const_int_operand" "")]
UNSPEC_CALL_NEEDS_VZEROUPPER)]
@@ -17859,7 +17874,7 @@
(define_insn "*sibcall_value_1_rex64"
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand:DI 1 "sibcall_insn_operand" "s,U"))
+ (call (mem:QI (match_operand:DI 1 "sibcall_insn_operand" "z,U"))
(match_operand:DI 2 "" "")))]
"TARGET_64BIT && SIBLING_CALL_P (insn)"
{ return ix86_output_call_insn (insn, operands[1], 1); }
@@ -18270,8 +18285,8 @@
(match_operand:SI 3 "const_int_operand" "i")]
UNSPECV_LWPVAL_INTRINSIC)]
"TARGET_LWP"
- "/* Avoid unused variable warning. */
- (void) operand0;")
+ ;; Avoid unused variable warning.
+ "(void) operands[0];")
(define_insn "*lwp_lwpval<mode>3_1"
[(unspec_volatile [(match_operand:SWI48 0 "register_operand" "r")
diff --git a/gcc-4.6/gcc/config/i386/i386.opt b/gcc-4.6/gcc/config/i386/i386.opt
index fe5949f3b..dca06e7aa 100644
--- a/gcc-4.6/gcc/config/i386/i386.opt
+++ b/gcc-4.6/gcc/config/i386/i386.opt
@@ -101,6 +101,10 @@ march=
Target RejectNegative Joined Var(ix86_arch_string)
Generate code for given CPU
+mvarch=
+Target RejectNegative Joined Var(ix86_mv_arch_string)
+Multiversion for the given CPU(s)
+
masm=
Target RejectNegative Joined Var(ix86_asm_string)
Use given assembler dialect
diff --git a/gcc-4.6/gcc/config/i386/libgcc-glibc.ver b/gcc-4.6/gcc/config/i386/libgcc-glibc.ver
index e79d3267f..78b286c3c 100644
--- a/gcc-4.6/gcc/config/i386/libgcc-glibc.ver
+++ b/gcc-4.6/gcc/config/i386/libgcc-glibc.ver
@@ -147,6 +147,12 @@ GCC_4.3.0 {
__trunctfxf2
__unordtf2
}
+
+GCC_4.6.0 {
+ __cpu_indicator_init
+ __cpu_model
+ __cpu_features
+}
%else
GCC_4.4.0 {
__addtf3
@@ -183,4 +189,10 @@ GCC_4.4.0 {
GCC_4.5.0 {
__extendxftf2
}
+
+GCC_4.6.0 {
+ __cpu_indicator_init
+ __cpu_model
+ __cpu_features
+}
%endif
diff --git a/gcc-4.6/gcc/config/i386/linux.h b/gcc-4.6/gcc/config/i386/linux.h
index 019cea9d0..3a23598f9 100644
--- a/gcc-4.6/gcc/config/i386/linux.h
+++ b/gcc-4.6/gcc/config/i386/linux.h
@@ -123,7 +123,7 @@ along with GCC; see the file COPYING3. If not see
/* Similar to standard Linux, but adding -ffast-math support. */
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
%{mpc32:crtprec32.o%s} \
%{mpc64:crtprec64.o%s} \
%{mpc80:crtprec80.o%s} \
diff --git a/gcc-4.6/gcc/config/i386/linux64.h b/gcc-4.6/gcc/config/i386/linux64.h
index 429c273e1..b3fe50072 100644
--- a/gcc-4.6/gcc/config/i386/linux64.h
+++ b/gcc-4.6/gcc/config/i386/linux64.h
@@ -102,7 +102,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* Similar to standard Linux, but adding -ffast-math support. */
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
%{mpc32:crtprec32.o%s} \
%{mpc64:crtprec64.o%s} \
%{mpc80:crtprec80.o%s} \
diff --git a/gcc-4.6/gcc/config/i386/mingw32.h b/gcc-4.6/gcc/config/i386/mingw32.h
index 4f8a63a35..27da92b4e 100644
--- a/gcc-4.6/gcc/config/i386/mingw32.h
+++ b/gcc-4.6/gcc/config/i386/mingw32.h
@@ -124,7 +124,7 @@ along with GCC; see the file COPYING3. If not see
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
crtend.o%s"
/* Override startfile prefix defaults. */
@@ -239,3 +239,9 @@ __enable_execute_stack (void *addr) \
/* We should find a way to not have to update this manually. */
#define LIBGCJ_SONAME "libgcj" /*LIBGCC_EH_EXTN*/ "-12.dll"
+/* For 32-bit Windows we need valid frame-pointer for function using
+ setjmp. */
+#undef SUBTARGET_FRAME_POINTER_REQUIRED
+#define SUBTARGET_FRAME_POINTER_REQUIRED \
+ (!TARGET_64BIT && cfun->calls_setjmp)
+
diff --git a/gcc-4.6/gcc/config/i386/predicates.md b/gcc-4.6/gcc/config/i386/predicates.md
index 7cce9d4ad..fc5eb2d32 100644
--- a/gcc-4.6/gcc/config/i386/predicates.md
+++ b/gcc-4.6/gcc/config/i386/predicates.md
@@ -1105,7 +1105,7 @@
;; Return true if OP is a binary operator that can be promoted to wider mode.
(define_predicate "promotable_binary_operator"
- (ior (match_code "plus,and,ior,xor,ashift")
+ (ior (match_code "plus,minus,and,ior,xor,ashift")
(and (match_code "mult")
(match_test "TARGET_TUNE_PROMOTE_HIMODE_IMUL"))))
diff --git a/gcc-4.6/gcc/config/i386/sse.md b/gcc-4.6/gcc/config/i386/sse.md
index 216c0a1d3..b5b900a02 100644
--- a/gcc-4.6/gcc/config/i386/sse.md
+++ b/gcc-4.6/gcc/config/i386/sse.md
@@ -4189,7 +4189,7 @@
(vec_select:<avxhalfvecmode>
(match_operand:AVX256MODE4P 1 "nonimmediate_operand" "xm,x")
(parallel [(const_int 0) (const_int 1)])))]
- "TARGET_AVX"
+ "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"#"
"&& reload_completed"
[(const_int 0)]
@@ -4223,7 +4223,7 @@
(match_operand:AVX256MODE8P 1 "nonimmediate_operand" "xm,x")
(parallel [(const_int 0) (const_int 1)
(const_int 2) (const_int 3)])))]
- "TARGET_AVX"
+ "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"#"
"&& reload_completed"
[(const_int 0)]
@@ -4260,7 +4260,7 @@
(const_int 2) (const_int 3)
(const_int 4) (const_int 5)
(const_int 6) (const_int 7)])))]
- "TARGET_AVX"
+ "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"#"
"&& reload_completed"
[(const_int 0)]
@@ -4303,7 +4303,7 @@
(const_int 10) (const_int 11)
(const_int 12) (const_int 13)
(const_int 14) (const_int 15)])))]
- "TARGET_AVX"
+ "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"#"
"&& reload_completed"
[(const_int 0)]
@@ -4357,9 +4357,9 @@
(vec_select:SF
(match_operand:V4SF 1 "memory_operand" "o")
(parallel [(match_operand 2 "const_0_to_3_operand" "n")])))]
- ""
+ "TARGET_SSE"
"#"
- "reload_completed"
+ "&& reload_completed"
[(const_int 0)]
{
int i = INTVAL (operands[2]);
@@ -4521,15 +4521,14 @@
[(set (match_operand:V4DF 0 "register_operand" "=x,x")
(vec_select:V4DF
(vec_concat:V8DF
- (match_operand:V4DF 1 "nonimmediate_operand" "xm,x")
- (match_operand:V4DF 2 "nonimmediate_operand" " 1,xm"))
+ (match_operand:V4DF 1 "nonimmediate_operand" " x,m")
+ (match_operand:V4DF 2 "nonimmediate_operand" "xm,1"))
(parallel [(const_int 0) (const_int 4)
(const_int 2) (const_int 6)])))]
- "TARGET_AVX
- && (!MEM_P (operands[1]) || rtx_equal_p (operands[1], operands[2]))"
+ "TARGET_AVX"
"@
- vmovddup\t{%1, %0|%0, %1}
- vunpcklpd\t{%2, %1, %0|%0, %1, %2}"
+ vunpcklpd\t{%2, %1, %0|%0, %1, %2}
+ vmovddup\t{%1, %0|%0, %1}"
[(set_attr "type" "sselog")
(set_attr "prefix" "vex")
(set_attr "mode" "V4DF")])
@@ -9901,6 +9900,9 @@
operands[2], operands[3],
operands[4], operands[5],
operands[6]));
+ if (!(flags || ecx || xmm0))
+ emit_note (NOTE_INSN_DELETED);
+
DONE;
}
[(set_attr "type" "sselog")
@@ -10028,6 +10030,9 @@
emit_insn (gen_sse4_2_pcmpistr_cconly (NULL, NULL,
operands[2], operands[3],
operands[4]));
+ if (!(flags || ecx || xmm0))
+ emit_note (NOTE_INSN_DELETED);
+
DONE;
}
[(set_attr "type" "sselog")
@@ -10459,8 +10464,8 @@
[(set (match_operand:SSEMODE 0 "register_operand" "=x,x")
(if_then_else:SSEMODE
(match_operand:SSEMODE 3 "nonimmediate_operand" "x,m")
- (match_operand:SSEMODE 1 "vector_move_operand" "x,x")
- (match_operand:SSEMODE 2 "vector_move_operand" "xm,x")))]
+ (match_operand:SSEMODE 1 "register_operand" "x,x")
+ (match_operand:SSEMODE 2 "nonimmediate_operand" "xm,x")))]
"TARGET_XOP"
"vpcmov\t{%3, %2, %1, %0|%0, %1, %2, %3}"
[(set_attr "type" "sse4arg")])
@@ -10469,8 +10474,8 @@
[(set (match_operand:AVX256MODE 0 "register_operand" "=x,x")
(if_then_else:AVX256MODE
(match_operand:AVX256MODE 3 "nonimmediate_operand" "x,m")
- (match_operand:AVX256MODE 1 "vector_move_operand" "x,x")
- (match_operand:AVX256MODE 2 "vector_move_operand" "xm,x")))]
+ (match_operand:AVX256MODE 1 "register_operand" "x,x")
+ (match_operand:AVX256MODE 2 "nonimmediate_operand" "xm,x")))]
"TARGET_XOP"
"vpcmov\t{%3, %2, %1, %0|%0, %1, %2, %3}"
[(set_attr "type" "sse4arg")])
@@ -12001,8 +12006,7 @@
[(set (match_operand:AVXMODEF2P 0 "register_operand" "=x")
(unspec:AVXMODEF2P
[(match_operand:AVXMODEF2P 1 "memory_operand" "m")
- (match_operand:<avxpermvecmode> 2 "register_operand" "x")
- (match_dup 0)]
+ (match_operand:<avxpermvecmode> 2 "register_operand" "x")]
UNSPEC_MASKLOAD))]
"TARGET_AVX"
"vmaskmov<ssemodesuffix>\t{%1, %2, %0|%0, %2, %1}"
diff --git a/gcc-4.6/gcc/config/ia64/linux.h b/gcc-4.6/gcc/config/ia64/linux.h
index dafd2d2ce..c86c1c4ea 100644
--- a/gcc-4.6/gcc/config/ia64/linux.h
+++ b/gcc-4.6/gcc/config/ia64/linux.h
@@ -55,7 +55,7 @@ do { \
/* Similar to standard Linux, but adding -ffast-math support. */
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
/* Define this for shared library support because it isn't in the main
diff --git a/gcc-4.6/gcc/config/m68k/m68k.c b/gcc-4.6/gcc/config/m68k/m68k.c
index b8e9ff266..e5bd0119a 100644
--- a/gcc-4.6/gcc/config/m68k/m68k.c
+++ b/gcc-4.6/gcc/config/m68k/m68k.c
@@ -136,6 +136,7 @@ static void m68k_conditional_register_usage (void);
static bool m68k_legitimate_address_p (enum machine_mode, rtx, bool);
static bool m68k_handle_option (size_t, const char *, int);
static void m68k_option_override (void);
+static void m68k_override_options_after_change (void);
static rtx find_addr_reg (rtx);
static const char *singlemove_string (rtx *);
static void m68k_output_mi_thunk (FILE *, tree, HOST_WIDE_INT,
@@ -241,6 +242,9 @@ const char *m68k_library_id_string = "_current_shared_library_a5_offset_";
#undef TARGET_OPTION_OVERRIDE
#define TARGET_OPTION_OVERRIDE m68k_option_override
+#undef TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE
+#define TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE m68k_override_options_after_change
+
#undef TARGET_RTX_COSTS
#define TARGET_RTX_COSTS m68k_rtx_costs
@@ -756,6 +760,19 @@ m68k_option_override (void)
}
}
+/* Implement TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE. */
+
+static void
+m68k_override_options_after_change (void)
+{
+ if (m68k_sched_cpu == CPU_UNKNOWN)
+ {
+ flag_schedule_insns = 0;
+ flag_schedule_insns_after_reload = 0;
+ flag_modulo_sched = 0;
+ }
+}
+
/* Generate a macro of the form __mPREFIX_cpu_NAME, where PREFIX is the
given argument and NAME is the argument passed to -mcpu. Return NULL
if -mcpu was not passed. */
diff --git a/gcc-4.6/gcc/config/mips/linux.h b/gcc-4.6/gcc/config/mips/linux.h
index c69fab1f6..a78f6bcbb 100644
--- a/gcc-4.6/gcc/config/mips/linux.h
+++ b/gcc-4.6/gcc/config/mips/linux.h
@@ -147,5 +147,5 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
/* Similar to standard Linux, but adding -ffast-math support. */
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
diff --git a/gcc-4.6/gcc/config/pa/pa.c b/gcc-4.6/gcc/config/pa/pa.c
index 8a691c777..d5780e5e6 100644
--- a/gcc-4.6/gcc/config/pa/pa.c
+++ b/gcc-4.6/gcc/config/pa/pa.c
@@ -1863,6 +1863,11 @@ emit_move_sequence (rtx *operands, enum machine_mode mode, rtx scratch_reg)
/* Handle the most common case: storing into a register. */
else if (register_operand (operand0, mode))
{
+ /* Legitimize TLS symbol references. This happens for references
+ that aren't a legitimate constant. */
+ if (PA_SYMBOL_REF_TLS_P (operand1))
+ operand1 = legitimize_tls_address (operand1);
+
if (register_operand (operand1, mode)
|| (GET_CODE (operand1) == CONST_INT
&& cint_ok_for_move (INTVAL (operand1)))
diff --git a/gcc-4.6/gcc/config/pa/pa.h b/gcc-4.6/gcc/config/pa/pa.h
index 41af1f12f..012186854 100644
--- a/gcc-4.6/gcc/config/pa/pa.h
+++ b/gcc-4.6/gcc/config/pa/pa.h
@@ -848,6 +848,9 @@ extern int may_call_alloca;
&& (NEW_HP_ASSEMBLER \
|| TARGET_GAS \
|| GET_CODE (X) != LABEL_REF) \
+ && (!PA_SYMBOL_REF_TLS_P (X) \
+ || (SYMBOL_REF_TLS_MODEL (X) != TLS_MODEL_GLOBAL_DYNAMIC \
+ && SYMBOL_REF_TLS_MODEL (X) != TLS_MODEL_LOCAL_DYNAMIC)) \
&& (!TARGET_64BIT \
|| GET_CODE (X) != CONST_DOUBLE) \
&& (!TARGET_64BIT \
diff --git a/gcc-4.6/gcc/config/rs6000/rs6000.c b/gcc-4.6/gcc/config/rs6000/rs6000.c
index d7407fa68..ae0cc17f5 100644
--- a/gcc-4.6/gcc/config/rs6000/rs6000.c
+++ b/gcc-4.6/gcc/config/rs6000/rs6000.c
@@ -2612,6 +2612,7 @@ darwin_rs6000_override_options (void)
off. */
rs6000_altivec_abi = 1;
TARGET_ALTIVEC_VRSAVE = 1;
+ rs6000_current_abi = ABI_DARWIN;
if (DEFAULT_ABI == ABI_DARWIN
&& TARGET_64BIT)
@@ -6824,6 +6825,7 @@ rs6000_legitimize_reload_address (rtx x, enum machine_mode mode,
#if TARGET_MACHO
&& DEFAULT_ABI == ABI_DARWIN
&& (flag_pic || MACHO_DYNAMIC_NO_PIC_P)
+ && machopic_symbol_defined_p (x)
#else
&& DEFAULT_ABI == ABI_V4
&& !flag_pic
@@ -16613,7 +16615,7 @@ rs6000_assemble_integer (rtx x, unsigned int size, int aligned_p)
if (TARGET_RELOCATABLE
&& in_section != toc_section
&& in_section != text_section
- && !unlikely_text_section_p (in_section)
+ && (in_section && (in_section->common.flags & SECTION_CODE)) == 0
&& !recurse
&& GET_CODE (x) != CONST_INT
&& GET_CODE (x) != CONST_DOUBLE
@@ -18498,7 +18500,7 @@ compute_save_world_info (rs6000_stack_t *info_ptr)
info_ptr->world_save_p
= (WORLD_SAVE_P (info_ptr)
&& DEFAULT_ABI == ABI_DARWIN
- && ! (cfun->calls_setjmp && flag_exceptions)
+ && !cfun->has_nonlocal_label
&& info_ptr->first_fp_reg_save == FIRST_SAVED_FP_REGNO
&& info_ptr->first_gp_reg_save == FIRST_SAVED_GP_REGNO
&& info_ptr->first_altivec_reg_save == FIRST_SAVED_ALTIVEC_REGNO
@@ -19838,7 +19840,8 @@ output_probe_stack_range (rtx reg1, rtx reg2)
output_asm_insn ("{cal %0,%1(%0)|addi %0,%0,%1}", xops);
/* Probe at TEST_ADDR and branch. */
- output_asm_insn ("{st|stw} 0,0(%0)", xops);
+ xops[1] = gen_rtx_REG (Pmode, 0);
+ output_asm_insn ("{st|stw} %1,0(%0)", xops);
fprintf (asm_out_file, "\tb ");
assemble_name_raw (asm_out_file, loop_lab);
fputc ('\n', asm_out_file);
@@ -20226,7 +20229,7 @@ rs6000_emit_stack_reset (rs6000_stack_t *info,
{
/* This blockage is needed so that sched doesn't decide to move
the sp change before the register restores. */
- if (frame_reg_rtx != sp_reg_rtx
+ if (DEFAULT_ABI == ABI_V4
|| (TARGET_SPE_ABI
&& info->spe_64bit_regs_used != 0
&& info->first_gp_reg_save != 32))
@@ -20643,56 +20646,52 @@ rs6000_emit_prologue (void)
{
int i;
rtx spe_save_area_ptr;
-
+ int save_ptr_to_sp;
+ int ool_adjust = 0;
+
/* Determine whether we can address all of the registers that need
- to be saved with an offset from the stack pointer that fits in
+ to be saved with an offset from frame_reg_rtx that fits in
the small const field for SPE memory instructions. */
- int spe_regs_addressable_via_sp
- = (SPE_CONST_OFFSET_OK(info->spe_gp_save_offset + sp_offset
- + (32 - info->first_gp_reg_save - 1) * reg_size)
+ int spe_regs_addressable
+ = (SPE_CONST_OFFSET_OK (info->spe_gp_save_offset + sp_offset
+ + reg_size * (32 - info->first_gp_reg_save - 1))
&& saving_GPRs_inline);
int spe_offset;
-
- if (spe_regs_addressable_via_sp)
+
+ if (spe_regs_addressable)
{
spe_save_area_ptr = frame_reg_rtx;
+ save_ptr_to_sp = info->total_size - sp_offset;
spe_offset = info->spe_gp_save_offset + sp_offset;
}
else
{
/* Make r11 point to the start of the SPE save area. We need
to be careful here if r11 is holding the static chain. If
- it is, then temporarily save it in r0. We would use r0 as
- our base register here, but using r0 as a base register in
- loads and stores means something different from what we
- would like. */
- int ool_adjust = (saving_GPRs_inline
- ? 0
- : (info->first_gp_reg_save
- - (FIRST_SAVRES_REGISTER+1))*8);
- HOST_WIDE_INT offset = (info->spe_gp_save_offset
- + sp_offset - ool_adjust);
+ it is, then temporarily save it in r0. */
+ int offset;
+
+ if (!saving_GPRs_inline)
+ ool_adjust = 8 * (info->first_gp_reg_save
+ - (FIRST_SAVRES_REGISTER + 1));
+ offset = info->spe_gp_save_offset + sp_offset - ool_adjust;
+ spe_save_area_ptr = gen_rtx_REG (Pmode, 11);
+ save_ptr_to_sp = info->total_size - sp_offset + offset;
+ spe_offset = 0;
if (using_static_chain_p)
{
rtx r0 = gen_rtx_REG (Pmode, 0);
gcc_assert (info->first_gp_reg_save > 11);
-
- emit_move_insn (r0, gen_rtx_REG (Pmode, 11));
+
+ emit_move_insn (r0, spe_save_area_ptr);
}
-
- spe_save_area_ptr = gen_rtx_REG (Pmode, 11);
- insn = emit_insn (gen_addsi3 (spe_save_area_ptr,
- frame_reg_rtx,
- GEN_INT (offset)));
- /* We need to make sure the move to r11 gets noted for
- properly outputting unwind information. */
- if (!saving_GPRs_inline)
- rs6000_frame_related (insn, frame_reg_rtx, offset,
- NULL_RTX, NULL_RTX);
- spe_offset = 0;
+ emit_insn (gen_addsi3 (spe_save_area_ptr,
+ frame_reg_rtx, GEN_INT (offset)));
+ if (REGNO (frame_reg_rtx) == 11)
+ sp_offset = -info->spe_gp_save_offset + ool_adjust;
}
-
+
if (saving_GPRs_inline)
{
for (i = 0; i < 32 - info->first_gp_reg_save; i++)
@@ -20704,36 +20703,34 @@ rs6000_emit_prologue (void)
/* We're doing all this to ensure that the offset fits into
the immediate offset of 'evstdd'. */
gcc_assert (SPE_CONST_OFFSET_OK (reg_size * i + spe_offset));
-
+
offset = GEN_INT (reg_size * i + spe_offset);
addr = gen_rtx_PLUS (Pmode, spe_save_area_ptr, offset);
mem = gen_rtx_MEM (V2SImode, addr);
-
+
insn = emit_move_insn (mem, reg);
-
- rs6000_frame_related (insn, spe_save_area_ptr,
- info->spe_gp_save_offset
- + sp_offset + reg_size * i,
- offset, const0_rtx);
+
+ rs6000_frame_related (insn,
+ spe_save_area_ptr, save_ptr_to_sp,
+ NULL_RTX, NULL_RTX);
}
}
else
{
rtx par;
- par = rs6000_make_savres_rtx (info, gen_rtx_REG (Pmode, 11),
- 0, reg_mode,
+ par = rs6000_make_savres_rtx (info, spe_save_area_ptr,
+ ool_adjust, reg_mode,
/*savep=*/true, /*gpr=*/true,
/*lr=*/false);
insn = emit_insn (par);
- rs6000_frame_related (insn, frame_ptr_rtx, info->total_size,
+ rs6000_frame_related (insn, spe_save_area_ptr, save_ptr_to_sp,
NULL_RTX, NULL_RTX);
}
-
-
+
/* Move the static chain pointer back. */
- if (using_static_chain_p && !spe_regs_addressable_via_sp)
- emit_move_insn (gen_rtx_REG (Pmode, 11), gen_rtx_REG (Pmode, 0));
+ if (using_static_chain_p && !spe_regs_addressable)
+ emit_move_insn (spe_save_area_ptr, gen_rtx_REG (Pmode, 0));
}
else if (!WORLD_SAVE_P (info) && !saving_GPRs_inline)
{
@@ -20742,10 +20739,12 @@ rs6000_emit_prologue (void)
/* Need to adjust r11 (r12) if we saved any FPRs. */
if (info->first_fp_reg_save != 64)
{
- rtx dest_reg = gen_rtx_REG (reg_mode, DEFAULT_ABI == ABI_AIX
- ? 12 : 11);
- rtx offset = GEN_INT (sp_offset
- + (-8 * (64-info->first_fp_reg_save)));
+ rtx dest_reg = gen_rtx_REG (Pmode, DEFAULT_ABI == ABI_AIX ? 12 : 11);
+ int save_off = 8 * (64 - info->first_fp_reg_save);
+ rtx offset = GEN_INT (sp_offset - save_off);
+
+ if (REGNO (dest_reg) == REGNO (frame_reg_rtx))
+ sp_offset = save_off;
emit_insn (gen_add3_insn (dest_reg, frame_reg_rtx, offset));
}
@@ -21621,40 +21620,39 @@ rs6000_emit_epilogue (int sibcall)
&& info->first_gp_reg_save != 32)
{
/* Determine whether we can address all of the registers that need
- to be saved with an offset from the stack pointer that fits in
- the small const field for SPE memory instructions. */
- int spe_regs_addressable_via_sp
- = (SPE_CONST_OFFSET_OK(info->spe_gp_save_offset + sp_offset
- + (32 - info->first_gp_reg_save - 1) * reg_size)
+ to be saved with an offset from frame_reg_rtx that fits in
+ the small const field for SPE memory instructions. */
+ int spe_regs_addressable
+ = (SPE_CONST_OFFSET_OK (info->spe_gp_save_offset + sp_offset
+ + reg_size * (32 - info->first_gp_reg_save - 1))
&& restoring_GPRs_inline);
int spe_offset;
+ int ool_adjust = 0;
- if (spe_regs_addressable_via_sp)
+ if (spe_regs_addressable)
spe_offset = info->spe_gp_save_offset + sp_offset;
else
- {
+ {
rtx old_frame_reg_rtx = frame_reg_rtx;
- /* Make r11 point to the start of the SPE save area. We worried about
- not clobbering it when we were saving registers in the prologue.
- There's no need to worry here because the static chain is passed
- anew to every function. */
- int ool_adjust = (restoring_GPRs_inline
- ? 0
- : (info->first_gp_reg_save
- - (FIRST_SAVRES_REGISTER+1))*8);
-
- if (frame_reg_rtx == sp_reg_rtx)
- frame_reg_rtx = gen_rtx_REG (Pmode, 11);
- emit_insn (gen_addsi3 (frame_reg_rtx, old_frame_reg_rtx,
+ /* Make r11 point to the start of the SPE save area. We worried about
+ not clobbering it when we were saving registers in the prologue.
+ There's no need to worry here because the static chain is passed
+ anew to every function. */
+
+ if (!restoring_GPRs_inline)
+ ool_adjust = 8 * (info->first_gp_reg_save
+ - (FIRST_SAVRES_REGISTER + 1));
+ frame_reg_rtx = gen_rtx_REG (Pmode, 11);
+ emit_insn (gen_addsi3 (frame_reg_rtx, old_frame_reg_rtx,
GEN_INT (info->spe_gp_save_offset
+ sp_offset
- ool_adjust)));
/* Keep the invariant that frame_reg_rtx + sp_offset points
at the top of the stack frame. */
- sp_offset = -info->spe_gp_save_offset;
+ sp_offset = -info->spe_gp_save_offset + ool_adjust;
- spe_offset = 0;
- }
+ spe_offset = 0;
+ }
if (restoring_GPRs_inline)
{
@@ -21694,8 +21692,8 @@ rs6000_emit_epilogue (int sibcall)
{
rtx par;
- par = rs6000_make_savres_rtx (info, gen_rtx_REG (Pmode, 11),
- 0, reg_mode,
+ par = rs6000_make_savres_rtx (info, frame_reg_rtx,
+ ool_adjust, reg_mode,
/*savep=*/false, /*gpr=*/true,
/*lr=*/true);
emit_jump_insn (par);
@@ -21716,12 +21714,12 @@ rs6000_emit_epilogue (int sibcall)
sp_offset, can_use_exit);
else
{
- emit_insn (gen_add3_insn (gen_rtx_REG (Pmode, DEFAULT_ABI == ABI_AIX
- ? 12 : 11),
- frame_reg_rtx,
+ rtx src_reg = gen_rtx_REG (Pmode, DEFAULT_ABI == ABI_AIX ? 12 : 11);
+
+ emit_insn (gen_add3_insn (src_reg, frame_reg_rtx,
GEN_INT (sp_offset - info->fp_size)));
- if (REGNO (frame_reg_rtx) == 11)
- sp_offset += info->fp_size;
+ if (REGNO (frame_reg_rtx) == REGNO (src_reg))
+ sp_offset = info->fp_size;
}
par = rs6000_make_savres_rtx (info, frame_reg_rtx,
@@ -27762,7 +27760,7 @@ rs6000_inner_target_options (tree args, bool attr_p)
if (strcmp (r, rs6000_opt_vars[i].name) == 0)
{
size_t j = rs6000_opt_vars[i].global_offset;
- ((int *) &global_options)[j] = !invert;
+ *((int *) ((char *)&global_options + j)) = !invert;
error_p = false;
break;
}
diff --git a/gcc-4.6/gcc/config/rs6000/rs6000.md b/gcc-4.6/gcc/config/rs6000/rs6000.md
index d6826fa48..b750b2bf0 100644
--- a/gcc-4.6/gcc/config/rs6000/rs6000.md
+++ b/gcc-4.6/gcc/config/rs6000/rs6000.md
@@ -12165,43 +12165,67 @@
(define_expand "call_indirect_aix32"
[(set (match_dup 2)
(mem:SI (match_operand:SI 0 "gpc_reg_operand" "")))
- (set (mem:SI (plus:SI (reg:SI 1) (const_int 20)))
+ (set (match_dup 3)
(reg:SI 2))
(set (reg:SI 11)
(mem:SI (plus:SI (match_dup 0)
(const_int 8))))
(parallel [(call (mem:SI (match_dup 2))
(match_operand 1 "" ""))
- (use (mem:SI (plus:SI (match_dup 0) (const_int 4))))
+ (use (match_dup 4))
+ (set (reg:SI 2) (match_dup 3))
(use (reg:SI 11))
- (use (mem:SI (plus:SI (reg:SI 1) (const_int 20))))
(clobber (reg:SI LR_REGNO))])]
"TARGET_32BIT"
"
-{ operands[2] = gen_reg_rtx (SImode); }")
+{
+ operands[2] = gen_reg_rtx (SImode);
+ operands[3] = gen_rtx_MEM (SImode,
+ gen_rtx_PLUS (SImode, stack_pointer_rtx,
+ GEN_INT (20)));
+
+ operands[4] = gen_rtx_MEM (SImode,
+ gen_rtx_PLUS (SImode, operands[0],
+ GEN_INT (4)));
+
+ /* Make sure the compiler does not optimize away the store of the TOC. */
+ MEM_VOLATILE_P (operands[3]) = 1;
+}")
(define_expand "call_indirect_aix64"
[(set (match_dup 2)
(mem:DI (match_operand:DI 0 "gpc_reg_operand" "")))
- (set (mem:DI (plus:DI (reg:DI 1) (const_int 40)))
+ (set (match_dup 3)
(reg:DI 2))
(set (reg:DI 11)
(mem:DI (plus:DI (match_dup 0)
(const_int 16))))
(parallel [(call (mem:SI (match_dup 2))
(match_operand 1 "" ""))
- (use (mem:DI (plus:DI (match_dup 0) (const_int 8))))
+ (use (match_dup 4))
+ (set (reg:DI 2) (match_dup 3))
(use (reg:DI 11))
- (use (mem:DI (plus:DI (reg:DI 1) (const_int 40))))
- (clobber (reg:SI LR_REGNO))])]
+ (clobber (reg:DI LR_REGNO))])]
"TARGET_64BIT"
"
-{ operands[2] = gen_reg_rtx (DImode); }")
+{
+ operands[2] = gen_reg_rtx (DImode);
+ operands[3] = gen_rtx_MEM (DImode,
+ gen_rtx_PLUS (DImode, stack_pointer_rtx,
+ GEN_INT (40)));
+
+ operands[4] = gen_rtx_MEM (DImode,
+ gen_rtx_PLUS (DImode, operands[0],
+ GEN_INT (8)));
+
+ /* Make sure the compiler does not optimize away the store of the TOC. */
+ MEM_VOLATILE_P (operands[3]) = 1;
+}")
(define_expand "call_value_indirect_aix32"
[(set (match_dup 3)
(mem:SI (match_operand:SI 1 "gpc_reg_operand" "")))
- (set (mem:SI (plus:SI (reg:SI 1) (const_int 20)))
+ (set (match_dup 4)
(reg:SI 2))
(set (reg:SI 11)
(mem:SI (plus:SI (match_dup 1)
@@ -12209,18 +12233,30 @@
(parallel [(set (match_operand 0 "" "")
(call (mem:SI (match_dup 3))
(match_operand 2 "" "")))
- (use (mem:SI (plus:SI (match_dup 1) (const_int 4))))
+ (use (match_dup 5))
+ (set (reg:SI 2) (match_dup 4))
(use (reg:SI 11))
- (use (mem:SI (plus:SI (reg:SI 1) (const_int 20))))
(clobber (reg:SI LR_REGNO))])]
"TARGET_32BIT"
"
-{ operands[3] = gen_reg_rtx (SImode); }")
+{
+ operands[3] = gen_reg_rtx (SImode);
+ operands[4] = gen_rtx_MEM (DImode,
+ gen_rtx_PLUS (DImode, stack_pointer_rtx,
+ GEN_INT (20)));
+
+ operands[5] = gen_rtx_MEM (SImode,
+ gen_rtx_PLUS (SImode, operands[1],
+ GEN_INT (4)));
+
+ /* Make sure the compiler does not optimize away the store of the TOC. */
+ MEM_VOLATILE_P (operands[4]) = 1;
+}")
(define_expand "call_value_indirect_aix64"
[(set (match_dup 3)
(mem:DI (match_operand:DI 1 "gpc_reg_operand" "")))
- (set (mem:DI (plus:DI (reg:DI 1) (const_int 40)))
+ (set (match_dup 4)
(reg:DI 2))
(set (reg:DI 11)
(mem:DI (plus:DI (match_dup 1)
@@ -12228,13 +12264,25 @@
(parallel [(set (match_operand 0 "" "")
(call (mem:SI (match_dup 3))
(match_operand 2 "" "")))
- (use (mem:DI (plus:DI (match_dup 1) (const_int 8))))
+ (use (match_dup 5))
+ (set (reg:DI 2) (match_dup 4))
(use (reg:DI 11))
- (use (mem:DI (plus:DI (reg:DI 1) (const_int 40))))
- (clobber (reg:SI LR_REGNO))])]
+ (clobber (reg:DI LR_REGNO))])]
"TARGET_64BIT"
"
-{ operands[3] = gen_reg_rtx (DImode); }")
+{
+ operands[3] = gen_reg_rtx (DImode);
+ operands[4] = gen_rtx_MEM (DImode,
+ gen_rtx_PLUS (DImode, stack_pointer_rtx,
+ GEN_INT (40)));
+
+ operands[5] = gen_rtx_MEM (DImode,
+ gen_rtx_PLUS (DImode, operands[1],
+ GEN_INT (8)));
+
+ /* Make sure the compiler does not optimize away the store of the TOC. */
+ MEM_VOLATILE_P (operands[4]) = 1;
+}")
;; Now the definitions for the call and call_value insns
(define_expand "call"
@@ -12427,47 +12475,27 @@
;; Call to function which may be in another module. Restore the TOC
;; pointer (r2) after the call unless this is System V.
-;; Operand2 is nonzero if we are using the V.4 calling sequence and
+;; Operand1 is nonzero if we are using the V.4 calling sequence and
;; either the function was not prototyped, or it was prototyped as a
;; variable argument function. It is > 0 if FP registers were passed
;; and < 0 if they were not.
+;; Operand2 is the address of the 3 word function pointer that offset 4 points
+;; to the value to be loaded in the TOC register. Do not split the load from
+;; the call, as it may move the load of the TOC before any addresses using
+;; the TOC.
-(define_insn_and_split "*call_indirect_nonlocal_aix32_internal"
+(define_insn "*call_indirect_nonlocal_aix32"
[(call (mem:SI (match_operand:SI 0 "register_operand" "c,*l"))
(match_operand 1 "" "g,g"))
- (use (mem:SI (plus:SI (match_operand:SI 2 "register_operand" "b,b") (const_int 4))))
+ (use (match_operand:SI 2 "memory_operand" "m,m"))
+ (set (reg:SI 2) (match_operand:SI 3 "memory_operand" "m,m"))
(use (reg:SI 11))
- (use (mem:SI (plus:SI (reg:SI 1) (const_int 20))))
(clobber (reg:SI LR_REGNO))]
"TARGET_32BIT && DEFAULT_ABI == ABI_AIX"
- "#"
- "&& reload_completed"
- [(set (reg:SI 2)
- (mem:SI (plus:SI (match_dup 2) (const_int 4))))
- (parallel [(call (mem:SI (match_dup 0))
- (match_dup 1))
- (use (reg:SI 2))
- (use (reg:SI 11))
- (set (reg:SI 2)
- (mem:SI (plus:SI (reg:SI 1) (const_int 20))))
- (clobber (reg:SI LR_REGNO))])]
- ""
+ "{l|lwz} 2,%2\;b%T0l\;{l|lwz} 2,%3"
[(set_attr "type" "jmpreg")
(set_attr "length" "12")])
-(define_insn "*call_indirect_nonlocal_aix32"
- [(call (mem:SI (match_operand:SI 0 "register_operand" "c,*l"))
- (match_operand 1 "" "g,g"))
- (use (reg:SI 2))
- (use (reg:SI 11))
- (set (reg:SI 2)
- (mem:SI (plus:SI (reg:SI 1) (const_int 20))))
- (clobber (reg:SI LR_REGNO))]
- "TARGET_32BIT && DEFAULT_ABI == ABI_AIX && reload_completed"
- "b%T0l\;{l|lwz} 2,20(1)"
- [(set_attr "type" "jmpreg")
- (set_attr "length" "8")])
-
(define_insn "*call_nonlocal_aix32"
[(call (mem:SI (match_operand:SI 0 "symbol_ref_operand" "s"))
(match_operand 1 "" "g"))
@@ -12480,43 +12508,18 @@
[(set_attr "type" "branch")
(set_attr "length" "8")])
-(define_insn_and_split "*call_indirect_nonlocal_aix64_internal"
+(define_insn "*call_indirect_nonlocal_aix64"
[(call (mem:SI (match_operand:DI 0 "register_operand" "c,*l"))
(match_operand 1 "" "g,g"))
- (use (mem:DI (plus:DI (match_operand:DI 2 "register_operand" "b,b")
- (const_int 8))))
+ (use (match_operand:DI 2 "memory_operand" "m,m"))
+ (set (reg:DI 2) (match_operand:DI 3 "memory_operand" "m,m"))
(use (reg:DI 11))
- (use (mem:DI (plus:DI (reg:DI 1) (const_int 40))))
- (clobber (reg:SI LR_REGNO))]
+ (clobber (reg:DI LR_REGNO))]
"TARGET_64BIT && DEFAULT_ABI == ABI_AIX"
- "#"
- "&& reload_completed"
- [(set (reg:DI 2)
- (mem:DI (plus:DI (match_dup 2) (const_int 8))))
- (parallel [(call (mem:SI (match_dup 0))
- (match_dup 1))
- (use (reg:DI 2))
- (use (reg:DI 11))
- (set (reg:DI 2)
- (mem:DI (plus:DI (reg:DI 1) (const_int 40))))
- (clobber (reg:SI LR_REGNO))])]
- ""
+ "ld 2,%2\;b%T0l\;ld 2,%3"
[(set_attr "type" "jmpreg")
(set_attr "length" "12")])
-(define_insn "*call_indirect_nonlocal_aix64"
- [(call (mem:SI (match_operand:DI 0 "register_operand" "c,*l"))
- (match_operand 1 "" "g,g"))
- (use (reg:DI 2))
- (use (reg:DI 11))
- (set (reg:DI 2)
- (mem:DI (plus:DI (reg:DI 1) (const_int 40))))
- (clobber (reg:SI LR_REGNO))]
- "TARGET_64BIT && DEFAULT_ABI == ABI_AIX && reload_completed"
- "b%T0l\;ld 2,40(1)"
- [(set_attr "type" "jmpreg")
- (set_attr "length" "8")])
-
(define_insn "*call_nonlocal_aix64"
[(call (mem:SI (match_operand:DI 0 "symbol_ref_operand" "s"))
(match_operand 1 "" "g"))
@@ -12529,44 +12532,18 @@
[(set_attr "type" "branch")
(set_attr "length" "8")])
-(define_insn_and_split "*call_value_indirect_nonlocal_aix32_internal"
- [(set (match_operand 0 "" "")
- (call (mem:SI (match_operand:SI 1 "register_operand" "c,*l"))
- (match_operand 2 "" "g,g")))
- (use (mem:SI (plus:SI (match_operand:SI 3 "register_operand" "b,b")
- (const_int 4))))
- (use (reg:SI 11))
- (use (mem:SI (plus:SI (reg:SI 1) (const_int 20))))
- (clobber (reg:SI LR_REGNO))]
- "TARGET_32BIT && DEFAULT_ABI == ABI_AIX"
- "#"
- "&& reload_completed"
- [(set (reg:SI 2)
- (mem:SI (plus:SI (match_dup 3) (const_int 4))))
- (parallel [(set (match_dup 0) (call (mem:SI (match_dup 1))
- (match_dup 2)))
- (use (reg:SI 2))
- (use (reg:SI 11))
- (set (reg:SI 2)
- (mem:SI (plus:SI (reg:SI 1) (const_int 20))))
- (clobber (reg:SI LR_REGNO))])]
- ""
- [(set_attr "type" "jmpreg")
- (set_attr "length" "12")])
-
(define_insn "*call_value_indirect_nonlocal_aix32"
[(set (match_operand 0 "" "")
(call (mem:SI (match_operand:SI 1 "register_operand" "c,*l"))
- (match_operand 2 "" "g,g")))
- (use (reg:SI 2))
+ (match_operand 2 "" "g,g")))
+ (use (match_operand:SI 3 "memory_operand" "m,m"))
+ (set (reg:SI 2) (match_operand:SI 4 "memory_operand" "m,m"))
(use (reg:SI 11))
- (set (reg:SI 2)
- (mem:SI (plus:SI (reg:SI 1) (const_int 20))))
(clobber (reg:SI LR_REGNO))]
- "TARGET_32BIT && DEFAULT_ABI == ABI_AIX && reload_completed"
- "b%T1l\;{l|lwz} 2,20(1)"
+ "TARGET_32BIT && DEFAULT_ABI == ABI_AIX"
+ "{l|lwz} 2,%3\;b%T1l\;{l|lwz} 2,%4"
[(set_attr "type" "jmpreg")
- (set_attr "length" "8")])
+ (set_attr "length" "12")])
(define_insn "*call_value_nonlocal_aix32"
[(set (match_operand 0 "" "")
@@ -12581,45 +12558,19 @@
[(set_attr "type" "branch")
(set_attr "length" "8")])
-(define_insn_and_split "*call_value_indirect_nonlocal_aix64_internal"
+(define_insn "*call_value_indirect_nonlocal_aix64"
[(set (match_operand 0 "" "")
(call (mem:SI (match_operand:DI 1 "register_operand" "c,*l"))
(match_operand 2 "" "g,g")))
- (use (mem:DI (plus:DI (match_operand:DI 3 "register_operand" "b,b")
- (const_int 8))))
- (use (reg:DI 11))
- (use (mem:DI (plus:DI (reg:DI 1) (const_int 40))))
- (clobber (reg:SI LR_REGNO))]
+ (use (match_operand:DI 3 "memory_operand" "m,m"))
+ (set (reg:DI 2) (match_operand:DI 4 "memory_operand" "m,m"))
+ (use (reg:DI 11))
+ (clobber (reg:DI LR_REGNO))]
"TARGET_64BIT && DEFAULT_ABI == ABI_AIX"
- "#"
- "&& reload_completed"
- [(set (reg:DI 2)
- (mem:DI (plus:DI (match_dup 3) (const_int 8))))
- (parallel [(set (match_dup 0) (call (mem:SI (match_dup 1))
- (match_dup 2)))
- (use (reg:DI 2))
- (use (reg:DI 11))
- (set (reg:DI 2)
- (mem:DI (plus:DI (reg:DI 1) (const_int 40))))
- (clobber (reg:SI LR_REGNO))])]
- ""
+ "ld 2,%3\;b%T1l\;ld 2,%4"
[(set_attr "type" "jmpreg")
(set_attr "length" "12")])
-(define_insn "*call_value_indirect_nonlocal_aix64"
- [(set (match_operand 0 "" "")
- (call (mem:SI (match_operand:DI 1 "register_operand" "c,*l"))
- (match_operand 2 "" "g,g")))
- (use (reg:DI 2))
- (use (reg:DI 11))
- (set (reg:DI 2)
- (mem:DI (plus:DI (reg:DI 1) (const_int 40))))
- (clobber (reg:SI LR_REGNO))]
- "TARGET_64BIT && DEFAULT_ABI == ABI_AIX && reload_completed"
- "b%T1l\;ld 2,40(1)"
- [(set_attr "type" "jmpreg")
- (set_attr "length" "8")])
-
(define_insn "*call_value_nonlocal_aix64"
[(set (match_operand 0 "" "")
(call (mem:SI (match_operand:DI 1 "symbol_ref_operand" "s"))
@@ -13103,7 +13054,11 @@
[(set (match_operand 0 "memory_operand" "=m")
(unspec [(const_int 0)] UNSPEC_PROBE_STACK))]
""
- "{st%U0%X0|stw%U0%X0} 0,%0"
+ "*
+{
+ operands[1] = gen_rtx_REG (Pmode, 0);
+ return \"{st%U0%X0|stw%U0%X0} %1,%0\";
+}"
[(set_attr "type" "store")
(set_attr "length" "4")])
diff --git a/gcc-4.6/gcc/config/rx/rx.md b/gcc-4.6/gcc/config/rx/rx.md
index 742c0f94f..48705b74b 100644
--- a/gcc-4.6/gcc/config/rx/rx.md
+++ b/gcc-4.6/gcc/config/rx/rx.md
@@ -708,24 +708,24 @@
(clobber (reg:CC CC_REG))])]
""
{
- /* ??? Support other conditions via cstore into a temporary? */
- if (GET_CODE (operands[1]) != EQ && GET_CODE (operands[1]) != NE)
- FAIL;
- /* One operand must be a constant. */
- if (!CONSTANT_P (operands[2]) && !CONSTANT_P (operands[3]))
+ /* One operand must be a constant or a register, the other must be a register. */
+ if ( ! CONSTANT_P (operands[2])
+ && ! CONSTANT_P (operands[3])
+ && ! (REG_P (operands[2]) && REG_P (operands[3])))
FAIL;
})
(define_insn_and_split "*movsicc"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
+ [(set (match_operand:SI 0 "register_operand" "=r,r,r")
(if_then_else:SI
- (match_operator 5 "rx_z_comparison_operator"
- [(match_operand:SI 3 "register_operand" "r,r")
- (match_operand:SI 4 "rx_source_operand" "riQ,riQ")])
- (match_operand:SI 1 "nonmemory_operand" "i,ri")
- (match_operand:SI 2 "nonmemory_operand" "ri,i")))
+ (match_operator 5 "comparison_operator"
+ [(match_operand:SI 3 "register_operand" "r,r,r")
+ (match_operand:SI 4 "rx_source_operand" "riQ,riQ,riQ")])
+ (match_operand:SI 1 "nonmemory_operand" "i,ri,r")
+ (match_operand:SI 2 "nonmemory_operand" "ri,i,r")))
(clobber (reg:CC CC_REG))]
- "CONSTANT_P (operands[1]) || CONSTANT_P (operands[2])"
+ "(CONSTANT_P (operands[1]) || CONSTANT_P (operands[2]))
+ || (REG_P (operands[1]) && REG_P (operands[2]))"
"#"
"&& reload_completed"
[(const_int 0)]
@@ -742,8 +742,11 @@
op1 = operands[1];
op2 = operands[2];
- /* If OP2 is the constant, reverse the sense of the move. */
- if (!CONSTANT_P (operands[1]))
+ /* If OP2 is the constant, reverse the sense of the move.
+ Likewise if both operands are registers but OP1 == OP0. */
+ if ((! CONSTANT_P (operands[1]) && CONSTANT_P (operands[2]))
+ || (REG_P (operands[1]) && REG_P (operands[2])
+ && rtx_equal_p (op0, op1)))
{
x = op1, op1 = op2, op2 = x;
cmp_code = reverse_condition (cmp_code);
@@ -752,7 +755,7 @@
/* If OP2 does not match the output, copy it into place. We have allowed
these alternatives so that the destination can legitimately be one of
the comparison operands without increasing register pressure. */
- if (!rtx_equal_p (op0, op2))
+ if (! rtx_equal_p (op0, op2))
emit_move_insn (op0, op2);
x = gen_rtx_fmt_ee (cmp_code, VOIDmode, flags, const0_rtx);
@@ -768,16 +771,33 @@
[(reg CC_REG) (const_int 0)])
(match_operand:SI 1 "immediate_operand" "Sint08,Sint16,Sint24,i")
(match_dup 0)))]
- "reload_completed"
-{
- if (GET_CODE (operands[2]) == EQ)
- return "stz\t%1, %0";
- else
- return "stnz\t%1, %0";
-}
+ "reload_completed
+ && ((GET_CODE (operands[2]) == EQ) || (GET_CODE (operands[2]) == NE))"
+ {
+ if (GET_CODE (operands[2]) == EQ)
+ return "stz\t%1, %0";
+ else
+ return "stnz\t%1, %0";
+ }
[(set_attr "length" "4,5,6,7")]
)
+(define_insn "*stcc_reg"
+ [(set (match_operand:SI 0 "register_operand" "+r,r,r,r,r,r")
+ (if_then_else:SI
+ (match_operator 2 "comparison_operator"
+ [(reg CC_REG) (const_int 0)])
+ (match_operand:SI 1 "nonmemory_operand"
+ "r,Uint04,Sint08,Sint16,Sint24,i")
+ (match_dup 0)))]
+ "reload_completed"
+ {
+ PUT_CODE (operands[2], reverse_condition (GET_CODE (operands[2])));
+ return "b%B2 1f\n\tmov %1, %0\n1:";
+ }
+ [(set_attr "length" "3,3,4,5,6,7")]
+)
+
;; Arithmetic Instructions
(define_insn "abssi2"
@@ -1598,7 +1618,7 @@
(memex_commutative:SI (match_dup 0)
(match_dup 2)))
(clobber (reg:CC CC_REG))])]
- "peep2_regno_dead_p (2, REGNO (operands[0]))"
+ "peep2_regno_dead_p (2, REGNO (operands[0])) && (optimize < 3 || optimize_size)"
[(parallel [(set:SI (match_dup 2)
(memex_commutative:SI (match_dup 2)
(extend_types:SI (match_dup 1))))
@@ -1612,7 +1632,7 @@
(memex_commutative:SI (match_dup 2)
(match_dup 0)))
(clobber (reg:CC CC_REG))])]
- "peep2_regno_dead_p (2, REGNO (operands[0]))"
+ "peep2_regno_dead_p (2, REGNO (operands[0])) && (optimize < 3 || optimize_size)"
[(parallel [(set:SI (match_dup 2)
(memex_commutative:SI (match_dup 2)
(extend_types:SI (match_dup 1))))
@@ -1626,7 +1646,7 @@
(memex_noncomm:SI (match_dup 2)
(match_dup 0)))
(clobber (reg:CC CC_REG))])]
- "peep2_regno_dead_p (2, REGNO (operands[0]))"
+ "peep2_regno_dead_p (2, REGNO (operands[0])) && (optimize < 3 || optimize_size)"
[(parallel [(set:SI (match_dup 2)
(memex_noncomm:SI (match_dup 2)
(extend_types:SI (match_dup 1))))
@@ -1639,7 +1659,7 @@
(set (match_operand:SI 2 "register_operand")
(memex_nocc:SI (match_dup 0)
(match_dup 2)))]
- "peep2_regno_dead_p (2, REGNO (operands[0]))"
+ "peep2_regno_dead_p (2, REGNO (operands[0])) && (optimize < 3 || optimize_size)"
[(set:SI (match_dup 2)
(memex_nocc:SI (match_dup 2)
(extend_types:SI (match_dup 1))))]
@@ -1651,7 +1671,7 @@
(set (match_operand:SI 2 "register_operand")
(memex_nocc:SI (match_dup 2)
(match_dup 0)))]
- "peep2_regno_dead_p (2, REGNO (operands[0]))"
+ "peep2_regno_dead_p (2, REGNO (operands[0])) && (optimize < 3 || optimize_size)"
[(set:SI (match_dup 2)
(memex_nocc:SI (match_dup 2)
(extend_types:SI (match_dup 1))))]
@@ -1662,7 +1682,7 @@
(memex_commutative:SI (match_operand:SI 1 "register_operand" "%0")
(extend_types:SI (match_operand:small_int_modes 2 "rx_restricted_mem_operand" "Q"))))
(clobber (reg:CC CC_REG))]
- ""
+ "(optimize < 3 || optimize_size)"
"<memex_commutative:op>\t%<extend_types:letter>2, %0"
[(set_attr "timings" "33")
(set_attr "length" "5")] ;; Worst case sceanario. FIXME: If we defined separate patterns
@@ -1673,7 +1693,7 @@
(memex_noncomm:SI (match_operand:SI 1 "register_operand" "0")
(extend_types:SI (match_operand:small_int_modes 2 "rx_restricted_mem_operand" "Q"))))
(clobber (reg:CC CC_REG))]
- ""
+ "(optimize < 3 || optimize_size)"
"<memex_noncomm:op>\t%<extend_types:letter>2, %0"
[(set_attr "timings" "33")
(set_attr "length" "5")] ;; Worst case sceanario. FIXME: If we defined separate patterns
@@ -1683,7 +1703,7 @@
[(set (match_operand:SI 0 "register_operand" "=r")
(memex_nocc:SI (match_operand:SI 1 "register_operand" "%0")
(extend_types:SI (match_operand:small_int_modes 2 "rx_restricted_mem_operand" "Q"))))]
- ""
+ "(optimize < 3 || optimize_size)"
"<memex_nocc:op>\t%<extend_types:letter>2, %0"
[(set_attr "timings" "33")
(set_attr "length" "5")] ;; Worst case sceanario. FIXME: If we defined separate patterns
@@ -1695,7 +1715,7 @@
(set (reg:CC CC_REG)
(compare:CC (match_operand:SI 2 "register_operand")
(match_dup 0)))]
- "peep2_regno_dead_p (2, REGNO (operands[0]))"
+ "peep2_regno_dead_p (2, REGNO (operands[0])) && (optimize < 3 || optimize_size)"
[(set (reg:CC CC_REG)
(compare:CC (match_dup 2)
(extend_types:SI (match_dup 1))))]
@@ -1734,7 +1754,7 @@
[(set (reg:CC CC_REG)
(compare:CC (match_operand:SI 0 "register_operand" "=r")
(extend_types:SI (match_operand:small_int_modes 1 "rx_restricted_mem_operand" "Q"))))]
- ""
+ "(optimize < 3 || optimize_size)"
"cmp\t%<extend_types:letter>1, %0"
[(set_attr "timings" "33")
(set_attr "length" "5")] ;; Worst case sceanario. FIXME: If we defined separate patterns
diff --git a/gcc-4.6/gcc/config/s390/s390-protos.h b/gcc-4.6/gcc/config/s390/s390-protos.h
index 1df176e23..399d75715 100644
--- a/gcc-4.6/gcc/config/s390/s390-protos.h
+++ b/gcc-4.6/gcc/config/s390/s390-protos.h
@@ -41,7 +41,7 @@ extern void s390_function_profiler (FILE *, int);
extern void s390_set_has_landing_pad_p (bool);
extern bool s390_hard_regno_mode_ok (unsigned int, enum machine_mode);
extern bool s390_hard_regno_rename_ok (unsigned int, unsigned int);
-extern bool s390_class_max_nregs (enum reg_class, enum machine_mode);
+extern int s390_class_max_nregs (enum reg_class, enum machine_mode);
#ifdef RTX_CODE
extern int s390_extra_constraint_str (rtx, int, const char *);
diff --git a/gcc-4.6/gcc/config/s390/s390.c b/gcc-4.6/gcc/config/s390/s390.c
index 626007e10..9b275b0ae 100644
--- a/gcc-4.6/gcc/config/s390/s390.c
+++ b/gcc-4.6/gcc/config/s390/s390.c
@@ -7648,7 +7648,7 @@ s390_hard_regno_rename_ok (unsigned int old_reg, unsigned int new_reg)
/* Maximum number of registers to represent a value of mode MODE
in a register of class RCLASS. */
-bool
+int
s390_class_max_nregs (enum reg_class rclass, enum machine_mode mode)
{
switch (rclass)
diff --git a/gcc-4.6/gcc/config/sparc/freebsd.h b/gcc-4.6/gcc/config/sparc/freebsd.h
index f7e53f296..76c27d39b 100644
--- a/gcc-4.6/gcc/config/sparc/freebsd.h
+++ b/gcc-4.6/gcc/config/sparc/freebsd.h
@@ -169,7 +169,7 @@ along with GCC; see the file COPYING3. If not see
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} " \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} " \
FBSD_ENDFILE_SPEC
/* We use GNU ld so undefine this so that attribute((init_priority)) works. */
diff --git a/gcc-4.6/gcc/config/sparc/linux.h b/gcc-4.6/gcc/config/sparc/linux.h
index b37cccebb..acdbcb928 100644
--- a/gcc-4.6/gcc/config/sparc/linux.h
+++ b/gcc-4.6/gcc/config/sparc/linux.h
@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3. If not see
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
"%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s\
- %{ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
+ %{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
/* This is for -profile to use -lc_p instead of -lc. */
#undef CC1_SPEC
diff --git a/gcc-4.6/gcc/config/sparc/linux64.h b/gcc-4.6/gcc/config/sparc/linux64.h
index a4c67dce3..38863588a 100644
--- a/gcc-4.6/gcc/config/sparc/linux64.h
+++ b/gcc-4.6/gcc/config/sparc/linux64.h
@@ -59,7 +59,7 @@ along with GCC; see the file COPYING3. If not see
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
"%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s\
- %{ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
+ %{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
#undef TARGET_VERSION
#define TARGET_VERSION fprintf (stderr, " (sparc64 GNU/Linux with ELF)");
diff --git a/gcc-4.6/gcc/config/sparc/sol2.h b/gcc-4.6/gcc/config/sparc/sol2.h
index 49d15257a..4c8edaf1f 100644
--- a/gcc-4.6/gcc/config/sparc/sol2.h
+++ b/gcc-4.6/gcc/config/sparc/sol2.h
@@ -119,7 +119,7 @@ along with GCC; see the file COPYING3. If not see
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
crtend.o%s crtn.o%s"
/* Select a format to encode pointers in exception handling data. CODE
diff --git a/gcc-4.6/gcc/config/sparc/sp-elf.h b/gcc-4.6/gcc/config/sparc/sp-elf.h
index 6c0797f74..d78eba3b5 100644
--- a/gcc-4.6/gcc/config/sparc/sp-elf.h
+++ b/gcc-4.6/gcc/config/sparc/sp-elf.h
@@ -38,7 +38,7 @@ along with GCC; see the file COPYING3. If not see
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
crtend.o%s crtn.o%s"
/* Don't set the target flags, this is done by the linker script */
diff --git a/gcc-4.6/gcc/config/sparc/sp64-elf.h b/gcc-4.6/gcc/config/sparc/sp64-elf.h
index c15e9ad8b..b21969386 100644
--- a/gcc-4.6/gcc/config/sparc/sp64-elf.h
+++ b/gcc-4.6/gcc/config/sparc/sp64-elf.h
@@ -58,7 +58,7 @@ along with GCC; see the file COPYING3. If not see
#undef ENDFILE_SPEC
#define ENDFILE_SPEC \
- "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
crtend.o%s crtn.o%s"
/* Use the default (for now). */
diff --git a/gcc-4.6/gcc/config/sparc/sparc.c b/gcc-4.6/gcc/config/sparc/sparc.c
index 753028f4d..c93c25bbd 100644
--- a/gcc-4.6/gcc/config/sparc/sparc.c
+++ b/gcc-4.6/gcc/config/sparc/sparc.c
@@ -415,6 +415,7 @@ static void sparc_output_mi_thunk (FILE *, tree, HOST_WIDE_INT,
HOST_WIDE_INT, tree);
static bool sparc_can_output_mi_thunk (const_tree, HOST_WIDE_INT,
HOST_WIDE_INT, const_tree);
+static void sparc_reorg (void);
static struct machine_function * sparc_init_machine_status (void);
static bool sparc_cannot_force_const_mem (rtx);
static rtx sparc_tls_get_addr (void);
@@ -568,6 +569,9 @@ static const struct default_options sparc_option_optimization_table[] =
#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
#define TARGET_ASM_CAN_OUTPUT_MI_THUNK sparc_can_output_mi_thunk
+#undef TARGET_MACHINE_DEPENDENT_REORG
+#define TARGET_MACHINE_DEPENDENT_REORG sparc_reorg
+
#undef TARGET_RTX_COSTS
#define TARGET_RTX_COSTS sparc_rtx_costs
#undef TARGET_ADDRESS_COST
@@ -4565,8 +4569,9 @@ sparc_expand_prologue (void)
else if (actual_fsize <= 8192)
{
insn = emit_insn (gen_stack_pointer_inc (GEN_INT (-4096)));
- /* %sp is still the CFA register. */
RTX_FRAME_RELATED_P (insn) = 1;
+
+ /* %sp is still the CFA register. */
insn
= emit_insn (gen_stack_pointer_inc (GEN_INT (4096-actual_fsize)));
}
@@ -4588,8 +4593,18 @@ sparc_expand_prologue (void)
else if (actual_fsize <= 8192)
{
insn = emit_insn (gen_save_register_window (GEN_INT (-4096)));
+
/* %sp is not the CFA register anymore. */
emit_insn (gen_stack_pointer_inc (GEN_INT (4096-actual_fsize)));
+
+ /* Make sure no %fp-based store is issued until after the frame is
+ established. The offset between the frame pointer and the stack
+ pointer is calculated relative to the value of the stack pointer
+ at the end of the function prologue, and moving instructions that
+ access the stack via the frame pointer between the instructions
+ that decrement the stack pointer could result in accessing the
+ register window save area, which is volatile. */
+ emit_insn (gen_frame_blockage ());
}
else
{
@@ -9423,6 +9438,104 @@ sparc_can_output_mi_thunk (const_tree thunk_fndecl ATTRIBUTE_UNUSED,
return (vcall_offset >= -32768 || ! fixed_regs[5]);
}
+/* We use the machine specific reorg pass to enable workarounds for errata. */
+
+static void
+sparc_reorg (void)
+{
+ rtx insn, next;
+
+ /* The only erratum we handle for now is that of the AT697F processor. */
+ if (!sparc_fix_at697f)
+ return;
+
+ /* We need to have the (essentially) final form of the insn stream in order
+ to properly detect the various hazards. Run delay slot scheduling. */
+ if (optimize > 0 && flag_delayed_branch)
+ dbr_schedule (get_insns ());
+
+ /* Now look for specific patterns in the insn stream. */
+ for (insn = get_insns (); insn; insn = next)
+ {
+ bool insert_nop = false;
+ rtx set;
+
+ /* Look for a single-word load into an odd-numbered FP register. */
+ if (NONJUMP_INSN_P (insn)
+ && (set = single_set (insn)) != NULL_RTX
+ && GET_MODE_SIZE (GET_MODE (SET_SRC (set))) == 4
+ && MEM_P (SET_SRC (set))
+ && REG_P (SET_DEST (set))
+ && REGNO (SET_DEST (set)) > 31
+ && REGNO (SET_DEST (set)) % 2 != 0)
+ {
+ /* The wrong dependency is on the enclosing double register. */
+ unsigned int x = REGNO (SET_DEST (set)) - 1;
+ unsigned int src1, src2, dest;
+ int code;
+
+ /* If the insn has a delay slot, then it cannot be problematic. */
+ next = next_active_insn (insn);
+ if (NONJUMP_INSN_P (next) && GET_CODE (PATTERN (next)) == SEQUENCE)
+ code = -1;
+ else
+ {
+ extract_insn (next);
+ code = INSN_CODE (next);
+ }
+
+ switch (code)
+ {
+ case CODE_FOR_adddf3:
+ case CODE_FOR_subdf3:
+ case CODE_FOR_muldf3:
+ case CODE_FOR_divdf3:
+ dest = REGNO (recog_data.operand[0]);
+ src1 = REGNO (recog_data.operand[1]);
+ src2 = REGNO (recog_data.operand[2]);
+ if (src1 != src2)
+ {
+ /* Case [1-4]:
+ ld [address], %fx+1
+ FPOPd %f{x,y}, %f{y,x}, %f{x,y} */
+ if ((src1 == x || src2 == x)
+ && (dest == src1 || dest == src2))
+ insert_nop = true;
+ }
+ else
+ {
+ /* Case 5:
+ ld [address], %fx+1
+ FPOPd %fx, %fx, %fx */
+ if (src1 == x
+ && dest == src1
+ && (code == CODE_FOR_adddf3 || code == CODE_FOR_muldf3))
+ insert_nop = true;
+ }
+ break;
+
+ case CODE_FOR_sqrtdf2:
+ dest = REGNO (recog_data.operand[0]);
+ src1 = REGNO (recog_data.operand[1]);
+ /* Case 6:
+ ld [address], %fx+1
+ fsqrtd %fx, %fx */
+ if (src1 == x && dest == src1)
+ insert_nop = true;
+ break;
+
+ default:
+ break;
+ }
+ }
+ else
+ next = NEXT_INSN (insn);
+
+ if (insert_nop)
+ emit_insn_after (gen_nop (), insn);
+ }
+}
+
/* How to allocate a 'struct machine_function'. */
static struct machine_function *
diff --git a/gcc-4.6/gcc/config/sparc/sparc.h b/gcc-4.6/gcc/config/sparc/sparc.h
index 297844fc0..24e0a2e19 100644
--- a/gcc-4.6/gcc/config/sparc/sparc.h
+++ b/gcc-4.6/gcc/config/sparc/sparc.h
@@ -408,6 +408,7 @@ extern enum cmodel sparc_cmodel;
%{mcpu=sparclite:-Asparclite} \
%{mcpu=sparclite86x:-Asparclite} \
%{mcpu=f930:-Asparclite} %{mcpu=f934:-Asparclite} \
+%{mcpu=v8:-Av8} \
%{mv8plus:-Av8plus} \
%{mcpu=v9:-Av9} \
%{mcpu=ultrasparc:%{!mv8plus:-Av9a}} \
diff --git a/gcc-4.6/gcc/config/sparc/sparc.md b/gcc-4.6/gcc/config/sparc/sparc.md
index 1ff599d42..37e3585ec 100644
--- a/gcc-4.6/gcc/config/sparc/sparc.md
+++ b/gcc-4.6/gcc/config/sparc/sparc.md
@@ -28,6 +28,7 @@
[(UNSPEC_MOVE_PIC 0)
(UNSPEC_UPDATE_RETURN 1)
(UNSPEC_LOAD_PCREL_SYM 2)
+ (UNSPEC_FRAME_BLOCKAGE 3)
(UNSPEC_MOVE_PIC_LABEL 5)
(UNSPEC_SETH44 6)
(UNSPEC_SETM44 7)
@@ -1813,8 +1814,8 @@
})
(define_insn "*movsf_insn"
- [(set (match_operand:V32 0 "nonimmediate_operand" "=d,f,*r,*r,*r,f,*r,m,m")
- (match_operand:V32 1 "input_operand" "GY,f,*rRY,Q,S,m,m,f,*rGY"))]
+ [(set (match_operand:V32 0 "nonimmediate_operand" "=d,f, *r,*r,*r,f,*r,m, m")
+ (match_operand:V32 1 "input_operand" "GY,f,*rRY, Q, S,m, m,f,*rGY"))]
"TARGET_FPU
&& (register_operand (operands[0], <V32:MODE>mode)
|| register_or_zero_operand (operands[1], <V32:MODE>mode))"
@@ -1861,8 +1862,8 @@
;; when -mno-fpu.
(define_insn "*movsf_insn_no_fpu"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=r,r,r,r,m")
- (match_operand:SF 1 "input_operand" "rR,Q,S,m,rG"))]
+ [(set (match_operand:SF 0 "nonimmediate_operand" "=r,r,r,r, m")
+ (match_operand:SF 1 "input_operand" "rR,Q,S,m,rG"))]
"! TARGET_FPU
&& (register_operand (operands[0], SFmode)
|| register_or_zero_operand (operands[1], SFmode))"
@@ -1948,8 +1949,8 @@
;; Be careful, fmovd does not exist when !v9.
(define_insn "*movdf_insn_sp32"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=e,W,U,T,o,e,*r,o,e,o")
- (match_operand:DF 1 "input_operand" "W#F,e,T,U,G,e,*rFo,*r,o#F,e"))]
+ [(set (match_operand:DF 0 "nonimmediate_operand" "= e,W,U,T,o,e, *r, o, e,o")
+ (match_operand:DF 1 "input_operand" "W#F,e,T,U,G,e,*rFo,*r,o#F,e"))]
"TARGET_FPU
&& ! TARGET_V9
&& (register_operand (operands[0], DFmode)
@@ -1969,8 +1970,8 @@
(set_attr "length" "*,*,*,*,2,2,2,2,2,2")])
(define_insn "*movdf_insn_sp32_no_fpu"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=U,T,o,r,o")
- (match_operand:DF 1 "input_operand" "T,U,G,ro,r"))]
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=U,T,o, r,o")
+ (match_operand:DF 1 "input_operand" " T,U,G,ro,r"))]
"! TARGET_FPU
&& ! TARGET_V9
&& (register_operand (operands[0], DFmode)
@@ -1986,8 +1987,8 @@
;; We have available v9 double floats but not 64-bit integer registers.
(define_insn "*movdf_insn_sp32_v9"
- [(set (match_operand:V64 0 "nonimmediate_operand" "=b,e,e,T,W,U,T,f,*r,o")
- (match_operand:V64 1 "input_operand" "GY,e,W#F,GY,e,T,U,o#F,*roGYDF,*rGYf"))]
+ [(set (match_operand:V64 0 "nonimmediate_operand" "=b,e, e, T,W,U,T, f, *r, o")
+ (match_operand:V64 1 "input_operand" "GY,e,W#F,GY,e,T,U,o#F,*roFD,*rGYf"))]
"TARGET_FPU
&& TARGET_V9
&& ! TARGET_ARCH64
@@ -2009,8 +2010,8 @@
(set_attr "fptype" "double,double,*,*,*,*,*,*,*,*")])
(define_insn "*movdf_insn_sp32_v9_no_fpu"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=U,T,T,r,o")
- (match_operand:DF 1 "input_operand" "T,U,G,ro,rG"))]
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=U,T,T, r, o")
+ (match_operand:DF 1 "input_operand" " T,U,G,ro,rG"))]
"! TARGET_FPU
&& TARGET_V9
&& ! TARGET_ARCH64
@@ -2027,8 +2028,8 @@
;; We have available both v9 double floats and 64-bit integer registers.
(define_insn "*movdf_insn_sp64"
- [(set (match_operand:V64 0 "nonimmediate_operand" "=b,e,e,W,*r,*r,m,*r")
- (match_operand:V64 1 "input_operand" "GY,e,W#F,e,*rGY,m,*rGY,DF"))]
+ [(set (match_operand:V64 0 "nonimmediate_operand" "=b,e, e,W, *r,*r, m,*r")
+ (match_operand:V64 1 "input_operand" "GY,e,W#F,e,*rGY, m,*rGY,FD"))]
"TARGET_FPU
&& TARGET_ARCH64
&& (register_operand (operands[0], <V64:MODE>mode)
@@ -2047,8 +2048,8 @@
(set_attr "fptype" "double,double,*,*,*,*,*,*")])
(define_insn "*movdf_insn_sp64_no_fpu"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=r,r,m")
- (match_operand:DF 1 "input_operand" "r,m,rG"))]
+ [(set (match_operand:DF 0 "nonimmediate_operand" "=r,r, m")
+ (match_operand:DF 1 "input_operand" "r,m,rG"))]
"! TARGET_FPU
&& TARGET_ARCH64
&& (register_operand (operands[0], DFmode)
@@ -2288,8 +2289,8 @@
})
(define_insn "*movtf_insn_sp32"
- [(set (match_operand:TF 0 "nonimmediate_operand" "=b,e,o,U,r")
- (match_operand:TF 1 "input_operand" "G,oe,GeUr,o,roG"))]
+ [(set (match_operand:TF 0 "nonimmediate_operand" "=b, e, o,U, r")
+ (match_operand:TF 1 "input_operand" " G,oe,GeUr,o,roG"))]
"TARGET_FPU
&& ! TARGET_ARCH64
&& (register_operand (operands[0], TFmode)
@@ -2302,8 +2303,8 @@
;; when -mno-fpu.
(define_insn "*movtf_insn_sp32_no_fpu"
- [(set (match_operand:TF 0 "nonimmediate_operand" "=o,U,o,r,o")
- (match_operand:TF 1 "input_operand" "G,o,U,roG,r"))]
+ [(set (match_operand:TF 0 "nonimmediate_operand" "=o,U,o, r,o")
+ (match_operand:TF 1 "input_operand" " G,o,U,roG,r"))]
"! TARGET_FPU
&& ! TARGET_ARCH64
&& (register_operand (operands[0], TFmode)
@@ -2312,8 +2313,8 @@
[(set_attr "length" "4")])
(define_insn "*movtf_insn_sp64"
- [(set (match_operand:TF 0 "nonimmediate_operand" "=b,e,o,r")
- (match_operand:TF 1 "input_operand" "G,oe,Ger,roG"))]
+ [(set (match_operand:TF 0 "nonimmediate_operand" "=b, e, o, r")
+ (match_operand:TF 1 "input_operand" "G,oe,Ger,roG"))]
"TARGET_FPU
&& TARGET_ARCH64
&& ! TARGET_HARD_QUAD
@@ -2323,8 +2324,8 @@
[(set_attr "length" "2")])
(define_insn "*movtf_insn_sp64_hq"
- [(set (match_operand:TF 0 "nonimmediate_operand" "=b,e,e,m,o,r")
- (match_operand:TF 1 "input_operand" "G,e,m,e,rG,roG"))]
+ [(set (match_operand:TF 0 "nonimmediate_operand" "=b,e,e,m, o, r")
+ (match_operand:TF 1 "input_operand" "G,e,m,e,rG,roG"))]
"TARGET_FPU
&& TARGET_ARCH64
&& TARGET_HARD_QUAD
@@ -2341,8 +2342,8 @@
(set_attr "length" "2,*,*,*,2,2")])
(define_insn "*movtf_insn_sp64_no_fpu"
- [(set (match_operand:TF 0 "nonimmediate_operand" "=r,o")
- (match_operand:TF 1 "input_operand" "orG,rG"))]
+ [(set (match_operand:TF 0 "nonimmediate_operand" "= r, o")
+ (match_operand:TF 1 "input_operand" "orG,rG"))]
"! TARGET_FPU
&& TARGET_ARCH64
&& (register_operand (operands[0], TFmode)
@@ -2484,11 +2485,9 @@
(match_operand:I 3 "arith10_operand" "")))]
"TARGET_V9 && !(<I:MODE>mode == DImode && TARGET_ARCH32)"
{
- enum rtx_code code = GET_CODE (operands[1]);
rtx cc_reg;
- if (GET_MODE (XEXP (operands[1], 0)) == DImode
- && ! TARGET_ARCH64)
+ if (GET_MODE (XEXP (operands[1], 0)) == DImode && !TARGET_ARCH64)
FAIL;
if (GET_MODE (XEXP (operands[1], 0)) == TFmode && !TARGET_HARD_QUAD)
@@ -2499,12 +2498,14 @@
if (XEXP (operands[1], 1) == const0_rtx
&& GET_CODE (XEXP (operands[1], 0)) == REG
&& GET_MODE (XEXP (operands[1], 0)) == DImode
- && v9_regcmp_p (code))
+ && v9_regcmp_p (GET_CODE (operands[1])))
cc_reg = XEXP (operands[1], 0);
else
cc_reg = gen_compare_reg (operands[1]);
- operands[1] = gen_rtx_fmt_ee (code, GET_MODE (cc_reg), cc_reg, const0_rtx);
+ operands[1]
+ = gen_rtx_fmt_ee (GET_CODE (operands[1]), GET_MODE (cc_reg), cc_reg,
+ const0_rtx);
})
(define_expand "mov<F:mode>cc"
@@ -2514,11 +2515,9 @@
(match_operand:F 3 "register_operand" "")))]
"TARGET_V9 && TARGET_FPU"
{
- enum rtx_code code = GET_CODE (operands[1]);
rtx cc_reg;
- if (GET_MODE (XEXP (operands[1], 0)) == DImode
- && ! TARGET_ARCH64)
+ if (GET_MODE (XEXP (operands[1], 0)) == DImode && !TARGET_ARCH64)
FAIL;
if (GET_MODE (XEXP (operands[1], 0)) == TFmode && !TARGET_HARD_QUAD)
@@ -2529,12 +2528,14 @@
if (XEXP (operands[1], 1) == const0_rtx
&& GET_CODE (XEXP (operands[1], 0)) == REG
&& GET_MODE (XEXP (operands[1], 0)) == DImode
- && v9_regcmp_p (code))
+ && v9_regcmp_p (GET_CODE (operands[1])))
cc_reg = XEXP (operands[1], 0);
else
cc_reg = gen_compare_reg (operands[1]);
- operands[1] = gen_rtx_fmt_ee (code, GET_MODE (cc_reg), cc_reg, const0_rtx);
+ operands[1]
+ = gen_rtx_fmt_ee (GET_CODE (operands[1]), GET_MODE (cc_reg), cc_reg,
+ const0_rtx);
})
;; Conditional move define_insns
@@ -6338,6 +6339,25 @@
""
[(set_attr "length" "0")])
+;; Do not schedule instructions accessing memory before this point.
+
+(define_expand "frame_blockage"
+ [(set (match_dup 0)
+ (unspec:BLK [(match_dup 1)] UNSPEC_FRAME_BLOCKAGE))]
+ ""
+{
+ operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
+ MEM_VOLATILE_P (operands[0]) = 1;
+ operands[1] = stack_pointer_rtx;
+})
+
+(define_insn "*frame_blockage<P:mode>"
+ [(set (match_operand:BLK 0 "" "")
+ (unspec:BLK [(match_operand:P 1 "" "")] UNSPEC_FRAME_BLOCKAGE))]
+ ""
+ ""
+ [(set_attr "length" "0")])
+
(define_expand "probe_stack"
[(set (match_operand 0 "memory_operand" "") (const_int 0))]
""
diff --git a/gcc-4.6/gcc/config/sparc/sparc.opt b/gcc-4.6/gcc/config/sparc/sparc.opt
index 295acdd3d..a97cad176 100644
--- a/gcc-4.6/gcc/config/sparc/sparc.opt
+++ b/gcc-4.6/gcc/config/sparc/sparc.opt
@@ -98,6 +98,11 @@ mstd-struct-return
Target Report RejectNegative Var(sparc_std_struct_return)
Enable strict 32-bit psABI struct return checking.
+mfix-at697f
+Target Report RejectNegative Var(sparc_fix_at697f)
+Enable workaround for single erratum of AT697F processor
+(corresponding to erratum #13 of AT697E processor)
+
Mask(LITTLE_ENDIAN)
;; Generate code for little-endian
diff --git a/gcc-4.6/gcc/configure b/gcc-4.6/gcc/configure
index cb127d2f8..1438b948a 100755
--- a/gcc-4.6/gcc/configure
+++ b/gcc-4.6/gcc/configure
@@ -921,7 +921,6 @@ enable_canonical_prefixes
enable_plugin
enable_libquadmath_support
with_warn_frame_larger_than_extra_text
-with_linker_hash_style
'
ac_precious_vars='build_alias
host_alias
@@ -1683,8 +1682,6 @@ Optional Packages:
--with-slibdir=DIR shared libraries in DIR [LIBDIR]
--with-warn-frame-larger-than-extra-text=TEXT
specifies extra text for frame size warnings
- --with-linker-hash-style={sysv,gnu,both}
- specify the linker hash style
Some influential environment variables:
CC C compiler command
@@ -7507,17 +7504,7 @@ else
RANLIB="$ac_cv_prog_RANLIB"
fi
-case "${host}" in
-*-*-darwin*)
- # By default, the Darwin ranlib will not treat common symbols as
- # definitions when building the archive table of contents. Other
- # ranlibs do that; pass an option to the Darwin ranlib that makes
- # it behave similarly.
- ranlib_flags="-c"
- ;;
-*)
- ranlib_flags=""
-esac
+ranlib_flags=""
# Find a good install program. We prefer a C program (faster),
@@ -15820,7 +15807,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -16733,7 +16720,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -16751,7 +16738,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
@@ -17585,7 +17572,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 17588 "configure"
+#line 17575 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -17691,7 +17678,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 17694 "configure"
+#line 17681 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -18617,7 +18604,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
esac
;;
- freebsd[12]*)
+ freebsd2.*)
# C++ shared libraries reported to be fairly broken before
# switch to ELF
ld_shlibs_CXX=no
@@ -20392,7 +20379,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -20410,7 +20397,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
@@ -23159,6 +23146,14 @@ elif test x$gcc_cv_ld != x; then
gcc_cv_ld_static_option="-noso"
gcc_cv_ld_dynamic_option="-so_archive"
;;
+ # HP-UX ld uses -a flags to select between shared and archive.
+ *-*-hpux*)
+ if test x"$gnu_ld" = xno; then
+ gcc_cv_ld_static_dynamic=yes
+ gcc_cv_ld_static_option="-aarchive_shared"
+ gcc_cv_ld_dynamic_option="-adefault"
+ fi
+ ;;
# IRIX 6 ld supports -Bstatic/-Bdynamic.
mips-sgi-irix6*)
gcc_cv_ld_static_dynamic=yes
@@ -26553,36 +26548,6 @@ _ACEOF
-# Specify what hash style to use by default.
-
-# Check whether --with-linker-hash-style was given.
-if test "${with_linker_hash_style+set}" = set; then :
- withval=$with_linker_hash_style; case x"$withval" in
- xsysv)
- LINKER_HASH_STYLE=sysv
- ;;
- xgnu)
- LINKER_HASH_STYLE=gnu
- ;;
- xboth)
- LINKER_HASH_STYLE=both
- ;;
- *)
- as_fn_error "$withval is an invalid option to --with-linker-hash-style" "$LINENO" 5
- ;;
- esac
-else
- LINKER_HASH_STYLE=''
-fi
-
-if test x"${LINKER_HASH_STYLE}" != x; then
-
-cat >>confdefs.h <<_ACEOF
-#define LINKER_HASH_STYLE "$LINKER_HASH_STYLE"
-_ACEOF
-
-fi
-
# Configure the subdirectories
# AC_CONFIG_SUBDIRS($subdirs)
diff --git a/gcc-4.6/gcc/configure.ac b/gcc-4.6/gcc/configure.ac
index 71c9bbb2f..5062115ab 100644
--- a/gcc-4.6/gcc/configure.ac
+++ b/gcc-4.6/gcc/configure.ac
@@ -844,17 +844,7 @@ esac
gcc_AC_PROG_LN_S
ACX_PROG_LN($LN_S)
AC_PROG_RANLIB
-case "${host}" in
-*-*-darwin*)
- # By default, the Darwin ranlib will not treat common symbols as
- # definitions when building the archive table of contents. Other
- # ranlibs do that; pass an option to the Darwin ranlib that makes
- # it behave similarly.
- ranlib_flags="-c"
- ;;
-*)
- ranlib_flags=""
-esac
+ranlib_flags=""
AC_SUBST(ranlib_flags)
gcc_AC_PROG_INSTALL
@@ -3182,6 +3172,14 @@ elif test x$gcc_cv_ld != x; then
gcc_cv_ld_static_option="-noso"
gcc_cv_ld_dynamic_option="-so_archive"
;;
+ # HP-UX ld uses -a flags to select between shared and archive.
+ *-*-hpux*)
+ if test x"$gnu_ld" = xno; then
+ gcc_cv_ld_static_dynamic=yes
+ gcc_cv_ld_static_option="-aarchive_shared"
+ gcc_cv_ld_dynamic_option="-adefault"
+ fi
+ ;;
# IRIX 6 ld supports -Bstatic/-Bdynamic.
mips-sgi-irix6*)
gcc_cv_ld_static_dynamic=yes
@@ -4979,30 +4977,6 @@ AC_DEFINE_UNQUOTED(WARN_FRAME_LARGER_THAN_EXTRA_TEXT,
[Define to be extra text for frame size warnings.])
-# Specify what hash style to use by default.
-AC_ARG_WITH([linker-hash-style],
-[AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}],
- [specify the linker hash style])],
-[case x"$withval" in
- xsysv)
- LINKER_HASH_STYLE=sysv
- ;;
- xgnu)
- LINKER_HASH_STYLE=gnu
- ;;
- xboth)
- LINKER_HASH_STYLE=both
- ;;
- *)
- AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style])
- ;;
- esac],
-[LINKER_HASH_STYLE=''])
-if test x"${LINKER_HASH_STYLE}" != x; then
- AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE",
- [The linker hash style])
-fi
-
# Configure the subdirectories
# AC_CONFIG_SUBDIRS($subdirs)
diff --git a/gcc-4.6/gcc/convert.c b/gcc-4.6/gcc/convert.c
index 459d5337e..21d09c157 100644
--- a/gcc-4.6/gcc/convert.c
+++ b/gcc-4.6/gcc/convert.c
@@ -727,6 +727,15 @@ convert_to_integer (tree type, tree expr)
tree arg0 = get_unwidened (TREE_OPERAND (expr, 0), type);
tree arg1 = get_unwidened (TREE_OPERAND (expr, 1), type);
+ /* Do not try to narrow operands of pointer subtraction;
+ that will interfere with other folding. */
+ if (ex_form == MINUS_EXPR
+ && CONVERT_EXPR_P (arg0)
+ && CONVERT_EXPR_P (arg1)
+ && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (arg0, 0)))
+ && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (arg1, 0))))
+ break;
+
if (outprec >= BITS_PER_WORD
|| TRULY_NOOP_TRUNCATION (outprec, inprec)
|| inprec > TYPE_PRECISION (TREE_TYPE (arg0))
diff --git a/gcc-4.6/gcc/coverage.c b/gcc-4.6/gcc/coverage.c
index 253a5949a..e7e3ec40d 100644
--- a/gcc-4.6/gcc/coverage.c
+++ b/gcc-4.6/gcc/coverage.c
@@ -55,6 +55,7 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "intl.h"
#include "l-ipo.h"
+#include "dwarf2asm.h"
#include "gcov-io.h"
#include "gcov-io.c"
@@ -353,7 +354,8 @@ incompatible_cl_args (struct gcov_module_info* mod_info1,
warning (OPT_Wripa_opt_mismatch, "command line arguments mismatch for %s "
"and %s", mod_info1->source_filename, mod_info2->source_filename);
- if (warn_ripa_opt_mismatch && non_warning_mismatch && flag_ripa_verbose)
+ if (warn_ripa_opt_mismatch && non_warning_mismatch
+ && (flag_opt_info >= OPT_INFO_MED))
{
inform (UNKNOWN_LOCATION, "Options for %s", mod_info1->source_filename);
for (i = 0; i < num_non_warning_opts1; i++)
@@ -573,29 +575,47 @@ read_counts_file (const char *da_file_name, unsigned module_id)
int fd;
char *aux_da_filename = get_da_file_name (mod_info->da_filename);
gcc_assert (!mod_info->is_primary);
- if (pointer_set_insert (modset, (void *)(size_t)mod_info->ident))
- inform (input_location, "Not importing %s: already imported",
- mod_info->source_filename);
- else if ((module_infos[0]->lang & GCOV_MODULE_LANG_MASK) !=
- (mod_info->lang & GCOV_MODULE_LANG_MASK))
- inform (input_location, "Not importing %s: source language"
- " different from primary module's source language",
- mod_info->source_filename);
- else if (module_infos_read == max_group)
- inform (input_location, "Not importing %s: maximum group size"
- " reached", mod_info->source_filename);
- else if (incompatible_cl_args (module_infos[0], mod_info))
- inform (input_location, "Not importing %s: command-line"
- " arguments not compatible with primary module",
- mod_info->source_filename);
- else if ((fd = open (aux_da_filename, O_RDONLY)) < 0)
- inform (input_location, "Not importing %s: couldn't open %s",
- mod_info->source_filename, aux_da_filename);
- else if ((mod_info->lang & GCOV_MODULE_ASM_STMTS)
- && flag_ripa_disallow_asm_modules)
- inform (input_location, "Not importing %s: contains assembler"
- " statements", mod_info->source_filename);
- else
+ if (pointer_set_insert (modset, (void *)(size_t)mod_info->ident))
+ {
+ if (flag_opt_info >= OPT_INFO_MAX)
+ inform (input_location, "Not importing %s: already imported",
+ mod_info->source_filename);
+ }
+ else if ((module_infos[0]->lang & GCOV_MODULE_LANG_MASK) !=
+ (mod_info->lang & GCOV_MODULE_LANG_MASK))
+ {
+ if (flag_opt_info >= OPT_INFO_MAX)
+ inform (input_location, "Not importing %s: source language"
+ " different from primary module's source language",
+ mod_info->source_filename);
+ }
+ else if (module_infos_read == max_group)
+ {
+ if (flag_opt_info >= OPT_INFO_MAX)
+ inform (input_location, "Not importing %s: maximum group"
+ " size reached", mod_info->source_filename);
+ }
+ else if (incompatible_cl_args (module_infos[0], mod_info))
+ {
+ if (flag_opt_info >= OPT_INFO_MAX)
+ inform (input_location, "Not importing %s: command-line"
+ " arguments not compatible with primary module",
+ mod_info->source_filename);
+ }
+ else if ((fd = open (aux_da_filename, O_RDONLY)) < 0)
+ {
+ if (flag_opt_info >= OPT_INFO_MAX)
+ inform (input_location, "Not importing %s: couldn't open %s",
+ mod_info->source_filename, aux_da_filename);
+ }
+ else if ((mod_info->lang & GCOV_MODULE_ASM_STMTS)
+ && flag_ripa_disallow_asm_modules)
+ {
+ if (flag_opt_info >= OPT_INFO_MAX)
+ inform (input_location, "Not importing %s: contains "
+ "assembler statements", mod_info->source_filename);
+ }
+ else
{
close (fd);
module_infos_read++;
@@ -610,7 +630,7 @@ read_counts_file (const char *da_file_name, unsigned module_id)
}
}
- if (flag_ripa_verbose)
+ if (flag_opt_info >= OPT_INFO_MAX)
{
inform (input_location,
"MODULE Id=%d, Is_Primary=%s,"
@@ -674,7 +694,7 @@ get_coverage_counts (unsigned counter, unsigned expected,
{
static int warned = 0;
- if (!warned++)
+ if ((flag_opt_info >= OPT_INFO_MIN) && !warned++)
inform (input_location, (flag_guess_branch_prob
? "file %s not found, execution counts estimated"
: "file %s not found, execution counts assumed to be zero"),
@@ -686,7 +706,7 @@ get_coverage_counts (unsigned counter, unsigned expected,
if (!entry)
{
- if (!flag_dyn_ipa)
+ if ((flag_opt_info >= OPT_INFO_MIN) && !flag_dyn_ipa)
warning (0, "no coverage for function %qE found",
DECL_ASSEMBLER_NAME (current_function_decl));
return NULL;
@@ -703,7 +723,7 @@ get_coverage_counts (unsigned counter, unsigned expected,
warning_at (input_location, OPT_Wcoverage_mismatch,
"The control flow of function %qE does not match "
"its profile data (counter %qs)", id, ctr_names[counter]);
- if (warning_printed)
+ if ((flag_opt_info >= OPT_INFO_MIN) && warning_printed)
{
inform (input_location, "Use -Wno-error=coverage-mismatch to tolerate "
"the mismatch but performance may drop if the function is hot");
@@ -725,7 +745,8 @@ get_coverage_counts (unsigned counter, unsigned expected,
}
else if (entry->lineno_checksum != lineno_checksum)
{
- warning (0, "Source location for function %qE have changed,"
+ warning (OPT_Wcoverage_mismatch,
+ "Source location for function %qE have changed,"
" the profile data may be out of date",
DECL_ASSEMBLER_NAME (current_function_decl));
}
@@ -2146,4 +2167,69 @@ check_pmu_profile_options (const char *options)
return 0;
}
+/* Write command line options to the .note section. */
+
+void
+write_opts_to_asm (void)
+{
+ size_t i;
+ cpp_dir *quote_paths, *bracket_paths, *pdir;
+ struct str_list *pdef, *pinc;
+ int num_quote_paths = 0;
+ int num_bracket_paths = 0;
+
+ get_include_chains (&quote_paths, &bracket_paths);
+
+ /* Write quote_paths to ASM section. */
+ switch_to_section (get_section (".gnu.switches.text.quote_paths",
+ SECTION_DEBUG, NULL));
+ for (pdir = quote_paths; pdir; pdir = pdir->next)
+ {
+ if (pdir == bracket_paths)
+ break;
+ num_quote_paths++;
+ }
+ dw2_asm_output_nstring (in_fnames[0], (size_t)-1, NULL);
+ dw2_asm_output_data_uleb128 (num_quote_paths, NULL);
+ for (pdir = quote_paths; pdir; pdir = pdir->next)
+ {
+ if (pdir == bracket_paths)
+ break;
+ dw2_asm_output_nstring (pdir->name, (size_t)-1, NULL);
+ }
+
+ /* Write bracket_paths to ASM section. */
+ switch_to_section (get_section (".gnu.switches.text.bracket_paths",
+ SECTION_DEBUG, NULL));
+ for (pdir = bracket_paths; pdir; pdir = pdir->next)
+ num_bracket_paths++;
+ dw2_asm_output_nstring (in_fnames[0], (size_t)-1, NULL);
+ dw2_asm_output_data_uleb128 (num_bracket_paths, NULL);
+ for (pdir = bracket_paths; pdir; pdir = pdir->next)
+ dw2_asm_output_nstring (pdir->name, (size_t)-1, NULL);
+
+ /* Write cpp_defines to ASM section. */
+ switch_to_section (get_section (".gnu.switches.text.cpp_defines",
+ SECTION_DEBUG, NULL));
+ dw2_asm_output_nstring (in_fnames[0], (size_t)-1, NULL);
+ dw2_asm_output_data_uleb128 (num_cpp_defines, NULL);
+ for (pdef = cpp_defines_head; pdef; pdef = pdef->next)
+ dw2_asm_output_nstring (pdef->str, (size_t)-1, NULL);
+
+ /* Write cpp_includes to ASM section. */
+ switch_to_section (get_section (".gnu.switches.text.cpp_includes",
+ SECTION_DEBUG, NULL));
+ dw2_asm_output_nstring (in_fnames[0], (size_t)-1, NULL);
+ dw2_asm_output_data_uleb128 (num_cpp_includes, NULL);
+ for (pinc = cpp_includes_head; pinc; pinc = pinc->next)
+ dw2_asm_output_nstring (pinc->str, (size_t)-1, NULL);
+
+ /* Write cl_args to ASM section. */
+ switch_to_section (get_section (".gnu.switches.text.cl_args",
+ SECTION_DEBUG, NULL));
+ dw2_asm_output_nstring (in_fnames[0], (size_t)-1, NULL);
+ dw2_asm_output_data_uleb128 (num_lipo_cl_args, NULL);
+ for (i = 0; i < num_lipo_cl_args; i++)
+ dw2_asm_output_nstring (lipo_cl_args[i], (size_t)-1, NULL);
+}
#include "gt-coverage.h"
diff --git a/gcc-4.6/gcc/cp/ChangeLog b/gcc-4.6/gcc/cp/ChangeLog
index 229fc8ec4..1909c6961 100644
--- a/gcc-4.6/gcc/cp/ChangeLog
+++ b/gcc-4.6/gcc/cp/ChangeLog
@@ -1,8 +1,293 @@
+2011-12-20 Dodji Seketeli <dodji@redhat.com>
+
+ PR debug/49951
+ * decl.c (cxx_maybe_build_cleanup): Don't set location of the call
+ to the destructor.
+
+2011-12-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/51416
+ * init.c (build_value_init_noctor): Check for incomplete type.
+
+2011-12-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/51331
+ * class.c (convert_to_base_statically): Just call
+ build_simple_base_path.
+ (build_simple_base_path): Check field offset.
+
+2011-12-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/51248
+ * decl.c (copy_type_enum): Also update variants.
+ (finish_enum): Allow variants of complete enums.
+
+2011-12-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/51406
+ PR c++/51161
+ * typeck.c (build_static_cast_1): Fix cast of lvalue to
+ base rvalue reference.
+
+2011-11-22 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51265
+ * semantics.c (finish_decltype_type): Handle PTRMEM_CST.
+
+2011-11-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51150
+ * pt.c (tsubst_copy_and_build): Handle FIX_TRUNC_EXPR.
+
+2011-11-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/50870
+ * pt.c (tsubst_copy): Handle NAMESPACE_DECL.
+ (tsubst_copy_and_build) [COMPONENT_REF]: Handle a still-dependent
+ object.
+
+2011-11-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR c++/50608
+ * semantics.c (finish_offsetof): Adjust call to fold_offsetof.
+ * typeck.c (cp_build_addr_expr_1): Call fold_offsetof_1.
+
+2011-10-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/50901
+ * call.c (build_new_op_1): Handle ABS_EXPR together with the
+ other unary EXPR.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-10-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/50793
+ * tree.c (bot_manip): Propagate AGGR_INIT_ZERO_FIRST.
+
+2011-10-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/50787
+ * parser.c (cp_parser_initializer_clause): Don't call
+ maybe_constant_value here.
+
+2011-10-18 Jason Merrill <jason@redhat.com>
+
+ PR c++/50531
+ * pt.c (instantiate_decl): Recognize when a function defaulted
+ outside the class is already instantiated.
+
+2011-10-15 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ Backport from mainline
+ 2011-06-06 Nicola Pero <nicola.pero@meta-innovation.com>,
+
+ PR obj-c++/48275
+ * parser.c (cp_parser_objc_at_property_declaration): Allow setter
+ and getter names to use all the allowed method names.
+
+2011-10-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/50618
+ * init.c (expand_aggr_init_1): Don't zero-initialize virtual
+ bases of a base subobject.
+
+2011-10-11 Jason Merrill <jason@redhat.com>
+
+ PR c++/49216
+ * init.c (build_vec_init): Avoid crash on new int[1]{}.
+
+2011-10-11 Janis Johnson <janisjo@codesourcery.com>
+
+ PR c++/44473
+ * mangle.c (write_type): Handle CV qualifiers for decimal classes.
+
+2011-10-11 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/50611
+ * pt.c (tsubst_copy_and_build): If (complain & tf_error) is false
+ do not call unqualified_name_lookup_error.
+
+2011-10-09 Jakub Jelinek <jakub@redhat.com>
+ Diego Novillo <dnovillo@google.com>
+
+ * pt.c (reregister_specialization): Use htab_find instead of
+ htab_find_slot with INSERT.
+
+2011-09-26 Jason Merrill <jason@redhat.com>
+
+ PR c++/46105
+ * typeck.c (structural_comptypes): Ignore cv-quals on typename scope.
+
+ PR c++/50508
+ * semantics.c (cxx_eval_logical_expression): Use tree_int_cst_equal
+ rather than ==.
+
+2011-09-23 Jason Merrill <jason@redhat.com>
+
+ Core 253 - allow const objects with no initializer or
+ user-provided default constructor if the defaulted constructor
+ initializes all the subobjects.
+ PR c++/20039
+ PR c++/42844
+ * class.c (default_init_uninitialized_part): New.
+ * cp-tree.h: Declare it.
+ * decl.c (check_for_uninitialized_const_var): Use it.
+ * init.c (perform_member_init): Likewise.
+ (build_new_1): Likewise.
+ * method.c (walk_field_subobs): Likewise.
+
+2011-09-22 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/50491
+ * semantics.c (potential_constant_expression_1): Handle USING_DECL.
+
+2011-09-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/50442
+ Revert:
+ PR c++/49267
+ * call.c (compare_ics): rvaluedness_matches_p can differ
+ based on the source type, not just target.
+
+2011-09-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/50424
+ * tree.c (bot_manip): Set cp_function_chain->can_throw.
+
+2011-09-13 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/48320
+ * pt.c (template_parameter_pack_p): Support TEMPLATE_PARM_INDEX
+ nodes. Add a comment.
+ (arg_from_parm_pack_p): New static function, factorized out from
+ tsubst_pack_expansion and extended to support non-type parameter
+ packs represented with TEMPLATE_PARM_INDEX nodes.
+ (tsubst_pack_expansion): Use arg_from_parm_pack_p.
+
+2011-09-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/50255
+ * method.c (use_thunk): If emitting thunk into the same section
+ as function, use the same DECL_COMDAT_GROUP as well.
+
+2011-09-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/50309
+ * decl.c (grokdeclarator): Check u.function.exception_specification
+ for error_mark_node.
+
+2011-09-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/49267
+ * call.c (compare_ics): rvaluedness_matches_p can differ
+ based on the source type, not just target.
+
+2011-08-29 Jakub Jelinek <jakub@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ PR c++/50207
+ * class.c (finish_struct_1): Complain if the first field is
+ artificial.
+
+2011-08-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/50089
+ * semantics.c (finish_id_expression): Use
+ current_nonlambda_class_type for qualified-ids.
+
+ PR c++/50220
+ * semantics.c (add_capture): Call complete_type for copy.
+
+ PR c++/50234
+ * semantics.c (cxx_eval_component_reference): Handle
+ value-initialization for omitted initializers.
+
+2011-08-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/50224
+ * semantics.c (finish_id_expression): Mark captured variables used.
+
+2011-08-25 Jason Merrill <jason@redhat.com>
+
+ PR c++/50157
+ * call.c (convert_like_real): Exit early if bad and !tf_error.
+
+2011-08-23 Jason Merrill <jason@redhat.com>
+
+ PR c++/50024
+ * semantics.c (maybe_constant_value): Don't try to fold { }.
+ * pt.c (build_non_dependent_expr): Don't wrap { }.
+ * init.c (build_value_init): Allow scalar value-init in templates.
+
+2011-08-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/46862
+ * class.c (finish_struct_1): If TYPE_TRANSPARENT_AGGR is set on a type
+ which doesn't have any fields, clear it and diagnose.
+
+2011-08-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/50086
+ * pt.c (unify_pack_expansion): Correct overloaded unification
+ logic.
+
+ PR c++/50054
+ * typeck2.c (cxx_incomplete_type_diagnostic): Handle
+ init_list_type_node.
+
+2011-08-12 David Li <davidxl@google.com>
+
+ * class.c (update_vtable_entry_for_fn): Set
+ LOST_PRIMARY bit properly.
+
+2011-08-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/48993
+ * semantics.c (potential_constant_expression_1) [CALL_EXPR]: Sorry
+ on 'this' in a constructor.
+
+ PR c++/49921
+ * semantics.c (finish_decltype_type): Call invalid_nonstatic_memfn_p.
+
+ PR c++/49669
+ * init.c (perform_member_init): Handle invalid array initializer.
+
+ PR c++/49988
+ * semantics.c (cxx_eval_array_reference): Handle failure to
+ reduce the array operand to something we can work with.
+
+2011-08-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/43886
+ * parser.c (cp_parser_lambda_body): Clear local_variables_forbidden_p.
+
+ PR c++/49593
+ * pt.c (find_parameter_packs_r): Handle CONSTRUCTOR.
+
+ PR c++/49803
+ * init.c (sort_mem_initializers): Initialize uses_unions_p here.
+ (build_field_list): Not here.
+
+ PR c++/49924
+ * semantics.c (cxx_eval_vec_init_1): Fix logic.
+
+ PR c++/49260
+ * call.c (build_call_a): Set cp_function_chain->can_throw here.
+ (build_cxx_call): Not here.
+
2011-07-27 Jeffrey Yasskin <jyasskin@google.com>
* pt.c (build_template_decl): Copy the function_decl's
source location to the new template_decl.
+2011-07-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/49785
+ * pt.c (coerce_template_parms): Handle non-pack after pack.
+
2011-07-11 Jason Merrill <jason@redhat.com>
PR c++/49672
diff --git a/gcc-4.6/gcc/cp/ChangeLog.google-4_6 b/gcc-4.6/gcc/cp/ChangeLog.google-4_6
index 6f863d432..0137c1ba6 100644
--- a/gcc-4.6/gcc/cp/ChangeLog.google-4_6
+++ b/gcc-4.6/gcc/cp/ChangeLog.google-4_6
@@ -1,3 +1,85 @@
+2011-12-19 Sterling Augustine <saugustine@google.com>
+
+ Backport from google/main
+
+ * error.c (dump_decl): Reformat return value to "(anonymous namespace)".
+ (lang_decl_name): Return "(anonymous namespace)" when appropriate.
+
+2011-12-17 Easwaran Raman <eraman@google.com>
+ Backport r182443 from google/main.
+
+ 2011-12-17 Easwaran Raman <eraman@google.com>
+
+ * decl.c (cxx_init_decl_processing): Specify a function that
+ takes a void* and size_t for DELETE_EXPR.
+ * call.c (build_op_delete_call): If fsized-delete is used, use
+ the variant that takes size_t as the second parameter except
+ when deleteting a pointer of type void *.
+
+2011-12-06 Jeffrey Yasskin <jyasskin@google.com>
+
+ Backport from rev 180707
+
+ 2011-10-31 Jason Merrill <jason@redhat.com>
+
+ PR c++/50920
+ * class.c (check_field_decl): Change c++0x in diags to c++11.
+ * error.c (maybe_warn_cpp0x): Likewise.
+ * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
+ * pt.c (check_default_tmpl_args): Likewise.
+
+2011-11-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51150
+ * pt.c (tsubst_copy_and_build): Handle FIX_TRUNC_EXPR.
+
+2011-11-02 Jeffrey Yasskin <jyasskin@google.com>
+
+ Backport from rev 176665
+
+ 2011-07-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/49793
+ * typeck2.c (check_narrowing): Downgrade permerror to pedwarn.
+ Make conditional on -Wnarrowing.
+
+2011-10-28 Jeffrey Yasskin <jyasskin@google.com>
+
+ google ref 5514746; backport of r179121
+
+ Modified locally to only block static const literals in -pedantic
+ mode.
+
+ 2011-09-23 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/50258
+ * decl.c (check_static_variable_definition): Allow in-class
+ initialization of static data member of non-integral type in
+ permissive mode.
+
+2011-09-29 DeLesley Hutchins <delesley@google.com>
+
+ * cp/parser.c (cp_parser_late_parsing_attribute_arg_lists)
+ fixed case where the potential clone is a template.
+
+2011-09-22 Paolo Carlini <paolo.carlini@oracle.com>
+
+ Backport r179110 from gcc-4_6-branch.
+
+ * semantics.c (potential_constant_expression_1): Handle USING_DECL.
+
+2011-9-13 DeLesley Hutchins <delesley@google.com>
+
+ * class.c (cp_get_virtual_function_decl): bugfix where
+ type is uknown
+
+2011-08-18 Diego Novillo <dnovillo@google.com>
+
+ * name-lookup.c (lookup_arg_dependent): Use conditional
+ timevars.
+ * decl.c (xref_tag): Likewise.
+ * call.c (build_op_call): Likewise.
+
2011-08-12 Xinliang David Li <davidxl@google.com>
* class.c (update_vtable_entry_for_fn): Set lost_primary
diff --git a/gcc-4.6/gcc/cp/call.c b/gcc-4.6/gcc/cp/call.c
index 700e2d655..b292f26e1 100644
--- a/gcc-4.6/gcc/cp/call.c
+++ b/gcc-4.6/gcc/cp/call.c
@@ -355,6 +355,9 @@ build_call_a (tree function, int n, tree *argarray)
nothrow = ((decl && TREE_NOTHROW (decl))
|| TYPE_NOTHROW_P (TREE_TYPE (TREE_TYPE (function))));
+ if (!nothrow && at_function_scope_p () && cfun && cp_function_chain)
+ cp_function_chain->can_throw = 1;
+
if (decl && TREE_THIS_VOLATILE (decl) && cfun && cp_function_chain)
current_function_returns_abnormally = 1;
@@ -3965,9 +3968,10 @@ tree
build_op_call (tree obj, VEC(tree,gc) **args, tsubst_flags_t complain)
{
tree ret;
- timevar_start (TV_OVERLOAD);
+ bool subtime;
+ subtime = timevar_cond_start (TV_OVERLOAD);
ret = build_op_call_1 (obj, args, complain);
- timevar_stop (TV_OVERLOAD);
+ timevar_cond_stop (TV_OVERLOAD, subtime);
return ret;
}
@@ -5075,6 +5079,7 @@ build_new_op_1 (enum tree_code code, int flags, tree arg1, tree arg2, tree arg3,
case POSTDECREMENT_EXPR:
case REALPART_EXPR:
case IMAGPART_EXPR:
+ case ABS_EXPR:
return cp_build_unary_op (code, arg1, candidates != 0, complain);
case ARRAY_REF:
@@ -5259,8 +5264,22 @@ build_op_delete_call (enum tree_code code, tree addr, tree size,
usual deallocation function."
So (void*) beats (void*, size_t). */
- if (FUNCTION_ARG_CHAIN (fn) == void_list_node)
- break;
+ /* If type is not void, pick (void*, size_t) version (which comes
+ first). */
+ if (!flag_sized_delete || TREE_CODE (type) == VOID_TYPE )
+ {
+ /* If -fsized-delete is not passed or if a void * is deleted,
+ prefer delete (void *) version. */
+ if (FUNCTION_ARG_CHAIN (fn) == void_list_node)
+ break;
+ }
+ else
+ {
+ /* If -fsized-delete is passed and it is not a void *,
+ prefer delete (void *, size_t) version. */
+ if (FUNCTION_ARG_CHAIN (fn) != void_list_node)
+ break;
+ }
}
}
@@ -5427,6 +5446,9 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
diagnostic_t diag_kind;
int flags;
+ if (convs->bad_p && !(complain & tf_error))
+ return error_mark_node;
+
if (convs->bad_p
&& convs->kind != ck_user
&& convs->kind != ck_list
@@ -5462,15 +5484,12 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
else if (t->kind == ck_identity)
break;
}
- if (complain & tf_error)
- {
- permerror (input_location, "invalid conversion from %qT to %qT", TREE_TYPE (expr), totype);
- if (fn)
- permerror (DECL_SOURCE_LOCATION (fn),
- " initializing argument %P of %qD", argnum, fn);
- }
- else
- return error_mark_node;
+
+ permerror (input_location, "invalid conversion from %qT to %qT",
+ TREE_TYPE (expr), totype);
+ if (fn)
+ permerror (DECL_SOURCE_LOCATION (fn),
+ " initializing argument %P of %qD", argnum, fn);
return cp_convert (totype, expr);
}
@@ -6588,11 +6607,6 @@ build_cxx_call (tree fn, int nargs, tree *argarray)
/* If this call might throw an exception, note that fact. */
fndecl = get_callee_fndecl (fn);
- if ((!fndecl || !TREE_NOTHROW (fndecl))
- && at_function_scope_p ()
- && cfun
- && cp_function_chain)
- cp_function_chain->can_throw = 1;
/* Check that arguments to builtin functions match the expectations. */
if (fndecl
diff --git a/gcc-4.6/gcc/cp/class.c b/gcc-4.6/gcc/cp/class.c
index a3d010203..9f2a7c1ef 100644
--- a/gcc-4.6/gcc/cp/class.c
+++ b/gcc-4.6/gcc/cp/class.c
@@ -1,6 +1,6 @@
/* Functions related to building classes and their related objects.
Copyright (C) 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com)
@@ -464,7 +464,14 @@ build_simple_base_path (tree expr, tree binfo)
/* Is this the base field created by build_base_field? */
if (TREE_CODE (field) == FIELD_DECL
&& DECL_FIELD_IS_BASE (field)
- && TREE_TYPE (field) == type)
+ && TREE_TYPE (field) == type
+ /* If we're looking for a field in the most-derived class,
+ also check the field offset; we can have two base fields
+ of the same type if one is an indirect virtual base and one
+ is a direct non-virtual base. */
+ && (BINFO_INHERITANCE_CHAIN (d_binfo)
+ || tree_int_cst_equal (byte_position (field),
+ BINFO_OFFSET (binfo))))
{
/* We don't use build_class_member_access_expr here, as that
has unnecessary checks, and more importantly results in
@@ -541,6 +548,10 @@ convert_to_base_statically (tree expr, tree base)
{
tree pointer_type;
+ /* If this is a non-empty base, use a COMPONENT_REF. */
+ if (!is_empty_class (BINFO_TYPE (base)))
+ return build_simple_base_path (expr, base);
+
pointer_type = build_pointer_type (expr_type);
/* We use fold_build2 and fold_convert below to simplify the trees
@@ -2295,10 +2306,7 @@ update_vtable_entry_for_fn (tree t, tree binfo, tree fn, tree* virtuals,
else
BV_VCALL_INDEX (*virtuals) = NULL_TREE;
- if (lost)
- BV_LOST_PRIMARY (*virtuals) = true;
- else
- BV_LOST_PRIMARY (*virtuals) = false;
+ BV_LOST_PRIMARY (*virtuals) = lost;
}
/* Called from modify_all_vtables via dfs_walk. */
@@ -2917,7 +2925,7 @@ check_field_decl (tree field,
if (!warned && errorcount > oldcount)
{
inform (DECL_SOURCE_LOCATION (field), "unrestricted unions "
- "only available with -std=c++0x or -std=gnu++0x");
+ "only available with -std=c++11 or -std=gnu++11");
warned = true;
}
}
@@ -4349,6 +4357,40 @@ type_has_user_provided_default_constructor (tree t)
return false;
}
+/* If default-initialization leaves part of TYPE uninitialized, returns
+ a DECL for the field or TYPE itself (DR 253). */
+
+tree
+default_init_uninitialized_part (tree type)
+{
+ tree t, r, binfo;
+ int i;
+
+ type = strip_array_types (type);
+ if (!CLASS_TYPE_P (type))
+ return type;
+ if (type_has_user_provided_default_constructor (type))
+ return NULL_TREE;
+ for (binfo = TYPE_BINFO (type), i = 0;
+ BINFO_BASE_ITERATE (binfo, i, t); ++i)
+ {
+ r = default_init_uninitialized_part (BINFO_TYPE (t));
+ if (r)
+ return r;
+ }
+ for (t = TYPE_FIELDS (type); t; t = DECL_CHAIN (t))
+ if (TREE_CODE (t) == FIELD_DECL
+ && !DECL_ARTIFICIAL (t)
+ && !DECL_INITIAL (t))
+ {
+ r = default_init_uninitialized_part (TREE_TYPE (t));
+ if (r)
+ return DECL_P (r) ? r : t;
+ }
+
+ return NULL_TREE;
+}
+
/* Returns true iff for class T, a synthesized default constructor
would be constexpr. */
@@ -5706,6 +5748,27 @@ finish_struct_1 (tree t)
/* Finish debugging output for this type. */
rest_of_type_compilation (t, ! LOCAL_CLASS_P (t));
+
+ if (TYPE_TRANSPARENT_AGGR (t))
+ {
+ tree field = first_field (t);
+ if (field == NULL_TREE || error_operand_p (field))
+ {
+ error ("type transparent class %qT does not have any fields", t);
+ TYPE_TRANSPARENT_AGGR (t) = 0;
+ }
+ else if (DECL_ARTIFICIAL (field))
+ {
+ if (DECL_FIELD_IS_BASE (field))
+ error ("type transparent class %qT has base classes", t);
+ else
+ {
+ gcc_checking_assert (DECL_VIRTUAL_P (field));
+ error ("type transparent class %qT has virtual functions", t);
+ }
+ TYPE_TRANSPARENT_AGGR (t) = 0;
+ }
+ }
}
/* When T was built up, the member declarations were added in reverse
@@ -8384,9 +8447,15 @@ cp_get_virtual_function_decl (tree ref, tree known_type)
{
HOST_WIDE_INT index = tree_low_cst (OBJ_TYPE_REF_TOKEN (ref), 1);
HOST_WIDE_INT i = 0;
- tree v = BINFO_VIRTUALS (TYPE_BINFO (known_type));
+ tree binfo = TYPE_BINFO (known_type);
+ tree v;
tree fndecl;
-
+
+ if (!binfo)
+ return NULL_TREE;
+
+ v = BINFO_VIRTUALS (TYPE_BINFO (known_type));
+
while (v && i != index)
{
i += (TARGET_VTABLE_USES_DESCRIPTORS
diff --git a/gcc-4.6/gcc/cp/cp-tree.h b/gcc-4.6/gcc/cp/cp-tree.h
index 9745797a4..daf4714bf 100644
--- a/gcc-4.6/gcc/cp/cp-tree.h
+++ b/gcc-4.6/gcc/cp/cp-tree.h
@@ -4723,6 +4723,7 @@ extern tree in_class_defaulted_default_constructor (tree);
extern bool user_provided_p (tree);
extern bool type_has_user_provided_constructor (tree);
extern bool type_has_user_provided_default_constructor (tree);
+extern tree default_init_uninitialized_part (tree);
extern bool synthesized_default_constructor_is_constexpr (tree);
extern bool type_has_constexpr_default_constructor (tree);
extern bool type_has_virtual_destructor (tree);
diff --git a/gcc-4.6/gcc/cp/decl.c b/gcc-4.6/gcc/cp/decl.c
index aa20497b5..ff3baa54b 100644
--- a/gcc-4.6/gcc/cp/decl.c
+++ b/gcc-4.6/gcc/cp/decl.c
@@ -3519,6 +3519,7 @@ cxx_init_decl_processing (void)
{
tree void_ftype;
tree void_ftype_ptr;
+ tree void_ftype_ptr_sizetype;
build_common_tree_nodes (flag_signed_char);
@@ -3584,8 +3585,14 @@ cxx_init_decl_processing (void)
void_ftype = build_function_type_list (void_type_node, NULL_TREE);
void_ftype_ptr = build_function_type_list (void_type_node,
ptr_type_node, NULL_TREE);
+ void_ftype_ptr_sizetype = build_function_type_list (void_type_node,
+ ptr_type_node,
+ size_type_node,
+ NULL_TREE);
void_ftype_ptr
= build_exception_variant (void_ftype_ptr, empty_except_spec);
+ void_ftype_ptr_sizetype
+ = build_exception_variant (void_ftype_ptr_sizetype, empty_except_spec);
/* C++ extensions */
@@ -3635,7 +3642,7 @@ cxx_init_decl_processing (void)
current_lang_name = lang_name_cplusplus;
{
- tree newtype, deltype;
+ tree newtype, deltype, deltype2;
tree ptr_ftype_sizetype;
tree new_eh_spec;
@@ -3664,8 +3671,10 @@ cxx_init_decl_processing (void)
newtype = build_exception_variant (ptr_ftype_sizetype, new_eh_spec);
deltype = build_exception_variant (void_ftype_ptr, empty_except_spec);
+ deltype2 = build_exception_variant (void_ftype_ptr_sizetype, empty_except_spec);
push_cp_library_fn (NEW_EXPR, newtype);
push_cp_library_fn (VEC_NEW_EXPR, newtype);
+ push_cp_library_fn (DELETE_EXPR, deltype2);
global_delete_fndecl = push_cp_library_fn (DELETE_EXPR, deltype);
push_cp_library_fn (VEC_DELETE_EXPR, deltype);
@@ -4877,15 +4886,16 @@ check_for_uninitialized_const_var (tree decl)
if (TREE_CODE (decl) == VAR_DECL
&& TREE_CODE (type) != REFERENCE_TYPE
&& CP_TYPE_CONST_P (type)
- && (!TYPE_NEEDS_CONSTRUCTING (type)
- || !type_has_user_provided_default_constructor (type))
&& !DECL_INITIAL (decl))
{
+ tree field = default_init_uninitialized_part (type);
+ if (!field)
+ return;
+
permerror (DECL_SOURCE_LOCATION (decl),
"uninitialized const %qD", decl);
- if (CLASS_TYPE_P (type)
- && !type_has_user_provided_default_constructor (type))
+ if (CLASS_TYPE_P (type))
{
tree defaulted_ctor;
@@ -4896,6 +4906,8 @@ check_for_uninitialized_const_var (tree decl)
inform (DECL_SOURCE_LOCATION (defaulted_ctor),
"constructor is not user-provided because it is "
"explicitly defaulted in the class body");
+ inform (0, "and the implicitly-defined constructor does not "
+ "initialize %q+#D", field);
}
}
}
@@ -7505,8 +7517,18 @@ check_static_variable_definition (tree decl, tree type)
else if (cxx_dialect >= cxx0x && !INTEGRAL_OR_ENUMERATION_TYPE_P (type))
{
if (literal_type_p (type))
- error ("%<constexpr%> needed for in-class initialization of static "
- "data member %q#D of non-integral type", decl);
+ {
+ /* FIXME google: This local modification allows us to
+ transition from C++98 to C++11 without moving static
+ const floats out of the class during the transition. It
+ should not be forward-ported to a 4.7 branch, since by
+ then we should be able to just fix the code to use
+ constexpr. */
+ pedwarn (input_location, OPT_pedantic,
+ "%<constexpr%> needed for in-class initialization of "
+ "static data member %q#D of non-integral type", decl);
+ return 0;
+ }
else
error ("in-class initialization of static data member %q#D of "
"non-literal type", decl);
@@ -8796,6 +8818,10 @@ grokdeclarator (const cp_declarator *declarator,
/* Pick up the exception specifications. */
raises = declarator->u.function.exception_specification;
+ /* If the exception-specification is ill-formed, let's pretend
+ there wasn't one. */
+ if (raises == error_mark_node)
+ raises = NULL_TREE;
/* Say it's a definition only for the CALL_EXPR
closest to the identifier. */
@@ -11354,9 +11380,10 @@ xref_tag (enum tag_types tag_code, tree name,
tag_scope scope, bool template_header_p)
{
tree ret;
- timevar_start (TV_NAME_LOOKUP);
+ bool subtime;
+ subtime = timevar_cond_start (TV_NAME_LOOKUP);
ret = xref_tag_1 (tag_code, name, scope, template_header_p);
- timevar_stop (TV_NAME_LOOKUP);
+ timevar_cond_stop (TV_NAME_LOOKUP, subtime);
return ret;
}
@@ -11592,15 +11619,19 @@ xref_basetypes (tree ref, tree base_list)
static void
copy_type_enum (tree dst, tree src)
{
- TYPE_MIN_VALUE (dst) = TYPE_MIN_VALUE (src);
- TYPE_MAX_VALUE (dst) = TYPE_MAX_VALUE (src);
- TYPE_SIZE (dst) = TYPE_SIZE (src);
- TYPE_SIZE_UNIT (dst) = TYPE_SIZE_UNIT (src);
- SET_TYPE_MODE (dst, TYPE_MODE (src));
- TYPE_PRECISION (dst) = TYPE_PRECISION (src);
- TYPE_ALIGN (dst) = TYPE_ALIGN (src);
- TYPE_USER_ALIGN (dst) = TYPE_USER_ALIGN (src);
- TYPE_UNSIGNED (dst) = TYPE_UNSIGNED (src);
+ tree t;
+ for (t = dst; t; t = TYPE_NEXT_VARIANT (t))
+ {
+ TYPE_MIN_VALUE (t) = TYPE_MIN_VALUE (src);
+ TYPE_MAX_VALUE (t) = TYPE_MAX_VALUE (src);
+ TYPE_SIZE (t) = TYPE_SIZE (src);
+ TYPE_SIZE_UNIT (t) = TYPE_SIZE_UNIT (src);
+ SET_TYPE_MODE (dst, TYPE_MODE (src));
+ TYPE_PRECISION (t) = TYPE_PRECISION (src);
+ TYPE_ALIGN (t) = TYPE_ALIGN (src);
+ TYPE_USER_ALIGN (t) = TYPE_USER_ALIGN (src);
+ TYPE_UNSIGNED (t) = TYPE_UNSIGNED (src);
+ }
}
/* Begin compiling the definition of an enumeration type.
@@ -11955,9 +11986,12 @@ finish_enum (tree enumtype)
return;
}
- /* Here there should not be any variants of this type. */
+ /* If this is a forward declaration, there should not be any variants,
+ though we can get a variant in the middle of an enum-specifier with
+ wacky code like 'enum E { e = sizeof(const E*) };' */
gcc_assert (enumtype == TYPE_MAIN_VARIANT (enumtype)
- && !TYPE_NEXT_VARIANT (enumtype));
+ && (TYPE_VALUES (enumtype)
+ || !TYPE_NEXT_VARIANT (enumtype)));
}
/* Build and install a CONST_DECL for an enumeration constant of the
@@ -13408,8 +13442,17 @@ cxx_maybe_build_cleanup (tree decl)
cleanup = call;
}
+ /* build_delete sets the location of the destructor call to the
+ current location, even though the destructor is going to be
+ called later, at the end of the current scope. This can lead to
+ a "jumpy" behaviour for users of debuggers when they step around
+ the end of the block. So let's unset the location of the
+ destructor call instead. */
+ if (cleanup != NULL && EXPR_P (cleanup))
+ SET_EXPR_LOCATION (cleanup, UNKNOWN_LOCATION);
return cleanup;
}
+
/* When a stmt has been parsed, this function is called. */
diff --git a/gcc-4.6/gcc/cp/error.c b/gcc-4.6/gcc/cp/error.c
index f2a450a08..809c87c50 100644
--- a/gcc-4.6/gcc/cp/error.c
+++ b/gcc-4.6/gcc/cp/error.c
@@ -974,7 +974,7 @@ dump_decl (tree t, int flags)
dump_scope (CP_DECL_CONTEXT (t), flags);
flags &= ~TFF_UNQUALIFIED_NAME;
if (DECL_NAME (t) == NULL_TREE)
- pp_cxx_ws_string (cxx_pp, M_("{anonymous}"));
+ pp_cxx_ws_string (cxx_pp, M_("(anonymous namespace)"));
else
pp_cxx_tree_identifier (cxx_pp, DECL_NAME (t));
}
@@ -2494,6 +2494,8 @@ lang_decl_name (tree decl, int v, bool translate)
if (TREE_CODE (decl) == FUNCTION_DECL)
dump_function_name (decl, TFF_PLAIN_IDENTIFIER);
+ else if (DECL_NAME (decl) == NULL && TREE_CODE (decl) == NAMESPACE_DECL)
+ pp_string (cxx_pp, M_("(anonymous namespace)"));
else
dump_decl (DECL_NAME (decl), TFF_PLAIN_IDENTIFIER);
@@ -3144,40 +3146,40 @@ maybe_warn_cpp0x (cpp0x_warn_str str)
case CPP0X_INITIALIZER_LISTS:
pedwarn (input_location, 0,
"extended initializer lists "
- "only available with -std=c++0x or -std=gnu++0x");
+ "only available with -std=c++11 or -std=gnu++11");
break;
case CPP0X_EXPLICIT_CONVERSION:
pedwarn (input_location, 0,
"explicit conversion operators "
- "only available with -std=c++0x or -std=gnu++0x");
+ "only available with -std=c++11 or -std=gnu++11");
break;
case CPP0X_VARIADIC_TEMPLATES:
pedwarn (input_location, 0,
"variadic templates "
- "only available with -std=c++0x or -std=gnu++0x");
+ "only available with -std=c++11 or -std=gnu++11");
break;
case CPP0X_LAMBDA_EXPR:
pedwarn (input_location, 0,
"lambda expressions "
- "only available with -std=c++0x or -std=gnu++0x");
+ "only available with -std=c++11 or -std=gnu++11");
break;
case CPP0X_AUTO:
pedwarn (input_location, 0,
- "C++0x auto only available with -std=c++0x or -std=gnu++0x");
+ "C++0x auto only available with -std=c++11 or -std=gnu++11");
break;
case CPP0X_SCOPED_ENUMS:
pedwarn (input_location, 0,
- "scoped enums only available with -std=c++0x or -std=gnu++0x");
+ "scoped enums only available with -std=c++11 or -std=gnu++11");
break;
case CPP0X_DEFAULTED_DELETED:
pedwarn (input_location, 0,
"defaulted and deleted functions "
- "only available with -std=c++0x or -std=gnu++0x");
+ "only available with -std=c++11 or -std=gnu++11");
break;
case CPP0X_INLINE_NAMESPACES:
pedwarn (input_location, OPT_pedantic,
"inline namespaces "
- "only available with -std=c++0x or -std=gnu++0x");
+ "only available with -std=c++11 or -std=gnu++11");
break;
default:
gcc_unreachable();
diff --git a/gcc-4.6/gcc/cp/init.c b/gcc-4.6/gcc/cp/init.c
index 40caa599a..8b4c4f01a 100644
--- a/gcc-4.6/gcc/cp/init.c
+++ b/gcc-4.6/gcc/cp/init.c
@@ -141,7 +141,9 @@ initialize_vtbl_ptrs (tree addr)
zero-initialization does not simply mean filling the storage with
zero bytes. FIELD_SIZE, if non-NULL, is the bit size of the field,
subfields with bit positions at or above that bit size shouldn't
- be added. */
+ be added. Note that this only works when the result is assigned
+ to a base COMPONENT_REF; if we only have a pointer to the base subobject,
+ expand_assignment will end up clearing the full size of TYPE. */
static tree
build_zero_init_1 (tree type, tree nelts, bool static_storage_p,
@@ -332,7 +334,7 @@ build_value_init (tree type, tsubst_flags_t complain)
constructor. */
/* The AGGR_INIT_EXPR tweaking below breaks in templates. */
- gcc_assert (!processing_template_decl);
+ gcc_assert (!processing_template_decl || SCALAR_TYPE_P (type));
if (CLASS_TYPE_P (type))
{
@@ -368,6 +370,12 @@ build_value_init (tree type, tsubst_flags_t complain)
tree
build_value_init_noctor (tree type, tsubst_flags_t complain)
{
+ if (!COMPLETE_TYPE_P (type))
+ {
+ if (complain & tf_error)
+ error ("value-initialization of incomplete type %qT", type);
+ return error_mark_node;
+ }
if (CLASS_TYPE_P (type))
{
gcc_assert (!TYPE_NEEDS_CONSTRUCTING (type));
@@ -526,8 +534,10 @@ perform_member_init (tree member, tree init)
{
if (init)
{
- gcc_assert (TREE_CHAIN (init) == NULL_TREE);
- init = TREE_VALUE (init);
+ if (TREE_CHAIN (init))
+ init = error_mark_node;
+ else
+ init = TREE_VALUE (init);
if (BRACE_ENCLOSED_INITIALIZER_P (init))
init = digest_init (type, init);
}
@@ -549,7 +559,7 @@ perform_member_init (tree member, tree init)
flags |= LOOKUP_DEFAULTED;
if (CP_TYPE_CONST_P (type)
&& init == NULL_TREE
- && !type_has_user_provided_default_constructor (type))
+ && default_init_uninitialized_part (type))
/* TYPE_NEEDS_CONSTRUCTING can be set just because we have a
vtable; still give this diagnostic. */
permerror (DECL_SOURCE_LOCATION (current_function_decl),
@@ -633,8 +643,6 @@ build_field_list (tree t, tree list, int *uses_unions_p)
{
tree fields;
- *uses_unions_p = 0;
-
/* Note whether or not T is a union. */
if (TREE_CODE (t) == UNION_TYPE)
*uses_unions_p = 1;
@@ -688,7 +696,7 @@ sort_mem_initializers (tree t, tree mem_inits)
tree next_subobject;
VEC(tree,gc) *vbases;
int i;
- int uses_unions_p;
+ int uses_unions_p = 0;
/* Build up a list of initializations. The TREE_PURPOSE of entry
will be the subobject (a FIELD_DECL or BINFO) to initialize. The
@@ -1567,7 +1575,12 @@ expand_aggr_init_1 (tree binfo, tree true_exp, tree exp, tree init, int flags,
zero out the object first. */
else if (TYPE_NEEDS_CONSTRUCTING (type))
{
- init = build_zero_init (type, NULL_TREE, /*static_storage_p=*/false);
+ tree field_size = NULL_TREE;
+ if (exp != true_exp && CLASSTYPE_AS_BASE (type) != type)
+ /* Don't clobber already initialized virtual bases. */
+ field_size = TYPE_SIZE (CLASSTYPE_AS_BASE (type));
+ init = build_zero_init_1 (type, NULL_TREE, /*static_storage_p=*/false,
+ field_size);
init = build2 (INIT_EXPR, type, exp, init);
finish_expr_stmt (init);
/* And then call the constructor. */
@@ -2090,7 +2103,7 @@ build_new_1 (VEC(tree,gc) **placement, tree type, tree nelts,
}
if (CP_TYPE_CONST_P (elt_type) && *init == NULL
- && !type_has_user_provided_default_constructor (elt_type))
+ && default_init_uninitialized_part (elt_type))
{
if (complain & tf_error)
error ("uninitialized const in %<new%> of %q#T", elt_type);
@@ -3073,8 +3086,9 @@ build_vec_init (tree base, tree maxindex, tree init,
unsigned HOST_WIDE_INT idx;
tree field, elt;
/* Should we try to create a constant initializer? */
- bool try_const = (literal_type_p (inner_elt_type)
- || TYPE_HAS_CONSTEXPR_CTOR (inner_elt_type));
+ bool try_const = (TREE_CODE (atype) == ARRAY_TYPE
+ && (literal_type_p (inner_elt_type)
+ || TYPE_HAS_CONSTEXPR_CTOR (inner_elt_type)));
bool saw_non_const = false;
bool saw_const = false;
/* If we're initializing a static array, we want to do static
diff --git a/gcc-4.6/gcc/cp/mangle.c b/gcc-4.6/gcc/cp/mangle.c
index 9e9ced648..3f9996b64 100644
--- a/gcc-4.6/gcc/cp/mangle.c
+++ b/gcc-4.6/gcc/cp/mangle.c
@@ -1790,11 +1790,6 @@ write_type (tree type)
if (find_substitution (type))
return;
- /* According to the C++ ABI, some library classes are passed the
- same as the scalar type of their single member and use the same
- mangling. */
- if (TREE_CODE (type) == RECORD_TYPE && TYPE_TRANSPARENT_AGGR (type))
- type = TREE_TYPE (first_field (type));
if (write_CV_qualifiers_for_type (type) > 0)
/* If TYPE was CV-qualified, we just wrote the qualifiers; now
@@ -1814,6 +1809,12 @@ write_type (tree type)
/* See through any typedefs. */
type = TYPE_MAIN_VARIANT (type);
+ /* According to the C++ ABI, some library classes are passed the
+ same as the scalar type of their single member and use the same
+ mangling. */
+ if (TREE_CODE (type) == RECORD_TYPE && TYPE_TRANSPARENT_AGGR (type))
+ type = TREE_TYPE (first_field (type));
+
if (TYPE_PTRMEM_P (type))
write_pointer_to_member_type (type);
else
diff --git a/gcc-4.6/gcc/cp/method.c b/gcc-4.6/gcc/cp/method.c
index a6932229b..f7198d590 100644
--- a/gcc-4.6/gcc/cp/method.c
+++ b/gcc-4.6/gcc/cp/method.c
@@ -360,6 +360,8 @@ use_thunk (tree thunk_fndecl, bool emit_p)
/* Output the thunk into the same section as function. */
DECL_SECTION_NAME (thunk_fndecl) = DECL_SECTION_NAME (function);
+ if (DECL_COMDAT_GROUP (function))
+ make_decl_one_only (thunk_fndecl, DECL_COMDAT_GROUP (function));
}
}
@@ -1007,8 +1009,7 @@ walk_field_subobs (tree fields, tree fnname, special_function_kind sfk,
{
bool bad = true;
if (CP_TYPE_CONST_P (mem_type)
- && (!CLASS_TYPE_P (mem_type)
- || !type_has_user_provided_default_constructor (mem_type)))
+ && default_init_uninitialized_part (mem_type))
{
if (msg)
error ("uninitialized non-static const member %q#D",
diff --git a/gcc-4.6/gcc/cp/name-lookup.c b/gcc-4.6/gcc/cp/name-lookup.c
index 8753f1491..85caafe34 100644
--- a/gcc-4.6/gcc/cp/name-lookup.c
+++ b/gcc-4.6/gcc/cp/name-lookup.c
@@ -5441,9 +5441,10 @@ lookup_arg_dependent (tree name, tree fns, VEC(tree,gc) *args,
bool include_std)
{
tree ret;
- timevar_start (TV_NAME_LOOKUP);
+ bool subtime;
+ subtime = timevar_cond_start (TV_NAME_LOOKUP);
ret = lookup_arg_dependent_1 (name, fns, args, include_std);
- timevar_stop (TV_NAME_LOOKUP);
+ timevar_cond_stop (TV_NAME_LOOKUP, subtime);
return ret;
}
diff --git a/gcc-4.6/gcc/cp/parser.c b/gcc-4.6/gcc/cp/parser.c
index f5eb09966..12cfacf38 100644
--- a/gcc-4.6/gcc/cp/parser.c
+++ b/gcc-4.6/gcc/cp/parser.c
@@ -2759,8 +2759,8 @@ cp_parser_diagnose_invalid_type_name (cp_parser *parser,
The user should have said "typename A<T>::X". */
if (cxx_dialect < cxx0x && id == ridpointers[(int)RID_CONSTEXPR])
- inform (location, "C++0x %<constexpr%> only available with "
- "-std=c++0x or -std=gnu++0x");
+ inform (location, "C++11 %<constexpr%> only available with "
+ "-std=c++11 or -std=gnu++11");
else if (processing_template_decl && current_class_type
&& TYPE_BINFO (current_class_type))
{
@@ -8049,8 +8049,11 @@ static void
cp_parser_lambda_body (cp_parser* parser, tree lambda_expr)
{
bool nested = (current_function_decl != NULL_TREE);
+ bool local_variables_forbidden_p = parser->local_variables_forbidden_p;
if (nested)
push_function_context ();
+ /* Clear this in case we're in the middle of a default argument. */
+ parser->local_variables_forbidden_p = false;
/* Finish the function call operator
- class_specifier
@@ -8137,6 +8140,7 @@ cp_parser_lambda_body (cp_parser* parser, tree lambda_expr)
expand_or_defer_fn (finish_function (/*inline*/2));
}
+ parser->local_variables_forbidden_p = local_variables_forbidden_p;
if (nested)
pop_function_context();
}
@@ -16708,16 +16712,6 @@ cp_parser_initializer_clause (cp_parser* parser, bool* non_constant_p)
= cp_parser_constant_expression (parser,
/*allow_non_constant_p=*/true,
non_constant_p);
- if (!*non_constant_p)
- {
- /* We only want to fold if this is really a constant
- expression. FIXME Actually, we don't want to fold here, but in
- cp_finish_decl. */
- tree folded = fold_non_dependent_expr (initializer);
- folded = maybe_constant_value (folded);
- if (TREE_CONSTANT (folded))
- initializer = folded;
- }
}
else
initializer = cp_parser_braced_list (parser, non_constant_p);
@@ -19275,6 +19269,7 @@ cp_parser_late_parsing_attribute_arg_lists (cp_parser* parser)
cp_token_cache *tokens = (cp_token_cache *) TREE_VALUE (artificial_node);
tree ctype;
VEC(tree,gc) *vec;
+ tree clone;
gcc_assert (tokens);
gcc_assert (decl && decl != error_mark_node);
@@ -19318,16 +19313,9 @@ cp_parser_late_parsing_attribute_arg_lists (cp_parser* parser)
/* If decl has clones (when it is a ctor or a dtor), we need to
modify the clones' attributes as well. */
- if (TREE_CODE (decl) == FUNCTION_DECL
- && (DECL_CONSTRUCTOR_P (decl) || DECL_DESTRUCTOR_P (decl)))
- {
- tree clone;
- for (clone = TREE_CHAIN (decl); clone; clone = TREE_CHAIN (clone))
- {
- if (DECL_CLONED_FUNCTION (clone) == decl)
- DECL_ATTRIBUTES (clone) = DECL_ATTRIBUTES (decl);
- }
- }
+ FOR_EACH_CLONE (clone, decl)
+ if (DECL_CLONED_FUNCTION (clone) == decl)
+ DECL_ATTRIBUTES (clone) = DECL_ATTRIBUTES (decl);
pop_nested_class ();
@@ -23530,7 +23518,7 @@ cp_parser_objc_at_property_declaration (cp_parser *parser)
break;
}
cp_lexer_consume_token (parser->lexer); /* eat the = */
- if (cp_lexer_next_token_is_not (parser->lexer, CPP_NAME))
+ if (!cp_parser_objc_selector_p (cp_lexer_peek_token (parser->lexer)->type))
{
cp_parser_error (parser, "expected identifier");
syntax_error = true;
@@ -23539,10 +23527,12 @@ cp_parser_objc_at_property_declaration (cp_parser *parser)
if (keyword == RID_SETTER)
{
if (property_setter_ident != NULL_TREE)
- cp_parser_error (parser, "the %<setter%> attribute may only be specified once");
+ {
+ cp_parser_error (parser, "the %<setter%> attribute may only be specified once");
+ cp_lexer_consume_token (parser->lexer);
+ }
else
- property_setter_ident = cp_lexer_peek_token (parser->lexer)->u.value;
- cp_lexer_consume_token (parser->lexer);
+ property_setter_ident = cp_parser_objc_selector (parser);
if (cp_lexer_next_token_is_not (parser->lexer, CPP_COLON))
cp_parser_error (parser, "setter name must terminate with %<:%>");
else
@@ -23551,10 +23541,12 @@ cp_parser_objc_at_property_declaration (cp_parser *parser)
else
{
if (property_getter_ident != NULL_TREE)
- cp_parser_error (parser, "the %<getter%> attribute may only be specified once");
+ {
+ cp_parser_error (parser, "the %<getter%> attribute may only be specified once");
+ cp_lexer_consume_token (parser->lexer);
+ }
else
- property_getter_ident = cp_lexer_peek_token (parser->lexer)->u.value;
- cp_lexer_consume_token (parser->lexer);
+ property_getter_ident = cp_parser_objc_selector (parser);
}
break;
default:
diff --git a/gcc-4.6/gcc/cp/pt.c b/gcc-4.6/gcc/cp/pt.c
index 770aca8cc..f2459f901 100644
--- a/gcc-4.6/gcc/cp/pt.c
+++ b/gcc-4.6/gcc/cp/pt.c
@@ -225,6 +225,7 @@ static void append_type_to_template_for_access_check_1 (tree, tree, tree,
static tree listify (tree);
static tree listify_autos (tree, tree);
static tree template_parm_to_arg (tree t);
+static bool arg_from_parm_pack_p (tree, tree);
static tree current_template_args (void);
static tree fixup_template_type_parm_type (tree, int);
static tree fixup_template_parm_index (tree, tree, int);
@@ -1660,19 +1661,19 @@ iterative_hash_template_arg (tree arg, hashval_t val)
bool
reregister_specialization (tree spec, tree tinfo, tree new_spec)
{
- spec_entry **slot;
+ spec_entry *entry;
spec_entry elt;
elt.tmpl = most_general_template (TI_TEMPLATE (tinfo));
elt.args = TI_ARGS (tinfo);
elt.spec = NULL_TREE;
- slot = (spec_entry **) htab_find_slot (decl_specializations, &elt, INSERT);
- if (*slot)
+ entry = (spec_entry *) htab_find (decl_specializations, &elt);
+ if (entry != NULL)
{
- gcc_assert ((*slot)->spec == spec || (*slot)->spec == new_spec);
+ gcc_assert (entry->spec == spec || entry->spec == new_spec);
gcc_assert (new_spec != NULL_TREE);
- (*slot)->spec = new_spec;
+ entry->spec = new_spec;
return 1;
}
@@ -2763,12 +2764,15 @@ template_parameter_pack_p (const_tree parm)
if (TREE_CODE (parm) == PARM_DECL)
return (DECL_TEMPLATE_PARM_P (parm)
&& TEMPLATE_PARM_PARAMETER_PACK (DECL_INITIAL (parm)));
+ if (TREE_CODE (parm) == TEMPLATE_PARM_INDEX)
+ return TEMPLATE_PARM_PARAMETER_PACK (parm);
/* If this is a list of template parameters, we could get a
TYPE_DECL or a TEMPLATE_DECL. */
if (TREE_CODE (parm) == TYPE_DECL || TREE_CODE (parm) == TEMPLATE_DECL)
parm = TREE_TYPE (parm);
+ /* Otherwise it must be a type template parameter. */
return ((TREE_CODE (parm) == TEMPLATE_TYPE_PARM
|| TREE_CODE (parm) == TEMPLATE_TEMPLATE_PARM)
&& TEMPLATE_TYPE_PARAMETER_PACK (parm));
@@ -3047,6 +3051,7 @@ find_parameter_packs_r (tree *tp, int *walk_subtrees, void* data)
*walk_subtrees = 0;
return NULL_TREE;
+ case CONSTRUCTOR:
case TEMPLATE_DECL:
cp_walk_tree (&TREE_TYPE (t),
&find_parameter_packs_r, ppd, ppd->visited);
@@ -4036,6 +4041,63 @@ template_parm_to_arg (tree t)
return t;
}
+/* This function returns TRUE if PARM_PACK is a template parameter
+ pack and if ARG_PACK is what template_parm_to_arg returned when
+ passed PARM_PACK. */
+
+static bool
+arg_from_parm_pack_p (tree arg_pack, tree parm_pack)
+{
+ /* For clarity in the comments below let's use the representation
+ argument_pack<elements>' to denote an argument pack and its
+ elements.
+
+ In the 'if' block below, we want to detect cases where
+ ARG_PACK is argument_pack<PARM_PACK...>. I.e, we want to
+ check if ARG_PACK is an argument pack which sole element is
+ the expansion of PARM_PACK. That argument pack is typically
+ created by template_parm_to_arg when passed a parameter
+ pack. */
+
+ if (arg_pack
+ && TREE_VEC_LENGTH (ARGUMENT_PACK_ARGS (arg_pack)) == 1
+ && PACK_EXPANSION_P (TREE_VEC_ELT (ARGUMENT_PACK_ARGS (arg_pack), 0)))
+ {
+ tree expansion = TREE_VEC_ELT (ARGUMENT_PACK_ARGS (arg_pack), 0);
+ tree pattern = PACK_EXPANSION_PATTERN (expansion);
+ /* So we have an argument_pack<P...>. We want to test if P
+ is actually PARM_PACK. We will not use cp_tree_equal to
+ test P and PARM_PACK because during type fixup (by
+ fixup_template_parm) P can be a pre-fixup version of a
+ type and PARM_PACK be its post-fixup version.
+ cp_tree_equal would consider them as different even
+ though we would want to consider them compatible for our
+ precise purpose here.
+
+ Thus we are going to consider that P and PARM_PACK are
+ compatible if they have the same DECL. */
+ if ((/* If ARG_PACK is a type parameter pack named by the
+ same DECL as parm_pack ... */
+ (TYPE_P (pattern)
+ && TYPE_P (parm_pack)
+ && TYPE_NAME (pattern) == TYPE_NAME (parm_pack))
+ /* ... or if PARM_PACK is a non-type parameter named by the
+ same DECL as ARG_PACK. Note that PARM_PACK being a
+ non-type parameter means it's either a PARM_DECL or a
+ TEMPLATE_PARM_INDEX. */
+ || (TREE_CODE (pattern) == TEMPLATE_PARM_INDEX
+ && ((TREE_CODE (parm_pack) == PARM_DECL
+ && (TEMPLATE_PARM_DECL (pattern)
+ == TEMPLATE_PARM_DECL (DECL_INITIAL (parm_pack))))
+ || (TREE_CODE (parm_pack) == TEMPLATE_PARM_INDEX
+ && (TEMPLATE_PARM_DECL (pattern)
+ == TEMPLATE_PARM_DECL (parm_pack))))))
+ && template_parameter_pack_p (pattern))
+ return true;
+ }
+ return false;
+}
+
/* Within the declaration of a template, return all levels of template
parameters that apply. The template parameters are represented as
a TREE_VEC, in the form documented in cp-tree.h for template
@@ -4613,7 +4675,7 @@ check_default_tmpl_args (tree decl, tree parms, int is_primary,
"friend declarations");
else if (TREE_CODE (decl) == FUNCTION_DECL && (cxx_dialect == cxx98))
msg = G_("default template arguments may not be used in function templates "
- "without -std=c++0x or -std=gnu++0x");
+ "without -std=c++11 or -std=gnu++11");
else if (is_partial)
msg = G_("default template arguments may not be used in "
"partial specializations");
@@ -6340,6 +6402,7 @@ coerce_template_parms (tree parms,
subtract it from nparms to get the number of non-variadic
parameters. */
int variadic_p = 0;
+ int post_variadic_parms = 0;
if (args == error_mark_node)
return error_mark_node;
@@ -6350,19 +6413,22 @@ coerce_template_parms (tree parms,
for (parm_idx = 0; parm_idx < nparms; ++parm_idx)
{
tree tparm = TREE_VALUE (TREE_VEC_ELT (parms, parm_idx));
+ if (variadic_p)
+ ++post_variadic_parms;
if (template_parameter_pack_p (tparm))
++variadic_p;
}
inner_args = INNERMOST_TEMPLATE_ARGS (args);
- /* If there are 0 or 1 parameter packs, we need to expand any argument
- packs so that we can deduce a parameter pack from some non-packed args
- followed by an argument pack, as in variadic85.C. If there are more
- than that, we need to leave argument packs intact so the arguments are
- assigned to the right parameter packs. This should only happen when
- dealing with a nested class inside a partial specialization of a class
- template, as in variadic92.C. */
- if (variadic_p <= 1)
+ /* If there are no parameters that follow a parameter pack, we need to
+ expand any argument packs so that we can deduce a parameter pack from
+ some non-packed args followed by an argument pack, as in variadic85.C.
+ If there are such parameters, we need to leave argument packs intact
+ so the arguments are assigned properly. This can happen when dealing
+ with a nested class inside a partial specialization of a class
+ template, as in variadic92.C, or when deducing a template parameter pack
+ from a sub-declarator, as in variadic114.C. */
+ if (!post_variadic_parms)
inner_args = expand_template_argument_pack (inner_args);
nargs = inner_args ? NUM_TMPL_ARGS (inner_args) : 0;
@@ -8873,53 +8939,13 @@ tsubst_pack_expansion (tree t, tree args, tsubst_flags_t complain,
return result;
}
- /* For clarity in the comments below let's use the
- representation 'argument_pack<elements>' to denote an
- argument pack and its elements.
-
- In the 'if' block below, we want to detect cases where
- ARG_PACK is argument_pack<PARM_PACK...>. I.e, we want to
- check if ARG_PACK is an argument pack which sole element is
- the expansion of PARM_PACK. That argument pack is typically
- created by template_parm_to_arg when passed a parameter
- pack. */
- if (arg_pack
- && TREE_VEC_LENGTH (ARGUMENT_PACK_ARGS (arg_pack)) == 1
- && PACK_EXPANSION_P (TREE_VEC_ELT (ARGUMENT_PACK_ARGS (arg_pack), 0)))
- {
- tree expansion = TREE_VEC_ELT (ARGUMENT_PACK_ARGS (arg_pack), 0);
- tree pattern = PACK_EXPANSION_PATTERN (expansion);
- /* So we have an argument_pack<P...>. We want to test if P
- is actually PARM_PACK. We will not use cp_tree_equal to
- test P and PARM_PACK because during type fixup (by
- fixup_template_parm) P can be a pre-fixup version of a
- type and PARM_PACK be its post-fixup version.
- cp_tree_equal would consider them as different even
- though we would want to consider them compatible for our
- precise purpose here.
-
- Thus we are going to consider that P and PARM_PACK are
- compatible if they have the same DECL. */
- if ((/* If ARG_PACK is a type parameter pack named by the
- same DECL as parm_pack ... */
- (TYPE_P (pattern)
- && TYPE_P (parm_pack)
- && TYPE_NAME (pattern) == TYPE_NAME (parm_pack))
- /* ... or if ARG_PACK is a non-type parameter
- named by the same DECL as parm_pack ... */
- || (TREE_CODE (pattern) == TEMPLATE_PARM_INDEX
- && TREE_CODE (parm_pack) == PARM_DECL
- && TEMPLATE_PARM_DECL (pattern)
- == TEMPLATE_PARM_DECL (DECL_INITIAL (parm_pack))))
- && template_parameter_pack_p (pattern))
- /* ... then the argument pack that the parameter maps to
- is just an expansion of the parameter itself, such as
- one would find in the implicit typedef of a class
- inside the class itself. Consider this parameter
- "unsubstituted", so that we will maintain the outer
- pack expansion. */
- arg_pack = NULL_TREE;
- }
+ if (arg_from_parm_pack_p (arg_pack, parm_pack))
+ /* The argument pack that the parameter maps to is just an
+ expansion of the parameter itself, such as one would find
+ in the implicit typedef of a class inside the class itself.
+ Consider this parameter "unsubstituted", so that we will
+ maintain the outer pack expansion. */
+ arg_pack = NULL_TREE;
if (arg_pack)
{
@@ -11549,6 +11575,9 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
mark_used (t);
return t;
+ case NAMESPACE_DECL:
+ return t;
+
case OVERLOAD:
/* An OVERLOAD will always be a non-dependent overload set; an
overload set from function scope will just be represented with an
@@ -12702,7 +12731,11 @@ tsubst_copy_and_build (tree t,
if (parsing_lock_attribute && func_decl_params)
decl = lookup_name_in_func_params (func_decl_params, decl);
else
- decl = unqualified_name_lookup_error (decl);
+ {
+ if (complain & tf_error)
+ unqualified_name_lookup_error (decl);
+ decl = error_mark_node;
+ }
}
return decl;
}
@@ -12810,6 +12843,10 @@ tsubst_copy_and_build (tree t,
return build_x_unary_op (TREE_CODE (t), RECUR (TREE_OPERAND (t, 0)),
complain);
+ case FIX_TRUNC_EXPR:
+ return cp_build_unary_op (FIX_TRUNC_EXPR, RECUR (TREE_OPERAND (t, 0)),
+ 0, complain);
+
case ADDR_EXPR:
op1 = TREE_OPERAND (t, 0);
if (TREE_CODE (op1) == LABEL_DECL)
@@ -13285,7 +13322,9 @@ tsubst_copy_and_build (tree t,
if (member == error_mark_node)
return error_mark_node;
- if (object_type && !CLASS_TYPE_P (object_type))
+ if (type_dependent_expression_p (object))
+ /* We can't do much here. */;
+ else if (!CLASS_TYPE_P (object_type))
{
if (SCALAR_TYPE_P (object_type))
{
@@ -14950,7 +14989,6 @@ unify_pack_expansion (tree tparms, tree targs, tree packed_parms,
tree arg = TREE_VEC_ELT (packed_args, i);
tree arg_expr = NULL_TREE;
int arg_strict = strict;
- bool skip_arg_p = false;
if (call_args_p)
{
@@ -14993,19 +15031,15 @@ unify_pack_expansion (tree tparms, tree targs, tree packed_parms,
if (resolve_overloaded_unification
(tparms, targs, parm, arg,
(unification_kind_t) strict,
- sub_strict)
- != 0)
- return 1;
- skip_arg_p = true;
+ sub_strict))
+ goto unified;
+ return 1;
}
- if (!skip_arg_p)
- {
- arg_expr = arg;
- arg = unlowered_expr_type (arg);
- if (arg == error_mark_node)
- return 1;
- }
+ arg_expr = arg;
+ arg = unlowered_expr_type (arg);
+ if (arg == error_mark_node)
+ return 1;
}
arg_strict = sub_strict;
@@ -15016,16 +15050,14 @@ unify_pack_expansion (tree tparms, tree targs, tree packed_parms,
&parm, &arg, arg_expr);
}
- if (!skip_arg_p)
- {
- /* For deduction from an init-list we need the actual list. */
- if (arg_expr && BRACE_ENCLOSED_INITIALIZER_P (arg_expr))
- arg = arg_expr;
- if (unify (tparms, targs, parm, arg, arg_strict))
- return 1;
- }
+ /* For deduction from an init-list we need the actual list. */
+ if (arg_expr && BRACE_ENCLOSED_INITIALIZER_P (arg_expr))
+ arg = arg_expr;
+ if (unify (tparms, targs, parm, arg, arg_strict))
+ return 1;
}
+ unified:
/* For each parameter pack, collect the deduced value. */
for (pack = packs; pack; pack = TREE_CHAIN (pack))
{
@@ -17359,6 +17391,8 @@ instantiate_decl (tree d, int defer_ok,
d = DECL_CLONED_FUNCTION (d);
if (DECL_TEMPLATE_INSTANTIATED (d)
+ || (TREE_CODE (d) == FUNCTION_DECL
+ && DECL_DEFAULTED_FN (d) && DECL_INITIAL (d))
|| DECL_TEMPLATE_SPECIALIZATION (d))
/* D has already been instantiated or explicitly specialized, so
there's nothing for us to do here.
@@ -19072,6 +19106,10 @@ build_non_dependent_expr (tree expr)
if (TREE_CODE (expr) == THROW_EXPR)
return expr;
+ /* Don't wrap an initializer list, we need to be able to look inside. */
+ if (BRACE_ENCLOSED_INITIALIZER_P (expr))
+ return expr;
+
if (TREE_CODE (expr) == COND_EXPR)
return build3 (COND_EXPR,
TREE_TYPE (expr),
diff --git a/gcc-4.6/gcc/cp/semantics.c b/gcc-4.6/gcc/cp/semantics.c
index 1816e0520..6a2c81863 100644
--- a/gcc-4.6/gcc/cp/semantics.c
+++ b/gcc-4.6/gcc/cp/semantics.c
@@ -2911,6 +2911,9 @@ finish_id_expression (tree id_expression,
tree lambda_expr = NULL_TREE;
tree initializer = convert_from_reference (decl);
+ /* Mark it as used now even if the use is ill-formed. */
+ mark_used (decl);
+
/* Core issue 696: "[At the July 2009 meeting] the CWG expressed
support for an approach in which a reference to a local
[constant] automatic variable in a nested class or lambda body
@@ -3217,7 +3220,7 @@ finish_id_expression (tree id_expression,
if (scope)
{
decl = (adjust_result_of_qualified_name_lookup
- (decl, scope, current_class_type));
+ (decl, scope, current_nonlambda_class_type()));
if (TREE_CODE (decl) == FUNCTION_DECL)
mark_used (decl);
@@ -3359,7 +3362,7 @@ finish_offsetof (tree expr)
}
if (TREE_CODE (expr) == INDIRECT_REF && REFERENCE_REF_P (expr))
expr = TREE_OPERAND (expr, 0);
- return fold_offsetof (expr, NULL_TREE);
+ return fold_offsetof (expr);
}
/* Replace the AGGR_INIT_EXPR at *TP with an equivalent CALL_EXPR. This
@@ -4859,6 +4862,9 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p,
expr = resolve_nondeduced_context (expr);
+ if (invalid_nonstatic_memfn_p (expr, complain))
+ return error_mark_node;
+
/* To get the size of a static data member declared as an array of
unknown bound, we need to instantiate it. */
if (TREE_CODE (expr) == VAR_DECL
@@ -4945,8 +4951,9 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p,
gcc_unreachable ();
case INTEGER_CST:
+ case PTRMEM_CST:
/* We can get here when the id-expression refers to an
- enumerator. */
+ enumerator or non-type template parameter. */
type = TREE_TYPE (expr);
break;
@@ -6324,12 +6331,22 @@ cxx_eval_array_reference (const constexpr_call *call, tree t,
elem_type = TREE_TYPE (TREE_TYPE (ary));
if (TREE_CODE (ary) == CONSTRUCTOR)
len = CONSTRUCTOR_NELTS (ary);
- else
+ else if (TREE_CODE (ary) == STRING_CST)
{
elem_nchars = (TYPE_PRECISION (elem_type)
/ TYPE_PRECISION (char_type_node));
len = (unsigned) TREE_STRING_LENGTH (ary) / elem_nchars;
}
+ else
+ {
+ /* We can't do anything with other tree codes, so use
+ VERIFY_CONSTANT to complain and fail. */
+ VERIFY_CONSTANT (ary);
+ /* This should be unreachable, but be more fault-tolerant on the
+ release branch. */
+ *non_constant_p = true;
+ return t;
+ }
if (compare_tree_int (index, len) >= 0)
{
if (tree_int_cst_lt (index, array_type_nelts_top (TREE_TYPE (ary))))
@@ -6399,7 +6416,8 @@ cxx_eval_component_reference (const constexpr_call *call, tree t,
if (field == part)
return value;
}
- if (TREE_CODE (TREE_TYPE (whole)) == UNION_TYPE)
+ if (TREE_CODE (TREE_TYPE (whole)) == UNION_TYPE
+ && CONSTRUCTOR_NELTS (whole) > 0)
{
/* FIXME Mike Miller wants this to be OK. */
if (!allow_non_constant)
@@ -6408,8 +6426,12 @@ cxx_eval_component_reference (const constexpr_call *call, tree t,
*non_constant_p = true;
return t;
}
- gcc_unreachable();
- return error_mark_node;
+
+ /* If there's no explicit init for this field, it's value-initialized. */
+ value = build_value_init (TREE_TYPE (t), tf_warning_or_error);
+ return cxx_eval_constant_expression (call, value,
+ allow_non_constant, addr,
+ non_constant_p);
}
/* Subroutine of cxx_eval_constant_expression.
@@ -6506,9 +6528,9 @@ cxx_eval_logical_expression (const constexpr_call *call, tree t,
allow_non_constant, addr,
non_constant_p);
VERIFY_CONSTANT (lhs);
- if (lhs == bailout_value)
+ if (tree_int_cst_equal (lhs, bailout_value))
return lhs;
- gcc_assert (lhs == continue_value);
+ gcc_assert (tree_int_cst_equal (lhs, continue_value));
r = cxx_eval_constant_expression (call, TREE_OPERAND (t, 1),
allow_non_constant, addr, non_constant_p);
VERIFY_CONSTANT (r);
@@ -6613,6 +6635,7 @@ cxx_eval_vec_init_1 (const constexpr_call *call, tree atype, tree init,
tree elttype = TREE_TYPE (atype);
int max = tree_low_cst (array_type_nelts (atype), 0);
VEC(constructor_elt,gc) *n = VEC_alloc (constructor_elt, gc, max + 1);
+ bool default_init = false;
int i;
/* For the default constructor, build up a call to the default
@@ -6631,6 +6654,7 @@ cxx_eval_vec_init_1 (const constexpr_call *call, tree atype, tree init,
release_tree_vector (argvec);
init = cxx_eval_constant_expression (call, init, allow_non_constant,
addr, non_constant_p);
+ default_init = true;
}
if (*non_constant_p && !allow_non_constant)
@@ -6658,7 +6682,7 @@ cxx_eval_vec_init_1 (const constexpr_call *call, tree atype, tree init,
eltinit = cxx_eval_constant_expression
(call, eltinit, allow_non_constant, addr, non_constant_p);
}
- else if (TREE_CODE (init) == CONSTRUCTOR)
+ else if (default_init)
{
/* Initializing an element using the call to the default
constructor we just built above. */
@@ -7310,6 +7334,7 @@ maybe_constant_value (tree t)
if (type_dependent_expression_p (t)
|| type_unknown_p (t)
+ || BRACE_ENCLOSED_INITIALIZER_P (t)
|| !potential_constant_expression (t)
|| value_dependent_expression_p (t))
return t;
@@ -7468,6 +7493,7 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags)
case IDENTIFIER_NODE:
/* We can see a FIELD_DECL in a pointer-to-member expression. */
case FIELD_DECL:
+ case USING_DECL:
return true;
case PARM_DECL:
@@ -7516,7 +7542,17 @@ potential_constant_expression_1 (tree t, bool want_rval, tsubst_flags_t flags)
{
tree x = get_nth_callarg (t, 0);
if (is_this_parameter (x))
- /* OK. */;
+ {
+ if (DECL_CONSTRUCTOR_P (DECL_CONTEXT (x)))
+ {
+ if (flags & tf_error)
+ sorry ("calling a member function of the "
+ "object being constructed in a constant "
+ "expression");
+ return false;
+ }
+ /* Otherwise OK. */;
+ }
else if (!potential_constant_expression_1 (x, rval, flags))
{
if (flags & tf_error)
@@ -8283,6 +8319,9 @@ add_capture (tree lambda, tree id, tree initializer, bool by_reference_p,
if (!real_lvalue_p (initializer))
error ("cannot capture %qE by reference", initializer);
}
+ else
+ /* Capture by copy requires a complete type. */
+ type = complete_type (type);
/* Make member variable. */
member = build_lang_decl (FIELD_DECL, id, type);
diff --git a/gcc-4.6/gcc/cp/tree.c b/gcc-4.6/gcc/cp/tree.c
index 1fa32a015..6a39cc9e4 100644
--- a/gcc-4.6/gcc/cp/tree.c
+++ b/gcc-4.6/gcc/cp/tree.c
@@ -1840,7 +1840,11 @@ bot_manip (tree* tp, int* walk_subtrees, void* data)
tree u;
if (TREE_CODE (TREE_OPERAND (t, 1)) == AGGR_INIT_EXPR)
- u = build_cplus_new (TREE_TYPE (t), TREE_OPERAND (t, 1));
+ {
+ u = build_cplus_new (TREE_TYPE (t), TREE_OPERAND (t, 1));
+ if (AGGR_INIT_ZERO_FIRST (TREE_OPERAND (t, 1)))
+ AGGR_INIT_ZERO_FIRST (TREE_OPERAND (u, 1)) = true;
+ }
else
u = build_target_expr_with_type (TREE_OPERAND (t, 1), TREE_TYPE (t));
@@ -1861,7 +1865,11 @@ bot_manip (tree* tp, int* walk_subtrees, void* data)
}
/* Make a copy of this node. */
- return copy_tree_r (tp, walk_subtrees, NULL);
+ t = copy_tree_r (tp, walk_subtrees, NULL);
+ if (TREE_CODE (*tp) == CALL_EXPR && !TREE_NOTHROW (*tp)
+ && cfun && cp_function_chain)
+ cp_function_chain->can_throw = 1;
+ return t;
}
/* Replace all remapped VAR_DECLs in T with their new equivalents.
diff --git a/gcc-4.6/gcc/cp/typeck.c b/gcc-4.6/gcc/cp/typeck.c
index eaed39067..a8cac768c 100644
--- a/gcc-4.6/gcc/cp/typeck.c
+++ b/gcc-4.6/gcc/cp/typeck.c
@@ -1299,7 +1299,9 @@ structural_comptypes (tree t1, tree t2, int strict)
if (!cp_tree_equal (TYPENAME_TYPE_FULLNAME (t1),
TYPENAME_TYPE_FULLNAME (t2)))
return false;
- if (!same_type_p (TYPE_CONTEXT (t1), TYPE_CONTEXT (t2)))
+ /* Qualifiers don't matter on scopes. */
+ if (!same_type_ignoring_top_level_qualifiers_p (TYPE_CONTEXT (t1),
+ TYPE_CONTEXT (t2)))
return false;
break;
@@ -4838,9 +4840,7 @@ cp_build_addr_expr_1 (tree arg, bool strict_lvalue, tsubst_flags_t complain)
&& TREE_CONSTANT (TREE_OPERAND (val, 0)))
{
tree type = build_pointer_type (argtype);
- tree op0 = fold_convert (type, TREE_OPERAND (val, 0));
- tree op1 = fold_convert (sizetype, fold_offsetof (arg, val));
- return fold_build2 (POINTER_PLUS_EXPR, type, op0, op1);
+ return fold_convert (type, fold_offsetof_1 (arg));
}
/* Handle complex lvalues (when permitted)
@@ -5775,8 +5775,18 @@ build_static_cast_1 (tree type, tree expr, bool c_cast_p,
&& reference_related_p (TREE_TYPE (type), intype)
&& (c_cast_p || at_least_as_qualified_p (TREE_TYPE (type), intype)))
{
- expr = build_typed_address (expr, type);
- return convert_from_reference (expr);
+ /* Handle the lvalue case here by casting to lvalue reference and
+ then changing it to an rvalue reference. Casting an xvalue to
+ rvalue reference will be handled by the main code path. */
+ tree lref = cp_build_reference_type (TREE_TYPE (type), false);
+ result = (perform_direct_initialization_if_possible
+ (lref, expr, c_cast_p, complain));
+ result = cp_fold_convert (type, result);
+ /* Make sure we don't fold back down to a named rvalue reference,
+ because that would be an lvalue. */
+ if (DECL_P (result))
+ result = build1 (NON_LVALUE_EXPR, type, result);
+ return convert_from_reference (result);
}
/* Resolve overloaded address here rather than once in
diff --git a/gcc-4.6/gcc/cp/typeck2.c b/gcc-4.6/gcc/cp/typeck2.c
index 480f442ee..7662e209c 100644
--- a/gcc-4.6/gcc/cp/typeck2.c
+++ b/gcc-4.6/gcc/cp/typeck2.c
@@ -452,6 +452,12 @@ cxx_incomplete_type_diagnostic (const_tree value, const_tree type,
break;
case LANG_TYPE:
+ if (type == init_list_type_node)
+ {
+ emit_diagnostic (diag_kind, input_location, 0,
+ "invalid use of brace-enclosed initializer list");
+ break;
+ }
gcc_assert (type == unknown_type_node);
if (value && TREE_CODE (value) == COMPONENT_REF)
goto bad_member;
@@ -727,7 +733,7 @@ check_narrowing (tree type, tree init)
bool ok = true;
REAL_VALUE_TYPE d;
- if (!ARITHMETIC_TYPE_P (type))
+ if (!warn_narrowing || !ARITHMETIC_TYPE_P (type))
return;
init = maybe_constant_value (init);
@@ -775,8 +781,8 @@ check_narrowing (tree type, tree init)
}
if (!ok)
- permerror (input_location, "narrowing conversion of %qE from %qT to %qT inside { }",
- init, ftype, type);
+ pedwarn (input_location, OPT_Wnarrowing, "narrowing conversion of %qE "
+ "from %qT to %qT inside { }", init, ftype, type);
}
/* Process the initializer INIT for a variable of type TYPE, emitting
diff --git a/gcc-4.6/gcc/df.h b/gcc-4.6/gcc/df.h
index 684b06db0..f59b52582 100644
--- a/gcc-4.6/gcc/df.h
+++ b/gcc-4.6/gcc/df.h
@@ -53,7 +53,7 @@ union df_ref_d;
#define DF_RD 3 /* Reaching Defs. */
#define DF_CHAIN 4 /* Def-Use and/or Use-Def Chains. */
#define DF_WORD_LR 5 /* Subreg tracking lr. */
-#define DF_NOTE 6 /* REG_DEF and REG_UNUSED notes. */
+#define DF_NOTE 6 /* REG_DEAD and REG_UNUSED notes. */
#define DF_MD 7 /* Multiple Definitions. */
#define DF_LAST_PROBLEM_PLUS1 (DF_MD + 1)
diff --git a/gcc-4.6/gcc/doc/extend.texi b/gcc-4.6/gcc/doc/extend.texi
index c93ec2c80..a4295840b 100644
--- a/gcc-4.6/gcc/doc/extend.texi
+++ b/gcc-4.6/gcc/doc/extend.texi
@@ -3033,6 +3033,33 @@ compiled with more aggressive optimization options that produce faster
and larger code, while other functions can be called with less
aggressive options.
+@item OS_main/OS_task
+@cindex @code{OS_main} AVR function attribute
+@cindex @code{OS_task} AVR function attribute
+On AVR, functions with the @code{OS_main} or @code{OS_task} attribute
+do not save/restore any call-saved register in their prologue/epilogue.
+
+The @code{OS_main} attribute can be used when there @emph{is
+guarantee} that interrupts are disabled at the time when the function
+is entered. This will save resources when the stack pointer has to be
+changed to set up a frame for local variables.
+
+The @code{OS_task} attribute can be used when there is @emph{no
+guarantee} that interrupts are disabled at that time when the function
+is entered like for, e@.g@. task functions in a multi-threading operating
+system. In that case, changing the stack pointer register will be
+guarded by save/clear/restore of the global interrupt enable flag.
+
+The differences to the @code{naked} function attrubute are:
+@itemize @bullet
+@item @code{naked} functions do not have a return instruction whereas
+@code{OS_main} and @code{OS_task} functions will have a @code{RET} or
+@code{RETI} return instruction.
+@item @code{naked} functions do not set up a frame for local variables
+or a frame pointer whereas @code{OS_main} and @code{OS_task} do this
+as needed.
+@end itemize
+
@item pcs
@cindex @code{pcs} function attribute
@@ -4521,6 +4548,19 @@ The @code{dllexport} attribute is described in @ref{Function Attributes}.
@end table
+@subsection AVR Variable Attributes
+
+@table @code
+@item progmem
+@cindex @code{progmem} AVR variable attribute
+The @code{progmem} attribute is used on the AVR to place data in the program
+memory address space (flash). This is accomplished by putting
+respective variables into a section whose name starts with @code{.progmem}.
+
+AVR is a Harvard architecture processor and data and reas only data
+normally resides in the data memory address space (RAM).
+@end table
+
@subsection Blackfin Variable Attributes
Three attributes are currently defined for the Blackfin.
@@ -4790,16 +4830,6 @@ placed in either the @code{.bss_below100} section or the
@end table
-@subsection AVR Variable Attributes
-
-@table @code
-@item progmem
-@cindex @code{progmem} variable attribute
-The @code{progmem} attribute is used on the AVR to place data in the Program
-Memory address space. The AVR is a Harvard Architecture processor and data
-normally resides in the Data Memory address space.
-@end table
-
@node Type Attributes
@section Specifying Attributes of Types
@cindex attribute of types
diff --git a/gcc-4.6/gcc/doc/install.texi b/gcc-4.6/gcc/doc/install.texi
index abbc7dc0b..a75db7898 100644
--- a/gcc-4.6/gcc/doc/install.texi
+++ b/gcc-4.6/gcc/doc/install.texi
@@ -1689,11 +1689,6 @@ option), if the linker supports it. If you specify
support @option{--build-id} option, a warning is issued and the
@option{--enable-linker-build-id} option is ignored. The default is off.
-@item --with-linker-hash-style=@var{choice}
-Tells GCC to pass @option{--hash-style=@var{choice}} option to the
-linker for all final links. @var{choice} can be one of
-@samp{sysv}, @samp{gnu}, and @samp{both} where @samp{sysv} is the default.
-
@item --enable-gnu-unique-object
@itemx --disable-gnu-unique-object
Tells GCC to use the gnu_unique_object relocation for C++ template
diff --git a/gcc-4.6/gcc/doc/invoke.texi b/gcc-4.6/gcc/doc/invoke.texi
index 05b6df9ce..98c270cd4 100644
--- a/gcc-4.6/gcc/doc/invoke.texi
+++ b/gcc-4.6/gcc/doc/invoke.texi
@@ -391,10 +391,12 @@ Objective-C and Objective-C++ Dialects}.
-fpmu-profile-generate=@var{pmuoption} @gol
-fpmu-profile-use=@var{pmuoption} @gol
-freciprocal-math -fregmove -frename-registers -freorder-blocks @gol
+-frecord-gcc-switches-in-elf@gol
-freorder-blocks-and-partition -freorder-functions @gol
-frerun-cse-after-loop -freschedule-modulo-scheduled-loops @gol
-fripa -fripa-disallow-asm-modules -fripa-disallow-opt-mismatch @gol
--fripa-no-promote-always-inline-func -fripa-verbose -frounding-math @gol
+-fripa-no-promote-always-inline-func -fripa-verbose @gol
+-fripa-peel-size-limit -fripa-unroll-size-limit -frounding-math @gol
-fsched2-use-superblocks -fsched-pressure @gol
-fsched-spec-load -fsched-spec-load-dangerous @gol
-fsched-stalled-insns-dep[=@var{n}] -fsched-stalled-insns[=@var{n}] @gol
@@ -406,8 +408,8 @@ Objective-C and Objective-C++ Dialects}.
-fsel-sched-pipelining -fsel-sched-pipelining-outer-loops @gol
-fsignaling-nans -fsingle-precision-constant -fsplit-ivs-in-unroller @gol
-fsplit-wide-types -fstack-protector -fstack-protector-all @gol
--fstrict-aliasing -fstrict-overflow -fthread-jumps -ftracer @gol
--ftree-bit-ccp @gol
+-fstack-protector-strong -fstrict-aliasing -fstrict-overflow @gol
+-fthread-jumps -ftracer -ftree-bit-ccp @gol
-ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-copy-prop @gol
-ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse @gol
-ftree-forwprop -ftree-fre -ftree-loop-if-convert @gol
@@ -893,7 +895,8 @@ See RS/6000 and PowerPC Options.
-mlittle-endian @gol
-mstack-bias -mno-stack-bias @gol
-munaligned-doubles -mno-unaligned-doubles @gol
--mv8plus -mno-v8plus -mvis -mno-vis}
+-mv8plus -mno-v8plus -mvis -mno-vis @gol
+-mfix-at697f}
@emph{SPU Options}
@gccoptlist{-mwarn-reloc -merror-reloc @gol
@@ -7802,8 +7805,8 @@ file. When the object files are linked together, all the function
bodies are read from these ELF sections and instantiated as if they
had been part of the same translation unit.
-To use the link-timer optimizer, @option{-flto} needs to be specified at
-compile time and during the final link. For example,
+To use the link-time optimizer, @option{-flto} needs to be specified at
+compile time and during the final link. For example:
@smallexample
gcc -c -O2 -flto foo.c
@@ -7811,25 +7814,25 @@ gcc -c -O2 -flto bar.c
gcc -o myprog -flto -O2 foo.o bar.o
@end smallexample
-The first two invocations to GCC will save a bytecode representation
+The first two invocations to GCC save a bytecode representation
of GIMPLE into special ELF sections inside @file{foo.o} and
-@file{bar.o}. The final invocation will read the GIMPLE bytecode from
-@file{foo.o} and @file{bar.o}, merge the two files into a single
-internal image, and compile the result as usual. Since both
+@file{bar.o}. The final invocation reads the GIMPLE bytecode from
+@file{foo.o} and @file{bar.o}, merges the two files into a single
+internal image, and compiles the result as usual. Since both
@file{foo.o} and @file{bar.o} are merged into a single image, this
-causes all the inter-procedural analyses and optimizations in GCC to
+causes all the interprocedural analyses and optimizations in GCC to
work across the two files as if they were a single one. This means,
-for example, that the inliner will be able to inline functions in
+for example, that the inliner is able to inline functions in
@file{bar.o} into functions in @file{foo.o} and vice-versa.
-Another (simpler) way to enable link-time optimization is,
+Another (simpler) way to enable link-time optimization is:
@smallexample
gcc -o myprog -flto -O2 foo.c bar.c
@end smallexample
-The above will generate bytecode for @file{foo.c} and @file{bar.c},
-merge them together into a single GIMPLE representation and optimize
+The above generates bytecode for @file{foo.c} and @file{bar.c},
+merges them together into a single GIMPLE representation and optimizes
them as usual to produce @file{myprog}.
The only important thing to keep in mind is that to enable link-time
@@ -7839,30 +7842,22 @@ compile and the link commands.
To make whole program optimization effective, it is necessary to make
certain whole program assumptions. The compiler needs to know
what functions and variables can be accessed by libraries and runtime
-outside of the link time optimized unit. When supported by the linker,
-the linker plugin (see @option{-fuse-linker-plugin}) passes to the
-compiler information about used and externally visible symbols. When
+outside of the link-time optimized unit. When supported by the linker,
+the linker plugin (see @option{-fuse-linker-plugin}) passes information
+to the compiler about used and externally visible symbols. When
the linker plugin is not available, @option{-fwhole-program} should be
-used to allow the compiler to make these assumptions, which will lead
+used to allow the compiler to make these assumptions, which leads
to more aggressive optimization decisions.
Note that when a file is compiled with @option{-flto}, the generated
-object file will be larger than a regular object file because it will
-contain GIMPLE bytecodes and the usual final code. This means that
-object files with LTO information can be linked as a normal object
-file. So, in the previous example, if the final link is done with
-
-@smallexample
-gcc -o myprog foo.o bar.o
-@end smallexample
-
-The only difference will be that no inter-procedural optimizations
-will be applied to produce @file{myprog}. The two object files
-@file{foo.o} and @file{bar.o} will be simply sent to the regular
-linker.
+object file is larger than a regular object file because it
+contains GIMPLE bytecodes and the usual final code. This means that
+object files with LTO information can be linked as normal object
+files; if @option{-flto} is not passed to the linker, no
+interprocedural optimizations are applied.
Additionally, the optimization flags used to compile individual files
-are not necessarily related to those used at link-time. For instance,
+are not necessarily related to those used at link time. For instance,
@smallexample
gcc -c -O0 -flto foo.c
@@ -7870,37 +7865,42 @@ gcc -c -O0 -flto bar.c
gcc -o myprog -flto -O3 foo.o bar.o
@end smallexample
-This will produce individual object files with unoptimized assembler
-code, but the resulting binary @file{myprog} will be optimized at
-@option{-O3}. Now, if the final binary is generated without
-@option{-flto}, then @file{myprog} will not be optimized.
+This produces individual object files with unoptimized assembler
+code, but the resulting binary @file{myprog} is optimized at
+@option{-O3}. If, instead, the final binary is generated without
+@option{-flto}, then @file{myprog} is not optimized.
-When producing the final binary with @option{-flto}, GCC will only
-apply link-time optimizations to those files that contain bytecode.
+When producing the final binary with @option{-flto}, GCC only
+applies link-time optimizations to those files that contain bytecode.
Therefore, you can mix and match object files and libraries with
-GIMPLE bytecodes and final object code. GCC will automatically select
+GIMPLE bytecodes and final object code. GCC automatically selects
which files to optimize in LTO mode and which files to link without
further processing.
-There are some code generation flags that GCC will preserve when
+There are some code generation flags that GCC preserves when
generating bytecodes, as they need to be used during the final link
stage. Currently, the following options are saved into the GIMPLE
bytecode files: @option{-fPIC}, @option{-fcommon} and all the
@option{-m} target flags.
-At link time, these options are read-in and reapplied. Note that the
-current implementation makes no attempt at recognizing conflicting
-values for these options. If two or more files have a conflicting
-value (e.g., one file is compiled with @option{-fPIC} and another
-isn't), the compiler will simply use the last value read from the
-bytecode files. It is recommended, then, that all the files
-participating in the same link be compiled with the same options.
+At link time, these options are read in and reapplied. Note that the
+current implementation makes no attempt to recognize conflicting
+values for these options. If different files have conflicting option
+values (e.g., one file is compiled with @option{-fPIC} and another
+isn't), the compiler simply uses the last value read from the
+bytecode files. It is recommended, then, that you compile all the files
+participating in the same link with the same options.
+
+If LTO encounters objects with C linkage declared with incompatible
+types in separate translation units to be linked together (undefined
+behavior according to ISO C99 6.2.7), a non-fatal diagnostic may be
+issued. The behavior is still undefined at runtime.
Another feature of LTO is that it is possible to apply interprocedural
optimizations on files written in different languages. This requires
-some support in the language front end. Currently, the C, C++ and
+support in the language front end. Currently, the C, C++ and
Fortran front ends are capable of emitting GIMPLE bytecodes, so
-something like this should work
+something like this should work:
@smallexample
gcc -c -flto foo.c
@@ -7912,49 +7912,43 @@ g++ -o myprog -flto -O3 foo.o bar.o baz.o -lgfortran
Notice that the final link is done with @command{g++} to get the C++
runtime libraries and @option{-lgfortran} is added to get the Fortran
runtime libraries. In general, when mixing languages in LTO mode, you
-should use the same link command used when mixing languages in a
-regular (non-LTO) compilation. This means that if your build process
-was mixing languages before, all you need to add is @option{-flto} to
+should use the same link command options as when mixing languages in a
+regular (non-LTO) compilation; all you need to add is @option{-flto} to
all the compile and link commands.
-If LTO encounters objects with C linkage declared with incompatible
-types in separate translation units to be linked together (undefined
-behavior according to ISO C99 6.2.7), a non-fatal diagnostic may be
-issued. The behavior is still undefined at runtime.
-
If object files containing GIMPLE bytecode are stored in a library archive, say
@file{libfoo.a}, it is possible to extract and use them in an LTO link if you
-are using a linker with linker plugin support. To enable this feature, use
-the flag @option{-fuse-linker-plugin} at link-time:
+are using a linker with plugin support. To enable this feature, use
+the flag @option{-fuse-linker-plugin} at link time:
@smallexample
gcc -o myprog -O2 -flto -fuse-linker-plugin a.o b.o -lfoo
@end smallexample
-With the linker plugin enabled, the linker will extract the needed
-GIMPLE files from @file{libfoo.a} and pass them on to the running GCC
+With the linker plugin enabled, the linker extracts the needed
+GIMPLE files from @file{libfoo.a} and passes them on to the running GCC
to make them part of the aggregated GIMPLE image to be optimized.
-If you are not using a linker with linker plugin support and/or do not
-enable linker plugin then the objects inside @file{libfoo.a}
-will be extracted and linked as usual, but they will not participate
+If you are not using a linker with plugin support and/or do not
+enable the linker plugin, then the objects inside @file{libfoo.a}
+are extracted and linked as usual, but they do not participate
in the LTO optimization process.
-Link time optimizations do not require the presence of the whole program to
+Link-time optimizations do not require the presence of the whole program to
operate. If the program does not require any symbols to be exported, it is
-possible to combine @option{-flto} and with @option{-fwhole-program} to allow
+possible to combine @option{-flto} and @option{-fwhole-program} to allow
the interprocedural optimizers to use more aggressive assumptions which may
lead to improved optimization opportunities.
Use of @option{-fwhole-program} is not needed when linker plugin is
active (see @option{-fuse-linker-plugin}).
-Regarding portability: the current implementation of LTO makes no
-attempt at generating bytecode that can be ported between different
+The current implementation of LTO makes no
+attempt to generate bytecode that is portable between different
types of hosts. The bytecode files are versioned and there is a
strict version check, so bytecode files generated in one version of
GCC will not work with an older/newer version of GCC.
-Link time optimization does not play well with generating debugging
+Link-time optimization does not work well with generation of debugging
information. Combining @option{-flto} with
@option{-g} is currently experimental and expected to produce wrong
results.
@@ -7968,15 +7962,15 @@ used. The default value for @var{n} is 1.
You can also specify @option{-flto=jobserver} to use GNU make's
job server mode to determine the number of parallel jobs. This
is useful when the Makefile calling GCC is already executing in parallel.
-The parent Makefile will need a @samp{+} prepended to the command recipe
-for this to work. This will likely only work if @env{MAKE} is
+You must prepend a @samp{+} to the command recipe in the parent Makefile
+for this to work. This option likely only works if @env{MAKE} is
GNU make.
This option is disabled by default.
@item -flto-partition=@var{alg}
@opindex flto-partition
-Specify the partitioning algorithm used by the link time optimizer.
+Specify the partitioning algorithm used by the link-time optimizer.
The value is either @code{1to1} to specify a partitioning mirroring
the original source files or @code{balanced} to specify partitioning
into equally sized chunks (whenever possible). Specifying @code{none}
@@ -7993,27 +7987,29 @@ given, a default balanced compression setting is used.
@item -flto-report
Prints a report with internal details on the workings of the link-time
-optimizer. The contents of this report vary from version to version,
-it is meant to be useful to GCC developers when processing object
+optimizer. The contents of this report vary from version to version.
+It is meant to be useful to GCC developers when processing object
files in LTO mode (via @option{-flto}).
Disabled by default.
@item -fuse-linker-plugin
-Enables the use of linker plugin during link time optimization. This option
-relies on the linker plugin support in linker that is available in gold
+Enables the use of a linker plugin during link-time optimization. This
+option relies on the linker plugin support in linker that is available in gold
or in GNU ld 2.21 or newer.
-This option enables the extraction of object files with GIMPLE bytecode out of
-library archives. This improves the quality of optimization by exposing more
-code the the link time optimizer. This information specify what symbols
-can be accessed externally (by non-LTO object or during dynamic linking).
-Resulting code quality improvements on binaries (and shared libraries that do
-use hidden visibility) is similar to @code{-fwhole-program}. See
-@option{-flto} for a description on the effect of this flag and how to use it.
+This option enables the extraction of object files with GIMPLE bytecode out
+of library archives. This improves the quality of optimization by exposing
+more code to the link-time optimizer. This information specifies what
+symbols can be accessed externally (by non-LTO object or during dynamic
+linking). Resulting code quality improvements on binaries (and shared
+libraries that use hidden visibility) are similar to @code{-fwhole-program}.
+See @option{-flto} for a description of the effect of this flag and how to
+use it.
-Enabled by default when LTO support in GCC is enabled and GCC was compiled
-with a linker supporting plugins (GNU ld 2.21 or newer or gold).
+This option is enabled by default when LTO support in GCC is enabled
+and GCC was configured for use with
+a linker supporting plugins (GNU ld 2.21 or newer or gold).
@item -fcompare-elim
@opindex fcompare-elim
@@ -8162,6 +8158,20 @@ Do not promote static functions with always inline attribute in LIPO compilation
Enable printing of verbose information about dynamic inter-procedural optimizations.
This is used in conjunction with the @option{-fripa}.
+@item -fripa-peel-size-limit
+@opindex fripa-peel-size-limit
+Limit loop peeling of non-const non-FP loops in a LIPO compilation under estimates
+of a large code footprint. Enabled by default under @option{-fripa}. Code size
+estimation and thresholds are controlled by the @option{codesize-hotness-threshold}
+and @option{unrollpeel-codesize-threshold} parameters.
+
+@item -fripa-unroll-size-limit
+@opindex fripa-unroll-size-limit
+Limit loop unrolling of non-const non-FP loops in a LIPO compilation under estimates
+of a large code footprint. Enabled by default under @option{-fripa}. Code size
+estimation and thresholds are controlled by the @option{codesize-hotness-threshold}
+and @option{unrollpeel-codesize-threshold} parameters.
+
@item -fcallgraph-profiles-sections
@opindex fcallgraph-profiles-sections
Emit call graph edge profile counts in .note.callgraph.text sections. This is
@@ -8170,6 +8180,11 @@ section is created for each function. This section lists every callee and the
number of times it is called. The params variable
"note-cgraph-section-edge-threshold" can be used to only list edges above a
certain threshold.
+
+@item -frecord-gcc-switches-in-elf
+@opindex frecord-gcc-switches-in-elf
+Record the command line options in the .gnu.switches.text elf section for sample
+based LIPO to do module grouping.
@end table
The following options control compiler behavior regarding floating
@@ -8564,6 +8579,12 @@ If a guard check fails, an error message is printed and the program exits.
@opindex fstack-protector-all
Like @option{-fstack-protector} except that all functions are protected.
+@item -fstack-protector-strong
+@opindex fstack-protector-strong
+Like @option{-fstack-protector} but includes additional functions to be
+protected - those that have local array definitions, or have references to
+local frame addresses.
+
@item -fsection-anchors
@opindex fsection-anchors
Try to reduce the number of symbolic address calculations by using
@@ -8877,6 +8898,13 @@ hot loops. Its default value is 16.
@item max-completely-peel-loop-nest-depth
The maximum depth of a loop nest suitable for complete peeling.
+@item codesize-hotness-threshold
+The minimum profile count of basic blocks to look at when estimating
+the code size footprint of the call graph in a LIPO compile.
+
+@item unrollpeel-codesize-threshold
+Maximum LIPO code size footprint estimate for loop unrolling and peeling.
+
@item max-unswitch-insns
The maximum number of insns of an unswitched loop.
@@ -10888,6 +10916,117 @@ comply to the C standards, but it will provide you with smaller code
size.
@end table
+@subsubsection @code{EIND} and Devices with more than 128k Bytes of Flash
+
+Pointers in the implementation are 16 bits wide.
+The address of a function or label is represented as word address so
+that indirect jumps and calls can address any code address in the
+range of 64k words.
+
+In order to faciliate indirect jump on devices with more than 128k
+bytes of program memory space, there is a special function register called
+@code{EIND} that serves as most significant part of the target address
+when @code{EICALL} or @code{EIJMP} instructions are used.
+
+Indirect jumps and calls on these devices are handled as follows and
+are subject to some limitations:
+
+@itemize @bullet
+
+@item
+The compiler never sets @code{EIND}.
+
+@item
+The startup code from libgcc never sets @code{EIND}.
+Notice that startup code is a blend of code from libgcc and avr-libc.
+For the impact of avr-libc on @code{EIND}, see the
+@w{@uref{http://nongnu.org/avr-libc/user-manual,avr-libc user manual}}.
+
+@item
+The compiler uses @code{EIND} implicitely in @code{EICALL}/@code{EIJMP}
+instructions or might read @code{EIND} directly.
+
+@item
+The compiler assumes that @code{EIND} never changes during the startup
+code or run of the application. In particular, @code{EIND} is not
+saved/restored in function or interrupt service routine
+prologue/epilogue.
+
+@item
+It is legitimate for user-specific startup code to set up @code{EIND}
+early, for example by means of initialization code located in
+section @code{.init3}, and thus prior to general startup code that
+initializes RAM and calls constructors.
+
+@item
+For indirect calls to functions and computed goto, the linker will
+generate @emph{stubs}. Stubs are jump pads sometimes also called
+@emph{trampolines}. Thus, the indirect call/jump will jump to such a stub.
+The stub contains a direct jump to the desired address.
+
+@item
+Stubs will be generated automatically by the linker if
+the following two conditions are met:
+@itemize @minus
+
+@item The address of a label is taken by means of the @code{gs} modifier
+(short for @emph{generate stubs}) like so:
+@example
+LDI r24, lo8(gs(@var{func}))
+LDI r25, hi8(gs(@var{func}))
+@end example
+@item The final location of that label is in a code segment
+@emph{outside} the segment where the stubs are located.
+@end itemize
+
+@item
+The compiler will emit such @code{gs} modifiers for code labels in the
+following situations:
+@itemize @minus
+@item Taking address of a function or code label.
+@item Computed goto.
+@item If prologue-save function is used, see @option{-mcall-prologues}
+command line option.
+@item Switch/case dispatch tables. If you do not want such dispatch
+tables you can specify the @option{-fno-jump-tables} command line option.
+@item C and C++ constructors/destructors called during startup/shutdown.
+@item If the tools hit a @code{gs()} modifier explained above.
+@end itemize
+
+@item
+The default linker script is arranged for code with @code{EIND = 0}.
+If code is supposed to work for a setup with @code{EIND != 0}, a custom
+linker script has to be used in order to place the sections whose
+name start with @code{.trampolines} into the segment where @code{EIND}
+points to.
+
+@item
+Jumping to non-symbolic addresses like so is @emph{not} supported:
+
+@example
+int main (void)
+@{
+ /* Call function at word address 0x2 */
+ return ((int(*)(void)) 0x2)();
+@}
+@end example
+
+Instead, a stub has to be set up:
+
+@example
+int main (void)
+@{
+ extern int func_4 (void);
+
+ /* Call function at byte address 0x4 */
+ return func_4();
+@}
+@end example
+
+and the application be linked with @code{-Wl,--defsym,func_4=0x4}.
+Alternatively, @code{func_4} can be defined in the linker script.
+@end itemize
+
@node Blackfin Options
@subsection Blackfin Options
@cindex Blackfin Options
@@ -12585,6 +12724,10 @@ and SSE4.2 instruction set support.
@item corei7-avx
Intel Core i7 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, SSE4.2, AVX, AES and PCLMUL instruction set support.
+@item core-avx-i
+Intel Core CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3,
+SSE4.1, SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND and F16C instruction
+set support.
@item atom
Intel Atom CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3
instruction set support.
@@ -17625,6 +17768,11 @@ mode for all SPARC-V9 processors.
@opindex mno-vis
With @option{-mvis}, GCC generates code that takes advantage of the UltraSPARC
Visual Instruction Set extensions. The default is @option{-mno-vis}.
+
+@item -mfix-at697f
+@opindex mfix-at697f
+Enable the documented workaround for the single erratum of the Atmel AT697F
+processor (which corresponds to erratum #13 of the AT697E processor).
@end table
These @samp{-m} options are supported in addition to the above
diff --git a/gcc-4.6/gcc/doc/md.texi b/gcc-4.6/gcc/doc/md.texi
index 0890423c5..b659015a0 100644
--- a/gcc-4.6/gcc/doc/md.texi
+++ b/gcc-4.6/gcc/doc/md.texi
@@ -4641,8 +4641,9 @@ byte by byte in lexicographic order starting at the beginning of each
string. The instruction is not allowed to prefetch more than one byte
at a time since either string may end in the first byte and reading past
that may access an invalid page or segment and cause a fault. The
-effect of the instruction is to store a value in operand 0 whose sign
-indicates the result of the comparison.
+comparison terminates early if the fetched bytes are different or if
+they are equal to zero. The effect of the instruction is to store a
+value in operand 0 whose sign indicates the result of the comparison.
@cindex @code{cmpstr@var{m}} instruction pattern
@item @samp{cmpstr@var{m}}
@@ -4660,8 +4661,10 @@ The two memory blocks specified are compared byte by byte in lexicographic
order starting at the beginning of each string. The instruction is not allowed
to prefetch more than one byte at a time since either string may end in the
first byte and reading past that may access an invalid page or segment and
-cause a fault. The effect of the instruction is to store a value in operand 0
-whose sign indicates the result of the comparison.
+cause a fault. The comparison will terminate when the fetched bytes
+are different or if they are equal to zero. The effect of the
+instruction is to store a value in operand 0 whose sign indicates the
+result of the comparison.
@cindex @code{cmpmem@var{m}} instruction pattern
@item @samp{cmpmem@var{m}}
@@ -4669,9 +4672,10 @@ Block compare instruction, with five operands like the operands
of @samp{cmpstr@var{m}}. The two memory blocks specified are compared
byte by byte in lexicographic order starting at the beginning of each
block. Unlike @samp{cmpstr@var{m}} the instruction can prefetch
-any bytes in the two memory blocks. The effect of the instruction is
-to store a value in operand 0 whose sign indicates the result of the
-comparison.
+any bytes in the two memory blocks. Also unlike @samp{cmpstr@var{m}}
+the comparison will not stop if both bytes are zero. The effect of
+the instruction is to store a value in operand 0 whose sign indicates
+the result of the comparison.
@cindex @code{strlen@var{m}} instruction pattern
@item @samp{strlen@var{m}}
@@ -5510,7 +5514,7 @@ will be emitted, followed by a store of the value to the memory operand.
@cindex @code{stack_protect_set} instruction pattern
@item @samp{stack_protect_set}
-This pattern, if defined, moves a @code{Pmode} value from the memory
+This pattern, if defined, moves a @code{ptr_mode} value from the memory
in operand 1 to the memory in operand 0 without leaving the value in
a register afterward. This is to avoid leaking the value some place
that an attacker might use to rewrite the stack guard slot after
@@ -5521,7 +5525,7 @@ If this pattern is not defined, then a plain move pattern is generated.
@cindex @code{stack_protect_test} instruction pattern
@item @samp{stack_protect_test}
-This pattern, if defined, compares a @code{Pmode} value from the
+This pattern, if defined, compares a @code{ptr_mode} value from the
memory in operand 1 with the memory in operand 0 without leaving the
value in a register afterward and branches to operand 2 if the values
weren't equal.
diff --git a/gcc-4.6/gcc/doc/tm.texi b/gcc-4.6/gcc/doc/tm.texi
index f7c0cce85..cd2ad6de1 100644
--- a/gcc-4.6/gcc/doc/tm.texi
+++ b/gcc-4.6/gcc/doc/tm.texi
@@ -10927,6 +10927,16 @@ The result is another tree containing a simplified expression for the
call's result. If @var{ignore} is true the value will be ignored.
@end deftypefn
+@deftypefn {Target Hook} int TARGET_MVERSION_FUNCTION (tree @var{fndecl}, tree *@var{optimization_node_chain}, tree *@var{cond_func_decl})
+Check if a function needs to be multi-versioned to support variants of
+this architecture. @var{fndecl} is the declaration of the function.
+@end deftypefn
+
+@deftypefn {Target Hook} bool TARGET_SLOW_UNALIGNED_VECTOR_MEMOP (void)
+Return true if unaligned vector memory load/store is a slow operation
+on this target.
+@end deftypefn
+
@deftypefn {Target Hook} {const char *} TARGET_INVALID_WITHIN_DOLOOP (const_rtx @var{insn})
Take an instruction in @var{insn} and return NULL if it is valid within a
diff --git a/gcc-4.6/gcc/doc/tm.texi.in b/gcc-4.6/gcc/doc/tm.texi.in
index 40acf658c..2999fd526 100644
--- a/gcc-4.6/gcc/doc/tm.texi.in
+++ b/gcc-4.6/gcc/doc/tm.texi.in
@@ -10873,6 +10873,16 @@ The result is another tree containing a simplified expression for the
call's result. If @var{ignore} is true the value will be ignored.
@end deftypefn
+@hook TARGET_MVERSION_FUNCTION
+Check if a function needs to be multi-versioned to support variants of
+this architecture. @var{fndecl} is the declaration of the function.
+@end deftypefn
+
+@hook TARGET_SLOW_UNALIGNED_VECTOR_MEMOP
+Return true if unaligned vector memory load/store is a slow operation
+on this target.
+@end deftypefn
+
@hook TARGET_INVALID_WITHIN_DOLOOP
Take an instruction in @var{insn} and return NULL if it is valid within a
diff --git a/gcc-4.6/gcc/dwarf2out.c b/gcc-4.6/gcc/dwarf2out.c
index b78627bb8..675a68270 100644
--- a/gcc-4.6/gcc/dwarf2out.c
+++ b/gcc-4.6/gcc/dwarf2out.c
@@ -92,6 +92,7 @@ along with GCC; see the file COPYING3. If not see
#include "gimple.h"
#include "tree-pass.h"
#include "tree-flow.h"
+#include "l-ipo.h"
static void dwarf2out_source_line (unsigned int, const char *, int, bool);
static rtx last_var_location_insn;
@@ -4435,6 +4436,11 @@ typedef struct GTY(()) dw_loc_list_struct {
const char *section; /* Section this loclist is relative to */
dw_loc_descr_ref expr;
hashval_t hash;
+ /* True if all addresses in this and subsequent lists are known to be
+ resolved. */
+ bool resolved_addr;
+ /* True if this list has been replaced by dw_loc_next. */
+ bool replaced;
bool emitted;
} dw_loc_list_node;
@@ -6095,6 +6101,19 @@ typedef struct var_loc_list_def var_loc_list;
/* Table of decl location linked lists. */
static GTY ((param_is (var_loc_list))) htab_t decl_loc_table;
+/* A cached location list. */
+struct GTY (()) cached_dw_loc_list_def {
+ /* The DECL_UID of the decl that this entry describes. */
+ unsigned int decl_id;
+
+ /* The cached location list. */
+ dw_loc_list_ref loc_list;
+};
+typedef struct cached_dw_loc_list_def cached_dw_loc_list;
+
+/* Table of cached location lists. */
+static GTY ((param_is (cached_dw_loc_list))) htab_t cached_dw_loc_list_table;
+
/* A pointer to the base of a list of references to DIE's that
are uniquely identified by their tag, presence/absence of
children DIE's, and list of attribute/value pairs. */
@@ -6394,6 +6413,7 @@ static void output_comp_unit (dw_die_ref, int);
static void output_comdat_type_unit (comdat_type_node *);
static const char *dwarf2_name (tree, int);
static void add_pubname (tree, dw_die_ref);
+static void add_enumerator_pubname (const char *, const char *, dw_die_ref);
static void add_pubname_string (const char *, dw_die_ref);
static void add_pubtype (tree, dw_die_ref);
static void output_pubnames (VEC (pubname_entry,gc) *);
@@ -6443,7 +6463,7 @@ static void insert_int (HOST_WIDE_INT, unsigned, unsigned char *);
static void insert_double (double_int, unsigned char *);
static void insert_float (const_rtx, unsigned char *);
static rtx rtl_for_decl_location (tree);
-static bool add_location_or_const_value_attribute (dw_die_ref, tree,
+static bool add_location_or_const_value_attribute (dw_die_ref, tree, bool,
enum dwarf_attribute);
static bool tree_add_const_value_attribute (dw_die_ref, tree);
static bool tree_add_const_value_attribute_for_decl (dw_die_ref, tree);
@@ -6598,6 +6618,12 @@ static void gen_scheduled_generic_parms_dies (void);
#ifndef COLD_TEXT_SECTION_LABEL
#define COLD_TEXT_SECTION_LABEL "Ltext_cold"
#endif
+#ifndef DEBUG_PUBNAMES_SECTION_LABEL
+#define DEBUG_PUBNAMES_SECTION_LABEL "Ldebug_pubnames"
+#endif
+#ifndef DEBUG_PUBTYPES_SECTION_LABEL
+#define DEBUG_PUBTYPES_SECTION_LABEL "Ldebug_pubtypes"
+#endif
#ifndef DEBUG_LINE_SECTION_LABEL
#define DEBUG_LINE_SECTION_LABEL "Ldebug_line"
#endif
@@ -6631,6 +6657,8 @@ static char cold_end_label[MAX_ARTIFICIAL_LABEL_BYTES];
static char abbrev_section_label[MAX_ARTIFICIAL_LABEL_BYTES];
static char debug_info_section_label[MAX_ARTIFICIAL_LABEL_BYTES];
static char debug_line_section_label[MAX_ARTIFICIAL_LABEL_BYTES];
+static char debug_pubnames_section_label[MAX_ARTIFICIAL_LABEL_BYTES];
+static char debug_pubtypes_section_label[MAX_ARTIFICIAL_LABEL_BYTES];
static char macinfo_section_label[MAX_ARTIFICIAL_LABEL_BYTES];
static char loc_section_label[MAX_ARTIFICIAL_LABEL_BYTES];
static char ranges_section_label[2 * MAX_ARTIFICIAL_LABEL_BYTES];
@@ -8177,6 +8205,24 @@ lookup_decl_loc (const_tree decl)
htab_find_with_hash (decl_loc_table, decl, DECL_UID (decl));
}
+/* Returns a hash value for X (which really is a cached_dw_loc_list_list). */
+
+static hashval_t
+cached_dw_loc_list_table_hash (const void *x)
+{
+ return (hashval_t) ((const cached_dw_loc_list *) x)->decl_id;
+}
+
+/* Return nonzero if decl_id of cached_dw_loc_list X is the same as
+ UID of decl *Y. */
+
+static int
+cached_dw_loc_list_table_eq (const void *x, const void *y)
+{
+ return (((const cached_dw_loc_list *) x)->decl_id
+ == DECL_UID ((const_tree) y));
+}
+
/* Equate a DIE to a particular declaration. */
static void
@@ -9726,6 +9772,22 @@ is_cu_die (dw_die_ref c)
return c && c->die_tag == DW_TAG_compile_unit;
}
+/* Returns true iff C is a namespace DIE. */
+
+static inline bool
+is_namespace_die (dw_die_ref c)
+{
+ return c && c->die_tag == DW_TAG_namespace;
+}
+
+/* Returns true iff C is a class DIE. */
+
+static inline bool
+is_class_die (dw_die_ref c)
+{
+ return c && c->die_tag == DW_TAG_class_type;
+}
+
static char *
gen_internal_sym (const char *prefix)
{
@@ -10256,6 +10318,15 @@ break_out_comdat_types (dw_die_ref die)
type_node->root_die = unit;
type_node->next = comdat_type_list;
comdat_type_list = type_node;
+ if (targetm.want_debug_pub_sections)
+ {
+ /* FIXME: Should use add_AT_pubnamesptr. This works because most
+ targets don't care what the base section is. */
+ add_AT_lineptr (unit, DW_AT_GNU_pubnames,
+ debug_pubnames_section_label);
+ add_AT_lineptr (unit, DW_AT_GNU_pubtypes,
+ debug_pubtypes_section_label);
+ }
/* Generate the type signature. */
generate_type_signature (c, type_node);
@@ -10651,7 +10722,15 @@ size_of_die (dw_die_ref die)
size += size_of_sleb128 (AT_int (a));
break;
case dw_val_class_unsigned_const:
- size += constant_size (AT_unsigned (a));
+ {
+ int csize = constant_size (AT_unsigned (a));
+ if (dwarf_version == 3
+ && a->dw_attr == DW_AT_data_member_location
+ && csize >= 4)
+ size += size_of_uleb128 (AT_unsigned (a));
+ else
+ size += csize;
+ }
break;
case dw_val_class_const_double:
size += 2 * HOST_BITS_PER_WIDE_INT / HOST_BITS_PER_CHAR;
@@ -10921,8 +11000,16 @@ value_format (dw_attr_ref a)
case 2:
return DW_FORM_data2;
case 4:
+ /* In DWARF3 DW_AT_data_member_location with
+ DW_FORM_data4 or DW_FORM_data8 is a loclistptr, not
+ constant, so we need to use DW_FORM_udata if we need
+ a large constant. */
+ if (dwarf_version == 3 && a->dw_attr == DW_AT_data_member_location)
+ return DW_FORM_udata;
return DW_FORM_data4;
case 8:
+ if (dwarf_version == 3 && a->dw_attr == DW_AT_data_member_location)
+ return DW_FORM_udata;
return DW_FORM_data8;
default:
gcc_unreachable ();
@@ -11229,8 +11316,15 @@ output_die (dw_die_ref die)
break;
case dw_val_class_unsigned_const:
- dw2_asm_output_data (constant_size (AT_unsigned (a)),
- AT_unsigned (a), "%s", name);
+ {
+ int csize = constant_size (AT_unsigned (a));
+ if (dwarf_version == 3
+ && a->dw_attr == DW_AT_data_member_location
+ && csize >= 4)
+ dw2_asm_output_data_uleb128 (AT_unsigned (a), "%s", name);
+ else
+ dw2_asm_output_data (csize, AT_unsigned (a), "%s", name);
+ }
break;
case dw_val_class_const_double:
@@ -11574,16 +11668,35 @@ add_pubname_string (const char *str, dw_die_ref die)
static void
add_pubname (tree decl, dw_die_ref die)
{
- if (!GENERATE_MINIMUM_LINE_TABLE
- && targetm.want_debug_pub_sections
- && TREE_PUBLIC (decl))
+ if (!GENERATE_MINIMUM_LINE_TABLE && targetm.want_debug_pub_sections)
{
- const char *name = dwarf2_name (decl, 1);
- if (name)
- add_pubname_string (name, die);
+ if ((TREE_PUBLIC (decl) && !is_class_die (die->die_parent))
+ || is_cu_die (die->die_parent) || is_namespace_die (die->die_parent))
+ {
+ const char *name = dwarf2_name (decl, 1);
+ if (name)
+ add_pubname_string (name, die);
+ }
}
}
+/* Add an enumerator to the pubnames section. */
+
+static void
+add_enumerator_pubname (const char *scope_name, const char *sep, dw_die_ref die)
+{
+ const char *name;
+ pubname_entry e;
+
+ if (scope_name)
+ name = concat (scope_name, sep, get_AT_string (die, DW_AT_name), NULL);
+ else
+ name = xstrdup (get_AT_string (die, DW_AT_name));
+ e.name = name;
+ e.die = die;
+ VEC_safe_push (pubname_entry, gc, pubtype_table, &e);
+}
+
/* Add a new entry to .debug_pubtypes if appropriate. */
static void
@@ -11596,34 +11709,47 @@ add_pubtype (tree decl, dw_die_ref die)
e.name = NULL;
if ((TREE_PUBLIC (decl)
- || is_cu_die (die->die_parent))
+ || is_cu_die (die->die_parent) || is_namespace_die (die->die_parent))
&& (die->die_tag == DW_TAG_typedef || COMPLETE_TYPE_P (decl)))
{
- e.die = die;
+ tree scope = NULL;
+ const char *scope_name = NULL;
+ const char *sep = is_cxx () ? "::" : ".";
+ const char *name = NULL;
+
if (TYPE_P (decl))
- {
- if (TYPE_NAME (decl))
- {
- if (TREE_CODE (TYPE_NAME (decl)) == IDENTIFIER_NODE)
- e.name = IDENTIFIER_POINTER (TYPE_NAME (decl));
- else if (TREE_CODE (TYPE_NAME (decl)) == TYPE_DECL
- && DECL_NAME (TYPE_NAME (decl)))
- e.name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (decl)));
- else
- e.name = xstrdup ((const char *) get_AT_string (die, DW_AT_name));
- }
- }
+ name = type_tag (decl);
else
- {
- e.name = dwarf2_name (decl, 1);
- if (e.name)
- e.name = xstrdup (e.name);
- }
+ name = lang_hooks.dwarf_name (decl, 1);
/* If we don't have a name for the type, there's no point in adding
it to the table. */
- if (e.name && e.name[0] != '\0')
- VEC_safe_push (pubname_entry, gc, pubtype_table, &e);
+ if (name == NULL || name[0] == '\0')
+ return;
+
+ e.die = die;
+ e.name = xstrdup (name);
+
+ scope = TYPE_P (decl) ? TYPE_CONTEXT (decl) : NULL;
+ if (scope && TREE_CODE (scope) == NAMESPACE_DECL)
+ {
+ scope_name = lang_hooks.dwarf_name (scope, 1);
+ if (scope_name != NULL)
+ e.name = concat (scope_name, sep, e.name, NULL);
+ }
+ VEC_safe_push (pubname_entry, gc, pubtype_table, &e);
+
+ /* Although it might be more consistent to add the pubinfo for the
+ enumerators as their dies are created, they should only be added if the
+ enum type meets the criteria above. So rather than re-check the parent
+ enum type whenever an enumerator die is created, just output them all
+ here. */
+ if (die->die_tag == DW_TAG_enumeration_type)
+ {
+ dw_die_ref c;
+
+ FOR_EACH_CHILD (die, c, add_enumerator_pubname (scope_name, sep, c));
+ }
}
}
@@ -11637,6 +11763,18 @@ output_pubnames (VEC (pubname_entry, gc) * names)
unsigned long pubnames_length = size_of_pubnames (names);
pubname_ref pub;
+ if (!targetm.want_debug_pub_sections || !info_section_emitted)
+ return;
+ if (names == pubname_table)
+ {
+ switch_to_section (debug_pubnames_section);
+ ASM_OUTPUT_LABEL (asm_out_file, debug_pubnames_section_label);
+ }
+ else
+ {
+ switch_to_section (debug_pubtypes_section);
+ ASM_OUTPUT_LABEL (asm_out_file, debug_pubtypes_section_label);
+ }
if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4)
dw2_asm_output_data (4, 0xffffffff,
"Initial length escape value indicating 64-bit DWARF extension");
@@ -12774,6 +12912,7 @@ base_type_die (tree type)
add_AT_unsigned (base_type_result, DW_AT_byte_size,
int_size_in_bytes (type));
add_AT_unsigned (base_type_result, DW_AT_encoding, encoding);
+ add_pubtype (type, base_type_result);
return base_type_result;
}
@@ -14591,7 +14730,8 @@ loc_descriptor (rtx rtl, enum machine_mode mode,
up an entire register. For now, just assume that it is
legitimate to make the Dwarf info refer to the whole register which
contains the given subreg. */
- loc_result = loc_descriptor (SUBREG_REG (rtl), mode, initialized);
+ loc_result = loc_descriptor (SUBREG_REG (rtl),
+ GET_MODE (SUBREG_REG (rtl)), initialized);
break;
case REG:
@@ -16977,15 +17117,22 @@ fortran_common (tree decl, HOST_WIDE_INT *value)
these things can crop up in other ways also.) Note that one type of
constant value which can be passed into an inlined function is a constant
pointer. This can happen for example if an actual argument in an inlined
- function call evaluates to a compile-time constant address. */
+ function call evaluates to a compile-time constant address.
+
+ CACHE_P is true if it is worth caching the location list for DECL,
+ so that future calls can reuse it rather than regenerate it from scratch.
+ This is true for BLOCK_NONLOCALIZED_VARS in inlined subroutines,
+ since we will need to refer to them each time the function is inlined. */
static bool
-add_location_or_const_value_attribute (dw_die_ref die, tree decl,
+add_location_or_const_value_attribute (dw_die_ref die, tree decl, bool cache_p,
enum dwarf_attribute attr)
{
rtx rtl;
dw_loc_list_ref list;
var_loc_list *loc_list;
+ cached_dw_loc_list *cache;
+ void **slot;
if (TREE_CODE (decl) == ERROR_MARK)
return false;
@@ -17022,7 +17169,33 @@ add_location_or_const_value_attribute (dw_die_ref die, tree decl,
&& add_const_value_attribute (die, rtl))
return true;
}
- list = loc_list_from_tree (decl, decl_by_reference_p (decl) ? 0 : 2);
+ /* If this decl is from BLOCK_NONLOCALIZED_VARS, we might need its
+ list several times. See if we've already cached the contents. */
+ list = NULL;
+ if (loc_list == NULL || cached_dw_loc_list_table == NULL)
+ cache_p = false;
+ if (cache_p)
+ {
+ cache = (cached_dw_loc_list *)
+ htab_find_with_hash (cached_dw_loc_list_table, decl, DECL_UID (decl));
+ if (cache)
+ list = cache->loc_list;
+ }
+ if (list == NULL)
+ {
+ list = loc_list_from_tree (decl, decl_by_reference_p (decl) ? 0 : 2);
+ /* It is usually worth caching this result if the decl is from
+ BLOCK_NONLOCALIZED_VARS and if the list has at least two elements. */
+ if (cache_p && list && list->dw_loc_next)
+ {
+ slot = htab_find_slot_with_hash (cached_dw_loc_list_table, decl,
+ DECL_UID (decl), INSERT);
+ cache = ggc_alloc_cleared_cached_dw_loc_list ();
+ cache->decl_id = DECL_UID (decl);
+ cache->loc_list = list;
+ *slot = cache;
+ }
+ }
if (list)
{
add_AT_location_description (die, attr, list);
@@ -18721,7 +18894,7 @@ gen_formal_parameter_die (tree node, tree origin, bool emit_name_p,
equate_decl_number_to_die (node, parm_die);
if (! DECL_ABSTRACT (node_or_origin))
add_location_or_const_value_attribute (parm_die, node_or_origin,
- DW_AT_location);
+ node == NULL, DW_AT_location);
break;
@@ -18906,6 +19079,7 @@ dwarf2out_abstract_function (tree decl)
tree context;
int was_abstract;
htab_t old_decl_loc_table;
+ htab_t old_cached_dw_loc_list_table;
/* Make sure we have the actual abstract inline, not a clone. */
decl = DECL_ORIGIN (decl);
@@ -18920,6 +19094,8 @@ dwarf2out_abstract_function (tree decl)
get locations in abstract instantces. */
old_decl_loc_table = decl_loc_table;
decl_loc_table = NULL;
+ old_cached_dw_loc_list_table = cached_dw_loc_list_table;
+ cached_dw_loc_list_table = NULL;
/* Be sure we've emitted the in-class declaration DIE (if any) first, so
we don't get confused by DECL_ABSTRACT. */
@@ -18944,6 +19120,7 @@ dwarf2out_abstract_function (tree decl)
current_function_decl = save_fn;
decl_loc_table = old_decl_loc_table;
+ cached_dw_loc_list_table = old_cached_dw_loc_list_table;
pop_cfun ();
}
@@ -19728,9 +19905,8 @@ gen_variable_die (tree decl, tree origin, dw_die_ref context_die)
&& !TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl_or_origin)))
defer_location (decl_or_origin, var_die);
else
- add_location_or_const_value_attribute (var_die,
- decl_or_origin,
- DW_AT_location);
+ add_location_or_const_value_attribute (var_die, decl_or_origin,
+ decl == NULL, DW_AT_location);
add_pubname (decl_or_origin, var_die);
}
else
@@ -21035,6 +21211,8 @@ gen_namespace_die (tree decl, dw_die_ref context_die)
add_AT_die_ref (namespace_die, DW_AT_import, origin_die);
equate_decl_number_to_die (decl, namespace_die);
}
+ /* Bypass dwarf2_name's check for DECL_NAMELESS. */
+ add_pubname_string (lang_hooks.dwarf_name (decl, 1), namespace_die);
}
/* Generate Dwarf debug information for a decl described by DECL.
@@ -21399,7 +21577,48 @@ dwarf2out_imported_module_or_decl (tree decl, tree name, tree context,
void
dwarf2out_decl (tree decl)
{
- dw_die_ref context_die = comp_unit_die ();
+ dw_die_ref context_die;
+
+ /* In LIPO mode, we may output some functions whose type is defined
+ in another function that will not be output. This can result in
+ undefined location list symbols in the debug type info.
+ Here we disable the output of the type info for this case.
+ It is safe since this function and its debug info should never
+ be referenced. */
+ if (L_IPO_COMP_MODE)
+ {
+ tree decl_context, orig_decl;
+
+ decl_context = DECL_CONTEXT (decl);
+ while (decl_context &&
+ TREE_CODE (decl_context) != TRANSLATION_UNIT_DECL)
+ {
+ struct cgraph_node *node;
+
+ /* Refer to cgraph_mark_functions_to_output() in cgraphunit.c,
+ if cgraph_is_aux_decl_external() is true,
+ this function will not be output in LIPO mode. */
+ if (TREE_CODE (decl_context) == FUNCTION_DECL &&
+ TREE_PUBLIC (decl_context) &&
+ (node = cgraph_get_node (decl_context)) &&
+ cgraph_is_aux_decl_external (node))
+ return;
+
+ if (TYPE_P (decl_context))
+ {
+ decl_context = TYPE_CONTEXT (decl_context);
+ continue;
+ }
+
+ orig_decl = DECL_ORIGIN (decl_context);
+ while (orig_decl != DECL_ORIGIN (orig_decl))
+ orig_decl = DECL_ORIGIN (orig_decl);
+
+ decl_context = DECL_CONTEXT (orig_decl);
+ }
+ }
+
+ context_die = comp_unit_die ();
switch (TREE_CODE (decl))
{
@@ -21521,6 +21740,7 @@ dwarf2out_function_decl (tree decl)
dwarf2out_decl (decl);
htab_empty (decl_loc_table);
+ htab_empty (cached_dw_loc_list_table);
}
/* Output a marker (i.e. a label) for the beginning of the generated code for
@@ -22046,7 +22266,8 @@ dwarf2out_source_line (unsigned int line, const char *filename,
fprintf (asm_out_file, " is_stmt %d", is_stmt ? 1 : 0);
last_is_stmt = is_stmt;
}
- if (SUPPORTS_DISCRIMINATOR && discriminator != 0)
+ if (SUPPORTS_DISCRIMINATOR && discriminator != 0
+ && (dwarf_version >= 4 || !dwarf_strict))
fprintf (asm_out_file, " discriminator %d", discriminator);
fputc ('\n', asm_out_file);
@@ -22252,6 +22473,11 @@ dwarf2out_init (const char *filename ATTRIBUTE_UNUSED)
decl_loc_table = htab_create_ggc (10, decl_loc_table_hash,
decl_loc_table_eq, NULL);
+ /* Allocate the cached_dw_loc_list_table. */
+ cached_dw_loc_list_table
+ = htab_create_ggc (10, cached_dw_loc_list_table_hash,
+ cached_dw_loc_list_table_eq, NULL);
+
/* Allocate the initial hunk of the decl_scope_table. */
decl_scope_table = VEC_alloc (tree, gc, 256);
@@ -22319,6 +22545,10 @@ dwarf2out_init (const char *filename ATTRIBUTE_UNUSED)
ASM_GENERATE_INTERNAL_LABEL (debug_info_section_label,
DEBUG_INFO_SECTION_LABEL, 0);
+ ASM_GENERATE_INTERNAL_LABEL (debug_pubnames_section_label,
+ DEBUG_PUBNAMES_SECTION_LABEL, 0);
+ ASM_GENERATE_INTERNAL_LABEL (debug_pubtypes_section_label,
+ DEBUG_PUBTYPES_SECTION_LABEL, 0);
ASM_GENERATE_INTERNAL_LABEL (debug_line_section_label,
DEBUG_LINE_SECTION_LABEL, 0);
ASM_GENERATE_INTERNAL_LABEL (ranges_section_label,
@@ -22892,30 +23122,53 @@ resolve_addr (dw_die_ref die)
{
dw_die_ref c;
dw_attr_ref a;
- dw_loc_list_ref *curr;
+ dw_loc_list_ref *curr, *start, loc;
unsigned ix;
FOR_EACH_VEC_ELT (dw_attr_node, die->die_attr, ix, a)
switch (AT_class (a))
{
case dw_val_class_loc_list:
- curr = AT_loc_list_ptr (a);
- while (*curr)
+ start = curr = AT_loc_list_ptr (a);
+ loc = *curr;
+ gcc_assert (loc);
+ /* The same list can be referenced more than once. See if we have
+ already recorded the result from a previous pass. */
+ if (loc->replaced)
+ *curr = loc->dw_loc_next;
+ else if (!loc->resolved_addr)
{
- if (!resolve_addr_in_expr ((*curr)->expr))
+ /* As things stand, we do not expect or allow one die to
+ reference a suffix of another die's location list chain.
+ References must be identical or completely separate.
+ There is therefore no need to cache the result of this
+ pass on any list other than the first; doing so
+ would lead to unnecessary writes. */
+ while (*curr)
{
- dw_loc_list_ref next = (*curr)->dw_loc_next;
- if (next && (*curr)->ll_symbol)
+ gcc_assert (!(*curr)->replaced && !(*curr)->resolved_addr);
+ if (!resolve_addr_in_expr ((*curr)->expr))
{
- gcc_assert (!next->ll_symbol);
- next->ll_symbol = (*curr)->ll_symbol;
+ dw_loc_list_ref next = (*curr)->dw_loc_next;
+ if (next && (*curr)->ll_symbol)
+ {
+ gcc_assert (!next->ll_symbol);
+ next->ll_symbol = (*curr)->ll_symbol;
+ }
+ *curr = next;
}
- *curr = next;
+ else
+ curr = &(*curr)->dw_loc_next;
}
+ if (loc == *start)
+ loc->resolved_addr = 1;
else
- curr = &(*curr)->dw_loc_next;
+ {
+ loc->replaced = 1;
+ loc->dw_loc_next = *start;
+ }
}
- if (!AT_loc_list (a))
+ if (!*start)
{
remove_AT (die, a->dw_attr);
ix--;
@@ -23312,6 +23565,7 @@ optimize_location_lists (dw_die_ref die)
htab_delete (htab);
}
+
/* Output stuff that dwarf requires at the end of every file,
and generate the DWARF-2 debugging info. */
@@ -23344,6 +23598,7 @@ dwarf2out_finish (const char *filename)
add_location_or_const_value_attribute (
VEC_index (deferred_locations, deferred_locations_list, i)->die,
VEC_index (deferred_locations, deferred_locations_list, i)->variable,
+ false,
DW_AT_location);
}
@@ -23551,6 +23806,17 @@ dwarf2out_finish (const char *filename)
}
htab_delete (comdat_type_table);
+ /* Add the DW_AT_GNU_pubnames and DW_AT_GNU_pubtypes attributes. */
+ if (targetm.want_debug_pub_sections)
+ {
+ /* FIXME: Should use add_AT_pubnamesptr. This works because most targets
+ don't care what the base section is. */
+ add_AT_lineptr (comp_unit_die (), DW_AT_GNU_pubnames,
+ debug_pubnames_section_label);
+ add_AT_lineptr (comp_unit_die (), DW_AT_GNU_pubtypes,
+ debug_pubtypes_section_label);
+ }
+
/* Output the main compilation unit if non-empty or if .debug_macinfo
will be emitted. */
output_comp_unit (comp_unit_die (), debug_info_level >= DINFO_LEVEL_VERBOSE);
@@ -23571,42 +23837,12 @@ dwarf2out_finish (const char *filename)
output_location_lists (comp_unit_die ());
}
- /* Output public names table if necessary. */
- if (!VEC_empty (pubname_entry, pubname_table))
- {
- gcc_assert (info_section_emitted);
- switch_to_section (debug_pubnames_section);
- output_pubnames (pubname_table);
- }
-
- /* Output public types table if necessary. */
+ /* Output public names and types tables if necessary. */
+ output_pubnames (pubname_table);
/* ??? Only defined by DWARF3, but emitted by Darwin for DWARF2.
It shouldn't hurt to emit it always, since pure DWARF2 consumers
simply won't look for the section. */
- if (!VEC_empty (pubname_entry, pubtype_table))
- {
- bool empty = false;
-
- if (flag_eliminate_unused_debug_types)
- {
- /* The pubtypes table might be emptied by pruning unused items. */
- unsigned i;
- pubname_ref p;
- empty = true;
- FOR_EACH_VEC_ELT (pubname_entry, pubtype_table, i, p)
- if (p->die->die_offset != 0)
- {
- empty = false;
- break;
- }
- }
- if (!empty)
- {
- gcc_assert (info_section_emitted);
- switch_to_section (debug_pubtypes_section);
- output_pubnames (pubtype_table);
- }
- }
+ output_pubnames (pubtype_table);
/* Output direct and virtual call tables if necessary. */
if (!VEC_empty (dcall_entry, dcall_table))
diff --git a/gcc-4.6/gcc/expr.c b/gcc-4.6/gcc/expr.c
index 5cb5df7a2..3b1dcad5f 100644
--- a/gcc-4.6/gcc/expr.c
+++ b/gcc-4.6/gcc/expr.c
@@ -2191,6 +2191,111 @@ copy_blkmode_from_reg (rtx tgtblk, rtx srcreg, tree type)
return tgtblk;
}
+/* Copy BLKmode value SRC into a register of mode MODE. Return the
+ register if it contains any data, otherwise return null.
+
+ This is used on targets that return BLKmode values in registers. */
+
+rtx
+copy_blkmode_to_reg (enum machine_mode mode, tree src)
+{
+ int i, n_regs;
+ unsigned HOST_WIDE_INT bitpos, xbitpos, padding_correction = 0, bytes;
+ unsigned int bitsize;
+ rtx *dst_words, dst, x, src_word = NULL_RTX, dst_word = NULL_RTX;
+ enum machine_mode dst_mode;
+
+ gcc_assert (TYPE_MODE (TREE_TYPE (src)) == BLKmode);
+
+ x = expand_normal (src);
+
+ bytes = int_size_in_bytes (TREE_TYPE (src));
+ if (bytes == 0)
+ return NULL_RTX;
+
+ /* If the structure doesn't take up a whole number of words, see
+ whether the register value should be padded on the left or on
+ the right. Set PADDING_CORRECTION to the number of padding
+ bits needed on the left side.
+
+ In most ABIs, the structure will be returned at the least end of
+ the register, which translates to right padding on little-endian
+ targets and left padding on big-endian targets. The opposite
+ holds if the structure is returned at the most significant
+ end of the register. */
+ if (bytes % UNITS_PER_WORD != 0
+ && (targetm.calls.return_in_msb (TREE_TYPE (src))
+ ? !BYTES_BIG_ENDIAN
+ : BYTES_BIG_ENDIAN))
+ padding_correction = (BITS_PER_WORD - ((bytes % UNITS_PER_WORD)
+ * BITS_PER_UNIT));
+
+ n_regs = (bytes + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
+ dst_words = XALLOCAVEC (rtx, n_regs);
+ bitsize = MIN (TYPE_ALIGN (TREE_TYPE (src)), BITS_PER_WORD);
+
+ /* Copy the structure BITSIZE bits at a time. */
+ for (bitpos = 0, xbitpos = padding_correction;
+ bitpos < bytes * BITS_PER_UNIT;
+ bitpos += bitsize, xbitpos += bitsize)
+ {
+ /* We need a new destination pseudo each time xbitpos is
+ on a word boundary and when xbitpos == padding_correction
+ (the first time through). */
+ if (xbitpos % BITS_PER_WORD == 0
+ || xbitpos == padding_correction)
+ {
+ /* Generate an appropriate register. */
+ dst_word = gen_reg_rtx (word_mode);
+ dst_words[xbitpos / BITS_PER_WORD] = dst_word;
+
+ /* Clear the destination before we move anything into it. */
+ emit_move_insn (dst_word, CONST0_RTX (word_mode));
+ }
+
+ /* We need a new source operand each time bitpos is on a word
+ boundary. */
+ if (bitpos % BITS_PER_WORD == 0)
+ src_word = operand_subword_force (x, bitpos / BITS_PER_WORD, BLKmode);
+
+ /* Use bitpos for the source extraction (left justified) and
+ xbitpos for the destination store (right justified). */
+ store_bit_field (dst_word, bitsize, xbitpos % BITS_PER_WORD, word_mode,
+ extract_bit_field (src_word, bitsize,
+ bitpos % BITS_PER_WORD, 1, false,
+ NULL_RTX, word_mode, word_mode));
+ }
+
+ if (mode == BLKmode)
+ {
+ /* Find the smallest integer mode large enough to hold the
+ entire structure. */
+ for (mode = GET_CLASS_NARROWEST_MODE (MODE_INT);
+ mode != VOIDmode;
+ mode = GET_MODE_WIDER_MODE (mode))
+ /* Have we found a large enough mode? */
+ if (GET_MODE_SIZE (mode) >= bytes)
+ break;
+
+ /* A suitable mode should have been found. */
+ gcc_assert (mode != VOIDmode);
+ }
+
+ if (GET_MODE_SIZE (mode) < GET_MODE_SIZE (word_mode))
+ dst_mode = word_mode;
+ else
+ dst_mode = mode;
+ dst = gen_reg_rtx (dst_mode);
+
+ for (i = 0; i < n_regs; i++)
+ emit_move_insn (operand_subword (dst, i, 0, dst_mode), dst_words[i]);
+
+ if (mode != dst_mode)
+ dst = gen_lowpart (mode, dst);
+
+ return dst;
+}
+
/* Add a USE expression for REG to the (possibly empty) list pointed
to by CALL_FUSAGE. REG must denote a hard register. */
@@ -4393,7 +4498,9 @@ expand_assignment (tree to, tree from, bool nontemporal)
if (TREE_CODE (from) == CALL_EXPR && ! aggregate_value_p (from, from)
&& COMPLETE_TYPE_P (TREE_TYPE (from))
&& TREE_CODE (TYPE_SIZE (TREE_TYPE (from))) == INTEGER_CST
- && ! (((TREE_CODE (to) == VAR_DECL || TREE_CODE (to) == PARM_DECL)
+ && ! (((TREE_CODE (to) == VAR_DECL
+ || TREE_CODE (to) == PARM_DECL
+ || TREE_CODE (to) == RESULT_DECL)
&& REG_P (DECL_RTL (to)))
|| TREE_CODE (to) == SSA_NAME))
{
@@ -4439,12 +4546,15 @@ expand_assignment (tree to, tree from, bool nontemporal)
rtx temp;
push_temp_slots ();
- temp = expand_expr (from, NULL_RTX, GET_MODE (to_rtx), EXPAND_NORMAL);
+ if (REG_P (to_rtx) && TYPE_MODE (TREE_TYPE (from)) == BLKmode)
+ temp = copy_blkmode_to_reg (GET_MODE (to_rtx), from);
+ else
+ temp = expand_expr (from, NULL_RTX, GET_MODE (to_rtx), EXPAND_NORMAL);
if (GET_CODE (to_rtx) == PARALLEL)
emit_group_load (to_rtx, temp, TREE_TYPE (from),
int_size_in_bytes (TREE_TYPE (from)));
- else
+ else if (temp)
emit_move_insn (to_rtx, temp);
preserve_temp_slots (to_rtx);
@@ -6954,6 +7064,14 @@ expand_expr_addr_expr_1 (tree exp, rtx target, enum machine_mode tmode,
modifier == EXPAND_INITIALIZER
? EXPAND_INITIALIZER : EXPAND_CONST_ADDRESS);
+ if (TREE_ADDRESSABLE (exp)
+ && ! MEM_P (result)
+ && ! targetm.calls.allocate_stack_slots_for_args ())
+ {
+ error ("local frame unavailable (naked function?)");
+ return result;
+ }
+
/* If the DECL isn't in memory, then the DECL wasn't properly
marked TREE_ADDRESSABLE, which will be either a front-end
or a tree optimizer bug. */
@@ -8536,10 +8654,15 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
return temp;
}
- /* If the mode of DECL_RTL does not match that of the decl, it
- must be a promoted value. We return a SUBREG of the wanted mode,
- but mark it so that we know that it was already extended. */
- if (REG_P (decl_rtl) && GET_MODE (decl_rtl) != DECL_MODE (exp))
+ /* If the mode of DECL_RTL does not match that of the decl,
+ there are two cases: we are dealing with a BLKmode value
+ that is returned in a register, or we are dealing with
+ a promoted value. In the latter case, return a SUBREG
+ of the wanted mode, but mark it so that we know that it
+ was already extended. */
+ if (REG_P (decl_rtl)
+ && DECL_MODE (exp) != BLKmode
+ && GET_MODE (decl_rtl) != DECL_MODE (exp))
{
enum machine_mode pmode;
diff --git a/gcc-4.6/gcc/expr.h b/gcc-4.6/gcc/expr.h
index b6e6e6b0c..eff6db2b4 100644
--- a/gcc-4.6/gcc/expr.h
+++ b/gcc-4.6/gcc/expr.h
@@ -324,6 +324,8 @@ extern void emit_group_store (rtx, rtx, tree, int);
/* Copy BLKmode object from a set of registers. */
extern rtx copy_blkmode_from_reg (rtx, rtx, tree);
+extern rtx copy_blkmode_to_reg (enum machine_mode, tree);
+
/* Mark REG as holding a parameter for the next CALL_INSN. */
extern void use_reg (rtx *, rtx);
diff --git a/gcc-4.6/gcc/final.c b/gcc-4.6/gcc/final.c
index 44282c98d..da45e681f 100644
--- a/gcc-4.6/gcc/final.c
+++ b/gcc-4.6/gcc/final.c
@@ -4333,7 +4333,7 @@ debug_free_queue (void)
/* List the call graph profiled edges whise value is greater than
PARAM_NOTE_CGRAPH_SECTION_EDGE_THRESHOLD in the
- ".note.callgraph.text" section. */
+ "gnu.callgraph.text" section. */
static void
dump_cgraph_profiles (void)
{
@@ -4421,14 +4421,15 @@ rest_of_handle_final (void)
decl_fini_priority_lookup
(current_function_decl));
- /* With -fcgraph-section, add ".note.callgraph.text" section for storing
- profiling information. */
+ /* With -fcallgraph-profiles-sections, add ".gnu.callgraph.text" section
+ for storing profiling information. */
if (flag_callgraph_profiles_sections
&& flag_profile_use
- && cgraph_node (current_function_decl) != NULL)
+ && cgraph_node (current_function_decl) != NULL
+ && (cgraph_node (current_function_decl))->callees != NULL)
{
- flags = SECTION_DEBUG;
- asprintf (&profile_fnname, ".note.callgraph.text.%s", fnname);
+ flags = SECTION_DEBUG | SECTION_EXCLUDE;
+ asprintf (&profile_fnname, ".gnu.callgraph.text.%s", fnname);
switch_to_section (get_section (profile_fnname, flags, NULL));
fprintf (asm_out_file, "\t.string \"Function %s\"\n", fnname);
dump_cgraph_profiles ();
diff --git a/gcc-4.6/gcc/flag-types.h b/gcc-4.6/gcc/flag-types.h
index 430ac9380..02a13f403 100644
--- a/gcc-4.6/gcc/flag-types.h
+++ b/gcc-4.6/gcc/flag-types.h
@@ -204,4 +204,11 @@ enum vect_verbosity_levels {
MAX_VERBOSITY_LEVEL
};
+/* flag_opt_info verbosity levels. */
+enum opt_info_verbosity_levels {
+ OPT_INFO_NONE = 0,
+ OPT_INFO_MIN = 1,
+ OPT_INFO_MED = 2,
+ OPT_INFO_MAX = 3
+};
#endif /* ! GCC_FLAG_TYPES_H */
diff --git a/gcc-4.6/gcc/fortran/ChangeLog b/gcc-4.6/gcc/fortran/ChangeLog
index 2ec78b0b0..9a2d3fcda 100644
--- a/gcc-4.6/gcc/fortran/ChangeLog
+++ b/gcc-4.6/gcc/fortran/ChangeLog
@@ -1,3 +1,235 @@
+2012-01-01 Thomas König <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
+ PR fortran/51502
+ * expr.c (gfc_check_vardef_context): When determining
+ implicit pure status, also check for variable definition
+ context. Walk up namespaces until a procedure is
+ found to reset the implict pure attribute.
+ * resolve.c (gfc_implicit_pure): Walk up namespaces
+ until a procedure is found.
+
+2011-12-22 Toon Moene <toon@moene.org>
+
+ PR fortran/51310
+ * resolve.c (build_default_init_expr): Allow non-allocatable,
+ non-compile-time-constant-shape arrays to have a default
+ initializer.
+ * invoke.texi: Delete the restriction on automatic arrays not
+ being initialized by -finit-<type>=<constant>.
+
+2011-12-15 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/51550
+ PR fortran/47545
+ PR fortran/49050
+ PR fortran/51075
+ * resolve.c (resolve_fl_derived0): Print not-implemented error
+ for deferred-length character components.
+
+2011-12-11 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50923
+ * trans-decl.c (generate_local_decl): Set TREE_NO_WARNING only
+ if the front end has printed a warning.
+ (gfc_generate_function_code): Fix unset-result warning.
+
+2011-12-11 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/51338
+ Backport from trunk
+ * dependency.c (are_identical_variables): Handle case where
+ end fields of substring references are NULL.
+
+2011-12-08 Toon Moene <toon@moene.org>
+
+ PR fortran/51310
+ * invoke.texi: Itemize the cases for which
+ -finit-<type>=<constant> doesn't work.
+
+2011-12-08 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/51448
+ * fortran/trans-array.c (get_std_lbound): Fix handling of
+ conversion functions.
+
+2011-12-06 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/51435
+ * expr.c (gfc_has_default_initializer): Fix handling of
+ DT with initialized pointer components.
+
+2011-12-03 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50684
+ * check.c (variable_check): Fix intent(in) check.
+
+2011-11-25 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50408
+ * trans-decl.c (gfc_get_module_backend_decl): Also copy
+ ts.u.derived from the gsym if the ts.type is BT_CLASS.
+ (gfc_get_extern_function_decl): Copy also the backend_decl
+ for the symbol's ts.u.{derived,cl} from the gsym.
+ * trans-types.c (gfc_copy_dt_decls_ifequal): Directly
+ return if "from" and "to" are the same.
+
+2011-11-24 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/51218
+ * gfortran.dg/implicit_pure_1.f90: New.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-10-17 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/47023
+ * primary.c (match_kind_param): Detect ISO_C_BINDING kinds.
+ (get_kind): Pass on 'is_iso_c' flag.
+ (match_integer_constant,match_real_constant,match_logical_constant):
+ Set 'ts.is_c_interop'.
+
+2011-10-15 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/50570
+ * expr.c (gfc_check_vardef_context): Don't throw an error on
+ non-pointer assignments involving an intent(in) pointer dummy.
+
+2011-10-15 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50718
+ * gfortran.dg/pointer_check_11.f90: New.
+ * gfortran.dg/pointer_check_12.f90: New.
+
+2011-10-12 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/50659
+ * expr.c (replace_symbol): Only do replacement if the symbol is a dummy.
+
+2011-10-11 Tobias Burnus <burnus@net-b.de>
+ Janus Weil <janus@gcc.gnu.org>
+
+ * invoke.texi (-fwhole-file): Update wording since -fwhole-file
+ is now enabled by default.
+
+2011-10-11 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50273
+ * trans-common.c (translate_common): Fix -Walign-commons check.
+
+2011-10-07 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/50585
+ * interface.c (get_expr_storage_size): Check if 'length' component is
+ associated.
+
+ PR fortran/50625
+ * class.c (gfc_build_class_symbol): Fix whitespace.
+ * module.c (mio_symbol): Set 'class_ok' attribute.
+ * trans-decl.c (gfc_get_symbol_decl): Make sure the backend_decl has
+ been built for class symbols.
+
+2011-10-04 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/48706
+ * module.c (write_dt_extensions): Do not write extended types which
+ are local to a subroutine.
+
+2011-08-26 Mikael Morin <mikael.morin@gcc.gnu.org>
+
+ PR fortran/50050
+ * expr.c (gfc_free_shape): Do nothing if shape is NULL.
+ (free_expr0): Remove redundant NULL shape check.
+ * resolve.c (check_host_association): Ditto.
+ * trans-expr.c (gfc_trans_subarray_assign): Assert that shape is
+ non-NULL.
+ * trans-io.c (transfer_array_component): Ditto.
+
+2011-08-25 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50163
+ * check_init_expr (check_init_expr): Return when an error occured.
+
+2011-08-22 Mikael Morin <mikael.morin@gcc.gnu.org>
+
+ PR fortran/50050
+ * gfortran.h (gfc_clear_shape, gfc_free_shape): New prototypes.
+ * expr.c (gfc_clear_shape, gfc_free_shape): New functions.
+ (free_expr0): Re-use gfc_free_shape.
+ * trans-expr.c (gfc_trans_subarray_assign): Ditto.
+ * trans-io.c (transfer_array_component): Ditto.
+ * resolve.c (check_host_association): Ditto.
+ (gfc_expr_to_initialize): Don't force the rank value and free the shape
+ after updating the expression. Recalculate shape and rank.
+ (resolve_where_shape): Re-use gfc_clear_shape.
+ * array.c (gfc_array_ref_shape): Ditto.
+
+2011-08-22 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
+ PR fortran/50130
+ * resolve.c (resolve_array_ref): Don't calculate upper bound
+ if the stride is zero.
+
+2011-08-20 Mikael Morin <mikael.morin@sfr.fr>
+
+ PR fortran/50129
+ * parse.c (parse_where): Undo changes after emitting an error.
+
+2011-08-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/49792
+ * trans-expr.c (gfc_trans_assignment_1): Set OMPWS_SCALARIZER_WS
+ bit in ompws_flags only if loop.temp_ss is NULL, and clear it if
+ lhs needs reallocation.
+ * trans-openmp.c (gfc_trans_omp_workshare): Don't return early if
+ code is NULL, emit a barrier if workshare emitted no code at all
+ and NOWAIT clause isn't present.
+
+2011-08-05 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/49112
+ * resolve.c (resolve_structure_cons): Don't do the full dt resolution,
+ only call 'resolve_fl_derived0'.
+ (resolve_typebound_procedures): Resolve typebound procedures of
+ parent type.
+ (resolve_fl_derived0): New function, which does a part of the work
+ for 'resolve_fl_derived'.
+ (resolve_fl_derived): Call 'resolve_fl_derived0' and do some additional
+ things.
+
+2011-08-03 Daniel Kraft <d@domob.eu>
+
+ PR fortran/49885
+ * trans-array.c (gfc_trans_auto_array_allocation): Change
+ gfc_start_block to gfc_init_block to avoid spurious extra-scope.
+
+2011-07-30 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk.
+ PR fortran/48876
+ * expr.c (gfc_simplify_expr): If end of a string is less
+ than zero, set it to zero.
+
+2011-07-28 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/45586
+ * trans-types.c (gfc_get_derived_type): Ensure that pointer
+ component types are marked as nonrestricted.
+
+2011-07-23 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/49708
+ * resolve.c (resolve_allocate_expr): Fix diagnostics for pointers.
+
+2011-07-18 Mikael Morin <mikael.morin@sfr.fr>
+
+ PR fortran/49648
+ * resolve.c (resolve_symbol): Force resolution of function result's
+ array specification.
+
2011-07-11 Jakub Jelinek <jakub@redhat.com>
PR fortran/49698
diff --git a/gcc-4.6/gcc/fortran/array.c b/gcc-4.6/gcc/fortran/array.c
index 25658867a..8d431f2f7 100644
--- a/gcc-4.6/gcc/fortran/array.c
+++ b/gcc-4.6/gcc/fortran/array.c
@@ -2268,9 +2268,7 @@ gfc_array_ref_shape (gfc_array_ref *ar, mpz_t *shape)
}
cleanup:
- for (d--; d >= 0; d--)
- mpz_clear (shape[d]);
-
+ gfc_clear_shape (shape, d);
return FAILURE;
}
diff --git a/gcc-4.6/gcc/fortran/check.c b/gcc-4.6/gcc/fortran/check.c
index a5d528d0d..d82744400 100644
--- a/gcc-4.6/gcc/fortran/check.c
+++ b/gcc-4.6/gcc/fortran/check.c
@@ -485,10 +485,31 @@ variable_check (gfc_expr *e, int n, bool allow_proc)
&& (gfc_current_intrinsic_arg[n]->intent == INTENT_OUT
|| gfc_current_intrinsic_arg[n]->intent == INTENT_INOUT))
{
- gfc_error ("'%s' argument of '%s' intrinsic at %L cannot be INTENT(IN)",
- gfc_current_intrinsic_arg[n]->name, gfc_current_intrinsic,
- &e->where);
- return FAILURE;
+ gfc_ref *ref;
+ bool pointer = e->symtree->n.sym->ts.type == BT_CLASS
+ && CLASS_DATA (e->symtree->n.sym)
+ ? CLASS_DATA (e->symtree->n.sym)->attr.class_pointer
+ : e->symtree->n.sym->attr.pointer;
+
+ for (ref = e->ref; ref; ref = ref->next)
+ {
+ if (pointer && ref->type == REF_COMPONENT)
+ break;
+ if (ref->type == REF_COMPONENT
+ && ((ref->u.c.component->ts.type == BT_CLASS
+ && CLASS_DATA (ref->u.c.component)->attr.class_pointer)
+ || (ref->u.c.component->ts.type != BT_CLASS
+ && ref->u.c.component->attr.pointer)))
+ break;
+ }
+
+ if (!ref)
+ {
+ gfc_error ("'%s' argument of '%s' intrinsic at %L cannot be "
+ "INTENT(IN)", gfc_current_intrinsic_arg[n]->name,
+ gfc_current_intrinsic, &e->where);
+ return FAILURE;
+ }
}
if (e->expr_type == EXPR_VARIABLE
diff --git a/gcc-4.6/gcc/fortran/class.c b/gcc-4.6/gcc/fortran/class.c
index 572011f45..f64cc1b2a 100644
--- a/gcc-4.6/gcc/fortran/class.c
+++ b/gcc-4.6/gcc/fortran/class.c
@@ -188,7 +188,7 @@ gfc_build_class_symbol (gfc_typespec *ts, symbol_attribute *attr,
/* Class container has already been built. */
return SUCCESS;
- attr->class_ok = attr->dummy || attr->pointer || attr->allocatable;
+ attr->class_ok = attr->dummy || attr->pointer || attr->allocatable;
if (!attr->class_ok)
/* We can not build the class container yet. */
diff --git a/gcc-4.6/gcc/fortran/dependency.c b/gcc-4.6/gcc/fortran/dependency.c
index 58cfb65bc..49e47fb48 100644
--- a/gcc-4.6/gcc/fortran/dependency.c
+++ b/gcc-4.6/gcc/fortran/dependency.c
@@ -163,9 +163,19 @@ gfc_are_identical_variables (gfc_expr *e1, gfc_expr *e2)
break;
case REF_SUBSTRING:
- if (gfc_dep_compare_expr (r1->u.ss.start, r2->u.ss.start) != 0
- || gfc_dep_compare_expr (r1->u.ss.end, r2->u.ss.end) != 0)
+ if (gfc_dep_compare_expr (r1->u.ss.start, r2->u.ss.start) != 0)
return false;
+
+ /* If both are NULL, the end length compares equal, because we
+ are looking at the same variable. This can only happen for
+ assumed- or deferred-length character arguments. */
+
+ if (r1->u.ss.end == NULL && r2->u.ss.end == NULL)
+ break;
+
+ if (gfc_dep_compare_expr (r1->u.ss.end, r2->u.ss.end) != 0)
+ return false;
+
break;
default:
diff --git a/gcc-4.6/gcc/fortran/expr.c b/gcc-4.6/gcc/fortran/expr.c
index d9fb46567..d5784c5d3 100644
--- a/gcc-4.6/gcc/fortran/expr.c
+++ b/gcc-4.6/gcc/fortran/expr.c
@@ -396,6 +396,28 @@ gfc_copy_expr (gfc_expr *p)
}
+void
+gfc_clear_shape (mpz_t *shape, int rank)
+{
+ int i;
+
+ for (i = 0; i < rank; i++)
+ mpz_clear (shape[i]);
+}
+
+
+void
+gfc_free_shape (mpz_t **shape, int rank)
+{
+ if (*shape == NULL)
+ return;
+
+ gfc_clear_shape (*shape, rank);
+ gfc_free (*shape);
+ *shape = NULL;
+}
+
+
/* Workhorse function for gfc_free_expr() that frees everything
beneath an expression node, but not the node itself. This is
useful when we want to simplify a node and replace it with
@@ -404,8 +426,6 @@ gfc_copy_expr (gfc_expr *p)
static void
free_expr0 (gfc_expr *e)
{
- int n;
-
switch (e->expr_type)
{
case EXPR_CONSTANT:
@@ -474,13 +494,7 @@ free_expr0 (gfc_expr *e)
}
/* Free a shape array. */
- if (e->shape != NULL)
- {
- for (n = 0; n < e->rank; n++)
- mpz_clear (e->shape[n]);
-
- gfc_free (e->shape);
- }
+ gfc_free_shape (&e->shape, e->rank);
gfc_free_ref_list (e->ref);
@@ -1840,6 +1854,9 @@ gfc_simplify_expr (gfc_expr *p, int type)
if (p->ref && p->ref->u.ss.end)
gfc_extract_int (p->ref->u.ss.end, &end);
+ if (end < 0)
+ end = 0;
+
s = gfc_get_wide_string (end - start + 2);
memcpy (s, p->value.character.string + start,
(end - start) * sizeof (gfc_char_t));
@@ -2467,6 +2484,9 @@ check_init_expr (gfc_expr *e)
m = MATCH_ERROR;
}
+ if (m == MATCH_ERROR)
+ return FAILURE;
+
/* Try to scalarize an elemental intrinsic function that has an
array argument. */
isym = gfc_find_function (e->symtree->n.sym->name);
@@ -3659,6 +3679,8 @@ gfc_has_default_initializer (gfc_symbol *der)
if (!c->attr.pointer
&& gfc_has_default_initializer (c->ts.u.derived))
return true;
+ if (c->attr.pointer && c->initializer)
+ return true;
}
else
{
@@ -3669,6 +3691,7 @@ gfc_has_default_initializer (gfc_symbol *der)
return false;
}
+
/* Get an expression for a default initializer. */
gfc_expr *
@@ -4059,8 +4082,9 @@ gfc_expr_check_typed (gfc_expr* e, gfc_namespace* ns, bool strict)
return error_found ? FAILURE : SUCCESS;
}
-/* Walk an expression tree and replace all symbols with a corresponding symbol
- in the formal_ns of "sym". Needed for copying interfaces in PROCEDURE
+
+/* Walk an expression tree and replace all dummy symbols by the corresponding
+ symbol in the formal_ns of "sym". Needed for copying interfaces in PROCEDURE
statements. The boolean return value is required by gfc_traverse_expr. */
static bool
@@ -4069,14 +4093,12 @@ replace_symbol (gfc_expr *expr, gfc_symbol *sym, int *i ATTRIBUTE_UNUSED)
if ((expr->expr_type == EXPR_VARIABLE
|| (expr->expr_type == EXPR_FUNCTION
&& !gfc_is_intrinsic (expr->symtree->n.sym, 0, expr->where)))
- && expr->symtree->n.sym->ns == sym->ts.interface->formal_ns)
+ && expr->symtree->n.sym->ns == sym->ts.interface->formal_ns
+ && expr->symtree->n.sym->attr.dummy)
{
- gfc_symtree *stree;
- gfc_namespace *ns = sym->formal_ns;
- /* Don't use gfc_get_symtree as we prefer to fail badly if we don't find
- the symtree rather than create a new one (and probably fail later). */
- stree = gfc_find_symtree (ns ? ns->sym_root : gfc_current_ns->sym_root,
- expr->symtree->n.sym->name);
+ gfc_symtree *root = sym->formal_ns ? sym->formal_ns->sym_root
+ : gfc_current_ns->sym_root;
+ gfc_symtree *stree = gfc_find_symtree (root, expr->symtree->n.sym->name);
gcc_assert (stree);
stree->n.sym->attr = expr->symtree->n.sym->attr;
expr->symtree = stree;
@@ -4090,6 +4112,7 @@ gfc_expr_replace_symbols (gfc_expr *expr, gfc_symbol *dest)
gfc_traverse_expr (expr, dest, &replace_symbol, 0);
}
+
/* The following is analogous to 'replace_symbol', and needed for copying
interfaces for procedure pointer components. The argument 'sym' must formally
be a gfc_symbol, so that the function can be passed to gfc_traverse_expr.
@@ -4458,7 +4481,7 @@ gfc_check_vardef_context (gfc_expr* e, bool pointer, const char* context)
sym->name, context, &e->where);
return FAILURE;
}
- if (!pointer && !is_pointer)
+ if (!pointer && !is_pointer && !sym->attr.pointer)
{
if (context)
gfc_error ("Dummy argument '%s' with INTENT(IN) in variable"
@@ -4500,9 +4523,24 @@ gfc_check_vardef_context (gfc_expr* e, bool pointer, const char* context)
return FAILURE;
}
- if (!pointer && gfc_implicit_pure (NULL) && gfc_impure_variable (sym))
- gfc_current_ns->proc_name->attr.implicit_pure = 0;
+ if (!pointer && context && gfc_implicit_pure (NULL)
+ && gfc_impure_variable (sym))
+ {
+ gfc_namespace *ns;
+ gfc_symbol *sym;
+ for (ns = gfc_current_ns; ns; ns = ns->parent)
+ {
+ sym = ns->proc_name;
+ if (sym == NULL)
+ break;
+ if (sym->attr.flavor == FL_PROCEDURE)
+ {
+ sym->attr.implicit_pure = 0;
+ break;
+ }
+ }
+ }
/* Check variable definition context for associate-names. */
if (!pointer && sym->assoc)
{
diff --git a/gcc-4.6/gcc/fortran/gfortran.h b/gcc-4.6/gcc/fortran/gfortran.h
index 565426d4b..6199d8970 100644
--- a/gcc-4.6/gcc/fortran/gfortran.h
+++ b/gcc-4.6/gcc/fortran/gfortran.h
@@ -2692,6 +2692,8 @@ gfc_expr *gfc_get_int_expr (int, locus *, int);
gfc_expr *gfc_get_logical_expr (int, locus *, bool);
gfc_expr *gfc_get_iokind_expr (locus *, io_kind);
+void gfc_clear_shape (mpz_t *shape, int rank);
+void gfc_free_shape (mpz_t **shape, int rank);
void gfc_free_expr (gfc_expr *);
void gfc_replace_expr (gfc_expr *, gfc_expr *);
mpz_t *gfc_copy_shape (mpz_t *, int);
diff --git a/gcc-4.6/gcc/fortran/interface.c b/gcc-4.6/gcc/fortran/interface.c
index d68310b4b..eece7f45d 100644
--- a/gcc-4.6/gcc/fortran/interface.c
+++ b/gcc-4.6/gcc/fortran/interface.c
@@ -1838,7 +1838,7 @@ get_expr_storage_size (gfc_expr *e)
{
/* The string length is the substring length.
Set now to full string length. */
- if (ref->u.ss.length == NULL
+ if (!ref->u.ss.length || !ref->u.ss.length->length
|| ref->u.ss.length->length->expr_type != EXPR_CONSTANT)
return 0;
diff --git a/gcc-4.6/gcc/fortran/invoke.texi b/gcc-4.6/gcc/fortran/invoke.texi
index 9a286c074..9b5396234 100644
--- a/gcc-4.6/gcc/fortran/invoke.texi
+++ b/gcc-4.6/gcc/fortran/invoke.texi
@@ -163,7 +163,7 @@ and warnings}.
@item Code Generation Options
@xref{Code Gen Options,,Options for code generation conventions}.
@gccoptlist{-fno-automatic -ff2c -fno-underscoring @gol
--fwhole-file -fsecond-underscore @gol
+-fno-whole-file -fsecond-underscore @gol
-fbounds-check -fcheck-array-temporaries -fmax-array-constructor =@var{n} @gol
-fcheck=@var{<all|array-temps|bounds|do|mem|pointer|recursion>} @gol
-fcoarray=@var{<none|single>} -fmax-stack-var-size=@var{n} @gol
@@ -1206,19 +1206,22 @@ in the source, even if the names as seen by the linker are mangled to
prevent accidental linking between procedures with incompatible
interfaces.
-@item -fwhole-file
-@opindex @code{fwhole-file}
-By default, GNU Fortran parses, resolves and translates each procedure
-in a file separately. Using this option modifies this such that the
-whole file is parsed and placed in a single front-end tree. During
-resolution, in addition to all the usual checks and fixups, references
+@item -fno-whole-file
+@opindex @code{fno-whole-file}
+This flag causes the compiler to resolve and translate each procedure in
+a file separately.
+
+By default, the whole file is parsed and placed in a single front-end tree.
+During resolution, in addition to all the usual checks and fixups, references
to external procedures that are in the same file effect resolution of
-that procedure, if not already done, and a check of the interfaces. The
+that procedure, if not already done, and a check of the interfaces. The
dependences are resolved by changing the order in which the file is
translated into the backend tree. Thus, a procedure that is referenced
is translated before the reference and the duplication of backend tree
declarations eliminated.
+The @option{-fno-whole-file} option is deprecated and may lead to wrong code.
+
@item -fsecond-underscore
@opindex @code{fsecond-underscore}
@cindex underscore
@@ -1435,10 +1438,16 @@ initialization options are provided by the
the real and imaginary parts of local @code{COMPLEX} variables),
@option{-finit-logical=@var{<true|false>}}, and
@option{-finit-character=@var{n}} (where @var{n} is an ASCII character
-value) options. These options do not initialize components of derived
-type variables, nor do they initialize variables that appear in an
-@code{EQUIVALENCE} statement. (This limitation may be removed in
-future releases).
+value) options. These options do not initialize
+@itemize @bullet
+@item
+allocatable arrays
+@item
+components of derived type variables
+@item
+variables that appear in an @code{EQUIVALENCE} statement.
+@end itemize
+(These limitations may be removed in future releases).
Note that the @option{-finit-real=nan} option initializes @code{REAL}
and @code{COMPLEX} variables with a quiet NaN. For a signalling NaN
diff --git a/gcc-4.6/gcc/fortran/module.c b/gcc-4.6/gcc/fortran/module.c
index 78929791d..5fdf09127 100644
--- a/gcc-4.6/gcc/fortran/module.c
+++ b/gcc-4.6/gcc/fortran/module.c
@@ -3597,6 +3597,8 @@ mio_symbol (gfc_symbol *sym)
mio_symbol_attribute (&sym->attr);
mio_typespec (&sym->ts);
+ if (sym->ts.type == BT_CLASS)
+ sym->attr.class_ok = 1;
if (iomode == IO_OUTPUT)
mio_namespace_ref (&sym->formal_ns);
@@ -4810,6 +4812,9 @@ write_dt_extensions (gfc_symtree *st)
{
if (!gfc_check_symbol_access (st->n.sym))
return;
+ if (!(st->n.sym->ns && st->n.sym->ns->proc_name
+ && st->n.sym->ns->proc_name->attr.flavor == FL_MODULE))
+ return;
mio_lparen ();
mio_pool_string (&st->n.sym->name);
diff --git a/gcc-4.6/gcc/fortran/parse.c b/gcc-4.6/gcc/fortran/parse.c
index d659680ee..3ff9527cd 100644
--- a/gcc-4.6/gcc/fortran/parse.c
+++ b/gcc-4.6/gcc/fortran/parse.c
@@ -2667,6 +2667,7 @@ parse_where_block (void)
{
gfc_error ("ELSEWHERE statement at %C follows previous "
"unmasked ELSEWHERE");
+ reject_statement ();
break;
}
diff --git a/gcc-4.6/gcc/fortran/primary.c b/gcc-4.6/gcc/fortran/primary.c
index 22cfbc2d2..7a8e9e14e 100644
--- a/gcc-4.6/gcc/fortran/primary.c
+++ b/gcc-4.6/gcc/fortran/primary.c
@@ -32,16 +32,20 @@ int matching_actual_arglist = 0;
/* Matches a kind-parameter expression, which is either a named
symbolic constant or a nonnegative integer constant. If
- successful, sets the kind value to the correct integer. */
+ successful, sets the kind value to the correct integer.
+ The argument 'is_iso_c' signals whether the kind is an ISO_C_BINDING
+ symbol like e.g. 'c_int'. */
static match
-match_kind_param (int *kind)
+match_kind_param (int *kind, int *is_iso_c)
{
char name[GFC_MAX_SYMBOL_LEN + 1];
gfc_symbol *sym;
const char *p;
match m;
+ *is_iso_c = 0;
+
m = gfc_match_small_literal_int (kind, NULL);
if (m != MATCH_NO)
return m;
@@ -56,6 +60,8 @@ match_kind_param (int *kind)
if (sym == NULL)
return MATCH_NO;
+ *is_iso_c = sym->attr.is_iso_c;
+
if (sym->attr.flavor != FL_PARAMETER)
return MATCH_NO;
@@ -77,20 +83,24 @@ match_kind_param (int *kind)
/* Get a trailing kind-specification for non-character variables.
Returns:
- the integer kind value or:
- -1 if an error was generated
- -2 if no kind was found */
+ * the integer kind value or
+ * -1 if an error was generated,
+ * -2 if no kind was found.
+ The argument 'is_iso_c' signals whether the kind is an ISO_C_BINDING
+ symbol like e.g. 'c_int'. */
static int
-get_kind (void)
+get_kind (int *is_iso_c)
{
int kind;
match m;
+ *is_iso_c = 0;
+
if (gfc_match_char ('_') != MATCH_YES)
return -2;
- m = match_kind_param (&kind);
+ m = match_kind_param (&kind, is_iso_c);
if (m == MATCH_NO)
gfc_error ("Missing kind-parameter at %C");
@@ -188,7 +198,7 @@ match_digits (int signflag, int radix, char *buffer)
static match
match_integer_constant (gfc_expr **result, int signflag)
{
- int length, kind;
+ int length, kind, is_iso_c;
locus old_loc;
char *buffer;
gfc_expr *e;
@@ -208,7 +218,7 @@ match_integer_constant (gfc_expr **result, int signflag)
match_digits (signflag, 10, buffer);
- kind = get_kind ();
+ kind = get_kind (&is_iso_c);
if (kind == -2)
kind = gfc_default_integer_kind;
if (kind == -1)
@@ -221,6 +231,7 @@ match_integer_constant (gfc_expr **result, int signflag)
}
e = gfc_convert_integer (buffer, kind, 10, &gfc_current_locus);
+ e->ts.is_c_interop = is_iso_c;
if (gfc_range_check (e) != ARITH_OK)
{
@@ -473,7 +484,7 @@ backup:
static match
match_real_constant (gfc_expr **result, int signflag)
{
- int kind, count, seen_dp, seen_digits;
+ int kind, count, seen_dp, seen_digits, is_iso_c;
locus old_loc, temp_loc;
char *p, *buffer, c, exp_char;
gfc_expr *e;
@@ -611,7 +622,7 @@ done:
c = gfc_next_ascii_char ();
}
- kind = get_kind ();
+ kind = get_kind (&is_iso_c);
if (kind == -1)
goto cleanup;
@@ -665,6 +676,7 @@ done:
e = gfc_convert_real (buffer, kind, &gfc_current_locus);
if (negate)
mpfr_neg (e->value.real, e->value.real, GFC_RND_MODE);
+ e->ts.is_c_interop = is_iso_c;
switch (gfc_range_check (e))
{
@@ -1102,13 +1114,13 @@ static match
match_logical_constant (gfc_expr **result)
{
gfc_expr *e;
- int i, kind;
+ int i, kind, is_iso_c;
i = match_logical_constant_string ();
if (i == -1)
return MATCH_NO;
- kind = get_kind ();
+ kind = get_kind (&is_iso_c);
if (kind == -1)
return MATCH_ERROR;
if (kind == -2)
@@ -1121,7 +1133,7 @@ match_logical_constant (gfc_expr **result)
}
e = gfc_get_logical_expr (kind, &gfc_current_locus, i);
- e->ts.is_c_interop = 0;
+ e->ts.is_c_interop = is_iso_c;
e->ts.is_iso_c = 0;
*result = e;
diff --git a/gcc-4.6/gcc/fortran/resolve.c b/gcc-4.6/gcc/fortran/resolve.c
index 0b7a75324..84753b242 100644
--- a/gcc-4.6/gcc/fortran/resolve.c
+++ b/gcc-4.6/gcc/fortran/resolve.c
@@ -950,6 +950,9 @@ resolve_contained_functions (gfc_namespace *ns)
}
+static gfc_try resolve_fl_derived0 (gfc_symbol *sym);
+
+
/* Resolve all of the elements of a structure constructor and make sure that
the types are correct. The 'init' flag indicates that the given
constructor is an initializer. */
@@ -965,7 +968,7 @@ resolve_structure_cons (gfc_expr *expr, int init)
t = SUCCESS;
if (expr->ts.type == BT_DERIVED)
- resolve_symbol (expr->ts.u.derived);
+ resolve_fl_derived0 (expr->ts.u.derived);
cons = gfc_constructor_first (expr->value.constructor);
/* A constructor may have references if it is the result of substituting a
@@ -3129,10 +3132,10 @@ resolve_function (gfc_expr *expr)
"procedure within a PURE procedure", name, &expr->where);
t = FAILURE;
}
- }
- if (!pure_function (expr, &name) && name && gfc_implicit_pure (NULL))
- gfc_current_ns->proc_name->attr.implicit_pure = 0;
+ if (gfc_implicit_pure (NULL))
+ gfc_current_ns->proc_name->attr.implicit_pure = 0;
+ }
/* Functions without the RECURSIVE attribution are not allowed to
* call themselves. */
@@ -3192,6 +3195,9 @@ pure_subroutine (gfc_code *c, gfc_symbol *sym)
else if (gfc_pure (NULL))
gfc_error ("Subroutine call to '%s' at %L is not PURE", sym->name,
&c->loc);
+
+ if (gfc_implicit_pure (NULL))
+ gfc_current_ns->proc_name->attr.implicit_pure = 0;
}
@@ -4552,10 +4558,11 @@ resolve_array_ref (gfc_array_ref *ar)
/* Fill in the upper bound, which may be lower than the
specified one for something like a(2:10:5), which is
identical to a(2:7:5). Only relevant for strides not equal
- to one. */
+ to one. Don't try a division by zero. */
if (ar->dimen_type[i] == DIMEN_RANGE
&& ar->stride[i] != NULL && ar->stride[i]->expr_type == EXPR_CONSTANT
- && mpz_cmp_si (ar->stride[i]->value.integer, 1L) != 0)
+ && mpz_cmp_si (ar->stride[i]->value.integer, 1L) != 0
+ && mpz_cmp_si (ar->stride[i]->value.integer, 0L) != 0)
{
mpz_t size, end;
@@ -5180,13 +5187,7 @@ check_host_association (gfc_expr *e)
&& sym->attr.contained)
{
/* Clear the shape, since it might not be valid. */
- if (e->shape != NULL)
- {
- for (n = 0; n < e->rank; n++)
- mpz_clear (e->shape[n]);
-
- gfc_free (e->shape);
- }
+ gfc_free_shape (&e->shape, e->rank);
/* Give the expression the right symtree! */
gfc_find_sym_tree (e->symtree->name, NULL, 1, &st);
@@ -6530,10 +6531,13 @@ gfc_expr_to_initialize (gfc_expr *e)
for (i = 0; i < ref->u.ar.dimen; i++)
ref->u.ar.start[i] = ref->u.ar.end[i] = ref->u.ar.stride[i] = NULL;
- result->rank = ref->u.ar.dimen;
break;
}
+ gfc_free_shape (&result->shape, result->rank);
+
+ /* Recalculate rank, shape, etc. */
+ gfc_resolve_expr (result);
return result;
}
@@ -6831,7 +6835,7 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code)
gfc_find_derived_vtab (ts.u.derived);
}
- if (pointer || (dimension == 0 && codimension == 0))
+ if (dimension == 0 && codimension == 0)
goto success;
/* Make sure the last reference node is an array specifiction. */
@@ -8321,11 +8325,8 @@ ignore:
result = SUCCESS;
over:
- for (i--; i >= 0; i--)
- {
- mpz_clear (shape[i]);
- mpz_clear (shape2[i]);
- }
+ gfc_clear_shape (shape, i);
+ gfc_clear_shape (shape2, i);
return result;
}
@@ -9689,7 +9690,7 @@ build_default_init_expr (gfc_symbol *sym)
int i;
/* These symbols should never have a default initialization. */
- if ((sym->attr.dimension && !gfc_is_compile_time_shape (sym->as))
+ if (sym->attr.allocatable
|| sym->attr.external
|| sym->attr.dummy
|| sym->attr.pointer
@@ -11242,9 +11243,14 @@ static gfc_try
resolve_typebound_procedures (gfc_symbol* derived)
{
int op;
+ gfc_symbol* super_type;
if (!derived->f2k_derived || !derived->f2k_derived->tb_sym_root)
return SUCCESS;
+
+ super_type = gfc_get_derived_super_type (derived);
+ if (super_type)
+ resolve_typebound_procedures (super_type);
resolve_bindings_derived = derived;
resolve_bindings_result = SUCCESS;
@@ -11356,28 +11362,17 @@ ensure_not_abstract (gfc_symbol* sub, gfc_symbol* ancestor)
}
-/* Resolve the components of a derived type. */
+/* Resolve the components of a derived type. This does not have to wait until
+ resolution stage, but can be done as soon as the dt declaration has been
+ parsed. */
static gfc_try
-resolve_fl_derived (gfc_symbol *sym)
+resolve_fl_derived0 (gfc_symbol *sym)
{
gfc_symbol* super_type;
gfc_component *c;
super_type = gfc_get_derived_super_type (sym);
-
- if (sym->attr.is_class && sym->ts.u.derived == NULL)
- {
- /* Fix up incomplete CLASS symbols. */
- gfc_component *data = gfc_find_component (sym, "_data", true, true);
- gfc_component *vptr = gfc_find_component (sym, "_vptr", true, true);
- if (vptr->ts.u.derived == NULL)
- {
- gfc_symbol *vtab = gfc_find_derived_vtab (data->ts.u.derived);
- gcc_assert (vtab);
- vptr->ts.u.derived = vtab->ts.u.derived;
- }
- }
/* F2008, C432. */
if (super_type && sym->attr.coarray_comp && !super_type->attr.coarray_comp)
@@ -11389,7 +11384,7 @@ resolve_fl_derived (gfc_symbol *sym)
}
/* Ensure the extended type gets resolved before we do. */
- if (super_type && resolve_fl_derived (super_type) == FAILURE)
+ if (super_type && resolve_fl_derived0 (super_type) == FAILURE)
return FAILURE;
/* An ABSTRACT type must be extensible. */
@@ -11402,6 +11397,14 @@ resolve_fl_derived (gfc_symbol *sym)
for (c = sym->components; c != NULL; c = c->next)
{
+ /* See PRs 51550, 47545, 48654, 49050, 51075 - and 45170. */
+ if (c->ts.type == BT_CHARACTER && c->ts.deferred)
+ {
+ gfc_error ("Deferred-length character component '%s' at %L is not "
+ "yet supported", c->name, &c->loc);
+ return FAILURE;
+ }
+
/* F2008, C442. */
if (c->attr.codimension /* FIXME: c->as check due to PR 43412. */
&& (!c->attr.allocatable || (c->as && c->as->type != AS_DEFERRED)))
@@ -11742,14 +11745,6 @@ resolve_fl_derived (gfc_symbol *sym)
return FAILURE;
}
- /* Resolve the type-bound procedures. */
- if (resolve_typebound_procedures (sym) == FAILURE)
- return FAILURE;
-
- /* Resolve the finalizer procedures. */
- if (gfc_resolve_finalizers (sym) == FAILURE)
- return FAILURE;
-
/* If this is a non-ABSTRACT type extending an ABSTRACT one, ensure that
all DEFERRED bindings are overridden. */
if (super_type && super_type->attr.abstract && !sym->attr.abstract
@@ -11764,6 +11759,42 @@ resolve_fl_derived (gfc_symbol *sym)
}
+/* The following procedure does the full resolution of a derived type,
+ including resolution of all type-bound procedures (if present). In contrast
+ to 'resolve_fl_derived0' this can only be done after the module has been
+ parsed completely. */
+
+static gfc_try
+resolve_fl_derived (gfc_symbol *sym)
+{
+ if (sym->attr.is_class && sym->ts.u.derived == NULL)
+ {
+ /* Fix up incomplete CLASS symbols. */
+ gfc_component *data = gfc_find_component (sym, "_data", true, true);
+ gfc_component *vptr = gfc_find_component (sym, "_vptr", true, true);
+ if (vptr->ts.u.derived == NULL)
+ {
+ gfc_symbol *vtab = gfc_find_derived_vtab (data->ts.u.derived);
+ gcc_assert (vtab);
+ vptr->ts.u.derived = vtab->ts.u.derived;
+ }
+ }
+
+ if (resolve_fl_derived0 (sym) == FAILURE)
+ return FAILURE;
+
+ /* Resolve the type-bound procedures. */
+ if (resolve_typebound_procedures (sym) == FAILURE)
+ return FAILURE;
+
+ /* Resolve the finalizer procedures. */
+ if (gfc_resolve_finalizers (sym) == FAILURE)
+ return FAILURE;
+
+ return SUCCESS;
+}
+
+
static gfc_try
resolve_fl_namelist (gfc_symbol *sym)
{
@@ -12076,6 +12107,8 @@ resolve_symbol (gfc_symbol *sym)
}
}
}
+ else if (mp_flag && sym->attr.flavor == FL_PROCEDURE && sym->attr.function)
+ gfc_resolve_array_spec (sym->result->as, false);
/* Assumed size arrays and assumed shape arrays must be dummy
arguments. Array-spec's of implied-shape should have been resolved to
@@ -12903,24 +12936,25 @@ gfc_pure (gfc_symbol *sym)
int
gfc_implicit_pure (gfc_symbol *sym)
{
- symbol_attribute attr;
+ gfc_namespace *ns;
if (sym == NULL)
{
- /* Check if the current namespace is implicit_pure. */
- sym = gfc_current_ns->proc_name;
- if (sym == NULL)
- return 0;
- attr = sym->attr;
- if (attr.flavor == FL_PROCEDURE
- && attr.implicit_pure && !attr.pure)
- return 1;
- return 0;
+ /* Check if the current procedure is implicit_pure. Walk up
+ the procedure list until we find a procedure. */
+ for (ns = gfc_current_ns; ns; ns = ns->parent)
+ {
+ sym = ns->proc_name;
+ if (sym == NULL)
+ return 0;
+
+ if (sym->attr.flavor == FL_PROCEDURE)
+ break;
+ }
}
-
- attr = sym->attr;
-
- return attr.flavor == FL_PROCEDURE && attr.implicit_pure && !attr.pure;
+
+ return sym->attr.flavor == FL_PROCEDURE && sym->attr.implicit_pure
+ && !sym->attr.pure;
}
diff --git a/gcc-4.6/gcc/fortran/trans-array.c b/gcc-4.6/gcc/fortran/trans-array.c
index 86de8ab27..a4be6e7b1 100644
--- a/gcc-4.6/gcc/fortran/trans-array.c
+++ b/gcc-4.6/gcc/fortran/trans-array.c
@@ -4722,7 +4722,7 @@ gfc_trans_auto_array_allocation (tree decl, gfc_symbol * sym,
gcc_assert (GFC_ARRAY_TYPE_P (type));
onstack = TREE_CODE (type) != POINTER_TYPE;
- gfc_start_block (&init);
+ gfc_init_block (&init);
/* Evaluate character string length. */
if (sym->ts.type == BT_CHARACTER
@@ -6772,7 +6772,16 @@ get_std_lbound (gfc_expr *expr, tree desc, int dim, bool assumed_size)
gfc_array_index_type, cond,
lbound, gfc_index_one_node);
}
- else if (expr->expr_type == EXPR_VARIABLE)
+
+ if (expr->expr_type == EXPR_FUNCTION)
+ {
+ /* A conversion function, so use the argument. */
+ gcc_assert (expr->value.function.isym
+ && expr->value.function.isym->conversion);
+ expr = expr->value.function.actual->expr;
+ }
+
+ if (expr->expr_type == EXPR_VARIABLE)
{
tmp = TREE_TYPE (expr->symtree->n.sym->backend_decl);
for (ref = expr->ref; ref; ref = ref->next)
@@ -6785,15 +6794,6 @@ get_std_lbound (gfc_expr *expr, tree desc, int dim, bool assumed_size)
}
return GFC_TYPE_ARRAY_LBOUND(tmp, dim);
}
- else if (expr->expr_type == EXPR_FUNCTION)
- {
- /* A conversion function, so use the argument. */
- expr = expr->value.function.actual->expr;
- if (expr->expr_type != EXPR_VARIABLE)
- return gfc_index_one_node;
- desc = TREE_TYPE (expr->symtree->n.sym->backend_decl);
- return get_std_lbound (expr, desc, dim, assumed_size);
- }
return gfc_index_one_node;
}
diff --git a/gcc-4.6/gcc/fortran/trans-common.c b/gcc-4.6/gcc/fortran/trans-common.c
index ad4ef066d..08c6f8fd9 100644
--- a/gcc-4.6/gcc/fortran/trans-common.c
+++ b/gcc-4.6/gcc/fortran/trans-common.c
@@ -1061,14 +1061,12 @@ translate_common (gfc_common_head *common, gfc_symbol *var_list)
HOST_WIDE_INT offset;
HOST_WIDE_INT current_offset;
unsigned HOST_WIDE_INT align;
- unsigned HOST_WIDE_INT max_align;
bool saw_equiv;
common_segment = NULL;
offset = 0;
current_offset = 0;
align = 1;
- max_align = 1;
saw_equiv = false;
/* Add symbols to the segment. */
@@ -1111,7 +1109,7 @@ translate_common (gfc_common_head *common, gfc_symbol *var_list)
if (gfc_option.flag_align_commons)
offset = align_segment (&align);
- if (offset & (max_align - 1))
+ if (offset)
{
/* The required offset conflicts with previous alignment
requirements. Insert padding immediately before this
@@ -1134,8 +1132,6 @@ translate_common (gfc_common_head *common, gfc_symbol *var_list)
/* Apply the offset to the new segments. */
apply_segment_offset (current_segment, offset);
current_offset += offset;
- if (max_align < align)
- max_align = align;
/* Add the new segments to the common block. */
common_segment = add_segments (common_segment, current_segment);
@@ -1155,11 +1151,11 @@ translate_common (gfc_common_head *common, gfc_symbol *var_list)
if (common_segment->offset != 0 && gfc_option.warn_align_commons)
{
if (strcmp (common->name, BLANK_COMMON_NAME))
- gfc_warning ("COMMON '%s' at %L requires %d bytes of padding at start; "
+ gfc_warning ("COMMON '%s' at %L requires %d bytes of padding; "
"reorder elements or use -fno-align-commons",
common->name, &common->where, (int)common_segment->offset);
else
- gfc_warning ("COMMON at %L requires %d bytes of padding at start; "
+ gfc_warning ("COMMON at %L requires %d bytes of padding; "
"reorder elements or use -fno-align-commons",
&common->where, (int)common_segment->offset);
}
diff --git a/gcc-4.6/gcc/fortran/trans-decl.c b/gcc-4.6/gcc/fortran/trans-decl.c
index 9add565d0..50f137287 100644
--- a/gcc-4.6/gcc/fortran/trans-decl.c
+++ b/gcc-4.6/gcc/fortran/trans-decl.c
@@ -677,7 +677,7 @@ gfc_get_module_backend_decl (gfc_symbol *sym)
}
else if (s->backend_decl)
{
- if (sym->ts.type == BT_DERIVED)
+ if (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS)
gfc_copy_dt_decls_ifequal (s->ts.u.derived, sym->ts.u.derived,
true);
else if (sym->ts.type == BT_CHARACTER)
@@ -1123,7 +1123,10 @@ gfc_get_symbol_decl (gfc_symbol * sym)
{
gfc_component *c = CLASS_DATA (sym);
if (!c->ts.u.derived->backend_decl)
- gfc_find_derived_vtab (c->ts.u.derived);
+ {
+ gfc_find_derived_vtab (c->ts.u.derived);
+ gfc_get_derived_type (sym->ts.u.derived);
+ }
}
/* All deferred character length procedures need to retain the backend
@@ -1599,6 +1602,11 @@ gfc_get_extern_function_decl (gfc_symbol * sym)
gfc_find_symbol (sym->name, gsym->ns, 0, &s);
if (s && s->backend_decl)
{
+ if (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS)
+ gfc_copy_dt_decls_ifequal (s->ts.u.derived, sym->ts.u.derived,
+ true);
+ else if (sym->ts.type == BT_CHARACTER)
+ sym->ts.u.cl->backend_decl = s->ts.u.cl->backend_decl;
sym->backend_decl = s->backend_decl;
return sym->backend_decl;
}
@@ -4176,10 +4184,16 @@ generate_local_decl (gfc_symbol * sym)
"declared INTENT(OUT) but was not set and "
"does not have a default initializer",
sym->name, &sym->declared_at);
+ if (sym->backend_decl != NULL_TREE)
+ TREE_NO_WARNING(sym->backend_decl) = 1;
}
else if (gfc_option.warn_unused_dummy_argument)
- gfc_warning ("Unused dummy argument '%s' at %L", sym->name,
+ {
+ gfc_warning ("Unused dummy argument '%s' at %L", sym->name,
&sym->declared_at);
+ if (sym->backend_decl != NULL_TREE)
+ TREE_NO_WARNING(sym->backend_decl) = 1;
+ }
}
/* Warn for unused variables, but not if they're inside a common
@@ -4224,11 +4238,6 @@ generate_local_decl (gfc_symbol * sym)
mark the symbol now, as well as in traverse_ns, to prevent
getting stuck in a circular dependency. */
sym->mark = 1;
-
- /* We do not want the middle-end to warn about unused parameters
- as this was already done above. */
- if (sym->attr.dummy && sym->backend_decl != NULL_TREE)
- TREE_NO_WARNING(sym->backend_decl) = 1;
}
else if (sym->attr.flavor == FL_PARAMETER)
{
@@ -4843,11 +4852,11 @@ gfc_generate_function_code (gfc_namespace * ns)
if (result == NULL_TREE)
{
/* TODO: move to the appropriate place in resolve.c. */
- if (warn_return_type && !sym->attr.referenced && sym == sym->result)
+ if (warn_return_type && sym == sym->result)
gfc_warning ("Return value of function '%s' at %L not set",
sym->name, &sym->declared_at);
-
- TREE_NO_WARNING(sym->backend_decl) = 1;
+ if (warn_return_type)
+ TREE_NO_WARNING(sym->backend_decl) = 1;
}
else
gfc_add_expr_to_block (&body, gfc_generate_return ());
diff --git a/gcc-4.6/gcc/fortran/trans-expr.c b/gcc-4.6/gcc/fortran/trans-expr.c
index 0487f75a0..773b2c62d 100644
--- a/gcc-4.6/gcc/fortran/trans-expr.c
+++ b/gcc-4.6/gcc/fortran/trans-expr.c
@@ -3326,10 +3326,16 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
else
goto end_pointer_check;
+ tmp = parmse.expr;
+
+ /* If the argument is passed by value, we need to strip the
+ INDIRECT_REF. */
+ if (!POINTER_TYPE_P (TREE_TYPE (parmse.expr)))
+ tmp = gfc_build_addr_expr (NULL_TREE, tmp);
cond = fold_build2_loc (input_location, EQ_EXPR,
- boolean_type_node, parmse.expr,
- fold_convert (TREE_TYPE (parmse.expr),
+ boolean_type_node, tmp,
+ fold_convert (TREE_TYPE (tmp),
null_pointer_node));
}
@@ -4309,10 +4315,8 @@ gfc_trans_subarray_assign (tree dest, gfc_component * cm, gfc_expr * expr)
gfc_add_block_to_block (&block, &loop.pre);
gfc_add_block_to_block (&block, &loop.post);
- for (n = 0; n < cm->as->rank; n++)
- mpz_clear (lss->shape[n]);
- gfc_free (lss->shape);
-
+ gcc_assert (lss->shape != NULL);
+ gfc_free_shape (&lss->shape, cm->as->rank);
gfc_cleanup_loop (&loop);
return gfc_finish_block (&block);
@@ -6033,10 +6037,6 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag,
rss = NULL;
if (lss != gfc_ss_terminator)
{
- /* Allow the scalarizer to workshare array assignments. */
- if (ompws_flags & OMPWS_WORKSHARE_FLAG)
- ompws_flags |= OMPWS_SCALARIZER_WS;
-
/* The assignment needs scalarization. */
lss_section = lss;
@@ -6092,6 +6092,10 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag,
gfc_mark_ss_chain_used (loop.temp_ss, 3);
}
+ /* Allow the scalarizer to workshare array assignments. */
+ if ((ompws_flags & OMPWS_WORKSHARE_FLAG) && loop.temp_ss == NULL)
+ ompws_flags |= OMPWS_SCALARIZER_WS;
+
/* Start the scalarized loop body. */
gfc_start_scalarized_body (&loop, &body);
}
@@ -6200,6 +6204,7 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr * expr2, bool init_flag,
&& !gfc_expr_attr (expr1).codimension
&& !gfc_is_coindexed (expr1))
{
+ ompws_flags &= ~OMPWS_SCALARIZER_WS;
tmp = gfc_alloc_allocatable_for_assignment (&loop, expr1, expr2);
if (tmp != NULL_TREE)
gfc_add_expr_to_block (&loop.code[expr1->rank - 1], tmp);
diff --git a/gcc-4.6/gcc/fortran/trans-io.c b/gcc-4.6/gcc/fortran/trans-io.c
index f6a783f38..53ff1f4a4 100644
--- a/gcc-4.6/gcc/fortran/trans-io.c
+++ b/gcc-4.6/gcc/fortran/trans-io.c
@@ -2005,10 +2005,8 @@ transfer_array_component (tree expr, gfc_component * cm, locus * where)
gfc_add_block_to_block (&block, &loop.pre);
gfc_add_block_to_block (&block, &loop.post);
- for (n = 0; n < cm->as->rank; n++)
- mpz_clear (ss->shape[n]);
- gfc_free (ss->shape);
-
+ gcc_assert (ss->shape != NULL);
+ gfc_free_shape (&ss->shape, cm->as->rank);
gfc_cleanup_loop (&loop);
return gfc_finish_block (&block);
diff --git a/gcc-4.6/gcc/fortran/trans-openmp.c b/gcc-4.6/gcc/fortran/trans-openmp.c
index 53eb99990..733bd10ed 100644
--- a/gcc-4.6/gcc/fortran/trans-openmp.c
+++ b/gcc-4.6/gcc/fortran/trans-openmp.c
@@ -1640,9 +1640,6 @@ gfc_trans_omp_workshare (gfc_code *code, gfc_omp_clauses *clauses)
pushlevel (0);
- if (!code)
- return build_empty_stmt (input_location);
-
gfc_start_block (&block);
pblock = &block;
@@ -1779,6 +1776,9 @@ gfc_trans_omp_workshare (gfc_code *code, gfc_omp_clauses *clauses)
else
poplevel (0, 0, 0);
+ if (IS_EMPTY_STMT (stmt) && !clauses->nowait)
+ stmt = gfc_trans_omp_barrier ();
+
ompws_flags = 0;
return stmt;
}
diff --git a/gcc-4.6/gcc/fortran/trans-types.c b/gcc-4.6/gcc/fortran/trans-types.c
index 258685e10..ca0789632 100644
--- a/gcc-4.6/gcc/fortran/trans-types.c
+++ b/gcc-4.6/gcc/fortran/trans-types.c
@@ -2092,6 +2092,9 @@ gfc_copy_dt_decls_ifequal (gfc_symbol *from, gfc_symbol *to,
gfc_component *to_cm;
gfc_component *from_cm;
+ if (from == to)
+ return 1;
+
if (from->backend_decl == NULL
|| !gfc_compare_derived_types (from, to))
return 0;
@@ -2329,6 +2332,9 @@ gfc_get_derived_type (gfc_symbol * derived)
&& !c->attr.proc_pointer)
field_type = build_pointer_type (field_type);
+ if (c->attr.pointer)
+ field_type = gfc_nonrestricted_type (field_type);
+
/* vtype fields can point to different types to the base type. */
if (c->ts.type == BT_DERIVED && c->ts.u.derived->attr.vtype)
field_type = build_pointer_type_for_mode (TREE_TYPE (field_type),
diff --git a/gcc-4.6/gcc/gcc.c b/gcc-4.6/gcc/gcc.c
index afc983735..b954ecbb0 100644
--- a/gcc-4.6/gcc/gcc.c
+++ b/gcc-4.6/gcc/gcc.c
@@ -776,7 +776,7 @@ static const char *cc1_options =
%{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}}\
%{fsyntax-only:-o %j} %{-param*}\
%{fmudflap|fmudflapth:-fno-builtin -fno-merge-constants}\
- %{coverage:-fprofile-arcs -ftest-coverage}";
+ %{coverage:-fprofile-arcs -ftest-coverage -fno-early-inlining}";
/* If an assembler wrapper is used to invoke post-assembly tools
like MAO, --save-temps need to be passed to save the output of
@@ -1431,8 +1431,7 @@ init_spec (void)
}
#endif
-#if defined LINK_EH_SPEC || defined LINK_BUILDID_SPEC || \
- defined LINKER_HASH_STYLE
+#if defined LINK_EH_SPEC || defined LINK_BUILDID_SPEC
# ifdef LINK_BUILDID_SPEC
/* Prepend LINK_BUILDID_SPEC to whatever link_spec we had before. */
obstack_grow (&obstack, LINK_BUILDID_SPEC, sizeof(LINK_BUILDID_SPEC) - 1);
@@ -1441,16 +1440,6 @@ init_spec (void)
/* Prepend LINK_EH_SPEC to whatever link_spec we had before. */
obstack_grow (&obstack, LINK_EH_SPEC, sizeof(LINK_EH_SPEC) - 1);
# endif
-# ifdef LINKER_HASH_STYLE
- /* Prepend --hash-style=LINKER_HASH_STYLE to whatever link_spec we had
- before. */
- {
- static const char hash_style[] = "--hash-style=";
- obstack_grow (&obstack, hash_style, sizeof(hash_style) - 1);
- obstack_grow (&obstack, LINKER_HASH_STYLE, sizeof(LINKER_HASH_STYLE) - 1);
- obstack_1grow (&obstack, ' ');
- }
-# endif
obstack_grow0 (&obstack, link_spec, strlen (link_spec));
link_spec = XOBFINISH (&obstack, const char *);
#endif
diff --git a/gcc-4.6/gcc/ggc.h b/gcc-4.6/gcc/ggc.h
index 1258f2562..00db925c4 100644
--- a/gcc-4.6/gcc/ggc.h
+++ b/gcc-4.6/gcc/ggc.h
@@ -266,8 +266,9 @@ extern struct alloc_zone tree_zone;
extern struct alloc_zone tree_id_zone;
#define ggc_alloc_rtvec_sized(NELT) \
- (ggc_alloc_zone_vec_rtvec_def (sizeof (rtx), \
- sizeof (struct rtvec_def) + ((NELT) - 1), \
+ (ggc_alloc_zone_vec_rtvec_def (1, \
+ sizeof (struct rtvec_def) \
+ + ((NELT) - 1) * sizeof (rtx), \
&rtl_zone))
#if defined (GGC_ZONE) && !defined (GENERATOR_FILE)
diff --git a/gcc-4.6/gcc/gimple-fold.c b/gcc-4.6/gcc/gimple-fold.c
index cd8f409a8..ad45dcb1a 100644
--- a/gcc-4.6/gcc/gimple-fold.c
+++ b/gcc-4.6/gcc/gimple-fold.c
@@ -1210,6 +1210,11 @@ gimple_fold_builtin (gimple stmt)
if (DECL_BUILT_IN_CLASS (callee) == BUILT_IN_MD)
return NULL_TREE;
+ /* Give up for always_inline inline builtins until they are
+ inlined. */
+ if (avoid_folding_inline_builtin (callee))
+ return NULL_TREE;
+
/* If the builtin could not be folded, and it has no argument list,
we're done. */
nargs = gimple_call_num_args (stmt);
@@ -1533,28 +1538,45 @@ fold_stmt_1 (gimple_stmt_iterator *gsi, bool inplace)
case GIMPLE_ASM:
/* Fold *& in asm operands. */
- for (i = 0; i < gimple_asm_noutputs (stmt); ++i)
- {
- tree link = gimple_asm_output_op (stmt, i);
- tree op = TREE_VALUE (link);
- if (REFERENCE_CLASS_P (op)
- && (op = maybe_fold_reference (op, true)) != NULL_TREE)
- {
- TREE_VALUE (link) = op;
- changed = true;
- }
- }
- for (i = 0; i < gimple_asm_ninputs (stmt); ++i)
- {
- tree link = gimple_asm_input_op (stmt, i);
- tree op = TREE_VALUE (link);
- if (REFERENCE_CLASS_P (op)
- && (op = maybe_fold_reference (op, false)) != NULL_TREE)
- {
- TREE_VALUE (link) = op;
- changed = true;
- }
- }
+ {
+ size_t noutputs;
+ const char **oconstraints;
+ const char *constraint;
+ bool allows_mem, allows_reg;
+
+ noutputs = gimple_asm_noutputs (stmt);
+ oconstraints = XALLOCAVEC (const char *, noutputs);
+
+ for (i = 0; i < gimple_asm_noutputs (stmt); ++i)
+ {
+ tree link = gimple_asm_output_op (stmt, i);
+ tree op = TREE_VALUE (link);
+ oconstraints[i]
+ = TREE_STRING_POINTER (TREE_VALUE (TREE_PURPOSE (link)));
+ if (REFERENCE_CLASS_P (op)
+ && (op = maybe_fold_reference (op, true)) != NULL_TREE)
+ {
+ TREE_VALUE (link) = op;
+ changed = true;
+ }
+ }
+ for (i = 0; i < gimple_asm_ninputs (stmt); ++i)
+ {
+ tree link = gimple_asm_input_op (stmt, i);
+ tree op = TREE_VALUE (link);
+ constraint
+ = TREE_STRING_POINTER (TREE_VALUE (TREE_PURPOSE (link)));
+ parse_input_constraint (&constraint, 0, 0, noutputs, 0,
+ oconstraints, &allows_mem, &allows_reg);
+ if (REFERENCE_CLASS_P (op)
+ && (op = maybe_fold_reference (op, !allows_reg && allows_mem))
+ != NULL_TREE)
+ {
+ TREE_VALUE (link) = op;
+ changed = true;
+ }
+ }
+ }
break;
case GIMPLE_DEBUG:
diff --git a/gcc-4.6/gcc/gimple.c b/gcc-4.6/gcc/gimple.c
index 233a4f5f0..bf8cc07e4 100644
--- a/gcc-4.6/gcc/gimple.c
+++ b/gcc-4.6/gcc/gimple.c
@@ -4943,6 +4943,20 @@ walk_stmt_load_store_addr_ops (gimple stmt, void *data,
&& TREE_CODE (OBJ_TYPE_REF_OBJECT (rhs)) == ADDR_EXPR)
ret |= visit_addr (stmt, TREE_OPERAND (OBJ_TYPE_REF_OBJECT (rhs),
0), data);
+ else if (TREE_CODE (rhs) == CONSTRUCTOR)
+ {
+ unsigned int ix;
+ tree val;
+
+ FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (rhs), ix, val)
+ if (TREE_CODE (val) == ADDR_EXPR)
+ ret |= visit_addr (stmt, TREE_OPERAND (val, 0), data);
+ else if (TREE_CODE (val) == OBJ_TYPE_REF
+ && TREE_CODE (OBJ_TYPE_REF_OBJECT (val)) == ADDR_EXPR)
+ ret |= visit_addr (stmt,
+ TREE_OPERAND (OBJ_TYPE_REF_OBJECT (val),
+ 0), data);
+ }
lhs = gimple_assign_lhs (stmt);
if (TREE_CODE (lhs) == TARGET_MEM_REF
&& TREE_CODE (TMR_BASE (lhs)) == ADDR_EXPR)
diff --git a/gcc-4.6/gcc/go/ChangeLog b/gcc-4.6/gcc/go/ChangeLog
index c92657b67..cf71aa1da 100644
--- a/gcc-4.6/gcc/go/ChangeLog
+++ b/gcc-4.6/gcc/go/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/gcc/godump.c b/gcc-4.6/gcc/godump.c
index 7ee7af0e8..e18bb38bf 100644
--- a/gcc-4.6/gcc/godump.c
+++ b/gcc-4.6/gcc/godump.c
@@ -844,9 +844,24 @@ go_output_typedef (struct godump_container *container, tree decl)
for (element = TYPE_VALUES (TREE_TYPE (decl));
element != NULL_TREE;
element = TREE_CHAIN (element))
- fprintf (go_dump_file, "const _%s = " HOST_WIDE_INT_PRINT_DEC "\n",
- IDENTIFIER_POINTER (TREE_PURPOSE (element)),
- tree_low_cst (TREE_VALUE (element), 0));
+ {
+ fprintf (go_dump_file, "const _%s = ",
+ IDENTIFIER_POINTER (TREE_PURPOSE (element)));
+ if (host_integerp (TREE_VALUE (element), 0))
+ fprintf (go_dump_file, HOST_WIDE_INT_PRINT_DEC,
+ tree_low_cst (TREE_VALUE (element), 0));
+ else if (host_integerp (TREE_VALUE (element), 1))
+ fprintf (go_dump_file, HOST_WIDE_INT_PRINT_UNSIGNED,
+ ((unsigned HOST_WIDE_INT)
+ tree_low_cst (TREE_VALUE (element), 1)));
+ else
+ fprintf (go_dump_file, HOST_WIDE_INT_PRINT_DOUBLE_HEX,
+ ((unsigned HOST_WIDE_INT)
+ TREE_INT_CST_HIGH (TREE_VALUE (element))),
+ TREE_INT_CST_LOW (TREE_VALUE (element)));
+ fprintf (go_dump_file, "\n");
+ }
+
pointer_set_insert (container->decls_seen, TREE_TYPE (decl));
if (TYPE_CANONICAL (TREE_TYPE (decl)) != NULL_TREE)
pointer_set_insert (container->decls_seen,
diff --git a/gcc-4.6/gcc/graphite-scop-detection.c b/gcc-4.6/gcc/graphite-scop-detection.c
index 45c6c75cc..42dfbc62f 100644
--- a/gcc-4.6/gcc/graphite-scop-detection.c
+++ b/gcc-4.6/gcc/graphite-scop-detection.c
@@ -36,6 +36,9 @@ along with GCC; see the file COPYING3. If not see
#include "graphite-poly.h"
#include "graphite-scop-detection.h"
+/* Forward declarations. */
+static void make_close_phi_nodes_unique (basic_block);
+
/* The type of the analyzed basic block. */
typedef enum gbb_type {
@@ -1231,6 +1234,13 @@ remove_duplicate_close_phi (gimple phi, gimple_stmt_iterator *gsi)
SET_USE (use_p, res);
update_stmt (use_stmt);
+
+ /* It is possible that we just created a duplicate close-phi
+ for an already-processed containing loop. Check for this
+ case and clean it up. */
+ if (gimple_code (use_stmt) == GIMPLE_PHI
+ && gimple_phi_num_args (use_stmt) == 1)
+ make_close_phi_nodes_unique (gimple_bb (use_stmt));
}
remove_phi_node (gsi, true);
diff --git a/gcc-4.6/gcc/ipa-inline.c b/gcc-4.6/gcc/ipa-inline.c
index bd5b3adfd..154d8051d 100644
--- a/gcc-4.6/gcc/ipa-inline.c
+++ b/gcc-4.6/gcc/ipa-inline.c
@@ -292,6 +292,109 @@ cgraph_clone_inlined_nodes (struct cgraph_edge *e, bool duplicate,
cgraph_clone_inlined_nodes (e, duplicate, update_original);
}
+#define MAX_INT_LENGTH 16
+
+/* Return NODE's name and aux info. The output is controled by OPT_INFO
+ level. */
+
+static const char *
+cgraph_node_opt_info (struct cgraph_node *node)
+{
+ char *buf;
+ size_t buf_size;
+ const char *bfd_name = lang_hooks.dwarf_name (node->decl, 0);
+
+ if (!bfd_name)
+ bfd_name = "unknown";
+
+ buf_size = strlen (bfd_name) + 1;
+ if (profile_info)
+ buf_size += (2 * MAX_INT_LENGTH + 5);
+ buf = (char *) xmalloc (buf_size);
+
+ strcpy (buf, bfd_name);
+ if (profile_info)
+ sprintf (buf,
+ "%s ("HOST_WIDEST_INT_PRINT_DEC", "HOST_WIDEST_INT_PRINT_DEC")",
+ buf, node->count, node->max_bb_count);
+ return buf;
+}
+
+/* Return CALLER's inlined call chain. Save the cgraph_node of the ultimate
+ function that the caller is inlined to in FINAL_CALLER. */
+
+static const char *
+cgraph_node_call_chain (struct cgraph_node *caller,
+ struct cgraph_node **final_caller)
+{
+ struct cgraph_node *node;
+ const char *via_str = " (via inline instance";
+ size_t current_string_len = strlen (via_str) + 1;
+ size_t buf_size = current_string_len;
+ char *buf = (char *) xmalloc (buf_size);
+
+ buf[0] = 0;
+ gcc_assert (caller->global.inlined_to != NULL);
+ strcat (buf, via_str);
+ for (node = caller; node->global.inlined_to != NULL;
+ node = node->callers->caller)
+ {
+ const char *name = cgraph_node_opt_info (node);
+ current_string_len += (strlen (name) + 1);
+ if (current_string_len >= buf_size)
+ {
+ buf_size = current_string_len * 2;
+ buf = (char *) xrealloc (buf, buf_size);
+ }
+ strcat (buf, " ");
+ strcat (buf, name);
+ }
+ strcat (buf, ")");
+ *final_caller = node;
+ return buf;
+}
+
+/* File static variable to denote if it is in ipa-inline pass. */
+static bool is_in_ipa_inline = false;
+
+/* Dump the inline decision of EDGE to stderr. */
+
+static void
+dump_inline_decision (struct cgraph_edge *edge)
+{
+ location_t locus;
+ const char *inline_chain_text;
+ const char *call_count_text;
+ struct cgraph_node *final_caller = edge->caller;
+
+ if (flag_opt_info < OPT_INFO_MED && !is_in_ipa_inline)
+ return;
+ if (final_caller->global.inlined_to != NULL)
+ inline_chain_text = cgraph_node_call_chain (final_caller, &final_caller);
+ else
+ inline_chain_text = "";
+
+ if (edge->count > 0)
+ {
+ const char *call_count_str = " with call count ";
+ char *buf = (char *) xmalloc (strlen (call_count_str) + MAX_INT_LENGTH);
+ sprintf (buf, "%s"HOST_WIDEST_INT_PRINT_DEC, call_count_str,
+ edge->count);
+ call_count_text = buf;
+ }
+ else
+ {
+ call_count_text = "";
+ }
+
+ locus = gimple_location (edge->call_stmt);
+ inform (locus, "%s inlined into %s%s%s",
+ cgraph_node_opt_info (edge->callee),
+ cgraph_node_opt_info (final_caller),
+ call_count_text,
+ inline_chain_text);
+}
+
/* Mark edge E as inlined and update callgraph accordingly. UPDATE_ORIGINAL
specify whether profile of original function should be updated. If any new
indirect edges are discovered in the process, add them to NEW_EDGES, unless
@@ -311,6 +414,9 @@ cgraph_mark_inline_edge (struct cgraph_edge *e, bool update_original,
if (L_IPO_COMP_MODE && !e->call_stmt)
return false;
+ if (flag_opt_info >= OPT_INFO_MIN)
+ dump_inline_decision (e);
+
/* Don't inline inlined edges. */
gcc_assert (e->inline_failed);
/* Don't even think of inlining inline clone. */
@@ -332,6 +438,9 @@ cgraph_mark_inline_edge (struct cgraph_edge *e, bool update_original,
new_size = cgraph_estimate_size_after_inlining (to, what);
to->global.size = new_size;
to->global.time = cgraph_estimate_time_after_inlining (freq, to, what);
+
+ if (to->max_bb_count < e->callee->max_bb_count)
+ to->max_bb_count = e->callee->max_bb_count;
}
gcc_assert (what->global.inlined_to == to);
if (new_size > old_size)
@@ -1057,6 +1166,19 @@ add_new_edges_to_heap (fibheap_t heap, VEC (cgraph_edge_p, heap) *new_edges)
}
}
+/* Returns true if an edge or its caller are hot enough to
+ be considered for inlining. */
+
+static bool
+edge_hot_enough_p (struct cgraph_edge *edge)
+{
+ if (cgraph_maybe_hot_edge_p (edge))
+ return true;
+ if (flag_inline_hot_caller && maybe_hot_count_p (edge->caller->max_bb_count))
+ return true;
+ return false;
+}
+
/* We use greedy algorithm for inlining of small functions:
All inline candidates are put into prioritized heap based on estimated
@@ -1076,6 +1198,8 @@ cgraph_decide_inlining_of_small_functions (void)
int min_size, max_size;
VEC (cgraph_edge_p, heap) *new_indirect_edges = NULL;
+ is_in_ipa_inline = true;
+
if (flag_indirect_inlining)
new_indirect_edges = VEC_alloc (cgraph_edge_p, heap, 8);
@@ -1201,7 +1325,7 @@ cgraph_decide_inlining_of_small_functions (void)
if (edge->callee->local.disregard_inline_limits)
;
- else if (!cgraph_maybe_hot_edge_p (edge))
+ else if (!edge_hot_enough_p (edge))
not_good = CIF_UNLIKELY_CALL;
else if (!flag_inline_functions
&& !DECL_DECLARED_INLINE_P (edge->callee->decl))
diff --git a/gcc-4.6/gcc/ipa-prop.c b/gcc-4.6/gcc/ipa-prop.c
index bb32ad8e8..f2a5759b0 100644
--- a/gcc-4.6/gcc/ipa-prop.c
+++ b/gcc-4.6/gcc/ipa-prop.c
@@ -2868,9 +2868,9 @@ ipa_prop_read_section (struct lto_file_decl_data *file_data, const char *data,
{
const struct lto_function_header *header =
(const struct lto_function_header *) data;
- const int32_t cfg_offset = sizeof (struct lto_function_header);
- const int32_t main_offset = cfg_offset + header->cfg_size;
- const int32_t string_offset = main_offset + header->main_size;
+ const int cfg_offset = sizeof (struct lto_function_header);
+ const int main_offset = cfg_offset + header->cfg_size;
+ const int string_offset = main_offset + header->main_size;
struct data_in *data_in;
struct lto_input_block ib_main;
unsigned int i;
diff --git a/gcc-4.6/gcc/ipa-split.c b/gcc-4.6/gcc/ipa-split.c
index 3b26f61b1..ab3632c52 100644
--- a/gcc-4.6/gcc/ipa-split.c
+++ b/gcc-4.6/gcc/ipa-split.c
@@ -946,7 +946,7 @@ split_function (struct split_point *split_point)
bitmap args_to_skip = BITMAP_ALLOC (NULL);
tree parm;
int num = 0;
- struct cgraph_node *node;
+ struct cgraph_node *node, *cur_node = cgraph_node (current_function_decl);
basic_block return_bb = find_return_bb ();
basic_block call_bb;
gimple_stmt_iterator gsi;
@@ -956,7 +956,6 @@ split_function (struct split_point *split_point)
tree retval = NULL, real_retval = NULL;
bool split_part_return_p = false;
gimple last_stmt = NULL;
- bool conv_needed = false;
unsigned int i;
tree arg;
@@ -966,23 +965,41 @@ split_function (struct split_point *split_point)
dump_split_point (dump_file, split_point);
}
+ if (cur_node->local.can_change_signature
+ && !TYPE_ATTRIBUTES (TREE_TYPE (cur_node->decl)))
+ args_to_skip = BITMAP_ALLOC (NULL);
+ else
+ args_to_skip = NULL;
+
/* Collect the parameters of new function and args_to_skip bitmap. */
for (parm = DECL_ARGUMENTS (current_function_decl);
parm; parm = DECL_CHAIN (parm), num++)
- if (!is_gimple_reg (parm)
- || !gimple_default_def (cfun, parm)
- || !bitmap_bit_p (split_point->ssa_names_to_pass,
- SSA_NAME_VERSION (gimple_default_def (cfun, parm))))
+ if (args_to_skip
+ && (!is_gimple_reg (parm)
+ || !gimple_default_def (cfun, parm)
+ || !bitmap_bit_p (split_point->ssa_names_to_pass,
+ SSA_NAME_VERSION (gimple_default_def (cfun,
+ parm)))))
bitmap_set_bit (args_to_skip, num);
else
{
- arg = gimple_default_def (cfun, parm);
- if (TYPE_MAIN_VARIANT (DECL_ARG_TYPE (parm))
- != TYPE_MAIN_VARIANT (TREE_TYPE (arg)))
+ /* This parm might not have been used up to now, but is going to be
+ used, hence register it. */
+ add_referenced_var (parm);
+ if (is_gimple_reg (parm))
{
- conv_needed = true;
- arg = fold_convert (DECL_ARG_TYPE (parm), arg);
+ arg = gimple_default_def (cfun, parm);
+ if (!arg)
+ {
+ arg = make_ssa_name (parm, gimple_build_nop ());
+ set_default_def (parm, arg);
+ }
}
+ else
+ arg = parm;
+
+ if (!useless_type_conversion_p (DECL_ARG_TYPE (parm), TREE_TYPE (arg)))
+ arg = fold_convert (DECL_ARG_TYPE (parm), arg);
VEC_safe_push (tree, heap, args_to_pass, arg);
}
@@ -1057,9 +1074,7 @@ split_function (struct split_point *split_point)
/* Now create the actual clone. */
rebuild_cgraph_edges ();
- node = cgraph_function_versioning (cgraph_node (current_function_decl),
- NULL, NULL,
- args_to_skip,
+ node = cgraph_function_versioning (cur_node, NULL, NULL, args_to_skip,
split_point->split_bbs,
split_point->entry_bb, "part");
/* For usual cloning it is enough to clear builtin only when signature
@@ -1070,7 +1085,7 @@ split_function (struct split_point *split_point)
DECL_BUILT_IN_CLASS (node->decl) = NOT_BUILT_IN;
DECL_FUNCTION_CODE (node->decl) = (enum built_in_function) 0;
}
- cgraph_node_remove_callees (cgraph_node (current_function_decl));
+ cgraph_node_remove_callees (cur_node);
if (!split_part_return_p)
TREE_THIS_VOLATILE (node->decl) = 1;
if (dump_file)
@@ -1092,14 +1107,13 @@ split_function (struct split_point *split_point)
/* Produce the call statement. */
gsi = gsi_last_bb (call_bb);
- if (conv_needed)
- FOR_EACH_VEC_ELT (tree, args_to_pass, i, arg)
- if (!is_gimple_val (arg))
- {
- arg = force_gimple_operand_gsi (&gsi, arg, true, NULL_TREE,
- false, GSI_NEW_STMT);
- VEC_replace (tree, args_to_pass, i, arg);
- }
+ FOR_EACH_VEC_ELT (tree, args_to_pass, i, arg)
+ if (!is_gimple_val (arg))
+ {
+ arg = force_gimple_operand_gsi (&gsi, arg, true, NULL_TREE,
+ false, GSI_CONTINUE_LINKING);
+ VEC_replace (tree, args_to_pass, i, arg);
+ }
call = gimple_build_call_vec (node->decl, args_to_pass);
gimple_set_block (call, DECL_INITIAL (current_function_decl));
diff --git a/gcc-4.6/gcc/java/ChangeLog b/gcc-4.6/gcc/java/ChangeLog
index 207b10972..a730fa6fb 100644
--- a/gcc-4.6/gcc/java/ChangeLog
+++ b/gcc-4.6/gcc/java/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/gcc/libgcov.c b/gcc-4.6/gcc/libgcov.c
index 2110858d6..613c1f429 100644
--- a/gcc-4.6/gcc/libgcov.c
+++ b/gcc-4.6/gcc/libgcov.c
@@ -810,6 +810,7 @@ gcov_merge_gcda_file (struct gcov_info *info,
gcov_unsigned_t tag, length;
eof_pos = 0;
+ summary_pos = 0;
tag = gcov_read_unsigned ();
if (tag)
diff --git a/gcc-4.6/gcc/longlong.h b/gcc-4.6/gcc/longlong.h
index 1bab76db3..acb31851c 100644
--- a/gcc-4.6/gcc/longlong.h
+++ b/gcc-4.6/gcc/longlong.h
@@ -343,23 +343,24 @@ UDItype __umulsidi3 (USItype, USItype);
#else
#define smul_ppmm(xh, xl, m0, m1) \
do { \
- register SItype r0 __asm__ ("0"); \
- register SItype r1 __asm__ ("1") = m0; \
+ register SItype __r0 __asm__ ("0"); \
+ register SItype __r1 __asm__ ("1") = (m0); \
\
__asm__ ("mr\t%%r0,%3" \
- : "=r" (r0), "=r" (r1) \
- : "r" (r1), "r" (m1)); \
- (xh) = r0; (xl) = r1; \
+ : "=r" (__r0), "=r" (__r1) \
+ : "r" (__r1), "r" (m1)); \
+ (xh) = __r0; (xl) = __r1; \
} while (0)
+
#define sdiv_qrnnd(q, r, n1, n0, d) \
- do { \
- register SItype r0 __asm__ ("0") = n0; \
- register SItype r1 __asm__ ("1") = n1; \
+ do { \
+ register SItype __r0 __asm__ ("0") = (n1); \
+ register SItype __r1 __asm__ ("1") = (n0); \
\
- __asm__ ("dr\t%%r0,%3" \
- : "=r" (r0), "=r" (r1) \
- : "r" (r0), "r" (r1), "r" (d)); \
- (q) = r0; (r) = r1; \
+ __asm__ ("dr\t%%r0,%4" \
+ : "=r" (__r0), "=r" (__r1) \
+ : "r" (__r0), "r" (__r1), "r" (d)); \
+ (q) = __r1; (r) = __r0; \
} while (0)
#endif /* __zarch__ */
#endif
diff --git a/gcc-4.6/gcc/loop-unroll.c b/gcc-4.6/gcc/loop-unroll.c
index a1ef58d2d..2a49d0ce3 100644
--- a/gcc-4.6/gcc/loop-unroll.c
+++ b/gcc-4.6/gcc/loop-unroll.c
@@ -34,6 +34,7 @@ along with GCC; see the file COPYING3. If not see
#include "hashtab.h"
#include "recog.h"
#include "target.h"
+#include "diagnostic.h"
/* This pass performs loop unrolling and peeling. We only perform these
optimizations on innermost loops (with single exception) because
@@ -152,6 +153,109 @@ static void combine_var_copies_in_loop_exit (struct var_to_expand *,
basic_block);
static rtx get_expansion (struct var_to_expand *);
+static void
+report_unroll_peel(struct loop *loop, location_t locus)
+{
+ struct niter_desc *desc;
+ int niters = 0;
+ char iter_str[50];
+
+ desc = get_simple_loop_desc (loop);
+
+ if (desc->const_iter)
+ niters = desc->niter;
+ else if (loop->header->count)
+ niters = expected_loop_iterations (loop);
+
+ sprintf(iter_str,", %s iterations %d",
+ desc->const_iter?"const":"average",
+ niters);
+ inform (locus, "%s%s loop by %d (header execution count %d%s)",
+ loop->lpt_decision.decision == LPT_PEEL_COMPLETELY ?
+ "Completely " : "",
+ loop->lpt_decision.decision == LPT_PEEL_SIMPLE ?
+ "Peel" : "Unroll",
+ loop->lpt_decision.times,
+ (int)loop->header->count,
+ loop->lpt_decision.decision == LPT_PEEL_COMPLETELY ?
+ "" : iter_str);
+}
+
+/* Determine whether LOOP contains floating-point computation. */
+static bool
+loop_has_FP_comp(struct loop *loop)
+{
+ rtx set, dest;
+ basic_block *body, bb;
+ unsigned i;
+ rtx insn;
+
+ body = get_loop_body (loop);
+ for (i = 0; i < loop->num_nodes; i++)
+ {
+ bb = body[i];
+
+ FOR_BB_INSNS (bb, insn)
+ {
+ set = single_set (insn);
+ if (!set)
+ continue;
+
+ dest = SET_DEST (set);
+ if (FLOAT_MODE_P (GET_MODE (dest)))
+ {
+ free (body);
+ return true;
+ }
+ }
+ }
+ free (body);
+ return false;
+}
+
+/* This returns a bit vector */
+typedef enum {
+ NO_LIMIT = 0,
+ LIMIT_UNROLL = 0x1,
+ LIMIT_PEEL = 0x2,
+ LIMIT_BOTH = 0x3
+} limit_type;
+
+extern int cgraph_codesize_estimate;
+
+/* Determine whether LOOP unrolling/peeling should be constrained based
+ on code footprint estimates. */
+static limit_type
+limit_code_size(struct loop *loop)
+{
+ unsigned size_threshold;
+ limit_type result = NO_LIMIT;
+ int result_int = 0;
+
+ if (!flag_dyn_ipa)
+ return NO_LIMIT;
+
+ gcc_assert (cgraph_codesize_estimate >= 0);
+
+ /* Ignore FP loops, which are more likely to benefit heavily from
+ unrolling. */
+ if (loop_has_FP_comp(loop))
+ return NO_LIMIT;
+
+ size_threshold = PARAM_VALUE (PARAM_UNROLLPEEL_CODESIZE_THRESHOLD);
+ if (cgraph_codesize_estimate <= (int)size_threshold)
+ return NO_LIMIT;
+
+ if (flag_ripa_peel_size_limit)
+ result_int |= LIMIT_PEEL;
+
+ if (flag_ripa_unroll_size_limit)
+ result_int |= LIMIT_UNROLL;
+
+ result = (limit_type)result_int;
+ return result;
+}
+
/* Unroll and/or peel (depending on FLAGS) LOOPS. */
void
unroll_and_peel_loops (int flags)
@@ -160,6 +264,8 @@ unroll_and_peel_loops (int flags)
bool check;
loop_iterator li;
+ record_loop_exits();
+
/* First perform complete loop peeling (it is almost surely a win,
and affects parameters for further decision a lot). */
peel_loops_completely (flags);
@@ -234,16 +340,18 @@ peel_loops_completely (int flags)
{
struct loop *loop;
loop_iterator li;
+ location_t locus;
/* Scan the loops, the inner ones first. */
FOR_EACH_LOOP (li, loop, LI_FROM_INNERMOST)
{
loop->lpt_decision.decision = LPT_NONE;
+ locus = get_loop_location(loop);
if (dump_file)
- fprintf (dump_file,
- "\n;; *** Considering loop %d for complete peeling ***\n",
- loop->num);
+ fprintf (dump_file, "\n;; *** Considering loop %d for complete peeling at BB %d from %s:%d ***\n",
+ loop->num, loop->header->index, LOCATION_FILE(locus),
+ LOCATION_LINE(locus));
loop->ninsns = num_loop_insns (loop);
@@ -253,6 +361,11 @@ peel_loops_completely (int flags)
if (loop->lpt_decision.decision == LPT_PEEL_COMPLETELY)
{
+ if (flag_opt_info >= OPT_INFO_MIN)
+ {
+ report_unroll_peel(loop, locus);
+ }
+
peel_loop_completely (loop);
#ifdef ENABLE_CHECKING
verify_dominators (CDI_DOMINATORS);
@@ -268,14 +381,19 @@ decide_unrolling_and_peeling (int flags)
{
struct loop *loop;
loop_iterator li;
+ location_t locus;
+ limit_type limit;
/* Scan the loops, inner ones first. */
FOR_EACH_LOOP (li, loop, LI_FROM_INNERMOST)
{
loop->lpt_decision.decision = LPT_NONE;
+ locus = get_loop_location(loop);
if (dump_file)
- fprintf (dump_file, "\n;; *** Considering loop %d ***\n", loop->num);
+ fprintf (dump_file, "\n;; *** Considering loop %d at BB %d from %s:%d ***\n",
+ loop->num, loop->header->index, LOCATION_FILE(locus),
+ LOCATION_LINE(locus));
/* Do not peel cold areas. */
if (optimize_loop_for_size_p (loop))
@@ -305,16 +423,45 @@ decide_unrolling_and_peeling (int flags)
loop->ninsns = num_loop_insns (loop);
loop->av_ninsns = average_num_loop_insns (loop);
+ /* Determine whether to limit code size growth from unrolling and
+ peeling. This is currently enabled only under LIPO (dynamic IPA)
+ where we have a partial call graph. It is not applied to loops
+ with constant trip counts, as it is easier to determine the
+ profitability of unrolling and peeling such loops. */
+ limit = limit_code_size(loop);
+ if (limit != NO_LIMIT)
+ {
+ if (dump_file)
+ {
+ fprintf (dump_file, ";; Due to large code size footprint estimate, limit ");
+ if (limit == (LIMIT_UNROLL|LIMIT_PEEL))
+ fprintf (dump_file, "unrolling and peeling\n");
+ else if (limit == LIMIT_UNROLL)
+ fprintf (dump_file, "unrolling\n");
+ else
+ fprintf (dump_file, "peeling\n");
+ }
+ }
+
/* Try transformations one by one in decreasing order of
priority. */
decide_unroll_constant_iterations (loop, flags);
- if (loop->lpt_decision.decision == LPT_NONE)
+ if (loop->lpt_decision.decision == LPT_NONE
+ && !(limit & LIMIT_UNROLL))
decide_unroll_runtime_iterations (loop, flags);
- if (loop->lpt_decision.decision == LPT_NONE)
+ if (loop->lpt_decision.decision == LPT_NONE
+ && !(limit & LIMIT_UNROLL))
decide_unroll_stupid (loop, flags);
- if (loop->lpt_decision.decision == LPT_NONE)
+ if (loop->lpt_decision.decision == LPT_NONE
+ && !(limit & LIMIT_PEEL))
decide_peel_simple (loop, flags);
+
+ if (flag_opt_info >= OPT_INFO_MIN
+ && loop->lpt_decision.decision != LPT_NONE)
+ {
+ report_unroll_peel(loop, locus);
+ }
}
}
@@ -364,6 +511,7 @@ decide_peel_once_rolling (struct loop *loop, int flags ATTRIBUTE_UNUSED)
if (dump_file)
fprintf (dump_file, ";; Decided to peel exactly once rolling loop\n");
loop->lpt_decision.decision = LPT_PEEL_COMPLETELY;
+ loop->lpt_decision.times = 0;
}
/* Decide whether the LOOP is suitable for complete peeling. */
@@ -459,6 +607,7 @@ decide_peel_completely (struct loop *loop, int flags ATTRIBUTE_UNUSED)
if (dump_file)
fprintf (dump_file, ";; Decided to peel loop completely npeel %u\n", npeel);
loop->lpt_decision.decision = LPT_PEEL_COMPLETELY;
+ loop->lpt_decision.times = desc->niter;
}
/* Peel all iterations of LOOP, remove exit edges and cancel the loop
@@ -569,6 +718,9 @@ decide_unroll_constant_iterations (struct loop *loop, int flags)
if (nunroll > (unsigned) PARAM_VALUE (PARAM_MAX_UNROLL_TIMES))
nunroll = PARAM_VALUE (PARAM_MAX_UNROLL_TIMES);
+ if (targetm.loop_unroll_adjust)
+ nunroll = targetm.loop_unroll_adjust (nunroll, loop);
+
/* Skip big loops. */
if (nunroll <= 1)
{
diff --git a/gcc-4.6/gcc/lto-cgraph.c b/gcc-4.6/gcc/lto-cgraph.c
index a7f31fee9..cc126169c 100644
--- a/gcc-4.6/gcc/lto-cgraph.c
+++ b/gcc-4.6/gcc/lto-cgraph.c
@@ -1792,9 +1792,9 @@ input_cgraph_opt_section (struct lto_file_decl_data *file_data,
{
const struct lto_function_header *header =
(const struct lto_function_header *) data;
- const int32_t cfg_offset = sizeof (struct lto_function_header);
- const int32_t main_offset = cfg_offset + header->cfg_size;
- const int32_t string_offset = main_offset + header->main_size;
+ const int cfg_offset = sizeof (struct lto_function_header);
+ const int main_offset = cfg_offset + header->cfg_size;
+ const int string_offset = main_offset + header->main_size;
struct data_in *data_in;
struct lto_input_block ib_main;
unsigned int i;
diff --git a/gcc-4.6/gcc/lto-opts.c b/gcc-4.6/gcc/lto-opts.c
index 3f80e91b5..71a7067ce 100644
--- a/gcc-4.6/gcc/lto-opts.c
+++ b/gcc-4.6/gcc/lto-opts.c
@@ -358,7 +358,7 @@ lto_read_file_options (struct lto_file_decl_data *file_data)
size_t len, l, skip;
const char *data, *p;
const struct lto_simple_header *header;
- int32_t opts_offset;
+ int opts_offset;
struct lto_input_block ib;
data = lto_get_section_data (file_data, LTO_section_opts, NULL, &len);
@@ -379,10 +379,10 @@ lto_read_file_options (struct lto_file_decl_data *file_data)
lto_check_version (header->lto_header.major_version,
header->lto_header.minor_version);
-
+
LTO_INIT_INPUT_BLOCK (ib, p + opts_offset, 0, header->main_size);
input_options (&ib);
-
+
skip = header->main_size + opts_offset;
l -= skip;
p += skip;
diff --git a/gcc-4.6/gcc/lto-section-in.c b/gcc-4.6/gcc/lto-section-in.c
index bfa9c37b6..12ae4f184 100644
--- a/gcc-4.6/gcc/lto-section-in.c
+++ b/gcc-4.6/gcc/lto-section-in.c
@@ -296,7 +296,7 @@ lto_create_simple_input_block (struct lto_file_decl_data *file_data,
= (const struct lto_simple_header *) data;
struct lto_input_block* ib_main;
- int32_t main_offset = sizeof (struct lto_simple_header);
+ int main_offset = sizeof (struct lto_simple_header);
if (!data)
return NULL;
diff --git a/gcc-4.6/gcc/lto-streamer-in.c b/gcc-4.6/gcc/lto-streamer-in.c
index 47837177b..5ef06abfb 100644
--- a/gcc-4.6/gcc/lto-streamer-in.c
+++ b/gcc-4.6/gcc/lto-streamer-in.c
@@ -1366,9 +1366,9 @@ lto_read_body (struct lto_file_decl_data *file_data, tree fn_decl,
{
const struct lto_function_header *header;
struct data_in *data_in;
- int32_t cfg_offset;
- int32_t main_offset;
- int32_t string_offset;
+ int cfg_offset;
+ int main_offset;
+ int string_offset;
struct lto_input_block ib_cfg;
struct lto_input_block ib_main;
diff --git a/gcc-4.6/gcc/lto-streamer-out.c b/gcc-4.6/gcc/lto-streamer-out.c
index 3b90fdd68..4f5247afb 100644
--- a/gcc-4.6/gcc/lto-streamer-out.c
+++ b/gcc-4.6/gcc/lto-streamer-out.c
@@ -2408,7 +2408,7 @@ write_symbol (struct lto_streamer_cache_d *cache,
enum gcc_plugin_symbol_kind kind;
enum gcc_plugin_symbol_visibility visibility;
int slot_num;
- uint64_t size;
+ unsigned HOST_WIDEST_INT size;
const char *comdat;
unsigned char c;
@@ -2466,7 +2466,7 @@ write_symbol (struct lto_streamer_cache_d *cache,
when symbol has attribute (visibility("hidden")) specified.
targetm.binds_local_p check DECL_VISIBILITY_SPECIFIED and gets this
right. */
-
+
if (DECL_EXTERNAL (t)
&& !targetm.binds_local_p (t))
visibility = GCCPV_DEFAULT;
@@ -2488,14 +2488,9 @@ write_symbol (struct lto_streamer_cache_d *cache,
}
if (kind == GCCPK_COMMON
- && DECL_SIZE (t)
- && TREE_CODE (DECL_SIZE (t)) == INTEGER_CST)
- {
- size = (HOST_BITS_PER_WIDE_INT >= 64)
- ? (uint64_t) int_size_in_bytes (TREE_TYPE (t))
- : (((uint64_t) TREE_INT_CST_HIGH (DECL_SIZE_UNIT (t))) << 32)
- | TREE_INT_CST_LOW (DECL_SIZE_UNIT (t));
- }
+ && DECL_SIZE_UNIT (t)
+ && TREE_CODE (DECL_SIZE_UNIT (t)) == INTEGER_CST)
+ size = TREE_INT_CST_LOW (DECL_SIZE_UNIT (t));
else
size = 0;
diff --git a/gcc-4.6/gcc/lto/ChangeLog b/gcc-4.6/gcc/lto/ChangeLog
index 453c1881c..4f50139c8 100644
--- a/gcc-4.6/gcc/lto/ChangeLog
+++ b/gcc-4.6/gcc/lto/ChangeLog
@@ -1,3 +1,14 @@
+2011-12-13 Eric Botcazou <ebotcazou@adacore.com>
+
+ * lto.h (lto_parse_hex): Delete.
+ * lto.c (lto_read_decls): Use 'int' for offsets.
+ (lto_parse_hex): Make static and return proper 64-bit host type.
+ (lto_resolution_read): Use proper 64-bit host type.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/gcc/lto/lto.c b/gcc-4.6/gcc/lto/lto.c
index 4c832fb8a..3d699c4f8 100644
--- a/gcc-4.6/gcc/lto/lto.c
+++ b/gcc-4.6/gcc/lto/lto.c
@@ -198,7 +198,7 @@ lto_read_in_decl_state (struct data_in *data_in, const uint32_t *data,
uint32_t ix;
tree decl;
uint32_t i, j;
-
+
ix = *data++;
decl = lto_streamer_cache_get (data_in->reader_cache, (int) ix);
if (TREE_CODE (decl) != FUNCTION_DECL)
@@ -241,9 +241,9 @@ lto_read_decls (struct lto_file_decl_data *decl_data, const void *data,
VEC(ld_plugin_symbol_resolution_t,heap) *resolutions)
{
const struct lto_decl_header *header = (const struct lto_decl_header *) data;
- const int32_t decl_offset = sizeof (struct lto_decl_header);
- const int32_t main_offset = decl_offset + header->decl_state_size;
- const int32_t string_offset = main_offset + header->main_size;
+ const int decl_offset = sizeof (struct lto_decl_header);
+ const int main_offset = decl_offset + header->decl_state_size;
+ const int string_offset = main_offset + header->main_size;
struct lto_input_block ib_main;
struct data_in *data_in;
unsigned int i;
@@ -291,17 +291,20 @@ lto_read_decls (struct lto_file_decl_data *decl_data, const void *data,
if (data_ptr != data_end)
internal_error ("bytecode stream: garbage at the end of symbols section");
-
+
/* Set the current decl state to be the global state. */
decl_data->current_decl_state = decl_data->global_decl_state;
lto_data_in_delete (data_in);
}
-/* strtoll is not portable. */
-int64_t
-lto_parse_hex (const char *p) {
- uint64_t ret = 0;
+/* Custom version of strtoll, which is not portable. */
+
+static HOST_WIDEST_INT
+lto_parse_hex (const char *p)
+{
+ HOST_WIDEST_INT ret = 0;
+
for (; *p != '\0'; ++p)
{
char c = *p;
@@ -317,6 +320,7 @@ lto_parse_hex (const char *p) {
internal_error ("could not parse hex number");
ret |= part;
}
+
return ret;
}
@@ -352,7 +356,7 @@ lto_resolution_read (splay_tree file_ids, FILE *resolution, lto_file *file)
{
int t;
char offset_p[17];
- int64_t offset;
+ HOST_WIDEST_INT offset;
t = fscanf (resolution, "@0x%16s", offset_p);
if (t != 1)
internal_error ("could not parse file offset");
diff --git a/gcc-4.6/gcc/lto/lto.h b/gcc-4.6/gcc/lto/lto.h
index 8110ace27..e7236b6cb 100644
--- a/gcc-4.6/gcc/lto/lto.h
+++ b/gcc-4.6/gcc/lto/lto.h
@@ -60,6 +60,4 @@ struct lto_section_slot
size_t len;
};
-int64_t lto_parse_hex (const char *p);
-
#endif /* LTO_H */
diff --git a/gcc-4.6/gcc/mcf.c b/gcc-4.6/gcc/mcf.c
index cebf20088..85a4e743d 100644
--- a/gcc-4.6/gcc/mcf.c
+++ b/gcc-4.6/gcc/mcf.c
@@ -1442,7 +1442,8 @@ find_minimum_cost_flow (fixup_graph_type *fixup_graph)
if (iteration > MAX_ITER (fixup_graph->num_vertices,
fixup_graph->num_edges))
{
- inform (DECL_SOURCE_LOCATION (current_function_decl),
+ if (flag_opt_info >= OPT_INFO_MAX)
+ inform (DECL_SOURCE_LOCATION (current_function_decl),
"Exiting profile correction early to avoid excessive "
"compile time");
break;
diff --git a/gcc-4.6/gcc/mversn-dispatch.c b/gcc-4.6/gcc/mversn-dispatch.c
index 7c878b2c3..dc9c1a2cf 100644
--- a/gcc-4.6/gcc/mversn-dispatch.c
+++ b/gcc-4.6/gcc/mversn-dispatch.c
@@ -135,6 +135,8 @@ along with GCC; see the file COPYING3. If not see
#include "output.h"
#include "vecprim.h"
#include "gimple-pretty-print.h"
+#include "target.h"
+#include "cfgloop.h"
typedef struct cgraph_node* NODEPTR;
DEF_VEC_P (NODEPTR);
@@ -212,8 +214,7 @@ function_args_count (tree fntype)
return num;
}
-/* Return the variable name (global/constructor) to use for the
- version_selector function with name of DECL by appending SUFFIX. */
+/* Return a new name by appending SUFFIX to the DECL name. */
static char *
make_name (tree decl, const char *suffix)
@@ -226,7 +227,8 @@ make_name (tree decl, const char *suffix)
name_len = strlen (name) + strlen (suffix) + 2;
global_var_name = (char *) xmalloc (name_len);
- snprintf (global_var_name, name_len, "%s_%s", name, suffix);
+ /* Use '.' to concatenate names as it is demangler friendly. */
+ snprintf (global_var_name, name_len, "%s.%s", name, suffix);
return global_var_name;
}
@@ -246,9 +248,9 @@ static char*
make_feature_test_global_name (tree decl, bool is_constructor)
{
if (is_constructor)
- return make_name (decl, "version_selector_constructor");
+ return make_name (decl, "version.selector.constructor");
- return make_name (decl, "version_selector_global");
+ return make_name (decl, "version.selector.global");
}
/* This function creates a new VAR_DECL with attributes set
@@ -865,6 +867,9 @@ empty_function_body (tree fndecl)
e = make_edge (new_bb, EXIT_BLOCK_PTR, 0);
gcc_assert (e != NULL);
+ if (dump_file)
+ dump_function_to_file (current_function_decl, dump_file, TDF_BLOCKS);
+
current_function_decl = old_current_function_decl;
pop_cfun ();
return new_bb;
@@ -954,6 +959,12 @@ clone_function (tree orig_fndecl, const char *name_suffix)
cgraph_call_function_insertion_hooks (new_version);
cgraph_mark_needed_node (new_version);
+
+ free_dominance_info (CDI_DOMINATORS);
+ free_dominance_info (CDI_POST_DOMINATORS);
+ calculate_dominance_info (CDI_DOMINATORS);
+ calculate_dominance_info (CDI_POST_DOMINATORS);
+
pop_cfun ();
current_function_decl = old_current_function_decl;
@@ -1034,9 +1045,9 @@ make_specialized_call_to_clone (gimple generic_stmt, int side)
gcc_assert (generic_fndecl != NULL);
if (side == 0)
- new_name = make_name (generic_fndecl, "clone_0");
+ new_name = make_name (generic_fndecl, "clone.0");
else
- new_name = make_name (generic_fndecl, "clone_1");
+ new_name = make_name (generic_fndecl, "clone.1");
slot = htab_find_slot_with_hash (name_decl_htab, new_name,
htab_hash_string (new_name), NO_INSERT);
@@ -1232,8 +1243,8 @@ clone_and_dispatch_function (struct cgraph_node *orig_node, tree *clone_0,
current_function_decl = orig_fndecl;
/* Make 2 clones for true and false function. */
- clone_0_decl = clone_function (orig_fndecl, "clone_0");
- clone_1_decl = clone_function (orig_fndecl, "clone_1");
+ clone_0_decl = clone_function (orig_fndecl, "clone.0");
+ clone_1_decl = clone_function (orig_fndecl, "clone.1");
*clone_0 = clone_0_decl;
*clone_1 = clone_1_decl;
@@ -1764,3 +1775,709 @@ struct gimple_opt_pass pass_tree_convert_builtin_dispatch =
TODO_update_ssa | TODO_verify_ssa
}
};
+
+/* This function generates gimple code in NEW_BB to check if COND_VAR
+ is equal to WHICH_VERSION and return FN_VER pointer if it is equal.
+ The basic block returned is the block where the control flows if
+ the equality is false. */
+
+static basic_block
+make_bb_flow (basic_block new_bb, tree cond_var, tree fn_ver,
+ int which_version, tree bindings)
+{
+ tree result_var;
+ tree convert_expr;
+
+ basic_block bb1, bb2, bb3;
+ edge e12, e23;
+
+ gimple if_else_stmt;
+ gimple if_stmt;
+ gimple return_stmt;
+ gimple_seq gseq = bb_seq (new_bb);
+
+ /* Check if the value of cond_var is equal to which_version. */
+ if_else_stmt = gimple_build_cond (EQ_EXPR, cond_var,
+ build_int_cst (NULL, which_version),
+ NULL_TREE, NULL_TREE);
+
+ mark_symbols_for_renaming (if_else_stmt);
+ gimple_seq_add_stmt (&gseq, if_else_stmt);
+ gimple_set_block (if_else_stmt, bindings);
+ gimple_set_bb (if_else_stmt, new_bb);
+
+ result_var = create_tmp_var (ptr_type_node, NULL);
+ add_referenced_var (result_var);
+
+ convert_expr = build1 (CONVERT_EXPR, ptr_type_node, fn_ver);
+ if_stmt = gimple_build_assign (result_var, convert_expr);
+ mark_symbols_for_renaming (if_stmt);
+ gimple_seq_add_stmt (&gseq, if_stmt);
+ gimple_set_block (if_stmt, bindings);
+
+ return_stmt = gimple_build_return (result_var);
+ mark_symbols_for_renaming (return_stmt);
+ gimple_seq_add_stmt (&gseq, return_stmt);
+
+ set_bb_seq (new_bb, gseq);
+
+ bb1 = new_bb;
+ e12 = split_block (bb1, if_else_stmt);
+ bb2 = e12->dest;
+ e12->flags &= ~EDGE_FALLTHRU;
+ e12->flags |= EDGE_TRUE_VALUE;
+
+ e23 = split_block (bb2, return_stmt);
+ gimple_set_bb (if_stmt, bb2);
+ gimple_set_bb (return_stmt, bb2);
+ bb3 = e23->dest;
+ make_edge (bb1, bb3, EDGE_FALSE_VALUE);
+
+ remove_edge (e23);
+ make_edge (bb2, EXIT_BLOCK_PTR, 0);
+
+ return bb3;
+}
+
+/* Given the pointer to the condition function COND_FUNC_ARG, whose return
+ value decides the version that gets executed, and the pointers to the
+ function versions, FN_VER_LIST, this function generates control-flow to
+ return the appropriate function version pointer based on the return value
+ of the conditional function. The condition function is assumed to return
+ values 0, 1, 2, ... */
+
+static gimple_seq
+get_selector_gimple_seq (tree cond_func_arg, tree fn_ver_list, tree default_ver,
+ basic_block new_bb, tree bindings)
+{
+ basic_block final_bb;
+
+ gimple return_stmt, default_stmt;
+ gimple_seq gseq = NULL;
+ gimple_seq gseq_final = NULL;
+ gimple call_cond_stmt;
+
+ tree result_var;
+ tree convert_expr;
+ tree p;
+ tree cond_var;
+
+ int which_version;
+
+ /* Call the condition function once and store the outcome in cond_var. */
+ cond_var = create_tmp_var (integer_type_node, NULL);
+ call_cond_stmt = gimple_build_call (cond_func_arg, 0);
+ gimple_call_set_lhs (call_cond_stmt, cond_var);
+ add_referenced_var (cond_var);
+ mark_symbols_for_renaming (call_cond_stmt);
+
+ gimple_seq_add_stmt (&gseq, call_cond_stmt);
+ gimple_set_block (call_cond_stmt, bindings);
+ gimple_set_bb (call_cond_stmt, new_bb);
+
+ set_bb_seq (new_bb, gseq);
+
+ final_bb = new_bb;
+
+ which_version = 0;
+ for (p = fn_ver_list; p != NULL_TREE; p = TREE_CHAIN (p))
+ {
+ tree ver = TREE_PURPOSE (p);
+ /* Return this version's pointer, VER, if the value returned by the
+ condition funciton is equal to WHICH_VERSION. */
+ final_bb = make_bb_flow (final_bb, cond_var, ver, which_version,
+ bindings);
+ which_version++;
+ }
+
+ result_var = create_tmp_var (ptr_type_node, NULL);
+ add_referenced_var (result_var);
+
+ /* Return the default version function pointer as the default. */
+ convert_expr = build1 (CONVERT_EXPR, ptr_type_node, default_ver);
+ default_stmt = gimple_build_assign (result_var, convert_expr);
+ mark_symbols_for_renaming (default_stmt);
+ gimple_seq_add_stmt (&gseq_final, default_stmt);
+ gimple_set_block (default_stmt, bindings);
+ gimple_set_bb (default_stmt, final_bb);
+
+ return_stmt = gimple_build_return (result_var);
+ mark_symbols_for_renaming (return_stmt);
+ gimple_seq_add_stmt (&gseq_final, return_stmt);
+ gimple_set_bb (return_stmt, final_bb);
+
+ set_bb_seq (final_bb, gseq_final);
+
+ return gseq;
+}
+
+/* Make the ifunc selector function which calls function pointed to by
+ COND_FUNC_ARG and checks the value to return the appropriate function
+ version pointer. */
+
+static tree
+make_selector_function (const char *name, tree cond_func_arg,
+ tree fn_ver_list, tree default_ver)
+{
+ tree decl, type, t;
+ basic_block new_bb;
+ tree old_current_function_decl;
+ tree decl_name;
+
+ /* The selector function should return a (void *). */
+ type = build_function_type_list (ptr_type_node, NULL_TREE);
+
+ decl = build_fn_decl (name, type);
+
+ decl_name = get_identifier (name);
+ SET_DECL_ASSEMBLER_NAME (decl, decl_name);
+ DECL_NAME (decl) = decl_name;
+ gcc_assert (cgraph_node (decl) != NULL);
+
+ TREE_USED (decl) = 1;
+ DECL_ARTIFICIAL (decl) = 1;
+ DECL_IGNORED_P (decl) = 0;
+ TREE_PUBLIC (decl) = 0;
+ DECL_UNINLINABLE (decl) = 1;
+ DECL_EXTERNAL (decl) = 0;
+ DECL_CONTEXT (decl) = NULL_TREE;
+ DECL_INITIAL (decl) = make_node (BLOCK);
+ DECL_STATIC_CONSTRUCTOR (decl) = 0;
+ TREE_READONLY (decl) = 0;
+ DECL_PURE_P (decl) = 0;
+
+ /* Build result decl and add to function_decl. */
+ t = build_decl (UNKNOWN_LOCATION, RESULT_DECL, NULL_TREE, ptr_type_node);
+ DECL_ARTIFICIAL (t) = 1;
+ DECL_IGNORED_P (t) = 1;
+ DECL_RESULT (decl) = t;
+
+ gimplify_function_tree (decl);
+
+ old_current_function_decl = current_function_decl;
+ push_cfun (DECL_STRUCT_FUNCTION (decl));
+ current_function_decl = decl;
+ init_empty_tree_cfg_for_function (DECL_STRUCT_FUNCTION (decl));
+
+ cfun->curr_properties |=
+ (PROP_gimple_lcf | PROP_gimple_leh | PROP_cfg | PROP_referenced_vars |
+ PROP_ssa);
+
+ new_bb = create_empty_bb (ENTRY_BLOCK_PTR);
+ make_edge (ENTRY_BLOCK_PTR, new_bb, EDGE_FALLTHRU);
+ make_edge (new_bb, EXIT_BLOCK_PTR, 0);
+
+ /* This call is very important if this pass runs when the IR is in
+ SSA form. It breaks things in strange ways otherwise. */
+ init_tree_ssa (DECL_STRUCT_FUNCTION (decl));
+ init_ssa_operands ();
+
+ /* Make the body of thr selector function. */
+ get_selector_gimple_seq (cond_func_arg, fn_ver_list, default_ver, new_bb,
+ DECL_INITIAL (decl));
+
+ cgraph_add_new_function (decl, true);
+ cgraph_call_function_insertion_hooks (cgraph_node (decl));
+ cgraph_mark_needed_node (cgraph_node (decl));
+
+ if (dump_file)
+ dump_function_to_file (decl, dump_file, TDF_BLOCKS);
+
+ pop_cfun ();
+ current_function_decl = old_current_function_decl;
+ return decl;
+}
+
+/* Makes a function attribute of the form NAME(ARG_NAME) and chains
+ it to CHAIN. */
+
+static tree
+make_attribute (const char *name, const char *arg_name, tree chain)
+{
+ tree attr_name;
+ tree attr_arg_name;
+ tree attr_args;
+ tree attr;
+
+ attr_name = get_identifier (name);
+ attr_arg_name = build_string (strlen (arg_name), arg_name);
+ attr_args = tree_cons (NULL_TREE, attr_arg_name, NULL_TREE);
+ attr = tree_cons (attr_name, attr_args, chain);
+ return attr;
+}
+
+/* This creates the ifunc function IFUNC_NAME whose selector function is
+ SELECTOR_NAME. */
+
+static tree
+make_ifunc_function (const char* ifunc_name, const char *selector_name,
+ tree fn_type)
+{
+ tree type;
+ tree decl;
+
+ /* The signature of the ifunc function is set to the
+ type of any version. */
+ type = build_function_type (TREE_TYPE (fn_type), TYPE_ARG_TYPES (fn_type));
+ decl = build_fn_decl (ifunc_name, type);
+
+ DECL_CONTEXT (decl) = NULL_TREE;
+ DECL_INITIAL (decl) = error_mark_node;
+
+ /* Set ifunc attribute */
+ DECL_ATTRIBUTES (decl)
+ = make_attribute ("ifunc", selector_name, DECL_ATTRIBUTES (decl));
+
+ assemble_alias (decl, get_identifier (selector_name));
+
+ return decl;
+}
+
+/* Copy the decl attributes from from_decl to to_decl, except
+ DECL_ARTIFICIAL and TREE_PUBLIC. */
+
+static void
+copy_decl_attributes (tree to_decl, tree from_decl)
+{
+ TREE_READONLY (to_decl) = TREE_READONLY (from_decl);
+ TREE_USED (to_decl) = TREE_USED (from_decl);
+ DECL_ARTIFICIAL (to_decl) = 1;
+ DECL_IGNORED_P (to_decl) = DECL_IGNORED_P (from_decl);
+ TREE_PUBLIC (to_decl) = 0;
+ DECL_CONTEXT (to_decl) = DECL_CONTEXT (from_decl);
+ DECL_EXTERNAL (to_decl) = DECL_EXTERNAL (from_decl);
+ DECL_COMDAT (to_decl) = DECL_COMDAT (from_decl);
+ DECL_COMDAT_GROUP (to_decl) = DECL_COMDAT_GROUP (from_decl);
+ DECL_VIRTUAL_P (to_decl) = DECL_VIRTUAL_P (from_decl);
+ DECL_WEAK (to_decl) = DECL_WEAK (from_decl);
+}
+
+/* This function does the mult-version run-time dispatch using IFUNC. Given
+ NUM_VERSIONS versions of a function with the decls in FN_VER_LIST along
+ with a default version in DEFAULT_VER. Also given is a condition function,
+ COND_FUNC_ADDR, whose return value decides the version that gets executed.
+ This function generates the necessary code to dispatch the right function
+ version and returns this a GIMPLE_SEQ. The decls of the ifunc function and
+ the selector function that are created are stored in IFUNC_DECL and
+ SELECTOR_DECL. */
+
+static gimple_seq
+dispatch_using_ifunc (int num_versions, tree orig_func_decl,
+ tree cond_func_addr, tree fn_ver_list,
+ tree default_ver, tree *selector_decl,
+ tree *ifunc_decl)
+{
+ char *selector_name;
+ char *ifunc_name;
+ tree ifunc_function;
+ tree selector_function;
+ tree return_type;
+ VEC (tree, heap) *nargs = NULL;
+ tree arg;
+ gimple ifunc_call_stmt;
+ gimple return_stmt;
+ gimple_seq gseq = NULL;
+
+ gcc_assert (cond_func_addr != NULL
+ && num_versions > 0
+ && orig_func_decl != NULL
+ && fn_ver_list != NULL);
+
+ /* The return type of any function version. */
+ return_type = TREE_TYPE (TREE_TYPE (orig_func_decl));
+
+ nargs = VEC_alloc (tree, heap, 4);
+
+ for (arg = DECL_ARGUMENTS (orig_func_decl);
+ arg; arg = TREE_CHAIN (arg))
+ {
+ VEC_safe_push (tree, heap, nargs, arg);
+ add_referenced_var (arg);
+ }
+
+ /* Assign names to ifunc and ifunc_selector functions. */
+ selector_name = make_name (orig_func_decl, "ifunc.selector");
+ ifunc_name = make_name (orig_func_decl, "ifunc");
+
+ /* Make a selector function which returns the appropriate function
+ version pointer based on the outcome of the condition function
+ execution. */
+ selector_function = make_selector_function (selector_name, cond_func_addr,
+ fn_ver_list, default_ver);
+ *selector_decl = selector_function;
+
+ /* Make a new ifunc function. */
+ ifunc_function = make_ifunc_function (ifunc_name, selector_name,
+ TREE_TYPE (orig_func_decl));
+ *ifunc_decl = ifunc_function;
+
+ /* Make selector and ifunc shadow the attributes of the original function. */
+ copy_decl_attributes (ifunc_function, orig_func_decl);
+ copy_decl_attributes (selector_function, orig_func_decl);
+
+ ifunc_call_stmt = gimple_build_call_vec (ifunc_function, nargs);
+ gimple_seq_add_stmt (&gseq, ifunc_call_stmt);
+
+ /* Make function return the value of it is a non-void type. */
+ if (TREE_CODE (return_type) != VOID_TYPE)
+ {
+ tree lhs_var;
+ tree lhs_var_ssa_name;
+ tree result_decl;
+
+ result_decl = DECL_RESULT (orig_func_decl);
+
+ if (result_decl
+ && aggregate_value_p (result_decl, orig_func_decl)
+ && !TREE_ADDRESSABLE (result_decl))
+ {
+ /* Build a RESULT_DECL rather than a VAR_DECL for this case.
+ See tree-nrv.c: tree_nrv. It checks if the DECL_RESULT and the
+ return value are the same. */
+ lhs_var = build_decl (UNKNOWN_LOCATION, RESULT_DECL, NULL,
+ return_type);
+ DECL_ARTIFICIAL (lhs_var) = 1;
+ DECL_IGNORED_P (lhs_var) = 1;
+ TREE_READONLY (lhs_var) = 0;
+ DECL_EXTERNAL (lhs_var) = 0;
+ TREE_STATIC (lhs_var) = 0;
+ TREE_USED (lhs_var) = 1;
+
+ add_referenced_var (lhs_var);
+ DECL_RESULT (orig_func_decl) = lhs_var;
+ }
+ else if (!TREE_ADDRESSABLE (return_type)
+ && COMPLETE_TYPE_P (return_type))
+ {
+ lhs_var = create_tmp_var (return_type, NULL);
+ add_referenced_var (lhs_var);
+ }
+ else
+ {
+ lhs_var = create_tmp_var_raw (return_type, NULL);
+ TREE_ADDRESSABLE (lhs_var) = 1;
+ gimple_add_tmp_var (lhs_var);
+ add_referenced_var (lhs_var);
+ }
+
+ if (AGGREGATE_TYPE_P (return_type)
+ || TREE_CODE (return_type) == COMPLEX_TYPE)
+ {
+ gimple_call_set_lhs (ifunc_call_stmt, lhs_var);
+ return_stmt = gimple_build_return (lhs_var);
+ }
+ else
+ {
+ lhs_var_ssa_name = make_ssa_name (lhs_var, ifunc_call_stmt);
+ gimple_call_set_lhs (ifunc_call_stmt, lhs_var_ssa_name);
+ return_stmt = gimple_build_return (lhs_var_ssa_name);
+ }
+ }
+ else
+ {
+ return_stmt = gimple_build_return (NULL_TREE);
+ }
+
+ mark_symbols_for_renaming (ifunc_call_stmt);
+ mark_symbols_for_renaming (return_stmt);
+ gimple_seq_add_stmt (&gseq, return_stmt);
+
+ VEC_free (tree, heap, nargs);
+ return gseq;
+}
+
+/* Empty the function body of function fndecl. Retain just one basic block
+ along with the ENTRY and EXIT block. Return the retained basic block. */
+
+static basic_block
+purge_function_body (tree fndecl)
+{
+ basic_block bb, new_bb;
+ edge first_edge, last_edge;
+ tree old_current_function_decl;
+
+ old_current_function_decl = current_function_decl;
+ push_cfun (DECL_STRUCT_FUNCTION (fndecl));
+ current_function_decl = fndecl;
+
+ /* Set new_bb to be the first block after ENTRY_BLOCK_PTR. */
+
+ first_edge = VEC_index (edge, ENTRY_BLOCK_PTR->succs, 0);
+ new_bb = first_edge->dest;
+ gcc_assert (new_bb != NULL);
+
+ for (bb = ENTRY_BLOCK_PTR; bb != NULL;)
+ {
+ edge_iterator ei;
+ edge e;
+ basic_block bb_next;
+ bb_next = bb->next_bb;
+ if (bb == EXIT_BLOCK_PTR)
+ VEC_truncate (edge, EXIT_BLOCK_PTR->preds, 0);
+ else if (bb == ENTRY_BLOCK_PTR)
+ VEC_truncate (edge, ENTRY_BLOCK_PTR->succs, 0);
+ else
+ {
+ remove_phi_nodes (bb);
+ if (bb_seq (bb) != NULL)
+ {
+ gimple_stmt_iterator i;
+ for (i = gsi_start_bb (bb); !gsi_end_p (i);)
+ {
+ gimple stmt = gsi_stmt (i);
+ unlink_stmt_vdef (stmt);
+ reset_debug_uses (stmt);
+ gsi_remove (&i, true);
+ release_defs (stmt);
+ }
+ }
+ FOR_EACH_EDGE (e, ei, bb->succs)
+ {
+ n_edges--;
+ ggc_free (e);
+ }
+ VEC_truncate (edge, bb->succs, 0);
+ VEC_truncate (edge, bb->preds, 0);
+ bb->prev_bb = NULL;
+ bb->next_bb = NULL;
+ if (bb == new_bb)
+ {
+ bb = bb_next;
+ continue;
+ }
+ bb->il.gimple = NULL;
+ SET_BASIC_BLOCK (bb->index, NULL);
+ n_basic_blocks--;
+ }
+ bb = bb_next;
+ }
+
+
+ /* This is to allow iterating over the basic blocks. */
+ new_bb->next_bb = EXIT_BLOCK_PTR;
+ EXIT_BLOCK_PTR->prev_bb = new_bb;
+
+ new_bb->prev_bb = ENTRY_BLOCK_PTR;
+ ENTRY_BLOCK_PTR->next_bb = new_bb;
+
+ gcc_assert (find_edge (new_bb, EXIT_BLOCK_PTR) == NULL);
+ last_edge = make_edge (new_bb, EXIT_BLOCK_PTR, 0);
+ gcc_assert (last_edge);
+
+ gcc_assert (find_edge (ENTRY_BLOCK_PTR, new_bb) == NULL);
+ last_edge = make_edge (ENTRY_BLOCK_PTR, new_bb, EDGE_FALLTHRU);
+ gcc_assert (last_edge);
+
+ free_dominance_info (CDI_DOMINATORS);
+ free_dominance_info (CDI_POST_DOMINATORS);
+ calculate_dominance_info (CDI_DOMINATORS);
+ calculate_dominance_info (CDI_POST_DOMINATORS);
+
+ current_function_decl = old_current_function_decl;
+ pop_cfun ();
+
+ return new_bb;
+}
+
+/* Returns true if function FUNC_DECL contains abnormal goto statements. */
+
+static bool
+function_can_make_abnormal_goto (tree func_decl)
+{
+ basic_block bb;
+ FOR_EACH_BB_FN (bb, DECL_STRUCT_FUNCTION (func_decl))
+ {
+ gimple_stmt_iterator gsi;
+ for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
+ {
+ gimple stmt = gsi_stmt (gsi);
+ if (stmt_can_make_abnormal_goto (stmt))
+ return true;
+ }
+ }
+ return false;
+}
+
+/* Has an entry for every cloned function and auxiliaries that have been
+ generated by auto cloning. These cannot be further cloned. */
+
+htab_t cloned_function_decls_htab = NULL;
+
+/* Adds function FUNC_DECL to the cloned_function_decls_htab. */
+
+static void
+mark_function_not_cloneable (tree func_decl)
+{
+ void **slot;
+
+ slot = htab_find_slot_with_hash (cloned_function_decls_htab, func_decl,
+ htab_hash_pointer (func_decl), INSERT);
+ gcc_assert (*slot == NULL);
+ *slot = func_decl;
+}
+
+/* Entry point for the auto clone pass. Calls the target hook to determine if
+ this function must be cloned. */
+
+static unsigned int
+do_auto_clone (void)
+{
+ tree opt_node = NULL_TREE;
+ int num_versions = 0;
+ int i = 0;
+ tree fn_ver_addr_chain = NULL_TREE;
+ tree default_ver = NULL_TREE;
+ tree cond_func_decl = NULL_TREE;
+ tree cond_func_addr;
+ tree default_decl;
+ basic_block empty_bb;
+ gimple_seq gseq = NULL;
+ gimple_stmt_iterator gsi;
+ tree selector_decl;
+ tree ifunc_decl;
+ void **slot;
+ struct cgraph_node *node;
+
+ node = cgraph_node (current_function_decl);
+
+ if (lookup_attribute ("noclone", DECL_ATTRIBUTES (current_function_decl))
+ != NULL)
+ {
+ if (dump_file)
+ fprintf (dump_file, "Not cloning, noclone attribute set\n");
+ return 0;
+ }
+
+ if (lookup_attribute ("target", DECL_ATTRIBUTES (current_function_decl))
+ != NULL)
+ {
+ if (dump_file)
+ fprintf (dump_file, "Not cloning, target attribute set\n");
+ return 0;
+ }
+
+ /* No cloning of constructors and destructors. */
+ if (DECL_STATIC_CONSTRUCTOR (current_function_decl)
+ || DECL_STATIC_DESTRUCTOR (current_function_decl))
+ return 0;
+
+ /* Check if function size is within permissible limits for cloning. */
+ if (node->global.size
+ > PARAM_VALUE (PARAM_MAX_FUNCTION_SIZE_FOR_AUTO_CLONING))
+ {
+ if (dump_file)
+ fprintf (dump_file, "Function size exceeds auto cloning threshold.\n");
+ return 0;
+ }
+
+ if (cloned_function_decls_htab == NULL)
+ cloned_function_decls_htab = htab_create (10, htab_hash_pointer,
+ htab_eq_pointer, NULL);
+
+
+ /* If this function is a clone or other, like the selector function, pass. */
+ slot = htab_find_slot_with_hash (cloned_function_decls_htab,
+ current_function_decl,
+ htab_hash_pointer (current_function_decl),
+ INSERT);
+
+ if (*slot != NULL)
+ return 0;
+
+ if (profile_status == PROFILE_READ
+ && !hot_function_p (cgraph_node (current_function_decl)))
+ return 0;
+
+ /* Ignore functions with abnormal gotos, not correct to clone them. */
+ if (function_can_make_abnormal_goto (current_function_decl))
+ return 0;
+
+ if (!targetm.mversion_function)
+ return 0;
+
+ /* Call the target hook to see if this function needs to be versioned. */
+ num_versions = targetm.mversion_function (current_function_decl, &opt_node,
+ &cond_func_decl);
+
+ /* Nothing more to do if versions are not to be created. */
+ if (num_versions == 0)
+ return 0;
+
+ mark_function_not_cloneable (cond_func_decl);
+ copy_decl_attributes (cond_func_decl, current_function_decl);
+
+ /* Make as many clones as requested. */
+ for (i = 0; i < num_versions; ++i)
+ {
+ tree cloned_decl;
+ char clone_name[100];
+
+ sprintf (clone_name, "autoclone.%d", i);
+ cloned_decl = clone_function (current_function_decl, clone_name);
+ fn_ver_addr_chain = tree_cons (build_fold_addr_expr (cloned_decl),
+ NULL, fn_ver_addr_chain);
+ gcc_assert (cloned_decl != NULL);
+ mark_function_not_cloneable (cloned_decl);
+ DECL_FUNCTION_SPECIFIC_TARGET (cloned_decl)
+ = TREE_PURPOSE (opt_node);
+ opt_node = TREE_CHAIN (opt_node);
+ }
+
+ /* The current function is replaced by an ifunc call to the right version.
+ Make another clone for the default. */
+ default_decl = clone_function (current_function_decl, "autoclone.original");
+ mark_function_not_cloneable (default_decl);
+ /* Empty the body of the current function. */
+ empty_bb = purge_function_body (current_function_decl);
+ default_ver = build_fold_addr_expr (default_decl);
+ cond_func_addr = build_fold_addr_expr (cond_func_decl);
+
+ /* Get the gimple sequence to replace the current function's body with a
+ ifunc dispatch call to the right version. */
+ gseq = dispatch_using_ifunc (num_versions, current_function_decl,
+ cond_func_addr, fn_ver_addr_chain,
+ default_ver, &selector_decl, &ifunc_decl);
+
+ mark_function_not_cloneable (selector_decl);
+ mark_function_not_cloneable (ifunc_decl);
+
+ for (gsi = gsi_start (gseq); !gsi_end_p (gsi); gsi_next (&gsi))
+ gimple_set_bb (gsi_stmt (gsi), empty_bb);
+
+ set_bb_seq (empty_bb, gseq);
+
+ if (dump_file)
+ dump_function_to_file (current_function_decl, dump_file, TDF_BLOCKS);
+
+ update_ssa (TODO_update_ssa_no_phi);
+
+ return 0;
+}
+
+static bool
+gate_auto_clone (void)
+{
+ /* Turned on at -O2 and above. */
+ return optimize >= 2;
+}
+
+struct gimple_opt_pass pass_auto_clone =
+{
+ {
+ GIMPLE_PASS,
+ "auto_clone", /* name */
+ gate_auto_clone, /* gate */
+ do_auto_clone, /* execute */
+ NULL, /* sub */
+ NULL, /* next */
+ 0, /* static_pass_number */
+ TV_MVERSN_DISPATCH, /* tv_id */
+ PROP_cfg, /* properties_required */
+ PROP_cfg, /* properties_provided */
+ 0, /* properties_destroyed */
+ 0, /* todo_flags_start */
+ TODO_dump_func | /* todo_flags_finish */
+ TODO_cleanup_cfg | TODO_dump_cgraph |
+ TODO_update_ssa | TODO_verify_ssa
+ }
+};
diff --git a/gcc-4.6/gcc/objc/ChangeLog b/gcc-4.6/gcc/objc/ChangeLog
index 74539089f..5b6783e94 100644
--- a/gcc-4.6/gcc/objc/ChangeLog
+++ b/gcc-4.6/gcc/objc/ChangeLog
@@ -1,3 +1,22 @@
+2011-11-12 Iain Sandoe <iains@gcc.gnu.org>
+
+ Backport from mainline
+ 2011-10-29 Iain Sandoe <iains@gcc.gnu.org>
+
+ PR target/47997
+ * objc-act.c (objc_build_string_object): Remove redundant second
+ call to fix_string_type (). Add a checking assert that we are,
+ indeed, passed a STRING_CST.
+
+2011-11-12 Iain Sandoe <iains@gcc.gnu.org>
+
+ * objc-next-runtime-abi-01.c (objc_eh_personality): Use gcc personality
+ for Objective-C m32.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/gcc/objc/objc-act.c b/gcc-4.6/gcc/objc/objc-act.c
index 451143531..cca60a071 100644
--- a/gcc-4.6/gcc/objc/objc-act.c
+++ b/gcc-4.6/gcc/objc/objc-act.c
@@ -3136,9 +3136,8 @@ objc_build_string_object (tree string)
struct string_descriptor *desc, key;
void **loc;
- /* Prep the string argument. */
- string = fix_string_type (string);
- TREE_SET_CODE (string, STRING_CST);
+ /* We should be passed a STRING_CST. */
+ gcc_checking_assert (TREE_CODE (string) == STRING_CST);
length = TREE_STRING_LENGTH (string) - 1;
/* The target may have different ideas on how to construct an ObjC string
diff --git a/gcc-4.6/gcc/objc/objc-next-runtime-abi-01.c b/gcc-4.6/gcc/objc/objc-next-runtime-abi-01.c
index 3bab0a92d..84626b3bc 100644
--- a/gcc-4.6/gcc/objc/objc-next-runtime-abi-01.c
+++ b/gcc-4.6/gcc/objc/objc-next-runtime-abi-01.c
@@ -2871,12 +2871,15 @@ make_err_class:
return eh_id;
}
+/* For NeXT ABI 0 and 1, the personality routines are just those of the
+ underlying language. */
+
static tree
objc_eh_personality (void)
{
if (!objc_eh_personality_decl)
#ifndef OBJCPLUS
- objc_eh_personality_decl = build_personality_function ("objc");
+ objc_eh_personality_decl = build_personality_function ("gcc");
#else
objc_eh_personality_decl = build_personality_function ("gxx");
#endif
diff --git a/gcc-4.6/gcc/objcp/ChangeLog b/gcc-4.6/gcc/objcp/ChangeLog
index 8060d48ba..ba2225357 100644
--- a/gcc-4.6/gcc/objcp/ChangeLog
+++ b/gcc-4.6/gcc/objcp/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/gcc/omp-low.c b/gcc-4.6/gcc/omp-low.c
index 5b0fdff17..364f51e3b 100644
--- a/gcc-4.6/gcc/omp-low.c
+++ b/gcc-4.6/gcc/omp-low.c
@@ -785,7 +785,7 @@ use_pointer_for_field (tree decl, omp_context *shared_ctx)
break;
if (c)
- return true;
+ goto maybe_mark_addressable_and_ret;
}
}
@@ -795,7 +795,9 @@ use_pointer_for_field (tree decl, omp_context *shared_ctx)
returns, the task hasn't necessarily terminated. */
if (!TREE_READONLY (decl) && is_task_ctx (shared_ctx))
{
- tree outer = maybe_lookup_decl_in_outer_ctx (decl, shared_ctx);
+ tree outer;
+ maybe_mark_addressable_and_ret:
+ outer = maybe_lookup_decl_in_outer_ctx (decl, shared_ctx);
if (is_gimple_reg (outer))
{
/* Taking address of OUTER in lower_send_shared_vars
diff --git a/gcc-4.6/gcc/opts.c b/gcc-4.6/gcc/opts.c
index 6fb3bddd7..0274c8826 100644
--- a/gcc-4.6/gcc/opts.c
+++ b/gcc-4.6/gcc/opts.c
@@ -1535,6 +1535,15 @@ common_handle_option (struct gcc_options *opts,
pp_set_line_maximum_length (dc->printer, value);
break;
+ case OPT_fopt_info_:
+ if (value < 0 || value > OPT_INFO_MAX)
+ error_at (loc,
+ "%d: invalid value for opt_info",
+ value);
+ else
+ opts->x_flag_opt_info = value;
+ break;
+
case OPT_fpack_struct_:
if (value <= 0 || (value & (value - 1)) || value > 16)
error_at (loc,
diff --git a/gcc-4.6/gcc/opts.h b/gcc-4.6/gcc/opts.h
index 58624aae9..379ae2d23 100644
--- a/gcc-4.6/gcc/opts.h
+++ b/gcc-4.6/gcc/opts.h
@@ -381,4 +381,5 @@ extern void default_options_optimization (struct gcc_options *opts,
extern void set_struct_debug_option (struct gcc_options *opts,
location_t loc,
const char *value);
+extern void write_opts_to_asm (void);
#endif
diff --git a/gcc-4.6/gcc/output.h b/gcc-4.6/gcc/output.h
index c668d3521..7031b0843 100644
--- a/gcc-4.6/gcc/output.h
+++ b/gcc-4.6/gcc/output.h
@@ -443,6 +443,7 @@ extern void no_asm_to_stream (FILE *);
#define SECTION_COMMON 0x800000 /* contains common data */
#define SECTION_RELRO 0x1000000 /* data is readonly after relocation processing */
#define SECTION_MACH_DEP 0x2000000 /* subsequent bits reserved for target */
+#define SECTION_EXCLUDE 0x4000000 /* discarded by the linker */
/* This SECTION_STYLE is used for unnamed sections that we can switch
to using a special assembler directive. */
diff --git a/gcc-4.6/gcc/params.def b/gcc-4.6/gcc/params.def
index 0c6a2e2c7..168fb5fcf 100644
--- a/gcc-4.6/gcc/params.def
+++ b/gcc-4.6/gcc/params.def
@@ -340,6 +340,21 @@ DEFPARAM(PARAM_MAX_UNROLL_ITERATIONS,
"max-completely-peel-loop-nest-depth",
"The maximum depth of a loop nest we completely peel",
8, 0, 0)
+/* The minimum profile count of basic blocks to look at when estimating
+ * the code size footprint of the call graph in a dynamic IPA compile. */
+DEFPARAM(PARAM_CODESIZE_HOTNESS_THRESHOLD,
+ "codesize-hotness-threshold",
+ "Minimum profile count of basic blocks counted towards dynamic IPA "
+ "code size footprint estimate",
+ 10000, 0, 0)
+/* The maximum code size estimate under which loop unrolling and peeling
+ * is allowed in a dynamic IPA compile. This currently applies to loops with
+ * non-constant iteration counts and no floating point computations. */
+DEFPARAM(PARAM_UNROLLPEEL_CODESIZE_THRESHOLD,
+ "unrollpeel-codesize-threshold",
+ "Maximum dynamic IPA code size footprint estimate for loop unrolling "
+ "and peeling",
+ 10000, 0, 0)
/* The maximum number of insns of an unswitched loop. */
DEFPARAM(PARAM_MAX_UNSWITCH_INSNS,
@@ -382,7 +397,7 @@ DEFPARAM(PARAM_SMS_LOOP_AVERAGE_COUNT_THRESHOLD,
DEFPARAM(HOT_BB_COUNT_FRACTION,
"hot-bb-count-fraction",
"Select fraction of the maximal count of repetitions of basic block in program given basic block needs to have to be considered hot",
- 10000, 0, 0)
+ 40000, 0, 0)
DEFPARAM(HOT_BB_FREQUENCY_FRACTION,
"hot-bb-frequency-fraction",
"Select fraction of the maximal frequency of executions of basic block in function given basic block needs to have to be considered hot",
@@ -1009,12 +1024,12 @@ DEFPARAM (PARAM_MVERSN_CLONE_CGRAPH_DEPTH,
"while doing multiversioning",
2, 0, 5)
-/* Only output those call graph edges in .note.callgraph.text sections
+/* Only output those call graph edges in .gnu.callgraph.text sections
whose count is greater than this value. */
DEFPARAM (PARAM_NOTE_CGRAPH_SECTION_EDGE_THRESHOLD,
"note-cgraph-section-edge-threshold",
"minimum call graph edge count for inclusion in "
- ".note.callgraph.text section",
+ ".gnu.callgraph.text section",
0, 0, 0)
DEFPARAM (PARAM_PMU_PROFILE_N_ADDRESS,
@@ -1022,6 +1037,11 @@ DEFPARAM (PARAM_PMU_PROFILE_N_ADDRESS,
"While doing PMU profiling symbolize this many top addresses.",
50, 1, 10000)
+DEFPARAM (PARAM_MAX_FUNCTION_SIZE_FOR_AUTO_CLONING,
+ "autoclone-function-size-limit",
+ "Do not auto clone functions beyond this size.",
+ 450, 0, 100000)
+
/*
Local variables:
mode:c
diff --git a/gcc-4.6/gcc/passes.c b/gcc-4.6/gcc/passes.c
index 9aaa0e5ec..41867336c 100644
--- a/gcc-4.6/gcc/passes.c
+++ b/gcc-4.6/gcc/passes.c
@@ -1278,6 +1278,7 @@ init_optimization_passes (void)
/* These passes are run after IPA passes on every function that is being
output to the assembler file. */
p = &all_passes;
+ NEXT_PASS (pass_auto_clone);
NEXT_PASS (pass_direct_call_profile);
NEXT_PASS (pass_lower_eh_dispatch);
NEXT_PASS (pass_all_optimizations);
diff --git a/gcc-4.6/gcc/po/ChangeLog b/gcc-4.6/gcc/po/ChangeLog
index bd68888f2..942cd2e62 100644
--- a/gcc-4.6/gcc/po/ChangeLog
+++ b/gcc-4.6/gcc/po/ChangeLog
@@ -1,3 +1,35 @@
+2011-10-30 Joseph Myers <joseph@codesourcery.com>
+
+ * ja.po: Update.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-10-25 Joseph Myers <joseph@codesourcery.com>
+
+ * ja.po: Update.
+
+2011-10-03 Joseph Myers <joseph@codesourcery.com>
+
+ * de.po: Update.
+
+2011-09-02 Joseph Myers <joseph@codesourcery.com>
+
+ * ja.po: Update.
+
+2011-08-28 Joseph Myers <joseph@codesourcery.com>
+
+ * ja.po: Update.
+
+2011-07-31 Joseph Myers <joseph@codesourcery.com>
+
+ * de.po: Update.
+
+2011-07-21 Joseph Myers <joseph@codesourcery.com>
+
+ * de.po, sv.po: Update.
+
2011-07-08 Joseph Myers <joseph@codesourcery.com>
* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, id.po, ja.po,
diff --git a/gcc-4.6/gcc/po/de.po b/gcc-4.6/gcc/po/de.po
index b16f28800..cad983aa2 100644
--- a/gcc-4.6/gcc/po/de.po
+++ b/gcc-4.6/gcc/po/de.po
@@ -6,10 +6,10 @@
# Roland Stigge <stigge@antcom.de>, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011.
msgid ""
msgstr ""
-"Project-Id-Version: gcc 4.6.0\n"
+"Project-Id-Version: gcc 4.6.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
"POT-Creation-Date: 2011-06-21 10:27+0000\n"
-"PO-Revision-Date: 2011-06-30 12:55+0100\n"
+"PO-Revision-Date: 2011-10-03 14:14+0200\n"
"Last-Translator: Roland Stigge <stigge@antcom.de>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
@@ -9314,10 +9314,8 @@ msgid "-fconst-string-class=<name>\tUse class <name> for constant strings"
msgstr "-fconst-string-class=<Name>\tKlasse <Name> für konstante Zeichenketten verwenden"
#: c-family/c.opt:724
-#, fuzzy
-#| msgid "-ftemplate-depth=<number>\tSpecify maximum template instantiation depth"
msgid "-fconstexpr-depth=<number>\tSpecify maximum constexpr recursion depth"
-msgstr "-ftemplate-depth=<Zahl>\tGrößte Template-Instantiierungstiefe angeben"
+msgstr "-fconstexpr-depth=<Zahl>\tGrößte Rekursionstiefe für konstante Ausdrücke angeben"
#: c-family/c.opt:728
msgid "-fno-deduce-init-list\tdisable deduction of std::initializer_list for a template type parameter from a brace-enclosed initializer-list"
@@ -9646,10 +9644,8 @@ msgid "Remap file names when including files"
msgstr "Dateinamen beim Einfügen von Dateien neu abbilden"
#: c-family/c.opt:1140 c-family/c.opt:1144
-#, fuzzy
-#| msgid "Conform to the ISO 1998 C++ standard with GNU extensions"
msgid "Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum"
-msgstr "Mit dem Standard ISO 1998 C++ mit GNU-Erweiterungen übereinstimmen"
+msgstr "Mit dem Standard ISO 1998 C++ (mit technischen Korrekturen 2003 überarbeitet) übereinstimmen"
#: c-family/c.opt:1148
msgid "Conform to the ISO 1998 C++ standard, with extensions that are likely to"
@@ -22278,16 +22274,14 @@ msgid "the last argument must be a 2-bit immediate"
msgstr "Das letzte Argument muss ein 2-Bit-Immediate sein"
#: config/i386/i386.c:26380
-#, fuzzy, gcc-internal-format
-#| msgid "the fifth argument must be a 8-bit immediate"
+#, gcc-internal-format
msgid "the fifth argument must be an 8-bit immediate"
-msgstr "Argument 5 muss ein 8-Bit-Immediate sein"
+msgstr "fünftes Argument muss ein 8-Bit-Immediate sein"
#: config/i386/i386.c:26475
-#, fuzzy, gcc-internal-format
-#| msgid "the third argument must be a 8-bit immediate"
+#, gcc-internal-format
msgid "the third argument must be an 8-bit immediate"
-msgstr "Argument 3 muss ein 8-Bit-Immediate sein"
+msgstr "drittes Argument muss ein 8-Bit-Immediate sein"
#: config/i386/i386.c:26832
#, gcc-internal-format
@@ -24666,10 +24660,9 @@ msgid "cannot bind rvalue %qE to %qT"
msgstr "der R-Wert %qE kann nicht mit %qT verbunden werden"
#: cp/call.c:5730 cp/cvt.c:1625
-#, fuzzy, gcc-internal-format
-#| msgid "class %qT will be considered nearly empty in a future version of GCC"
+#, gcc-internal-format
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
-msgstr "Klasse %qT wird in zukünftigen GCC-Versionen als annähernd leer betrachtet werden"
+msgstr "enum %qT mit Gültigkeitsbereich wird in zukünftigen GCC-Versionen nicht auf Ganzzahltyp erweitert"
#: cp/call.c:5760
#, gcc-internal-format
@@ -24808,10 +24801,9 @@ msgid "ISO C++ says that these are ambiguous, even though the worst conversion f
msgstr "ISO C++ besagt, dass diese mehrdeutig sind, auch wenn die schlechteste Umwandlung für das erste besser ist als die schlechteste Umwandlung für das zweite:"
#: cp/call.c:8070
-#, fuzzy, gcc-internal-format
-#| msgid "could not convert %qE to %qT"
+#, gcc-internal-format
msgid "could not convert %qE from %qT to %qT"
-msgstr "%qE konnte nicht nach %qT konvertiert werden"
+msgstr "%qE konnte nicht von %qT nach %qT umgewandelt werden"
#: cp/call.c:8313
#, gcc-internal-format
@@ -25070,10 +25062,9 @@ msgid "initializer specified for non-virtual method %q+D"
msgstr "Initialisierung für nicht-virtuelle Methode %q+D angegeben"
#: cp/class.c:4563 cp/semantics.c:5455
-#, fuzzy, gcc-internal-format
-#| msgid "enclosing class of %q+D is not a literal type"
+#, gcc-internal-format
msgid "enclosing class of %q+#D is not a literal type"
-msgstr "umschließende Klasse von %q+D ist kein Literaltyp"
+msgstr "umschließende Klasse von %q+#D ist kein Literaltyp"
#: cp/class.c:4670
#, gcc-internal-format
@@ -25090,12 +25081,12 @@ msgstr "nicht-statisches const-Element %q+#D in Klasse ohne einen Konstruktor"
#: cp/class.c:4701
#, gcc-internal-format
msgid "%q+D declared to take const reference, but implicit declaration would take non-const"
-msgstr ""
+msgstr "%q+D mit Eingabe einer konstanten Referenz deklariert, aber implizite Deklaration würde nicht-Konstante annehmen"
#: cp/class.c:4704
#, gcc-internal-format
msgid "%q+D declared to take non-const reference cannot be defaulted in the class body"
-msgstr ""
+msgstr "mit Eingabe einer nicht konstanten Referenz deklariertes %q+D kann im Klassenkörper nicht vorbelegt werden"
#: cp/class.c:4928
#, gcc-internal-format
@@ -27018,10 +27009,9 @@ msgid "reference %qs cannot be declared %<mutable%>"
msgstr "Referenz %qs kann nicht als %<mutable%> deklariert sein"
#: cp/decl.c:9308
-#, fuzzy, gcc-internal-format
-#| msgid "parameter declared %<auto%>"
+#, gcc-internal-format
msgid "typedef declared %<auto%>"
-msgstr "Parameter als %<auto%> deklariert"
+msgstr "»typedef« als %<auto%> deklariert"
#: cp/decl.c:9318
#, gcc-internal-format
@@ -28526,10 +28516,9 @@ msgid "%qD cannot be declared as constexpr"
msgstr "%qD kann nicht als »constexpr« deklariert werden"
#: cp/method.c:1599
-#, fuzzy, gcc-internal-format
-#| msgid "%qD cannot be defaulted"
+#, gcc-internal-format
msgid "a template cannot be defaulted"
-msgstr "%qD kann nicht vorgegeben werden"
+msgstr "ein Template kann nicht vorbelegt werden"
#: cp/method.c:1627
#, gcc-internal-format
@@ -29069,10 +29058,9 @@ msgid "need %<typename%> before %<%T::%E%> because %qT is a dependent scope"
msgstr "vor %<%T::%E%> ist %<typename%> erforderlich, da %qT ein abhängiger Gültigkeitsbereich ist"
#: cp/parser.c:2791
-#, fuzzy, gcc-internal-format
-#| msgid "%qE in class %qT does not name a type"
+#, gcc-internal-format
msgid "%qE in %q#T does not name a type"
-msgstr "%qE in Klasse %qT bezeichnet keinen Typen"
+msgstr "%qE in %q#T benennt keinen Typen"
#: cp/parser.c:3340
#, gcc-internal-format
@@ -29302,9 +29290,9 @@ msgid "expected iteration-statement"
msgstr "Iterationsanweisung erwartet"
#: cp/parser.c:9098
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "range-based-for loops are not allowed in C++98 mode"
-msgstr "Standardumwandlungen sind in diesem Kontext nicht erlaubt"
+msgstr "bereichsbasierte for-Schleifen sind im C++98-Modus nicht erlaubt"
#. Issue a warning about this use of a GNU extension.
#: cp/parser.c:9220
@@ -29313,9 +29301,9 @@ msgid "ISO C++ forbids computed gotos"
msgstr "ISO-C++ verbietet berechnete Gotos"
#: cp/parser.c:9233 cp/parser.c:20987
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected jump-statement"
-msgstr "Anweisung erwartet"
+msgstr "Sprunganweisung erwartet"
#: cp/parser.c:9365 cp/parser.c:17798
#, gcc-internal-format
@@ -29345,9 +29333,9 @@ msgid "%<auto%> will change meaning in C++0x; please remove it"
msgstr ""
#: cp/parser.c:9981
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "decl-specifier invalid in condition"
-msgstr "reiner Spezifizierer bei Funktionsdefinition"
+msgstr "decl-Spezifizierung in Bedingung ungültig"
#: cp/parser.c:10072
#, gcc-internal-format
@@ -29360,24 +29348,24 @@ msgid "templates may not be %<virtual%>"
msgstr "Templates dürfen nicht %<virtual%> sein"
#: cp/parser.c:10182
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid linkage-specification"
-msgstr "ungültige Spezifizierung der Basisklasse"
+msgstr "ungültige Bindungsspezifikation"
#: cp/parser.c:10309
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "types may not be defined in %<decltype%> expressions"
-msgstr "neue Typen dürfen nicht in einem Rückgabetyp definiert werden"
+msgstr "Typen dürfen nicht in %<decltype%>-Ausdrücken definiert werden"
#: cp/parser.c:10565
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
-msgstr "ungültige Verwendung von %<this%> in Nicht-Element-Funktion"
+msgstr "ungültige Verwendung von %<auto%> in Umwandlungsoperator"
#: cp/parser.c:10650
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "only constructors take member initializers"
-msgstr "nur Konstruktoren nehmen Basisinitialisierungen"
+msgstr "nur Konstruktoren nehmen Elementinitialisierungen"
#: cp/parser.c:10672
#, gcc-internal-format
@@ -29395,9 +29383,9 @@ msgid "keyword %<typename%> not allowed in this context (a qualified member init
msgstr "Schlüsselwort %<typename%> in diesem Kontext nicht erlaubt (eine qualifizierte Elementinitialisierung ist implizit ein Typ)"
#: cp/parser.c:11103
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected operator"
-msgstr "unerwarteter Operand"
+msgstr "Operator erwartet"
#. Warn that we do not support `export'.
#: cp/parser.c:11140
@@ -29421,14 +29409,14 @@ msgid "template parameter packs cannot have default arguments"
msgstr "Template-Parameterpacks können keine Standardargumente haben"
#: cp/parser.c:11624
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected template-id"
-msgstr "Anweisung erwartet"
+msgstr "Template-ID erwartet"
#: cp/parser.c:11671 cp/parser.c:20945
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<<%>"
-msgstr "%<{%> erwartet"
+msgstr "%<%> erwartet"
#: cp/parser.c:11678
#, gcc-internal-format
@@ -29447,9 +29435,9 @@ msgstr "Syntaxfehler in Templateargumentliste"
#. The name does not name a template.
#: cp/parser.c:11828 cp/parser.c:11943 cp/parser.c:12153
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected template-name"
-msgstr "Anweisung erwartet"
+msgstr "Templatename erwartet"
#. Explain what went wrong.
#: cp/parser.c:11874
@@ -29463,29 +29451,29 @@ msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr "%<%T::template %D%> verwenden, um dies als Template zu kennzeichnen"
#: cp/parser.c:12009
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected parameter pack before %<...%>"
-msgstr "Deklarationsspezifizierer oder %<...%> erwartet"
+msgstr "Parameterbündel vor %<...%> erwartet"
#: cp/parser.c:12118 cp/parser.c:12136 cp/parser.c:12277
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected template-argument"
-msgstr "Anweisung erwartet"
+msgstr "Templateargument erwartet"
#: cp/parser.c:12260
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid non-type template argument"
-msgstr "ungültige Verwendung von »%D« als ein Nicht-Typ-Templateargument"
+msgstr "ungültiges Templateargument ohne Typ"
#: cp/parser.c:12374
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "explicit instantiation shall not use %<inline%> specifier"
-msgstr "explizite Instanziierung des Nicht-Templatetyps %qT"
+msgstr "explizite Instanziierung sollte nicht %<inline%> verwenden"
#: cp/parser.c:12377
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "explicit instantiation shall not use %<constexpr%> specifier"
-msgstr "explizite Instanziierung des Nicht-Templatetyps %qT"
+msgstr "explizite Instanziierung sollte nicht %<constexpr%> verwenden"
#: cp/parser.c:12434
#, gcc-internal-format
@@ -29493,24 +29481,24 @@ msgid "template specialization with C linkage"
msgstr "Templatespezialisierung mit C-Bindung angegeben"
#: cp/parser.c:12654
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected type specifier"
-msgstr "Deklarationsspezifizierer erwartet"
+msgstr "Typspezifizierer erwartet"
#: cp/parser.c:12871
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected template-id for type"
-msgstr "Ausdruckstyp erwartet"
+msgstr "Template-ID für Typ erwartet"
#: cp/parser.c:12898
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected type-name"
-msgstr "Name erwartet"
+msgstr "Typ-Name erwartet"
#: cp/parser.c:13085
#, gcc-internal-format
msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword"
-msgstr ""
+msgstr "ausführliche Typ-Spezifikation für einen enum mit Gültigkeitsbereich darf nicht das Schlüsselwort %<%D%> verwenden"
#: cp/parser.c:13269
#, gcc-internal-format
@@ -29533,24 +29521,24 @@ msgid "attributes ignored on elaborated-type-specifier that is not a forward dec
msgstr "Attribute an Spezifizierer ausführlichen Typs ignoriert, der keine Vorwärtsdeklaration ist"
#: cp/parser.c:13488
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD is an enumeration template"
-msgstr "%qD ist kein Funktionstemplate"
+msgstr "%qD ist ein Aufzählungstemplate"
#: cp/parser.c:13496
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD is not an enumerator-name"
-msgstr "%qD ist kein Namensbereichs-Name"
+msgstr "%qD ist kein Aufzählungsname"
#: cp/parser.c:13559
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<;%> or %<{%>"
-msgstr "%<,%> oder %<;%> erwartet"
+msgstr "%<;%> oder %<{%> erwartet"
#: cp/parser.c:13606
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot add an enumerator list to a template instantiation"
-msgstr "Automatische Template-Instantiierung einschalten"
+msgstr "Aufzählungsliste kann nicht zu Template-Instantiierung hinzugefügt werden"
#: cp/parser.c:13615 cp/parser.c:17396
#, gcc-internal-format
@@ -29570,12 +29558,12 @@ msgstr "mehrfache Definition von %q#T"
#: cp/parser.c:13669
#, gcc-internal-format
msgid "opaque-enum-specifier without name"
-msgstr ""
+msgstr "intransparente Enum-Spezifikation ohne Namen"
#: cp/parser.c:13672
#, gcc-internal-format
msgid "opaque-enum-specifier must use a simple identifier"
-msgstr ""
+msgstr "intransparente Enum-Spezifikation muss einfachen Bezeichner verwenden"
#: cp/parser.c:13847
#, gcc-internal-format
@@ -29583,9 +29571,9 @@ msgid "%qD is not a namespace-name"
msgstr "%qD ist kein Namensbereichs-Name"
#: cp/parser.c:13848
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected namespace-name"
-msgstr "Klassenname erwartet"
+msgstr "Namensraumname erwartet"
#: cp/parser.c:13973
#, gcc-internal-format
@@ -29598,9 +29586,9 @@ msgid "a template-id may not appear in a using-declaration"
msgstr "eine Template-ID darf nicht in »using«-Deklaration auftreten"
#: cp/parser.c:14536
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "a function-definition is not allowed here"
-msgstr "%<namespace%>-Definition ist hier nicht erlaubt"
+msgstr "eine Funktionsdefinition ist hier nicht erlaubt"
#: cp/parser.c:14548
#, gcc-internal-format
@@ -29615,18 +29603,18 @@ msgstr "bei einer Funktionsdefinition sind keine Attribute erlaubt"
#: cp/parser.c:14589
#, gcc-internal-format
msgid "expected constructor, destructor, or type conversion"
-msgstr ""
+msgstr "Konstruktor, Destruktor oder Typumwandlung erwartet"
#. Anything else is an error.
#: cp/parser.c:14624 cp/parser.c:16539
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected initializer"
-msgstr "Bezeichner erwartet"
+msgstr "Initialisierung erwartet"
#: cp/parser.c:14644
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid type in declaration"
-msgstr "ungültige Funktionsdeklaration"
+msgstr "ungültiger Typ in Deklaration"
#: cp/parser.c:14720
#, gcc-internal-format
@@ -29644,9 +29632,9 @@ msgid "array bound is not an integer constant"
msgstr "Feldgrenze ist keine Ganzzahlkonstante"
#: cp/parser.c:15272
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot define member of dependent typedef %qT"
-msgstr "Zeiger auf Elementreferenztyp %qT wird erzeugt"
+msgstr "Element des abhängigen Typedef %qT kann nicht definiert werden"
#: cp/parser.c:15276
#, gcc-internal-format
@@ -29668,14 +29656,14 @@ msgstr "%<%T::%D%> statt %<%T::%D%> verwenden, um den Konstruktor mit qualifizie
#. information about its original syntactic
#. form.
#: cp/parser.c:15323
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid declarator"
-msgstr "Ungültige Deklaration"
+msgstr "ungültiger Deklarator"
#: cp/parser.c:15389
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected declarator"
-msgstr "Deklarationsspezifizierer erwartet"
+msgstr "Deklarator erwartet"
#: cp/parser.c:15484
#, gcc-internal-format
@@ -29683,9 +29671,9 @@ msgid "%qD is a namespace"
msgstr "%qD ist ein Namensbereich"
#: cp/parser.c:15500
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected ptr-operator"
-msgstr "unerwarteter Operand"
+msgstr "Ptr-Operator erwartet"
#: cp/parser.c:15559
#, gcc-internal-format
@@ -29693,29 +29681,29 @@ msgid "duplicate cv-qualifier"
msgstr "doppelter CV-Qualifizierer"
#: cp/parser.c:15681 cp/typeck2.c:427
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid use of %<auto%>"
-msgstr "ungültige Verwendung von %<::%>"
+msgstr "ungültige Verwendung von %<auto%>"
#: cp/parser.c:15700
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "types may not be defined in template arguments"
-msgstr "neue Typen dürfen nicht in einem Rückgabetyp definiert werden"
+msgstr "in Template-Argumenten dürfen keine Typen definiert werden"
#: cp/parser.c:15781
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected type-specifier"
-msgstr "Bezeichner erwartet"
+msgstr "Typspezifikation erwartet"
#: cp/parser.c:16025
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<,%> or %<...%>"
-msgstr "%<:%> oder %<...%> erwartet"
+msgstr "%<,%> oder %<...%> erwartet"
#: cp/parser.c:16082
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "types may not be defined in parameter types"
-msgstr "neue Typen dürfen nicht in einem Rückgabetyp definiert werden"
+msgstr "Typen dürfen nicht in Parametertypen definiert werden"
#: cp/parser.c:16306
#, gcc-internal-format
@@ -29738,39 +29726,39 @@ msgid "ISO C++ does not allow designated initializers"
msgstr "ISO-C++ erlaubt keine benannten Initialisierungen"
#: cp/parser.c:16760 cp/parser.c:16882
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected class-name"
msgstr "Klassenname erwartet"
#: cp/parser.c:17063
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<;%> after class definition"
-msgstr "%<(%> oder Zeilenende erwartet"
+msgstr "%<;%> hinter Klassendefinition erwartet"
#: cp/parser.c:17065
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<;%> after struct definition"
-msgstr "%<(%> oder Zeilenende erwartet"
+msgstr "%<;%> hinter Strukturdefinition erwartet"
#: cp/parser.c:17067
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<;%> after union definition"
-msgstr "%<(%> oder Zeilenende erwartet"
+msgstr "%<;%> hinter Uniondefinition erwartet"
#: cp/parser.c:17351
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<{%> or %<:%>"
-msgstr "%<,%> oder %<;%> erwartet"
+msgstr "%<{%> oder %<:%> erwartet"
#: cp/parser.c:17363
#, gcc-internal-format
msgid "global qualification of class name is invalid"
-msgstr ""
+msgstr "globale Qualifizierung von Klassenname ist ungültig"
#: cp/parser.c:17370
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "qualified name does not name a class"
-msgstr "»friend«-Deklaration benennt keine Klasse oder Funktion"
+msgstr "qualifizierter Name benennt keine Klasse"
#: cp/parser.c:17382
#, gcc-internal-format
@@ -29778,9 +29766,9 @@ msgid "invalid class name in declaration of %qD"
msgstr "ungültiger Klassenname in Deklaration von %qD"
#: cp/parser.c:17415
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "extra qualification not allowed"
-msgstr "zusätzliche Qualifizierung ignoriert"
+msgstr "zusätzliche Qualifizierung nicht erlaubt"
#: cp/parser.c:17427
#, gcc-internal-format
@@ -29795,7 +29783,7 @@ msgstr "Funktions-Template %qD als Klassentemplate redeklariert"
#: cp/parser.c:17488
#, gcc-internal-format
msgid "could not resolve typename type"
-msgstr ""
+msgstr "Typnamen-Typ kann nicht aufgelöst werden"
#: cp/parser.c:17540
#, gcc-internal-format
@@ -29803,9 +29791,9 @@ msgid "previous definition of %q+#T"
msgstr "vorherige Definition von %q+#T"
#: cp/parser.c:17604 cp/parser.c:20990
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected class-key"
-msgstr "Klassenname erwartet"
+msgstr "Klassenschlüssel erwartet"
#: cp/parser.c:17817
#, gcc-internal-format
@@ -29823,29 +29811,29 @@ msgid "pure-specifier on function-definition"
msgstr "reiner Spezifizierer bei Funktionsdefinition"
#: cp/parser.c:18064
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
-msgstr "%<(%> oder Zeilenende erwartet"
+msgstr "%<;%> am Ende von Elementdeklaration erwartet"
#: cp/parser.c:18130
#, gcc-internal-format
msgid "invalid pure specifier (only %<= 0%> is allowed)"
-msgstr ""
+msgstr "ungültige reine Spezifikation (nur %<= 0%> ist erlaubt)"
#: cp/parser.c:18165
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "a brace-enclosed initializer is not allowed here"
-msgstr "geklammerter Initialisierer zur Initialisierung von %qT verwendet"
+msgstr "eine geschweift geklammerte Initialisierung ist hier nicht erlaubt"
#: cp/parser.c:18297
#, gcc-internal-format
msgid "%<virtual%> specified more than once in base-specified"
-msgstr ""
+msgstr "%<virtual%> mehr als einmal in Basisspezifikation angegeben"
#: cp/parser.c:18317
#, gcc-internal-format
msgid "more than one access specifier in base-specified"
-msgstr ""
+msgstr "mehr als ein Zugriff in Basisspezifikation angegeben"
#: cp/parser.c:18341
#, gcc-internal-format
@@ -29858,29 +29846,29 @@ msgid "keyword %<typename%> not allowed in this context (the base class is impli
msgstr "Schlüsselwort %<typename%> nicht erlaubt in diesem Kontext (die Basisklasse ist implizit ein Typ)"
#: cp/parser.c:18421 cp/parser.c:18461
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "types may not be defined in an exception-specification"
-msgstr "neue Typen dürfen nicht in einem Rückgabetyp definiert werden"
+msgstr "Typen dürfen nicht in einer Ausnahmespezifikation definiert werden"
#: cp/parser.c:18443
#, gcc-internal-format
msgid "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> instead"
-msgstr ""
+msgstr "dynamische Ausnahmespezifikationen sind in C++0x veraltet; stattdessen %<noexcept%> verwenden"
#: cp/parser.c:18642
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "types may not be defined in exception-declarations"
-msgstr "neue Typen dürfen nicht in einem Rückgabetyp definiert werden"
+msgstr "Typen dürfen nicht in Ausnahmedeklarationen definiert werden"
#: cp/parser.c:19539
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
-msgstr ""
+msgstr "spezialisierendes Element %<%T::%E%> erfordert Syntax %<template<>%>"
#: cp/parser.c:19544
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid declaration of %<%T::%E%>"
-msgstr "ungültige Redeklaration von %q+D"
+msgstr "ungültige Deklaration von %<%T::%E%>"
#: cp/parser.c:19548
#, gcc-internal-format
@@ -29912,14 +29900,14 @@ msgid "template with C linkage"
msgstr "Template mit C-Bindung"
#: cp/parser.c:19951
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid explicit specialization"
-msgstr "ungültige Spezifizierung der Basisklasse"
+msgstr "ungültige explizite Spezialisierung"
#: cp/parser.c:20081
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "template declaration of %<typedef%>"
-msgstr "Templatedeklaration von %qs"
+msgstr "Templatedeklaration von %<typedef%>"
#: cp/parser.c:20158
#, gcc-internal-format
@@ -29927,9 +29915,9 @@ msgid "explicit template specialization cannot have a storage class"
msgstr "explizite Template-Spezialisierung kann keine Speicherklasse haben"
#: cp/parser.c:20383
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<>>%> should be %<> >%> within a nested template argument list"
-msgstr "%H%<>>%> sollte innerhalb einer geschachtelten Templateargumentliste %<> >%> sein"
+msgstr "%<>>%> sollte innerhalb einer geschachtelten Templateargumentliste %<> >%> sein"
#: cp/parser.c:20396
#, gcc-internal-format
@@ -29947,134 +29935,134 @@ msgid "%<__thread%> before %qD"
msgstr "%<__thread%> vor %qD"
#: cp/parser.c:20854
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<new%>"
-msgstr "%<{%> erwartet"
+msgstr "%<new%> erwartet"
#: cp/parser.c:20857
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<delete%>"
-msgstr "%<{%> erwartet"
+msgstr "%<delete%> erwartet"
#: cp/parser.c:20860
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<return%>"
-msgstr "%<{%> erwartet"
+msgstr "%<return%> erwartet"
#: cp/parser.c:20866
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<extern%>"
-msgstr "%<{%> erwartet"
+msgstr "%<extern%> erwartet"
#: cp/parser.c:20869
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<static_assert%>"
-msgstr "Anweisung erwartet"
+msgstr "%<static_assert%> erwartet"
#: cp/parser.c:20872
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<decltype%>"
-msgstr "%<{%> erwartet"
+msgstr "%<decltype%> erwartet"
#: cp/parser.c:20875
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<operator%>"
-msgstr "%<{%> erwartet"
+msgstr "%<operator%> erwartet"
#: cp/parser.c:20878
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<class%>"
-msgstr "%<{%> erwartet"
+msgstr "%<class%> erwartet"
#: cp/parser.c:20881
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<template%>"
-msgstr "%<{%> erwartet"
+msgstr "%<template%> erwartet"
#: cp/parser.c:20884
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<namespace%>"
-msgstr "%<{%> erwartet"
+msgstr "%<namespace%> erwartet"
#: cp/parser.c:20887
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<using%>"
-msgstr "%<{%> erwartet"
+msgstr "%<using%> erwartet"
#: cp/parser.c:20890
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<asm%>"
-msgstr "%<{%> erwartet"
+msgstr "%<asm%> erwartet"
#: cp/parser.c:20893
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<try%>"
-msgstr "%<{%> erwartet"
+msgstr "%<try%> erwartet"
#: cp/parser.c:20896
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<catch%>"
-msgstr "%<{%> erwartet"
+msgstr "%<catch%> erwartet"
#: cp/parser.c:20899
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<throw%>"
-msgstr "%<{%> erwartet"
+msgstr "%<throw%> erwartet"
#: cp/parser.c:20902
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<__label__%>"
-msgstr "%<{%> erwartet"
+msgstr "%<__label__%> erwartet"
#: cp/parser.c:20905
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<@try%>"
-msgstr "%<{%> erwartet"
+msgstr "%<@try%> erwartet"
#: cp/parser.c:20908
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<@synchronized%>"
-msgstr "%<{%> erwartet"
+msgstr "%<@synchronized%> erwartet"
#: cp/parser.c:20911
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<@throw%>"
-msgstr "%<{%> erwartet"
+msgstr "%<@throw%> erwartet"
#: cp/parser.c:20936
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<[%>"
-msgstr "%<{%> erwartet"
+msgstr "%<[%> erwartet"
#: cp/parser.c:20942
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<::%>"
-msgstr "%<{%> erwartet"
+msgstr "%<::%> erwartet"
#: cp/parser.c:20954
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<...%>"
-msgstr "%<{%> erwartet"
+msgstr "%<...%> erwartet"
#: cp/parser.c:20957
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<*%>"
-msgstr "%<{%> erwartet"
+msgstr "%<*%> erwartet"
#: cp/parser.c:20960
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<~%>"
-msgstr "%<{%> erwartet"
+msgstr "%<~%> erwartet"
#: cp/parser.c:20966
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<:%> or %<::%>"
-msgstr "%<:%> oder %<...%> erwartet"
+msgstr "%<:%> oder %<::%> erwartet"
#: cp/parser.c:20994
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
-msgstr "%<,%>, %<;%> oder %<}%> erwartet"
+msgstr "%<class%>, %<typename%> oder %<template%> erwartet"
#: cp/parser.c:21225
#, gcc-internal-format
@@ -30099,7 +30087,7 @@ msgstr "unpassendes Objective-C++-Konstrukt %<@%D%>"
#: cp/parser.c:21650
#, gcc-internal-format
msgid "objective-c++ message argument(s) are expected"
-msgstr ""
+msgstr "Objective-C++ Nachrichtenargument(e) erwartet"
#: cp/parser.c:21679
#, gcc-internal-format
@@ -30112,24 +30100,24 @@ msgid "invalid Objective-C++ selector name"
msgstr "Ungültiger Objective-C++-Selektorname"
#: cp/parser.c:22116 cp/parser.c:22134
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "objective-c++ method declaration is expected"
-msgstr "Klassen- oder Schnittstellendeklaration erwartet"
+msgstr "Objective-C++ Methodendeklaration erwartet"
#: cp/parser.c:22128 cp/parser.c:22193
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "method attributes must be specified at the end"
-msgstr "%JAbschnitts-Attribut kann nicht für lokale Variablen angegeben werden"
+msgstr "Methodenattribute müssen am Ende angegeben werden"
#: cp/parser.c:22235
#, gcc-internal-format
msgid "stray %qs between Objective-C++ methods"
-msgstr ""
+msgstr "überflüssiges %qs zwischen Objective-C++ Methoden"
#: cp/parser.c:22440 cp/parser.c:22447 cp/parser.c:22454
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid type for instance variable"
-msgstr "%Hungültiger Typ für Schleifenvariable %qE"
+msgstr "ungültiger Typ für Instanzvariable"
#: cp/parser.c:22567
#, gcc-internal-format
@@ -30139,32 +30127,32 @@ msgstr "Bezeichner nach %<@protocol%> erwartet"
#: cp/parser.c:22725
#, gcc-internal-format
msgid "attributes may not be specified before the %<@%D%> Objective-C++ keyword"
-msgstr ""
+msgstr "Attribute dürfen nicht vor dem Objective-C++-Schlüsselwort %<@%D%> angegeben werden"
#: cp/parser.c:22732
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "prefix attributes are ignored before %<@%D%>"
-msgstr "Attribut %qE ignoriert für %qE"
+msgstr "Präfix-Attribute vor %<@%D%> werden ignoriert"
#: cp/parser.c:23005 cp/parser.c:23012 cp/parser.c:23019
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid type for property"
-msgstr "ungültiges Typargument"
+msgstr "ungültiger Typ für Eigenschaft"
#: cp/parser.c:24450
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
-msgstr ""
+msgstr "geklammerte Initialisierung ist in OpenMP-%<for%>-Schleife nicht erlaubt"
#: cp/parser.c:24617 cp/pt.c:11905
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
-msgstr "Schleifenvariable %qs sollte nicht in Reduktion sein"
+msgstr "Schleifenvariable %qD sollte nicht Reduktion sein"
#: cp/parser.c:24685
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "not enough collapsed for loops"
-msgstr "zu wenig Typinformationen"
+msgstr "zu wenig zusammengefallen für Schleifen"
#: cp/parser.c:25145
#, gcc-internal-format
@@ -30197,9 +30185,9 @@ msgid "enclosing class templates are not explicitly specialized"
msgstr "einschließende Klassentemplates werden nicht explizit spezialisiert"
#: cp/pt.c:753
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "specialization of %qD must appear at namespace scope"
-msgstr "Spezialisierung von %qD in anderem Namensbereich"
+msgstr "Spezialisierung von %qD muss im Gültigkeitsbereich des Namensbereiches auftreten"
#: cp/pt.c:761
#, gcc-internal-format
@@ -30239,9 +30227,9 @@ msgid "specialization %qT after instantiation %qT"
msgstr "Spezialisierung %qT hinter Instanziierung %qT"
#: cp/pt.c:918
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "template specialization of %qD not allowed by ISO C++"
-msgstr "Teilspezialisierung %qD des Funktionstemplates ist nicht erlaubt"
+msgstr "Templatespezialisierung von %qD durch ISO C++ nicht erlaubt"
#: cp/pt.c:922
#, gcc-internal-format
@@ -30271,7 +30259,7 @@ msgstr "Template-ID %qD für %q+D passt zu keiner Templatedeklaration"
#: cp/pt.c:2023
#, gcc-internal-format
msgid "saw %d %<template<>%>, need %d for specializing a member function template"
-msgstr ""
+msgstr "%d %<template<>%> gefunden, %d werden für Spezialisierung eines Elementfunktionstemplates benötigt"
#: cp/pt.c:2032
#, gcc-internal-format
@@ -30364,9 +30352,9 @@ msgid "expansion pattern %<%E%> contains no argument packs"
msgstr "Auflösungsmuster %<%E%> enthält keine Argumentpacks"
#: cp/pt.c:3218
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "parameter packs not expanded with %<...%>:"
-msgstr "Parameterpacks nicht mit »...« aufgelöst:"
+msgstr "Parameterbündel nicht mit %<...%> aufgelöst:"
#: cp/pt.c:3233 cp/pt.c:4253
#, gcc-internal-format
@@ -30414,16 +30402,16 @@ msgid "template argument %qE involves template parameter(s)"
msgstr "Templateargument %qE betrifft Templateparameter"
#: cp/pt.c:4380
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type %qT of template argument %qE depends on a template parameter"
msgid_plural "type %qT of template argument %qE depends on template parameters"
-msgstr[0] "Typ %qT des Templatearguments %qE hängt von Templateparameter(n) ab"
-msgstr[1] "Typ %qT des Templatearguments %qE hängt von Templateparameter(n) ab"
+msgstr[0] "Typ %qT des Templatearguments %qE hängt von Templateparameter ab"
+msgstr[1] "Typ %qT des Templatearguments %qE hängt von Templateparametern ab"
#: cp/pt.c:4410
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "partial specialization of %qT after instantiation of %qT"
-msgstr "Spezialisierung %qT hinter Instanziierung %qT"
+msgstr "teilweise Spezialisierung von %qT hinter Instanziierung von %qT"
#: cp/pt.c:4503
#, gcc-internal-format
@@ -30441,29 +30429,29 @@ msgid "parameter pack %qT must be at the end of the template parameter list"
msgstr "Parameterpack %qT muss am Ende der Templateparameterliste sein"
#: cp/pt.c:4564
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "default template arguments may not be used in function template friend re-declaration"
-msgstr "Standardargumente sind nicht in Deklaration der friend-Template-Spezialisierung %qD erlaubt"
+msgstr "Standardtemplateargumente dürfen in friend-Redeklaration eines Funktionstemplates nicht verwendet werden"
#: cp/pt.c:4567
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "default template arguments may not be used in function template friend declarations"
-msgstr "Standardargumente sind nicht in Deklaration der friend-Template-Spezialisierung %qD erlaubt"
+msgstr "Standardtemplateargumente dürfen in friend-Deklaration eines Funktionstemplates nicht verwendet werden"
#: cp/pt.c:4570
#, gcc-internal-format
msgid "default template arguments may not be used in function templates without -std=c++0x or -std=gnu++0x"
-msgstr ""
+msgstr "Standardtemplateargumente dürfen in Funktionstemplates ohne -std=c++0x und -std=gnu++0x nicht verwendet werden"
#: cp/pt.c:4573
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "default template arguments may not be used in partial specializations"
-msgstr "nicht in partieller Spezialisierung verwendete Templateparameter:"
+msgstr "Standardtemplateargumente dürfen in teilweiser Spezialisierung nicht verwendet werden"
#: cp/pt.c:4576 cp/pt.c:4627
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "default argument for template parameter for class enclosing %qD"
-msgstr "Standardargument für Parameter des Typs %qT hat Typ %qT"
+msgstr "Standardargument für Template-Parameter für %qD umschließende Klasse"
#: cp/pt.c:4720
#, gcc-internal-format
@@ -30534,14 +30522,14 @@ msgid "template specifiers not specified in declaration of %qD"
msgstr "keine Templatespezifizierer in Deklaration von %qD angegeben"
#: cp/pt.c:5067
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "redeclared with %d template parameter"
msgid_plural "redeclared with %d template parameters"
-msgstr[0] "mit %d Template-Parameter(n) redeklariert"
-msgstr[1] "mit %d Template-Parameter(n) redeklariert"
+msgstr[0] "mit %d Template-Parameter redeklariert"
+msgstr[1] "mit %d Template-Parametern redeklariert"
#: cp/pt.c:5071
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "previous declaration %q+D used %d template parameter"
msgid_plural "previous declaration %q+D used %d template parameters"
msgstr[0] "vorherige Deklaration %q+D verwendete %d Template-Parameter"
@@ -30567,9 +30555,9 @@ msgid "redefinition of default argument for %q#D"
msgstr "Redefinition des Standardarguments für %q#D"
#: cp/pt.c:5121
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "original definition appeared here"
-msgstr "%Jursprüngliche Definition trat hier auf"
+msgstr "ursprüngliche Definition trat hier auf"
#: cp/pt.c:5209
#, gcc-internal-format
@@ -30577,14 +30565,14 @@ msgid "%qE is not a valid template argument for type %qT because function %qD ha
msgstr "%qE ist kein gültiges Templateargument für Typ %qT, da die Funktion %qD keine externe Bindung hat"
#: cp/pt.c:5231 cp/pt.c:5571
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
-msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil es ein Zeiger ist"
+msgstr "%qE ist kein gültiges Templateargument für Typ %qT"
#: cp/pt.c:5233
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "it must be a pointer-to-member of the form %<&X::Y%>"
-msgstr "es muss ein Zeiger auf ein Element der Form »&X::Y« sein"
+msgstr "es muss ein Zeiger auf ein Element der Form %<&X::Y%> sein"
#: cp/pt.c:5302
#, gcc-internal-format
@@ -30592,9 +30580,9 @@ msgid "%qE is not a valid template argument for type %qT because string literals
msgstr "%qE ist kein gültiges Templateargument für Typ %qT, da Zeichenkettensymbole in diesem Zusammenhang nicht verwendet werden können"
#: cp/pt.c:5403
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "in template argument for type %qT "
-msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil es ein Zeiger ist"
+msgstr "in Templateargument für Typ %qT"
#: cp/pt.c:5443
#, gcc-internal-format
@@ -30622,14 +30610,14 @@ msgid "%qE is not a valid template argument for type %qT because it is not an lv
msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil es kein L-Wert ist"
#: cp/pt.c:5522
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%q#D is not a valid template argument for type %qT because a reference variable does not have a constant address"
-msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil es kein konstanter Zeiger ist"
+msgstr "%q#D ist kein gültiges Templateargument für Typ %qT, weil eine Referenzvariable keine konstante Adresse hat"
#: cp/pt.c:5531
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT because it is not an object with external linkage"
-msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil Objekt %qD keine externe Bindung hat"
+msgstr "%qE ist kein gültiges Templateargument für Typ %qT, weil es kein Objekt mit externer Bindung ist"
#: cp/pt.c:5539
#, gcc-internal-format
@@ -30662,9 +30650,9 @@ msgid "standard conversions are not allowed in this context"
msgstr "Standardumwandlungen sind in diesem Kontext nicht erlaubt"
#: cp/pt.c:5966
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "injected-class-name %qD used as template template argument"
-msgstr "Name der Klasse verdeckt Template-Templateparameter %qD"
+msgstr "eingegebener Klassenname %qD als Template-Templateargument verwendet"
#: cp/pt.c:5991
#, gcc-internal-format
@@ -30702,16 +30690,16 @@ msgid " expected a class template, got %qT"
msgstr " Klassentemplate erwartet, %qT erhalten"
#: cp/pt.c:6075
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid " expected a template of type %qD, got %qT"
-msgstr " ein Template des Typs %qD erwartet, %qD erhalten"
+msgstr " ein Template des Typs %qD erwartet, %qT erhalten"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
#: cp/pt.c:6108
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
-msgstr "Typ passt nicht in Komponentenreferenz"
+msgstr "Typ passt nicht in Nichttypen-Parameterbündel"
#: cp/pt.c:6130
#, gcc-internal-format
@@ -30724,9 +30712,9 @@ msgid "wrong number of template arguments (%d, should be %d)"
msgstr "falsche Anzahl der Templateargumente (%d, sollte %d sein)"
#: cp/pt.c:6336
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "wrong number of template arguments (%d, should be %d or more)"
-msgstr "falsche Anzahl der Templateargumente (%d, sollte %d sein)"
+msgstr "falsche Anzahl der Templateargumente (%d, sollte %d oder mehr sein)"
#: cp/pt.c:6344
#, gcc-internal-format
@@ -30759,9 +30747,9 @@ msgid "for template declaration %q+D"
msgstr "Für Template-Deklaration %q+D"
#: cp/pt.c:7486
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
-msgstr "Instanziierungstiefe für Templates überschreitet Höchstwert %d (-ftemplate-depth-NN verwenden, um dies zu erhöhen) bei Instanziierung von %qD"
+msgstr "Instanziierungstiefe für Templates überschreitet Höchstwert %d (-ftemplate-depth= verwenden, um dies zu erhöhen) bei Instanziierung von %qD"
#: cp/pt.c:8796
#, gcc-internal-format
@@ -30827,14 +30815,14 @@ msgid "forming reference to void"
msgstr "Referenz auf »void« wird gebildet"
#: cp/pt.c:10766
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "forming pointer to reference type %qT"
-msgstr "%s wird in Referenztyp %qT umgeformt"
+msgstr "Zeiger auf Referenztyp %qT wird geformt"
#: cp/pt.c:10768
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "forming reference to reference type %qT"
-msgstr "%s wird in Referenztyp %qT umgeformt"
+msgstr "Referenz auf Referenztyp %qT wird geformt"
#: cp/pt.c:10817
#, gcc-internal-format
@@ -30882,9 +30870,9 @@ msgid "use of %qs in template"
msgstr "Verwendung von %qs in Template"
#: cp/pt.c:11213
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "qualifying type %qT does not match destructor name ~%qT"
-msgstr "qualifizierter Typ %qT passt nicht zum Destruktornamen ~%qT"
+msgstr "qualifizierender Typ %qT passt nicht zum Destruktornamen ~%qT"
#: cp/pt.c:11228
#, gcc-internal-format
@@ -30987,9 +30975,9 @@ msgid "duplicate explicit instantiation of %q#D"
msgstr "doppelte explizite Instanziierung von %q#D"
#: cp/pt.c:16735 cp/pt.c:16827
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
-msgstr "ISO-C++ verbietet die Verwendung von %<extern%> bei expliziten Instanziierungen"
+msgstr "ISO-C++ 1998 verbietet die Verwendung von %<extern%> bei expliziten Instanziierungen"
#: cp/pt.c:16740 cp/pt.c:16844
#, gcc-internal-format
@@ -31029,9 +31017,9 @@ msgid "explicit instantiation of %qD but no definition available"
msgstr "explizite Instanziierung von %qD, aber keine Definition verfügbar"
#: cp/pt.c:17537
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth= to increase the maximum)"
-msgstr "Instanziierungstiefe für Templates überschreitet Höchstwert %d (-ftemplate-depth-NN verwenden, um dies zu erhöhen) bei Instanziierung von %q+D, möglicherweise von Erzeugung der virtuellen Tabelle"
+msgstr "Instanziierungstiefe für Templates überschreitet Höchstwert %d (-ftemplate-depth= verwenden, um dies zu erhöhen) bei Instanziierung von %q+D, möglicherweise von Erzeugung der virtuellen Tabelle"
#: cp/pt.c:17904
#, gcc-internal-format
@@ -31039,27 +31027,27 @@ msgid "%q#T is not a valid type for a template constant parameter"
msgstr "%q#T ist kein gültiger Typ für einen Templatekonstanten-Parameter"
#: cp/pt.c:18967
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "deducing from brace-enclosed initializer list requires #include <initializer_list>"
-msgstr "geklammerter Initialisierer zur Initialisierung von %qT verwendet"
+msgstr "Ermittlung aus geschweift geklammerter Initialisierungsliste erfordert #include <initializer_list>"
#: cp/pt.c:19020
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "variable %q#D with %<auto%> type used in its own initializer"
-msgstr "Variable %qD kann nicht initialisiert worden sein"
+msgstr "Variable %q#D mit %<auto%>-Typ in ihrer eigenen Initialisierung verwendet"
#. If type is error_mark_node a diagnostic must have been
#. emitted by now. Also, having a mention to '<type error>'
#. in the diagnostic is not really useful to the user.
#: cp/pt.c:19048
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "unable to deduce %qT from %qE"
-msgstr "%qs kann nicht emuliert werden"
+msgstr "%qT kann nicht aus %qE hergeleitet werden"
#: cp/pt.c:19059
#, gcc-internal-format
msgid "inconsistent deduction for %qT: %qT and then %qT"
-msgstr ""
+msgstr "widersprüchliche Herleitung für %qT: %qT und dann %qT"
#: cp/repo.c:119
#, gcc-internal-format
@@ -31072,7 +31060,7 @@ msgid "mysterious repository information in %s"
msgstr "rätselhafte Repository-Information in %s"
#: cp/repo.c:227
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "can%'t create repository information file %qs"
msgstr "Repository-Informationsdatei %qs kann nicht erzeugt werden"
@@ -31152,24 +31140,24 @@ msgid "conflicting type attributes specified for %q+#D"
msgstr "in Konflikt stehenden Typattribute für %q+#D angegeben"
#: cp/search.c:1912
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "deleted function %q+D"
-msgstr "Wiederholte using-Deklaration %q+D"
+msgstr "Funktion %q+D gelöscht"
#: cp/search.c:1913
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "overriding non-deleted function %q+D"
-msgstr "virtuelle Nicht-Klassen-Funktion %qs"
+msgstr "nicht gelöschte Funktion %q+D aufgehoben"
#: cp/search.c:1918
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "non-deleted function %q+D"
-msgstr "Aufruf der Nicht-Funktion %qD"
+msgstr "nicht gelöschte Funktion %q+D"
#: cp/search.c:1919
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "overriding deleted function %q+D"
-msgstr "überschatten der %s Funktion %q#D"
+msgstr "gelöschte Funktion %q+D aufgehoben"
#. A static member function cannot match an inherited
#. virtual member function.
@@ -31289,9 +31277,9 @@ msgid "base class %qT has cv qualifiers"
msgstr "Basisklasse %qT hat CV-Kennzeichner"
#: cp/semantics.c:2947 cp/semantics.c:8197
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD is not captured"
-msgstr "%qD ist kein Typ"
+msgstr "%qD ist nicht aufgefangen"
#: cp/semantics.c:2953
#, gcc-internal-format
@@ -31304,9 +31292,9 @@ msgid " %q+#D declared here"
msgstr " %q+#D hier deklariert"
#: cp/semantics.c:2966
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "use of parameter %qD outside function body"
-msgstr "Verwendung eines Parameters aus enthaltender Funktion"
+msgstr "Verwendung des Parameters %qD außerhalb des Funktionskörpers"
#: cp/semantics.c:3003
#, gcc-internal-format
@@ -31360,14 +31348,14 @@ msgid "%qD appears more than once in data clauses"
msgstr "%qD tritt in Datenklausel mehrfach auf"
#: cp/semantics.c:3762
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
-msgstr "%qE ist in Klausel %<firstprivate%> keine Variable"
+msgstr "%qD ist in Klausel %<firstprivate%> keine Variable"
#: cp/semantics.c:3784
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
-msgstr "%qE ist in Klausel %<lastprivate%> keine Variable"
+msgstr "%qD ist in Klausel %<lastprivate%> keine Variable"
#: cp/semantics.c:3814
#, gcc-internal-format
@@ -31385,19 +31373,19 @@ msgid "%qE has reference type for %qs"
msgstr "%qE hat Referenztyp für %qs"
#: cp/semantics.c:4033
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
-msgstr "%<threadprivate%> %qE ist nicht Datei-, Namens- oder Blockbereichsvariable"
+msgstr "%<threadprivate%> %qD ist nicht Datei-, Namens- oder Blockbereichsvariable"
#: cp/semantics.c:4047
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
-msgstr "%<threadprivate%> %qE hat unvollständigen Typen"
+msgstr "Direktive %<threadprivate%> %qE nicht in Definition von %qT"
#: cp/semantics.c:4192
#, gcc-internal-format
msgid "difference between %qE and %qD does not have integer type"
-msgstr ""
+msgstr "Unterschied zwischen %qE und %qD hat keinen Ganzzahltyp"
#: cp/semantics.c:4722
#, gcc-internal-format
@@ -31417,7 +31405,7 @@ msgstr "%qE verweist auf eine Menge überladener Funktionen"
#: cp/semantics.c:4971
#, gcc-internal-format
msgid "unable to determine the declared type of expression %<%E%>"
-msgstr ""
+msgstr "deklarierter Typ des Ausdrucks %<%E%> kann nicht ermittelt werden"
#: cp/semantics.c:5238
#, gcc-internal-format
@@ -31432,217 +31420,217 @@ msgstr "unvollständiger Typ %qT nicht erlaubt"
#: cp/semantics.c:5355
#, gcc-internal-format
msgid "the type %qT of constexpr variable %qD is not literal"
-msgstr ""
+msgstr "der Typ %qT der Variable %qD als konstanter Ausdruck ist kein Literal"
#: cp/semantics.c:5434
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid type for parameter %d of constexpr function %q+#D"
-msgstr "ungültige Verwendung des Elementes %q+D in statischer Elementfunktion"
+msgstr "ungültiger Typ für Parameter %d der Funktion %q+#D als konstantem Ausdruck"
#: cp/semantics.c:5445
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid return type %qT of constexpr function %q+D"
-msgstr "ungültiger abstrakter Rückgabetyp für Funktion %q+#D"
+msgstr "ungültiger Rückgabetyp %qT der Funktion %q+D als konstantem Ausdruck"
#: cp/semantics.c:5610
#, gcc-internal-format
msgid "constexpr constructor does not have empty body"
-msgstr ""
+msgstr "Konstruktor mit konstantem Ausdruck hat keinen leeren Körper"
#: cp/semantics.c:5690
#, gcc-internal-format
msgid "body of constexpr function %qD not a return-statement"
-msgstr ""
+msgstr "Körper der Funktion %qD mit konstantem Ausdruck ist keine Rückgabeanweisung"
#: cp/semantics.c:6029
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expression %qE does not designate a constexpr function"
-msgstr "»friend«-Deklaration benennt keine Klasse oder Funktion"
+msgstr "Ausdruck %qE bezeichnet keine Funktion mit konstantem Ausdruck"
#: cp/semantics.c:6043
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD is not a constexpr function"
-msgstr "%qD ist keine Templatefunktion"
+msgstr "%qD ist keine Funktion mit konstantem Audruck"
#: cp/semantics.c:6070
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD used before its definition"
-msgstr "%q+D wurde vor seiner Definition ohne Prototyp verwendet"
+msgstr "%qD vor seiner Definition verwendet"
#: cp/semantics.c:6103
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "call has circular dependency"
-msgstr "Protokoll %qs hat ringförmige Abhängigkeit"
+msgstr "Aufruf hat ringförmige Abhängigkeit"
#: cp/semantics.c:6111
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
-msgstr "Instanziierungstiefe für Templates überschreitet Höchstwert %d (-ftemplate-depth-NN verwenden, um dies zu erhöhen) bei Instanziierung von %qD"
+msgstr "Auswertungstiefe des konstanten Ausdrucks überschreitet Höchstwert %d (-fconstexpr-depth= verwenden, um dies zu erhöhen)"
#: cp/semantics.c:6189
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%q+E is not a constant expression"
-msgstr "Fehlender oder ungültiger Konstantenausdruck"
+msgstr "%q+E ist kein Konstantenausdruck"
#: cp/semantics.c:6322
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "array subscript out of bound"
-msgstr "%HFeldindex ist außerhalb der Feldgrenzen"
+msgstr "Feldindex ist außerhalb der Feldgrenzen"
#: cp/semantics.c:6368 cp/semantics.c:6417 cp/semantics.c:6923
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE is not a constant expression"
-msgstr "Fehlender oder ungültiger Konstantenausdruck"
+msgstr "%qE ist kein Konstantenausdruck"
#: cp/semantics.c:6382
#, gcc-internal-format
msgid "accessing %qD member instead of initialized %qD member in constant expression"
-msgstr ""
+msgstr "Zugriff auf Element %qD statt auf initialisiertes Element %qD in Konstantenausdruck"
#: cp/semantics.c:6801
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "accessing value of %qE through a %qT glvalue in a constant expression"
-msgstr "Fehlender oder ungültiger Konstantenausdruck"
+msgstr "auf Wert von %qE wird über ein %qT GL-Wert in Konstantenausdruck zugegriffen"
#: cp/semantics.c:6831
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "the value of %qD is not usable in a constant expression"
-msgstr "Größe des Feldes %qD ist kein konstanter Ganzzahlausdruck"
+msgstr "der Wert von %qD ist in konstantem Ausdruck nicht verwendbar"
#: cp/semantics.c:6838
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD used in its own initializer"
-msgstr "Variable %qD kann nicht initialisiert worden sein"
+msgstr "%qD in seiner eigenen Initialisierung verwendet"
#: cp/semantics.c:6843
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%q#D is not const"
-msgstr "%q#T ist keine Klasse"
+msgstr "%q#D ist nicht konstant"
#: cp/semantics.c:6846
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%q#D is volatile"
-msgstr "%q+#D ist privat"
+msgstr "%q#D ist volatile"
#: cp/semantics.c:6849
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD was not initialized with a constant expression"
-msgstr "%qD kann nicht in Konstanten-Ausdruck auftreten"
+msgstr "%qD wurde nicht mit konstantem Ausdruck initialisiert"
#: cp/semantics.c:6858
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD was not declared %<constexpr%>"
-msgstr "%qD wurde in diesem Gültigkeitsbereich nicht definiert"
+msgstr "%qD wurde nicht als %<constexpr%> definiert"
#: cp/semantics.c:6861
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD does not have integral or enumeration type"
-msgstr "Ausdruck in new-Deklarator muss Ganzzahl- oder Aufzählungstyp haben"
+msgstr "%qD hat keinen Ganzzahl- oder Aufzählungstyp"
#: cp/semantics.c:7134 cp/semantics.c:7567
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "conversion of expression %qE of pointer type cannot yield a constant expression"
-msgstr "Ausdruck %qE von abstraktem Klassentyp %qT kann nicht in throw-Ausdruck verwendet werden"
+msgstr "Umwandlung des Ausdrucks %qE mit Zeigertyp kann keinen konstanten Ausdruck ergeben"
#: cp/semantics.c:7188 cp/semantics.c:7658 cp/semantics.c:7889
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expression %qE is not a constant-expression"
-msgstr "Ganzzahlausdruck %qE ist nicht konstant"
+msgstr "Ausdruck %qE ist kein konstanter Ausdruck"
#: cp/semantics.c:7193
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "unexpected expression %qE of kind %s"
-msgstr "Ausdruck erwartet"
+msgstr "unerwarteter Ausdruck %qE der Art %s"
#: cp/semantics.c:7400
#, gcc-internal-format
msgid "expression %qE has side-effects"
-msgstr ""
+msgstr "Ausdruck %qE hat Seiteneffekte"
#: cp/semantics.c:7449
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE is not a potential constant expression"
-msgstr "%s kann nicht in einem Konstanten-Ausdruck auftreten"
+msgstr "%qE ist kein potentieller konstanter Ausdruck"
#: cp/semantics.c:7473
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD is not %<constexpr%>"
-msgstr "%qD ist kein Typ"
+msgstr "%qD ist nicht %<constexpr%>"
#: cp/semantics.c:7489
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "object argument is not a potential constant expression"
-msgstr "Größe des Feldes ist kein konstanter Ganzzahlausdruck"
+msgstr "Objektargument ist kein potentieller konstanter Ausdruck"
#: cp/semantics.c:7510
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE is not a function name"
-msgstr "%qD ist kein Funktionstemplate"
+msgstr "%qE ist kein Funktionsname"
#: cp/semantics.c:7520
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "argument in position %qP is not a potential constant expression"
-msgstr "Größe des Feldes %qD ist kein konstanter Ganzzahlausdruck"
+msgstr "Argument in Position %qP ist kein potentieller konstanter Ausdruck"
#: cp/semantics.c:7590
#, gcc-internal-format
msgid "address-of an object %qE with thread local or automatic storage is not a constant expression"
-msgstr ""
+msgstr "Adresse eines Objektes %qE mit thread-lokalem oder automatischem Speicher ist kein konstanter Ausdruck"
#: cp/semantics.c:7621
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
-msgstr "Größe des Feldes %qD ist kein konstanter Ganzzahlausdruck"
+msgstr "Verwendung des Wertes des konstruierten Objektes in konstantem Ausdruck"
#: cp/semantics.c:7670
#, gcc-internal-format
msgid "typeid-expression is not a constant expression because %qE is of polymorphic type"
-msgstr ""
+msgstr "Typeid-Ausdruck ist kein konstanter Ausdruck, da %qE polymorphen Typ hat"
#: cp/semantics.c:7683
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "difference of two pointer expressions is not a constant expression"
-msgstr "Größe des Feldes ist kein konstanter Ganzzahlausdruck"
+msgstr "Unterschied zweier Zeigerausdrücke ist kein konstanter Ausdruck"
#: cp/semantics.c:7702
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "pointer comparison expression is not a constant expression"
-msgstr "Ganzzahlausdruck %qE ist nicht konstant"
+msgstr "Zeigervergleichsausdruck ist kein konstanter Ausdruck"
#: cp/semantics.c:7792
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "division by zero is not a constant-expression"
-msgstr "Ganzzahlausdruck %qE ist nicht konstant"
+msgstr "Division durch Null ist kein konstanter Ausdruck"
#: cp/semantics.c:7897
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "non-constant array initialization"
-msgstr "nichtkonstanter Feldindex in Initialisierung"
+msgstr "nicht konstante Feldinitialisierung"
#: cp/semantics.c:7903
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "unexpected ast of kind %s"
-msgstr "nicht erwarteter Typ für »id« (%s)"
+msgstr "unerwarteter AST der Art %s"
#: cp/semantics.c:8073
#, gcc-internal-format
msgid "cannot deduce lambda return type from a braced-init-list"
-msgstr ""
+msgstr "Lambda-Rückgabetyp kann nicht aus Initialisierungsliste mit geschweiften Klammern hergeleitet werden"
#: cp/semantics.c:8243
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot capture %qE by reference"
-msgstr "Referenz auf %q#T kann nicht deklariert werden"
+msgstr "%qE kann nicht per Referenz aufgefangen werden"
#: cp/semantics.c:8266
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "already captured %<this%> in lambda expression"
-msgstr "ungültige Operanden in binärem Ausdruck"
+msgstr "%<this%> bereits in Lambda-Ausdruck aufgefangen"
#: cp/semantics.c:8397
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<this%> was not captured for this lambda function"
-msgstr "%<this%> ist für statische Elementfunktionen nicht verfügbar"
+msgstr "%<this%> wurde für diese Lambda-Funktion nicht aufgefangen"
#: cp/tree.c:988
#, gcc-internal-format
@@ -31695,49 +31683,49 @@ msgid "lang_* check: failed in %s, at %s:%d"
msgstr "Überprüfung von lang_*: in %s, bei %s:%d gescheitert"
#: cp/typeck.c:454
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "comparison between distinct pointer types %qT and %qT lacks a cast"
-msgstr "%s zwischen den verschiedenen Zeigertypen %qT und %qT benötigt Umwandlung"
+msgstr "Vergleich zwischen den unterschiedlichen Zeigertypen %qT und %qT benötigt Umwandlung"
#: cp/typeck.c:460
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "conversion between distinct pointer types %qT and %qT lacks a cast"
-msgstr "%s zwischen den verschiedenen Zeigertypen %qT und %qT benötigt Umwandlung"
+msgstr "Umwandlung zwischen den unterschiedlichen Zeigertypen %qT und %qT benötigt Umwandlung"
#: cp/typeck.c:466
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "conditional expression between distinct pointer types %qT and %qT lacks a cast"
-msgstr "%s zwischen den verschiedenen Zeigertypen %qT und %qT benötigt Umwandlung"
+msgstr "Bedingungsausdruck mit den unterschiedlichen Zeigertypen %qT und %qT benötigt Umwandlung"
#: cp/typeck.c:604
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "ISO C++ forbids comparison between pointer of type %<void *%> and pointer-to-function"
-msgstr "ISO-C++ verbietet %s zwischen Zeiger des Typs %<void *%> und Zeiger auf Funktion"
+msgstr "ISO-C++ verbietet Vergleich zwischen Zeiger des Typs %<void *%> und Zeiger auf Funktion"
#: cp/typeck.c:609
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "ISO C++ forbids conversion between pointer of type %<void *%> and pointer-to-function"
-msgstr "ISO-C++ verbietet %s zwischen Zeiger des Typs %<void *%> und Zeiger auf Funktion"
+msgstr "ISO-C++ verbietet Umwandlung zwischen Zeiger des Typs %<void *%> und Zeiger auf Funktion"
#: cp/typeck.c:614
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "ISO C++ forbids conditional expression between pointer of type %<void *%> and pointer-to-function"
-msgstr "ISO-C++ verbietet %s zwischen Zeiger des Typs %<void *%> und Zeiger auf Funktion"
+msgstr "ISO-C++ verbietet Bedingungsausdruck mit Zeiger des Typs %<void *%> und Zeiger auf Funktion"
#: cp/typeck.c:681
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "comparison between distinct pointer-to-member types %qT and %qT lacks a cast"
-msgstr "%s zwischen verschiedenen Zeiger-auf-Element-Typen %qT und %qT fehlt eine Typkonvertierung"
+msgstr "beim Vergleich zwischen unterschiedlichen Zeiger-auf-Element-Typen %qT und %qT fehlt eine Typkonvertierung"
#: cp/typeck.c:686
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "conversion between distinct pointer-to-member types %qT and %qT lacks a cast"
-msgstr "%s zwischen verschiedenen Zeiger-auf-Element-Typen %qT und %qT fehlt eine Typkonvertierung"
+msgstr "bei Umwandlung zwischen unterschiedlichen Zeiger-auf-Element-Typen %qT und %qT fehlt eine Typkonvertierung"
#: cp/typeck.c:691
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "conditional expression between distinct pointer-to-member types %qT and %qT lacks a cast"
-msgstr "%s zwischen verschiedenen Zeiger-auf-Element-Typen %qT und %qT fehlt eine Typkonvertierung"
+msgstr "im Bedingungsausdruck mit unterschiedlichen Zeiger-auf-Element-Typen %qT und %qT fehlt eine Typkonvertierung"
#: cp/typeck.c:1378
#, gcc-internal-format
@@ -31805,14 +31793,14 @@ msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
msgstr "(vielleicht wurde das Makro %<offsetof%> falsch verwendet)"
#: cp/typeck.c:2236
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
msgstr "ungültiger Zugriff auf nicht-statisches Datenelement %qD des NULL-Objektes"
#: cp/typeck.c:2364
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
-msgstr "qualifizierter Typ %qT passt nicht zum Destruktornamen ~%qT"
+msgstr "Objekttyp %qT passt nicht zum Destruktornamen ~%qT"
#: cp/typeck.c:2372
#, gcc-internal-format
@@ -31850,19 +31838,19 @@ msgid "%qT is not a pointer-to-object type"
msgstr "%qT ist kein Zeiger auf Objekt"
#: cp/typeck.c:2775
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid use of array indexing on pointer to member"
-msgstr "ungültige Verwendung von %qs bei Zeiger auf Element"
+msgstr "ungültige Verwendung von Feldindizierung bei Zeiger auf Element"
#: cp/typeck.c:2778
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid use of unary %<*%> on pointer to member"
-msgstr "ungültige Verwendung von %qs bei Zeiger auf Element"
+msgstr "ungültige Verwendung des unären %<*%> bei Zeiger auf Element"
#: cp/typeck.c:2781
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid use of implicit conversion on pointer to member"
-msgstr "ungültige Verwendung von %qs bei Zeiger auf Element"
+msgstr "ungültige Verwendung impliziter Umwandlung bei Zeiger auf Element"
#: cp/typeck.c:2816
#, gcc-internal-format
@@ -31895,9 +31883,9 @@ msgid "ISO C++ forbids calling %<::main%> from within program"
msgstr "ISO-C++ verbietet den Aufruf von %<::main%> vom Programm aus"
#: cp/typeck.c:3232
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E (...)%>, e.g. %<(... ->* %E) (...)%>"
-msgstr "%<.*%> oder %<->*%> muss verwendet werden, um Zeiger auf Element in %<%E (...)%> aufzurufen"
+msgstr "%<.*%> oder %<->*%> muss verwendet werden, um Zeiger auf Element als Funktion in %<%E (...)%> aufzurufen, z.B. %<(... ->* %E) (...)%>"
#: cp/typeck.c:3247
#, gcc-internal-format
@@ -31905,44 +31893,44 @@ msgid "%qE cannot be used as a function"
msgstr "%qE kann nicht als Funktion verwendet werden"
#: cp/typeck.c:3295
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "too many arguments to constructor %q#D"
-msgstr "zu viele Argumente für %s %q+#D"
+msgstr "zu viele Argumente für Konstruktor %q#D"
#: cp/typeck.c:3296
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "too few arguments to constructor %q#D"
-msgstr "zu wenige Argumente für %s %q+#D"
+msgstr "zu wenige Argumente für Konstruktor %q#D"
#: cp/typeck.c:3301
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "too many arguments to member function %q#D"
-msgstr "zu viele Argumente für Funktion %qs"
+msgstr "zu viele Argumente für Elementfunktion %q#D"
#: cp/typeck.c:3302
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "too few arguments to member function %q#D"
-msgstr "Zu wenige Argumente für Funktion %qs"
+msgstr "Zu wenige Argumente für Elementfunktion %q#D"
#: cp/typeck.c:3308
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "too many arguments to function %q#D"
-msgstr "zu viele Argumente für Funktion %qs"
+msgstr "zu viele Argumente für Funktion %q#D"
#: cp/typeck.c:3309
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "too few arguments to function %q#D"
-msgstr "Zu wenige Argumente für Funktion %qs"
+msgstr "zu wenige Argumente für Funktion %q#D"
#: cp/typeck.c:3319
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "too many arguments to method %q#D"
-msgstr "zu viele Argumente für %s %q+#D"
+msgstr "zu viele Argumente für Methode %q#D"
#: cp/typeck.c:3320
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "too few arguments to method %q#D"
-msgstr "zu wenige Argumente für %s %q+#D"
+msgstr "zu wenige Argumente für Methode %q#D"
#: cp/typeck.c:3323
#, gcc-internal-format
@@ -32042,14 +32030,14 @@ msgid "invalid use of a pointer to an incomplete type in pointer arithmetic"
msgstr "ungültige Verwendung eines Zeigers auf einen unvollständigen Typen in Zeigerarithmetik"
#: cp/typeck.c:4564
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "taking address of constructor %qE"
-msgstr "Adresse des Destruktors wird ermittelt"
+msgstr "Adresse des Konstruktors %qE wird genommen"
#: cp/typeck.c:4565
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "taking address of destructor %qE"
-msgstr "Adresse des Destruktors wird ermittelt"
+msgstr "Adresse des Destruktors %qE wird genommen"
#: cp/typeck.c:4579
#, gcc-internal-format
@@ -32084,9 +32072,9 @@ msgid "taking address of temporary"
msgstr "Adresse eines temporären Wertes wird ermittelt"
#: cp/typeck.c:4782
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "taking address of xvalue (rvalue reference)"
-msgstr "Adresse eines temporären Wertes wird ermittelt"
+msgstr "Adresse eines X-Wertes (R-Wert-Referenz) wird genommen"
#: cp/typeck.c:4799
#, gcc-internal-format
@@ -32154,19 +32142,19 @@ msgid "address requested for %qD, which is declared %<register%>"
msgstr "Adresse für %qD angefordert, was als %<register%> deklariert ist"
#: cp/typeck.c:5470
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expression list treated as compound expression in initializer"
-msgstr "%s Ausdrucksliste als zusammengesetzten Ausdruck behandelt"
+msgstr "Ausdrucksliste als zusammengesetzten Ausdruck in Initialisierung behandelt"
#: cp/typeck.c:5474
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expression list treated as compound expression in mem-initializer"
-msgstr "%s Ausdrucksliste als zusammengesetzten Ausdruck behandelt"
+msgstr "Ausdrucksliste als zusammengesetzten Ausdruck in Speicherinitialisierung behandelt"
#: cp/typeck.c:5478
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expression list treated as compound expression in functional cast"
-msgstr "%s Ausdrucksliste als zusammengesetzten Ausdruck behandelt"
+msgstr "Ausdrucksliste als zusammengesetzten Ausdruck in funktionaler Umwandlung behandelt"
#: cp/typeck.c:5512
#, gcc-internal-format, gfc-internal-format
@@ -32176,22 +32164,22 @@ msgstr "%s Ausdrucksliste als zusammengesetzten Ausdruck behandelt"
#: cp/typeck.c:5585
#, gcc-internal-format
msgid "no context to resolve type of %qE"
-msgstr ""
+msgstr "kein Kontext, um Typ von %qE aufzulösen"
#: cp/typeck.c:5616
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
-msgstr "%s vom Typ %qT in Typ %qT entfernt Konstantheit"
+msgstr "Umwandlung des Typs %qT in Typ %qT entfernt Qualifizierer"
#: cp/typeck.c:5621
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
-msgstr "%s vom Typ %qT in Typ %qT entfernt Konstantheit"
+msgstr "static_cast des Typs %qT in Typ %qT entfernt Qualifizierer"
#: cp/typeck.c:5626
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
-msgstr "%s vom Typ %qT in Typ %qT entfernt Konstantheit"
+msgstr "reinterpret_cast des Typs %qT in Typ %qT entfernt Qualifizierer"
#: cp/typeck.c:5940
#, gcc-internal-format
@@ -32268,9 +32256,9 @@ msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr " in Auswertung von %<%Q(%#T, %#T)%>"
#: cp/typeck.c:6714
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "assigning to an array from an initializer list"
-msgstr "nichtkonstanter Feldindex in Initialisierung"
+msgstr "Zuweisung an Feld von Initialisierungsliste"
#: cp/typeck.c:6726
#, gcc-internal-format
@@ -32313,59 +32301,59 @@ msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr "%qT kann nicht nach %qT für Argument %qP nach %qD umgewandelt werden"
#: cp/typeck.c:7301
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot convert %qT to %qT in default argument"
-msgstr "%qT kann nicht nach %qT für Argument %qP nach %qD umgewandelt werden"
+msgstr "%qT kann nicht nach %qT im Standardargument umgewandelt werden"
#: cp/typeck.c:7305
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot convert %qT to %qT in argument passing"
-msgstr "%qT kann nicht nach %qT in %s umgewandelt werden"
+msgstr "%qT kann nicht nach %qT bei Argumentübergabe umgewandelt werden"
#: cp/typeck.c:7309
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot convert %qT to %qT"
-msgstr "%qT kann nicht nach %qT in %s umgewandelt werden"
+msgstr "%qT kann nicht nach %qT umgewandelt werden"
#: cp/typeck.c:7313
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot convert %qT to %qT in initialization"
-msgstr "%qT kann nicht nach %qT in %s umgewandelt werden"
+msgstr "%qT kann nicht nach %qT in Initialisierung umgewandelt werden"
#: cp/typeck.c:7317
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot convert %qT to %qT in return"
-msgstr "%qT kann nicht nach %qT in %s umgewandelt werden"
+msgstr "%qT kann nicht nach %qT in Rückgabe umgewandelt werden"
#: cp/typeck.c:7321
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot convert %qT to %qT in assignment"
-msgstr "%qT kann nicht nach %qT in %s umgewandelt werden"
+msgstr "%qT kann nicht nach %qT in Zuweisung umgewandelt werden"
#: cp/typeck.c:7344
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "parameter %qP of %qD might be a candidate for a format attribute"
-msgstr "Argument %d von %qE könnte Kandidat für Formatattribut sein"
+msgstr "Parameter %qP von %qD könnte Kandidat für Formatattribut sein"
#: cp/typeck.c:7348
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "parameter might be a candidate for a format attribute"
-msgstr "Rückgabetyp könnte Kandidat für Formatattribut sein"
+msgstr "Parameter könnte ein Kandidat für ein Formatattribut sein"
#: cp/typeck.c:7353
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "target of conversion might be a candidate for a format attribute"
-msgstr "Argument des Funktionsaufrufs könnte Kandidat für Formatattribut sein"
+msgstr "Ziel der Umwandlung könnte Kandidat ein für ein Formatattribut sein"
#: cp/typeck.c:7358
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "target of initialization might be a candidate for a format attribute"
-msgstr "Argument des Funktionsaufrufs könnte Kandidat für Formatattribut sein"
+msgstr "Ziel der Initialisierung könnte ein Kandidat für Formatattribut sein"
#: cp/typeck.c:7368
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "left-hand side of assignment might be a candidate for a format attribute"
-msgstr "Links-Zuweisung könnte Kandidat für Formatattribut sein"
+msgstr "linke Seite der Zuweisung könnte ein Kandidat für ein Formatattribut sein"
#: cp/typeck.c:7464 cp/typeck.c:7466
#, gcc-internal-format
@@ -32413,12 +32401,12 @@ msgstr "Rückgabe eines Wertes von einem Konstruktor"
#: cp/typeck.c:7611
#, gcc-internal-format
msgid "lambda return type can only be deduced when the return statement is the only statement in the function body"
-msgstr ""
+msgstr "Lambda-Rückgabetyp kann nur abgeleitet werden, wenn die Rückgabeanweisung die einzige Anweisung im Funktionskörper ist"
#: cp/typeck.c:7617
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "inconsistent types %qT and %qT deduced for lambda return type"
-msgstr "neue Typen dürfen nicht in einem Rückgabetyp definiert werden"
+msgstr "widersprüchliche Typen %qT und %qT für Lambda-Rückgabetypen hergeleitet"
#: cp/typeck.c:7643
#, gcc-internal-format
@@ -32439,12 +32427,12 @@ msgstr "%<operator new%> darf nicht NULL zurückgeben, außer es ist mit %<throw
#: cp/typeck.c:8267
#, gcc-internal-format
msgid "using temporary as lvalue"
-msgstr ""
+msgstr "temporärer Wert wird als L-Wert verwendet"
#: cp/typeck.c:8269
#, gcc-internal-format
msgid "using xvalue (rvalue reference) as lvalue"
-msgstr ""
+msgstr "X-Wert (R-Wert-Referenz) wird als L-Wert verwendet"
#: cp/typeck2.c:53
#, gcc-internal-format
@@ -32452,44 +32440,44 @@ msgid "type %qT is not a base type for type %qT"
msgstr "Typ %qT ist kein Basistyp für Typ %qT"
#: cp/typeck2.c:107
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "assignment of constant field %qD"
-msgstr "Zuweisung der schreibgeschützten Variable %qD"
+msgstr "Zuweisung des konstanten Feldes %qD"
#: cp/typeck2.c:109
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "constant field %qD used as %<asm%> output"
-msgstr "schreibgeschützte Variable %qD als %<asm%>-Ausgabe verwendet"
+msgstr "konstantes Feld %qD als %<asm%>-Ausgabe verwendet"
#: cp/typeck2.c:111
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "increment of constant field %qD"
-msgstr "Erhöhung der schreibgeschützten Variable %qD"
+msgstr "Erhöhung des konstanten Feldes %qD"
#: cp/typeck2.c:113
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "decrement of constant field %qD"
-msgstr "Verringerung der schreibgeschützten Variable %qD"
+msgstr "Verringerung des konstanten Feldes %qD"
#: cp/typeck2.c:120
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "assignment of read-only reference %qD"
-msgstr "Zuweisung des schreibgeschützten Elementes %qD"
+msgstr "Zuweisung der schreibgeschützten Referenz %qD"
#: cp/typeck2.c:122
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "read-only reference %qD used as %<asm%> output"
-msgstr "schreibgeschütztes Element %qD als %<asm%>-Ausgabe verwendet"
+msgstr "schreibgeschützte Referenz %qD als %<asm%>-Ausgabe verwendet"
#: cp/typeck2.c:124
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "increment of read-only reference %qD"
-msgstr "Erhöhung des schreibgeschützten Elementes %qD"
+msgstr "Erhöhung der schreibgeschützten Referenz %qD"
#: cp/typeck2.c:126
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "decrement of read-only reference %qD"
-msgstr "Verringerung des schreibgeschützten Elementes %qD"
+msgstr "Verringerung der schreibgeschützten Referenz %qD"
#: cp/typeck2.c:310
#, gcc-internal-format
@@ -32533,9 +32521,9 @@ msgid "cannot allocate an object of abstract type %qT"
msgstr "es kann kein Objekt des abstrakten Typs %qT belegt werden"
#: cp/typeck2.c:339
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid " because the following virtual functions are pure within %qT:"
-msgstr "%J denn die folgenden virtuellen Funktionen sind rein innerhalb %qT:"
+msgstr " denn die folgenden virtuellen Funktionen sind rein innerhalb %qT:"
#: cp/typeck2.c:343
#, gcc-internal-format
@@ -32543,69 +32531,69 @@ msgid "\t%+#D"
msgstr "\t%+#D"
#: cp/typeck2.c:351
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid " since type %qT has pure virtual functions"
-msgstr "%J denn der Typ %qT hat rein virtuelle Funktionen"
+msgstr " denn der Typ %qT hat rein virtuelle Funktionen"
#: cp/typeck2.c:381
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%q+D has incomplete type"
-msgstr "%qD hat unvollständigen Typen"
+msgstr "%q+D hat unvollständigen Typen"
#: cp/typeck2.c:394
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid use of incomplete type %q#T"
-msgstr "falsche Benutzung des unvollständigen typedef %qD"
+msgstr "falsche Benutzung des unvollständigen Typs %q#T"
#: cp/typeck2.c:397
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "forward declaration of %q+#T"
-msgstr "Deklaration von %q+#D"
+msgstr "Vorwärtsdeklaration von %q+#T"
#: cp/typeck2.c:400
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "declaration of %q+#T"
-msgstr "Deklaration von %q+#D"
+msgstr "Deklaration von %q+#T"
#: cp/typeck2.c:405
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid use of %qT"
-msgstr "ungültige Verwendung von %qD"
+msgstr "ungültige Verwendung von %qT"
#: cp/typeck2.c:421
#, gcc-internal-format
msgid "invalid use of member (did you forget the %<&%> ?)"
-msgstr ""
+msgstr "ungültige Verwendung eines Elements (%<&%> vergessen?)"
#: cp/typeck2.c:430
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid use of template type parameter %qT"
-msgstr "falsche Benutzung des unvollständigen typedef %qD"
+msgstr "ungültige Verwendung des Parameters %qT für Templatetyp"
#: cp/typeck2.c:435
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid use of template template parameter %qT"
-msgstr "ungültiges Standardargument für einen Template-Templateparameter"
+msgstr "ungültige Verwendung des Parameters %qT für Template-Templateparameter"
#: cp/typeck2.c:441
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid use of dependent type %qT"
-msgstr "falsche Benutzung des unvollständigen typedef %qD"
+msgstr "ungültige Verwendung des abhängigen Typen %qT"
#: cp/typeck2.c:450
#, gcc-internal-format
msgid "address of overloaded function with no contextual type information"
-msgstr ""
+msgstr "Adresse einer überladenen Funktion ohne Typinformationen aus Kontext"
#: cp/typeck2.c:454
#, gcc-internal-format
msgid "overloaded function with no contextual type information"
-msgstr ""
+msgstr "überladene Funktion ohne Typinformationen aus Kontext"
#: cp/typeck2.c:457
#, gcc-internal-format
msgid "insufficient contextual information to determine type"
-msgstr ""
+msgstr "unzureichende Informationen für Typbestimmung aus Kontext"
#: cp/typeck2.c:646
#, gcc-internal-format
@@ -32618,9 +32606,9 @@ msgid "cannot initialize arrays using this syntax"
msgstr "mit dieser Syntax können keine Felder initialisiert werden"
#: cp/typeck2.c:768
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "narrowing conversion of %qE from %qT to %qT inside { }"
-msgstr "Umwandlung von %qE von %qT nach %qT ist mehrdeutig"
+msgstr "verengende Umwandlung von %qE von %qT nach %qT in { }"
#: cp/typeck2.c:826
#, gcc-internal-format
@@ -32628,9 +32616,9 @@ msgid "int-array initialized from non-wide string"
msgstr "int-Feld mit Nicht-wide-Zeichenkette initialisiert"
#: cp/typeck2.c:831
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "int-array initialized from incompatible wide string"
-msgstr "int-Feld mit Nicht-wide-Zeichenkette initialisiert"
+msgstr "Ganzzahlfeld mit unverträglicher wide-Zeichenkette initialisiert"
#: cp/typeck2.c:846
#, gcc-internal-format
@@ -32718,9 +32706,9 @@ msgid "pointer to member type %qT incompatible with object type %qT"
msgstr "Zeiger auf Elementtyp %qT mit Objekttyp %qT inkompatibel"
#: cp/typeck2.c:1530
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid value-initialization of reference type"
-msgstr "Wert-Initialisierung von Referenz"
+msgstr "ungültige Wert-Initialisierung von Referenztyp"
#: cp/typeck2.c:1732
#, gcc-internal-format
@@ -32735,7 +32723,7 @@ msgstr "Aufruf einer Funktion, die unvollständigen Typen %q#T wirft"
#: fortran/arith.c:46
#, gcc-internal-format, gfc-internal-format
msgid "Conversion of an Infinity or Not-a-Number at %L to INTEGER"
-msgstr ""
+msgstr "Umwandlung einer Unendlichkeit oder NaN bei %L in INTEGER"
#: fortran/arith.c:905 fortran/arith.c:927
#, gcc-internal-format, gfc-internal-format
@@ -32745,7 +32733,7 @@ msgstr "Fortran 2003: Nichtganzzahliger Exponent in einem Initialisierungsausdru
#: fortran/arith.c:913
#, gcc-internal-format, gfc-internal-format
msgid "Raising a negative REAL at %L to a REAL power is prohibited"
-msgstr ""
+msgstr "Erhöhung eines negativen REAL bei %L zu einer REAL-Potenz ist verboten"
#: fortran/arith.c:1909
#, gcc-internal-format, gfc-internal-format
@@ -32758,14 +32746,14 @@ msgid "Arithmetic overflow converting %s to %s at %L. This check can be disabled
msgstr "Arithmetischer Überlauf bei Umwandlung von %s in %s bei %L. Diese Überprüfung kann mit der Option -fno-range-check ausgeschaltet werden"
#: fortran/arith.c:1918
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic underflow converting %s to %s at %L. This check can be disabled with the option -fno-range-check"
-msgstr "Arithmetischer Überlauf bei Umwandlung von %s in %s bei %L. Diese Überprüfung kann mit der Option -fno-range-check ausgeschaltet werden"
+msgstr "Arithmetischer Unterlauf bei Umwandlung von %s in %s bei %L. Diese Überprüfung kann mit der Option -fno-range-check ausgeschaltet werden"
#: fortran/arith.c:1923
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Arithmetic NaN converting %s to %s at %L. This check can be disabled with the option -fno-range-check"
-msgstr "Arithmetischer Überlauf bei Umwandlung von %s in %s bei %L. Diese Überprüfung kann mit der Option -fno-range-check ausgeschaltet werden"
+msgstr "Arithmetisches NaN bei Umwandlung von %s in %s bei %L. Diese Überprüfung kann mit der Option -fno-range-check ausgeschaltet werden"
#: fortran/arith.c:1928
#, gcc-internal-format, gfc-internal-format
@@ -32793,14 +32781,14 @@ msgid "Expected array subscript at %C"
msgstr "Feldindex erwartet bei %C"
#: fortran/array.c:106
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Unexpected '*' in coarray subscript at %C"
-msgstr "Feldindex erwartet bei %C"
+msgstr "Unerwartetes '*' in Coarray-Index bei %C"
#: fortran/array.c:130
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Strides not allowed in coarray subscript at %C"
-msgstr "Feldindex erwartet bei %C"
+msgstr "Schrittweiten in Coarray-Index bei %C nicht erlaubt"
#: fortran/array.c:138
#, gcc-internal-format, gfc-internal-format
@@ -32822,32 +32810,32 @@ msgstr "Feldreferenz bei %C kann nicht mehr als %d Dimensionen haben"
#: fortran/match.c:1758 fortran/match.c:2339 fortran/simplify.c:4590
#, gcc-internal-format, gfc-internal-format
msgid "Coarrays disabled at %C, use -fcoarray= to enable"
-msgstr ""
+msgstr "Coarray bei %C ausgeschaltet, -fcoarray= zum Einschalten verwenden"
#: fortran/array.c:221
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Unexpected coarray designator at %C"
-msgstr "Feldindex erwartet bei %C"
+msgstr "Unerwarteter Coarray-Bezeichner bei %C"
#: fortran/array.c:236
#, gcc-internal-format, gfc-internal-format
msgid "Too few codimensions at %C, expected %d not %d"
-msgstr ""
+msgstr "Zu wenige Codimensionen bei %C, %d statt %d erwartet"
#: fortran/array.c:246
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Unexpected '*' for codimension %d of %d at %C"
-msgstr "Andere Dimension in Felddeklaration bei %C erwartet"
+msgstr "Unerwartetes '*' für Codimension %d von %d bei %C"
#: fortran/array.c:249
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Invalid form of coarray reference at %C"
-msgstr "Ungültige Form der Feldreferenz bei %C"
+msgstr "Ungültige Form der Coarray-Referenz bei %C"
#: fortran/array.c:254
#, gcc-internal-format, gfc-internal-format
msgid "Invalid codimension %d at %C, only %d codimensions exist"
-msgstr ""
+msgstr "Ungültige Codimension %d bei %C, nur %d Codimensionen existieren"
#: fortran/array.c:306
#, gcc-internal-format, gfc-internal-format
@@ -32855,9 +32843,9 @@ msgid "Variable '%s' at %L in this context must be constant"
msgstr "Variable »%s« bei %L muss in diesem Kontext eine Konstante sein"
#: fortran/array.c:309
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Expression at %L in this context must be constant"
-msgstr "Variable »%s« bei %L muss in diesem Kontext eine Konstante sein"
+msgstr "Ausdruck bei %L muss in diesem Kontext eine Konstante sein"
#: fortran/array.c:400
#, gcc-internal-format, gfc-internal-format
@@ -32865,7 +32853,7 @@ msgid "Expected expression in array specification at %C"
msgstr "Erwarteter Ausdruck in Feldspezifikation bei %C"
#: fortran/array.c:479
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification for implied-shape array at %C"
msgstr "Falsche Feldangabe für Feld mit implizit gebildeter Form bei %C"
@@ -32877,7 +32865,7 @@ msgstr "Falsche Feldangabe für Feld mit explizit gebildeter Form bei %C"
#: fortran/array.c:505 fortran/array.c:610
#, gcc-internal-format, gfc-internal-format
msgid "Bad array specification for assumed shape array at %C"
-msgstr "Falsche Feldangabe für Feld mit implizit gebildeter Form bei %C"
+msgstr "Falsche Feldangabe für Feld mit durch Vermutung gebildeter Form bei %C"
#: fortran/array.c:519 fortran/array.c:624
#, gcc-internal-format, gfc-internal-format
@@ -32900,19 +32888,19 @@ msgid "Array specification at %C has more than %d dimensions"
msgstr "Feldspezifikation bei %C hat mehr als %d Dimensionen"
#: fortran/array.c:550
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Array specification at %C with more than 7 dimensions"
-msgstr "Feldspezifikation bei %C hat mehr als %d Dimensionen"
+msgstr "Fortran 2008: Feldspezifikation bei %C mit mehr als 7 Dimensionen"
#: fortran/array.c:563
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Coarray declaration at %C"
-msgstr "Fortran 2003: Feldkonstruktoren im [...]-Stil bei %C"
+msgstr "Fortran 2008: Coarray-Deklaration bei %C"
#: fortran/array.c:651
#, gcc-internal-format, gfc-internal-format
msgid "Upper bound of last coarray dimension must be '*' at %C"
-msgstr ""
+msgstr "Obere Grenze der letzten Coarray-Dimension muss '*' bei %C sein"
#: fortran/array.c:871
#, gcc-internal-format, gfc-internal-format
@@ -32930,14 +32918,14 @@ msgid "Fortran 2003: [...] style array constructors at %C"
msgstr "Fortran 2003: Feldkonstruktoren im [...]-Stil bei %C"
#: fortran/array.c:1035
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Array constructor including type specification at %C"
-msgstr "Fortran 2003: Feldkonstruktoren im [...]-Stil bei %C"
+msgstr "Fortran 2003: Feldkonstruktor mit Typspezifikation bei %C"
#: fortran/array.c:1041 fortran/match.c:2895
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Type-spec at %L cannot contain a deferred type parameter"
-msgstr "Feld »%s« bei %L kann keine aufgeschobene Form haben"
+msgstr "Typspezifikation bei %L kann keine Parameter mit aufgeschobenem Typ haben"
#: fortran/array.c:1057
#, gcc-internal-format, gfc-internal-format
@@ -32962,9 +32950,9 @@ msgid "The number of elements in the array constructor at %L requires an increas
msgstr ""
#: fortran/array.c:1802
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Different CHARACTER lengths (%d/%d) in array constructor at %L"
-msgstr "Element in Feldkonstruktor %s bei %L ist %s"
+msgstr "Unterschiedliche CHARACTER-Längen (%d, %d) in Feldkonstruktor bei %L"
#: fortran/check.c:45
#, gcc-internal-format, gfc-internal-format
@@ -33012,9 +33000,9 @@ msgid "'%s' argument of '%s' intrinsic at %L must be double precision"
msgstr "Argument »%s« des intrinsischen »%s« bei %L muss doppelte Genauigkeit haben"
#: fortran/check.c:236
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Expected coarray variable as '%s' argument to the %s intrinsic at %L"
-msgstr "Fehlende Argumente für intrinsisches %s bei %L"
+msgstr "Coarray-Variable als Argument '%s' für intrinsisches %s bei %L erwartet"
#: fortran/check.c:253
#, gcc-internal-format, gfc-internal-format
@@ -33027,29 +33015,29 @@ msgid "'%s' argument of '%s' intrinsic at %L must be an array"
msgstr "Argument »%s« des intrinsischen »%s« bei %L muss ein Feld sein"
#: fortran/check.c:292
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must be nonnegative"
-msgstr "Markierung %s bei %L muss vom Typ %s sein"
+msgstr "'%s' bei %L muss nichtnegativ sein"
#: fortran/check.c:318
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must be less than or equal to BIT_SIZE('%s')"
-msgstr "Argument von LOG bei %L kann nicht kleiner oder gleich Null sein"
+msgstr "'%s' bei %L muss kleiner oder gleich BIT_SIZE('%s') sein"
#: fortran/check.c:328
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must be less than BIT_SIZE('%s')"
-msgstr ""
+msgstr "'%s' bei %L muss kleiner als BIT_SIZE('%s') sein"
#: fortran/check.c:355
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L must be less than or equal to the BIT_SIZE of INTEGER(KIND=%d)"
-msgstr ""
+msgstr "'%s' bei %L muss kleiner oder gleich der BIT_SIZE von INTEGER(KIND=%d) sein"
#: fortran/check.c:381
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s + %s' at %L must be less than or equal to BIT_SIZE('%s')"
-msgstr "Argument von LOG bei %L kann nicht kleiner oder gleich Null sein"
+msgstr "'%s + %s' bei %L muss kleiner oder gleich BIT_SIZE('%s') sein"
#: fortran/check.c:399
#, gcc-internal-format, gfc-internal-format
@@ -33087,9 +33075,9 @@ msgid "'%s' argument of '%s' intrinsic at %L must be a variable"
msgstr "Argument »%s« des intrinsischen »%s« bei %L muss eine Variable sein"
#: fortran/check.c:553
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'dim' argument of '%s' intrinsic at %L is not a valid codimension index"
-msgstr "Argument »dim« des intrinsischen »%s« bei %L ist kein gültiger Dimensionsindex"
+msgstr "Argument »dim« des intrinsischen »%s« bei %L ist kein gültiger Codimensionsindex"
#: fortran/check.c:599
#, gcc-internal-format, gfc-internal-format
@@ -33097,9 +33085,9 @@ msgid "'dim' argument of '%s' intrinsic at %L is not a valid dimension index"
msgstr "Argument »dim« des intrinsischen »%s« bei %L ist kein gültiger Dimensionsindex"
#: fortran/check.c:697
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Unequal character lengths (%ld/%ld) in %s at %L"
-msgstr "Ungleiche Zeichenlängen (%ld und %ld) in intrinsischem %s bei %L"
+msgstr "Ungleiche Zeichenlängen (%ld, %ld) in %s bei %L"
#: fortran/check.c:819 fortran/check.c:4830
#, gcc-internal-format, gfc-internal-format
@@ -33138,9 +33126,9 @@ msgid "NULL pointer at %L is not permitted as actual argument of '%s' intrinsic
msgstr "NULL-Zeiger bei %L ist nicht als effektives Argument der intrinsischen Funktion »%s« erlaubt"
#: fortran/check.c:963
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Extension: Negative argument N at %L"
-msgstr "Erweiterung: Argumentlistenfunktion bei %C"
+msgstr "Erweiterung: Negatives Argument N bei %L"
#: fortran/check.c:1135 fortran/check.c:1294
#, gcc-internal-format, gfc-internal-format
@@ -33148,9 +33136,9 @@ msgid "'%s' argument of '%s' intrinsic at %L must not be present if 'x' is COMPL
msgstr "Argument »%s« des intrinsischen »%s« bei %L darf nicht vorhanden sein, wenn »x« COMPLEX ist"
#: fortran/check.c:1144 fortran/check.c:1303
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of '%s' intrinsic at %L must have a type of either REAL or INTEGER"
-msgstr "Argument »%s« des intrinsischen »%s« bei %L muss vom Typ REAL oder COMPLEX sein"
+msgstr "»%s« Argument des intrinsischen »%s« bei %L muss vom Typ REAL oder INTEGER sein"
#: fortran/check.c:1188 fortran/check.c:1702 fortran/check.c:1805
#: fortran/check.c:1961 fortran/check.c:2006 fortran/check.c:3146
@@ -33161,14 +33149,14 @@ msgid "Fortran 2003: '%s' intrinsic with KIND argument at %L"
msgstr "Fortran 2003: intrinsisches »%s« mit KIND-Argument bei %L"
#: fortran/check.c:1235 fortran/check.c:1468
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of '%s' intrinsic at %L has invalid shape in dimension %d (%ld/%ld)"
-msgstr "Argument »dim« des intrinsischen »%s« bei %L ist kein gültiger Dimensionsindex"
+msgstr "Argument »%s« des intrinsischen »%s« bei %L hat ungültige Form in Dimension %d (%ld/%ld)"
#: fortran/check.c:1250 fortran/check.c:1483 fortran/check.c:1511
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of intrinsic '%s' at %L of must have rank %d or be a scalar"
-msgstr "Argument »%s« des intrinsischen »%s« bei %L muss ein Skalar sein"
+msgstr "Argument »%s« des intrinsischen »%s« bei %L muss Rang %d haben oder ein Skalar sein"
#: fortran/check.c:1353 fortran/check.c:2265 fortran/check.c:2273
#, gcc-internal-format, gfc-internal-format
@@ -33186,14 +33174,14 @@ msgid "'%s' argument of '%s' intrinsic at %L must be default real"
msgstr "Argument »%s« des intrinsischen »%s« bei %L muss ein Standard-Real sein"
#: fortran/check.c:1529
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "GNU extension: non-default INTEGER kind argument to %s intrinsic at %L"
-msgstr "Fehlende Argumente für intrinsisches %s bei %L"
+msgstr "GNU-Erweiterung: Nicht-Standard Argument der Art INTEGER für intrinsisches »%s« bei %L"
#: fortran/check.c:1589
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: COMPLEX argument '%s' argument of '%s' intrinsic at %L"
-msgstr "Argument »%s« des intrinsischen »%s« bei %L muss %s sein"
+msgstr "Fortran 2008: COMPLEX-Argument »%s« des intrinsischen »%s« bei %L"
#: fortran/check.c:1753
#, gcc-internal-format, gfc-internal-format
@@ -33231,9 +33219,9 @@ msgid "'a1' argument of '%s' intrinsic at %L must be INTEGER, REAL or CHARACTER"
msgstr "Argument »a1« des intrinsischen »%s« bei %L muss INTEGER, REAL oder CHARACTER sein"
#: fortran/check.c:2282
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Argument types of '%s' intrinsic at %L must match (%s/%s)"
-msgstr "Argument »a%d« des intrinsischen »%s« bei %L muss %s(%d) sein"
+msgstr "Argumenttypen des intrinsischen »%s« bei %L müssen passen (%s/%s)"
#: fortran/check.c:2296
#, gcc-internal-format, gfc-internal-format
@@ -33251,9 +33239,9 @@ msgid "'%s' argument of '%s' intrinsic at %L must be of rank 1 or 2"
msgstr "Argument »%s« des intrinsischen »%s« bei %L muss vom Rang 1 oder 2 sein"
#: fortran/check.c:2499
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER"
-msgstr "Argument »%s« des intrinsischen »%s« bei %L muss ein POINTER sein"
+msgstr "Argument »%s« des intrinsischen »%s« bei %L muss ein INTEGER sein"
#: fortran/check.c:2568
#, gcc-internal-format, gfc-internal-format
@@ -33266,9 +33254,9 @@ msgid "the '%s' and '%s' arguments of '%s' intrinsic at %L must be of the same k
msgstr "Argumente »%s« und »%s« des intrinsischen »%s« bei %L müssen von der selben Art %d/%d sein"
#: fortran/check.c:2718 fortran/check.c:3850
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of '%s' intrinsic at %L must provide at least as many elements as there are .TRUE. values in '%s' (%ld/%d)"
-msgstr "Argument »%s« des intrinsischen »%s« bei %L muss vom gleichen Typ und gleicher Art wie »%s« sein"
+msgstr "Argument »%s« des intrinsischen »%s« bei %L muss mindestens so viele Elemente haben wie es .TRUE.-Werte »%s« (%ld/%d) gibt"
#: fortran/check.c:2776
#, gcc-internal-format, gfc-internal-format
@@ -33291,9 +33279,9 @@ msgid "'shape' argument of 'reshape' intrinsic at %L must be an array of constan
msgstr "Argument »shape« des intrinsischen »reshape« bei %L muss ein Feld konstanter Größe sein"
#: fortran/check.c:2936
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of '%s' intrinsic at %L is empty"
-msgstr "Argument »%s« des intrinsischen »%s« bei %L muss %s sein"
+msgstr "Argument »%s« des intrinsischen »%s« bei %L ist leer"
#: fortran/check.c:2943
#, gcc-internal-format, gfc-internal-format
@@ -33301,24 +33289,24 @@ msgid "'shape' argument of 'reshape' intrinsic at %L has more than %d elements"
msgstr "Argument »shape« des intrinsischen »reshape« bei %L hat mehr als %d Elemente"
#: fortran/check.c:2960
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of '%s' intrinsic at %L has negative element (%d)"
-msgstr "Argument »a%d« des intrinsischen »%s« bei %L muss %s(%d) sein"
+msgstr "Argument »%s« des intrinsischen »%s« bei %L hat negatives Element (%d)"
#: fortran/check.c:3000
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of '%s' intrinsic at %L has wrong number of elements (%d/%d)"
-msgstr "Argument »%s« des intrinsischen »%s« bei %L muss vom Rang %d sein"
+msgstr "Argument »%s« des intrinsischen »%s« bei %L hat falsche Anzahl der Elemente (%d/%d)"
#: fortran/check.c:3018
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of '%s' intrinsic at %L has out-of-range dimension (%d)"
-msgstr "Argument »dim« des intrinsischen »%s« bei %L ist kein gültiger Dimensionsindex"
+msgstr "Argument »%s« des intrinsischen »%s« bei %L hat Dimension außerhalb des Wertebereiches (%d)"
#: fortran/check.c:3027
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of '%s' intrinsic at %L has invalid permutation of dimensions (dimension '%d' duplicated)"
-msgstr "Argument »dim« des intrinsischen »%s« bei %L ist kein gültiger Dimensionsindex"
+msgstr "Argument »%s« des intrinsischen »%s« bei %L hat ungültige Permutation der Dimensionen (Dimension »%d« doppelt)"
#: fortran/check.c:3063
#, gcc-internal-format, gfc-internal-format
@@ -33326,24 +33314,24 @@ msgid "Without padding, there are not enough elements in the intrinsic RESHAPE s
msgstr "Ohne Auffüllen gibt es nicht genügend Elemente in eingebauter RESHAPE-Quelle bei %L um zur Form zu passen"
#: fortran/check.c:3081 fortran/check.c:3099
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of '%s' intrinsic at %L must be of a derived type"
-msgstr "Argument »%s« des intrinsischen »%s« bei %L darf kein abgeleiteter Typ sein"
+msgstr "Argument »%s« des intrinsischen »%s« bei %L muss abgeleiteten Typ haben"
#: fortran/check.c:3090 fortran/check.c:3108
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of '%s' intrinsic at %L must be of an extensible type"
-msgstr "Argument »%s« des intrinsischen »%s« bei %L muss ein numerischer Typ sein"
+msgstr "Argument »%s« des intrinsischen »%s« bei %L muss erweiterbaren Typ haben"
#: fortran/check.c:3207
#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: SELECTED_REAL_KIND with neither 'P' nor 'R' argument at %L"
-msgstr ""
+msgstr "Fortran 2008: SELECTED_REAL_KIND ohne Argument »P« oder »R« bei %L"
#: fortran/check.c:3238
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: '%s' intrinsic with RADIX argument at %L"
-msgstr "Fortran 2003: intrinsisches »%s« mit KIND-Argument bei %L"
+msgstr "Fortran 2008: intrinsisches »%s« mit RADIX-Argument bei %L"
#: fortran/check.c:3273
#, gcc-internal-format, gfc-internal-format
@@ -33351,14 +33339,14 @@ msgid "'source' argument of 'shape' intrinsic at %L must not be an assumed size
msgstr "Argument »source« des intrinsischen »shape« bei %L darf kein Feld impliziter Größe sein"
#: fortran/check.c:3357
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of '%s' intrinsic at %L must be be an interoperable data entity"
-msgstr "Argument »%s« des intrinsischen »%s« bei %L muss ein Feld sein"
+msgstr "Argument »%s« des intrinsischen »%s« bei %L muss kompatible Datenentität sein"
#: fortran/check.c:3386
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "GNU extension: non double precision REAL argument to %s intrinsic at %L"
-msgstr "Fehlende Argumente für intrinsisches %s bei %L"
+msgstr "GNU-Erweiterung: REAL-Argument ohne doppelte Genauigkeit für intrinsisches %s bei %L"
#: fortran/check.c:3399
#, gcc-internal-format, gfc-internal-format
@@ -33366,19 +33354,19 @@ msgid "'%s' argument of '%s' intrinsic at %L must be less than rank %d"
msgstr "Argument »%s« für intrinsisches »%s« bei %L muss geringer als Rang %d sein"
#: fortran/check.c:3418
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of '%s' intrinsic at %L is not a valid dimension index"
-msgstr "Argument »dim« des intrinsischen »%s« bei %L ist kein gültiger Dimensionsindex"
+msgstr "Argument »%s« des intrinsischen »%s« bei %L ist kein gültiger Dimensionsindex"
#: fortran/check.c:3679
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "%s argument to IMAGE_INDEX must be a rank one array at %L"
-msgstr "Effektives Argument für »%s« muss ein Zeiger bei %L sein"
+msgstr "Argument »%s« für IMAGE_INDEX muss Feld mit Rang 1 bei %L sein"
#: fortran/check.c:3699
#, gcc-internal-format, gfc-internal-format
msgid "DIM argument without ARRAY argument not allowed for THIS_IMAGE intrinsic at %L"
-msgstr ""
+msgstr "DIM-Argument ohne ARRAY-Argument ist für intrinsisches THIS_IMAGE bei %L nicht erlaubt"
#: fortran/check.c:3729
#, gcc-internal-format, gfc-internal-format
@@ -33386,19 +33374,19 @@ msgid "'MOLD' argument of 'TRANSFER' intrinsic at %L must not be %s"
msgstr "Argument »MOLD« des intrinsischen »TRANSFER« bei %L darf nicht %s sein"
#: fortran/check.c:3864
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' argument of '%s' intrinsic at %L must have the same rank as '%s' or be a scalar"
-msgstr "Argument »%s« des intrinsischen »%s« bei %L muss von der selben Art wie »%s« sein"
+msgstr "Argument »%s« des intrinsischen »%s« bei %L muss den selben Rang wie »%s« haben oder skalar sein"
#: fortran/check.c:3877
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' and '%s' arguments of '%s' intrinsic at %L must have identical shape."
-msgstr "Argumente »%s« und »%s« des intrinsischen »%s« bei %L müssen den selben Typ haben"
+msgstr "Argumente »%s« und »%s« des intrinsischen »%s« bei %L müssen gleiche Form haben."
#: fortran/check.c:4136 fortran/check.c:4168
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Size of '%s' argument of '%s' intrinsic at %L too small (%i/%i)"
-msgstr "Argument »%s« des intrinsischen »%s« bei %L muss %s sein"
+msgstr "Größe des Arguments »%s« des intrinsischen »%s« bei %L ist zu klein (%i/%i)"
#: fortran/check.c:4176
#, gcc-internal-format, gfc-internal-format
@@ -33416,31 +33404,31 @@ msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or LOGICAL"
msgstr "Argument »%s« für intrinsisches »%s« bei %L muss INTEGER oder LOGICAL sein"
#: fortran/class.c:199
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Polymorphic array at %C not yet supported"
-msgstr "Parameter verschiedener Typen in Zeigerzuweisung bei %L"
+msgstr "Polymorphes Feld bei %C wird noch nicht unterstützt"
#. Since the extension field is 8 bit wide, we can only have
#. up to 255 extension levels.
#: fortran/class.c:270 fortran/decl.c:7344
#, gcc-internal-format, gfc-internal-format
msgid "Maximum extension level reached with type '%s' at %L"
-msgstr ""
+msgstr "Höchste Erweiterungsstufe mit Typ »%s« bei %L erreicht"
#: fortran/class.c:650 fortran/class.c:724
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' of '%s' is PRIVATE at %L"
-msgstr "Ergebnis von %s ist NaN bei %L"
+msgstr "»%s« von »%s« ist bei %L PRIVATE"
#: fortran/cpp.c:443
#, gcc-internal-format
msgid "To enable preprocessing, use -cpp"
-msgstr ""
+msgstr "Zum Einschalten der Vorverarbeitung -cpp verwenden"
#: fortran/cpp.c:540 fortran/cpp.c:551 fortran/cpp.c:649
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "opening output file %s: %s"
-msgstr "Ausgabedatei »%s« wird geöffnet: %m"
+msgstr "Ausgabedatei »%s« wird geöffnet: %s"
#: fortran/data.c:65
#, gcc-internal-format, gfc-internal-format
@@ -33453,9 +33441,9 @@ msgid "failure to simplify substring reference in DATA statement at %L"
msgstr "Fehlschlag bei Vereinfachung der Teil-Zeichenketten-Referenz in DATA-Anweisung bei %L"
#: fortran/data.c:158
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Initialization string starting at %L was truncated to fit the variable (%d/%d)"
-msgstr "Initialisierungszeichenkette abgeschnitten um an Variable bei %L anzupassen"
+msgstr "Initialisierungszeichenkette abgeschnitten, um an Variable bei %L anzupassen (%d/%d)"
#: fortran/data.c:244
#, gcc-internal-format, gfc-internal-format
@@ -33513,9 +33501,9 @@ msgid "Bad INTENT specification at %C"
msgstr "Falsche INTENT-Spezifikation bei %C"
#: fortran/decl.c:671
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: deferred type parameter at %C"
-msgstr "Fortran 2003: VALUE-Anweisung bei %C"
+msgstr "Fortran 2003: Parameter mit zurückgestelltem Typ bei %C"
#: fortran/decl.c:708
#, gcc-internal-format, gfc-internal-format
@@ -33523,9 +33511,9 @@ msgid "Conflict in attributes of function argument at %C"
msgstr "Konflikt in Attributen des Funktionsarguments bei %C"
#: fortran/decl.c:733
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Obsolescent feature: Old-style character length at %C"
-msgstr "Veraltet: Arithmetische IF-Anweisung bei %C"
+msgstr "Veraltete Funktion: Zeichenlänge alten Stils bei %C"
#: fortran/decl.c:765
#, gcc-internal-format, gfc-internal-format
@@ -33553,7 +33541,7 @@ msgid "Procedure '%s' at %L must have the BIND(C) attribute to be C interoperabl
msgstr "Prozedur »%s« bei %L muss das BIND(C)-Attribut haben, um mit C interoperabel zu sein"
#: fortran/decl.c:1011
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' at %L is a parameter to the BIND(C) procedure '%s' but is not C interoperable because derived type '%s' is not C interoperable"
msgstr "Typ »%s« bei %L ist ein Parameter für die BIND(C)-Prozedur »%s«, jedoch nicht interoperabel mit C, da der abgeleitete Typ »%s« nicht mit C interoperabel ist"
@@ -33623,14 +33611,14 @@ msgid "Variable '%s' at %C with an initializer already appears in a DATA stateme
msgstr "Variable »%s« bei %C mit Initialisierung tritt bereits in einer DATA-Anweisung auf"
#: fortran/decl.c:1409
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Can't initialize implied-shape array at %L with scalar"
-msgstr "mehrdimensionales Feld kann nicht initialisiert werden"
+msgstr "Feld mit implizierter Form bei %L kann nicht mit Skalar initialisiert werden"
#: fortran/decl.c:1427
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Non-constant lower bound in implied-shape declaration at %L"
-msgstr "Syntaxfehler in Daten-Deklaration bei %C"
+msgstr "Nicht-konstante untere Grenze in Deklaration mit impliziter Form bei %L"
#: fortran/decl.c:1522
#, gcc-internal-format, gfc-internal-format
@@ -33668,24 +33656,24 @@ msgid "Initialization of pointer at %C is not allowed in a PURE procedure"
msgstr "Initialisierung des Zeigers bei %C ist nicht in einer PURE-Prozedur erlaubt"
#: fortran/decl.c:1709
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Error in pointer initialization at %C"
-msgstr "Erweiterung: Initialisierung im alten Stil bei %C"
+msgstr "Fehler in Zeigerinitialisierung bei %C"
#: fortran/decl.c:1716
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: non-NULL pointer initialization at %C"
-msgstr "Fortran 2003: Nichtganzzahliger Exponent in einem Initialisierungsausdruck bei %L"
+msgstr "Fortran 2008: Nicht-NULL-Zeigerinitialisierung bei %C"
#: fortran/decl.c:1777
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Non-PARAMETER symbol '%s' at %L can't be implied-shape"
-msgstr "CHARACTER(*)-Funktion »%s« bei %L kann nicht Zeiger-wertig sein"
+msgstr "Nicht-PARAMETER-Symbol »%s« bei %L kann nicht implizite Form haben"
#: fortran/decl.c:1788
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: Implied-shape array at %L"
-msgstr "Fortran 2003: IOMSG-Markierung bei %L"
+msgstr "Fortran 2008: Feld mit impliziter Form bei %L"
#: fortran/decl.c:1852 fortran/decl.c:6247
#, gcc-internal-format, gfc-internal-format
@@ -33763,9 +33751,9 @@ msgid "Kind %d not supported for type %s at %C"
msgstr "Die Art %d wird für Typ %s bei %C nicht unterstützt"
#: fortran/decl.c:2196
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "C kind type parameter is for type %s but type at %L is %s"
-msgstr "Parameter nach C-Art ist für Typ %s, aber Symbol »%s« bei %L ist vom Typ %s"
+msgstr "Typ-Parameter nach C-Art ist für Typ %s, aber Typ bei %L ist %s"
#: fortran/decl.c:2205
#, gcc-internal-format, gfc-internal-format
@@ -33794,24 +33782,24 @@ msgstr "Bei %C verwendeter BYTE-Typ ist auf der Zielmaschine nicht verfügbar"
#: fortran/decl.c:2526 fortran/decl.c:2557 fortran/decl.c:2587
#: fortran/decl.c:2681
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: TYPE with intrinsic-type-spec at %C"
-msgstr "Fortran 2003: VOLATILE-Attribut bei %C"
+msgstr "Fortran 2008: TYPE mit intrinsischer Typspezifikation bei %C"
#: fortran/decl.c:2582
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Extension: DOUBLE COMPLEX at %C"
-msgstr "Erweiterung: BYTE-Typ bei %C"
+msgstr "Erweiterung: DOUBLE COMPLEX bei %C"
#: fortran/decl.c:2620
#, gcc-internal-format, gfc-internal-format
msgid "Unlimited polymorphism at %C not yet supported"
-msgstr ""
+msgstr "Unbegrenzter Polymorphismus bei %C wird noch nicht unterstützt"
#: fortran/decl.c:2629
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: CLASS statement at %C"
-msgstr "Fortran 2003: FLUSH-Anweisung bei %C"
+msgstr "Fortran 2003: CLASS-Anweisung bei %C"
#: fortran/decl.c:2652 fortran/decl.c:2661 fortran/decl.c:2995
#: fortran/decl.c:3003
@@ -33865,9 +33853,9 @@ msgid "Syntax error in IMPORT statement at %C"
msgstr "Syntaxfehler in IMPORT-Anweisung bei %C"
#: fortran/decl.c:3344
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Missing codimension specification at %C"
-msgstr "Fehlende Dimensionsangabe bei %C"
+msgstr "Fehlende Kodimensionsangabe bei %C"
#: fortran/decl.c:3346
#, gcc-internal-format, gfc-internal-format
@@ -33900,14 +33888,14 @@ msgid "%s attribute at %L is not allowed outside of the specification part of a
msgstr "Attribut %s bei %L ist außerhalb des Spezifikationsabschnitts eines Moduls nicht erlaubt"
#: fortran/decl.c:3502
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ASYNCHRONOUS attribute at %C"
-msgstr "Fortran 2003: VALUE-Attribut bei %C"
+msgstr "Fortran 2003: ASYNCHRONOUS-Attribut bei %C"
#: fortran/decl.c:3515
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: CONTIGUOUS attribute at %C"
-msgstr "Fortran 2003: VOLATILE-Attribut bei %C"
+msgstr "Fortran 2008: CONTIGUOUS-Attribut bei %C"
#: fortran/decl.c:3561 fortran/decl.c:6535
#, gcc-internal-format, gfc-internal-format
@@ -34009,14 +33997,14 @@ msgid "Syntax error in data declaration at %C"
msgstr "Syntaxfehler in Daten-Deklaration bei %C"
#: fortran/decl.c:4185
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: IMPURE procedure at %C"
-msgstr "Fortran 2003: \"USE :: module\" bei %C"
+msgstr "Fortran 2008: IMPURE-Prozedur bei %C"
#: fortran/decl.c:4198
#, gcc-internal-format, gfc-internal-format
msgid "PURE and IMPURE must not appear both at %C"
-msgstr ""
+msgstr "PURE und IMPURE dürfen bei %C nicht gleichzeitig stehen"
#: fortran/decl.c:4304
#, gcc-internal-format, gfc-internal-format
@@ -34044,9 +34032,9 @@ msgid "Unexpected junk after function declaration at %C"
msgstr "Unerwartete Angaben hinter Funktionsdeklaration bei %C"
#: fortran/decl.c:4471 fortran/decl.c:5500
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: BIND(C) attribute at %L may not be specified for an internal procedure"
-msgstr "Erweiterung: BIND(C)-Attribut bei %L kann nicht für eine interne Prozedur angegeben werden"
+msgstr "Fortran 2008: BIND(C)-Attribut bei %L kann nicht für eine interne Prozedur angegeben werden"
#: fortran/decl.c:4615
#, gcc-internal-format, gfc-internal-format
@@ -34079,9 +34067,9 @@ msgid "Dummy procedure at %C may not have BIND(C) attribute with NAME"
msgstr "Scheinprozedur bei %C kann kein BIND(C)-Attribut mit NAME haben"
#: fortran/decl.c:4725
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L already has basic type of %s"
-msgstr "Symbol »%s« bei %L hat bereits grundlegenden Typen %s"
+msgstr "Prozedur »%s« bei %L hat bereits grundlegenden Typen %s"
#: fortran/decl.c:4773 fortran/decl.c:4940 fortran/decl.c:7978
#, gcc-internal-format, gfc-internal-format
@@ -34089,24 +34077,24 @@ msgid "Syntax error in PROCEDURE statement at %C"
msgstr "Syntaxfehler in PROCEDURE-Anweisung bei %C"
#: fortran/decl.c:4822 fortran/decl.c:7879
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Expected '::' after binding-attributes at %C"
-msgstr "Beendenden Namen bei %C erwartet"
+msgstr "»::« nach Bindeattributen bei %C erwartet"
#: fortran/decl.c:4829
#, gcc-internal-format, gfc-internal-format
msgid "NOPASS or explicit interface required at %C"
-msgstr ""
+msgstr "NOPASS oder explizite Schnittstelle bei %C erforderlich"
#: fortran/decl.c:4833
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure pointer component at %C"
-msgstr "Fortran 2003: Modul-Eigenschaft in USE-Anweisung bei %C"
+msgstr "Fortran 2003: Prozedurzeiger-Komponente bei %C"
#: fortran/decl.c:4897
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in procedure pointer component at %C"
-msgstr "Syntaxfehler in Strukturkonstruktor bei %C"
+msgstr "Syntaxfehler in Prozedurzeiger-Komponente bei %C"
#: fortran/decl.c:4914
#, gcc-internal-format, gfc-internal-format
@@ -34131,9 +34119,9 @@ msgid "BIND(C) attribute at %L can only be used for variables or common blocks"
msgstr "BIND(C)-Attribut bei %L kann nur für Variablen oder gemeinsame Blöcke verwendet werden"
#: fortran/decl.c:5190
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008 obsolescent feature: ENTRY statement at %C"
-msgstr "Fortran 2003: Modul-Eigenschaft in USE-Anweisung bei %C"
+msgstr "Fortran 2008: Veraltete Funktion: ENTRY-Anweisung bei %C"
#: fortran/decl.c:5200
#, gcc-internal-format, gfc-internal-format
@@ -34241,9 +34229,9 @@ msgid "Unexpected END statement at %C"
msgstr "Unerwartete END-Anweisung bei %C"
#: fortran/decl.c:5875
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: END statement instead of %s statement at %L"
-msgstr "Fortran 2003: Modul-Eigenschaft in USE-Anweisung bei %C"
+msgstr "Fortran 2008: END-Anweisung statt %s-Anweisung bei %L"
#. We would have required END [something].
#: fortran/decl.c:5883
@@ -34282,9 +34270,9 @@ msgid "Dimensions specified for %s at %L after its initialisation"
msgstr "Für %s bei %L wurden Dimensionen nach dessen Initialisierung angegeben"
#: fortran/decl.c:6019
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Missing array specification at %L in CODIMENSION statement"
-msgstr "Fehlende Feldspezifikation bei %L in DIMENSION-Anweisung"
+msgstr "Feldspezifikation bei %L in CODIMENSION-Anweisung fehlt"
#: fortran/decl.c:6028
#, gcc-internal-format, gfc-internal-format
@@ -34334,12 +34322,12 @@ msgstr "»,« oder Ende der Anweisung bei %C erwartet"
#: fortran/decl.c:6305
#, gcc-internal-format, gfc-internal-format
msgid "INTENT is not allowed inside of BLOCK at %C"
-msgstr ""
+msgstr "INTENT ist in BLOCK bei %C nicht erlaubt"
#: fortran/decl.c:6337
#, gcc-internal-format, gfc-internal-format
msgid "OPTIONAL is not allowed inside of BLOCK at %C"
-msgstr ""
+msgstr "OPTIONAL ist in BLOCK bei %C nicht erlaubt"
#: fortran/decl.c:6356
#, gcc-internal-format, gfc-internal-format
@@ -34347,9 +34335,9 @@ msgid "Cray pointer declaration at %C requires -fcray-pointer flag"
msgstr "Cray-Zeiger-Deklaration bei %C benötigt den Schalter -fcray-pointer"
#: fortran/decl.c:6395
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: CONTIGUOUS statement at %C"
-msgstr "Fortran 2003: FLUSH-Anweisung bei %C"
+msgstr "Fortran 2008: CONTIGUOUS-Anweisung bei %C"
#: fortran/decl.c:6486
#, gcc-internal-format, gfc-internal-format
@@ -34424,7 +34412,7 @@ msgstr "Syntaxfehler in SAVE-Anweisung bei %C"
#: fortran/decl.c:6835
#, gcc-internal-format, gfc-internal-format
msgid "VALUE is not allowed inside of BLOCK at %C"
-msgstr ""
+msgstr "VALUE ist in BLOCK bei %C nicht erlaubt"
#: fortran/decl.c:6839
#, gcc-internal-format, gfc-internal-format
@@ -34444,7 +34432,7 @@ msgstr "Fortran 2003: VOLATILE-Anweisung bei %C"
#: fortran/decl.c:6914
#, gcc-internal-format, gfc-internal-format
msgid "Specifying VOLATILE for coarray variable '%s' at %C, which is use-/host-associated"
-msgstr ""
+msgstr "VOLATILE für Coarray-Variable »%s« bei »%C« angegeben, die use-/host-assoziiert ist"
#: fortran/decl.c:6940
#, gcc-internal-format, gfc-internal-format
@@ -34452,14 +34440,14 @@ msgid "Syntax error in VOLATILE statement at %C"
msgstr "Syntaxfehler in VOLATILE-Anweisung bei %C"
#: fortran/decl.c:6951
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ASYNCHRONOUS statement at %C"
-msgstr "Fortran 2003: VALUE-Anweisung bei %C"
+msgstr "Fortran 2003: ASYNCHRONOUS-Anweisung bei %C"
#: fortran/decl.c:6993
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Syntax error in ASYNCHRONOUS statement at %C"
-msgstr "Syntaxfehler in VALUE-Anweisung bei %C"
+msgstr "Syntaxfehler in ASYNCHRONOUS-Anweisung bei %C"
#: fortran/decl.c:7017
#, gcc-internal-format, gfc-internal-format
@@ -34467,40 +34455,39 @@ msgid "MODULE PROCEDURE at %C must be in a generic module interface"
msgstr "MODULE PROCEDURE bei %C muss in einer generischen Modulschnittstelle sein"
#: fortran/decl.c:7042
-#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: PROCEDURE statement at %C"
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: double colon in MODULE PROCEDURE statement at %L"
-msgstr "Fortran 2003: PROCEDURE-Anweisung bei %C"
+msgstr "Fortran 2008: »::« in MODULE PROCEDURE-Anweisung bei %L"
#: fortran/decl.c:7076
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Intrinsic procedure at %L cannot be a MODULE PROCEDURE"
-msgstr "Intrinsische Prozedur »%s« ist in PROCEDURE-Anweisung bei %C nicht erlaubt"
+msgstr "Intrinsische Prozedur bei %L kann keine MODULE PROCEDURE sein"
#: fortran/decl.c:7125
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Ambiguous symbol in TYPE definition at %C"
-msgstr "»::« in TYPE-Definition bei %C erwartet"
+msgstr "Mehrdeutiges Symbol in TYPE-Definition bei %C"
#: fortran/decl.c:7131
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "No such symbol in TYPE definition at %C"
-msgstr "»::« in TYPE-Definition bei %C erwartet"
+msgstr "Kein solches Symbol in TYPE-Definition bei %C"
#: fortran/decl.c:7137
#, gcc-internal-format, gfc-internal-format
msgid "'%s' in EXTENDS expression at %C is not a derived type"
-msgstr ""
+msgstr "»%s« in EXTENDS-Ausdruck bei %C ist kein abgeleiteter Typ"
#: fortran/decl.c:7144
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' cannot be extended at %C because it is BIND(C)"
-msgstr "Abgeleiteter Typ »%s« bei %L kann nicht das SEQUENCE-Attribut haben, da es BIND(C) ist"
+msgstr "»%s« kann bei %C nicht erweitert werden, da es BIND(C) ist"
#: fortran/decl.c:7151
#, gcc-internal-format, gfc-internal-format
msgid "'%s' cannot be extended at %C because it is a SEQUENCE type"
-msgstr ""
+msgstr "»%s« kann bei %C nicht erweitert werden, da es ein SEQUENCE-Typ ist"
#: fortran/decl.c:7174
#, gcc-internal-format, gfc-internal-format
@@ -34513,9 +34500,9 @@ msgid "Derived type at %C can only be PUBLIC in the specification part of a modu
msgstr "Abgeleiteter Typ bei %C kann nur PUBLIC im Spezifikationsteil eines Moduls sein"
#: fortran/decl.c:7207
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: ABSTRACT type at %C"
-msgstr "Fortran 2003: ABSTRACT INTERFACE bei %C"
+msgstr "Fortran 2003: ABSTRACT-Typ bei %C"
#: fortran/decl.c:7271
#, gcc-internal-format, gfc-internal-format
@@ -34568,159 +34555,159 @@ msgid "Syntax error in ENUMERATOR definition at %C"
msgstr "Syntaxfehler in ENUMERATOR-Definition bei %C"
#: fortran/decl.c:7644 fortran/decl.c:7659
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Duplicate access-specifier at %C"
-msgstr "Doppelte Spezifikation %s bei %C"
+msgstr "Doppelte Zugriffsspezifikation bei %C"
#: fortran/decl.c:7679
#, gcc-internal-format, gfc-internal-format
msgid "Binding attributes already specify passing, illegal NOPASS at %C"
-msgstr ""
+msgstr "Bindeattribute legen bereits Durchleitung fest, unzulässiges NOPASS bei %C"
#: fortran/decl.c:7699
#, gcc-internal-format, gfc-internal-format
msgid "Binding attributes already specify passing, illegal PASS at %C"
-msgstr ""
+msgstr "Bindeattribute legen bereits Durchleitung fest, unzulässiges PASS bei %C"
#: fortran/decl.c:7726
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Duplicate POINTER attribute at %C"
-msgstr "Doppeltes Attribut %s bei %L"
+msgstr "Doppeltes POINTER-Attribut bei %C"
#: fortran/decl.c:7744
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Duplicate NON_OVERRIDABLE at %C"
-msgstr "VARIABLE bei %C erwartet"
+msgstr "Doppeltes NON_OVERRIDABLE bei %C"
#: fortran/decl.c:7760
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Duplicate DEFERRED at %C"
-msgstr "Doppelte SEQUENCE-Anweisung bei %C"
+msgstr "Doppeltes DEFERRED bei %C"
#: fortran/decl.c:7773
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Expected access-specifier at %C"
-msgstr "Namenlose Schnittstelle bei %C erwartet"
+msgstr "Zugriffsspezifikation bei %C erwartet"
#: fortran/decl.c:7775
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Expected binding attribute at %C"
-msgstr "Beendenden Namen bei %C erwartet"
+msgstr "Bindeattribut bei %C erwartet"
#: fortran/decl.c:7783
#, gcc-internal-format, gfc-internal-format
msgid "NON_OVERRIDABLE and DEFERRED can't both appear at %C"
-msgstr ""
+msgstr "NON_OVERRIDABLE und DEFERRED können nicht gleichzeitig bei %C auftreten"
#: fortran/decl.c:7795
#, gcc-internal-format, gfc-internal-format
msgid "POINTER attribute is required for procedure pointer component at %C"
-msgstr ""
+msgstr "POINTER-Attribut ist für Prozedurzeiger-Komponente bei %C erforderlich"
#: fortran/decl.c:7837
#, gcc-internal-format, gfc-internal-format
msgid "Interface-name expected after '(' at %C"
-msgstr ""
+msgstr "Schnittstellenname nach »(« bei %C erforderlich"
#: fortran/decl.c:7843
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "')' expected at %C"
-msgstr "»)« erwartet"
+msgstr "»)« bei %C erwartet"
#: fortran/decl.c:7863
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Interface must be specified for DEFERRED binding at %C"
-msgstr "Syntaxfehler in NAME=-Spezifikation für Bindungsmarke bei %C"
+msgstr "Schnittstelle muss für DEFERRED-Bindung bei %C angegeben werden"
#: fortran/decl.c:7868
#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE(interface) at %C should be declared DEFERRED"
-msgstr ""
+msgstr "PROCEDURE(Schnittstelle) bei %C sollte als DEFERRED deklariert sein"
#: fortran/decl.c:7891
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Expected binding name at %C"
-msgstr "Beendenden Namen bei %C erwartet"
+msgstr "Bindungsname bei %C erwartet"
#: fortran/decl.c:7895
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: PROCEDURE list at %C"
-msgstr "Fortran 2003: PROCEDURE-Anweisung bei %C"
+msgstr "Fortran 2008: PROCEDURE-Liste bei %C"
#: fortran/decl.c:7908
#, gcc-internal-format, gfc-internal-format
msgid "'=> target' is invalid for DEFERRED binding at %C"
-msgstr ""
+msgstr "»=> target« ist ungültig für DEFERRED-Bindung bei %C"
#: fortran/decl.c:7914
#, gcc-internal-format, gfc-internal-format
msgid "'::' needed in PROCEDURE binding with explicit target at %C"
-msgstr ""
+msgstr "»::« in PROCEDURE-Bindung mit explizitem Ziel bei %C erforderlich"
#: fortran/decl.c:7924
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Expected binding target after '=>' at %C"
-msgstr "Beendenden Namen bei %C erwartet"
+msgstr "Bindungsziel hinter »=>« bei %C erforderlich"
#: fortran/decl.c:7941
#, gcc-internal-format, gfc-internal-format
msgid "Type '%s' containing DEFERRED binding at %C is not ABSTRACT"
-msgstr ""
+msgstr "Typ »%s« mit DEFERRED-Bindung bei %C ist nicht ABSTRACT"
#: fortran/decl.c:7952
#, gcc-internal-format, gfc-internal-format
msgid "There is already a procedure with binding name '%s' for the derived type '%s' at %C"
-msgstr ""
+msgstr "Es gibt bereits eine Prozedur mit Bindungsname »%s« für den abgeleiteten Typ »%s« bei %C"
#: fortran/decl.c:8001
#, gcc-internal-format, gfc-internal-format
msgid "GENERIC at %C must be inside a derived-type CONTAINS"
-msgstr ""
+msgstr "GENERIC bei %C muss innerhalb eines CONTAINS eines abgeleiteten Typs sein"
#: fortran/decl.c:8021
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Expected '::' at %C"
-msgstr "»(« bei %C erwartet"
+msgstr "»::« bei %C erwartet"
#: fortran/decl.c:8033
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Expected generic name or operator descriptor at %C"
-msgstr "Feldindex erwartet bei %C"
+msgstr "Generischer Name oder Operatordeskriptor bei %C erwartet"
#: fortran/decl.c:8059
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Expected '=>' at %C"
-msgstr "»(« bei %C erwartet"
+msgstr "»=>« bei %C erwartet"
#: fortran/decl.c:8101
#, gcc-internal-format, gfc-internal-format
msgid "There's already a non-generic procedure with binding name '%s' for the derived type '%s' at %C"
-msgstr ""
+msgstr "Es gibt bereits eine nicht-generische Prozedur mit Bindungsname »%s« für den abgeleiteten Typ »%s« bei %C"
#: fortran/decl.c:8109
#, gcc-internal-format, gfc-internal-format
msgid "Binding at %C must have the same access as already defined binding '%s'"
-msgstr ""
+msgstr "Bindung bei %C muss den selben Zugriff wie bereits definierte Bindung »%s« haben"
#: fortran/decl.c:8158
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Expected specific binding name at %C"
-msgstr "Beendenden Namen bei %C erwartet"
+msgstr "Spezifischer Bindungsname bei %C erwartet"
#: fortran/decl.c:8168
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "'%s' already defined as specific binding for the generic '%s' at %C"
-msgstr "Es gibt keine spezifische Funktion für das allgemeine »%s« bei %L"
+msgstr "»%s« bereits als spezifische Bindung für das allgemeine »%s« bei %C definiert"
#: fortran/decl.c:8184
#, gcc-internal-format, gfc-internal-format
msgid "Junk after GENERIC binding at %C"
-msgstr ""
+msgstr "Ausschuss hinter GENERIC-Bindung bei %C"
#: fortran/decl.c:8219
#, gcc-internal-format, gfc-internal-format
msgid "FINAL declaration at %C must be inside a derived type CONTAINS section"
-msgstr ""
+msgstr "FINAL-Deklaration bei %C muss innerhalb eines CONTAINS-Abschnitts eines abgeleiteten Typs stehen"
#: fortran/decl.c:8230
#, fuzzy, gcc-internal-format, gfc-internal-format
@@ -35389,7 +35376,6 @@ msgstr ""
#: fortran/interface.c:1133
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: Conversion from %s to %s at %L"
msgid "Extension: Internal procedure '%s' in %s at %L"
msgstr "Erweiterung: Umwandlung von %s in %s bei %L"
@@ -37894,7 +37880,6 @@ msgstr "Fortran 2003: BOZ außerhalb einer DATA-Anweisung bei %C verwendet"
#: fortran/primary.c:547 fortran/primary.c:551
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: Hollerith constant at %C"
msgid "Extension: exponent-letter 'q' in real-literal-constant at %C"
msgstr "Erweiterung: Hollerithkonstante bei %C"
@@ -37915,7 +37900,6 @@ msgstr "Realzahl bei %C hat einen »q«-Exponenten und eine explizite Art"
#: fortran/primary.c:647
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Invalid initializer %s in Data statement at %C"
msgid "Invalid exponent-letter 'q' in real-literal-constant at %C"
msgstr "Ungültige Initialisierung %s in Data-Anweisung bei %C"
@@ -39947,46 +39931,46 @@ msgid "The pointer component '%s' of '%s' at %L is a type that has not been decl
msgstr "Die Zeigerkomponente »%s« bei »%s« bei %L hat nicht deklarierten Typ"
#: fortran/resolve.c:11724
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
-msgstr "Komponente »%s« von »%s« bei %L muss konstante Feldgrenzen haben"
+msgstr "Komponente »%s« mit CLASS bei %L muss allozierbar oder Zeiger sein"
#: fortran/resolve.c:11779
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Assumed size array '%s' in namelist '%s' at %L is not allowed"
-msgstr "Feld »%s« mit vermuteter Größe in Namensliste »%s« bei %C ist nicht erlaubt"
+msgstr "Feld »%s« mit vermuteter Größe in Namensliste »%s« bei %L ist nicht erlaubt"
#: fortran/resolve.c:11785
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with assumed shape in namelist '%s' at %L"
-msgstr "NAMELIST-Feldobjekt »%s« darf in Namensliste »%s« bei %L keine vermutete Form haben"
+msgstr "Fortran 2003: NAMELIST-Feldobjekt »%s« mit vermuteter Form in Namensliste »%s« bei %L"
#: fortran/resolve.c:11792
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST array object '%s' with nonconstant shape in namelist '%s' at %L"
-msgstr "NAMELIST-Feldobjekt »%s« muss konstante Form in Namensliste »%s« bei %L haben"
+msgstr "Fortran 2003: NAMELIST-Feldobjekt »%s« ohne konstante Form in Namensliste »%s« bei %L"
#: fortran/resolve.c:11801
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' with nonconstant character length in namelist '%s' at %L"
-msgstr "NAMELIST-Feldobjekt »%s« muss konstante Form in Namensliste »%s« bei %L haben"
+msgstr "Fortran 2003: NAMELIST-Objekt »%s« ohne konstante Zeichenlänge in Namensliste »%s« bei %L"
#: fortran/resolve.c:11811
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L is polymorphic and requires a defined input/output procedure"
-msgstr "Namenslistenobjekt »%s« in Namensliste »%s« bei %L kann keine POINTER-Komponenten haben"
+msgstr "NAMELIST-Objekt »%s« in Namensliste »%s« bei %L ist polymorph und erfordert eine definierte Ein-/Ausgabeprozedur"
#: fortran/resolve.c:11821
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: NAMELIST object '%s' in namelist '%s' at %L with ALLOCATABLE or POINTER components"
-msgstr "NAMELIST-Objekt »%s« in Namensliste »%s« bei %L kann nicht ALLOCATABLE-Komponenten haben"
+msgstr "Fortran 2003: NAMELIST-Objekt »%s« in Namensliste »%s« bei %L mit ALLOCATABLE- oder POINTER-Komponenten"
#. FIXME: Once UDDTIO is implemented, the following can be
#. removed.
#: fortran/resolve.c:11829
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "NAMELIST object '%s' in namelist '%s' at %L has ALLOCATABLE or POINTER components and thus requires a defined input/output procedure"
-msgstr "NAMELIST-Objekt »%s« in Namensliste »%s« bei %L kann nicht ALLOCATABLE-Komponenten haben"
+msgstr "NAMELIST-Objekt »%s« in Namensliste »%s« bei %L hat ALLOCATABLE- oder POINTER-Komponenten und erfordert daher eine definierte Ein-/Ausgabeprozedur"
#: fortran/resolve.c:11846
#, gcc-internal-format, gfc-internal-format
@@ -40024,19 +40008,19 @@ msgid "Incompatible derived type in PARAMETER at %L"
msgstr "Unverträglicher abgeleiteter Typ in PARAMETER bei %L"
#: fortran/resolve.c:12003
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L"
-msgstr "Attribut PROCEDURE steht mit Attribut NAMELIST in »%s« bei %L in Konflikt"
+msgstr "Attribut PROTECTED steht mit Attribut EXTERNAL bei %L in Konflikt"
#: fortran/resolve.c:12006
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L"
-msgstr "Attribut PROCEDURE steht mit Attribut NAMELIST in »%s« bei %L in Konflikt"
+msgstr "Attribut PROCEDURE steht mit Attribut PROTECTED bei %L in Konflikt"
#: fortran/resolve.c:12018
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has the CONTIGUOUS attribute but is not an array pointer or an assumed-shape array"
-msgstr ""
+msgstr "»%s« bei %L hat Attribut CONTIGUOUS, aber ist kein Feldzeiger oder Feld vermuteter Größe"
#: fortran/resolve.c:12092
#, gcc-internal-format, gfc-internal-format
@@ -40089,44 +40073,44 @@ msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot h
msgstr "Das INTENT(OUT)-Scheinargument »%s« bei %L hat vermutete Größe und kann damit keine Standardinitialisierung haben"
#: fortran/resolve.c:12282
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Function result '%s' at %L shall not be a coarray or have a coarray component"
-msgstr "Funktionsergebnis »%s« bei %L kann keine Initialisierung haben"
+msgstr "Funktionsergebnis »%s« bei %L sollte kein Koarray sein oder Koarray-Komponente haben"
#: fortran/resolve.c:12288
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray"
-msgstr ""
+msgstr "Variable »%s« bei %L mit TYPE(C_PTR) oder TYPE(C_FUNPTR) sollte kein Koarray sein"
#: fortran/resolve.c:12295
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L with coarray component shall be a nonpointer, nonallocatable scalar"
-msgstr ""
+msgstr "Variable »%s« bei %L mit Koarraykomponente sollte ein Nichtzeiger, nichtallozierbares Skalar sein"
#: fortran/resolve.c:12306
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is a coarray or has a coarray component and is not ALLOCATABLE, SAVE nor a dummy argument"
-msgstr ""
+msgstr "Variable »%s« bei %L ist ein Koarray oder hat eine Koarraykomponente und ist weder ALLOCATABLE, SAVE, noch ein Scheinargument"
#: fortran/resolve.c:12312
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Coarray variable '%s' at %L shall not have codimensions with deferred shape"
-msgstr "Feld »%s« bei %L kann keine aufgeschobene Form haben"
+msgstr "Koarray-Variable »%s« bei %L sollte keine Kodimensionen mit aufgeschobener Form haben"
#: fortran/resolve.c:12316
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Allocatable coarray variable '%s' at %L must have deferred shape"
-msgstr "Zuordnungsfähiges Feld »%s« bei %L muss aufgeschobene Form haben"
+msgstr "Zuordnungsfähige Koarray-Variable »%s« bei %L muss aufgeschobene Form haben"
#: fortran/resolve.c:12324
#, gcc-internal-format, gfc-internal-format
msgid "Variable '%s' at %L is INTENT(OUT) and can thus not be an allocatable coarray or have coarray components"
-msgstr ""
+msgstr "Variable '%s' bei %L ist INTENT(OUT) und kann daher kein reservierbares Coarray sein oder Coarray-Komponenten haben"
#: fortran/resolve.c:12330
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Coarray dummy variable '%s' at %L not allowed in BIND(C) procedure '%s'"
-msgstr "Scheinprozedur bei %L nicht in ELEMENTAL-Prozedur erlaubt"
+msgstr "Coarray-Hilfsvariable '%s' bei %L in BIND(C)-Prozedur '%s' nicht erlaubt"
#: fortran/resolve.c:12400
#, gcc-internal-format, gfc-internal-format
@@ -40144,14 +40128,14 @@ msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr "DATA-Feld »%s« bei %L muss in vorheriger Deklaration angegeben werden"
#: fortran/resolve.c:12514
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L cannot have a coindex"
-msgstr "Schein-»%s« bei %L kann keine Initialisierung haben"
+msgstr "DATA-Element '%s' bei %L kann keinen Coindex haben"
#: fortran/resolve.c:12523
#, gcc-internal-format, gfc-internal-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
-msgstr ""
+msgstr "DATA-Element '%s' bei %L ist ein Zeiger und muss daher ein vollständiges Feld sein"
#: fortran/resolve.c:12569
#, gcc-internal-format, gfc-internal-format
@@ -40166,17 +40150,17 @@ msgstr "DATA-Anweisung bei %L hat mehr Variablen als Werte"
#: fortran/resolve.c:12680
#, gcc-internal-format, gfc-internal-format
msgid "start of implied-do loop at %L could not be simplified to a constant value"
-msgstr ""
+msgstr "Anfang der Implied-do-Schleife bei %L konnte nicht zu einem konstanten Wert vereinfacht werden"
#: fortran/resolve.c:12688
#, gcc-internal-format, gfc-internal-format
msgid "end of implied-do loop at %L could not be simplified to a constant value"
-msgstr ""
+msgstr "Ende der Implied-do-Schleife bei %L konnte nicht zu einem konstanten Wert vereinfacht werden"
#: fortran/resolve.c:12696
#, gcc-internal-format, gfc-internal-format
msgid "step of implied-do loop at %L could not be simplified to a constant value"
-msgstr ""
+msgstr "Schritt der Implied-do-Schleife bei %L konnte nicht zu einem konstanten Wert vereinfacht werden"
#: fortran/resolve.c:12821
#, gcc-internal-format, gfc-internal-format
@@ -40249,9 +40233,9 @@ msgid "Substring at %L has length zero"
msgstr "Teilzeichenkette bei %L hat Länge Null"
#: fortran/resolve.c:13364
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
-msgstr "Fortran 2003: PUBLIC %s »%s« bei %L mit abgeleitetem PRIVATE-Typen »%s«"
+msgstr "Fortran 2003: PUBLIC-Funktion »%s« bei %L mit PRIVATE-Typen »%s«"
#: fortran/resolve.c:13377
#, gcc-internal-format, gfc-internal-format
@@ -40299,9 +40283,9 @@ msgid "!$OMP at %C starts a commented line as it neither is followed by a space
msgstr "!$OMP bei %C beginnt eine kommentierte Zeile, da es weder von Leerzeichen gefolgt wird noch eine Fortsetzungszeile ist"
#: fortran/scanner.c:1052 fortran/scanner.c:1190
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Line truncated at %L"
-msgstr "Zeile bei %C wird abgeschnitten"
+msgstr "Zeile bei %L wird abgeschnitten"
#: fortran/scanner.c:1102 fortran/scanner.c:1234
#, gcc-internal-format, gfc-internal-format
@@ -40374,19 +40358,19 @@ msgid "Invalid KIND parameter of %s at %L"
msgstr "Ungültiger KIND-Parameter von %s bei %L"
#: fortran/simplify.c:700
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Argument of %s function at %L is negative"
-msgstr "Anweisungsfunktion bei %L ist rekursiv"
+msgstr "Argument der Funktion %s bei %L ist negativ"
#: fortran/simplify.c:707
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Argument of %s function at %L outside of range [0,127]"
-msgstr "Argument der ACHAR-Funktion bei %L außerhalb des Wertebereichs [0,127]"
+msgstr "Argument der Funktion %s bei %L außerhalb des Wertebereichs [0,127]"
#: fortran/simplify.c:725
#, gcc-internal-format, gfc-internal-format
msgid "Argument of %s function at %L is too large for the collating sequence of kind %d"
-msgstr ""
+msgstr "Argument der Funktion %s bei %L ist zu groß für die zusammenfassende Sequenz der Art %d"
#: fortran/simplify.c:762
#, gcc-internal-format, gfc-internal-format
@@ -40414,14 +40398,14 @@ msgid "If first argument of ATAN2 %L is zero, then the second argument must not
msgstr "Wenn das erste Argument von ATAN2 %L Null ist, dann darf das zweite Argument nicht Null sein"
#: fortran/simplify.c:1238
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Result of BESSEL_YN is -INF at %L"
-msgstr "Ergebnis von NEAREST ist NaN bei %L"
+msgstr "Ergebnis von BESSEL_YN ist -INF bei %L"
#: fortran/simplify.c:1903
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Invalid SHIFT argument of DSHIFTL at %L"
-msgstr "Ungültiges zweites Argument von ISHFT bei %L"
+msgstr "Ungültiges SHIFT-Argument von DSHIFTL bei %L"
#: fortran/simplify.c:2429
#, gcc-internal-format, gfc-internal-format
@@ -40474,20 +40458,20 @@ msgid "Argument of ICHAR at %L must be of length one"
msgstr "Argument von ICHAR bei %L muss Länge Eins haben"
#: fortran/simplify.c:3008
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Invalid second argument of %s at %L"
-msgstr "Ungültiges zweites Argument von IBCLR bei %L"
+msgstr "Ungültiges zweites Argument von %s bei %L"
#. Left shift, as in SHIFTL.
#: fortran/simplify.c:3026 fortran/simplify.c:3034
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Second argument of %s is negative at %L"
-msgstr "Zweites Argument von IBCLR überschreitet Bit-Größe bei %L"
+msgstr "Zweites Argument von %s ist bei %L negativ"
#: fortran/simplify.c:3046
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Magnitude of second argument of %s exceeds bit size at %L"
-msgstr "Größe des zweiten Arguments von ISHFT überschreitet Bit-Größe bei %L"
+msgstr "Größe des zweiten Arguments von %s überschreitet Bit-Größe bei %L"
#: fortran/simplify.c:3150
#, gcc-internal-format, gfc-internal-format
@@ -40522,7 +40506,7 @@ msgstr "DIM-Argument bei %L ist außerhalb der Grenzen"
#: fortran/simplify.c:3642
#, gcc-internal-format, gfc-internal-format
msgid "Not yet implemented: LCOBOUND for coarray with non-constant cobounds at %L"
-msgstr ""
+msgstr "Noch nicht implementiert: LCOBOUND für Coarray mit nicht konstanten Co-Grenzen bei %L"
#: fortran/simplify.c:3796
#, gcc-internal-format, gfc-internal-format
@@ -40595,44 +40579,44 @@ msgid "Intrinsic TRANSFER at %L has partly undefined result: source size %ld < r
msgstr "Intrinsisches TRANSFER bei %L hat teilweise undefiniertes Ergebnis: Quellgröße %ld < Ergebnisgröße %ld"
#: fortran/simplify.c:6221
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Too few elements in expression for SUB= argument at %L"
-msgstr "Zu wenige Elemente (%A fehlt) bei %0 für Feldreferenz bei %1"
+msgstr "Zu wenige Elemente in Ausdruck für SUB= Argument bei %L"
#: fortran/simplify.c:6247
#, gcc-internal-format, gfc-internal-format
msgid "Out of bounds in IMAGE_INDEX at %L for dimension %d, SUB has %ld and COARRAY lower bound is %ld)"
-msgstr ""
+msgstr "Außerhalb des Wertebereichs in IMAGE_INDEX bei %L für Dimension %d, SUB hat %ld und untere Grenze für COARRAY ist %ld"
#: fortran/simplify.c:6270
#, gcc-internal-format, gfc-internal-format
msgid "Out of bounds in IMAGE_INDEX at %L for dimension %d, SUB has %ld and COARRAY upper bound is %ld)"
-msgstr ""
+msgstr "Außerhalb des Wertebereichs in IMAGE_INDEX bei %L für Dimension %d, SUB hat %ld und obere Grenze für COARRAY ist %ld"
#: fortran/simplify.c:6288
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Too many elements in expression for SUB= argument at %L"
-msgstr "Zu viele Elemente bei %0 für Feldreferenz bei %1"
+msgstr "Zu viele Elemente in Ausdruck für SUB= Argument bei %L"
#: fortran/simplify.c:6303
#, gcc-internal-format, gfc-internal-format
msgid "Not yet implemented: IMAGE_INDEX for coarray with non-constant cobounds at %L"
-msgstr ""
+msgstr "Noch nicht implementiert: IMAGE_INDEX für Coarray mit nicht konstanten Co-Grenzen bei %L"
#: fortran/simplify.c:6402
#, gcc-internal-format, gfc-internal-format
msgid "Not yet implemented: THIS_IMAGE for coarray with non-constant cobounds at %L"
-msgstr ""
+msgstr "Noch nicht implementiert: THIS_IMAGE für Coarray mit nicht konstanten Co-Grenzen bei %L"
#: fortran/simplify.c:6424
#, gcc-internal-format, gfc-internal-format
msgid "Not yet implemented: UCOBOUND for coarray with non-constant cobounds at %L"
-msgstr ""
+msgstr "Noch nicht implementiert: UCOBOUND für Coarray mit nicht konstanten Co-Grenzen bei %L"
#: fortran/simplify.c:6781
#, gcc-internal-format, gfc-internal-format
msgid "Character '%s' in string at %L cannot be converted into character kind %d"
-msgstr ""
+msgstr "Zeichen »%s« in Zeichenkette bei %L kann nicht in Zeichenart %d umgewandelt werden"
#: fortran/symbol.c:135
#, gcc-internal-format, gfc-internal-format
@@ -40668,9 +40652,9 @@ msgstr "Implizit deklarierte BIND(C)-Variable »%s« bei %L kann nicht C-kompati
#. Dummy args to a BIND(C) routine may not be interoperable if
#. they are implicitly typed.
#: fortran/symbol.c:294
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Implicitly declared variable '%s' at %L may not be C interoperable but it is a dummy argument to the BIND(C) procedure '%s' at %L"
-msgstr "Implizit deklarierte Variable »%s« bei %L kann nicht C-kompatibel sein, ist aber ein Scheinargument für BIND(C)-Prozedur »%s« bei %L"
+msgstr "Implizit deklarierte Variable »%s« bei %L ist nicht C-kompatibel, sondern ein Scheinargument für BIND(C)-Prozedur »%s« bei %L"
#: fortran/symbol.c:335
#, gcc-internal-format, gfc-internal-format
@@ -40683,19 +40667,19 @@ msgid "%s attribute not allowed in BLOCK DATA program unit at %L"
msgstr "Attribut %s ungültig in BLOCK DATA - Programmeinheit bei %L"
#: fortran/symbol.c:479
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: Procedure pointer at %C"
-msgstr "Fortran 2003: Modul-Eigenschaft in USE-Anweisung bei %C"
+msgstr "Fortran 2003: Prozedur-Zeiger bei %C"
#: fortran/symbol.c:641
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "%s attribute applied to %s %s at %L"
-msgstr "Attribut %s steht mit Attribut %s bei %L in Konflikt"
+msgstr "Attribut %s auf %s %s bei %L angewendet"
#: fortran/symbol.c:648
#, gcc-internal-format, gfc-internal-format
msgid "BIND(C) applied to %s %s at %L"
-msgstr ""
+msgstr "BIND(C) auf %s %s bei %L angewendet"
#: fortran/symbol.c:756 fortran/symbol.c:1479
#, gcc-internal-format, gfc-internal-format
@@ -40735,17 +40719,17 @@ msgstr "Attribut %s doppelt angegeben bei %L"
#: fortran/symbol.c:878
#, gcc-internal-format, gfc-internal-format
msgid "ALLOCATABLE specified outside of INTERFACE body at %L"
-msgstr ""
+msgstr "ALLOCATABLE außerhalb des INTERFACE-Körpers bei %L angegeben"
#: fortran/symbol.c:904
#, gcc-internal-format, gfc-internal-format
msgid "CODIMENSION specified for '%s' outside its INTERFACE body at %L"
-msgstr ""
+msgstr "CODIMENSION für »%s« außerhalb seines INTERFACE-Körpers bei %L angegeben"
#: fortran/symbol.c:930
#, gcc-internal-format, gfc-internal-format
msgid "DIMENSION specified for '%s' outside its INTERFACE body at %L"
-msgstr ""
+msgstr "DIMENSION für »%s« außerhalb seines INTERFACE-Körpers bei %L angegeben"
#: fortran/symbol.c:1060
#, gcc-internal-format, gfc-internal-format
@@ -40778,9 +40762,9 @@ msgid "Duplicate VOLATILE attribute specified at %L"
msgstr "Doppeltes VOLATILE-Attribut bei %L angegeben"
#: fortran/symbol.c:1184
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Duplicate ASYNCHRONOUS attribute specified at %L"
-msgstr "Doppeltes VALUE-Attribut bei %L angegeben"
+msgstr "Doppeltes ASYNCHRONOUS-Attribut bei %L angegeben"
#: fortran/symbol.c:1475
#, gcc-internal-format, gfc-internal-format
@@ -40813,14 +40797,14 @@ msgid "Fortran 2003: BIND(C) at %L"
msgstr "Fortran 2003: BIND(C) bei %L"
#: fortran/symbol.c:1609
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Duplicate EXTENDS attribute specified at %L"
-msgstr "Doppeltes BIND-Attribut bei %L angegeben"
+msgstr "Doppeltes EXTENDS-Attribut bei %L angegeben"
#: fortran/symbol.c:1613
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2003: EXTENDS at %L"
-msgstr "Fortran 2003: BIND(C) bei %L"
+msgstr "Fortran 2003: EXTENDS bei %L"
#: fortran/symbol.c:1635
#, gcc-internal-format, gfc-internal-format
@@ -40830,7 +40814,7 @@ msgstr "Symbol »%s« bei %L hat bereits eine explizite Schnittstelle"
#: fortran/symbol.c:1642
#, gcc-internal-format, gfc-internal-format
msgid "'%s' at %L has attributes specified outside its INTERFACE body"
-msgstr ""
+msgstr "»%s« bei %L hat außerhalb seines INTERFACE-Körpers spezifizierte Attribute"
#: fortran/symbol.c:1675
#, gcc-internal-format, gfc-internal-format
@@ -40838,9 +40822,9 @@ msgid "Symbol '%s' at %L already has basic type of %s"
msgstr "Symbol »%s« bei %L hat bereits grundlegenden Typen %s"
#: fortran/symbol.c:1682
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Procedure '%s' at %L may not have basic type of %s"
-msgstr "Symbol »%s« bei %L hat bereits grundlegenden Typen %s"
+msgstr "Prozedur »%s« bei %L kann nicht grundlegenden Typen %s haben"
#: fortran/symbol.c:1694
#, gcc-internal-format, gfc-internal-format
@@ -40853,9 +40837,9 @@ msgid "Component '%s' at %C already declared at %L"
msgstr "Komponente »%s« bei %C bereits bei %L deklariert"
#: fortran/symbol.c:1874
-#, fuzzy, gcc-internal-format, gfc-internal-format
+#, gcc-internal-format, gfc-internal-format
msgid "Component '%s' at %C already in the parent type at %L"
-msgstr "Komponente »%s« bei %C bereits bei %L deklariert"
+msgstr "Komponente »%s« bei %C bereits im Elterntypen bei %L deklariert"
#: fortran/symbol.c:1950
#, gcc-internal-format, gfc-internal-format
@@ -41820,43 +41804,43 @@ msgid "'readonly' attribute of property %qD conflicts with previous declaration"
msgstr "Datenabschnitt von %q+D in Konflikt mit vorheriger Deklaration"
#: objc/objc-act.c:1192
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type of property %qD conflicts with previous declaration"
-msgstr "Datenabschnitt von %q+D in Konflikt mit vorheriger Deklaration"
+msgstr "Typ der Eigenschaft %qD in Konflikt mit vorheriger Deklaration"
#: objc/objc-act.c:1665
#, gcc-internal-format
msgid "the dot syntax is not available in Objective-C 1.0"
-msgstr ""
+msgstr "in Objective-C 1.0 gibt es keine Dot-Syntax"
#. We know that 'class_name' is an Objective-C class name as the
#. parser won't call this function if it is not. This is only a
#. double-check for safety.
#: objc/objc-act.c:1681
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "could not find class %qE"
-msgstr "Klasse »%s« kann nicht gefunden werden"
+msgstr "Klasse %qE kann nicht gefunden werden"
#. Again, this should never happen, but we do check.
#: objc/objc-act.c:1689
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "could not find interface for class %qE"
-msgstr "Datei für Klasse %s kann nicht gefunden werden"
+msgstr "Schnittstelle für Klasse %qE kann nicht gefunden werden"
#: objc/objc-act.c:1695 objc/objc-act.c:6583 objc/objc-act.c:6714
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "class %qE is deprecated"
-msgstr "%qs ist veraltet"
+msgstr "Klasse %qE ist veraltet"
#: objc/objc-act.c:1724
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "could not find setter/getter for %qE in class %qE"
-msgstr "Referenzmarke für Klasse %qs kann nicht gefunden werden"
+msgstr "Setter/Getter für %qE in Klasse %qE kann nicht gefunden werden"
#: objc/objc-act.c:1760
#, gcc-internal-format
msgid "readonly property can not be set"
-msgstr ""
+msgstr "schreibgeschützte Eigenschaft kann nicht gesetzt werden"
#. PS: At the moment, due to how the parser works, it should be
#. impossible to get here. But it's good to have the check in
@@ -41870,7 +41854,7 @@ msgstr "Methodendeklaration nicht im @interface-Kontext"
#: objc/objc-act.c:2034
#, gcc-internal-format
msgid "method attributes are not available in Objective-C 1.0"
-msgstr ""
+msgstr "in Objective-C 1.0 gibt es keine Methodenattribute"
#: objc/objc-act.c:2051
#, gcc-internal-format
@@ -41878,19 +41862,19 @@ msgid "method definition not in @implementation context"
msgstr "Methodendefinition nicht im @implementation-Kontext"
#: objc/objc-act.c:2066
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "method attributes can not be specified in @implementation context"
-msgstr "Methodendefinition nicht im @implementation-Kontext"
+msgstr "Methodenattribute können nicht im @implementation-Kontext angegeben werden"
#: objc/objc-act.c:2295
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "class %qs does not implement the %qE protocol"
-msgstr "Klasse %qs implementiert nicht das Protokoll %qs"
+msgstr "Klasse %qs implementiert nicht das Protokoll %qE"
#: objc/objc-act.c:2298
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type %qs does not conform to the %qE protocol"
-msgstr "Objekt entspricht nicht dem Protokoll %qs"
+msgstr "Typ %qs entspricht nicht dem Protokoll %qE"
#: objc/objc-act.c:2562
#, gcc-internal-format
@@ -41918,14 +41902,14 @@ msgid "passing argument %d of %qE from distinct Objective-C type"
msgstr "Ãœbergabe des Arguments %d von %qE von anderem Objective-C-Typ"
#: objc/objc-act.c:2716
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "statically allocated instance of Objective-C class %qE"
-msgstr "statisch reservierte Instanz der Objective-C-Klasse %qs"
+msgstr "statisch reservierte Instanz der Objective-C-Klasse %qE"
#: objc/objc-act.c:2725
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "redeclaration of Objective-C class %qs"
-msgstr "statisch reservierte Instanz der Objective-C-Klasse %qs"
+msgstr "Redeklaration der Objective-C-Klasse %qs"
#. This case happens when we are given an 'interface' which
#. is not a valid class name. For example if a typedef was
@@ -41937,38 +41921,38 @@ msgstr "statisch reservierte Instanz der Objective-C-Klasse %qs"
#: objc/objc-act.c:2767
#, gcc-internal-format
msgid "only Objective-C object types can be qualified with a protocol"
-msgstr ""
+msgstr "nur Objective-C-Objekttypen können mit Protokoll qualifiziert werden"
#: objc/objc-act.c:2831
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "protocol %qE has circular dependency"
-msgstr "Protokoll %qs hat ringförmige Abhängigkeit"
+msgstr "Protokoll %qE hat ringförmige Abhängigkeit"
#: objc/objc-act.c:2864 objc/objc-act.c:5382
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot find protocol declaration for %qE"
-msgstr "Protokolldeklaration für %qs kann nicht gefunden werden"
+msgstr "Protokolldeklaration für %qE kann nicht gefunden werden"
#: objc/objc-act.c:3167 objc/objc-act.c:3826 objc/objc-act.c:6159
#: objc/objc-act.c:6634 objc/objc-act.c:6707 objc/objc-act.c:6760
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot find interface declaration for %qE"
-msgstr "Schnittstellendeklaration für %qs kann nicht gefunden werden"
+msgstr "Schnittstellendeklaration für %qE kann nicht gefunden werden"
#: objc/objc-act.c:3171
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "interface %qE does not have valid constant string layout"
-msgstr "die Schnittstelle %qs hat keine gültige Form einer konstanten Zeichenkette"
+msgstr "die Schnittstelle %qE hat keine gültige Form einer konstanten Zeichenkette"
#: objc/objc-act.c:3176
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot find reference tag for class %qE"
-msgstr "Referenzmarke für Klasse %qs kann nicht gefunden werden"
+msgstr "Referenzmarke für Klasse %qE kann nicht gefunden werden"
#: objc/objc-act.c:3321
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE is not an Objective-C class name or alias"
-msgstr "%qs ist kein Klassenname oder Alias in Objective-C"
+msgstr "%qE ist kein Klassenname oder Alias in Objective-C"
#: objc/objc-act.c:3336 objc/objc-act.c:3369 objc/objc-act.c:6540
#: objc/objc-act.c:7862 objc/objc-act.c:7917
@@ -41977,19 +41961,19 @@ msgid "Objective-C declarations may only appear in global scope"
msgstr "Objective-C-Deklarationen dürfen nur im globalen Gültigkeitsbereich erscheinen"
#: objc/objc-act.c:3341
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot find class %qE"
-msgstr "Klasse %qs kann nicht gefunden werden"
+msgstr "Klasse %qE kann nicht gefunden werden"
#: objc/objc-act.c:3343
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "class %qE already exists"
-msgstr "Klasse %qs existiert bereits"
+msgstr "Klasse %qE existiert bereits"
#: objc/objc-act.c:3391 objc/objc-act.c:6599
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE redeclared as different kind of symbol"
-msgstr "%qs als andere Symbolart redeklariert"
+msgstr "%qE als andere Symbolart redeklariert"
#: objc/objc-act.c:3680
#, gcc-internal-format
@@ -42017,7 +42001,7 @@ msgid "global/static variable assignment has been intercepted"
msgstr "Globale/statische Variablenzuweisung wurde abgefangen"
#: objc/objc-act.c:3892
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<-fobjc-exceptions%> is required to enable Objective-C exception syntax"
msgstr "%<-fobjc-exceptions%> verwenden, um Syntax für Objective-C-Ausnahmen einzuschalten"
@@ -42027,9 +42011,9 @@ msgid "@catch parameter is not a known Objective-C class type"
msgstr "»@catch«-Parameter ist kein bekannter Objective-C-Klassentyp"
#: objc/objc-act.c:3982
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "@catch parameter can not be protocol-qualified"
-msgstr "Template-Parameter können keine »friends« sein"
+msgstr "@catch-Parameter kann nicht Protokoll-qualifiziert sein"
#: objc/objc-act.c:4027
#, gcc-internal-format
@@ -42037,9 +42021,9 @@ msgid "exception of type %<%T%> will be caught"
msgstr "Ausnahme des Typs %<%T%> wird gefangen werden"
#: objc/objc-act.c:4029
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid " by earlier handler for %<%T%>"
-msgstr "%H von früherem Behandler für %<%T%>"
+msgstr " von früherem Behandler für %<%T%>"
#: objc/objc-act.c:4076
#, gcc-internal-format
@@ -42052,24 +42036,24 @@ msgid "%<@throw%> (rethrow) used outside of a @catch block"
msgstr "%<@throw%> (rethrow) außerhalb von »@catch«-Block verwendet"
#: objc/objc-act.c:4117
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<@throw%> argument is not an object"
-msgstr "Argument %qd ist keine Konstante"
+msgstr "%<@throw%>-Argument ist kein Objekt"
#: objc/objc-act.c:4138
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<@synchronized%> argument is not an object"
-msgstr "Argument %qd ist keine Konstante"
+msgstr "%<@synchronized%>-Argument ist kein Objekt"
#: objc/objc-act.c:4273
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type %qT does not have a known size"
-msgstr "Typ %q+D hat keine bekannte Größe"
+msgstr "Typ %qT hat keine bekannte Größe"
#: objc/objc-act.c:4450
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%s %qs"
-msgstr "%J%s: %qs"
+msgstr "%s %qs"
#: objc/objc-act.c:4473 objc/objc-act.c:4492
#, gcc-internal-format
@@ -42084,42 +42068,42 @@ msgstr "ein Objekt kann nicht als Parameter für eine Methode verwendet werden"
#: objc/objc-act.c:4591
#, gcc-internal-format
msgid "method argument attributes are not available in Objective-C 1.0"
-msgstr ""
+msgstr "in Objective-C 1.0 gibt es keine Attribute für Methodenargumente"
#: objc/objc-act.c:4920
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "multiple methods named %<%c%E%> found"
-msgstr "mehrere %s namens %<%c%s%> gefunden"
+msgstr "mehrere Methoden namens %<%c%E%> gefunden"
#: objc/objc-act.c:4923
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "using %<%c%s%>"
-msgstr "%J%s %<%c%s%>"
+msgstr "%<%c%s%> wird verwendet"
#: objc/objc-act.c:4932
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "multiple selectors named %<%c%E%> found"
-msgstr "mehrere %s namens %<%c%s%> gefunden"
+msgstr "mehrere Selektoren namens %<%c%E%> gefunden"
#: objc/objc-act.c:4935
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "found %<%c%s%>"
-msgstr "%J%s %<%c%s%>"
+msgstr "%<%c%s%> gefunden"
#: objc/objc-act.c:4944
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "also found %<%c%s%>"
-msgstr "%J%s %<%c%s%>"
+msgstr "auch %<%c%s%> gefunden"
#: objc/objc-act.c:5172
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "no super class declared in @interface for %qE"
-msgstr "keine Basisklasse im @interface für %qs deklariert"
+msgstr "keine Basisklasse im @interface für %qE deklariert"
#: objc/objc-act.c:5210
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "found %<-%E%> instead of %<+%E%> in protocol(s)"
-msgstr "%<-%s%> statt %<+%s%> in Protokoll(en) gefunden"
+msgstr "%<-%E%> statt %<+%E%> in Protokoll(en) gefunden"
#: objc/objc-act.c:5274
#, gcc-internal-format
@@ -42127,19 +42111,19 @@ msgid "invalid receiver type %qs"
msgstr "ungültiger Empfängertyp %qs"
#: objc/objc-act.c:5289
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<%c%E%> not found in protocol(s)"
-msgstr "%<%c%s%> nicht in Protokoll(en) gefunden"
+msgstr "%<%c%E%> nicht in Protokoll(en) gefunden"
#: objc/objc-act.c:5303
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE may not respond to %<%c%E%>"
-msgstr "%qs antwortet möglicherweise nicht auf %<%c%s%>"
+msgstr "%qE antwortet möglicherweise nicht auf %<%c%E%>"
#: objc/objc-act.c:5311
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "no %<%c%E%> method found"
-msgstr "keine Methode %<%c%s%> gefunden"
+msgstr "keine Methode %<%c%E%> gefunden"
#: objc/objc-act.c:5318
#, gcc-internal-format
@@ -42157,9 +42141,9 @@ msgid "%<...%> as arguments.)"
msgstr "%<...%> als Argumente.)"
#: objc/objc-act.c:5433
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "undeclared selector %qE"
-msgstr "nicht deklarierter Selektor %qs"
+msgstr "nicht deklarierter Selektor %qE"
#. Historically, a class method that produced objects (factory
#. method) would assign `self' to the instance that it
@@ -42171,39 +42155,39 @@ msgstr "nicht deklarierter Selektor %qs"
#. where this is done unknowingly than to support the above
#. paradigm.
#: objc/objc-act.c:5476
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "instance variable %qE accessed in class method"
-msgstr "in Klassenmethode wird auf Instanzvariable %qs zugegriffen"
+msgstr "in Klassenmethode wird auf Instanzvariable %qE zugegriffen"
#: objc/objc-act.c:5764 objc/objc-act.c:5784
#, gcc-internal-format
msgid "method %<%c%E%> declared %<@optional%> and %<@required%> at the same time"
-msgstr ""
+msgstr "Methode %<%c%E%> gleichzeitig als %<@optional%> und %<@required%> deklariert"
#: objc/objc-act.c:5768
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "previous declaration of %<%c%E%> as %<@required%>"
-msgstr "vorherige Deklaration von %qs"
+msgstr "vorherige Deklaration von %<%c%E%> als %<@required%>"
#: objc/objc-act.c:5788
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "previous declaration of %<%c%E%> as %<@optional%>"
-msgstr "vorherige Deklaration von %qs"
+msgstr "vorherige Deklaration von %<%c%E%> als %<@optional%>"
#: objc/objc-act.c:5848
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "duplicate declaration of method %<%c%E%> with conflicting types"
-msgstr "doppelte Deklaration der Methode %<%c%s%>"
+msgstr "doppelte Deklaration der Methode %<%c%E%> mit in Konflikt stehenden Typen"
#: objc/objc-act.c:5852
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "previous declaration of %<%c%E%>"
-msgstr "vorherige Deklaration von %qs"
+msgstr "vorherige Deklaration von %<%c%E%>"
#: objc/objc-act.c:5914
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "duplicate interface declaration for category %<%E(%E)%>"
-msgstr "doppelte Schnittstellendeklaration für Kategorie %<%s(%s)%>"
+msgstr "doppelte Schnittstellendeklaration für Kategorie %<%E(%E)%>"
#: objc/objc-act.c:5994
#, gcc-internal-format
@@ -42216,41 +42200,41 @@ msgid "instance variable %qs has unknown size"
msgstr "Instanzvariable %qs hat unbekannte Größe"
#: objc/objc-act.c:6025
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "instance variable %qs uses flexible array member"
-msgstr "falsche Benutzung eines flexiblen Feldelements"
+msgstr "Instanzvariable %qs verwendet flexibles Feldelement"
#: objc/objc-act.c:6051
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type %qE has no default constructor to call"
-msgstr "Typ %qs hat keinen Standard-Konstruktor"
+msgstr "Typ %qE hat keinen aufrufbaren Standard-Konstruktor"
#: objc/objc-act.c:6057
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "destructor for %qE shall not be run either"
-msgstr "Destruktor für %qs sollte auch nicht abgearbeitet werden"
+msgstr "Destruktor für %qE sollte auch nicht abgearbeitet werden"
#. Vtable pointers are Real Bad(tm), since Obj-C cannot
#. initialize them.
#: objc/objc-act.c:6069
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type %qE has virtual member functions"
-msgstr "der Typ %qs hat virtuelle Elementfunktionen"
+msgstr "Typ %qE hat virtuelle Elementfunktionen"
#: objc/objc-act.c:6070
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "illegal aggregate type %qE specified for instance variable %qs"
-msgstr "unzulässiger Aggregattyp %qs für Instanzvariable %qs angegeben"
+msgstr "unzulässiger Aggregattyp %qE für Instanzvariable %qs angegeben"
#: objc/objc-act.c:6080
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type %qE has a user-defined constructor"
-msgstr "Typ %qs hat einen benutzerdefinierten Konstruktor"
+msgstr "Typ %qE hat einen benutzerdefinierten Konstruktor"
#: objc/objc-act.c:6082
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type %qE has a user-defined destructor"
-msgstr "Typ %qs hat einen benutzerdefinierten Destruktor"
+msgstr "Typ %qE hat einen benutzerdefinierten Destruktor"
#: objc/objc-act.c:6086
#, gcc-internal-format
@@ -42258,196 +42242,196 @@ msgid "C++ constructors and destructors will not be invoked for Objective-C fiel
msgstr "C++-Konstruktoren und -Destruktoren werden für Objective-C-Felder nicht aufgerufen"
#: objc/objc-act.c:6188
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "instance variable %qE is declared private"
-msgstr "Instanzvariable %qs ist als »private« deklariert"
+msgstr "Instanzvariable %qE ist als »private« deklariert"
#: objc/objc-act.c:6199
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "instance variable %qE is %s; this will be a hard error in the future"
-msgstr "Instanzvariable %qs ist %s; dies wird zukünftig ein schwerer Fehler sein"
+msgstr "Instanzvariable %qE ist %s; dies wird zukünftig ein schwerer Fehler sein"
#: objc/objc-act.c:6206
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "instance variable %qE is declared %s"
-msgstr "Instanzvariable %qs ist als »%s« deklariert"
+msgstr "Instanzvariable %qE ist als »%s« deklariert"
#: objc/objc-act.c:6317 objc/objc-act.c:6432
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "incomplete implementation of class %qE"
-msgstr "unvollständige Implementierung der Klasse %qs"
+msgstr "unvollständige Implementierung der Klasse %qE"
#: objc/objc-act.c:6321 objc/objc-act.c:6436
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "incomplete implementation of category %qE"
-msgstr "unvollständige Implementierung der Kategorie %qs"
+msgstr "unvollständige Implementierung der Kategorie %qE"
#: objc/objc-act.c:6330 objc/objc-act.c:6444
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "method definition for %<%c%E%> not found"
-msgstr "Methodendefinition für %<%c%s%> nicht gefunden"
+msgstr "Methodendefinition für %<%c%E%> nicht gefunden"
#: objc/objc-act.c:6485
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%s %qE does not fully implement the %qE protocol"
-msgstr "%s %qs implementiert das %qs-Protokoll nicht vollständig"
+msgstr "%s %qE implementiert das %qE-Protokoll nicht vollständig"
#: objc/objc-act.c:6575
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot find interface declaration for %qE, superclass of %qE"
-msgstr "Schnittstellendeklaration für %qs, Basisklasse von %qs, kann nicht gefunden werden"
+msgstr "Schnittstellendeklaration für %qE, Basisklasse von %qE, kann nicht gefunden werden"
#: objc/objc-act.c:6614
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "reimplementation of class %qE"
-msgstr "Reimplementation der Klasse %qs"
+msgstr "Reimplementation der Klasse %qE"
#: objc/objc-act.c:6647
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "conflicting super class name %qE"
-msgstr "in Konflikt stehender Basisklassenname %qs"
+msgstr "in Konflikt stehender Basisklassenname %qE"
#: objc/objc-act.c:6650
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "previous declaration of %qE"
-msgstr "vorherige Deklaration von %qs"
+msgstr "vorherige Deklaration von %qE"
#: objc/objc-act.c:6652
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "previous declaration"
-msgstr "vorherige Deklaration %q+D"
+msgstr "vorherige Deklaration"
#: objc/objc-act.c:6665 objc/objc-act.c:6667
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "duplicate interface declaration for class %qE"
-msgstr "doppelte Schnittstellendeklaration für Klasse %qs"
+msgstr "doppelte Schnittstellendeklaration für Klasse %qE"
#: objc/objc-act.c:6985 objc/objc-act.c:7179
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "can not find instance variable associated with property"
-msgstr "widersprüchliche Spezifikation von Instanzvariable"
+msgstr "mit Eigenschaft verbundene Instanzvariable nicht gefunden"
#. TODO: This should be caught much earlier than this.
#: objc/objc-act.c:7145
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid setter, it must have one argument"
-msgstr "Schnittstelle des Zuweisungsoperators bei %L muss zwei Argumente haben"
+msgstr "ungültiger Setter, muss ein Argument haben"
#: objc/objc-act.c:7308 objc/objc-act.c:7523
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "property %qs already specified in %<@dynamic%>"
-msgstr "%s %qs ist bereits in %s:%d definiert"
+msgstr "Eigenschaft %qs ist bereits in %<@dynamic%> festgelegt"
#: objc/objc-act.c:7311 objc/objc-act.c:7526
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "property %qs already specified in %<@synthesize%>"
-msgstr "%s %qs ist bereits in %s:%d definiert"
+msgstr "Eigenschaft %qs ist bereits in %<@synthesize%> festgelegt"
#: objc/objc-act.c:7325 objc/objc-act.c:7540
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "no declaration of property %qs found in the interface"
-msgstr "lokale Deklaration von %qs verdeckt Instanzvariable"
+msgstr "keine Deklaration der in der Schnittstelle gefundenen Eigenschaft %qs"
#: objc/objc-act.c:7352
#, gcc-internal-format
msgid "ivar %qs used by %<@synthesize%> declaration must be an existing ivar"
-msgstr ""
+msgstr "von %<@synthesize%>-Deklaration verwendete ivar %qs muss eine existierende ivar sein"
#: objc/objc-act.c:7373
#, gcc-internal-format
msgid "property %qs is using instance variable %qs of incompatible type"
-msgstr ""
+msgstr "Eigenschaft %qs verwendet Instanzvariable %qs unverträglichen Typs"
#: objc/objc-act.c:7395
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "'assign' property %qs is using bit-field instance variable %qs"
-msgstr "unzulässiger Aggregattyp %qs für Instanzvariable %qs angegeben"
+msgstr "»assign«-Eigenschaft %qs verwendet Bitfeld-Instanzvariable %qs"
#: objc/objc-act.c:7408
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "'atomic' property %qs is using bit-field instance variable %qs"
-msgstr "unzulässiger Aggregattyp %qs für Instanzvariable %qs angegeben"
+msgstr "»atomic«-Eigenschaft %qs verwendet Bitfeld-Instanzvariable %qs"
#: objc/objc-act.c:7426
#, gcc-internal-format
msgid "property %qs is using the same instance variable as property %qs"
-msgstr ""
+msgstr "Eigenschaft %qs verwendet die selbe Instanzvariable wie die Eigenschaft %qs"
#: objc/objc-act.c:7467
#, gcc-internal-format
msgid "%<@synthesize%> is not available in Objective-C 1.0"
-msgstr ""
+msgstr "in Objective-C 1.0 gibt es kein %<@synthesize%>"
#. We can get here only in Objective-C; the Objective-C++ parser
#. detects the problem while parsing, outputs the error
#. "misplaced '@synthesize' Objective-C++ construct" and skips
#. the declaration.
#: objc/objc-act.c:7478
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<@synthesize%> not in @implementation context"
-msgstr "%<@end%> fehlt in Implementationskontext"
+msgstr "%<@synthesize%> nicht in @implementation-Kontext"
#: objc/objc-act.c:7484
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<@synthesize%> can not be used in categories"
-msgstr "%s kann nicht hier in »asm« verwendet werden"
+msgstr "%<@synthesize%> kann nicht in Kategorien verwendet werden"
#: objc/objc-act.c:7493
#, gcc-internal-format
msgid "%<@synthesize%> requires the @interface of the class to be available"
-msgstr ""
+msgstr "%<@synthesize%> erfordert Verfügbarkeit des @interface der Klasse"
#: objc/objc-act.c:7576
#, gcc-internal-format
msgid "%<@dynamic%> is not available in Objective-C 1.0"
-msgstr ""
+msgstr "in Objective-C 1.0 gibt es kein %<@dynamic%>"
#. We can get here only in Objective-C; the Objective-C++ parser
#. detects the problem while parsing, outputs the error
#. "misplaced '@dynamic' Objective-C++ construct" and skips the
#. declaration.
#: objc/objc-act.c:7587
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<@dynamic%> not in @implementation context"
-msgstr "%<@end%> fehlt in Implementationskontext"
+msgstr "%<@dynamic%> nicht in @implementation-Kontext"
#: objc/objc-act.c:7609
#, gcc-internal-format
msgid "%<@dynamic%> requires the @interface of the class to be available"
-msgstr ""
+msgstr "%<@dynamic%> erfordert Verfügbarkeit des @interface der Klasse"
#: objc/objc-act.c:7807
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "definition of protocol %qE not found"
-msgstr "Methodendefinition für %<%c%s%> nicht gefunden"
+msgstr "Definition des Protokolls %qE nicht gefunden"
#. It would be nice to use warn_deprecated_use() here, but
#. we are using TREE_CHAIN (which is supposed to be the
#. TYPE_STUB_DECL for a TYPE) for something different.
#: objc/objc-act.c:7838
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "protocol %qE is deprecated"
-msgstr "%qs ist veraltet"
+msgstr "Protokoll %qE ist veraltet"
#: objc/objc-act.c:7962
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "duplicate declaration for protocol %qE"
-msgstr "doppelte Deklaration für Protokoll %qs"
+msgstr "doppelte Deklaration für Protokoll %qE"
#: objc/objc-act.c:8448
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "conflicting types for %<%c%s%>"
-msgstr "In Konflikt stehende Typen für %q+D"
+msgstr "in Konflikt stehende Typen für %<%c%s%>"
#: objc/objc-act.c:8452
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "previous declaration of %<%c%s%>"
-msgstr "vorherige Deklaration von %qs"
+msgstr "vorherige Deklaration von %<%c%s%>"
#: objc/objc-act.c:8552
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "no super class declared in interface for %qE"
-msgstr "keine Basisklasse in Schnittstelle für %qs deklariert"
+msgstr "keine Basisklasse in Schnittstelle für %qE deklariert"
#: objc/objc-act.c:8579
#, gcc-internal-format
@@ -42465,74 +42449,74 @@ msgid "instance variable %qs is declared private"
msgstr "Instanzvariable %qs ist als »private« deklariert"
#: objc/objc-act.c:9128
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "local declaration of %qE hides instance variable"
-msgstr "lokale Deklaration von %qs verdeckt Instanzvariable"
+msgstr "lokale Deklaration von %qE verdeckt Instanzvariable"
#. This can happen if DECL_ARTIFICIAL (*expr_p), but
#. should be impossible for real properties, which always
#. have a getter.
#: objc/objc-act.c:9173
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "no %qs getter found"
-msgstr "keine Methode %<%c%s%> gefunden"
+msgstr "kein %qs-Getter gefunden"
#: objc/objc-act.c:9413
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "fast enumeration is not available in Objective-C 1.0"
-msgstr "diese Medienfunktion ist nur auf dem fr500 verfügbar"
+msgstr "in Objective-C 1.0 gibt es keine schnelle Aufzählung"
#: objc/objc-act.c:9423
#, gcc-internal-format
msgid "iterating variable in fast enumeration is not an object"
-msgstr ""
+msgstr "Zählvariable in schneller Aufzählung ist kein Objekt"
#: objc/objc-act.c:9429
#, gcc-internal-format
msgid "collection in fast enumeration is not an object"
-msgstr ""
+msgstr "Sammlung in schneller Aufzählung ist kein Objekt"
#: objc/objc-act.c:10362
#, gcc-internal-format, gfc-internal-format
msgid "unknown type %s found during Objective-C encoding"
-msgstr ""
+msgstr "unbekannter Typ %s bei Objective-C-Kodierung gefunden"
#. Do not do any encoding, produce an error and keep going.
#: objc/objc-act.c:10445
#, gcc-internal-format
msgid "trying to encode non-integer type as a bitfield"
-msgstr ""
+msgstr "es wird versucht, einen Nicht-Ganzzahltyp als Bitfeld zu kodieren"
#: objc/objc-gnu-runtime-abi-01.c:129
#, gcc-internal-format
msgid "%<-fobjc-gc%> is ignored for %<-fgnu-runtime%>"
-msgstr ""
+msgstr "%<-fobjc-gc%> wird für %<-fgnu-runtime%> ignoriert"
#: objc/objc-gnu-runtime-abi-01.c:137
#, gcc-internal-format
msgid "%<-fobjc-sjlj-exceptions%> is ignored for %<-fgnu-runtime%>"
-msgstr ""
+msgstr "%<-fobjc-sjlj-exceptions%> wird für %<-fgnu-runtime%> ignoriert"
#: objc/objc-gnu-runtime-abi-01.c:2168 objc/objc-next-runtime-abi-01.c:2848
#: objc/objc-next-runtime-abi-02.c:3636
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "non-objective-c type '%T' cannot be caught"
-msgstr "Nicht-Objekt-Element %qs kann nicht als %<mutable%> deklariert sein"
+msgstr "Nicht-Objective-C-Typ »%T« kann nicht aufgefangen werden"
#: objc/objc-next-runtime-abi-01.c:150
#, gcc-internal-format
msgid "%<-fobjc-sjlj-exceptions%> is the only supported exceptions system for %<-fnext-runtime%> with %<-fobjc-abi-version%> < 2"
-msgstr ""
+msgstr "%<-fobjc-sjlj-exceptions%> ist das einzige unterstützte Ausnahmesystem für %<-fnext-runtime%> mit %<-fobjc-abi-version%> < 2"
#: objc/objc-next-runtime-abi-02.c:247
#, gcc-internal-format
msgid "%<-fobjc-sjlj-exceptions%> is ignored for %<-fnext-runtime%> when %<-fobjc-abi-version%> >= 2"
-msgstr ""
+msgstr "%<-fobjc-sjlj-exceptions%> wird für %<-fnext-runtime%> ignoriert, wenn %<-fobjc-abi-version%> >= 2"
#: objc/objc-runtime-shared-support.c:431
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "creating selector for nonexistent method %qE"
-msgstr "%Hfür nicht existierende Methode %qE wird Selektor erzeugt"
+msgstr "für nicht existierende Methode %qE wird Selektor erzeugt"
#~ msgid "Conform to the ISO 1998 C++ standard"
#~ msgstr "Mit dem Standard ISO 1998 C++ übereinstimmen"
diff --git a/gcc-4.6/gcc/po/ja.po b/gcc-4.6/gcc/po/ja.po
index 87b14865f..7fdc2162c 100644
--- a/gcc-4.6/gcc/po/ja.po
+++ b/gcc-4.6/gcc/po/ja.po
@@ -17,10 +17,10 @@
# Yasuaki Taniguchi <yasuakit@gmail.com>, 2010, 2011
msgid ""
msgstr ""
-"Project-Id-Version: gcc 4.6-b20101218\n"
+"Project-Id-Version: gcc 4.6.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
"POT-Creation-Date: 2011-06-21 10:27+0000\n"
-"PO-Revision-Date: 2011-01-28 23:06+0900\n"
+"PO-Revision-Date: 2011-10-30 18:48+0900\n"
"Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
"Language: ja\n"
@@ -834,12 +834,12 @@ msgstr " -v, --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’表示ã—ã¦çµ
#: gcov.c:420
#, c-format
msgid " -a, --all-blocks Show information for every basic block\n"
-msgstr ""
+msgstr " -a, --all-blocks å„基本ブロックã«é–¢ã™ã‚‹æƒ…報を表示ã™ã‚‹\n"
#: gcov.c:421
#, c-format
msgid " -b, --branch-probabilities Include branch probabilities in output\n"
-msgstr ""
+msgstr " -b, --branch-probabilities 出力ã«åˆ†å²å¯èƒ½æ€§æƒ…報をå«ã‚ã‚‹\n"
#: gcov.c:422
#, c-format
@@ -847,6 +847,8 @@ msgid ""
" -c, --branch-counts Given counts of branches taken\n"
" rather than percentages\n"
msgstr ""
+" -c, --branch-counts 分å²ã«é–¢ã™ã‚‹ç™¾åˆ†çŽ‡ã§ã¯ç„¡ãè¡Œã‚ã‚ŒãŸ\n"
+" 回数をå–å¾—ã™ã‚‹\n"
#: gcov.c:424
#, c-format
@@ -859,21 +861,23 @@ msgid ""
" -l, --long-file-names Use long output file names for included\n"
" source files\n"
msgstr ""
+" -l, --long-file-names インクルードã•ã‚ŒãŸã‚½ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã«é–¢ã™ã‚‹é•·ã„\n"
+" 出力ファイルåを使用ã™ã‚‹\n"
#: gcov.c:427
#, c-format
msgid " -f, --function-summaries Output summaries for each function\n"
-msgstr ""
+msgstr " -f, --function-summaries å„関数ã«é–¢ã™ã‚‹è¦ç´„を出力ã™ã‚‹\n"
#: gcov.c:428
#, c-format
msgid " -o, --object-directory DIR|FILE Search for object files in DIR or called FILE\n"
-msgstr ""
+msgstr " -o, --object-directory DIR|FILE オブジェクトファイルを DIR 内ã¾ãŸã¯å‘¼ã³å‡ºã—用 FILE 内ã§æ¤œç´¢ã™ã‚‹\n"
#: gcov.c:429
#, c-format
msgid " -p, --preserve-paths Preserve all pathname components\n"
-msgstr ""
+msgstr " -p, --preserve-paths ã™ã¹ã¦ã®ãƒ‘スåè¦ç´ ã‚’ä¿è­·ã™ã‚‹\n"
#: gcov.c:430
#, c-format
@@ -977,7 +981,7 @@ msgstr "%s: ç ´æã—ã¦ã„ã¾ã™\n"
#: gcov.c:1045
#, c-format
msgid "%s:cannot open data file, assuming not executed\n"
-msgstr ""
+msgstr "%s:データファイルを開ã‘ã¾ã›ã‚“。実行ã•ã‚Œã¦ã„ãªã„ã¨è¦‹ãªã—ã¾ã™\n"
#: gcov.c:1052
#, c-format
@@ -1027,7 +1031,7 @@ msgstr ""
#: gcov.c:1379
#, c-format
msgid "%s:graph is unsolvable for '%s'\n"
-msgstr ""
+msgstr "%s: '%s' 用ã®ã‚°ãƒ©ãƒ•ãŒè§£æ±ºã§ãã¾ã›ã‚“\n"
#: gcov.c:1459
#, c-format
@@ -1037,7 +1041,7 @@ msgstr "%s '%s'\n"
#: gcov.c:1462
#, c-format
msgid "Lines executed:%s of %d\n"
-msgstr ""
+msgstr "実行ã•ã‚ŒãŸè¡Œ:%s of %d\n"
#: gcov.c:1466
#, c-format
@@ -1047,7 +1051,7 @@ msgstr "実行å¯èƒ½ãªè¡ŒãŒã‚ã‚Šã¾ã›ã‚“\n"
#: gcov.c:1472
#, c-format
msgid "Branches executed:%s of %d\n"
-msgstr ""
+msgstr "実行ã•ã‚ŒãŸåˆ†å²:%s of %d\n"
#: gcov.c:1476
#, c-format
@@ -1057,12 +1061,12 @@ msgstr ""
#: gcov.c:1482
#, c-format
msgid "No branches\n"
-msgstr ""
+msgstr "分å²ãŒã‚ã‚Šã¾ã›ã‚“\n"
#: gcov.c:1484
#, c-format
msgid "Calls executed:%s of %d\n"
-msgstr ""
+msgstr "実行ã•ã‚ŒãŸå‘¼ã³å‡ºã—:%s of %d\n"
#: gcov.c:1488
#, c-format
@@ -1075,24 +1079,24 @@ msgid "%s:no lines for '%s'\n"
msgstr "%s: '%s' ã«å¯¾ã™ã‚‹è¡ŒãŒã‚ã‚Šã¾ã›ã‚“\n"
#: gcov.c:1843
-#, fuzzy, c-format
+#, c-format
msgid "call %2d returned %s\n"
-msgstr "呼ã³å‡ºã— %d ã®æˆ»ã‚Š = %d\n"
+msgstr ""
#: gcov.c:1848
-#, fuzzy, c-format
+#, c-format
msgid "call %2d never executed\n"
-msgstr "呼ã³å‡ºã— %d ã¯ä¸€åº¦ã‚‚実行ã›ãš\n"
+msgstr ""
#: gcov.c:1853
-#, fuzzy, c-format
+#, c-format
msgid "branch %2d taken %s%s\n"
-msgstr "ブランム%d å—ç† = %d%%\n"
+msgstr ""
#: gcov.c:1857
-#, fuzzy, c-format
+#, c-format
msgid "branch %2d never executed\n"
-msgstr "ブランム%d ã¯ä¸€åº¦ã‚‚実行ã•ã‚Œãš\n"
+msgstr ""
#: gcov.c:1862
#, c-format
@@ -1100,9 +1104,9 @@ msgid "unconditional %2d taken %s\n"
msgstr ""
#: gcov.c:1865
-#, fuzzy, c-format
+#, c-format
msgid "unconditional %2d never executed\n"
-msgstr "呼ã³å‡ºã— %d ã¯ä¸€åº¦ã‚‚実行ã›ãš\n"
+msgstr ""
#: gcov.c:1901
#, c-format
@@ -1412,11 +1416,11 @@ msgstr "次ã®ã‚ªãƒ—ションã¯æ–‡æ›¸åŒ–ã•ã‚Œã¦ã„ã¾ã›ã‚“"
#: opts.c:1183
msgid "The following options take separate arguments"
-msgstr ""
+msgstr "次ã®ã‚ªãƒ—ションã¯åˆ†é›¢ã—ãŸå¼•æ•°ã‚’å–ã‚Šã¾ã™"
#: opts.c:1185
msgid "The following options take joined arguments"
-msgstr ""
+msgstr "次ã®ã‚ªãƒ—ションã¯çµåˆã—ãŸå¼•æ•°ã‚’å–ã‚Šã¾ã™"
#: opts.c:1196
msgid "The following options are language-related"
@@ -1472,7 +1476,7 @@ msgstr "命令ãŒåˆ¶ç´„を満ãŸã—ã¾ã›ã‚“:"
#: targhooks.c:1469
#, c-format
msgid "created and used with differing settings of '%s'"
-msgstr ""
+msgstr "作æˆæ™‚ã¨ä½¿ç”¨æ™‚㧠'%s' ã®è¨­å®šãŒç•°ãªã‚Šã¾ã™"
#: targhooks.c:1471
msgid "out of memory"
@@ -1480,11 +1484,11 @@ msgstr "メモリãŒè¶³ã‚Šã¾ã›ã‚“"
#: targhooks.c:1486
msgid "created and used with different settings of -fpic"
-msgstr ""
+msgstr "作æˆæ™‚ã¨ä½¿ç”¨æ™‚㧠-fpic ã®è¨­å®šãŒç•°ãªã‚Šã¾ã™"
#: targhooks.c:1488
msgid "created and used with different settings of -fpie"
-msgstr ""
+msgstr "作æˆæ™‚ã¨ä½¿ç”¨æ™‚㧠-fpie ã®è¨­å®šãŒç•°ãªã‚Šã¾ã™"
#: tlink.c:386
#, c-format
@@ -1717,11 +1721,11 @@ msgstr ""
#: params.def:100
msgid "The maximum depth of recursive inlining for inline functions"
-msgstr ""
+msgstr "インライン関数をå†å¸°çš„ã«ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–ã™ã‚‹æ™‚ã®æœ€å¤§æ·±åº¦"
#: params.def:105
msgid "The maximum depth of recursive inlining for non-inline functions"
-msgstr ""
+msgstr "éžã‚¤ãƒ³ãƒ©ã‚¤ãƒ³é–¢æ•°ã‚’å†å¸°çš„ã«ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–ã™ã‚‹æ™‚ã®æœ€å¤§æ·±åº¦"
#: params.def:110
msgid "Inline recursively only when the probability of call being executed exceeds the parameter"
@@ -1761,16 +1765,15 @@ msgstr ""
#: params.def:180
msgid "The size of function body to be considered large"
-msgstr ""
+msgstr "大ãã„ã¨è¦‹ãªã•ã‚Œã‚‹é–¢æ•°æœ¬ä½“ã®ã‚µã‚¤ã‚º"
#: params.def:184
msgid "Maximal growth due to inlining of large function (in percent)"
msgstr ""
#: params.def:188
-#, fuzzy
msgid "The size of translation unit to be considered large"
-msgstr "翻訳å˜ä½å…¨ä½“をファイルã«ãƒ€ãƒ³ãƒ—ã™ã‚‹"
+msgstr "大ãã„ã¨è¦‹ãªã•ã‚Œã‚‹ç¿»è¨³å˜ä½ã®ã‚µã‚¤ã‚º"
#: params.def:192
msgid "How much can given compilation unit grow because of the inlining (in percent)"
@@ -1786,20 +1789,19 @@ msgstr ""
#: params.def:204
msgid "The size of stack frame to be considered large"
-msgstr ""
+msgstr "大ãã„ã¨è¦‹ãªã•ã‚Œã‚‹ã‚¹ã‚¿ãƒƒã‚¯ãƒ•ãƒ¬ãƒ¼ãƒ ã®ã‚µã‚¤ã‚º"
#: params.def:208
msgid "Maximal stack frame growth due to inlining (in percent)"
-msgstr ""
+msgstr "インライン化ã«ã‚ˆã£ã¦å¢—加ã™ã‚‹ã‚¹ã‚¿ãƒƒã‚¯ãƒ•ãƒ¬ãƒ¼ãƒ ã®æœ€å¤§é‡ (百分率)"
#: params.def:215
msgid "The maximum amount of memory to be allocated by GCSE"
-msgstr ""
+msgstr "GCSE ã«ã‚ˆã£ã¦é…ç½®ã•ã‚Œã‚‹ãƒ¡ãƒ¢ãƒªã®æœ€å¤§é‡"
#: params.def:222
-#, fuzzy
msgid "The maximum ratio of insertions to deletions of expressions in GCSE"
-msgstr "RPTS 用ã®æœ€å¤§å復数を指定ã™ã‚‹"
+msgstr ""
#: params.def:233
msgid "The threshold ratio for performing partial redundancy elimination after reload"
@@ -1963,9 +1965,8 @@ msgid "Bound on number of candidates below that all candidates are considered in
msgstr ""
#: params.def:470
-#, fuzzy
msgid "Bound on number of iv uses in loop optimized in iv optimizations"
-msgstr "目立ãŸãªã„ã€ã‚³ã‚¹ãƒˆã®ã‹ã‹ã‚‹æœ€é©åŒ–ã‚’è¡Œãªã†"
+msgstr ""
#: params.def:478
msgid "If number of candidates in the set is smaller, we always try to remove unused ivs during its optimization"
@@ -2044,9 +2045,8 @@ msgid "The minimum probability of reaching a source block for interblock specula
msgstr ""
#: params.def:594
-#, fuzzy
msgid "The maximum number of iterations through CFG to extend regions"
-msgstr "RPTS 用ã®æœ€å¤§å復数を指定ã™ã‚‹"
+msgstr ""
#: params.def:599
msgid "The maximum conflict delay for an insn to be considered for speculative motion"
@@ -2077,9 +2077,8 @@ msgid "The maximum number of RTL nodes that can be recorded as combiner's last v
msgstr ""
#: params.def:637
-#, fuzzy
msgid "The upper bound for sharing integer constants"
-msgstr "`%s' ã®åˆ—挙値ãŒæ•´æ•°å®šæ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+msgstr "整数定数を共有ã™ã‚‹ãŸã‚ã®ä¸Šé™å€¤"
#: params.def:656
msgid "Minimum number of virtual mappings to consider switching to full virtual renames"
@@ -2111,11 +2110,11 @@ msgstr ""
#: params.def:714
msgid "The number of insns executed before prefetch is completed"
-msgstr ""
+msgstr "プリフェッãƒãŒå®Œäº†ã™ã‚‹å‰ã«å®Ÿè¡Œã•ã‚Œã‚‹å‘½ä»¤æ•°"
#: params.def:721
msgid "The number of prefetches that can run at the same time"
-msgstr ""
+msgstr "åŒæ™‚ã«å®Ÿè¡Œå¯èƒ½ãªãƒ—リフェッãƒã®æ•°"
#: params.def:728
msgid "The size of L1 cache"
@@ -2162,9 +2161,8 @@ msgid "size of tiles for loop blocking"
msgstr ""
#: params.def:806
-#, fuzzy
msgid "maximum number of parameters in a SCoP"
-msgstr "RPTS 用ã®æœ€å¤§å復数を指定ã™ã‚‹"
+msgstr "SCoP 内ã®ãƒ‘ラメータã®æœ€å¤§æ•°"
#: params.def:813
msgid "maximum number of basic blocks per function to be analyzed by Graphite"
@@ -2597,9 +2595,9 @@ msgid "invalid %%E value"
msgstr "無効㪠%%E 値"
#: config/alpha/alpha.c:5431 config/alpha/alpha.c:5479
-#, fuzzy, c-format
+#, c-format
msgid "unknown relocation unspec"
-msgstr "ä¸æ˜Žãªè¨­å®šæ¸ˆã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿åž‹ã§ã™"
+msgstr ""
#: config/alpha/alpha.c:5440 config/crx/crx.c:1119
#: config/rs6000/rs6000.c:16490 config/spu/spu.c:1726
@@ -3000,32 +2998,32 @@ msgstr "被演算å­ã‚³ãƒ¼ãƒ‰ '%c' ã«ç„¡åŠ¹ãªè¢«æ¼”ç®—å­åž‹ãŒä½¿ç”¨ã•ã‚Œã¾
#: config/i386/i386.c:14106 config/i386/i386.c:14146
#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
-msgstr ""
+msgstr "被演算å­ã¯æ¡ä»¶ã‚³ãƒ¼ãƒ‰ã§ã¯ã‚ã‚Šã¾ã›ã‚“。無効ãªè¢«æ¼”ç®—å­ã‚³ãƒ¼ãƒ‰ 'D' ã§ã™"
#: config/i386/i386.c:14172
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
-msgstr ""
+msgstr "被演算å­ã¯å®šæ•°ã§ã‚‚æ¡ä»¶ã‚³ãƒ¼ãƒ‰ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。無効ãªè¢«æ¼”ç®—å­ã‚³ãƒ¼ãƒ‰ 'C' ã§ã™"
#: config/i386/i386.c:14182
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
-msgstr ""
+msgstr "被演算å­ã¯å®šæ•°ã§ã‚‚æ¡ä»¶ã‚³ãƒ¼ãƒ‰ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。無効ãªè¢«æ¼”ç®—å­ã‚³ãƒ¼ãƒ‰ 'F' ã§ã™"
#: config/i386/i386.c:14200
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'c'"
-msgstr ""
+msgstr "被演算å­ã¯å®šæ•°ã§ã‚‚æ¡ä»¶ã‚³ãƒ¼ãƒ‰ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。無効ãªè¢«æ¼”ç®—å­ã‚³ãƒ¼ãƒ‰ 'c' ã§ã™"
#: config/i386/i386.c:14210
#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
-msgstr ""
+msgstr "被演算å­ã¯å®šæ•°ã§ã‚‚æ¡ä»¶ã‚³ãƒ¼ãƒ‰ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。無効ãªè¢«æ¼”ç®—å­ã‚³ãƒ¼ãƒ‰ 'f' ã§ã™"
#: config/i386/i386.c:14313
#, c-format
msgid "operand is not a condition code, invalid operand code 'Y'"
-msgstr ""
+msgstr "被演算å­ã¯æ¡ä»¶ã‚³ãƒ¼ãƒ‰ã§ã¯ã‚ã‚Šã¾ã›ã‚“。無効ãªè¢«æ¼”ç®—å­ã‚³ãƒ¼ãƒ‰ 'Y' ã§ã™"
#: config/i386/i386.c:14339
#, c-format
@@ -3098,7 +3096,7 @@ msgstr "%%dã€%%xã€ã¾ãŸã¯ %%X ã®ç„¡åŠ¹ãªä½¿ç”¨æ³•ã§ã™"
#: config/lm32/lm32.c:529
#, c-format
msgid "only 0.0 can be loaded as an immediate"
-msgstr ""
+msgstr "å³å€¤ã¨ã—ã¦ãƒ­ãƒ¼ãƒ‰ã§ãã‚‹ã®ã¯ 0.0 ã®ã¿ã§ã™"
#: config/lm32/lm32.c:599
msgid "bad operand"
@@ -3138,15 +3136,15 @@ msgstr "%%N コードã¸ã®ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
#: config/m32r/m32r.c:2290
msgid "pre-increment address is not a register"
-msgstr ""
+msgstr "å‰ç½®å¢—分アドレスãŒãƒ¬ã‚¸ã‚¹ã‚¿ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#: config/m32r/m32r.c:2297
msgid "pre-decrement address is not a register"
-msgstr ""
+msgstr "å‰ç½®æ¸›åˆ†ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒ¬ã‚¸ã‚¹ã‚¿ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#: config/m32r/m32r.c:2304
msgid "post-increment address is not a register"
-msgstr ""
+msgstr "後置増分アドレスãŒãƒ¬ã‚¸ã‚¹ã‚¿ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#: config/m32r/m32r.c:2380 config/m32r/m32r.c:2394
#: config/rs6000/rs6000.c:25500
@@ -3252,7 +3250,7 @@ msgstr "stack/frame/arg ãƒã‚¤ãƒ³ã‚¿ç„¡ã—㧠mips_debugger_offset ãŒå‘¼ã°ã‚Œã
#: config/mmix/mmix.c:1589 config/mmix/mmix.c:1719
msgid "MMIX Internal: Expected a CONST_INT, not this"
-msgstr ""
+msgstr "MMIX 内部: CONST_INT ãŒäºˆæœŸã•ã‚Œã¾ã™ãŒã€ç•°ãªã£ã¦ã„ã¾ã™"
#: config/mmix/mmix.c:1668
msgid "MMIX Internal: Bad value for 'm', not a CONST_INT"
@@ -3260,11 +3258,11 @@ msgstr "MMIX 内部: 'm' ã«å¯¾ã™ã‚‹èª¤ã£ãŸå€¤ã§ã™ã€‚CONST_INT ã§ã¯ã‚ã‚Š
#: config/mmix/mmix.c:1687
msgid "MMIX Internal: Expected a register, not this"
-msgstr ""
+msgstr "MMIX 内部: レジスタãŒäºˆæœŸã•ã‚Œã¾ã™ãŒã€ç•°ãªã£ã¦ã„ã¾ã™"
#: config/mmix/mmix.c:1697
msgid "MMIX Internal: Expected a constant, not this"
-msgstr ""
+msgstr "MMIX 内部: 定数ãŒäºˆæœŸã•ã‚Œã¾ã™ãŒã€ç•°ãªã£ã¦ã„ã¾ã™"
#. We need the original here.
#: config/mmix/mmix.c:1781
@@ -3301,7 +3299,7 @@ msgstr ""
#: config/picochip/picochip.c:2983 config/picochip/picochip.c:3015
msgid "Bad address, not (reg+disp):"
-msgstr ""
+msgstr "誤ã£ãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™ã€‚ (reg+disp) ã§ã¯ã‚ã‚Šã¾ã›ã‚“:"
#: config/picochip/picochip.c:3029
msgid "Bad address, not register:"
@@ -3526,15 +3524,15 @@ msgstr "%%S ã¸ã®ç„¡åŠ¹ãªè¢«æ¼”ç®—å­ã§ã™"
#: config/sh/sh.c:9271
msgid "created and used with different architectures / ABIs"
-msgstr ""
+msgstr "作æˆæ™‚ã¨ä½¿ç”¨æ™‚㧠アーキテクãƒãƒ£/ABI ãŒç•°ãªã‚Šã¾ã™"
#: config/sh/sh.c:9273
msgid "created and used with different ABIs"
-msgstr ""
+msgstr "作æˆæ™‚ã¨ä½¿ç”¨æ™‚㧠ABI ãŒç•°ãªã‚Šã¾ã™"
#: config/sh/sh.c:9275
msgid "created and used with different endianness"
-msgstr ""
+msgstr "作æˆæ™‚ã¨ä½¿ç”¨æ™‚ã§ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ãŒç•°ãªã‚Šã¾ã™"
#: config/sparc/sparc.c:7445 config/sparc/sparc.c:7451
#, c-format
@@ -3617,7 +3615,7 @@ msgstr ""
#: config/vax/vax.c:427
#, c-format
msgid "symbol with offset used in PIC mode"
-msgstr ""
+msgstr "PIC モードã§ä½¿ç”¨ã•ã‚Œã‚‹ã‚ªãƒ•ã‚»ãƒƒãƒˆä»˜ãã®ã‚·ãƒ³ãƒœãƒ«ã§ã™"
#: config/vax/vax.c:513
#, c-format
@@ -3819,37 +3817,37 @@ msgstr "%s: %qs ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹å†…:\n"
#: cp/error.c:2897
#, c-format
msgid "%s:%d:%d: recursively instantiated from %qs\n"
-msgstr ""
+msgstr "%s:%d:%d: %qs ã‹ã‚‰å†å¸°çš„ã«å®Ÿä½“化ã•ã‚Œã¾ã—ãŸ\n"
#: cp/error.c:2898
-#, fuzzy, c-format
+#, c-format
msgid "%s:%d:%d: instantiated from %qs\n"
-msgstr "%s:%d: `%s' ã‹ã‚‰å®Ÿä½“化ã•ã‚Œã¾ã—ãŸ\n"
+msgstr "%s:%d:%d: %qs ã‹ã‚‰å®Ÿä½“化ã•ã‚Œã¾ã—ãŸ\n"
#: cp/error.c:2903 cp/error.c:2904
#, c-format
msgid "%s:%d: recursively instantiated from %qs\n"
-msgstr ""
+msgstr "%s:%d: %qs ã‹ã‚‰å†å¸°çš„ã«å®Ÿä½“化ã•ã‚Œã¾ã—ãŸ\n"
#: cp/error.c:2912
#, c-format
msgid "%s:%d:%d: recursively instantiated from here"
-msgstr ""
+msgstr "%s:%d:%d: ã“ã“ã‹ã‚‰å†å¸°çš„ã«å®Ÿä½“化ã•ã‚Œã¾ã—ãŸ"
#: cp/error.c:2913
-#, fuzzy, c-format
+#, c-format
msgid "%s:%d:%d: instantiated from here"
-msgstr "%s:%d: ã“ã“ã§å®Ÿä½“化ã•ã‚Œã¾ã—ãŸ\n"
+msgstr "%s:%d:%d: ã“ã“ã‹ã‚‰å®Ÿä½“化ã•ã‚Œã¾ã—ãŸ"
#: cp/error.c:2918
#, c-format
msgid "%s:%d: recursively instantiated from here"
-msgstr ""
+msgstr "%s:%d: ã“ã“ã‹ã‚‰å†å¸°çš„ã«å®Ÿä½“化ã•ã‚Œã¾ã—ãŸ"
#: cp/error.c:2919
-#, fuzzy, c-format
+#, c-format
msgid "%s:%d: instantiated from here"
-msgstr "%s:%d: ã“ã“ã§å®Ÿä½“化ã•ã‚Œã¾ã—ãŸ\n"
+msgstr "%s:%d: ã“ã“ã‹ã‚‰å®Ÿä½“化ã•ã‚Œã¾ã—ãŸ"
#: cp/error.c:2962
#, c-format
@@ -3947,9 +3945,8 @@ msgid "wrong type argument to conjugation"
msgstr "複素共役(~)ã¸ã®å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
#: cp/typeck.c:5063
-#, fuzzy
msgid "in argument to unary !"
-msgstr "å˜é …プラスã¸ã®å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
+msgstr ""
#: cp/typeck.c:5112
msgid "no pre-increment operator for type"
@@ -4030,22 +4027,21 @@ msgstr "致命的エラー:"
#: fortran/expr.c:607
#, c-format
msgid "Constant expression required at %C"
-msgstr ""
+msgstr "%C ã§ã¯å®šæ•°å¼ãŒè¦æ±‚ã•ã‚Œã¾ã™"
#: fortran/expr.c:610
#, c-format
msgid "Integer expression required at %C"
-msgstr ""
+msgstr "%C ã§ã¯æ•´æ•°å¼ãŒè¦æ±‚ã•ã‚Œã¾ã™"
#: fortran/expr.c:615
-#, fuzzy, c-format
+#, c-format
msgid "Integer value too large in expression at %C"
-msgstr "å¼ã®æ•´æ•°ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ"
+msgstr "%C ã®å¼å†…ã§æ•´æ•°å€¤ãŒå¤§ãã™ãŽã¾ã™"
#: fortran/expr.c:3147
-#, fuzzy
msgid "array assignment"
-msgstr "代入"
+msgstr "é…列代入"
#: fortran/gfortranspec.c:303
#, c-format
@@ -4081,7 +4077,7 @@ msgstr "éžè² ã®å¹…ãŒå¿…è¦ã§ã™"
#: fortran/io.c:551
msgid "Unexpected element '%c' in format string at %L"
-msgstr ""
+msgstr "予期ã—ãªã„è¦ç´  '%c' ãŒæ›¸å¼æ–‡å­—列内 (ä½ç½® %L) ã«ã‚ã‚Šã¾ã™"
#: fortran/io.c:553
msgid "Unexpected end of format string"
@@ -4089,15 +4085,15 @@ msgstr "予期ã—ãªã„書å¼æ–‡å­—列終了ã§ã™"
#: fortran/io.c:554
msgid "Zero width in format descriptor"
-msgstr ""
+msgstr "å¹… 0 ã®æ›¸å¼è¨˜è¿°å­ã§ã™"
#: fortran/io.c:574
msgid "Missing leading left parenthesis"
-msgstr ""
+msgstr "å‰ã«å·¦å°æ‹¬å¼§ãŒã‚ã‚Šã¾ã›ã‚“"
#: fortran/io.c:603
msgid "Left parenthesis required after '*'"
-msgstr ""
+msgstr "'*' ã®å¾Œã«ã¯å·¦å°æ‹¬å¼§ãŒå¿…è¦ã§ã™"
#: fortran/io.c:634
msgid "Expected P edit descriptor"
@@ -4117,9 +4113,8 @@ msgid "Positive width required with T descriptor"
msgstr ""
#: fortran/io.c:844
-#, fuzzy
msgid "E specifier not allowed with g0 descriptor"
-msgstr "åž‹æŒ‡å®šå­ `%s' 㯠struct ã‚„ class ã®å¾Œã«ã¯ä½¿ãˆã¾ã›ã‚“"
+msgstr ""
#: fortran/io.c:914
msgid "Positive exponent width required"
@@ -4363,9 +4358,8 @@ msgid "Start expression in DO loop"
msgstr ""
#: fortran/resolve.c:6233
-#, fuzzy
msgid "End expression in DO loop"
-msgstr "オペランドã¨ã—ã¦ç„¡åŠ¹ãªå¼"
+msgstr ""
#: fortran/resolve.c:6237
msgid "Step expression in DO loop"
@@ -4565,7 +4559,7 @@ msgstr " --bootclasspath PATH 組ã¿è¾¼ã¿ã‚¯ãƒ©ã‚¹ãƒ‘スを上書ãã™ã‚‹\
#: java/jcf-dump.c:1148
#, c-format
msgid " --extdirs PATH Set extensions directory path\n"
-msgstr ""
+msgstr " --extdirs PATH æ‹¡å¼µã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ‘スを設定ã™ã‚‹\n"
#: java/jcf-dump.c:1149
#, c-format
@@ -4735,18 +4729,18 @@ msgstr "é™çš„リンクã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
#: config/pa/pa-hpux11.h:111 config/pa/pa64-hpux.h:30 config/pa/pa64-hpux.h:33
#: config/pa/pa64-hpux.h:42 config/pa/pa64-hpux.h:45
msgid "warning: consider linking with '-static' as system libraries with"
-msgstr ""
+msgstr "警告: システムライブラリã¨ãƒªãƒ³ã‚¯ã™ã‚‹æ™‚㯠'-static' を指定ã™ã‚‹ã“ã¨ã‚’検討ã—ã¦ãã ã•ã„"
#: config/pa/pa-hpux10.h:90 config/pa/pa-hpux10.h:93 config/pa/pa-hpux10.h:101
#: config/pa/pa-hpux10.h:104 config/pa/pa-hpux11.h:109
#: config/pa/pa-hpux11.h:112 config/pa/pa64-hpux.h:31 config/pa/pa64-hpux.h:34
#: config/pa/pa64-hpux.h:43 config/pa/pa64-hpux.h:46
msgid " profiling support are only provided in archive format"
-msgstr ""
+msgstr " プロファイリングサãƒãƒ¼ãƒˆã¯æ›¸åº«ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆå†…ã§ã®ã¿æä¾›ã•ã‚Œã¾ã™"
#: config/rs6000/darwin.h:99
msgid " conflicting code gen style switches are used"
-msgstr ""
+msgstr " 競åˆã—ã¦ã„るコード生æˆã‚¹ã‚¿ã‚¤ãƒ«ã‚¹ã‚¤ãƒƒãƒãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
#: config/arm/arm.h:178
msgid "-msoft-float and -mhard_float may not be used together"
@@ -4806,7 +4800,7 @@ msgstr "-femit-class-file 㯠-fsyntax-only ã«åˆã‚ã›ã¦ä½¿ç”¨ã—ã¦ãã ã•
#: config/i386/linux-unwind.h:186
msgid "ax ; {int $0x80 | syscall"
-msgstr ""
+msgstr "ax ; {int $0x80 | syscall"
#: config/s390/tpf.h:120
msgid "static is not supported on TPF-OS"
@@ -4870,7 +4864,7 @@ msgstr "--encoding=<encoding>\t入力エンコーディングをé¸æŠžã™ã‚‹ (ãƒ
#: java/lang.opt:206
msgid "--extdirs=<path>\tSet the extension directory path"
-msgstr ""
+msgstr "--extdirs=<path>\tæ‹¡å¼µã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ‘スを設定ã™ã‚‹"
#: java/lang.opt:216
msgid "Input file is a file with a list of filenames to compile"
@@ -5389,7 +5383,7 @@ msgstr ""
#: config/frv/frv.opt:31
msgid "Enable label alignment optimizations"
-msgstr ""
+msgstr "ラベル整列最é©åŒ–を有効ã«ã™ã‚‹"
#: config/frv/frv.opt:35
msgid "Dynamically allocate cc registers"
@@ -5453,7 +5447,7 @@ msgstr "64 個ã®æ±Žç”¨ãƒ¬ã‚¸ã‚¹ã‚¿ (GPR) を使用ã™ã‚‹"
#: config/frv/frv.opt:116
msgid "Enable use of GPREL for read-only data in FDPIC"
-msgstr ""
+msgstr "FDPIC 内ã®èª­ã¿å–り専用データ用 GPREL ã®ä½¿ç”¨ã‚’有効ã«ã™ã‚‹"
#: config/frv/frv.opt:120 config/rs6000/rs6000.opt:216
#: config/pdp11/pdp11.opt:67
@@ -5461,9 +5455,8 @@ msgid "Use hardware floating point"
msgstr "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢æµ®å‹•å°æ•°ç‚¹ã‚’利用ã™ã‚‹"
#: config/frv/frv.opt:124 config/bfin/bfin.opt:77
-#, fuzzy
msgid "Enable inlining of PLT in function calls"
-msgstr "関数呼ã³å‡ºã—ã®å‰å¾Œã§ãƒ¬ã‚¸ã‚¹ã‚¿ã®ä¿å­˜ã‚’有効ã«ã™ã‚‹"
+msgstr "関数呼ã³å‡ºã—内㧠PLT ã®ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³åŒ–を有効ã«ã™ã‚‹"
#: config/frv/frv.opt:128
msgid "Enable PIC support for building libraries"
@@ -5479,7 +5472,7 @@ msgstr "大域関数ã®ç›´æŽ¥å‘¼ã³å‡ºã—を無効ã«ã™ã‚‹"
#: config/frv/frv.opt:140
msgid "Use media instructions"
-msgstr ""
+msgstr "media 命令を使用ã™ã‚‹"
#: config/frv/frv.opt:144
msgid "Use multiply add/subtract instructions"
@@ -5495,7 +5488,7 @@ msgstr "入れå­ã«ã•ã‚ŒãŸæ¡ä»¶ä»˜ã実行ã®æœ€é©åŒ–を有効ã«ã™ã‚‹"
#: config/frv/frv.opt:157
msgid "Do not mark ABI switches in e_flags"
-msgstr ""
+msgstr "e_flags 内㮠ABI スイッãƒã‚’マークã—ãªã„"
#: config/frv/frv.opt:161
msgid "Remove redundant membars"
@@ -5507,7 +5500,7 @@ msgstr ""
#: config/frv/frv.opt:169
msgid "Enable setting GPRs to the result of comparisons"
-msgstr ""
+msgstr "比較çµæžœã‚’汎用レジスタã«è¨­å®šã™ã‚‹ã“ã¨ã‚’有効ã«ã™ã‚‹"
#: config/frv/frv.opt:173
msgid "Change the amount of scheduler lookahead"
@@ -5566,10 +5559,8 @@ msgid "Return pointers in both a0 and d0"
msgstr ""
#: config/mn10300/mn10300.opt:56
-#, fuzzy
-#| msgid "Allow gcc to use the repeat/erepeat instructions"
msgid "Allow gcc to generate LIW instructions"
-msgstr "gcc ㌠repeat/erepeat 命令を使用ã™ã‚‹ã“ã¨ã‚’許å¯ã™ã‚‹"
+msgstr "gcc ㌠LIW 命令を生æˆã™ã‚‹ã“ã¨ã‚’許å¯ã™ã‚‹"
#: config/s390/tpf.opt:23
msgid "Enable TPF-OS tracing code"
@@ -5642,11 +5633,11 @@ msgstr ""
#: config/s390/s390.opt:91
msgid "Warn if a function uses alloca or creates an array with dynamic size"
-msgstr ""
+msgstr "関数㧠alloca を使用ã™ã‚‹ã‹ã€ã¾ãŸã¯å‹•çš„サイズã®é…列を作æˆã—ãŸå ´åˆã«ã€è­¦å‘Šã™ã‚‹"
#: config/s390/s390.opt:95
msgid "Warn if a single function's framesize exceeds the given framesize"
-msgstr ""
+msgstr "一ã¤ã®é–¢æ•°ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã‚µã‚¤ã‚ºãŒä¸Žãˆã‚‰ã‚ŒãŸãƒ•ãƒ¬ãƒ¼ãƒ ã‚µã‚¤ã‚ºã‚’超éŽã™ã‚‹å ´åˆã«è­¦å‘Šã™ã‚‹"
#: config/s390/s390.opt:99
msgid "z/Architecture"
@@ -5694,7 +5685,7 @@ msgstr "GP レジスタä¸ä½¿ç”¨ã®ã‚³ãƒ¼ãƒ‰ã‚’生æˆã™ã‚‹"
#: config/ia64/ia64.opt:56
msgid "gp is constant (but save/restore gp on indirect calls)"
-msgstr "gp を定数ã¨ã™ã‚‹ï¼ˆä½†ã€é–“接呼ã³å‡ºã—ã§ã¯ gp ã‚’ save/restore ã™ã‚‹ï¼‰"
+msgstr "gp を定数ã¨ã™ã‚‹ï¼ˆãŸã ã—ã€é–“接呼ã³å‡ºã—ã§ã¯ gp ã‚’ save/restore ã™ã‚‹ï¼‰"
#: config/ia64/ia64.opt:60
msgid "Generate self-relocatable code"
@@ -5743,39 +5734,39 @@ msgstr "より良ã„スケジューリング用ã«äº‹å‰ã«ã‚¹ãƒˆãƒƒãƒ—ビット
#: config/ia64/ia64.opt:107 config/spu/spu.opt:72 config/sh/sh.opt:258
#: config/pa/pa.opt:51
msgid "Specify range of registers to make fixed"
-msgstr ""
+msgstr "固定ã™ã‚‹ãƒ¬ã‚¸ã‚¹ã‚¿ã®ç¯„囲を指定ã™ã‚‹"
#: config/ia64/ia64.opt:119
msgid "Use data speculation before reload"
-msgstr ""
+msgstr "reload å‰ã«ãƒ‡ãƒ¼ã‚¿æŠ•æ©Ÿã‚’使用ã™ã‚‹"
#: config/ia64/ia64.opt:123
msgid "Use data speculation after reload"
-msgstr ""
+msgstr "reload 後ã«ãƒ‡ãƒ¼ã‚¿æŠ•æ©Ÿã‚’使用ã™ã‚‹"
#: config/ia64/ia64.opt:127
msgid "Use control speculation"
-msgstr ""
+msgstr "制御投機を使用ã™ã‚‹"
#: config/ia64/ia64.opt:131
msgid "Use in block data speculation before reload"
-msgstr ""
+msgstr "reload å‰ã«ãƒ–ロック内データ投機を使用ã™ã‚‹"
#: config/ia64/ia64.opt:135
msgid "Use in block data speculation after reload"
-msgstr ""
+msgstr "reload 後ã«ãƒ–ロック内データ投機を使用ã™ã‚‹"
#: config/ia64/ia64.opt:139
msgid "Use in block control speculation"
-msgstr ""
+msgstr "ブロック内制御投機を使用ã™ã‚‹"
#: config/ia64/ia64.opt:143
msgid "Use simple data speculation check"
-msgstr ""
+msgstr "å˜ç´”データ投機検査を使用ã™ã‚‹"
#: config/ia64/ia64.opt:147
msgid "Use simple data speculation check for control speculation"
-msgstr ""
+msgstr "制御投機用ã®å˜ç´”データ投機検査を使用ã™ã‚‹"
#: config/ia64/ia64.opt:151
msgid "If set, data speculative instructions will be chosen for schedule only if there are no other choices at the moment "
@@ -5791,7 +5782,7 @@ msgstr ""
#: config/ia64/ia64.opt:163
msgid "Place a stop bit after every cycle when scheduling"
-msgstr ""
+msgstr "スケジューリング時ã®å„サイクル後ã«ã‚¹ãƒˆãƒƒãƒ—ビットをé…ç½®ã™ã‚‹"
#: config/ia64/ia64.opt:167
msgid "Assume that floating-point stores and loads are not likely to cause conflict when placed into one instruction group"
@@ -5807,7 +5798,7 @@ msgstr ""
#: config/ia64/ia64.opt:179
msgid "Don't generate checks for control speculation in selective scheduling"
-msgstr ""
+msgstr "é¸æŠžçš„スケジューリング内ã§ã¯åˆ¶å¾¡æŠ•æ©Ÿç”¨ã®æ¤œæŸ»ã‚’生æˆã—ãªã„"
#: config/ia64/vms_symvec_libgcc_s.opt:3
msgid "! It would be better to auto-generate this file."
@@ -6111,7 +6102,7 @@ msgstr "'rtd' を使用ã™ã‚‹ç•°ãªã‚‹å‘¼ã³å‡ºã—è¦ç´„を使用ã™ã‚‹"
#: config/m68k/m68k.opt:160 config/bfin/bfin.opt:61
msgid "Enable separate data segment"
-msgstr ""
+msgstr "分離データセグメントを有効ã«ã™ã‚‹"
#: config/m68k/m68k.opt:164 config/bfin/bfin.opt:57
msgid "ID of shared library to build"
@@ -6151,7 +6142,7 @@ msgstr "無視ã•ã‚Œã‚‹ (廃止)"
#: config/i386/mingw.opt:23
msgid "Warn about none ISO msvcrt scanf/printf width extensions"
-msgstr ""
+msgstr "éž ISO ã® msvcrt scanf/printf ã®å¹…æ‹¡å¼µã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
#: config/i386/mingw.opt:27
msgid "For nested functions on stack executable permission is set."
@@ -6203,7 +6194,7 @@ msgstr "分å²ã®ã‚³ã‚¹ãƒˆã‚’指定ã™ã‚‹ (1-5, ä»»æ„ã®å€‹æ•°)"
#: config/i386/i386.opt:114
msgid "Data greater than given threshold will go into .ldata section in x86-64 medium model"
-msgstr ""
+msgstr "x86-64 メディアモデルã§ã¯ä¸Žãˆã‚‰ã‚ŒãŸé–¾å€¤ã‚ˆã‚Šå¤§ãã„データを .ldata セクションã«é…ç½®ã™ã‚‹"
#: config/i386/i386.opt:118
msgid "Use given x86-64 code model"
@@ -6219,16 +6210,15 @@ msgstr "FPU 用㮠sin, cos, sqrt を生æˆã™ã‚‹"
#: config/i386/i386.opt:129
msgid "Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack"
-msgstr ""
+msgstr "スタックをå†æ•´åˆ—ã™ã‚‹ãŸã‚ã«å‹•çš„å†æ•´åˆ—引数ãƒã‚¤ãƒ³ã‚¿ (Dynamic Realigned Argument Pointer, DRAP) を常ã«ä½¿ç”¨ã™ã‚‹"
#: config/i386/i386.opt:133
msgid "Return values of functions in FPU registers"
msgstr "FPU レジスタ内ã®æ©Ÿèƒ½ã®å€¤ã‚’è¿”ã™"
#: config/i386/i386.opt:137
-#, fuzzy
msgid "Generate floating point mathematics using given instruction set"
-msgstr "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢æµ®å‹•å°æ•°ç‚¹å‘½ä»¤ã‚’使用ã™ã‚‹"
+msgstr "与ãˆã‚‰ã‚ŒãŸå‘½ä»¤é›†åˆã‚’使用ã—ã¦æµ®å‹•å°æ•°æ•°å€¤è¨ˆç®—を生æˆã™ã‚‹"
#: config/i386/i386.opt:149
msgid "Inline all known string operations"
@@ -6316,8 +6306,9 @@ msgid "Return 8-byte vectors in memory"
msgstr "8 ãƒã‚¤ãƒˆãƒ™ã‚¯ãƒˆãƒ«ã‚’メモリã«è¿”ã™"
#: config/i386/i386.opt:253
+#, fuzzy
msgid "Generate reciprocals instead of divss and sqrtss."
-msgstr ""
+msgstr "divss ãŠã‚ˆã³ sqrtss ã®ä»£ã‚ã‚Šã«é€†æ•° (reciprocal) を生æˆã™ã‚‹"
#: config/i386/i386.opt:257
msgid "Generate cld instruction in the function prologue."
@@ -6333,7 +6324,7 @@ msgstr ""
#: config/i386/i386.opt:271
msgid "Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer."
-msgstr ""
+msgstr "自動ベクトル化㧠256 ビット AVX 命令ã®ä»£ã‚ã‚Šã« 128 ビット AVX 命令を使用ã™ã‚‹"
#: config/i386/i386.opt:277
msgid "Generate 32bit i386 code"
@@ -6384,10 +6375,8 @@ msgid "Do not support SSE4.1 and SSE4.2 built-in functions and code generation"
msgstr "SSE4.1 㨠SSE4.2 ã®çµ„ã¿è¾¼ã¿é–¢æ•°ã¨ã‚³ãƒ¼ãƒ‰ç”Ÿæˆã‚’サãƒãƒ¼ãƒˆã—ãªã„"
#: config/i386/i386.opt:328
-#, fuzzy
-#| msgid "'-msse5' was removed"
msgid "%<-msse5%> was removed"
-msgstr "'-msse5' ã¯å‰Šé™¤ã•ã‚Œã¾ã—ãŸ"
+msgstr "%<-msse5%> ã¯å‰Šé™¤ã•ã‚Œã¾ã—ãŸ"
#: config/i386/i386.opt:333
msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation"
@@ -6547,7 +6536,7 @@ msgstr "PowerPC-64 命令セットを使用ã™ã‚‹"
#: config/rs6000/rs6000.opt:152
msgid "Use PowerPC General Purpose group optional instructions"
-msgstr "PowerPC 一般用途グループオプション命令を使用ã™ã‚‹"
+msgstr "PowerPC 汎用グループオプション命令を使用ã™ã‚‹"
#: config/rs6000/rs6000.opt:156
msgid "Use PowerPC Graphics group optional instructions"
@@ -7005,7 +6994,7 @@ msgstr "リトルエンディアンコードを生æˆã™ã‚‹"
#: config/mcore/mcore.opt:56 config/fr30/fr30.opt:27
msgid "Assume that run-time support has been provided, so omit -lsim from the linker command line"
-msgstr ""
+msgstr "実行時サãƒãƒ¼ãƒˆãŒæä¾›ã•ã‚Œã‚‹ã¨è¦‹ãªã—ã€ãƒªãƒ³ã‚«ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã« -lsim ã‚’å«ã‚ãªã„"
#: config/mcore/mcore.opt:60
msgid "Use arbitrary sized immediates in bit operations"
@@ -7017,7 +7006,7 @@ msgstr "ãƒã‚¤ãƒˆã‚¢ã‚¯ã‚»ã‚¹ã‚ˆã‚Šãƒ¯ãƒ¼ãƒ‰ã‚¢ã‚¯ã‚»ã‚¹ã‚’é¸ã¶"
#: config/mcore/mcore.opt:71
msgid "Set the maximum amount for a single stack increment operation"
-msgstr "å˜ä¸€ã®ã‚¹ã‚¿ãƒƒã‚¯ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆæ“作ã®æœ€å¤§å€¤ã‚’設定ã™ã‚‹"
+msgstr "å˜ä¸€ã®ã‚¹ã‚¿ãƒƒã‚¯å¢—分æ“作ã®æœ€å¤§å€¤ã‚’設定ã™ã‚‹"
#: config/mcore/mcore.opt:75
msgid "Always treat bitfields as int-sized"
@@ -7237,7 +7226,7 @@ msgstr "double ã‚’ 64 ビット境界ã«æ•´åˆ—ã™ã‚‹"
#: config/sh/sh.opt:246
msgid "Division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table"
-msgstr ""
+msgstr "除算戦略ã€æ¬¡ã®ã„ãšã‚Œã‹: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table"
#: config/sh/sh.opt:250
msgid "Specify name for 32 bit signed division function"
@@ -7285,7 +7274,7 @@ msgstr "リトルエンディアンモードã§ã‚³ãƒ¼ãƒ‰ã‚’生æˆã™ã‚‹"
#: config/sh/sh.opt:298
msgid "Mark MAC register as call-clobbered"
-msgstr ""
+msgstr "MAC レジスタを呼ã³å‡ºã—ã§ç ´å£Šã•ã‚Œã‚‹ã¨ãƒžãƒ¼ã‚¯ã™ã‚‹"
#: config/sh/sh.opt:304
msgid "Make structs a multiple of 4 bytes (warning: ABI altered)"
@@ -7544,9 +7533,8 @@ msgid "Make the linker relaxation machine assume that a program counter wrap-aro
msgstr ""
#: config/crx/crx.opt:23
-#, fuzzy
msgid "Support multiply accumulate instructions"
-msgstr "ä¹—ç®—-加算浮動å°æ•°ç‚¹å‘½ä»¤ã‚’を使用ã™ã‚‹"
+msgstr "ä¹—ç®—-加算浮動å°æ•°ç‚¹å‘½ä»¤ã‚’使用ã™ã‚‹"
#: config/crx/crx.opt:27
msgid "Do not use push to store function arguments"
@@ -7964,7 +7952,7 @@ msgstr "68HCS12 用ã«ã‚³ãƒ³ãƒ‘イルã™ã‚‹"
#: config/m68hc11/m68hc11.opt:49
msgid "Auto pre/post decrement increment allowed"
-msgstr "自動 pre/post デクリメント インクリメントを許容ã™ã‚‹"
+msgstr "自動 å‰ç½®/後置 減分/増分 を許容ã™ã‚‹"
#: config/m68hc11/m68hc11.opt:53
msgid "Min/max instructions allowed"
@@ -7976,7 +7964,7 @@ msgstr "関数呼ã³å‡ºã—ã¨æˆ»ã‚Šç”¨ã« call 㨠rtc を使用ã™ã‚‹"
#: config/m68hc11/m68hc11.opt:61
msgid "Auto pre/post decrement increment not allowed"
-msgstr "自動 pre/post デクリメント インクリメントを許容ã—ãªã„"
+msgstr "自動 å‰ç½®/後置 減分/増分を許容ã—ãªã„"
#: config/m68hc11/m68hc11.opt:65
msgid "Use jsr and rts for function calls and returns"
@@ -8196,7 +8184,6 @@ msgstr "TDA 領域ã«ã¨ã£ã¦æœ›ã¾ã—ã„最大データサイズを設定ã™ã‚
#: config/v850/v850.opt:71
#, fuzzy
-#| msgid "Enforce strict alignment"
msgid "Do not enforce strict alignment"
msgstr "厳密ãªæ•´åˆ—を強制ã™ã‚‹"
@@ -8218,7 +8205,6 @@ msgstr "v850e1 プロセッサ用ã«ã‚³ãƒ³ãƒ‘イルã™ã‚‹"
#: config/v850/v850.opt:94
#, fuzzy
-#| msgid "Compile for the v850e processor"
msgid "Compile for the v850es variant of the v850e1"
msgstr "v850e プロセッサ用ã«ã‚³ãƒ³ãƒ‘イルã™ã‚‹"
@@ -8352,7 +8338,7 @@ msgstr ""
#: config/bfin/bfin.opt:69
msgid "Link with the fast floating-point library"
-msgstr ""
+msgstr "高速ãªæµ®å‹•å°æ•°ãƒ©ã‚¤ãƒ–ラリã¨ãƒªãƒ³ã‚¯ã™ã‚‹"
#: config/bfin/bfin.opt:81
msgid "Do stack checking using bounds in L1 scratch memory"
@@ -8388,7 +8374,7 @@ msgstr ""
#: config/picochip/picochip.opt:31
msgid "Specify whether the byte access instructions should be used. Enabled by default."
-msgstr ""
+msgstr "ãƒã‚¤ãƒˆã‚¢ã‚¯ã‚»ã‚¹å‘½ä»¤ã‚’使用ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã™ã‚‹ã€‚デフォルトã§ã¯æœ‰åŠ¹ã¨ãªã‚‹"
#: config/picochip/picochip.opt:35
msgid "Enable debug output to be generated."
@@ -8396,11 +8382,11 @@ msgstr "デãƒãƒƒã‚°å‡ºåŠ›ã®ç”Ÿæˆã‚’有効ã«ã™ã‚‹"
#: config/picochip/picochip.opt:39
msgid "Allow a symbol value to be used as an immediate value in an instruction."
-msgstr ""
+msgstr "命令内ã§ã‚·ãƒ³ãƒœãƒ«å€¤ãŒå³å€¤ã¨ã—ã¦ä½¿ç”¨ã•ã‚Œã‚‹ã“ã¨ã‚’許å¯ã™ã‚‹"
#: config/picochip/picochip.opt:43
msgid "Generate warnings when inefficient code is known to be generated."
-msgstr ""
+msgstr "éžåŠ¹çŽ‡ãªã‚³ãƒ¼ãƒ‰ãŒç”Ÿæˆã•ã‚ŒãŸæ™‚ã«è­¦å‘Šã™ã‚‹"
#: config/vxworks.opt:36
msgid "Assume the VxWorks RTP environment"
@@ -8424,7 +8410,7 @@ msgstr "コンパイル時 CFString オブジェクトを生æˆã™ã‚‹"
#: config/darwin.opt:205
msgid "Warn if constant CFString objects contain non-portable characters"
-msgstr ""
+msgstr "定数 CFString オブジェクトãŒç§»æ¤æ€§ã®ç„¡ã„文字をå«ã‚€å ´åˆã«è­¦å‘Šã™ã‚‹"
#: config/darwin.opt:210
msgid "Generate AT&T-style stubs for Mach-O"
@@ -8436,7 +8422,7 @@ msgstr "実行å¯èƒ½ãƒ•ã‚¡ã‚¤ãƒ«ç”¨ (共有ライブラリã§ã¯ãªã) ã«é©ã
#: config/darwin.opt:218
msgid "Generate code suitable for fast turn around debugging"
-msgstr ""
+msgstr "デãƒãƒƒã‚°ã‚’高速ã«è¡Œã†ãŸã‚ã«é©ã—ãŸã‚³ãƒ¼ãƒ‰ã‚’生æˆã™ã‚‹"
#: config/darwin.opt:227
msgid "The earliest MacOS X version on which this program will run"
@@ -8448,15 +8434,15 @@ msgstr "sizeof(bool) ã‚’ 1 ã«è¨­å®šã™ã‚‹"
#: config/darwin.opt:235
msgid "Generate code for darwin loadable kernel extensions"
-msgstr ""
+msgstr "darwin ロードå¯èƒ½ã‚«ãƒ¼ãƒãƒ«æ‹¡å¼µç”¨ã®ã‚³ãƒ¼ãƒ‰ã‚’生æˆã™ã‚‹"
#: config/darwin.opt:239
msgid "Generate code for the kernel or loadable kernel extensions"
-msgstr ""
+msgstr "カーãƒãƒ«ç”¨ã€ã¾ãŸã¯ãƒ­ãƒ¼ãƒ‰å¯èƒ½ã‚«ãƒ¼ãƒãƒ«æ‹¡å¼µç”¨ã®ã‚³ãƒ¼ãƒ‰ã‚’生æˆã™ã‚‹"
#: config/darwin.opt:243
msgid "-iframework <dir>\tAdd <dir> to the end of the system framework include path"
-msgstr ""
+msgstr "-iframework <dir>\t<dir> をシステムフレームワークインクルードパスã®æœ«å°¾ã«åŠ ãˆã‚‹"
#: config/lynx.opt:23
msgid "Support legacy multi-threading"
@@ -8743,8 +8729,6 @@ msgid "Use multiply high instructions for high part of 32x32 multiply"
msgstr ""
#: config/microblaze/microblaze.opt:92
-#, fuzzy
-#| msgid "Use hardware floating point converstion instructions"
msgid "Use hardware floating point conversion instructions"
msgstr "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢æµ®å‹•å°æ•°ç‚¹å¤‰æ›å‘½ä»¤ã‚’使用ã™ã‚‹"
@@ -8869,7 +8853,7 @@ msgstr ""
#: c-family/c.opt:249
msgid "-MT <target>\tAdd an unquoted target"
-msgstr ""
+msgstr "-MT <target>\tターゲット (引用符を付ã‘ãªã„) を追加ã™ã‚‹"
#: c-family/c.opt:253
msgid "Do not generate #line directives"
@@ -8905,11 +8889,11 @@ msgstr "組ã¿è¾¼ã¿å‰å‡¦ç†ãƒžã‚¯ãƒ­ãŒæœªå®šç¾©ã«ãªã‚‹ã‹å†å®šç¾©ã•ã‚ŒãŸ
#: c-family/c.opt:288
msgid "Warn about C constructs that are not in the common subset of C and C++"
-msgstr ""
+msgstr "C 㨠C++ ã®å…±é€šéƒ¨åˆ†é›†åˆã§ã¯ç„¡ã„ C 構文ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
#: c-family/c.opt:292
msgid "Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 200x"
-msgstr ""
+msgstr "ISO C++ 1998 㨠ISO C++ 200x ã§æ„味ãŒç•°ãªã‚‹ C++ 構文ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
#: c-family/c.opt:296
msgid "Warn about casts which discard qualifiers"
@@ -8969,7 +8953,7 @@ msgstr "if ã¾ãŸã¯ else æ–‡ã®ä¸­èº«ãŒç©ºã®å ´åˆã«è­¦å‘Šã™ã‚‹"
#: c-family/c.opt:352
msgid "Warn about stray tokens after #elif and #endif"
-msgstr ""
+msgstr "#elif ãŠã‚ˆã³ #endif ã®å¾Œã«ã‚ã‚‹ã¯ãã‚ŒãŸãƒˆãƒ¼ã‚¯ãƒ³ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
#: c-family/c.opt:356
msgid "Warn about comparison of different enum types"
@@ -8984,9 +8968,8 @@ msgid "Warn if testing floating point numbers for equality"
msgstr "浮動å°æ•°ç‚¹æ•°ã®ç­‰ä¾¡æ¯”較ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
#: c-family/c.opt:372
-#, fuzzy
msgid "Warn about printf/scanf/strftime/strfmon format string anomalies"
-msgstr "printf/scanf/strftime/strfmon å½¢å¼ã®å¤‰å‰‡çš„ãªã‚‚ã®ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
+msgstr "printf/scanf/strftime/strfmon 書å¼æ–‡å­—列異常ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
#: c-family/c.opt:376
msgid "Warn if passing too many arguments to a function for its format string"
@@ -9005,9 +8988,8 @@ msgid "Warn about possible security problems with format functions"
msgstr "セキュリティå•é¡Œã«ãªã‚‹å¯èƒ½æ€§ãŒã‚る書å¼é–¢æ•°ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
#: c-family/c.opt:392
-#, fuzzy
msgid "Warn about strftime formats yielding 2-digit years"
-msgstr "strftime å½¢å¼ãŒäºŒæ¡ã§å¹´ã‚’表ã—ã¦ã„る時ã®è­¦å‘Šã—ãªã„"
+msgstr "strftime 書å¼ãŒ 2 æ¡ã®å¹´ã®å ´åˆã«è­¦å‘Šã™ã‚‹"
#: c-family/c.opt:396
msgid "Warn about zero-length formats"
@@ -9199,11 +9181,11 @@ msgstr "副作用完了点è¦å‰‡ã‚’ç ´ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹å ´åˆã«è­¦å‘Šã™ã‚‹
#: c-family/c.opt:590
msgid "Warn about signed-unsigned comparisons"
-msgstr "符åˆä»˜ã/符åˆç„¡ã—ã®æ¯”較ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
+msgstr "符å·ä»˜ã/符å·ç„¡ã—ã®æ¯”較ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
#: c-family/c.opt:594
msgid "Warn when overload promotes from unsigned to signed"
-msgstr "オーãƒãƒ¼ãƒ­ãƒ¼ãƒ‰ãŒç¬¦åˆç„¡ã—ã‹ã‚‰ç¬¦åˆä»˜ãã«æ ¼ä¸Šã’ã¨ãªã‚‹å ´åˆã«è­¦å‘Šã™ã‚‹"
+msgstr "オーãƒãƒ¼ãƒ­ãƒ¼ãƒ‰ãŒç¬¦å·ç„¡ã—ã‹ã‚‰ç¬¦å·ä»˜ãã«æ ¼ä¸Šã’ã¨ãªã‚‹å ´åˆã«è­¦å‘Šã™ã‚‹"
#: c-family/c.opt:598
msgid "Warn about uncasted NULL used as sentinel"
@@ -9278,9 +9260,8 @@ msgid "In C++, nonzero means warn about deprecated conversion from string litera
msgstr ""
#: c-family/c.opt:674
-#, fuzzy
msgid "Warn when a pointer differs in signedness in an assignment"
-msgstr "オーãƒãƒ¼ãƒ­ãƒ¼ãƒ‰ãŒç¬¦åˆç„¡ã—ã‹ã‚‰ç¬¦åˆä»˜ãã«æ ¼ä¸Šã’ã¨ãªã‚‹å ´åˆã«è­¦å‘Šã™ã‚‹"
+msgstr "オーãƒãƒ¼ãƒ­ãƒ¼ãƒ‰ãŒç¬¦å·ç„¡ã—ã‹ã‚‰ç¬¦å·ä»˜ãã«æ ¼ä¸Šã’ã¨ãªã‚‹å ´åˆã«è­¦å‘Šã™ã‚‹"
#: c-family/c.opt:678
msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)"
@@ -9417,7 +9398,7 @@ msgstr "フレンド関数を囲ã¾ã‚ŒãŸåå‰ç©ºé–“内ã«å…¥ã‚Œã‚‹"
#: c-family/c.opt:823
msgid "Don't emit dllexported inline functions unless needed"
-msgstr ""
+msgstr "å¿…è¦ãŒç„¡ã„é™ã‚Š dllexported インライン関数を発行ã—ãªã„"
#: c-family/c.opt:830
msgid "Allow implicit conversions between vectors with differing numbers of subparts and/or differing element types."
@@ -9509,7 +9490,7 @@ msgstr "自動テンプレート実体化を有効ã«ã™ã‚‹"
#: c-family/c.opt:942
msgid "Generate run time type descriptor information"
-msgstr ""
+msgstr "実行時型記述å­æƒ…報を生æˆã™ã‚‹"
#: c-family/c.opt:946
msgid "Use the same size for double as for float"
@@ -9665,7 +9646,6 @@ msgstr "ファイルをインクルードã™ã‚‹ã¨ãã«ãƒ•ã‚¡ã‚¤ãƒ«åã‚’å†ãƒž
#: c-family/c.opt:1140 c-family/c.opt:1144
#, fuzzy
-#| msgid "Conform to the ISO 1998 C++ standard with GNU extensions"
msgid "Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum"
msgstr "ISO 1998 C++ 標準㫠GNU 拡張付ãã§æº–æ‹ ã•ã›ã‚‹"
@@ -9898,19 +9878,16 @@ msgid "Warn about functions which might be candidates for __attribute__((pure))"
msgstr "関数㌠__attribute__((pure)) ã®å€™è£œã¨ãªã‚Šãã†ãªå ´åˆã«è­¦å‘Šã™ã‚‹"
#: common.opt:608
-#, fuzzy
msgid "Warn about enumerated switches, with no default, missing a case"
-msgstr "列挙定数㮠switch 㧠case 指定ãŒæ¬ ã‘ã¦ã„ã‚‹ã‚‚ã®ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
+msgstr "列挙定数を使用ã—㟠switch 文㧠default æ–‡ãŒç„¡ã„ã‹ç‰¹å®šã® case ãŒç„¡ã„å ´åˆã«è­¦å‘Šã™ã‚‹"
#: common.opt:612
-#, fuzzy
msgid "Warn about enumerated switches missing a \"default:\" statement"
-msgstr "列挙定数㮠switch 㧠case 指定ãŒæ¬ ã‘ã¦ã„ã‚‹ã‚‚ã®ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
+msgstr "列挙定数を使用ã—㟠switch 文㧠\"default:\" æ–‡ãŒç„¡ã„å ´åˆã«è­¦å‘Šã™ã‚‹"
#: common.opt:616
-#, fuzzy
msgid "Warn about all enumerated switches missing a specific case"
-msgstr "列挙定数㮠switch 㧠case 指定ãŒæ¬ ã‘ã¦ã„ã‚‹ã‚‚ã®ã«é–¢ã—ã¦è­¦å‘Šã™ã‚‹"
+msgstr "列挙定数を使用ã—㟠switch æ–‡ã§ç‰¹å®šã® case ãŒç„¡ã„å ´åˆã«è­¦å‘Šã™ã‚‹"
#: common.opt:620
msgid "Do not suppress warnings from system headers"
@@ -10009,9 +9986,8 @@ msgid "Generate auto-inc/dec instructions"
msgstr "自動増加/減少命令を生æˆã™ã‚‹"
#: common.opt:821
-#, fuzzy
msgid "Generate code to check bounds before indexing arrays"
-msgstr "é…列ã®æ·»å­—ã¨æ·»å­—境界を検査ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’生æˆã™ã‚‹"
+msgstr "é…列ã®æ·»ãˆå­—を使用ã™ã‚‹å‰ã«å¢ƒç•Œæ¤œæŸ»ã‚’è¡Œã†ã‚³ãƒ¼ãƒ‰ã‚’生æˆã™ã‚‹"
#: common.opt:825
#, fuzzy
@@ -10052,7 +10028,7 @@ msgstr ""
#: common.opt:864
msgid "Looks for opportunities to reduce stack adjustments and stack references."
-msgstr ""
+msgstr "スタック調整ãŠã‚ˆã³ã‚¹ã‚¿ãƒƒã‚¯å‚照を削減ã™ã‚‹æ©Ÿä¼šã‚’探ã™"
#: common.opt:868
msgid "Do not put uninitialized globals in the common section"
@@ -10067,18 +10043,16 @@ msgid "Run only the second compilation of -fcompare-debug"
msgstr ""
#: common.opt:884
-#, fuzzy
msgid "Perform comparison elimination after register allocation has finished"
-msgstr "グローãƒãƒ«å…±é€šéƒ¨åˆ†å¼ã‚’除去ã™ã‚‹"
+msgstr "レジスタã¯ä½ç½®ãŒå®Œäº†ã—ãŸå¾Œã«æ¯”較ã®é™¤åŽ»ã‚’è¡Œã†"
#: common.opt:888
msgid "Do not perform optimizations increasing noticeably stack usage"
-msgstr ""
+msgstr "スタック使用é‡ã‚’è‘—ã—ã増加ã•ã›ã‚‹æœ€é©åŒ–ã‚’è¡Œã‚ãªã„"
#: common.opt:892
-#, fuzzy
msgid "Perform a register copy-propagation optimization pass"
-msgstr "最é©åŒ–éŽç¨‹ã®ãƒ¬ã‚¸ã‚¹ã‚¿ã¤ã‘変ãˆã‚’è¡Œãªã†"
+msgstr ""
#: common.opt:896
msgid "Perform cross-jumping optimization"
@@ -10110,7 +10084,7 @@ msgstr "-fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...]\tデãƒãƒƒã‚°ã‚«ã‚¦ã
#: common.opt:928
msgid "Map one directory name to another in debug information"
-msgstr ""
+msgstr "デãƒãƒƒã‚°æƒ…報内ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ¼åã‚’ä»–ã®ã‚‚ã®ã«ãƒžãƒƒãƒ—ã™ã‚‹"
#: common.opt:934
msgid "Defer popping functions args from stack until later"
@@ -10125,10 +10099,8 @@ msgid "Delete useless null pointer checks"
msgstr "ç„¡æ„味㪠null ãƒã‚¤ãƒ³ã‚¿æ¤œæŸ»ã‚’削除ã™ã‚‹"
#: common.opt:946
-#, fuzzy
-#| msgid "Try to allow the linker to turn PIC calls into direct calls"
msgid "Try to convert virtual calls to direct ones."
-msgstr "リンカ㌠PIC 呼ã³å‡ºã—を直接呼ã³å‡ºã—ã«å¤‰æ›´ã™ã‚‹ã“ã¨ã‚’許å¯ã™ã‚‹ã‚ˆã†ã«è©¦ã¿ã‚‹"
+msgstr "仮想呼ã³å‡ºã—を直接呼ã³å‡ºã—ã«å¤‰æ›ã™ã‚‹ã“ã¨ã‚’試ã¿ã‚‹"
#: common.opt:950
#, fuzzy
@@ -10147,7 +10119,7 @@ msgstr "-fdump-<type>\t様々ãªã‚³ãƒ³ãƒ‘イラ内部情報をファイルã«ãƒ€
#: common.opt:978
msgid "-fdump-final-insns=filename\tDump to filename the insns at the end of translation"
-msgstr ""
+msgstr "-fdump-final-insns=filename\t翻訳終了時㫠filename ã¸å‘½ä»¤ã‚’ダンプã™ã‚‹"
#: common.opt:982
msgid "-fdump-go-spec=filename\tWrite all declarations to file as Go code"
@@ -10183,7 +10155,7 @@ msgstr ""
#: common.opt:1014 common.opt:1018
msgid "Perform unused type elimination in debug info"
-msgstr ""
+msgstr "デãƒãƒƒã‚°æƒ…報内ã§ä½¿ç”¨ã•ã‚Œã¦ã„ãªã„åž‹ã®é™¤åŽ»ã‚’è¡Œã†"
#: common.opt:1022
msgid "Do not suppress C++ class debug information."
@@ -10191,25 +10163,24 @@ msgstr "C++ クラスデãƒãƒƒã‚°æƒ…報を抑止ã—ãªã„。"
#: common.opt:1026
msgid "Generate debug information to support Identical Code Folding (ICF)"
-msgstr ""
+msgstr "Identical Code Folding (ICF) をサãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã®ãƒ‡ãƒãƒƒã‚°æƒ…報を生æˆã™ã‚‹"
#: common.opt:1030
msgid "Enable exception handling"
msgstr "例外処ç†ã‚’有効ã«ã™ã‚‹"
#: common.opt:1034
-#, fuzzy
msgid "Perform a number of minor, expensive optimizations"
-msgstr "目立ãŸãªã„ã€ã‚³ã‚¹ãƒˆã®ã‹ã‹ã‚‹æœ€é©åŒ–ã‚’è¡Œãªã†"
+msgstr "多ãã®ã€ç›®ç«‹ãŸãªã„ãŒã‚³ã‚¹ãƒˆãŒé«˜ã„最é©åŒ–ã‚’è¡Œã†"
#: common.opt:1038
msgid "-fexcess-precision=[fast|standard]\tSpecify handling of excess floating-point precision"
-msgstr ""
+msgstr "-fexcess-precision=[fast|standard]\t余分ãªæµ®å‹•å°æ•°ç‚¹ç²¾åº¦ã®å–り扱ã„を指定ã™ã‚‹"
#: common.opt:1041
#, c-format
msgid "unknown excess precision style %qs"
-msgstr ""
+msgstr "ä¸æ˜Žãªä½™åˆ†ãªç²¾åº¦ã‚¹ã‚¿ã‚¤ãƒ« %qs ã§ã™"
#: common.opt:1054
msgid "Assume no NaNs or infinities are generated"
@@ -10232,52 +10203,45 @@ msgid "-ffp-contract=[off|on|fast] Perform floating-point expression contraction
msgstr ""
#: common.opt:1077
-#, fuzzy, c-format
+#, c-format
msgid "unknown floating point contraction style %qs"
-msgstr "浮動å°æ•°ç‚¹å®šæ•°ã‚’ TOC 内ã«é…ç½®ã™ã‚‹"
+msgstr "ä¸æ˜Žãªæµ®å‹•å°æ•°çŸ­ç¸®å½¢ %qs ã§ã™"
#: common.opt:1094
msgid "Allow function addresses to be held in registers"
msgstr "関数アドレスをレジスタã«æŒãŸã›ã‚‹äº‹ã‚’許å¯ã™ã‚‹"
#: common.opt:1098
-#, fuzzy
msgid "Place each function into its own section"
-msgstr "å„々ã®é–¢æ•°ã‚’ãれ自身ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã«é…ç½®ã™ã‚‹"
+msgstr "ãã‚Œãžã‚Œã®é–¢æ•°ã‚’ãれ自身ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã«é…ç½®ã™ã‚‹"
#: common.opt:1102
-#, fuzzy
msgid "Perform global common subexpression elimination"
-msgstr "グローãƒãƒ«å…±é€šéƒ¨åˆ†å¼ã‚’除去ã™ã‚‹"
+msgstr "大域共通部分å¼ã®é™¤åŽ»ã‚’è¡Œã†"
#: common.opt:1106
-#, fuzzy
msgid "Perform enhanced load motion during global common subexpression elimination"
-msgstr "グローãƒãƒ«å…±é€šéƒ¨åˆ†å¼ã‚’除去ã™ã‚‹"
+msgstr ""
#: common.opt:1110
-#, fuzzy
msgid "Perform store motion after global common subexpression elimination"
-msgstr "グローãƒãƒ«å…±é€šéƒ¨åˆ†å¼ã‚’除去ã™ã‚‹"
+msgstr ""
#: common.opt:1114
msgid "Perform redundant load after store elimination in global common subexpression"
msgstr ""
#: common.opt:1119
-#, fuzzy
msgid "Perform global common subexpression elimination after register allocation"
-msgstr "グローãƒãƒ«å…±é€šéƒ¨åˆ†å¼ã‚’除去ã™ã‚‹"
+msgstr "レジスタé…置後ã«å¤§åŸŸå…±é€šéƒ¨åˆ†å¼ã®é™¤åŽ»ã‚’è¡Œã†"
#: common.opt:1125
-#, fuzzy
msgid "Enable in and out of Graphite representation"
-msgstr "自動テンプレート実体化を有効ã«ã™ã‚‹"
+msgstr ""
#: common.opt:1129
-#, fuzzy
msgid "Enable Graphite Identity transformation"
-msgstr "呼ã³å‡ºã—グラフ情報をé€å‡ºã™ã‚‹"
+msgstr ""
#: common.opt:1133
msgid "Mark all loops as parallel"
@@ -10316,9 +10280,8 @@ msgid "Perform conversion of conditional jumps to branchless equivalents"
msgstr ""
#: common.opt:1173
-#, fuzzy
msgid "Perform conversion of conditional jumps to conditional execution"
-msgstr "æ¡ä»¶çš„ãªå®Ÿè¡Œã¸ã®å¤‰æ›´ã®ãŸã‚ã®é–¾å€¤ã‚’変更ã™ã‚‹"
+msgstr ""
#: common.opt:1177
msgid "Convert conditional jumps in innermost loops to branchless equivalents"
@@ -10386,13 +10349,12 @@ msgid "Perform interprocedural points-to analysis"
msgstr ""
#: common.opt:1253
-#, fuzzy
msgid "Discover pure and const functions"
-msgstr "使ã‚ã‚Œãªã„仮想関数を切りæ¨ã¦ã‚‹"
+msgstr "純粋ãŠã‚ˆã³å®šæ•°é–¢æ•°ã‚’見ã¤ã‘ã‚‹"
#: common.opt:1257
msgid "Discover readonly and non addressable static variables"
-msgstr ""
+msgstr "読ã¿å–り専用ãŠã‚ˆã³ã‚¢ãƒ‰ãƒ¬ã‚¹ä»˜ã‘ã§ããªã„é™çš„変数を見ã¤ã‘ã‚‹"
#: common.opt:1261
msgid "Perform matrix layout flattening and transposing based"
@@ -10425,9 +10387,8 @@ msgid "Use IRA based register pressure calculation"
msgstr ""
#: common.opt:1305
-#, fuzzy
msgid "Share slots for saving different hard registers."
-msgstr "引数レジスタã«ãƒ­ãƒ¼ã‚«ãƒ«ã®ã‚‚ã®ã‚’æ ¼ç´ã™ã‚‹"
+msgstr ""
#: common.opt:1309
msgid "Share stack slots for spilled pseudo-registers."
@@ -10631,19 +10592,19 @@ msgstr "ループ内ã®é…列ã§ã€å¯èƒ½ã§ã‚ã‚Œã°ãƒ—リフェッãƒå‘½ä»¤ã‚’
#: common.opt:1521
msgid "Enable basic program profiling code"
-msgstr ""
+msgstr "基本プログラムプロファイリングコードを有効ã«ã™ã‚‹"
#: common.opt:1525
msgid "Insert arc-based program profiling code"
-msgstr ""
+msgstr "円弧ベースプログラムプロファイリングコードを挿入ã™ã‚‹"
#: common.opt:1529
msgid "Set the top-level directory for storing the profile data."
-msgstr ""
+msgstr "プロファイルデータä¿å­˜ç”¨ã®æœ€ä¸Šä½ãƒ‡ã‚£ãƒ¬ã‚¯ãƒªãƒ¼ã‚’設定ã™ã‚‹"
#: common.opt:1534
msgid "Enable correction of flow inconsistent profile data input"
-msgstr ""
+msgstr "フロー一貫性ãŒç„¡ã„データ入力ã®è¨‚正を有効ã«ã™ã‚‹"
#: common.opt:1538
msgid "Enable common options for generating profile info for profile feedback directed optimizations"
@@ -10663,7 +10624,7 @@ msgstr ""
#: common.opt:1554
msgid "Insert code to profile values of expressions"
-msgstr ""
+msgstr "å¼ã®å€¤ã‚’プロファイルã™ã‚‹ãŸã‚ã®ã‚³ãƒ¼ãƒ‰ã‚’挿入ã™ã‚‹"
#: common.opt:1561
msgid "-frandom-seed=<string>\tMake compile reproducible using <string>"
@@ -11357,13 +11318,11 @@ msgstr "引数ã¯è¤‡ç´ æ•°åž‹ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
#: go/gofrontend/expressions.cc:7578
#, fuzzy
-#| msgid "argument must have complex type"
msgid "complex arguments must have identical types"
msgstr "引数ã¯è¤‡ç´ æ•°åž‹ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
#: go/gofrontend/expressions.cc:7580
#, fuzzy
-#| msgid "argument must have complex type"
msgid "complex arguments must have floating-point type"
msgstr "引数ã¯è¤‡ç´ æ•°åž‹ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
@@ -11848,7 +11807,7 @@ msgstr "ラベル %q+D ãŒä½¿ç”¨ã•ã‚Œã¾ã—ãŸãŒã€å®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“
#: c-decl.c:1150
#, gcc-internal-format
msgid "nested function %q+D declared but never defined"
-msgstr ""
+msgstr "入れå­ã«ãªã£ãŸé–¢æ•° %q+D ãŒå®£è¨€ã•ã‚Œã¾ã—ãŸãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“"
#: c-decl.c:1162
#, gcc-internal-format
@@ -11905,7 +11864,7 @@ msgstr ""
#: c-decl.c:1613
#, gcc-internal-format
msgid "prototype for %q+D follows non-prototype definition"
-msgstr ""
+msgstr "éžãƒ—ロトタイプ定義ã«ç¶šã„㦠%q+D 用ã®ãƒ—ロトタイプãŒã‚ã‚Šã¾ã™"
#: c-decl.c:1628
#, gcc-internal-format
@@ -11981,10 +11940,9 @@ msgid "redefinition of typedef %q+D with different type"
msgstr "%q+D ãŒç•°ãªã‚‹åž‹ã§å†å®šç¾©ã•ã‚Œã¾ã—ãŸ"
#: c-decl.c:1818
-#, fuzzy, gcc-internal-format
-#| msgid "redefinition of typedef %q+D with different type"
+#, gcc-internal-format
msgid "redefinition of typedef %q+D with variably modified type"
-msgstr "%q+D ãŒç•°ãªã‚‹åž‹ã§å†å®šç¾©ã•ã‚Œã¾ã—ãŸ"
+msgstr ""
#: c-decl.c:1825
#, gcc-internal-format
@@ -12029,17 +11987,17 @@ msgstr "%q+D ã®éžã‚¹ãƒ¬ãƒƒãƒ‰å±€æ‰€å®£è¨€ã®å¾Œã«ã‚¹ãƒ¬ãƒƒãƒ‰å±€æ‰€å®£è¨€ãŒã
#: c-decl.c:2001
#, gcc-internal-format
msgid "extern declaration of %q+D follows declaration with no linkage"
-msgstr ""
+msgstr "リンク無ã—宣言ã®å¾Œã« %q+D ã® extern 宣言ãŒç¶šã„ã¦ã„ã¾ã™"
#: c-decl.c:2037
#, gcc-internal-format
msgid "declaration of %q+D with no linkage follows extern declaration"
-msgstr ""
+msgstr "extern 宣言ã®å¾Œã«ãƒªãƒ³ã‚¯ç„¡ã— %q+D ã®å®£è¨€ãŒç¶šã„ã¦ã„ã¾ã™"
#: c-decl.c:2043
#, gcc-internal-format
msgid "redeclaration of %q+D with no linkage"
-msgstr ""
+msgstr "リンク無㗠%q+D ã®å†å®šç¾©ã§ã™"
#: c-decl.c:2069
#, gcc-internal-format
@@ -12367,7 +12325,7 @@ msgstr "ISO C ã¯å‰æ–¹ä»®å¼•æ•°å®£è¨€ã‚’ç¦ã˜ã¾ã™"
#: c-decl.c:4614
#, gcc-internal-format
msgid "defining a type in a compound literal is invalid in C++"
-msgstr ""
+msgstr "複åˆãƒªãƒ†ãƒ©ãƒ«å†…ã§ã®åž‹å®šç¾©ã¯ C++ ã§ã¯ç„¡åŠ¹ã§ã™"
#: c-decl.c:4666 c-decl.c:4681
#, gcc-internal-format
@@ -13406,23 +13364,23 @@ msgstr "文字列リテラルãŒäºˆæœŸã•ã‚Œã¾ã™"
#: c-parser.c:1829
#, gcc-internal-format
msgid "expression in static assertion is not an integer"
-msgstr ""
+msgstr "é™çš„アサーション内ã®å¼ãŒæ•´æ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#: c-parser.c:1836
#, gcc-internal-format
msgid "expression in static assertion is not an integer constant expression"
-msgstr ""
+msgstr "é™çš„アサーション内ã®å¼ãŒæ•´æ•°å®šæ•°å¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#: c-parser.c:1841
#, gcc-internal-format
msgid "expression in static assertion is not constant"
-msgstr ""
+msgstr "é™çš„アサーション内ã®å¼ãŒå®šæ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#. Report the error.
#: c-parser.c:1846 cp/semantics.c:4719
#, gcc-internal-format
msgid "static assertion failed: %E"
-msgstr ""
+msgstr "é™çš„アサーションã«å¤±æ•—ã—ã¾ã—ãŸ: %E"
#: c-parser.c:2207 c-parser.c:3063 c-parser.c:3709 c-parser.c:3983
#: c-parser.c:5084 c-parser.c:5175 c-parser.c:5800 c-parser.c:6083
@@ -13713,13 +13671,11 @@ msgstr "ä¸æ˜Žãª property 属性ã§ã™"
#: c-parser.c:7964 cp/parser.c:23167
#, fuzzy, gcc-internal-format
-#| msgid "missing %<(%> after %<#pragma pack%> - ignored"
msgid "missing %<=%> (after %<getter%> attribute)"
msgstr "%<#pragma pack%> ã®å¾Œã« %<(%> ãŒã‚ã‚Šã¾ã›ã‚“ - 無視ã•ã‚Œã¾ã—ãŸ"
#: c-parser.c:7967 cp/parser.c:23170
#, fuzzy, gcc-internal-format
-#| msgid "missing %<(%> after %<#pragma pack%> - ignored"
msgid "missing %<=%> (after %<setter%> attribute)"
msgstr "%<#pragma pack%> ã®å¾Œã« %<(%> ãŒã‚ã‚Šã¾ã›ã‚“ - 無視ã•ã‚Œã¾ã—ãŸ"
@@ -14140,12 +14096,12 @@ msgstr "å˜é …感嘆符(!)ã¸ã®å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
#: c-typeck.c:3578
#, gcc-internal-format
msgid "increment of enumeration value is invalid in C++"
-msgstr "列挙値ã®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã¯ C++ ã§ã¯ç„¡åŠ¹ã§ã™"
+msgstr "列挙値ã®å¢—分㯠C++ ã§ã¯ç„¡åŠ¹ã§ã™"
#: c-typeck.c:3581
#, gcc-internal-format
msgid "decrement of enumeration value is invalid in C++"
-msgstr "列挙値ã®ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã¯ C++ ã§ã¯ç„¡åŠ¹ã§ã™"
+msgstr "列挙値ã®æ¸›åˆ†ã¯ C++ ã§ã¯ç„¡åŠ¹ã§ã™"
#: c-typeck.c:3594
#, gcc-internal-format
@@ -14155,22 +14111,22 @@ msgstr "ISO C ã¯è¤‡ç´ æ•°åž‹ã«é–¢ã™ã‚‹ %<++%> 㨠%<--%> をサãƒãƒ¼ãƒˆã—ã
#: c-typeck.c:3613 c-typeck.c:3645
#, gcc-internal-format
msgid "wrong type argument to increment"
-msgstr "インクリメントã™ã‚‹å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
+msgstr "増分ã™ã‚‹å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
#: c-typeck.c:3615 c-typeck.c:3648
#, gcc-internal-format
msgid "wrong type argument to decrement"
-msgstr "デクリメントã™ã‚‹å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
+msgstr "減分ã™ã‚‹å¼•æ•°ã®åž‹ãŒé–“é•ã£ã¦ã„ã¾ã™"
#: c-typeck.c:3635
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
-msgstr "ä¸æ˜Žãªæ§‹é€ ä½“ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "ä¸æ˜Žãªæ§‹é€ ä½“ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã®å¢—分ã§ã™"
#: c-typeck.c:3638
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
-msgstr "ä¸æ˜Žãªæ§‹é€ ä½“ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã®ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "ä¸æ˜Žãªæ§‹é€ ä½“ã¸ã®ãƒã‚¤ãƒ³ã‚¿ã®æ¸›åˆ†ã§ã™"
#: c-typeck.c:3722
#, gcc-internal-format
@@ -14185,12 +14141,12 @@ msgstr "読ã¿å–り専用ä½ç½® %qE ã¸ã®ä»£å…¥ã§ã™"
#: c-typeck.c:3895 c-family/c-common.c:8658
#, gcc-internal-format
msgid "increment of read-only location %qE"
-msgstr "読ã¿å–り専用ä½ç½® %qE ã®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "読ã¿å–り専用ä½ç½® %qE ã®å¢—分ã§ã™"
#: c-typeck.c:3898 c-family/c-common.c:8659
#, gcc-internal-format
msgid "decrement of read-only location %qE"
-msgstr "読ã¿å–り専用ä½ç½® %qE ã®ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "読ã¿å–り専用ä½ç½® %qE ã®æ¸›åˆ†ã§ã™"
#: c-typeck.c:3939
#, gcc-internal-format
@@ -15619,7 +15575,6 @@ msgstr "verify_cgraph_node ã«å¤±æ•—ã—ã¾ã—ãŸ"
#: cgraphunit.c:817
#, fuzzy, gcc-internal-format
-#| msgid "weakref attribute must appear before alias attribute"
msgid "%<weakref%> attribute should be accompanied with an %<alias%> attribute"
msgstr "å¼±ã„å‚照属性ã¯åˆ¥å属性よりå‰ã«å‡ºç¾ã—ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
@@ -15630,13 +15585,11 @@ msgstr "%<externally_visible%> 属性ã¯å…¬é–‹ã‚ªãƒ–ジェクトã«é–¢ã—ã¦ã®ã
#: cgraphunit.c:881
#, fuzzy, gcc-internal-format
-#| msgid "%qE attribute ignored because %qT is already defined"
msgid "%<weakref%> attribute ignored because function is defined"
msgstr "%qE 属性㯠%qT ãŒæ—¢ã«å®šç¾©ã•ã‚Œã¦ã„ã‚‹ãŸã‚無視ã•ã‚Œã¾ã™"
#: cgraphunit.c:919
#, fuzzy, gcc-internal-format
-#| msgid "%qE attribute ignored because %qT is already defined"
msgid "%<weakref%> attribute ignored because variable is initialized"
msgstr "%qE 属性㯠%qT ãŒæ—¢ã«å®šç¾©ã•ã‚Œã¦ã„ã‚‹ãŸã‚無視ã•ã‚Œã¾ã™"
@@ -17186,7 +17139,6 @@ msgstr "-iplugindir <dir> オプション㌠gcc ドライãƒã‹ã‚‰æ¸¡ã•ã‚Œã¾ã
#: profile.c:417
#, fuzzy, gcc-internal-format
-#| msgid "corrupted profile info: run_max * runs < sum_max"
msgid "corrupted profile info: edge count exceeds maximal count"
msgstr "ç ´æã—ãŸãƒ—ロファイル情報: run_max * runs < sum_max ã§ã™"
@@ -18908,7 +18860,6 @@ msgstr "一貫性ãŒãªã„値をæŒã¤ãƒ—ロファイルを修正ã—ã¦ã„ã¾ã™
#: value-prof.c:476
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "corrupted value profile: %s profiler overall count (%d) does not match BB count (%d)"
msgid "corrupted value profile: %s profile counter (%d out of %d) inconsistent with basic-block count (%d)"
msgstr "ç ´æã—ãŸå€¤ã®ãƒ—ロファイルã§ã™: %s プロファイルã®ç·åˆè¨ˆæ•° (%d) 㯠BB æ•° (%d) ã¨ä¸€è‡´ã—ã¾ã›ã‚“"
@@ -19207,7 +19158,7 @@ msgstr "%qT ã¸ã® %qT ã‹ã‚‰ã®å¤‰æ›ã¯ãã®å€¤ãŒå¤‰æ›´ã«ãªã‚‹ã‹ã‚‚ã—ã‚Œ
#: c-family/c-common.c:2120
#, gcc-internal-format
msgid "large integer implicitly truncated to unsigned type"
-msgstr "大ããªæ•´æ•°ãŒæš—é»™ã«ç¬¦åˆç„¡ã—åž‹ã«åˆ‡ã‚Šè©°ã‚られã¾ã—ãŸ"
+msgstr "大ããªæ•´æ•°ãŒæš—é»™ã«ç¬¦å·ç„¡ã—åž‹ã«åˆ‡ã‚Šè©°ã‚られã¾ã—ãŸ"
#: c-family/c-common.c:2126 c-family/c-common.c:2133 c-family/c-common.c:2141
#, gcc-internal-format
@@ -19267,12 +19218,12 @@ msgstr "データ型ã®ç¯„囲制é™ã«ã‚ˆã£ã¦ã€æ¯”較ãŒå¸¸ã« true ã¨ãªã‚Š
#: c-family/c-common.c:3597
#, gcc-internal-format
msgid "comparison of unsigned expression >= 0 is always true"
-msgstr "符åˆç„¡ã—ã®å¼ >= 0 ã¨ã„ã†æ¯”較ã¯å¸¸ã« true ã§ã™"
+msgstr "符å·ç„¡ã—ã®å¼ >= 0 ã¨ã„ã†æ¯”較ã¯å¸¸ã« true ã§ã™"
#: c-family/c-common.c:3607
#, gcc-internal-format
msgid "comparison of unsigned expression < 0 is always false"
-msgstr "符åˆç„¡ã—ã®å¼ < 0 ã¨ã„ã†æ¯”較ã¯å¸¸ã« false ã§ã™"
+msgstr "符å·ç„¡ã—ã®å¼ < 0 ã¨ã„ã†æ¯”較ã¯å¸¸ã« false ã§ã™"
#: c-family/c-common.c:3649
#, gcc-internal-format
@@ -19547,7 +19498,6 @@ msgstr "%q+D 用ã®æ•´åˆ—ã¯æœ€ä½Ž %d ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
#: c-family/c-common.c:6690
#, fuzzy, gcc-internal-format
-#| msgid "inline function %q+D cannot be declared weak"
msgid "inline function %q+D declared weak"
msgstr "インライン関数 %q+D ã‚’å¼±ã„ã¨ã—ã¦å®£è¨€ã§ãã¾ã›ã‚“"
@@ -19808,12 +19758,12 @@ msgstr "読ã¿å–り専用オブジェクト内ã®ãƒ¡ãƒ³ãƒ %qD ã¸ã®ä»£å…¥ã§ã
#: c-family/c-common.c:8611
#, gcc-internal-format
msgid "increment of member %qD in read-only object"
-msgstr "読ã¿å–り専用オブジェクト内ã®ãƒ¡ãƒ³ãƒ %qD ã®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "読ã¿å–り専用オブジェクト内ã®ãƒ¡ãƒ³ãƒ %qD ã®å¢—分ã§ã™"
#: c-family/c-common.c:8613
#, gcc-internal-format
msgid "decrement of member %qD in read-only object"
-msgstr "読ã¿å–り専用オブジェクト内ã®ãƒ¡ãƒ³ãƒ %qD ã®ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "読ã¿å–り専用オブジェクト内ã®ãƒ¡ãƒ³ãƒ %qD ã®æ¸›åˆ†ã§ã™"
#: c-family/c-common.c:8615
#, gcc-internal-format
@@ -19828,12 +19778,12 @@ msgstr "読ã¿å–り専用メンム%qD ã¸ã®ä»£å…¥ã§ã™"
#: c-family/c-common.c:8620
#, gcc-internal-format
msgid "increment of read-only member %qD"
-msgstr "読ã¿å–り専用メンム%qD ã®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "読ã¿å–り専用メンム%qD ã®å¢—分ã§ã™"
#: c-family/c-common.c:8621
#, gcc-internal-format
msgid "decrement of read-only member %qD"
-msgstr "読ã¿å–り専用メンム%qD ã®ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "読ã¿å–り専用メンム%qD ã®æ¸›åˆ†ã§ã™"
#: c-family/c-common.c:8622
#, gcc-internal-format
@@ -19848,12 +19798,12 @@ msgstr "読ã¿å–り専用変数 %qD ã¸ã®ä»£å…¥ã§ã™"
#: c-family/c-common.c:8627
#, gcc-internal-format
msgid "increment of read-only variable %qD"
-msgstr "読ã¿å–り専用変数 %qD ã®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "読ã¿å–り専用変数 %qD ã®å¢—分ã§ã™"
#: c-family/c-common.c:8628
#, gcc-internal-format
msgid "decrement of read-only variable %qD"
-msgstr "読ã¿å–り専用変数 %qD ã®ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "読ã¿å–り専用変数 %qD ã®æ¸›åˆ†ã§ã™"
#: c-family/c-common.c:8629
#, gcc-internal-format
@@ -19868,12 +19818,12 @@ msgstr "読ã¿å–り専用パラメータ %qD ã¸ã®ä»£å…¥ã§ã™"
#: c-family/c-common.c:8633
#, gcc-internal-format
msgid "increment of read-only parameter %qD"
-msgstr "読ã¿å–り専用パラメータ %qD ã®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "読ã¿å–り専用パラメータ %qD ã®å¢—分ã§ã™"
#: c-family/c-common.c:8634
#, gcc-internal-format
msgid "decrement of read-only parameter %qD"
-msgstr "読ã¿å–り専用パラメータ %qD ã®ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "読ã¿å–り専用パラメータ %qD ã®æ¸›åˆ†ã§ã™"
#: c-family/c-common.c:8635
#, gcc-internal-format
@@ -19888,12 +19838,12 @@ msgstr "読ã¿å–り専用åå‰ä»˜ã戻り値 %qD ã¸ã®ä»£å…¥ã§ã™"
#: c-family/c-common.c:8642
#, gcc-internal-format
msgid "increment of read-only named return value %qD"
-msgstr "読ã¿å–り専用åå‰ä»˜ã戻り値 %qD ã®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "読ã¿å–り専用åå‰ä»˜ã戻り値 %qD ã®å¢—分ã§ã™"
#: c-family/c-common.c:8644
#, gcc-internal-format
msgid "decrement of read-only named return value %qD"
-msgstr "読ã¿å–り専用åå‰ä»˜ã戻り値 %qD ã®ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "読ã¿å–り専用åå‰ä»˜ã戻り値 %qD ã®æ¸›åˆ†ã§ã™"
#: c-family/c-common.c:8646
#, gcc-internal-format
@@ -19908,12 +19858,12 @@ msgstr "関数 %qD ã¸ã®ä»£å…¥ã§ã™"
#: c-family/c-common.c:8652
#, gcc-internal-format
msgid "increment of function %qD"
-msgstr "関数 %qD ã®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "関数 %qD ã®å¢—分ã§ã™"
#: c-family/c-common.c:8653
#, gcc-internal-format
msgid "decrement of function %qD"
-msgstr "関数 %qD ã®ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã§ã™"
+msgstr "関数 %qD ã®æ¸›åˆ†ã§ã™"
#: c-family/c-common.c:8654
#, gcc-internal-format
@@ -19933,12 +19883,12 @@ msgstr "代入ã®å·¦å´ã®è¢«æ¼”ç®—å­ã¨ã—ã¦å·¦è¾ºå€¤ãŒå¿…è¦ã§ã™"
#: c-family/c-common.c:8677
#, gcc-internal-format
msgid "lvalue required as increment operand"
-msgstr "インクリメントã®è¢«æ¼”ç®—å­ã¨ã—ã¦å·¦è¾ºå€¤ãŒå¿…è¦ã§ã™"
+msgstr "増分ã®è¢«æ¼”ç®—å­ã¨ã—ã¦å·¦è¾ºå€¤ãŒå¿…è¦ã§ã™"
#: c-family/c-common.c:8680
#, gcc-internal-format
msgid "lvalue required as decrement operand"
-msgstr "デクリメントã®è¢«æ¼”ç®—å­ã¨ã—ã¦å·¦è¾ºå€¤ãŒå¿…è¦ã§ã™"
+msgstr "減分ã®è¢«æ¼”ç®—å­ã¨ã—ã¦å·¦è¾ºå€¤ãŒå¿…è¦ã§ã™"
#: c-family/c-common.c:8683
#, gcc-internal-format
@@ -20093,7 +20043,7 @@ msgstr "åž‹ %qT 㨠%qT ã®é–“ã§ã®æ¯”較ã§ã™"
#: c-family/c-common.c:9361
#, gcc-internal-format
msgid "comparison between signed and unsigned integer expressions"
-msgstr "符åˆä»˜ãã¨ç¬¦åˆç„¡ã—ã®æ•´æ•°å¼ã®é–“ã§ã®æ¯”較ã§ã™"
+msgstr "符å·ä»˜ãã¨ç¬¦å·ç„¡ã—ã®æ•´æ•°å¼ã®é–“ã§ã®æ¯”較ã§ã™"
#: c-family/c-common.c:9412
#, gcc-internal-format
@@ -20103,12 +20053,12 @@ msgstr ""
#: c-family/c-common.c:9415
#, gcc-internal-format
msgid "comparison of promoted ~unsigned with constant"
-msgstr "~ã§å転ã•ã‚ŒãŸæ ¼ä¸Šã’符åˆç„¡ã—åž‹ã¨å®šæ•°ã¨ã®æ¯”較ã§ã™"
+msgstr "~ã§å転ã•ã‚ŒãŸæ ¼ä¸Šã’符å·ç„¡ã—åž‹ã¨å®šæ•°ã¨ã®æ¯”較ã§ã™"
#: c-family/c-common.c:9425
#, gcc-internal-format
msgid "comparison of promoted ~unsigned with unsigned"
-msgstr "~ã§å転ã•ã‚ŒãŸç¬¦åˆç„¡ã—åž‹ã¨ç¬¦åˆç„¡ã—åž‹ã¨ã®æ¯”較ã§ã™"
+msgstr "~ã§å転ã•ã‚ŒãŸæ ¼ä¸Šã’符å·ç„¡ã—åž‹ã¨ç¬¦å·ç„¡ã—åž‹ã¨ã®æ¯”較ã§ã™"
#: c-family/c-format.c:127 c-family/c-format.c:314
#, gcc-internal-format
@@ -20371,7 +20321,7 @@ msgstr "被演算å­ç•ªå·ãŒä»£å…¥ã®æŠ‘制ã¨å…±ã«ä½¿ã‚ã‚Œã¦ã„ã¾ã™"
#: c-family/c-format.c:2206
#, gcc-internal-format
msgid "operand number specified for format taking no argument"
-msgstr "被演算å­ç•ªå·ãŒå¼•æ•°ã‚’å–らãªã„書å¼ã§æŒ‡å®šã•ã¦ã„ã¾ã™"
+msgstr "被演算å­ç•ªå·ãŒå¼•æ•°ã‚’å–らãªã„書å¼ã§æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
#: c-family/c-format.c:2291
#, gcc-internal-format
@@ -20577,12 +20527,12 @@ msgstr ""
#: c-family/c-omp.c:375 cp/semantics.c:4431
#, gcc-internal-format
msgid "missing increment expression"
-msgstr "インクリメントå¼ãŒã‚ã‚Šã¾ã›ã‚“"
+msgstr "増分å¼ãŒã‚ã‚Šã¾ã›ã‚“"
#: c-family/c-omp.c:444 cp/semantics.c:4287
#, gcc-internal-format
msgid "invalid increment expression"
-msgstr "無効ãªã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆå¼ã§ã™"
+msgstr "無効ãªå¢—分å¼ã§ã™"
#: c-family/c-opts.c:303
#, gcc-internal-format
@@ -20592,7 +20542,7 @@ msgstr "-I- ãŒäºŒå›žæŒ‡å®šã•ã‚Œã¾ã—ãŸ"
#: c-family/c-opts.c:306
#, gcc-internal-format
msgid "obsolete option -I- used, please use -iquote instead"
-msgstr "廃止ã‚ã‚ŒãŸã‚ªãƒ—ション -I- ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™ã€‚代ã‚ã‚Šã« -iquote を使用ã—ã¦ãã ã•ã„"
+msgstr "廃止ã•ã‚ŒãŸã‚ªãƒ—ション -I- ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™ã€‚代ã‚ã‚Šã« -iquote を使用ã—ã¦ãã ã•ã„"
#: c-family/c-opts.c:486
#, gcc-internal-format
@@ -21609,7 +21559,6 @@ msgstr "é™çš„変数 %q+D ㌠dllimport ã¨ãƒžãƒ¼ã‚¯ã•ã‚Œã¦ã„ã¾ã™"
#: config/avr/avr.c:252
#, fuzzy, gcc-internal-format
-#| msgid "unrecognized argument to --help= option: %q.*s"
msgid "unrecognized argument to -mmcu= option: %qs"
msgstr "--help= オプションã¸ã®èªè­˜ã§ããªã„引数ã§ã™: %q.*s"
@@ -22347,13 +22296,11 @@ msgstr "最後ã®å¼•æ•°ã¯ 2 ビットå³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
#: config/i386/i386.c:26380
#, fuzzy, gcc-internal-format
-#| msgid "the fifth argument must be a 8-bit immediate"
msgid "the fifth argument must be an 8-bit immediate"
msgstr "第五引数㯠8 ビットå³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
#: config/i386/i386.c:26475
#, fuzzy, gcc-internal-format
-#| msgid "the third argument must be a 8-bit immediate"
msgid "the third argument must be an 8-bit immediate"
msgstr "第三引数㯠8 ビットå³å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
@@ -24195,13 +24142,11 @@ msgstr ""
#: config/spu/spu.c:549
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "bad value (%s) for -mcmodel= switch"
msgid "bad value (%s) for -march= switch"
msgstr "-mcmodel= スイッãƒç”¨ã®èª¤ã£ãŸå€¤ %s ã§ã™"
#: config/spu/spu.c:560
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "bad value %qs for -mtune switch"
msgid "bad value (%s) for -mtune= switch"
msgstr "-mtune スイッãƒç”¨ã®é–“é•ã£ãŸå€¤ %qs ã§ã™"
@@ -24736,7 +24681,6 @@ msgstr ""
#: cp/call.c:5730 cp/cvt.c:1625
#, fuzzy, gcc-internal-format
-#| msgid "offset of %q+D is not ABI-compliant and may change in a future version of GCC"
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
msgstr "%q+D ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆã¯ ABI ã«é©åˆã—ã¦ã„ãªã„ãŸã‚å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® GCC ã§ã¯å¤‰æ›´ã«ãªã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
@@ -24878,7 +24822,6 @@ msgstr ""
#: cp/call.c:8070
#, fuzzy, gcc-internal-format
-#| msgid "could not convert %qE to %qT"
msgid "could not convert %qE from %qT to %qT"
msgstr "%qE ã‹ã‚‰ %qT ã¸å¤‰æ›ã§ãã¾ã›ã‚“"
@@ -26745,84 +26688,84 @@ msgid "conflicting specifiers in declaration of %qs"
msgstr "`%s' ã®å®£è¨€ãŒçŸ›ç›¾ã—ã¦ã„ã¾ã™"
#: cp/decl.c:8329 cp/decl.c:8332 cp/decl.c:8335
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
-msgstr "ISO C ã¯ãƒ¡ãƒ³ãƒã®ãªã„メンãƒå®£è¨€ã‚’ç¦ã˜ã¾ã™"
+msgstr "ISO C++ ã§ã¯åž‹ã®ç„¡ã„ %qs ã®å®£è¨€ã‚’ç¦æ­¢ã—ã¦ã„ã¾ã™"
#: cp/decl.c:8360 cp/decl.c:8382
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
-msgstr "short, 符åˆã¤ãã¾ãŸã¯ç¬¦åˆãªã—㯠`%s' ã«ã¨ã£ã¦ç„¡åŠ¹ã§ã™"
+msgstr "%<signed%> ã¾ãŸã¯ %<unsigned%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
#: cp/decl.c:8362
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
-msgstr "符åˆä»˜ãã¨ç¬¦åˆç„¡ã—㌠`%s' ã«å¯¾ã—ã¦ä¸€ç·’ã«ä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã™"
+msgstr "%<signed%> 㨠%<unsigned%> ㌠%qs ã«å¯¾ã—ã¦ä¸¡æ–¹æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
#: cp/decl.c:8364
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<long long%> invalid for %qs"
-msgstr "`%s' ã«å¯¾ã—㦠complex ã¯ä¸é©åˆ‡ã§ã™"
+msgstr "%<long long%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
#: cp/decl.c:8366
#, gcc-internal-format
msgid "%<__int128%> invalid for %qs"
-msgstr ""
+msgstr "%<__int128%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
#: cp/decl.c:8368
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<long%> invalid for %qs"
-msgstr "`%s' ã«å¯¾ã—㦠complex ã¯ä¸é©åˆ‡ã§ã™"
+msgstr "%<long%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
#: cp/decl.c:8370
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<short%> invalid for %qs"
-msgstr "`%s' ã«å¯¾ã—㦠complex ã¯ä¸é©åˆ‡ã§ã™"
+msgstr "%<short%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
#: cp/decl.c:8372
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
-msgstr "`%s' ã«å¯¾ã—㦠long, short, signed ã¾ãŸã¯ unsigned ã¯ä¸é©åˆ‡ã§ã™"
+msgstr "%<long%> ã¾ãŸã¯ %<short%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
#: cp/decl.c:8374
#, gcc-internal-format
msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs"
-msgstr ""
+msgstr "%<long%>ã€%<int%>ã€%<short%>ã€ã¾ãŸã¯ %<char%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
#: cp/decl.c:8376
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
-msgstr "`%s' ã«å¯¾ã—㦠char ã¨ã¨ã‚‚ã« long ã¾ãŸã¯ short ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
+msgstr "%<long%> ã¾ãŸã¯ %<short%> ㌠char ã¨å…±ã« %qs ã«å¯¾ã—ã¦æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
#: cp/decl.c:8378
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
-msgstr "long 㨠short ㌠`%s' ã«å¯¾ã—ã¦ä¸€ç·’ã«æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
+msgstr "%<long%> ãŠã‚ˆã³ %<short%> ㌠%qs ã«å¯¾ã—ã¦ä¸¡æ–¹æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
#: cp/decl.c:8384
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
-msgstr "short, 符åˆã¤ãã¾ãŸã¯ç¬¦åˆãªã—㯠`%s' ã«ã¨ã£ã¦ç„¡åŠ¹ã§ã™"
+msgstr "%<short%> ã¾ãŸã¯ %<long%> 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
#: cp/decl.c:8392
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
-msgstr "`%s' ã«å¯¾ã™ã‚‹ long, short, singed ã‚„ unsigned ã®ä½¿ç”¨ã¯ä¸é©åˆ‡ã§ã™"
+msgstr "long, short, signed ã¾ãŸã¯ unsigned ã®ä½¿ç”¨ã¯ %qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
#: cp/decl.c:8401
#, gcc-internal-format
msgid "%<__int128%> is not supported by this target"
-msgstr ""
+msgstr "ã“ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã§ã¯ %<__int128%> ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
#: cp/decl.c:8407
#, gcc-internal-format
msgid "ISO C++ does not support %<__int128%> for %qs"
-msgstr ""
+msgstr "ISO C++ 㯠%<__int128%> ã‚’ %qs ã«å¯¾ã—ã¦ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“"
#: cp/decl.c:8477
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "complex invalid for %qs"
-msgstr "`%s' ã«å¯¾ã—㦠complex ã¯ä¸é©åˆ‡ã§ã™"
+msgstr "complex 㯠%qs ã«å¯¾ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
#: cp/decl.c:8505
#, gcc-internal-format
@@ -26837,7 +26780,7 @@ msgstr "éžãƒ¡ãƒ³ãƒ `%s' ã‚’ `mutable' ã¨ã¯å®£è¨€ã§ãã¾ã›ã‚“"
#: cp/decl.c:8534
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
-msgstr ""
+msgstr "%<%T::%D%> ã¯æœ‰åŠ¹ãªå®£è¨€å­ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#: cp/decl.c:8543
#, gcc-internal-format
@@ -26852,32 +26795,32 @@ msgstr "仮引数 `%s' ã§æŒ‡å®šã•ã‚ŒãŸè¨˜æ†¶ã‚¯ãƒ©ã‚¹"
#: cp/decl.c:8554
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
-msgstr "仮引数宣言ã®ä¸­ã®è¨˜æ†¶ã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¯ç„¡åŠ¹ã§ã™"
+msgstr "仮引数宣言ã®ä¸­ã®è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹æŒ‡å®šã¯ç„¡åŠ¹ã§ã™"
#: cp/decl.c:8560
#, gcc-internal-format
msgid "a parameter cannot be declared %<constexpr%>"
-msgstr ""
+msgstr "仮引数㯠%<constexpr%> ã¨ã—ã¦å®£è¨€ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“"
#: cp/decl.c:8569
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<virtual%> outside class declaration"
-msgstr "クラス宣言ã®å¤–å´ã§ virtual 指定ã—ã¦ã„ã¾ã™"
+msgstr "%<virtual%> ãŒã‚¯ãƒ©ã‚¹å®£è¨€å¤–ã§ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
#: cp/decl.c:8587
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
-msgstr "`%s' ã®å®£è¨€ã«ãŠã„ã¦è¤‡æ•°ã®ä¿å­˜ã‚¯ãƒ©ã‚¹"
+msgstr "%qs ã®å®£è¨€å†…ã«è¤‡æ•°ã®è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹ãŒã‚ã‚Šã¾ã™"
#: cp/decl.c:8610
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "storage class specified for %qs"
-msgstr "%s ã«å¯¾ã™ã‚‹è¨˜æ†¶ã‚¯ãƒ©ã‚¹æŒ‡å®šå­ `%s'"
+msgstr "%qs ã«å¯¾ã—ã¦è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
#: cp/decl.c:8614
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "storage class specified for parameter %qs"
-msgstr "仮引数 `%s' ã§æŒ‡å®šã•ã‚ŒãŸè¨˜æ†¶ã‚¯ãƒ©ã‚¹"
+msgstr "仮引数 %qs ã«å¯¾ã—ã¦è¨˜æ†¶åŸŸã‚¯ãƒ©ã‚¹ã‚¿æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™"
#: cp/decl.c:8627
#, fuzzy, gcc-internal-format
@@ -29248,14 +29191,14 @@ msgid "%qE does not have class type"
msgstr ""
#: cp/parser.c:5612 cp/typeck.c:2326
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid use of %qD"
-msgstr "`restrict' ã®ç”¨æ³•ãŒä¸é©åˆ‡ã§ã™"
+msgstr "無効㪠%qD ã®ä½¿ç”¨ã§ã™"
#: cp/parser.c:5875
#, gcc-internal-format
msgid "non-scalar type"
-msgstr ""
+msgstr "éžã‚¹ã‚«ãƒ©ãƒ¼åž‹"
#: cp/parser.c:5964
#, fuzzy, gcc-internal-format
@@ -29330,12 +29273,12 @@ msgstr "仮引数 `%s' ã§æŒ‡å®šã•ã‚ŒãŸè¨˜æ†¶ã‚¯ãƒ©ã‚¹"
#: cp/parser.c:8218
#, gcc-internal-format
msgid "expected labeled-statement"
-msgstr ""
+msgstr "ラベル付ãæ–‡ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:8256
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "case label %qE not within a switch statement"
-msgstr "case ラベル㌠switch æ–‡ã®ä¸­ã«ã‚ã‚Šã¾ã›ã‚“"
+msgstr "case ラベル %qE ㌠switch æ–‡ã®ä¸­ã«ã‚ã‚Šã¾ã›ã‚“"
#: cp/parser.c:8331
#, gcc-internal-format
@@ -29401,14 +29344,14 @@ msgstr ""
#: cp/parser.c:9886
#, gcc-internal-format
msgid "%<friend%> used outside of class"
-msgstr ""
+msgstr "%<friend%> ãŒã‚¯ãƒ©ã‚¹ã®å¤–å´ã§ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
#. Complain about `auto' as a storage specifier, if
#. we're complaining about C++0x compatibility.
#: cp/parser.c:9945
#, gcc-internal-format
msgid "%<auto%> will change meaning in C++0x; please remove it"
-msgstr ""
+msgstr "%<auto%> 㯠C++0x ã§æ„味ãŒå¤‰æ›´ã«ãªã‚Šã¾ã™ã€‚削除ã—ã¦ãã ã•ã„"
#: cp/parser.c:9981
#, gcc-internal-format
@@ -29428,7 +29371,7 @@ msgstr ""
#: cp/parser.c:10182
#, gcc-internal-format
msgid "invalid linkage-specification"
-msgstr ""
+msgstr "無効ãªãƒªãƒ³ã‚¯æŒ‡å®šã§ã™"
#: cp/parser.c:10309
#, gcc-internal-format
@@ -29463,7 +29406,7 @@ msgstr ""
#: cp/parser.c:11103
#, gcc-internal-format
msgid "expected operator"
-msgstr ""
+msgstr "演算å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
#. Warn that we do not support `export'.
#: cp/parser.c:11140
@@ -29494,7 +29437,7 @@ msgstr ""
#: cp/parser.c:11671 cp/parser.c:20945
#, gcc-internal-format
msgid "expected %<<%>"
-msgstr ""
+msgstr "%<<%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:11678
#, gcc-internal-format
@@ -29515,13 +29458,13 @@ msgstr "マクロ引数リストã«ã‚ã‚Šå¾—ãªã„トークン"
#: cp/parser.c:11828 cp/parser.c:11943 cp/parser.c:12153
#, gcc-internal-format
msgid "expected template-name"
-msgstr ""
+msgstr "テンプレートåãŒäºˆæœŸã•ã‚Œã¾ã™"
#. Explain what went wrong.
#: cp/parser.c:11874
#, gcc-internal-format
msgid "non-template %qD used as template"
-msgstr ""
+msgstr "éžãƒ†ãƒ³ãƒ—レート %qD ãŒãƒ†ãƒ³ãƒ—レートã¨ã—ã¦ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™"
#: cp/parser.c:11876
#, gcc-internal-format
@@ -29536,7 +29479,7 @@ msgstr ""
#: cp/parser.c:12118 cp/parser.c:12136 cp/parser.c:12277
#, gcc-internal-format
msgid "expected template-argument"
-msgstr ""
+msgstr "テンプレート引数ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:12260
#, gcc-internal-format
@@ -29561,7 +29504,7 @@ msgstr ""
#: cp/parser.c:12654
#, gcc-internal-format
msgid "expected type specifier"
-msgstr ""
+msgstr "型指定ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:12871
#, gcc-internal-format
@@ -29571,7 +29514,7 @@ msgstr ""
#: cp/parser.c:12898
#, gcc-internal-format
msgid "expected type-name"
-msgstr ""
+msgstr "åž‹åãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:13085
#, gcc-internal-format
@@ -29579,9 +29522,9 @@ msgid "elaborated-type-specifier for a scoped enum must not use the %<%D%> keywo
msgstr ""
#: cp/parser.c:13269
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "declaration %qD does not declare anything"
-msgstr "宣言ãŒä½•ã‚‚宣言ã—ã¦ã„ã¾ã›ã‚“"
+msgstr "宣言 %qD ãŒä½•ã‚‚宣言ã—ã¦ã„ã¾ã›ã‚“"
#: cp/parser.c:13355
#, fuzzy, gcc-internal-format
@@ -29611,7 +29554,7 @@ msgstr ""
#: cp/parser.c:13559
#, gcc-internal-format
msgid "expected %<;%> or %<{%>"
-msgstr ""
+msgstr "%<;%> ã¾ãŸã¯ %<{%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:13606
#, gcc-internal-format
@@ -29629,9 +29572,9 @@ msgid "declaration of %qD in %qD which does not enclose %qD"
msgstr ""
#: cp/parser.c:13643
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "multiple definition of %q#T"
-msgstr "`%s' ãŒå†å®šç¾©ã•ã‚Œã¾ã—ãŸ"
+msgstr "%q#T ãŒè¤‡æ•°å®šç¾©ã•ã‚Œã¦ã„ã¾ã™"
#: cp/parser.c:13669
#, gcc-internal-format
@@ -29644,19 +29587,19 @@ msgid "opaque-enum-specifier must use a simple identifier"
msgstr ""
#: cp/parser.c:13847
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD is not a namespace-name"
-msgstr "\"%s\" ã¯æ­£å¸¸ãªãƒ•ã‚¡ã‚¤ãƒ«åã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+msgstr "%qD ã¯åå‰ç©ºé–“åã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#: cp/parser.c:13848
#, gcc-internal-format
msgid "expected namespace-name"
-msgstr ""
+msgstr "åå‰ç©ºé–“åãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:13973
#, gcc-internal-format
msgid "%<namespace%> definition is not allowed here"
-msgstr ""
+msgstr "ã“ã“ã§ã¯ %<namespace%> 定義ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
#: cp/parser.c:14114
#, gcc-internal-format
@@ -29666,7 +29609,7 @@ msgstr ""
#: cp/parser.c:14536
#, gcc-internal-format
msgid "a function-definition is not allowed here"
-msgstr ""
+msgstr "ã“ã“ã§ã¯é–¢æ•°å®šç¾©ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
#: cp/parser.c:14548
#, fuzzy, gcc-internal-format
@@ -29736,32 +29679,32 @@ msgstr ""
#: cp/parser.c:15323
#, gcc-internal-format
msgid "invalid declarator"
-msgstr ""
+msgstr "無効ãªå®£è¨€å­ã§ã™"
#: cp/parser.c:15389
#, gcc-internal-format
msgid "expected declarator"
-msgstr ""
+msgstr "宣言å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:15484
#, gcc-internal-format
msgid "%qD is a namespace"
-msgstr ""
+msgstr "%qD ã¯åå‰ç©ºé–“ã§ã™"
#: cp/parser.c:15500
#, gcc-internal-format
msgid "expected ptr-operator"
-msgstr ""
+msgstr "ãƒã‚¤ãƒ³ã‚¿æ¼”ç®—å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:15559
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "duplicate cv-qualifier"
-msgstr "é‡è¤‡ã—㟠case ã®å€¤"
+msgstr ""
#: cp/parser.c:15681 cp/typeck2.c:427
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid use of %<auto%>"
-msgstr "`restrict' ã®ç”¨æ³•ãŒä¸é©åˆ‡ã§ã™"
+msgstr "無効㪠%<auto%> ã®ä½¿ç”¨ã§ã™"
#: cp/parser.c:15700
#, fuzzy, gcc-internal-format
@@ -29771,12 +29714,12 @@ msgstr "\"%s\" ã¯ãƒžã‚¯ãƒ­ä»®å¼•æ•°ãƒªã‚¹ãƒˆã«ç¾ã‚Œã¦ã¯ãªã‚Šã¾ã›ã‚“"
#: cp/parser.c:15781
#, gcc-internal-format
msgid "expected type-specifier"
-msgstr ""
+msgstr "型指定å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:16025
#, gcc-internal-format
msgid "expected %<,%> or %<...%>"
-msgstr ""
+msgstr "%<,%> ã¾ãŸã¯ %<...%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:16082
#, fuzzy, gcc-internal-format
@@ -29784,9 +29727,9 @@ msgid "types may not be defined in parameter types"
msgstr "\"%s\" ã¯ãƒžã‚¯ãƒ­ä»®å¼•æ•°ãƒªã‚¹ãƒˆã«ç¾ã‚Œã¦ã¯ãªã‚Šã¾ã›ã‚“"
#: cp/parser.c:16306
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "file ends in default argument"
-msgstr "無効ãªãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ†ãƒ³ãƒ—レート引数"
+msgstr "デフォルト引数内ã§ãƒ•ã‚¡ã‚¤ãƒ«ãŒçµ‚了ã—ã¦ã„ã¾ã™"
#: cp/parser.c:16352
#, gcc-internal-format
@@ -29809,24 +29752,24 @@ msgid "expected class-name"
msgstr ""
#: cp/parser.c:17063
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<;%> after class definition"
-msgstr "èªè­˜ã§ããªã„ wide sub 命令ã§ã™"
+msgstr "クラス定義ã®å¾Œã«ã¯ %<;%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:17065
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<;%> after struct definition"
-msgstr "èªè­˜ã§ããªã„ wide sub 命令ã§ã™"
+msgstr "構造体定義ã®å¾Œã«ã¯ %<;%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:17067
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "expected %<;%> after union definition"
-msgstr "`%s' ã® extern 宣言ãŒãƒã‚¹ãƒˆã—ã¦ã„ã¾ã™"
+msgstr "共用体定義ã®å¾Œã«ã¯ %<;%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:17351
#, gcc-internal-format
msgid "expected %<{%> or %<:%>"
-msgstr ""
+msgstr "%<{%> ã¾ãŸã¯ %<:%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:17363
#, gcc-internal-format
@@ -29839,9 +29782,9 @@ msgid "qualified name does not name a class"
msgstr ""
#: cp/parser.c:17382
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid class name in declaration of %qD"
-msgstr "`%s' ã®å®£è¨€ã«ãŠã„ã¦è¤‡æ•°ã®ä¿å­˜ã‚¯ãƒ©ã‚¹"
+msgstr "%qD ã®å®£è¨€å†…ã«ç„¡åŠ¹ãªã‚¯ãƒ©ã‚¹åã§ã™"
#: cp/parser.c:17415
#, gcc-internal-format
@@ -29856,7 +29799,7 @@ msgstr ""
#: cp/parser.c:17457
#, gcc-internal-format
msgid "function template %qD redeclared as a class template"
-msgstr ""
+msgstr "関数テンプレート %qD ãŒã‚¯ãƒ©ã‚¹ãƒ†ãƒ³ãƒ—レートã¨ã—ã¦å†å®šç¾©ã•ã‚Œã¾ã—ãŸ"
#: cp/parser.c:17488
#, gcc-internal-format
@@ -29864,9 +29807,9 @@ msgid "could not resolve typename type"
msgstr ""
#: cp/parser.c:17540
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "previous definition of %q+#T"
-msgstr "å‰æ–¹ã§ã® `%s' ã®å®£è¨€"
+msgstr "%q+#T ã®å‰ã®å®šç¾©"
#: cp/parser.c:17604 cp/parser.c:20990
#, gcc-internal-format
@@ -29879,9 +29822,9 @@ msgid "a class-key must be used when declaring a friend"
msgstr ""
#: cp/parser.c:17832
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "friend declaration does not name a class or function"
-msgstr "friend 宣言ãŒã‚¯ãƒ©ã‚¹å®šç¾©ã®ä¸­ã«ã‚ã‚Šã¾ã›ã‚“"
+msgstr ""
#: cp/parser.c:18016
#, gcc-internal-format
@@ -29891,7 +29834,7 @@ msgstr ""
#: cp/parser.c:18064
#, gcc-internal-format
msgid "expected %<;%> at end of member declaration"
-msgstr ""
+msgstr "メンãƒå®£è¨€ã®æœ€å¾Œã«ã¯ %<;%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:18130
#, gcc-internal-format
@@ -30010,137 +29953,137 @@ msgstr "テンプレート型統一中 `%s' ãŒä½¿ç”¨ã•ã‚Œã¾ã—ãŸ"
#: cp/parser.c:20750
#, gcc-internal-format
msgid "%<__thread%> before %qD"
-msgstr ""
+msgstr "%<__thread%> ㌠%qD ã®å‰ã«ã‚ã‚Šã¾ã™"
#: cp/parser.c:20854
#, gcc-internal-format
msgid "expected %<new%>"
-msgstr ""
+msgstr "%<new%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20857
#, gcc-internal-format
msgid "expected %<delete%>"
-msgstr ""
+msgstr "%<delete%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20860
#, gcc-internal-format
msgid "expected %<return%>"
-msgstr ""
+msgstr "%<return%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20866
#, gcc-internal-format
msgid "expected %<extern%>"
-msgstr ""
+msgstr "%<extern%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20869
#, gcc-internal-format
msgid "expected %<static_assert%>"
-msgstr ""
+msgstr "%<static_assert%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20872
#, gcc-internal-format
msgid "expected %<decltype%>"
-msgstr ""
+msgstr "%<decltype%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20875
#, gcc-internal-format
msgid "expected %<operator%>"
-msgstr ""
+msgstr "%<operator%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20878
#, gcc-internal-format
msgid "expected %<class%>"
-msgstr ""
+msgstr "%<class%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20881
#, gcc-internal-format
msgid "expected %<template%>"
-msgstr ""
+msgstr "%<template%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20884
#, gcc-internal-format
msgid "expected %<namespace%>"
-msgstr ""
+msgstr "%<namespace%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20887
#, gcc-internal-format
msgid "expected %<using%>"
-msgstr ""
+msgstr "%<using%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20890
#, gcc-internal-format
msgid "expected %<asm%>"
-msgstr ""
+msgstr "%<asm%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20893
#, gcc-internal-format
msgid "expected %<try%>"
-msgstr ""
+msgstr "%<try%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20896
#, gcc-internal-format
msgid "expected %<catch%>"
-msgstr ""
+msgstr "%<catch%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20899
#, gcc-internal-format
msgid "expected %<throw%>"
-msgstr ""
+msgstr "%<throw%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20902
#, gcc-internal-format
msgid "expected %<__label__%>"
-msgstr ""
+msgstr "%<__label__%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20905
#, gcc-internal-format
msgid "expected %<@try%>"
-msgstr ""
+msgstr "%<@try%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20908
#, gcc-internal-format
msgid "expected %<@synchronized%>"
-msgstr ""
+msgstr "%<@synchronized%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20911
#, gcc-internal-format
msgid "expected %<@throw%>"
-msgstr ""
+msgstr "%<@throw%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20936
#, gcc-internal-format
msgid "expected %<[%>"
-msgstr ""
+msgstr "%<[%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20942
#, gcc-internal-format
msgid "expected %<::%>"
-msgstr ""
+msgstr "%<::%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20954
#, gcc-internal-format
msgid "expected %<...%>"
-msgstr ""
+msgstr "%<...%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20957
#, gcc-internal-format
msgid "expected %<*%>"
-msgstr ""
+msgstr "%<*%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20960
#, gcc-internal-format
msgid "expected %<~%>"
-msgstr ""
+msgstr "%<~%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20966
#, gcc-internal-format
msgid "expected %<:%> or %<::%>"
-msgstr ""
+msgstr "%<:%> ã¾ãŸã¯ %<::%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:20994
#, gcc-internal-format
msgid "expected %<class%>, %<typename%>, or %<template%>"
-msgstr ""
+msgstr "%<class%>ã€%<typename%>ã€ã¾ãŸã¯ %<template%> ãŒäºˆæœŸã•ã‚Œã¾ã™"
#: cp/parser.c:21225
#, gcc-internal-format
@@ -30320,14 +30263,14 @@ msgid "specialization of %qD after instantiation"
msgstr ""
#: cp/pt.c:1728
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%s %+#D"
-msgstr "%s: %s"
+msgstr "%s %+#D"
#: cp/pt.c:1811
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD is not a function template"
-msgstr "キャストã«ã‚ˆã‚‹é–¢æ•°ã®åž‹ãŒé©åˆã—ã¾ã›ã‚“"
+msgstr "%qD ã¯é–¢æ•°ãƒ†ãƒ³ãƒ—レートã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#: cp/pt.c:2020
#, gcc-internal-format
@@ -30362,16 +30305,14 @@ msgid "definition provided for explicit instantiation"
msgstr ""
#: cp/pt.c:2295
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "too many template parameter lists in declaration of %qD"
-msgstr "%s: 警告: `%s' ã®å®£è¨€ã§ã®ä»®å¼•æ•°ãƒªã‚¹ãƒˆãŒå¤šã™ãŽã¾ã™\n"
+msgstr "%qD ã®å®£è¨€å†…ã§ãƒ†ãƒ³ãƒ—レート仮引数リストãŒå¤šã™ãŽã¾ã™"
#: cp/pt.c:2298
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "too few template parameter lists in declaration of %qD"
-msgstr ""
-"\n"
-"%s: 警告: `%s' ã®å®£è¨€ã§ã®ä»®å¼•æ•°ãƒªã‚¹ãƒˆãŒå°‘ãªã™ãŽã¾ã™\n"
+msgstr "%qD ã®å®£è¨€å†…ã§ãƒ†ãƒ³ãƒ—レート仮引数リストãŒå°‘ãªã™ãŽã¾ã™"
#: cp/pt.c:2300
#, gcc-internal-format
@@ -30389,14 +30330,14 @@ msgid "default argument specified in explicit specialization"
msgstr ""
#: cp/pt.c:2381
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD is not a template function"
-msgstr "`%s' ã¯é€šå¸¸ã€éž static ãªé–¢æ•°ã§ã™"
+msgstr "%qD ã¯ãƒ†ãƒ³ãƒ—レート関数ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#: cp/pt.c:2389
#, gcc-internal-format
msgid "%qD is not declared in %qD"
-msgstr ""
+msgstr "%qD 㯠%qD 内ã§ã¯å®£è¨€ã•ã‚Œã¦ã„ã¾ã›ã‚“"
#. From [temp.expl.spec]:
#.
@@ -30412,9 +30353,9 @@ msgid "specialization of implicitly-declared special member function"
msgstr ""
#: cp/pt.c:2495
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "no member function %qD declared in %qT"
-msgstr "ãƒã‚¹ãƒˆã—ãŸé–¢æ•° `%s' 㯠`extern' ã«å®£è¨€ã•ã‚Œã¾ã—ãŸ"
+msgstr "メンãƒé–¢æ•° %qD 㯠%qT 内ã§ã¯å®£è¨€ã•ã‚Œã¦ã„ã¾ã›ã‚“"
#: cp/pt.c:3114
#, gcc-internal-format
@@ -30439,17 +30380,17 @@ msgstr ""
#: cp/pt.c:3233 cp/pt.c:4253
#, gcc-internal-format
msgid " %qD"
-msgstr ""
+msgstr " %qD"
#: cp/pt.c:3235
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid " <anonymous>"
-msgstr "<ç„¡å %s>"
+msgstr " <ç„¡å>"
#: cp/pt.c:3352
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "declaration of %q+#D"
-msgstr "`%s' ãŒå†å®£è¨€ã•ã‚Œã¾ã—ãŸ"
+msgstr "%q+#D ã®å®£è¨€ã§ã™"
#: cp/pt.c:3353
#, gcc-internal-format
@@ -30494,19 +30435,19 @@ msgid "partial specialization of %qT after instantiation of %qT"
msgstr ""
#: cp/pt.c:4503
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "no default argument for %qD"
-msgstr "フォーマットã¸ã®å¼•æ•°ãŒå°‘ãªã™ãŽã¾ã™"
+msgstr "%qD 用ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå¼•æ•°ãŒã‚ã‚Šã¾ã›ã‚“"
#: cp/pt.c:4524
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "parameter pack %qE must be at the end of the template parameter list"
-msgstr "仮引数リストã‹ã‚‰ã®ä»®å¼•æ•°åを欠ã„ã¦ã„ã¾ã™"
+msgstr ""
#: cp/pt.c:4527
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "parameter pack %qT must be at the end of the template parameter list"
-msgstr "仮引数リストã‹ã‚‰ã®ä»®å¼•æ•°åを欠ã„ã¦ã„ã¾ã™"
+msgstr ""
#: cp/pt.c:4564
#, gcc-internal-format
@@ -30536,7 +30477,7 @@ msgstr "クロスコンパイル時ã®å®Ÿæ•°å€¤ãƒ†ãƒ³ãƒ—レート仮引数"
#: cp/pt.c:4720
#, gcc-internal-format
msgid "template class without a name"
-msgstr ""
+msgstr "åå‰ç„¡ã—テンプレートクラスã§ã™"
#. [temp.mem]
#.
@@ -30544,7 +30485,7 @@ msgstr ""
#: cp/pt.c:4730
#, gcc-internal-format
msgid "destructor %qD declared as member template"
-msgstr ""
+msgstr "デストラクタ %qD ãŒãƒ¡ãƒ³ãƒãƒ†ãƒ³ãƒ—レートã¨ã—ã¦å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
#. [basic.stc.dynamic.allocation]
#.
@@ -30552,14 +30493,14 @@ msgstr ""
#. template. ... Template allocation functions shall
#. have two or more parameters.
#: cp/pt.c:4745
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid template declaration of %qD"
-msgstr "`%s' ã® extern 宣言ãŒãƒã‚¹ãƒˆã—ã¦ã„ã¾ã™"
+msgstr "%qD ã®ç„¡åŠ¹ãªãƒ†ãƒ³ãƒ—レート宣言ã§ã™"
#: cp/pt.c:4862
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "template definition of non-template %q#D"
-msgstr "インスタンスメソッド `%s' ã®å®šç¾©ãŒé‡è¤‡ã—ã¦ã„ã¾ã™ã€‚"
+msgstr "éžãƒ†ãƒ³ãƒ—レート %q#D ã®ãƒ†ãƒ³ãƒ—レート定義ã§ã™"
#: cp/pt.c:4905
#, gcc-internal-format
@@ -30592,14 +30533,14 @@ msgid "use template<> for an explicit specialization"
msgstr ""
#: cp/pt.c:5043
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qT is not a template type"
-msgstr "`%s' ã¯ä¸å®Œå…¨åž‹ã§ã™"
+msgstr "%qT ã¯ãƒ†ãƒ³ãƒ—レート型ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#: cp/pt.c:5056
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
-msgstr "friend 関数宣言内ã®è¨˜æ†¶ã‚¯ãƒ©ã‚¹æŒ‡å®šå­ã¯ç„¡åŠ¹ã§ã™"
+msgstr ""
#: cp/pt.c:5067
#, gcc-internal-format, gfc-internal-format
@@ -30616,14 +30557,14 @@ msgstr[0] "`%s' ã®å®£è¨€ã¯ä»®å¼•æ•°ã‚’覆ã„éš ã—ã¾ã™"
msgstr[1] "`%s' ã®å®£è¨€ã¯ä»®å¼•æ•°ã‚’覆ã„éš ã—ã¾ã™"
#: cp/pt.c:5108
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "template parameter %q+#D"
-msgstr "マクロ仮引数 \"%s\" ãŒé‡è¤‡ã—ã¦ã„ã¾ã™"
+msgstr "テンプレート仮引数 %q+#D ã§ã™"
#: cp/pt.c:5109
#, gcc-internal-format
msgid "redeclared here as %q#D"
-msgstr ""
+msgstr "ã“ã“㧠%q#D ã¨ã—ã¦å†å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
#. We have in [temp.param]:
#.
@@ -30632,12 +30573,12 @@ msgstr ""
#: cp/pt.c:5119
#, gcc-internal-format
msgid "redefinition of default argument for %q#D"
-msgstr ""
+msgstr "%q#D 用ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå¼•æ•°ã®å†å®šç¾©ã§ã™"
#: cp/pt.c:5121
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "original definition appeared here"
-msgstr "関数ã®å®šç¾©ãŒ `typedef' ã¨å®£è¨€ã•ã‚Œã¾ã—ãŸ"
+msgstr "å…ƒã®å®šç¾©ã¯ã“ã“ã«å‡ºç¾ã—ã¦ã„ã¾ã™"
#: cp/pt.c:5209
#, gcc-internal-format
@@ -30645,9 +30586,9 @@ msgid "%qE is not a valid template argument for type %qT because function %qD ha
msgstr ""
#: cp/pt.c:5231 cp/pt.c:5571
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
-msgstr "`%s' ã®å¼•æ•°ã¨ã—ã¦ç„¡åŠ¹ãªåž‹"
+msgstr ""
#: cp/pt.c:5233
#, gcc-internal-format
@@ -31579,24 +31520,23 @@ msgstr ""
#: cp/semantics.c:6838
#, fuzzy, gcc-internal-format
-#| msgid "%qE is not initialized"
msgid "%qD used in its own initializer"
msgstr "%qE ã¯åˆæœŸåŒ–ã•ã‚Œã¦ã„ã¾ã›ã‚“"
#: cp/semantics.c:6843
#, gcc-internal-format
msgid "%q#D is not const"
-msgstr ""
+msgstr "%q#D 㯠const ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#: cp/semantics.c:6846
#, gcc-internal-format
msgid "%q#D is volatile"
-msgstr ""
+msgstr "%q#D 㯠volatile ã§ã™"
#: cp/semantics.c:6849
#, gcc-internal-format
msgid "%qD was not initialized with a constant expression"
-msgstr ""
+msgstr "%qD ã¯å®šæ•°å¼ã§åˆæœŸåŒ–ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ"
#: cp/semantics.c:6858
#, gcc-internal-format
@@ -31660,7 +31600,6 @@ msgstr ""
#: cp/semantics.c:7621
#, fuzzy, gcc-internal-format
-#| msgid "enumerator value for %qE is not an integer constant expression"
msgid "use of the value of the object being constructed in a constant expression"
msgstr "%qE ã®åˆ—挙値ãŒæ•´æ•°å®šæ•°å¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
@@ -31681,13 +31620,11 @@ msgstr ""
#: cp/semantics.c:7792
#, fuzzy, gcc-internal-format
-#| msgid "initializer element is not a constant expression"
msgid "division by zero is not a constant-expression"
msgstr "åˆæœŸåŒ–å­ã®è¦ç´ ãŒå®šæ•°å¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
#: cp/semantics.c:7897
#, fuzzy, gcc-internal-format
-#| msgid "nonconstant array index in initializer"
msgid "non-constant array initialization"
msgstr "åˆæœŸåŒ–å­å†…ã«éžå®šæ•°ã®é…列インデックスãŒã‚ã‚Šã¾ã™"
@@ -38664,7 +38601,6 @@ msgstr ""
#: fortran/resolve.c:2737
#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "pointers are not permitted as case values"
msgid "Coindexed argument not permitted in '%s' call at %L"
msgstr "case ã®å€¤ã¨ã—ã¦ãƒã‚¤ãƒ³ã‚¿ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
@@ -42286,7 +42222,6 @@ msgstr "インスタンス変数 `%s' 㯠%s ã¨å®£è¨€ã•ã‚Œã¦ã„ã¾ã™"
#: objc/objc-act.c:6025
#, fuzzy, gcc-internal-format
-#| msgid "invalid use of flexible array member"
msgid "instance variable %qs uses flexible array member"
msgstr "å¯å¤‰é…列メンãƒã®ç„¡åŠ¹ãªä½¿ç”¨æ³•ã§ã™"
diff --git a/gcc-4.6/gcc/po/sv.po b/gcc-4.6/gcc/po/sv.po
index 0a61b6081..1e9443049 100644
--- a/gcc-4.6/gcc/po/sv.po
+++ b/gcc-4.6/gcc/po/sv.po
@@ -8,10 +8,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: gcc 4.6.0\n"
+"Project-Id-Version: gcc 4.6.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
"POT-Creation-Date: 2011-06-21 10:27+0000\n"
-"PO-Revision-Date: 2011-04-13 22:28+0200\n"
+"PO-Revision-Date: 2011-07-15 17:29+0200\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@@ -2114,7 +2114,7 @@ msgstr "Det maximala antalet instruktioner redo att matas ut för att övervägas u
#: params.def:704
msgid "Maximum number of active local stores in RTL dead store elimination"
-msgstr ""
+msgstr "Maximalt antal aktiva lokala lagringar i RTL vid eliminering av döda lagringar"
#: params.def:714
msgid "The number of insns executed before prefetch is completed"
@@ -4975,7 +4975,7 @@ msgstr "Inbyggd för inbyggda om inte är med i den valda standarden"
#: fortran/lang.opt:243
msgid "Warn about real-literal-constants with 'q' exponent-letter"
-msgstr ""
+msgstr "Varna för reella literala konstanter med exponentbokstav \"q\""
#: fortran/lang.opt:251
msgid "Warn about \"suspicious\" constructs"
@@ -9330,10 +9330,8 @@ msgid "-fconst-string-class=<name>\tUse class <name> for constant strings"
msgstr "-fconst-string-class=<namn>\tAnvänd klassen <namn> för konstanta strängar"
#: c-family/c.opt:724
-#, fuzzy
-#| msgid "-ftemplate-depth=<number>\tSpecify maximum template instantiation depth"
msgid "-fconstexpr-depth=<number>\tSpecify maximum constexpr recursion depth"
-msgstr "-ftemplate-depth=<antal>\tAnge maximalt instansieringsdjup för mallar"
+msgstr "-fconstexpr-depth=<antal>\tAnge maximalt rekursionsdjup för konstantuttryck"
#: c-family/c.opt:728
msgid "-fno-deduce-init-list\tdisable deduction of std::initializer_list for a template type parameter from a brace-enclosed initializer-list"
@@ -9662,10 +9660,8 @@ msgid "Remap file names when including files"
msgstr "Översätt filnamn när filer inkluderas"
#: c-family/c.opt:1140 c-family/c.opt:1144
-#, fuzzy
-#| msgid "Conform to the ISO 1998 C++ standard with GNU extensions"
msgid "Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum"
-msgstr "Följ standarden ISO 1998 C++ med GNU-utökningar"
+msgstr "Följ standarden ISO 1998 C++ reviderad av 2003 års tekniska rättelser"
#: c-family/c.opt:1148
msgid "Conform to the ISO 1998 C++ standard, with extensions that are likely to"
@@ -21614,7 +21610,7 @@ msgstr "bara initierade variabler kan placeras i programminnesområdet"
#: config/avr/avr.c:5065
#, gcc-internal-format
msgid "variable %q+D must be const in order to be put into read-only section by means of %<__attribute__((progmem))%>"
-msgstr ""
+msgstr "variabeln %q+D måste vara const för att kunna läggas i en endast läsbar sektion med hjälp av %<__attribute__((progmem))%>"
#: config/avr/avr.c:5106
#, gcc-internal-format
@@ -22305,14 +22301,12 @@ msgid "the last argument must be a 2-bit immediate"
msgstr "det sista argumentet måste vara en 2-bitars omedelbar"
#: config/i386/i386.c:26380
-#, fuzzy, gcc-internal-format
-#| msgid "the fifth argument must be a 8-bit immediate"
+#, gcc-internal-format
msgid "the fifth argument must be an 8-bit immediate"
msgstr "det femte argumentet måste vara en 8-bitars omedelbar"
#: config/i386/i386.c:26475
-#, fuzzy, gcc-internal-format
-#| msgid "the third argument must be a 8-bit immediate"
+#, gcc-internal-format
msgid "the third argument must be an 8-bit immediate"
msgstr "det tredje argumentet måste vara en 8-bitars omedelbar"
@@ -24698,10 +24692,9 @@ msgid "cannot bind rvalue %qE to %qT"
msgstr "det går inte att binda rvalue %qE till %qT"
#: cp/call.c:5730 cp/cvt.c:1625
-#, fuzzy, gcc-internal-format
-#| msgid "class %qT will be considered nearly empty in a future version of GCC"
+#, gcc-internal-format
msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
-msgstr "klass %qT kommer betraktas som nästan tom i en framtida version av GCC"
+msgstr "enum %qT med räckvidd kommer inte befordras till en heltalstyp i en framtida version av GCC"
#: cp/call.c:5760
#, gcc-internal-format
@@ -24840,10 +24833,9 @@ msgid "ISO C++ says that these are ambiguous, even though the worst conversion f
msgstr "ISO C++ säger att dessa är tvetydiga, trots att den sämsta konverteringen för den första är bättre än den sämsta konverteringen för den andra:"
#: cp/call.c:8070
-#, fuzzy, gcc-internal-format
-#| msgid "could not convert %qE to %qT"
+#, gcc-internal-format
msgid "could not convert %qE from %qT to %qT"
-msgstr "kunde inte konvertera %qE till %qT"
+msgstr "kunde inte konvertera %qE från %qT till %qT"
#: cp/call.c:8313
#, gcc-internal-format
@@ -25102,10 +25094,9 @@ msgid "initializer specified for non-virtual method %q+D"
msgstr "initierare angiven för icke-virtuell metod %q+D"
#: cp/class.c:4563 cp/semantics.c:5455
-#, fuzzy, gcc-internal-format
-#| msgid "enclosing class of %q+D is not a literal type"
+#, gcc-internal-format
msgid "enclosing class of %q+#D is not a literal type"
-msgstr "omslutande klass till %q+D är inte en literal typ"
+msgstr "omslutande klass till %q+#D är inte en literal typ"
#: cp/class.c:4670
#, gcc-internal-format
@@ -27050,10 +27041,9 @@ msgid "reference %qs cannot be declared %<mutable%>"
msgstr "referensen %qs kan inte deklareras %<mutable%>"
#: cp/decl.c:9308
-#, fuzzy, gcc-internal-format
-#| msgid "parameter declared %<auto%>"
+#, gcc-internal-format
msgid "typedef declared %<auto%>"
-msgstr "parametern deklarerad %<auto%>"
+msgstr "typedef deklarerad %<auto%>"
#: cp/decl.c:9318
#, gcc-internal-format
@@ -28558,10 +28548,9 @@ msgid "%qD cannot be declared as constexpr"
msgstr "%qD får inte deklareras som constexpr"
#: cp/method.c:1599
-#, fuzzy, gcc-internal-format
-#| msgid "%qD cannot be defaulted"
+#, gcc-internal-format
msgid "a template cannot be defaulted"
-msgstr "%qD kan inte ha standardvärde"
+msgstr "en mall kan inte ha standardvärde"
#: cp/method.c:1627
#, gcc-internal-format
@@ -29102,10 +29091,9 @@ msgid "need %<typename%> before %<%T::%E%> because %qT is a dependent scope"
msgstr "%<typename%> behövs före %<%T::%E%> för att %qT är en beroende räckvidd"
#: cp/parser.c:2791
-#, fuzzy, gcc-internal-format
-#| msgid "%qE in class %qT does not name a type"
+#, gcc-internal-format
msgid "%qE in %q#T does not name a type"
-msgstr "%qE i klassen %qT är inte namnet på en typ"
+msgstr "%qE i %q#T är inte namnet på en typ"
#: cp/parser.c:3340
#, gcc-internal-format
@@ -31469,16 +31457,14 @@ msgid "the type %qT of constexpr variable %qD is not literal"
msgstr "typen %qT för constexpr-variabeln %qD är inte en literal"
#: cp/semantics.c:5434
-#, fuzzy, gcc-internal-format
-#| msgid "invalid type for parameter %q#D of constexpr function"
+#, gcc-internal-format
msgid "invalid type for parameter %d of constexpr function %q+#D"
-msgstr "ogiltig typ för parameter %q#D till constexpr-funktion"
+msgstr "ogiltig typ för parameter %d till constexpr-funktion %q+#D"
#: cp/semantics.c:5445
-#, fuzzy, gcc-internal-format
-#| msgid "invalid return type %qT of constexpr function %qD"
+#, gcc-internal-format
msgid "invalid return type %qT of constexpr function %q+D"
-msgstr "ogiltig returtyp %qT för constexpr-funktionen %qD"
+msgstr "ogiltig returtyp %qT för constexpr-funktionen %q+D"
#: cp/semantics.c:5610
#, gcc-internal-format
@@ -31511,10 +31497,9 @@ msgid "call has circular dependency"
msgstr "anrop har cirkulärt beroende"
#: cp/semantics.c:6111
-#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
+#, gcc-internal-format, gfc-internal-format
msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
-msgstr "mallinstansieringsdjupet överskrider maxvärdet på %d (använd -ftemplate-depth= för att öka maxvärdet) vid instansiering av %qD"
+msgstr "beräkning av constexpr överskrider maxvärdet på %d (använd -fconstexpr-depth= för att öka maxvärdet)"
#: cp/semantics.c:6189
#, gcc-internal-format
@@ -31627,10 +31612,9 @@ msgid "address-of an object %qE with thread local or automatic storage is not a
msgstr "adress-av på ett objekt %qE med trådlokal eller automatisk lagring är inte ett konstant uttryck"
#: cp/semantics.c:7621
-#, fuzzy, gcc-internal-format
-#| msgid "the value of %qD is not usable in a constant expression"
+#, gcc-internal-format
msgid "use of the value of the object being constructed in a constant expression"
-msgstr "värdet på %qD är inte användbart i ett konstant uttryck"
+msgstr "användning av värdet på objektet som konstrueras i ett konstant uttryck"
#: cp/semantics.c:7670
#, gcc-internal-format
@@ -34506,10 +34490,9 @@ msgid "MODULE PROCEDURE at %C must be in a generic module interface"
msgstr "MODULE PROCEDURE vid %C måste vara i ett generiskt modulgränssnitt"
#: fortran/decl.c:7042
-#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: PROCEDURE statement at %C"
+#, gcc-internal-format, gfc-internal-format
msgid "Fortran 2008: double colon in MODULE PROCEDURE statement at %L"
-msgstr "Fortran 2003: PROCEDURE-sats vid %C"
+msgstr "Fortran 2008: dubbelkolon i MODULE PROCEDURE-sats vid %L"
#: fortran/decl.c:7076
#, gcc-internal-format, gfc-internal-format
@@ -35427,10 +35410,9 @@ msgid "In %s at %L procedures must be either all SUBROUTINEs or all FUNCTIONs"
msgstr "I %s vid %L måste procedurerna antingen alla vara SUBROUTINE eller alla vara FUNCTION"
#: fortran/interface.c:1133
-#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: Conversion from %s to %s at %L"
+#, gcc-internal-format, gfc-internal-format
msgid "Extension: Internal procedure '%s' in %s at %L"
-msgstr "Utökning: Konvertering från %s till %s vid %L"
+msgstr "Utökning: Intern procedur \"%s\" i %s vid %L"
#: fortran/interface.c:1188 fortran/interface.c:1192
#, gcc-internal-format, gfc-internal-format
@@ -37932,10 +37914,9 @@ msgid "Fortran 2003: BOZ used outside a DATA statement at %C"
msgstr "Fortran 2003: BOZ använd utanför en DATA-sats vid %C"
#: fortran/primary.c:547 fortran/primary.c:551
-#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: Hollerith constant at %C"
+#, gcc-internal-format, gfc-internal-format
msgid "Extension: exponent-letter 'q' in real-literal-constant at %C"
-msgstr "Utökning: Hollerithkonstant vid %C"
+msgstr "Utökning: exponentbokstav \"q\" i reeel literal konstant vid %C"
#: fortran/primary.c:567
#, gcc-internal-format, gfc-internal-format
@@ -37948,16 +37929,14 @@ msgid "Real number at %C has a 'd' exponent and an explicit kind"
msgstr "Reellt tal vid %C har en \"d\"-exponent och en explicit sort"
#: fortran/primary.c:633
-#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Real number at %C has a 'd' exponent and an explicit kind"
+#, gcc-internal-format, gfc-internal-format
msgid "Real number at %C has a 'q' exponent and an explicit kind"
-msgstr "Reellt tal vid %C har en \"d\"-exponent och en explicit sort"
+msgstr "Reellt tal vid %C har en \"q\"-exponent och en explicit sort"
#: fortran/primary.c:647
-#, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Invalid initializer %s in Data statement at %C"
+#, gcc-internal-format, gfc-internal-format
msgid "Invalid exponent-letter 'q' in real-literal-constant at %C"
-msgstr "Ogiltig initierare %s på DATA-sats vid %C"
+msgstr "Ogiltig exponentbokstav \"q\" i reell literal konstant vid %C"
#: fortran/primary.c:660
#, gcc-internal-format, gfc-internal-format
@@ -42574,12 +42553,3 @@ msgstr "%<-fobjc-sjlj-exceptions%> ignoreras för %<-fnext-runtime%> när %<-fobj-
#, gcc-internal-format
msgid "creating selector for nonexistent method %qE"
msgstr "skapar selektor för icke existerande metod %qE"
-
-#~ msgid "Conform to the ISO 1998 C++ standard"
-#~ msgstr "Följ standarden ISO 1998 C++"
-
-#~ msgid "parameter packs must be at the end of the parameter list"
-#~ msgstr "parameterpaket måste vara vid slutet av parameterlistan"
-
-#~ msgid "enclosing class of %q#D is not a literal type"
-#~ msgstr "omslutande klass till %q#D är inte en literal typ"
diff --git a/gcc-4.6/gcc/postreload.c b/gcc-4.6/gcc/postreload.c
index a42341023..c4d5ef041 100644
--- a/gcc-4.6/gcc/postreload.c
+++ b/gcc-4.6/gcc/postreload.c
@@ -1310,7 +1310,8 @@ reload_combine (void)
is and then later disable any optimization that would cross it. */
if (LABEL_P (insn))
last_label_ruid = reload_combine_ruid;
- else if (BARRIER_P (insn))
+ else if (BARRIER_P (insn)
+ || (INSN_P (insn) && volatile_insn_p (PATTERN (insn))))
for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
if (! fixed_regs[r])
reg_state[r].use_index = RELOAD_COMBINE_MAX_USES;
diff --git a/gcc-4.6/gcc/predict.c b/gcc-4.6/gcc/predict.c
index 467c8939a..8efab46a3 100644
--- a/gcc-4.6/gcc/predict.c
+++ b/gcc-4.6/gcc/predict.c
@@ -131,13 +131,13 @@ maybe_hot_frequency_p (int freq)
return true;
}
-/* Return TRUE if frequency FREQ is considered to be hot. */
+/* Return TRUE if frequency COUNT is considered to be hot. */
-static inline bool
+bool
maybe_hot_count_p (gcov_type count)
{
- if (profile_status != PROFILE_READ)
- return true;
+ if (!profile_info)
+ return false;
/* Code executed at most once is not hot. */
if (profile_info->runs >= count)
return false;
@@ -929,6 +929,337 @@ combine_predictions_for_bb (basic_block bb)
}
}
+/* Check if T1 and T2 satisfy the IV_COMPARE condition.
+ Return the SSA_NAME if the condition satisfies, NULL otherwise.
+
+ T1 and T2 should be one of the following cases:
+ 1. T1 is SSA_NAME, T2 is NULL
+ 2. T1 is SSA_NAME, T2 is INTEGER_CST between [-4, 4]
+ 3. T2 is SSA_NAME, T1 is INTEGER_CST between [-4, 4] */
+
+static tree
+strips_small_constant (tree t1, tree t2)
+{
+ tree ret = NULL;
+ int value = 0;
+
+ if (!t1)
+ return NULL;
+ else if (TREE_CODE (t1) == SSA_NAME)
+ ret = t1;
+ else if (TREE_CODE (t1) == INTEGER_CST && host_integerp (t1, 0))
+ value = tree_low_cst (t1, 0);
+ else
+ return NULL;
+
+ if (!t2)
+ return ret;
+ else if (TREE_CODE (t2) == INTEGER_CST && host_integerp (t2, 0))
+ value = tree_low_cst (t2, 0);
+ else if (TREE_CODE (t2) == SSA_NAME)
+ {
+ if (ret)
+ return NULL;
+ else
+ ret = t2;
+ }
+
+ if (value <= 4 && value >= -4)
+ return ret;
+ else
+ return NULL;
+}
+
+/* Return the SSA_NAME in T or T's operands.
+ Return NULL if SSA_NAME cannot be found. */
+
+static tree
+get_base_value (tree t)
+{
+ if (TREE_CODE (t) == SSA_NAME)
+ return t;
+
+ if (!BINARY_CLASS_P (t))
+ return NULL;
+
+ switch (TREE_OPERAND_LENGTH (t))
+ {
+ case 1:
+ return strips_small_constant (TREE_OPERAND (t, 0), NULL);
+ case 2:
+ return strips_small_constant (TREE_OPERAND (t, 0),
+ TREE_OPERAND (t, 1));
+ default:
+ return NULL;
+ }
+}
+
+/* Check the compare STMT in LOOP. If it compares an induction
+ variable to a loop invariant, return true, and save
+ LOOP_INVARIANT, COMPARE_CODE and LOOP_STEP.
+ Otherwise return false and set LOOP_INVAIANT to NULL. */
+
+static bool
+is_comparison_with_loop_invariant_p (gimple stmt, struct loop *loop,
+ tree *loop_invariant,
+ enum tree_code *compare_code,
+ int *loop_step,
+ tree *loop_iv_base)
+{
+ tree op0, op1, bound, base;
+ affine_iv iv0, iv1;
+ enum tree_code code;
+ int step;
+
+ code = gimple_cond_code (stmt);
+ *loop_invariant = NULL;
+
+ switch (code)
+ {
+ case GT_EXPR:
+ case GE_EXPR:
+ case NE_EXPR:
+ case LT_EXPR:
+ case LE_EXPR:
+ case EQ_EXPR:
+ break;
+
+ default:
+ return false;
+ }
+
+ op0 = gimple_cond_lhs (stmt);
+ op1 = gimple_cond_rhs (stmt);
+
+ if ((TREE_CODE (op0) != SSA_NAME && TREE_CODE (op0) != INTEGER_CST)
+ || (TREE_CODE (op1) != SSA_NAME && TREE_CODE (op1) != INTEGER_CST))
+ return false;
+ if (!simple_iv (loop, loop_containing_stmt (stmt), op0, &iv0, true))
+ return false;
+ if (!simple_iv (loop, loop_containing_stmt (stmt), op1, &iv1, true))
+ return false;
+ if (TREE_CODE (iv0.step) != INTEGER_CST
+ || TREE_CODE (iv1.step) != INTEGER_CST)
+ return false;
+ if ((integer_zerop (iv0.step) && integer_zerop (iv1.step))
+ || (!integer_zerop (iv0.step) && !integer_zerop (iv1.step)))
+ return false;
+
+ if (integer_zerop (iv0.step))
+ {
+ if (code != NE_EXPR && code != EQ_EXPR)
+ code = invert_tree_comparison (code, false);
+ bound = iv0.base;
+ base = iv1.base;
+ if (host_integerp (iv1.step, 0))
+ step = tree_low_cst (iv1.step, 0);
+ else
+ return false;
+ }
+ else
+ {
+ bound = iv1.base;
+ base = iv0.base;
+ if (host_integerp (iv0.step, 0))
+ step = tree_low_cst (iv0.step, 0);
+ else
+ return false;
+ }
+
+ if (TREE_CODE (bound) != INTEGER_CST)
+ bound = get_base_value (bound);
+ if (!bound)
+ return false;
+
+ *loop_invariant = bound;
+ *compare_code = code;
+ *loop_step = step;
+ *loop_iv_base = base;
+ return true;
+}
+
+/* Compare two SSA_NAMEs: returns TRUE if T1 and T2 are value coherent. */
+
+static bool
+expr_coherent_p (tree t1, tree t2)
+{
+ gimple stmt;
+ tree ssa_name_1 = NULL;
+ tree ssa_name_2 = NULL;
+
+ gcc_assert (TREE_CODE (t1) == SSA_NAME || TREE_CODE (t1) == INTEGER_CST);
+ gcc_assert (TREE_CODE (t2) == SSA_NAME || TREE_CODE (t2) == INTEGER_CST);
+
+ if (t1 == t2)
+ return true;
+
+ if (TREE_CODE (t1) == INTEGER_CST && TREE_CODE (t2) == INTEGER_CST)
+ return true;
+ if (TREE_CODE (t1) == INTEGER_CST || TREE_CODE (t2) == INTEGER_CST)
+ return false;
+
+ /* Check to see if t1 is expressed/defined with t2. */
+ stmt = SSA_NAME_DEF_STMT (t1);
+ gcc_assert (stmt != NULL);
+ if (is_gimple_assign (stmt))
+ {
+ ssa_name_1 = SINGLE_SSA_TREE_OPERAND (stmt, SSA_OP_USE);
+ if (ssa_name_1 && ssa_name_1 == t2)
+ return true;
+ }
+
+ /* Check to see if t2 is expressed/defined with t1. */
+ stmt = SSA_NAME_DEF_STMT (t2);
+ gcc_assert (stmt != NULL);
+ if (is_gimple_assign (stmt))
+ {
+ ssa_name_2 = SINGLE_SSA_TREE_OPERAND (stmt, SSA_OP_USE);
+ if (ssa_name_2 && ssa_name_2 == t1)
+ return true;
+ }
+
+ /* Compare if t1 and t2's def_stmts are identical. */
+ if (ssa_name_2 != NULL && ssa_name_1 == ssa_name_2)
+ return true;
+ else
+ return false;
+}
+
+/* Predict branch probability of BB when BB contains a branch that compares
+ an induction variable with LOOP_IV_BASE_VAR in LOOP to LOOP_BOUND_VAR. The
+ loop exit is compared using LOOP_BOUND_CODE, with step of LOOP_BOUND_STEP.
+
+ E.g.
+ for (int i = 0; i < bound; i++) {
+ if (i < bound - 2)
+ computation_1();
+ else
+ computation_2();
+ }
+
+ In this loop, we will predict the branch inside the loop to be taken. */
+
+static void
+predict_iv_comparison (struct loop *loop, basic_block bb,
+ tree loop_bound_var,
+ tree loop_iv_base_var,
+ enum tree_code loop_bound_code,
+ int loop_bound_step)
+{
+ gimple stmt;
+ tree compare_var, compare_base;
+ enum tree_code compare_code;
+ int compare_step;
+ edge then_edge;
+ edge_iterator ei;
+
+ if (predicted_by_p (bb, PRED_LOOP_ITERATIONS_GUESSED)
+ || predicted_by_p (bb, PRED_LOOP_ITERATIONS)
+ || predicted_by_p (bb, PRED_LOOP_EXIT))
+ return;
+
+ stmt = last_stmt (bb);
+ if (!stmt || gimple_code (stmt) != GIMPLE_COND)
+ return;
+ if (!is_comparison_with_loop_invariant_p (stmt, loop, &compare_var,
+ &compare_code,
+ &compare_step,
+ &compare_base))
+ return;
+
+ /* Find the taken edge. */
+ FOR_EACH_EDGE (then_edge, ei, bb->succs)
+ if (then_edge->flags & EDGE_TRUE_VALUE)
+ break;
+
+ /* When comparing an IV to a loop invariant, NE is more likely to be
+ taken while EQ is more likely to be not-taken. */
+ if (compare_code == NE_EXPR)
+ {
+ predict_edge_def (then_edge, PRED_LOOP_IV_COMPARE, TAKEN);
+ return;
+ }
+ else if (compare_code == EQ_EXPR)
+ {
+ predict_edge_def (then_edge, PRED_LOOP_IV_COMPARE, NOT_TAKEN);
+ return;
+ }
+
+ if (!expr_coherent_p (loop_bound_var, compare_var)
+ || loop_iv_base_var != compare_base)
+ return;
+
+ /* If loop bound, base and compare bound are all constents, we can
+ calculate the probability directly. */
+ if (TREE_CODE (loop_bound_var) == INTEGER_CST
+ && TREE_CODE (compare_var) == INTEGER_CST
+ && TREE_CODE (compare_base) == INTEGER_CST
+ && host_integerp (loop_bound_var, 0)
+ && host_integerp (compare_var, 0)
+ && host_integerp (compare_base, 0))
+ {
+ int probability;
+ HOST_WIDE_INT compare_count;
+ HOST_WIDE_INT loop_bound = tree_low_cst (loop_bound_var, 0);
+ HOST_WIDE_INT compare_bound = tree_low_cst (compare_var, 0);
+ HOST_WIDE_INT base = tree_low_cst (compare_base, 0);
+ HOST_WIDE_INT loop_count = (loop_bound - base) / compare_step;
+
+ if ((compare_step > 0)
+ ^ (compare_code == LT_EXPR || compare_code == LE_EXPR))
+ compare_count = (loop_bound - compare_bound) / compare_step;
+ else
+ compare_count = (compare_bound - base) / compare_step;
+
+ if (compare_code == LE_EXPR || compare_code == GE_EXPR)
+ compare_count ++;
+ if (loop_bound_code == LE_EXPR || loop_bound_code == GE_EXPR)
+ loop_count ++;
+ if (compare_count < 0)
+ compare_count = 0;
+ if (loop_count < 0)
+ loop_count = 0;
+
+ if (loop_count == 0)
+ probability = 0;
+ else if (compare_count > loop_count)
+ probability = REG_BR_PROB_BASE;
+ else
+ probability = (double) REG_BR_PROB_BASE * compare_count / loop_count;
+ predict_edge (then_edge, PRED_LOOP_IV_COMPARE, probability);
+ return;
+ }
+
+ if ((loop_bound_code == LT_EXPR || loop_bound_code == LE_EXPR)
+ && (compare_code == LT_EXPR || compare_code == LE_EXPR))
+ predict_edge_def (then_edge, PRED_LOOP_IV_COMPARE, TAKEN);
+ else if ((loop_bound_code == GT_EXPR || loop_bound_code == GE_EXPR)
+ && (compare_code == GT_EXPR || compare_code == GE_EXPR))
+ predict_edge_def (then_edge, PRED_LOOP_IV_COMPARE, TAKEN);
+ else if (loop_bound_code == NE_EXPR)
+ {
+ /* If the loop backedge condition is "(i != bound)", we do
+ the comparison based on the step of IV:
+ * step < 0 : backedge condition is like (i > bound)
+ * step > 0 : backedge condition is like (i < bound) */
+ gcc_assert (loop_bound_step != 0);
+ if (loop_bound_step > 0
+ && (compare_code == LT_EXPR
+ || compare_code == LE_EXPR))
+ predict_edge_def (then_edge, PRED_LOOP_IV_COMPARE, TAKEN);
+ else if (loop_bound_step < 0
+ && (compare_code == GT_EXPR
+ || compare_code == GE_EXPR))
+ predict_edge_def (then_edge, PRED_LOOP_IV_COMPARE, TAKEN);
+ else
+ predict_edge_def (then_edge, PRED_LOOP_IV_COMPARE, NOT_TAKEN);
+ }
+ else
+ /* The branch is predicted not-taken if loop_bound_code is
+ opposite with compare_code. */
+ predict_edge_def (then_edge, PRED_LOOP_IV_COMPARE, NOT_TAKEN);
+}
+
/* Predict edge probabilities by exploiting loop structure. */
static void
@@ -946,6 +1277,12 @@ predict_loops (void)
VEC (edge, heap) *exits;
struct tree_niter_desc niter_desc;
edge ex;
+ struct nb_iter_bound *nb_iter;
+ enum tree_code loop_bound_code = ERROR_MARK;
+ int loop_bound_step = 0;
+ tree loop_bound_var = NULL;
+ tree loop_iv_base = NULL;
+ gimple stmt = NULL;
exits = get_loop_exit_edges (loop);
n_exits = VEC_length (edge, exits);
@@ -993,6 +1330,25 @@ predict_loops (void)
}
VEC_free (edge, heap, exits);
+ /* Find information about loop bound variables. */
+ for (nb_iter = loop->bounds; nb_iter;
+ nb_iter = nb_iter->next)
+ if (nb_iter->stmt
+ && gimple_code (nb_iter->stmt) == GIMPLE_COND)
+ {
+ stmt = nb_iter->stmt;
+ break;
+ }
+ if (!stmt && last_stmt (loop->header)
+ && gimple_code (last_stmt (loop->header)) == GIMPLE_COND)
+ stmt = last_stmt (loop->header);
+ if (stmt)
+ is_comparison_with_loop_invariant_p (stmt, loop,
+ &loop_bound_var,
+ &loop_bound_code,
+ &loop_bound_step,
+ &loop_iv_base);
+
bbs = get_loop_body (loop);
for (j = 0; j < loop->num_nodes; j++)
@@ -1054,6 +1410,10 @@ predict_loops (void)
|| !flow_bb_inside_loop_p (loop, e->dest))
predict_edge (e, PRED_LOOP_EXIT, probability);
}
+ if (loop_bound_var)
+ predict_iv_comparison (loop, bb, loop_bound_var, loop_iv_base,
+ loop_bound_code,
+ loop_bound_step);
}
/* Free basic blocks from get_loop_body. */
diff --git a/gcc-4.6/gcc/predict.def b/gcc-4.6/gcc/predict.def
index 4b3e87aa5..89d078760 100644
--- a/gcc-4.6/gcc/predict.def
+++ b/gcc-4.6/gcc/predict.def
@@ -116,3 +116,7 @@ DEF_PREDICTOR (PRED_NULL_RETURN, "null return", HITRATE (90), 0)
/* Branches to a mudflap bounds check are extremely unlikely. */
DEF_PREDICTOR (PRED_MUDFLAP, "mudflap check", PROB_VERY_LIKELY, 0)
+
+/* Branches to compare induction variable to a loop bound is
+ extremely likely. */
+DEF_PREDICTOR (PRED_LOOP_IV_COMPARE, "loop iv compare", PROB_VERY_LIKELY, 0)
diff --git a/gcc-4.6/gcc/profile.c b/gcc-4.6/gcc/profile.c
index 965918058..68d7631ea 100644
--- a/gcc-4.6/gcc/profile.c
+++ b/gcc-4.6/gcc/profile.c
@@ -414,7 +414,7 @@ read_profile_edge_counts (gcov_type *exec_counts)
if (flag_profile_correction)
{
static bool informed = 0;
- if (!informed)
+ if ((flag_opt_info >= OPT_INFO_MAX) && !informed)
inform (input_location,
"corrupted profile info: edge count exceeds maximal count");
informed = 1;
@@ -635,7 +635,7 @@ compute_branch_probabilities (unsigned cfg_checksum, unsigned lineno_checksum)
{
/* Inconsistency detected. Make it flow-consistent. */
static int informed = 0;
- if (informed == 0)
+ if ((flag_opt_info >= OPT_INFO_MAX) && informed == 0)
{
informed = 1;
inform (input_location, "correcting inconsistent profile data");
@@ -790,9 +790,14 @@ compute_value_histograms (histogram_values values, unsigned cfg_checksum,
gcov_type *histogram_counts[GCOV_N_VALUE_COUNTERS];
gcov_type *act_count[GCOV_N_VALUE_COUNTERS];
gcov_type *aact_count;
+ bool warned[GCOV_N_VALUE_COUNTERS];
+ static const char *const ctr_names[] = GCOV_COUNTER_NAMES;
for (t = 0; t < GCOV_N_VALUE_COUNTERS; t++)
- n_histogram_counters[t] = 0;
+ {
+ n_histogram_counters[t] = 0;
+ warned[t] = 0;
+ }
for (i = 0; i < VEC_length (histogram_value, values); i++)
{
@@ -828,6 +833,19 @@ compute_value_histograms (histogram_values values, unsigned cfg_checksum,
t = (int) hist->type;
aact_count = act_count[t];
+ /* If cannot find the counters in gcda file, skip and give
+ a warning. */
+ if (aact_count == 0)
+ {
+ if (!warned[t] && flag_opt_info >= OPT_INFO_MIN)
+ warning (0, "cannot find %s counters in function %s.",
+ ctr_names[COUNTER_FOR_HIST_TYPE(t)],
+ IDENTIFIER_POINTER (
+ DECL_ASSEMBLER_NAME (current_function_decl)));
+ hist->n_counters = 0;
+ warned[t] = true;
+ continue;
+ }
act_count[t] += hist->n_counters;
gimple_add_histogram_value (cfun, stmt, hist);
diff --git a/gcc-4.6/gcc/regmove.c b/gcc-4.6/gcc/regmove.c
index 48a583fa2..996859908 100644
--- a/gcc-4.6/gcc/regmove.c
+++ b/gcc-4.6/gcc/regmove.c
@@ -860,7 +860,7 @@ fixup_match_2 (rtx insn, rtx dst, rtx src, rtx offset)
if (REG_N_CALLS_CROSSED (REGNO (src)) == 0)
break;
- if (call_used_regs [REGNO (dst)]
+ if ((HARD_REGISTER_P (dst) && call_used_regs [REGNO (dst)])
|| find_reg_fusage (p, CLOBBER, dst))
break;
}
diff --git a/gcc-4.6/gcc/reload1.c b/gcc-4.6/gcc/reload1.c
index cee127f93..84cbfca17 100644
--- a/gcc-4.6/gcc/reload1.c
+++ b/gcc-4.6/gcc/reload1.c
@@ -3899,6 +3899,10 @@ set_initial_label_offsets (void)
if (XEXP (x, 0))
set_label_offsets (XEXP (x, 0), NULL_RTX, 1);
+ for (x = nonlocal_goto_handler_labels; x; x = XEXP (x, 1))
+ if (XEXP (x, 0))
+ set_label_offsets (XEXP (x, 0), NULL_RTX, 1);
+
for_each_eh_label (set_initial_eh_label_offset);
}
diff --git a/gcc-4.6/gcc/reorg.c b/gcc-4.6/gcc/reorg.c
index 82c7412e2..2677b4823 100644
--- a/gcc-4.6/gcc/reorg.c
+++ b/gcc-4.6/gcc/reorg.c
@@ -3554,9 +3554,11 @@ relax_delay_slots (rtx first)
}
}
+ /* See if we have a simple (conditional) jump that is useless. */
if (! INSN_ANNULLED_BRANCH_P (delay_insn)
- && prev_active_insn (target_label) == insn
&& ! condjump_in_parallel_p (delay_insn)
+ && prev_active_insn (target_label) == insn
+ && ! BARRIER_P (prev_nonnote_insn (target_label))
#ifdef HAVE_cc0
/* If the last insn in the delay slot sets CC0 for some insn,
various code assumes that it is in a delay slot. We could
diff --git a/gcc-4.6/gcc/sched-deps.c b/gcc-4.6/gcc/sched-deps.c
index 7293fc3c9..50494cfc2 100644
--- a/gcc-4.6/gcc/sched-deps.c
+++ b/gcc-4.6/gcc/sched-deps.c
@@ -2687,7 +2687,11 @@ sched_analyze_insn (struct deps_desc *deps, rtx x, rtx insn)
else
sched_analyze_2 (deps, XEXP (link, 0), insn);
}
- if (find_reg_note (insn, REG_SETJMP, NULL))
+ /* Don't schedule anything after a tail call, tail call needs
+ to use at least all call-saved registers. */
+ if (SIBLING_CALL_P (insn))
+ reg_pending_barrier = TRUE_BARRIER;
+ else if (find_reg_note (insn, REG_SETJMP, NULL))
reg_pending_barrier = MOVE_BARRIER;
}
diff --git a/gcc-4.6/gcc/simplify-rtx.c b/gcc-4.6/gcc/simplify-rtx.c
index eb747ad3c..42b1be60b 100644
--- a/gcc-4.6/gcc/simplify-rtx.c
+++ b/gcc-4.6/gcc/simplify-rtx.c
@@ -2777,7 +2777,7 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
}
}
}
- else
+ else if (SCALAR_INT_MODE_P (mode))
{
/* 0/x is 0 (or x&0 if x has side-effects). */
if (trueop0 == CONST0_RTX (mode)
@@ -4177,10 +4177,20 @@ simplify_relational_operation_1 (enum rtx_code code, enum machine_mode mode,
{
rtx x = XEXP (op0, 0);
rtx c = XEXP (op0, 1);
+ enum rtx_code invcode = op0code == PLUS ? MINUS : PLUS;
+ rtx tem = simplify_gen_binary (invcode, cmp_mode, op1, c);
+
+ /* Detect an infinite recursive condition, where we oscillate at this
+ simplification case between:
+ A + B == C <---> C - B == A,
+ where A, B, and C are all constants with non-simplifiable expressions,
+ usually SYMBOL_REFs. */
+ if (GET_CODE (tem) == invcode
+ && CONSTANT_P (x)
+ && rtx_equal_p (c, XEXP (tem, 1)))
+ return NULL_RTX;
- c = simplify_gen_binary (op0code == PLUS ? MINUS : PLUS,
- cmp_mode, op1, c);
- return simplify_gen_relational (code, mode, cmp_mode, x, c);
+ return simplify_gen_relational (code, mode, cmp_mode, x, tem);
}
/* (ne:SI (zero_extract:SI FOO (const_int 1) BAR) (const_int 0))) is
diff --git a/gcc-4.6/gcc/target.def b/gcc-4.6/gcc/target.def
index 7cc5b0008..756caf3b0 100644
--- a/gcc-4.6/gcc/target.def
+++ b/gcc-4.6/gcc/target.def
@@ -1271,6 +1271,18 @@ DEFHOOK
tree, (tree fndecl, int n_args, tree *argp, bool ignore),
hook_tree_tree_int_treep_bool_null)
+/* Returns true if unaligned vector loads/stores are slow. */
+DEFHOOK
+(slow_unaligned_vector_memop,
+ "",
+ bool, (void), NULL)
+
+/* Target hook to check if this function should be versioned. */
+DEFHOOK
+(mversion_function,
+ "",
+ int, (tree fndecl, tree *optimization_node_chain, tree *cond_func_decl), NULL)
+
/* Returns a code for a target-specific builtin that implements
reciprocal of the function, or NULL_TREE if not available. */
DEFHOOK
@@ -2783,7 +2795,7 @@ DEFHOOKPOD
"True if the @code{.debug_pubtypes} and @code{.debug_pubnames} sections\
should be emitted. These sections are not used on most platforms, and\
in particular GDB does not use them.",
- bool, false)
+ bool, true)
DEFHOOKPOD
(delay_sched2, "True if sched2 is not to be run at its normal place. \
diff --git a/gcc-4.6/gcc/testsuite/ChangeLog b/gcc-4.6/gcc/testsuite/ChangeLog
index b45862434..d0a8456cd 100644
--- a/gcc-4.6/gcc/testsuite/ChangeLog
+++ b/gcc-4.6/gcc/testsuite/ChangeLog
@@ -1,12 +1,866 @@
-2011-08-08 Martin Jambor <mjambor@suse.cz>
+2012-01-06 Richard Sandiford <richard.sandiford@linaro.org>
+
+ PR middle-end/48660
+ * g++.dg/pr48660.C: New test.
+
+2012-01-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * ada/acats/overflow.lst: Add cb20004.
+
+2012-01-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.c-torture/execute/20120104-1.c: New test.
+
+2012-01-04 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/49651
+ * gcc.dg/tree-ssa/pta-ptrarith-1.c: Adjust.
+ * gcc.dg/tree-ssa/pta-ptrarith-2.c: Likewise.
+
+2012-01-03 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-11-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/51042
+ * gcc.dg/torture/pr51042.c: New testcase.
+
+2012-01-03 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/51070
+ * gcc.dg/torture/pr51070.c: New testcase.
+ * gcc.dg/torture/pr51070-2.c: Likewise.
+
+2011-12-20 Dodji Seketeli <dodji@redhat.com>
+
+ PR debug/49951
+ * g++.dg/gcov/gcov-2.C: Adjust.
+
+2012-01-01 Thomas König <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
+ PR fortran/51502
+ * lib/gcc-dg.exp (scan-module-absence): New function.
+ * gfortran.dg/implicit_pure_2.f90: New test.
+
+2011-12-28 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Backport from mainline
+ 2011-12-28 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR target/51623
+ * gcc.target/powerpc/pr51623.c: New file.
+
+2011-12-28 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.dg/torture/pr50396.c: Use dg-add-options ieee.
+
+2011-12-23 Richard Guenther <rguenther@suse.de>
+
+ PR rtl-optimization/50396
+ * gcc.dg/torture/pr50396.c: New testcase.
+
+2011-12-22 Doug Kwan <dougkwan@google.com>
+
+ Backport from mainline
+ 2011-11-20 Joey Ye <joey.ye@arm.com>
+
+ * gcc.dg/volatile-bitfields-1.c: New.
+
+2011-12-21 Richard Earnshaw <rearnsha@arm.com>
+
+ PR target/51643
+ * gcc.target/arm/sibcall-2.c: New test.
+
+2011-12-19 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/51583
+ * gcc.dg/tree-ssa/pr51583.c: New test.
+
+2011-12-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/51416
+ * g++.dg/cpp0x/auto31.C: New.
+
+2011-12-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/51331
+ * g++.dg/init/value10.C: New.
+
+2011-12-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ Backport from mainline.
+ 2011-10-28 Chung-Lin Tang <cltang@codesourcery.com>
+
+ PR rtl-optimization/49720
+ * g++.dg/torture/pr49720.C: New test.
+
+2011-12-14 Jason Merrill <jason@redhat.com>
+
+ PR c++/51248
+ * g++.dg/other/enum2.C: New.
+
+2011-12-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/51406
+ PR c++/51161
+ * g++.dg/cpp0x/rv-cast3.C: New.
+ * g++.dg/cpp0x/rv-cast4.C: New.
+
+2011-12-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR testsuite/51511
+ * gcc.dg/pr45819.c: Add -w to dg-options.
+
+ Backported from mainline
+ 2011-12-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/51485
+ * g++.dg/vect/pr51485.cc: New test.
+
+2011-12-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.c-torture/execute/20111212-1.c: New test.
+
+2011-12-11 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50923
+ * gfortran.dg/warn_function_without_result_2.f90: New.
+
+2011-12-11 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/51338
+ Backport from trunk
+ * gfortran.dg/assumed_charlen_substring_1.f90: New test.
+
+2011-12-09 Jakub Jelinek <jakub@redhat.com>
+
+ Backport from mainline
+ 2011-12-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/51466
+ * gcc.c-torture/execute/pr51466.c: New test.
+
+ 2011-11-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/50078
+ * gcc.dg/pr50078.c: New test.
+
+2011-12-09 Kazu Hirata <kazu@codesourcery.com>
+
+ Backport from mainline:
+
+ 2011-12-05 Kazu Hirata <kazu@codesourcery.com>
+
+ PR target/51408
+ * gcc.dg/pr51408.c: New.
+
+2011-12-08 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/51448
+ * gfortran.dg/realloc_on_assign_8.f90: New.
+
+2011-12-08 Teresa Johnson <tejohnson@google.com>
+
+ * gcc.target/i386/movdi-rex64.c: Remove unnecessary
+ unused label.
+
+2011-12-08 Teresa Johnson <tejohnson@google.com>
+
+ * gcc.target/i386/movdi-rex64.c: Remove unnecessary
+ -Wwrite-strings option.
+
+2011-12-08 Teresa Johnson <tejohnson@google.com>
+
+ * gcc.target/i386/movdi-rex64.c: New.
+
+2011-12-08 Jakub Jelinek <jakub@redhat.com>
+
+ Backport from mainline
+ 2011-12-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/51410
+ * gcc.dg/debug/dwarf2/pr51410.c: New test.
+
+ PR c/51339
+ * gcc.dg/gomp/pr51339.c: New test.
+
+ 2011-12-05 Jakub Jelinek <jakub@redhat.com>
+ Eric Botcazou <ebotcazou@adacore.com>
+
+ PR middle-end/51323
+ PR middle-end/50074
+ * gcc.c-torture/execute/pr51323.c: New test.
+
+ 2011-11-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/48721
+ * gcc.target/i386/pr48721.c: New test.
+
+2011-12-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.c-torture/execute/20111208-1.c: New test.
+
+ Backport from mainline
+ 2011-09-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/frame_overflow.ads: New.
+ * gnat.dg/frame_overflow.adb: Adjust.
+ * gnat.dg/specs/addr1.ads: Likewise.
+
+2011-12-06 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/51435
+ * gfortran.dg/default_initialization_5.f90: New.
+
+2011-12-06 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/50622
+ * g++.dg/tree-ssa/pr50622.C: New test.
+
+2011-12-04 Uros Bizjak <ubizjak@gmail.com>
+ Jérémie Detrey <Jeremie.Detrey@loria.fr>
+
+ PR target/51393
+ * gcc.target/i386/pr51393.c: New test.
+
+2011-12-03 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50684
+ * gfortran.dg/move_alloc_8.f90: New.
+
+2011-11-25 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50408
+ * gfortran.dg/whole_file_35.f90: New.
+
+2011-11-24 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/51218
+ * resolve.c (pure_subroutine): If called subroutine is
+ impure, unset implicit_pure.
+ (resolve_function): Move impure check to simplify code.
+
+2011-11-22 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51265
+ * g++.dg/cpp0x/decltype36.C: New.
+
+2011-11-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/delay-slot-2.c: New test.
+
+2011-11-18 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/cpp/assert4.c: Test __linux__, not __gnu_linux__.
+
+2011-11-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51150
+ * g++.dg/cpp0x/pr51150.C: New.
+
+2011-11-16 Richard Earnshaw <rearnsha@arm.com>
+ Bernd Schmidt <bernds@coudesourcery.com>
+ Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ PR target/49641
+ * gcc.target/arm/pr49641.c: New test.
+
+2011-11-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/51077
+ * gcc.c-torture/compile/pr51077.c: New test.
+
+2011-11-07 Jason Merrill <jason@redhat.com>
+
+ PR c++/50870
+ * g++.dg/cpp0x/decltype35.C: New.
+
+2011-11-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * g++.dg/other/offsetof7.C: New test.
+
+2011-11-02 Bernd Schmidt <bernds@codesourcery.com>
+
+ * gcc.c-torture/compile/20110907.c: New file.
+
+2011-10-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/50901
+ * g++.dg/cpp0x/pr50901.C: New.
+
+2011-10-27 Uros Bizjak <ubizjak@gmail.com>
+ Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR target/50875
+ * gfortran.dg/pr50875.f90: New test.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-10-23 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50788
+ * gcc.target/i386/pr50788.c: New test.
+
+2011-10-20 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.dg/ipa/ipa-sra-2.c: Add dg-require-effective-target
+ non_strict_align.
+ * gcc.dg/ipa/ipa-sra-6.c: Ditto.
+
+2011-10-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/50793
+ * g++.dg/init/value9.C: New.
+
+2011-10-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/50787
+ * g++.dg/init/ref20.C: New.
+
+2011-10-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/50787
+ * g++.dg/init/ref20.C: New.
+
+2011-10-18 Jason Merrill <jason@redhat.com>
+
+ PR c++/50531
+ * g++.dg/cpp0x/defaulted32.C: New.
+
+2011-10-17 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/47023
+ * gfortran.dg/c_kind_tests_3.f03: New.
+
+2011-10-15 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/50570
+ * gfortran.dg/pointer_intent_5.f90: New.
+
+2011-10-15 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ Backport from mainline
+ 2011-06-06 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR objc-++/48275
+ * obj-c++.dg/property/cxx-property-1.mm: New.
+ * obj-c++.dg/property/cxx-property-2.mm: New.
+
+2011-10-15 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50718
+ * trans-expr.c (gfc_conv_procedure_call): Fix -fcheck=pointer
+ for dummy arguments with VALUE attribute.
+
+2011-10-14 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-10-14 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/torture/pr50723.c: New testcase.
+
+ 2011-10-13 Richard Guenther <rguenther@suse.de>
+
+ * gcc.target/i386/pr50712.c: New testcase.
+
+2011-10-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/50618
+ * g++.dg/init/vbase1.C: New.
+
+2011-10-12 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/50659
+ * gfortran.dg/proc_decl_27.f90: New.
+
+2011-10-12 Paul Koning <pkoning@gcc.gnu.org>
+
+ PR tree-optimization/50189
+ * g++.dg/torture/pr50189.C: New testcase.
+
+2011-10-12 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50700
+ * gcc.dg/builtin-object-size-12.c: New testcase.
+
+2011-10-12 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/50565
+ * gcc.c-torture/compile/pr50565-1.c,
+ gcc.c-torture/compile/pr50565-2.c: New tests.
+
+2011-10-11 Jason Merrill <jason@redhat.com>
+
+ * g++.dg/cpp0x/initlist-49216.C: New.
+
+2011-10-11 Janis Johnson <janisjo@codesourcery.com>
+
+ PR c++/44473
+ * g++.dg/dfp/44473-1.C: New test.
+ * g++.dg/dfp/44473-2.C: New test.
+ * g++.dg/dfp/mangle-1.C: New test.
+ * g++.dg/dfp/mangle-2.C: New test.
+ * g++.dg/dfp/mangle-3.C: New test.
+ * g++.dg/dfp/mangle-4.C: New test.
+ * g++.dg/dfp/mangle-5.C: New test.
+
+2011-10-11 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50273
+ * gfortran.dg/common_16.f90: New.
+
+2011-10-07 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/50585
+ * gfortran.dg/assumed_charlen_arg_2.f90: New.
+
+ PR fortran/50625
+ * gfortran.dg/class_46.f03: New.
+
+2011-10-07 Bernd Schmidt <bernds@codesourcery.com>
+
+ PR target/49049
+ * gcc.c-torture/compile/pr49049.c: New test.
+
+2011-10-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/49279
+ * gcc.c-torture/execute/pr49279.c: New test.
+
+2011-10-04 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/48706
+ * gfortran.dg/extends_12.f03: New.
+
+2011-09-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR inline-asm/50571
+ * gcc.dg/pr50571.c: New test.
+
+2011-09-26 Jason Merrill <jason@redhat.com>
+
+ PR c++/46105
+ * g++.dg/template/partial12.C: New.
+
+ PR c++/50508
+ * g++.dg/cpp0x/constexpr-typedef1.C: New.
+
+2011-09-26 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/50472
+ * gcc.dg/torture/pr50472.c: New testcase.
+
+2011-09-23 Jason Merrill <jason@redhat.com>
+
+ Core 253
+ * g++.dg/init/const8.C: New.
+ * g++.dg/cpp0x/constexpr-object1.C: Add a data member.
+ * g++.dg/cpp0x/defaulted2.C: Likewise.
+ * g++.dg/cpp0x/pr42844-2.C: Likewise.
+ * g++.dg/init/pr42844.C: Likewise.
+
+ * lib/prune.exp: Prune "note"s.
+
+2011-09-25 Ira Rosen <ira.rosen@linaro.org>
+
+ PR tree-optimization/50413
+ * g++.dg/vect/vect.exp: Run slp-pr* tests with
+ -fdump-tree-slp-details. Run other tests with
+ -fdump-tree-vect-details.
+ * g++.dg/vect/slp-pr50413.cc: New.
+
+2011-09-25 Ira Rosen <ira.rosen@linaro.org>
+
+ PR tree-optimization/50412
+ * gfortran.dg/vect/pr50412.f90: New.
+
+2011-09-22 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/50491
+ * g++.dg/cpp0x/pr50491.C: New.
+
+2011-09-22 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR testsuite/50487
+ * gfortran.dg/bessel_6.f90: Fix tolerance test.
+
+2011-09-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50464
+ * g++.dg/other/pr50464.C: New test.
+
+2011-09-19 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/49886
+ * gcc.dg/torture/pr49886.c: Remove XFAILs.
+ * gcc.dg/torture/pr50287.c: New test.
+
+2011-09-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/50442
+ Revert:
+ PR c++/49267
+ * g++.dg/cpp0x/rv-conv1.C: New.
+
+2011-09-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/50424
+ * g++.dg/eh/defarg1.C: New.
+
+2011-09-13 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/48320
+ * g++.dg/cpp0x/variadic116.C: New test case.
+
+2011-09-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/atomic5.ad[sb]: New test.
+
+2011-09-08 Martin Jambor <mjambor@suse.cz>
+
+ Backport from mainline
+ 2011-09-07 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/49911
+ * g++.dg/tree-ssa/pr49911.C: New test.
+
+2011-09-08 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-07-04 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/49518
+ PR tree-optimization/49628
+ * g++.dg/torture/pr49628.C: New testcase.
+ * gcc.dg/torture/pr49518.c: Likewise.
+
+2011-09-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/50310
+ * gcc.c-torture/execute/ieee/pr50310.c: New test.
+ * gcc.dg/pr50310-2.c: New test.
+
+2011-09-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/50309
+ * g++.dg/cpp0x/noexcept11.C: New.
+
+2011-09-06 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ Backport from trunk
+ * g++.dg/ext/altivec-17.C: Fix dg-error to match current compiler.
+
+2011-09-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.c-torture/compile/20110906-1.c: New test.
+
+2011-09-06 Martin Jambor <mjambor@suse.cz>
+
+ * gcc.c-torture/execute/pr49886.c: Move to...
+ * gcc.dg/torture/pr49886.c: ...here. Xfail run test for -O2 and above.
+
+2011-09-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/49267
+ * g++.dg/cpp0x/rv-conv1.C: New.
+
+2011-09-05 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/compat/struct-layout-1_test.h: Decrease bitfield size
+ to work even with -fshort-enums.
+
+2011-09-02 Martin Jambor <mjambor@suse.cz>
+
+ PR middle-end/49886
+ * gcc.c-torture/execute/pr49886.c: New testcase.
+ * gfortran.fortran-torture/compile/pr50260.f90: Likewise.
+
+2011-09-01 Ira Rosen <ira.rosen@linaro.org>
+
+ PR tree-optimization/50178
+ * gfortran.dg/vect/pr50178.f90: New test.
+
+2011-08-29 Jakub Jelinek <jakub@redhat.com>
+ Jason Merrill <jason@redhat.com>
+
+ * g++.dg/dfp/base.C: New test.
+
+2011-08-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/50089
+ * g++.dg/cpp0x/lambda/lambda-qualified.C: New.
+
+ PR c++/50220
+ * g++.dg/cpp0x/lambda/lambda-50220.C: New.
+
+ PR c++/50234
+ * g++.dg/cpp0x/constexpr-value3.C: New.
+
+2011-08-29 Jason Merrill <jason@redhat.com>
+
+ PR c++/50224
+ * g++.dg/cpp0x/lambda/lambda-use2.C: New.
+
+2011-08-29 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
+ PR libfortran/50192
+ * gfortran.dg/widechar_compare_1.f90: New test.
+
+2011-08-27 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/50202
+ * gcc.target/i386/pr50202.c: New test.
+
+2011-08-26 Mikael Morin <mikael.morin@gcc.gnu.org>
+
+ PR fortran/50050
+ * gfortran.dg/pointer_comp_init_1.f90: New test.
+
+2011-08-26 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/50179
+ * c-c++-common/Wunused-var-14.c: New test.
+
+2011-08-25 Jason Merrill <jason@redhat.com>
+
+ PR c++/50157
+ * g++.dg/cpp0x/sfinae27.C: New.
+
+2011-08-25 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50163
+ * gfortran.dg/initialization_28.f90: New.
+
+2011-08-23 Jason Merrill <jason@redhat.com>
+
+ PR c++/50024
+ * g++.dg/cpp0x/constexpr-initlist5.C: New.
+
+2011-08-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/46862
+ * g++.dg/dfp/nofields.C: New test.
+
+2011-08-22 Mikael Morin <mikael.morin@gcc.gnu.org>
+
+ PR fortran/50050
+ * gfortran.dg/alloc_comp_initializer_3.f90: New test.
+
+2011-08-22 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
+ PR fortran/50130
+ * gfortran.dg/zero_stride_1.f90: New test.
+
+2011-08-20 Mikael Morin <mikael.morin@sfr.fr>
+
+ PR fortran/50129
+ * gfortran.dg/where_3.f90: New test.
+
+2011-08-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/48739
+ * gcc.dg/pr48739-1.c: New test.
+ * gcc.dg/pr48739-2.c: New test.
+
+2011-08-19 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50109
+ * gfortran.dg/namelist_73.f90: New.
+
+2011-08-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/50092
+ * gcc.dg/torture/pr50092.c: New test.
+
+2011-08-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/50086
+ * g++.dg/cpp0x/variadic-unresolved.C: New.
+
+ PR c++/50054
+ * g++.dg/cpp0x/initlist56.C: New.
+
+2011-08-12 David Li <davidxl@google.com>
+
+ * g++.dg/abi/vbase15.C: New test.
+
+2011-08-09 Martin Jambor <mjambor@suse.cz>
PR middle-end/49923
* gcc.dg/tree-ssa/pr49923.c: New test.
+2011-08-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/48993
+ * g++.dg/cpp0x/constexpr-48089.C: Add cases.
+
+ PR c++/49921
+ * g++.dg/cpp0x/decltype31.C: New.
+
+ PR c++/49669
+ * g++.dg/init/array28.C: New.
+
+ PR c++/49988
+ * g++.dg/cpp0x/constexpr-non-const-arg3.C: New.
+
+2011-08-05 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/49112
+ * gfortran.dg/abstract_type_6.f03: Modified.
+ * gfortran.dg/typebound_proc_24.f03: New.
+
+2011-08-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/49948
+ * gcc.dg/pr49948.c: New test.
+
+2011-08-03 Daniel Kraft <d@domob.eu>
+
+ PR fortran/49885
+ * gfortran.dg/auto_char_dummy_array_3.f90: New test.
+
+2011-08-02 Jason Merrill <jason@redhat.com>
+
+ PR c++/43886
+ * g++.dg/cpp0x/lambda/lambda-defarg2.C: New.
+
+ PR c++/49593
+ * g++.dg/cpp0x/variadic115.C: New.
+
+ PR c++/49803
+ * g++.dg/cpp0x/union5.C: New.
+
+ PR c++/49924
+ * g++.dg/cpp0x/constexpr-array4.C: New.
+
+ PR c++/49260
+ * g++.dg/cpp0x/lambda/lambda-eh2.C: Change options.
+
+2011-07-31 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/49920
+ * gcc.target/i386/pr49920.c: New test.
+
+2011-07-30 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk.
+ PR fortran/48876
+ * gfortran.dg/string_5.f90: New test.
+
+2011-07-29 Wei Guozhi <carrot@google.com>
+
+ Backported from mainline
+ 2011-07-29 Wei Guozhi <carrot@google.com>
+
+ PR rtl-optimization/49799
+ * gcc.dg/pr49799.c: New test case.
+
+2011-07-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/49871
+ * gcc.dg/debug/dwarf2/pr49871.c: New test.
+
+2011-07-28 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/45586
+ * gfortran.dg/lto/pr45586-2_0.f90: New.
+
2011-07-27 Jeffrey Yasskin <jyasskin@google.com>
* g++.old-deja/g++.pt/crash60.C: Updated.
+2011-07-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/49866
+ * gcc.target/i386/pr49866.c: New test.
+
+2011-07-27 Tobias Burnus <burnus@net-b.de>
+
+ Backported from mainline
+ 2011-07-23 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/49791
+ * gfortran.dg/namelist_72.f: New.
+
+2011-07-27 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/avx-os-support.h: New.
+ * gcc.target/i386/avx-check.h: Include avx-os-support.h
+ (main): Check avx_os_support before the test is run.
+ * gcc.target/i386/aes-avx-check.h: Ditto.
+ * gcc.target/i386/pclmul-avx-check.h: Ditto.
+
+2011-07-26 Ira Rosen <ira.rosen@linaro.org>
+
+ * gcc.dg/vect/vect-70.c: Reduce the data size to fit SPU local store.
+
+2011-07-25 Andrew Pinski <apinski@cavium.com>
+
+ PR tree-opt/49671
+ * gcc.dg/tree-ssa/pr49671-1.c: New testcase.
+ * gcc.dg/tree-ssa/pr49671-2.c: New testcase.
+
+2011-07-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR testsuite/49753
+ * g++.dg/torture/pr49309.C: Add -fpreprocessed to dg-options.
+
+ Revert:
+ 2011-07-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR testsuite/49753
+ * g++.dg/torture/pr49309.C: Remove.
+
+2011-07-23 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/49708
+ * gfortran.dg/allocate_error_3.f90: New.
+
+2011-07-22 Uros Bizjak <ubizjak@gmail.com>
+
+ * lib/target-supports.exp (check_ifunc_available): Rewrite.
+
+2011-07-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR debug/47393
+ * g++.dg/debug/dwarf2/icf.C: XFAIL some scan-assembler on
+ mips-sgi-irix*.
+
+2011-07-22 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/45819
+ * gcc.dg/pr45819.c: New testcase.
+
+2011-07-21 Uros Bizjak <ubizjak@gmail.com>
+
+ * lib/target-supports.exp (check_avx_os_support_available): New.
+ (check_effective_target_avx_runtime): Use it.
+
+2011-07-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/49785
+ * g++.dg/cpp0x/variadic114.C: New.
+
+2011-07-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/49768
+ * gcc.c-torture/execute/pr49768.c: New test.
+
+2011-07-18 Mikael Morin <mikael.morin@sfr.fr>
+
+ PR fortran/49648
+ * gfortran.dg/result_in_spec_4.f90: New test.
+
+2011-07-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/49675
+ * gfortran.dg/pr49675.f90: New test.
+
2011-07-17 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/pointer_controlled.adb: New test.
diff --git a/gcc-4.6/gcc/testsuite/ChangeLog.google-4_6 b/gcc-4.6/gcc/testsuite/ChangeLog.google-4_6
index 15808132a..01f5e18c8 100644
--- a/gcc-4.6/gcc/testsuite/ChangeLog.google-4_6
+++ b/gcc-4.6/gcc/testsuite/ChangeLog.google-4_6
@@ -1,8 +1,181 @@
-2011-12-05 Jing Yu <jingyu@google.com>
+2012-02-10 Wei Guozhi <carrot@google.com>
+ Backported r183933 from mainline
+ 2012-02-06 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.c-torture/execute/pr52129.c: New test.
+
+2011-01-31 Dehao Chen <dehao@google.com>
+
+ * gcc.dg/predict-1.c: Check if LOOP_IV_COMPARE static predict
+ heuristic is working properly.
+ * gcc.dg/predict-2.c: Likewise.
+ * gcc/dg/predict-3.c: Likewise.
+ * gcc/dg/predict-4.c: Likewise.
+
+2012-01-09 DeLesley Hutchins <delesley@google.com>
+
+ * g++.dg/thread-ann/thread_annot_lock-82.C: Update error
+ message to account for fixed reporting of implicit
+ destructor calls.
+
+2012-01-04 Sterling Augustine <saugustine@google.com>
+
+ Backport r182443 from google/main.
+
+ * g++.dg/ext/pretty3.C: Likewise.
+ * g++.dg/pr44486.C: Likewise.
+ * g++.dg/warn/Wuninitializable-member.C: Likewise.
+ * g++.dg/warn/pr35711.C: Likewise.
+ * g++.old-deja/g++.pt/memtemp77.C: Likewise.
+
+2011-12-17 Easwaran Raman <eraman@google.com>
+ Backport r182443 from google/main.
+
+ 2011-12-17 Easwaran Raman <eraman@google.com>
+
+ * g++.dg/other/sized-delete-1.C: New test.
+
+2011-12-16 Dehao Chen <dehao@google.com>
+
+ * gcc.dg/inline-dump.c: New test.
+
+2011-11-30 Doug Kwan <dougkwan@google.com>
Backport r171347 and r181549 from trunk.
2011-11-20 Joey Ye <joey.ye@arm.com>
+ * gcc.dg/volatile-bitfields-1.c: New.
+
+2011-11-18 Diego Novillo <dnovillo@google.com>
+
+ * g++.dg/pr51151.C: New.
+
+2011-11-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/51150
+ * g++.dg/cpp0x/pr51150.C: New.
+
+2011-11-10 DeLesley Hutchins <delesley@google.com>
+
+ * g++.dg/thread-ann/thread_annot_lock-85.C:
+ New regression test
+
+2011-11-10 DeLesley Hutchins <delesley@google.com>
+
+ * g++.dg/thread-ann/thread_annot_lock-84.C:
+ New regression test.
+
+2011-11-04 DeLesley Hutchins <delesley@google.com>
+ * g++.dg/thread-ann/thread_annot_lock-82.C:
+ Expanded regression test
+
+2011-11-02 Jeffrey Yasskin <jyasskin@google.com>
+
+ Backport from rev 176665
+
+ 2011-07-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/49793
+ * g++.dg/cpp0x/initlist55.C: New.
+
+2011-10-28 Jeffrey Yasskin <jyasskin@google.com>
+
+ google ref 5514746; backport of r179121
+
+ Modified locally to only block static const literals in -pedantic
+ mode.
+
+ * g++.dg/cpp0x/constexpr-static8_nonpedantic.C: New.
+
+ 2011-09-23 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/50258
+ * g++.dg/cpp0x/constexpr-static8.C: New.
+
+2011-10-20 Diego Novillo <dnovillo@google.com>
+
+ * gcc.dg/inline_1.c: Remove expected extra errors.
+ * gcc.dg/inline_2.c: Likewise.
+ * gcc.dg/inline_3.c: Likewise.
+ * gcc.dg/inline_3.c: Likewise.
+ * gcc.dg/unroll_1.c: Likewise.
+ * gcc.dg/unroll_2.c: Likewise.
+ * gcc.dg/unroll_3.c: Likewise.
+ * gcc.dg/unroll_4.c: Likewise.
+
+
+2011-10-17 Dehao Chen <dehao@google.com>
+
+ * gcc.dg/record-gcc-switches-in-elf-1.c: New test.
+
+2011-10-14 DeLesley Hutchins <delesley@google.com>
+
+ * g++.dg/thread-ann/thread_annot_lock-83.C:
+ Added a second regression test to the same file.
+
+2011-10-14 DeLesley Hutchins <delesley@google.com>
+
+ * g++.dg/thread-ann/thread_annot_lock-83.C:
+ New regression test
+
+2011-09-30 Easwaran Raman <eraman@google.com>
+
+ * gcc.dg/sample-profile-generate-1.c: New test.
+
+2011-09-30 Sriraman Tallam <tmsriram@google.com>
+
+ * testsuite/gcc.dg/builtin_target.c: Remove.
+ * testsuite/gcc.target/i386/builtin_target.c: New file.
+
+2011-09-30 Sriraman Tallam <tmsriram@google.com>
+
+ * testsuite/gcc.dg/builtin_target.c: Specify target as ix86 or
+ x86_64.
+
+2011-09-30 Sriraman Tallam <tmsriram@google.com>
+
+ * testsuite/g++.dg/tree-prof/callgraph-profiles/C:
+ Add dg-require-section-exclude.
+ * testsuite/lib/target-supports.exp (check_ifunc_available): New proc.
+ * testsuite/lib/target-supports-dg.exp (dg-require-section-exclude):
+ New proc.
+
+2011-9-30 DeLesley Hutchins <delesley@google.com>
+
+ * testsuite/g++.dg/thread-ann/thread_annot_lock-82.C:
+ New regression test.
+
+2011-09-29 DeLesley Hutchins <delesley@google.com>
+
+ * testsuite/g++.dg/thread-ann/thread_annot_lock-81.C
+ New regression test.
+
+2011-09-28 Guozhi Wei <carrot@google.com>
+
+ Backport r178628 from trunk.
+ 2011-09-07 Jiangning Liu <jiangning.liu@arm.com>
+
+ PR tree-optimization/46021
+ * gcc.dg/tree-ssa/20040204-1.c: Don't XFAIL on arm*-*-*.
+
+2011-09-22 Paolo Carlini <paolo.carlini@oracle.com>
+
+ Backport r179110 from gcc-4_6-branch.
+
+ * g++.dg/cpp0x/pr50491.C: New.
+
+2011-09-22 Sriraman Tallam <tmsriram@google.com>
+
+ * g++.dg/tree-prof/callgraph-profiles.C: New test.
+
+2011-9-13 DeLesley Hutchins <delesley@google.com>
+
+ * g++.dg/thread-ann/thread_annot_lock-79.C: new test cases
+
+2011-09-01 Sriraman Tallam <tmsriram@google.com>
+
+ * gcc.dg/builtin_target.c: New test.
+
2011-08-17 Guozhi Wei <carrot@google.com>
Backport r177357 from trunk.
diff --git a/gcc-4.6/gcc/testsuite/ChangeLog.google-main b/gcc-4.6/gcc/testsuite/ChangeLog.google-main
index 1565a1285..248bc621b 100644
--- a/gcc-4.6/gcc/testsuite/ChangeLog.google-main
+++ b/gcc-4.6/gcc/testsuite/ChangeLog.google-main
@@ -1,3 +1,8 @@
+2012-01-30 Han Shen <shenhan@google.com>
+
+ * gcc.dg/fstack-protector-strong.c: New test.
+ * g++.dg/fstack-protector-strong.C: New test.
+
2011-06-16 Sharad Singhai <singhai@google.com>
* testsuite/lib/gcov.exp: Handle intermediate format.
diff --git a/gcc-4.6/gcc/testsuite/ada/acats/overflow.lst b/gcc-4.6/gcc/testsuite/ada/acats/overflow.lst
index 3685a4d80..fb76ef177 100644
--- a/gcc-4.6/gcc/testsuite/ada/acats/overflow.lst
+++ b/gcc-4.6/gcc/testsuite/ada/acats/overflow.lst
@@ -14,3 +14,4 @@ c46014a
c460008
c460011
c4a012b
+cb20004
diff --git a/gcc-4.6/gcc/testsuite/c-c++-common/Wunused-var-14.c b/gcc-4.6/gcc/testsuite/c-c++-common/Wunused-var-14.c
new file mode 100644
index 000000000..389febae8
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/c-c++-common/Wunused-var-14.c
@@ -0,0 +1,13 @@
+/* PR c/50179 */
+/* { dg-options "-Wunused" } */
+/* { dg-do compile } */
+
+void bar (int, ...);
+
+char *
+foo (void)
+{
+ bar (1, (__extension__ ({ static char b[2]; b[0] = 1; b; })));
+ bar (1, ({ static char c[2]; c[0] = 1; c; }));
+ return ({ static char d[2]; d[0] = 1; d; });
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/auto31.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/auto31.C
new file mode 100644
index 000000000..2c74b72df
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/auto31.C
@@ -0,0 +1,12 @@
+// PR c++/51416
+// { dg-options "-std=c++0x" }
+
+template<typename T, typename... U> void foo(T, U... u)
+{
+ auto foo(u...); // { dg-error "auto" }
+}
+
+void bar()
+{
+ foo(0);
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-48089.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-48089.C
index fc69cfef6..5124f7c7f 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-48089.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-48089.C
@@ -22,3 +22,29 @@ struct R {
};
constexpr R r; // { dg-bogus "" "" { xfail *-*-* } }
+
+// Ill-formed (no diagnostic required)
+struct T {
+ int i;
+ constexpr int f() { return i; }
+ constexpr T(): i(0) { }
+ constexpr T(const T& t) : i(f()) { } // { dg-message "" }
+};
+
+constexpr T t1;
+// Ill-formed (diagnostic required)
+constexpr T t2(t1); // { dg-error "" }
+
+// Well-formed
+struct U {
+ int i, j;
+ constexpr int f(int _i) { return _i; }
+ constexpr int g() { return i; }
+ constexpr U(): i(0), j(0) { }
+ constexpr U(const U& t) : i(f(t.i)),j(0) { } // { dg-bogus "" "" { xfail *-*-* } }
+ constexpr U(int _i) : i(_i),j(g()) { } // { dg-bogus "" "" { xfail *-*-* } }
+};
+
+constexpr U u1;
+constexpr U u2(u1); // { dg-bogus "" "" { xfail *-*-* } }
+constexpr U u3(1); // { dg-bogus "" "" { xfail *-*-* } }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-98.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-98.C
index 4ae3944c3..1a0189b56 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-98.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-98.C
@@ -1,4 +1,4 @@
// { dg-options "-std=c++98" }
-constexpr int i = 42; // { dg-message "std=c\\+\\+0x" }
+constexpr int i = 42; // { dg-message "std=c\\+\\+11" }
// { dg-error "constexpr" "" { target *-*-* } 3 }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-array4.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-array4.C
new file mode 100644
index 000000000..9aeb75d6b
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-array4.C
@@ -0,0 +1,14 @@
+// PR c++/49924
+// { dg-options -std=c++0x }
+
+struct A { constexpr A() { } };
+
+struct B {
+ A array[1]; //non-static member array of a literal type w constexpr ctor
+ constexpr B() : array{} { } // here is the problem
+};
+
+int main()
+{
+ constexpr B b{}; // won't compile
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-initlist5.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-initlist5.C
new file mode 100644
index 000000000..97f039998
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-initlist5.C
@@ -0,0 +1,15 @@
+// PR c++/50024
+// { dg-options -std=c++0x }
+
+template< class T >
+struct Container
+{
+ Container(){
+ int* ptr = new int{};
+ }
+};
+
+int main() {
+ Container< int > c;
+}
+
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-non-const-arg3.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-non-const-arg3.C
new file mode 100644
index 000000000..581be6d15
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-non-const-arg3.C
@@ -0,0 +1,23 @@
+// PR c++/49988
+// { dg-options -std=c++0x }
+// { dg-do run }
+
+template<int ... I> struct X { };
+
+struct A {
+ char data[3];
+ template<int ... I>
+ constexpr
+ A(const char (&s)[3], X<I...> x) : data{ s[I]...} { }
+};
+struct B {
+ A a;
+ B(const char (&s)[3]) : a{s,X<0,1,2>{}} { }
+};
+
+int main()
+{
+ B b{"12"};
+ if (b.a.data[0] != '1')
+ return 1;
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C
index 3af85095f..4ff398bf1 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C
@@ -7,7 +7,7 @@
// p 1 constexpr specifier
// objects, static const data
-struct A1 { }; // { dg-message "no user-provided default constructor" }
+struct A1 { int i; }; // { dg-message "no user-provided default constructor" }
constexpr int i1 = 1024;
constexpr A1 a1 = A1();
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-static8.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-static8.C
new file mode 100644
index 000000000..35c3f25c5
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-static8.C
@@ -0,0 +1,7 @@
+// PR c++/50258
+// { dg-options "-std=c++0x -pedantic" }
+
+struct Foo {
+ static const double d = 3.14; // { dg-warning "constexpr" }
+};
+const double Foo::d;
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-static8_nonpedantic.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-static8_nonpedantic.C
new file mode 100644
index 000000000..28d34a1d7
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-static8_nonpedantic.C
@@ -0,0 +1,7 @@
+// PR c++/50258
+// { dg-options "-std=c++0x" }
+
+struct Foo {
+ static const double d = 3.14; // no warning
+};
+const double Foo::d;
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-typedef1.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-typedef1.C
new file mode 100644
index 000000000..2719e3aea
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-typedef1.C
@@ -0,0 +1,11 @@
+// PR c++/50508
+// { dg-options -std=c++0x }
+
+template <class T>
+ struct integral_constant {
+ typedef T value_type;
+ constexpr operator value_type() { return true; }
+ };
+
+static constexpr bool value = integral_constant<bool>()
+ && true;
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-value3.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-value3.C
new file mode 100644
index 000000000..38d89936e
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/constexpr-value3.C
@@ -0,0 +1,10 @@
+// PR c++/50234
+// { dg-options -std=c++0x }
+
+#define SA(X) static_assert((X),#X)
+
+struct A { int i; };
+
+constexpr int f(A a) { return a.i; }
+
+SA(f({}) == 0);
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/decltype31.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/decltype31.C
new file mode 100644
index 000000000..b9817eb9e
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/decltype31.C
@@ -0,0 +1,13 @@
+// PR c++/49921
+// { dg-options -std=c++0x }
+
+struct Local
+{
+ void f();
+};
+
+Local *l;
+void (Local::*ptr)();
+decltype((l->*ptr)) i; // { dg-error "member function" }
+
+// { dg-prune-output "invalid type in declaration" }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/decltype35.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/decltype35.C
new file mode 100644
index 000000000..d1fd47638
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/decltype35.C
@@ -0,0 +1,15 @@
+// PR c++/50870
+// { dg-options -std=c++0x }
+
+template <class V>
+ struct impl
+ {
+ template <class T> static T create();
+ };
+
+template <class T, class U, class V, class
+ = decltype(impl<V>::template create<T>()
+ -> impl<V>::template create<U>())>
+struct tester { };
+
+tester<impl<float>*, int, float> ti;
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/decltype36.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/decltype36.C
new file mode 100644
index 000000000..f3dfed992
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/decltype36.C
@@ -0,0 +1,21 @@
+// PR c++/51265
+// { dg-options -std=c++0x }
+
+struct Funny
+{
+ int print(int);
+};
+
+template<typename X>
+void c();
+
+template<typename X, X ff>
+void xx()
+{
+ c<decltype(ff)>();
+}
+
+int main()
+{
+ xx<int(Funny::*)(int), &Funny::print>();
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/defaulted2.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
index 1f400f4fa..e3aac8f1a 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/defaulted2.C
@@ -17,7 +17,8 @@ void g() = delete; // { dg-error "redefinition" }
struct B // { dg-message "user-provided default constructor" }
{
- B() = default; // { dg-message "not user-provided" }
+ int i;
+ B() = default; // { dg-message "not user-provided" }
};
const B b; // { dg-error "uninitialized const" }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/defaulted32.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/defaulted32.C
new file mode 100644
index 000000000..351cdae11
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/defaulted32.C
@@ -0,0 +1,21 @@
+// PR c++/50531
+// { dg-options -std=c++0x }
+
+template <typename T>
+class DataFilter
+{
+ public:
+ inline virtual ~DataFilter();
+};
+
+template<typename T>
+inline DataFilter<T>::~DataFilter() = default;
+
+class ARCalculator : public DataFilter<ARCalculator>
+{
+ public:
+ virtual void dataStart(int, int);
+};
+
+void ARCalculator::dataStart(int, int)
+{}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist-49216.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist-49216.C
new file mode 100644
index 000000000..4bf608229
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist-49216.C
@@ -0,0 +1,6 @@
+// PR c++/49216
+// { dg-options -std=c++0x }
+
+int main() {
+ new int[1]{};
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist17.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist17.C
index 86371e819..6ea08d150 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist17.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist17.C
@@ -1,4 +1,4 @@
-// { dg-options "-std=c++0x" }
+// { dg-options "-std=c++0x -pedantic-errors" }
void f(int i);
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist36.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist36.C
index 94624c977..a703b4590 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist36.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist36.C
@@ -1,5 +1,5 @@
// PR c++/44358
-// { dg-options "-std=c++0x" }
+// { dg-options "-std=c++0x -pedantic-errors" }
#include <initializer_list>
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist5.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist5.C
index 32caac382..dbd17ecbb 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist5.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist5.C
@@ -1,5 +1,5 @@
// Test for narrowing diagnostics
-// { dg-options "-std=c++0x" }
+// { dg-options "-std=c++0x -pedantic-errors" }
#include <initializer_list>
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist57.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist57.C
new file mode 100644
index 000000000..d945a4689
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist57.C
@@ -0,0 +1,8 @@
+// PR c++/50054
+// { dg-options -std=c++0x }
+
+void g( const int& (a)[1] ) {} // { dg-error "array of references" }
+
+int main () {
+ g( { 1, 2 } ); // { dg-error "initializer list" }
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist7.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist7.C
index 7913ed7ed..55a037186 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist7.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/initlist7.C
@@ -1,5 +1,5 @@
// PR c++/37932
-// { dg-options "-std=c++0x" }
+// { dg-options "-std=c++0x -pedantic-errors" }
typedef enum { AA=1, BB=2 } my_enum;
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-50220.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-50220.C
new file mode 100644
index 000000000..240143cf6
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-50220.C
@@ -0,0 +1,9 @@
+// PR c++/50220
+// { dg-options -std=c++0x }
+
+template<typename Foo> struct Foobar {};
+
+void foobar(const Foobar<void>& obj)
+{
+ [obj](){}();
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg2.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg2.C
new file mode 100644
index 000000000..f47c5ba27
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-defarg2.C
@@ -0,0 +1,7 @@
+// PR c++/43886
+// { dg-options -std=c++0x }
+
+void f2() {
+ int i = 1;
+ void g5(int = ([]{ return sizeof i; })());
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh2.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh2.C
index 1490a2508..0c94b554f 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh2.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-eh2.C
@@ -1,5 +1,6 @@
// PR c++/47263
-// { dg-options -std=c++0x }
+// PR c++/49260
+// { dg-options "-std=c++0x -fno-asynchronous-unwind-tables -fno-dwarf2-cfi-asm" }
// { dg-do run }
#include <exception>
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-qualified.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-qualified.C
new file mode 100644
index 000000000..ef041c2bb
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-qualified.C
@@ -0,0 +1,17 @@
+// PR c++/50089
+// { dg-options -std=c++0x }
+
+struct TestBase
+{
+ void foo() {}
+};
+
+struct Test : TestBase
+{
+ void foo()
+ {
+ [this]{
+ /*this->*/TestBase::foo(); // ICE without this->
+ }();
+ }
+};
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-use2.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-use2.C
new file mode 100644
index 000000000..695a0b432
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-use2.C
@@ -0,0 +1,11 @@
+// PR c++/50224
+// { dg-options "-std=c++0x -Wunused-parameter" }
+
+struct T;
+
+void m(T& t) // ERROR here
+{
+ [&]{
+ t; // ``t`` is referenced here
+ };
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/noexcept11.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/noexcept11.C
new file mode 100644
index 000000000..eba2c4080
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/noexcept11.C
@@ -0,0 +1,4 @@
+// PR c++/50309
+// { dg-options -std=c++0x }
+
+void foo () noexcept () { } // { dg-error "expected" }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr42844-2.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr42844-2.C
index 5af4ff217..4425aacf6 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr42844-2.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr42844-2.C
@@ -4,6 +4,7 @@
struct A // { dg-message "user-provided default constructor" }
{
+ int i;
A() = default; // { dg-message "not user-provided" }
};
@@ -14,17 +15,20 @@ struct Base
struct Derived : Base // { dg-message "user-provided default constructor" }
{
+ int i;
Derived() = default; // { dg-message "not user-provided" }
};
struct Derived2 : Base // { dg-message "user-provided default constructor" }
{
+ int i;
Derived2() = default; // { dg-message "not user-provided" }
Derived2( Derived2 const& ) = default;
};
struct Derived3 : Base // { dg-message "user-provided default constructor" }
{
+ int i;
Derived3( Derived3 const& ) = default;
Derived3() = default; // { dg-message "not user-provided" }
};
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr50491.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr50491.C
new file mode 100644
index 000000000..48e7a1f74
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr50491.C
@@ -0,0 +1,17 @@
+// { dg-options "-std=c++0x" }
+
+struct GrandParent {
+ void *get();
+};
+
+template<class OBJ>
+struct Parent : public GrandParent{
+};
+
+template<typename T>
+struct Child : public Parent<T> {
+ using GrandParent::get;
+ void Foo() {
+ void* ex = get();
+ }
+};
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr50901.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr50901.C
new file mode 100644
index 000000000..439c15cc1
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr50901.C
@@ -0,0 +1,9 @@
+// { dg-options "-std=c++0x" }
+
+template<class T> int foo(int a)
+{
+ const unsigned b = a < 0 ? -a : a;
+ return 0;
+}
+
+int i = foo<float>(1);
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr51150.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr51150.C
new file mode 100644
index 000000000..37eb166b4
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/pr51150.C
@@ -0,0 +1,20 @@
+// PR c++/51150
+// { dg-options "-std=c++0x" }
+
+struct Clock {
+ double Now();
+};
+template <class T> void Foo(Clock* clock) {
+ const int now = clock->Now();
+}
+
+template void Foo<float>(Clock*);
+
+template <class T> void Boo(int val) {
+ const int now1 = (double)(val);
+ const int now2 = const_cast<double>(val); // { dg-error "invalid" }
+ const int now3 = static_cast<double>(val);
+ const int now4 = reinterpret_cast<double>(val); // { dg-error "invalid" }
+}
+
+template void Boo<float>(int);
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/rv-cast3.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/rv-cast3.C
new file mode 100644
index 000000000..e7d5b6d34
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/rv-cast3.C
@@ -0,0 +1,18 @@
+// PR c++/51406
+// { dg-do run }
+// { dg-options "-std=c++0x" }
+
+extern "C" int printf(const char *,...);
+extern "C" void abort();
+
+struct A { int a; A() : a(1) {} };
+struct B { int b; B() : b(2) {} };
+struct X : A, B {};
+
+int main() {
+ X x;
+ int a=static_cast<A&&>(x).a;
+ int b=static_cast<B&&>(x).b;
+ // printf ("%d %d\n", a, b);
+ if (a!=1 || b!=2) abort();
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/rv-cast4.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/rv-cast4.C
new file mode 100644
index 000000000..8f4a56bf9
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/rv-cast4.C
@@ -0,0 +1,13 @@
+// PR c++/51161
+// { dg-options "-std=c++0x" }
+
+struct A{};
+struct B : A{};
+struct C : A{};
+struct D : B, C{};
+
+int main()
+{
+ D d;
+ static_cast<A &&>(d); // { dg-error "ambiguous" }
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/sfinae27.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/sfinae27.C
new file mode 100644
index 000000000..93327ba9c
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/sfinae27.C
@@ -0,0 +1,20 @@
+// PR c++/50157
+// { dg-options -std=c++0x }
+
+template<class T>
+T val();
+
+template<class T, class Arg, class =
+ decltype(::new T(val<Arg>()))
+>
+auto test(int) -> char;
+
+template<class, class>
+auto test(...) -> char (&)[2];
+
+struct P {
+ explicit operator bool(); // (#13)
+};
+
+typedef decltype(test<bool, P>(0)) type; // OK
+typedef decltype(test<float, P>(0)) type2; // Error (#17)
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/union5.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/union5.C
new file mode 100644
index 000000000..423b34823
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/union5.C
@@ -0,0 +1,23 @@
+// PR c++/49803
+// { dg-options -std=c++0x }
+
+struct X
+{
+ X() = delete;
+};
+
+union Y
+{
+ // N3291=11-0061 12.6.2/8 says no initialization of
+ // of other variant members (i.e. m_x) should
+ // be performed.
+ Y() : m_char1{ }
+ { }
+
+ struct
+ {
+ char m_char1;
+ };
+
+ X m_x;
+};
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic-unresolved.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic-unresolved.C
new file mode 100644
index 000000000..a8463de19
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic-unresolved.C
@@ -0,0 +1,12 @@
+// PR c++/50086
+// { dg-options -std=c++0x }
+
+template<typename T> void tfun();
+template<typename T> void fun1(T);
+template<typename... Types> void fun2(Types... args);
+
+int main()
+{
+ fun1(tfun<int>); // ok
+ fun2(tfun<int>); // error: unresolved overloaded function type
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic103.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic103.C
index 6d12331d0..9d6b5ea20 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic103.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic103.C
@@ -5,7 +5,7 @@ T&& create();
template<class T, class... Args>
void test() {
- T t(create<Args>()...); // { dg-error "unknown bound" }
+ T t(create<Args>()...); // { dg-error "incomplete" }
(void) t;
}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic114.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic114.C
new file mode 100644
index 000000000..3ffede5c5
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic114.C
@@ -0,0 +1,27 @@
+// PR c++/49785
+// { dg-options -std=c++0x }
+
+template <typename, typename ...> struct B { };
+template <typename> class A;
+
+template <typename R, typename ... S>
+struct A <R (S ...)> : public B <R, S ...>
+{
+ struct C {};
+ template <typename D> A (D, C = C ()) { }
+ R operator () (...);
+};
+
+template <typename R, typename ... S, typename T>
+auto operator >> (A <R (S ...)>, T)->A <R (S ...)>
+{
+ []() {};
+}
+
+int
+main ()
+{
+ A <int (int, int)> a = [](int, int) {};
+ auto b = []{};
+ (a >> b) (3, 5);
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic115.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic115.C
new file mode 100644
index 000000000..fa032e3b0
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic115.C
@@ -0,0 +1,19 @@
+// PR c++/49593
+// { dg-options -std=c++0x }
+
+template<typename... T> void f(T...) { }
+
+template<typename... Args>
+static void
+g(Args&&... args)
+{
+ f( static_cast<Args>(args)... );
+ f( (Args)args... );
+ f( Args(args)... );
+ f( Args{args}... );
+}
+
+int main()
+{
+ g(1, '2', 3.0);
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic116.C b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic116.C
new file mode 100644
index 000000000..079d751cb
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/cpp0x/variadic116.C
@@ -0,0 +1,32 @@
+// Origin: PR c++/48320
+// { dg-options -std=c++0x }
+
+template<class... T>
+struct tuple
+{
+ typedef int type;
+};
+
+template<int... Indices>
+struct indices
+{
+};
+
+template<unsigned i, class Tuple>
+struct tuple_element
+{
+ typedef Tuple type;
+};
+
+template<class Tuple,
+ int... Indices,
+ class Result = tuple<typename tuple_element<Indices, Tuple>::type...> >
+Result
+f(Tuple&&, indices<Indices...>);
+
+
+void
+foo()
+{
+ f(tuple<int, char, unsigned> (), indices<2, 1, 0> ());
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/debug/dwarf2/icf.C b/gcc-4.6/gcc/testsuite/g++.dg/debug/dwarf2/icf.C
index af2c112b6..523ee8700 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/debug/dwarf2/icf.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/debug/dwarf2/icf.C
@@ -40,11 +40,11 @@ test2(A* a)
// Verify that we get .debug_dcall and .debug_vcall tables generated
// and that we see entries for both virtual calls.
-// { dg-final { scan-assembler "\\.section.*\.debug_dcall" } }
+// { dg-final { scan-assembler "\\.section.*\.debug_dcall" { xfail mips-sgi-irix* } } }
// { dg-final { scan-assembler "\\.section.*\.debug_vcall" } }
-// { dg-final { scan-assembler "New caller" } }
-// { dg-final { scan-assembler "Caller DIE offset" } }
+// { dg-final { scan-assembler "New caller" { xfail mips-sgi-irix* } } }
+// { dg-final { scan-assembler "Caller DIE offset" { xfail mips-sgi-irix* } } }
// { dg-final { scan-assembler "Point of call" } }
-// { dg-final { scan-assembler "Callee DIE offset" } }
+// { dg-final { scan-assembler "Callee DIE offset" { xfail mips-sgi-irix* } } }
// { dg-final { scan-assembler "0\[ \t\]+.*Vtable slot" } }
// { dg-final { scan-assembler "0x1\[ \t\]+.*Vtable slot" } }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/dfp/44473-1.C b/gcc-4.6/gcc/testsuite/g++.dg/dfp/44473-1.C
new file mode 100644
index 000000000..38689fa16
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/dfp/44473-1.C
@@ -0,0 +1,122 @@
+/* { dg-do assemble } */
+
+/* Minimized from the testcase in PR c++/44473; mangling of decimal types
+ did not include CV qualifiers. */
+
+namespace std
+{
+ namespace decimal
+ {
+ class decimal32
+ {
+ public:
+ typedef float __decfloat32 __attribute__ ((mode (SD)));
+ explicit decimal32 (float __r):__val (__r) {}
+ private:
+ __decfloat32 __val;
+ };
+ };
+
+ template <typename _BI1, typename _BI2>
+ _BI2 copy_backward (_BI1 __first, _BI2 __result);
+}
+
+namespace __gnu_cxx
+{
+ template <typename _Iterator, typename _Container>
+ class __normal_iterator
+ {
+ public:
+ explicit __normal_iterator (const _Iterator & __i) {}
+ const _Iterator & base () const {}
+ };
+
+ template <typename _IteratorL, typename _IteratorR, typename _Container>
+ bool operator== (const __normal_iterator <_IteratorL, _Container> &__lhs,
+ const __normal_iterator <_IteratorR, _Container> &__rhs)
+ {
+ return __lhs.base () == __rhs.base ();
+ }
+
+ template <typename _Tp>
+ class new_allocator
+ {
+ public:
+ typedef _Tp *pointer;
+ typedef const _Tp *const_pointer;
+ template <typename _Tp1>
+ struct rebind
+ {
+ typedef new_allocator <_Tp1> other;
+ };
+ };
+}
+
+namespace std
+{
+ template <typename _Tp>
+ class allocator:public __gnu_cxx::new_allocator <_Tp> {};
+
+ template <typename _Tp, typename _Alloc>
+ struct _Vector_base
+ {
+ typedef typename _Alloc::template rebind <_Tp>::other _Tp_alloc_type;
+ struct _Vector_impl:public _Tp_alloc_type
+ {
+ typename _Tp_alloc_type::pointer _M_finish;
+ };
+ public: _Vector_impl _M_impl;
+ };
+
+ template <typename _Tp, typename _Alloc = std::allocator <_Tp> >
+ class vector:protected _Vector_base <_Tp, _Alloc>
+ {
+ typedef _Vector_base <_Tp, _Alloc> _Base;
+ typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
+ public:
+ typedef _Tp value_type;
+ typedef typename _Tp_alloc_type::pointer pointer;
+ typedef typename _Tp_alloc_type::const_pointer const_pointer;
+ typedef __gnu_cxx::__normal_iterator <pointer, vector> iterator;
+ typedef __gnu_cxx::__normal_iterator <const_pointer, vector>
+ const_iterator;
+ const_iterator begin () const;
+ iterator end ()
+ {
+ return iterator (this->_M_impl._M_finish);
+ }
+ const_iterator end () const
+ {
+ return const_iterator (this->_M_impl._M_finish);
+ }
+ bool empty () const
+ {
+ return begin () == end ();
+ }
+ void push_back (const value_type & __x)
+ {
+ _M_insert_aux (end ());
+ }
+ void _M_insert_aux (iterator __position);
+ };
+
+ template <typename _Tp, typename _Alloc>
+ void vector <_Tp, _Alloc>::_M_insert_aux (iterator __position)
+ {
+ std::copy_backward (__position.base (), this->_M_impl._M_finish - 1);
+ }
+}
+
+std::vector <std::decimal::decimal32> vec;
+
+int
+foo ()
+{
+ return (vec.empty ()) ? 1 : 0;
+}
+
+bool
+bar ()
+{
+ vec.push_back (std::decimal::decimal32 (0));
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/dfp/44473-2.C b/gcc-4.6/gcc/testsuite/g++.dg/dfp/44473-2.C
new file mode 100644
index 000000000..311f62299
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/dfp/44473-2.C
@@ -0,0 +1,25 @@
+// { dg-do compile }
+
+// Mangling of classes from std::decimal are special-cased.
+
+namespace std {
+ namespace decimal {
+ class decimal64 {
+ public:
+ typedef float __decfloat64 __attribute__ ((mode (DD)));
+ explicit decimal64 (int __r):__val (__r) {}
+ private:
+ __decfloat64 __val;
+ };
+ }
+}
+
+int bar (const std::decimal::decimal64 & x) { }
+
+int foo ()
+{
+ std::decimal::decimal64 x(0);
+ bar (x);
+}
+
+// { dg-final { scan-assembler "_Z3barRKDd:" } }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/dfp/base.C b/gcc-4.6/gcc/testsuite/g++.dg/dfp/base.C
new file mode 100644
index 000000000..3e5dc50ba
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/dfp/base.C
@@ -0,0 +1,23 @@
+// PR c++/50207
+// { dg-do compile }
+
+namespace std
+{
+ namespace decimal
+ {
+ template <class _Fmt> struct _FmtTraits;
+ class decimal32;
+ template <> struct _FmtTraits <decimal32>
+ {
+ static const long _NumBytes = 4UL;
+ };
+ template <class _Tr> class _DecBase
+ {
+ unsigned char _Bytes[_Tr::_NumBytes];
+ };
+ class decimal32 : public _DecBase <_FmtTraits <decimal32> > // { dg-error "has base" }
+ {
+ decimal32 () { }
+ };
+ }
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-1.C b/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-1.C
new file mode 100644
index 000000000..455d3e4c0
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-1.C
@@ -0,0 +1,40 @@
+// { dg-do compile }
+
+// Mangling of classes from std::decimal are special-cased.
+// Derived from g++.dg/abi/mangle13.C.
+
+namespace std {
+ namespace decimal {
+ class decimal64 {
+ public:
+ typedef float __decfloat64 __attribute__ ((mode (DD)));
+ explicit decimal64 (float __r):__val (__r) {}
+ private:
+ __decfloat64 __val;
+ };
+ }
+}
+
+struct A {
+ template <typename T> std::decimal::decimal64 f ();
+ std::decimal::decimal64 operator+();
+ operator std::decimal::decimal64 ();
+ template <typename T>
+ std::decimal::decimal64 operator-();
+};
+
+typedef std::decimal::decimal64 (A::*P)();
+
+template <P> struct S {};
+
+template <typename T> void g (S<&T::template f<std::decimal::decimal64> >) {}
+template <typename T> void g (S<&T::operator+ >) {}
+template <typename T> void g (S<&T::operator std::decimal::decimal64>) {}
+template <typename T> void g (S<&T::template operator- <std::decimal::decimal64> >) {}
+
+template void g<A> (S<&A::f<std::decimal::decimal64> >);
+template void g<A> (S<&A::operator+>);
+template void g<A> (S<&A::operator std::decimal::decimal64>);
+
+// { dg-final { scan-assembler "\n?_Z1gI1AEv1SIXadsrT_1fIDdEEE\[: \t\n\]" } }
+// { dg-final { scan-assembler "\n?_Z1gI1AEv1SIXadsrT_plEE\[: \t\n\]" } }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-2.C b/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-2.C
new file mode 100644
index 000000000..1af9aa1a0
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-2.C
@@ -0,0 +1,28 @@
+// { dg-do compile }
+
+// Mangling of classes from std::decimal are special-cased.
+// Derived from g++.dg/abi/mangle15.C.
+
+namespace std {
+ namespace decimal {
+ class decimal64 {
+ public:
+ typedef float __decfloat64 __attribute__ ((mode (DD)));
+ explicit decimal64 (float __r):__val (__r) {}
+ private:
+ __decfloat64 __val;
+ };
+ }
+}
+
+struct A {
+ template <typename T> std::decimal::decimal64 f ();
+};
+
+typedef std::decimal::decimal64 (A::*P)();
+
+template <P> struct S {};
+
+void g (S<&A::f<std::decimal::decimal64> >) {}
+
+// { dg-final { scan-assembler "\n?_Z1g1SIXadL_ZN1A1fIDdEEDdvEEE\[: \t\n\]" } }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-3.C b/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-3.C
new file mode 100644
index 000000000..c716ed0e9
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-3.C
@@ -0,0 +1,28 @@
+// { dg-do compile }
+
+// Mangling of classes from std::decimal are special-cased.
+// Derived from g++.dg/abi/mangle20-1.C.
+
+namespace std {
+ namespace decimal {
+ class decimal64 {
+ public:
+ typedef float __decfloat64 __attribute__ ((mode (DD)));
+ explicit decimal64 (int __r):__val (__r) {}
+ private:
+ __decfloat64 __val;
+ };
+ }
+}
+
+template <int I> void f(std::decimal::decimal64 (*)[2]) {}
+template <int I> void g(std::decimal::decimal64 (*)[I+2]) {}
+
+static const std::decimal::decimal64 I(1);
+static const std::decimal::decimal64 J(2);
+
+template void f<1>(std::decimal::decimal64 (*)[2]);
+template void g<1>(std::decimal::decimal64 (*)[3]);
+
+// { dg-final { scan-assembler "\n_?_Z1fILi1EEvPA2_Dd\[: \t\n\]" } }
+// { dg-final { scan-assembler "\n_?_Z1gILi1EEvPAplT_Li2E_Dd\[: \t\n\]" } }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-4.C b/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-4.C
new file mode 100644
index 000000000..899d5661c
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-4.C
@@ -0,0 +1,35 @@
+// { dg-do compile }
+
+// Mangling of classes from std::decimal are special-cased.
+// Derived from g++.dg/abi/mangle30.C.
+
+namespace std {
+ namespace decimal {
+ class decimal64 {
+ public:
+ typedef float __decfloat64 __attribute__ ((mode (DD)));
+ explicit decimal64 (int __r):__val (__r) {}
+ private:
+ __decfloat64 __val;
+ };
+ }
+}
+
+struct A
+{
+ template <class T>
+ struct B
+ {
+ typedef T myT;
+ };
+};
+
+template <class T>
+void f (T t, typename T::template B<std::decimal::decimal64>::myT u, typename T::template B<int>::myT v);
+
+void foo ()
+{
+ f (A(), std::decimal::decimal64(0), 1);
+}
+
+// { dg-final { scan-assembler "_Z1fI1AEvT_NS1_1BIDdE3myTENS2_IiE3myTE" } }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-5.C b/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-5.C
new file mode 100644
index 000000000..794577f86
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/dfp/mangle-5.C
@@ -0,0 +1,29 @@
+// { dg-do compile }
+
+// Mangling of classes from std::decimal are special-cased.
+// Derived from g++.dg/abi/mangle35.C.
+
+namespace std {
+ namespace decimal {
+ class decimal128 {
+ public:
+ typedef float __decfloat128 __attribute__ ((mode (TD)));
+ explicit decimal128 (int __r):__val (__r) {}
+ private:
+ __decfloat128 __val;
+ };
+ }
+}
+
+template<void (*)()> struct A {};
+
+template<typename> void foo();
+
+template<typename T> A<foo<T> > bar();
+
+void baz()
+{
+ bar<std::decimal::decimal128>();
+}
+
+// { dg-final { scan-assembler "_Z3barIDeE1AIX3fooIT_EEEv" } }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/dfp/nofields.C b/gcc-4.6/gcc/testsuite/g++.dg/dfp/nofields.C
new file mode 100644
index 000000000..7234672d4
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/dfp/nofields.C
@@ -0,0 +1,19 @@
+// PR c++/46862
+// { dg-do compile }
+
+namespace std
+{
+ namespace decimal
+ {
+ class decimal32 { }; // { dg-error "does not have any fields" }
+ class decimal64 { }; // { dg-error "does not have any fields" }
+ class decimal128 { }; // { dg-error "does not have any fields" }
+ }
+}
+
+void
+foo (std::decimal::decimal32 x,
+ std::decimal::decimal64 y,
+ std::decimal::decimal128 z)
+{
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/eh/defarg1.C b/gcc-4.6/gcc/testsuite/g++.dg/eh/defarg1.C
new file mode 100644
index 000000000..5c6e4df49
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/eh/defarg1.C
@@ -0,0 +1,10 @@
+// PR c++/50424
+// { dg-do run }
+
+int f() { throw 1; }
+void g( int = f() ) { }
+void h() { g(); }
+int main()
+{
+ try { h(); } catch (int) { }
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/ext/altivec-17.C b/gcc-4.6/gcc/testsuite/g++.dg/ext/altivec-17.C
index 54eff8a24..099f8742e 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/ext/altivec-17.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/ext/altivec-17.C
@@ -12,5 +12,5 @@ typedef vector__ bool__ int bool_simd_type;
void Foo (bool_simd_type const &a)
{
- simd_type const &v = a; // { dg-error "'const simd_type&' from expression of type 'const bool_simd_type'" }
+ simd_type const &v = a; // { dg-error "invalid initialization of reference of type" }
}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/ext/pretty3.C b/gcc-4.6/gcc/testsuite/g++.dg/ext/pretty3.C
index 01b14579a..e59d77e1e 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/ext/pretty3.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/ext/pretty3.C
@@ -16,4 +16,4 @@ int main ()
{
printf ("%s\n", D<int>().foo (0));
}
-// { dg-final { scan-assembler "const char\\* D<U>::foo\\(typename B<U>::X\\)" } }
+// { dg-final { scan-assembler "char const\\* D<U>::foo\\(typename B<U>::X\\)" } }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/fstack-protector-strong.C b/gcc-4.6/gcc/testsuite/g++.dg/fstack-protector-strong.C
new file mode 100644
index 000000000..a4f0f8163
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/fstack-protector-strong.C
@@ -0,0 +1,35 @@
+/* Test that stack protection is done on chosen functions. */
+
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O2 -fstack-protector-strong" } */
+
+class A
+{
+public:
+ A() {}
+ ~A() {}
+ void method();
+ int state;
+};
+
+/* Frame address exposed to A::method via "this". */
+int
+foo1 ()
+{
+ A a;
+ a.method ();
+ return a.state;
+}
+
+/* Possible destroying foo2's stack via &a. */
+int
+global_func (A& a);
+
+/* Frame address exposed to global_func. */
+int foo2 ()
+{
+ A a;
+ return global_func (a);
+}
+
+/* { dg-final { scan-assembler-times "stack_chk_fail" 2 } } */
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/gcov/gcov-2.C b/gcc-4.6/gcc/testsuite/g++.dg/gcov/gcov-2.C
index 6d002f5d2..66d8af39b 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/gcov/gcov-2.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/gcov/gcov-2.C
@@ -20,7 +20,7 @@ private:
void foo()
{
- C c; /* count(2) */
+ C c; /* count(1) */
c.seti (1); /* count(1) */
}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/init/array28.C b/gcc-4.6/gcc/testsuite/g++.dg/init/array28.C
new file mode 100644
index 000000000..8cf19ba43
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/init/array28.C
@@ -0,0 +1,7 @@
+// PR c++/49669
+
+struct Foo { explicit Foo(int) { } };
+struct Goo {
+ Goo() : x(Foo(4), Foo(5)) { } // { dg-error "array" }
+ Foo x[2];
+};
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/init/const8.C b/gcc-4.6/gcc/testsuite/g++.dg/init/const8.C
new file mode 100644
index 000000000..4eb293d65
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/init/const8.C
@@ -0,0 +1,11 @@
+// DR 234 - it should be OK to leave off the initializer of a const
+// variable if the default constructor fully initializes the object.
+
+struct A { };
+const A a;
+
+struct B { A a; };
+const B b;
+
+struct C { virtual void f(); };
+const C c;
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/init/pr42844.C b/gcc-4.6/gcc/testsuite/g++.dg/init/pr42844.C
index 7b423ccb6..299a30a91 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/init/pr42844.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/init/pr42844.C
@@ -6,19 +6,19 @@ struct A
A(){}
};
-struct B : A {}; // { dg-message "user-provided default constructor" }
+struct B : A { int i; }; // { dg-message "user-provided default constructor" }
-struct C : A {}; // { dg-message "user-provided default constructor" }
+struct C : A { int i; }; // { dg-message "user-provided default constructor" }
struct D : B { D() {} };
-struct E {}; // { dg-message "user-provided default constructor" }
+struct E { int i; }; // { dg-message "user-provided default constructor" }
template <class T>
-struct F : A {}; // { dg-message "user-provided default constructor" }
+struct F : A { T t; }; // { dg-message "user-provided default constructor" }
template <class T>
-struct G {}; // { dg-message "user-provided default constructor" }
+struct G { T t; }; // { dg-message "user-provided default constructor" }
void f ()
{
@@ -41,9 +41,9 @@ void f ()
extern G<int> const gext;
}
-struct H {}; // { dg-message "user-provided default constructor" }
+struct H { int i; }; // { dg-message "user-provided default constructor" }
-struct I : A {}; // { dg-message "user-provided default constructor" }
+struct I : A { int i; }; // { dg-message "user-provided default constructor" }
template <class T>
void g ()
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/init/ref20.C b/gcc-4.6/gcc/testsuite/g++.dg/init/ref20.C
new file mode 100644
index 000000000..b64cb57e0
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/init/ref20.C
@@ -0,0 +1,8 @@
+// PR c++/50787
+// { dg-do run }
+
+int main() {
+ const int Ci = 0;
+ const int &rCi = Ci;
+ if (!(&Ci == &rCi)) __builtin_abort();
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/init/value10.C b/gcc-4.6/gcc/testsuite/g++.dg/init/value10.C
new file mode 100644
index 000000000..2066410a0
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/init/value10.C
@@ -0,0 +1,27 @@
+// PR c++/51331
+// { dg-do run }
+
+struct A {
+ A(): x(10) {}
+ virtual ~A() {}
+
+ int x;
+};
+
+struct B: public virtual A {
+};
+
+struct C: public virtual A {
+};
+
+struct D: public B, virtual public C {
+ D(): B(), C() {} // note an explicit call to C() which is auto-generated
+};
+
+int main() {
+ D* d = new D();
+
+ // Crashes here with the following message:
+ // *** glibc detected *** ./test: free(): invalid next size (fast)
+ delete d;
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/init/value9.C b/gcc-4.6/gcc/testsuite/g++.dg/init/value9.C
new file mode 100644
index 000000000..4899bd810
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/init/value9.C
@@ -0,0 +1,32 @@
+// PR c++/50793
+// { dg-do run }
+
+struct NonTrivial
+{
+ NonTrivial() { }
+};
+
+struct S
+{
+ NonTrivial nt;
+ int i;
+};
+
+int f(S s)
+{
+ s.i = 0xdeadbeef;
+ return s.i;
+}
+
+int g(S s = S())
+{
+ return s.i;
+}
+
+int main()
+{
+ f(S()); // make stack dirty
+
+ if ( g() )
+ __builtin_abort();
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/init/vbase1.C b/gcc-4.6/gcc/testsuite/g++.dg/init/vbase1.C
new file mode 100644
index 000000000..bbfd58f5c
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/init/vbase1.C
@@ -0,0 +1,39 @@
+// PR c++/50618
+// { dg-do run }
+
+struct Base
+{
+ const int text;
+ Base():text(1) {}
+ Base(int aText)
+ : text(aText) {}
+};
+struct SubA : public virtual Base
+{
+protected:
+ int x;
+public:
+ SubA(int aX)
+ : x(aX) {}
+};
+class SubB : public virtual Base
+{};
+struct Diamond : public SubA, public SubB
+{
+ Diamond(int text)
+ : Base(text), SubA(5), SubB() {}
+
+ void printText()
+ {
+ if(text != 2)
+ __builtin_abort();
+ if(x!=5)
+ __builtin_abort();
+ }
+};
+
+int main(int, char**)
+{
+ Diamond x(2);
+ x.printText();
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/mversn10.C b/gcc-4.6/gcc/testsuite/g++.dg/mversn10.C
index adfbc1370..9d9bcd564 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/mversn10.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/mversn10.C
@@ -49,6 +49,6 @@ main ()
return 0;
}
-/* { dg-final { scan-tree-dump "dispatchv_clone_0" "optimized" } } */
-/* { dg-final { scan-tree-dump "dispatchv_clone_1" "optimized" } } */
+/* { dg-final { scan-tree-dump "dispatchv\.clone\.0" "optimized" } } */
+/* { dg-final { scan-tree-dump "dispatchv\.clone\.1" "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/mversn10a.C b/gcc-4.6/gcc/testsuite/g++.dg/mversn10a.C
index cf510f95c..738bfa932 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/mversn10a.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/mversn10a.C
@@ -32,6 +32,6 @@ fn2 ()
return 0;
}
-/* { dg-final { scan-tree-dump "dispatchv_clone_0" "optimized" } } */
-/* { dg-final { scan-tree-dump "dispatchv_clone_1" "optimized" } } */
+/* { dg-final { scan-tree-dump "dispatchv\.clone\.0" "optimized" } } */
+/* { dg-final { scan-tree-dump "dispatchv\.clone\.1" "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/mversn16.C b/gcc-4.6/gcc/testsuite/g++.dg/mversn16.C
index d19dca9b8..0fca33a62 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/mversn16.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/mversn16.C
@@ -35,5 +35,5 @@ int main ()
return 0;
}
-/* { dg-final { scan-tree-dump "dispatchv_clone" "optimized" } } */
+/* { dg-final { scan-tree-dump "dispatchv\.clone" "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/mversn8.C b/gcc-4.6/gcc/testsuite/g++.dg/mversn8.C
index 39c953bfc..d66867033 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/mversn8.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/mversn8.C
@@ -38,8 +38,8 @@ main (int argc, char **argv)
return (*ptr)();
}
-/* { dg-final { scan-tree-dump "dispatchv_clone_0" "optimized" } } */
-/* { dg-final { scan-tree-dump "dispatchv_clone_1" "optimized" } } */
-/* { dg-final { scan-tree-dump "main_clone_0" "optimized" } } */
-/* { dg-final { scan-tree-dump "main_clone_1" "optimized" } } */
+/* { dg-final { scan-tree-dump "dispatchv\.clone\.0" "optimized" } } */
+/* { dg-final { scan-tree-dump "dispatchv\.clone\.1" "optimized" } } */
+/* { dg-final { scan-tree-dump "main\.clone\.0" "optimized" } } */
+/* { dg-final { scan-tree-dump "main\.clone\.1" "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/other/enum2.C b/gcc-4.6/gcc/testsuite/g++.dg/other/enum2.C
new file mode 100644
index 000000000..3a28f2532
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/other/enum2.C
@@ -0,0 +1,3 @@
+// PR c++/51248
+
+enum E { e = sizeof(const E*) };
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/other/offsetof7.C b/gcc-4.6/gcc/testsuite/g++.dg/other/offsetof7.C
new file mode 100644
index 000000000..0ce2ee02a
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/other/offsetof7.C
@@ -0,0 +1,17 @@
+// PR c++/50608
+// Testcase by <dberger@oubliette.org>
+// { dg-do compile }
+
+struct A {
+ int offset;
+};
+
+struct B: public A {
+};
+
+struct C {
+ A a;
+ B b;
+};
+
+int fails = __builtin_offsetof (C, b.offset);
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/other/pr50464.C b/gcc-4.6/gcc/testsuite/g++.dg/other/pr50464.C
new file mode 100644
index 000000000..8c6721373
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/other/pr50464.C
@@ -0,0 +1,170 @@
+// { dg-do compile { target i?86-*-* x86_64-*-* } }
+// { dg-options "-O3 -mxop" }
+
+typedef long unsigned int size_t;
+typedef unsigned long ulong_t;
+typedef signed long slong_t;
+
+ template<typename _Iterator>
+ struct iterator_traits
+ {
+ typedef typename _Iterator::reference reference;
+ };
+
+ template<typename _Tp>
+ struct iterator_traits<_Tp*>
+ {
+ typedef _Tp& reference;
+ };
+
+ template<typename _Iterator, typename _Container>
+ class __normal_iterator
+ {
+ protected:
+ _Iterator _M_current;
+ typedef iterator_traits<_Iterator> __traits_type;
+
+ public:
+ typedef typename __traits_type::reference reference;
+
+ explicit
+ __normal_iterator(const _Iterator& __i) : _M_current(__i) { }
+
+ reference
+ operator*() const
+ { return *_M_current; }
+
+ __normal_iterator&
+ operator++()
+ {
+ ++_M_current;
+ return *this;
+ }
+
+ const _Iterator&
+ base() const
+ { return _M_current; }
+ };
+
+ template<typename _Iterator, typename _Container>
+ inline bool
+ operator!=(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() != __rhs.base(); }
+
+ template<typename _Tp>
+ class allocator
+ {
+ public:
+ typedef _Tp* pointer;
+ typedef _Tp value_type;
+
+ template<typename _Tp1>
+ struct rebind
+ { typedef allocator<_Tp1> other; };
+
+ pointer allocate(size_t __n, const void* = 0)
+ {
+ return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
+ }
+ };
+
+ template<typename _Tp, typename _Alloc>
+ struct _Vector_base
+ {
+ typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
+
+ struct _Vector_impl
+ : public _Tp_alloc_type
+ {
+ typename _Tp_alloc_type::pointer _M_start;
+ typename _Tp_alloc_type::pointer _M_finish;
+ typename _Tp_alloc_type::pointer _M_end_of_storage;
+
+ _Vector_impl(_Tp_alloc_type const& __a) { }
+ };
+
+ public:
+ typedef _Alloc allocator_type;
+
+ _Vector_base(size_t __n, const allocator_type& __a)
+ : _M_impl(__a)
+ {
+ this->_M_impl._M_start = this->_M_allocate(__n);
+ this->_M_impl._M_finish = this->_M_impl._M_start;
+ this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
+ }
+
+ public:
+ _Vector_impl _M_impl;
+
+ typename _Tp_alloc_type::pointer
+ _M_allocate(size_t __n)
+ { return __n != 0 ? _M_impl.allocate(__n) : 0; }
+
+ };
+
+ template<typename _Tp, typename _Alloc = allocator<_Tp> >
+ class vector : protected _Vector_base<_Tp, _Alloc>
+ {
+ typedef _Vector_base<_Tp, _Alloc> _Base;
+ typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
+
+ public:
+ typedef _Tp value_type;
+ typedef typename _Tp_alloc_type::pointer pointer;
+ typedef __normal_iterator<pointer, vector> iterator;
+ typedef _Alloc allocator_type;
+
+ protected:
+ using _Base::_M_allocate;
+ using _Base::_M_impl;
+
+ public:
+
+ explicit
+ vector(size_t __n, const value_type& __value = value_type(),
+ const allocator_type& __a = allocator_type())
+ : _Base(__n, __a)
+ { _M_fill_initialize(__n, __value); }
+
+ iterator begin()
+ { return iterator(this->_M_impl._M_start); }
+
+ iterator end()
+ { return iterator(this->_M_impl._M_finish); }
+
+ protected:
+ void
+ _M_fill_initialize(size_t __n, const value_type& __value)
+ {
+ this->_M_impl._M_finish = this->_M_impl._M_end_of_storage;
+ }
+ };
+
+ template<typename _InputIterator, typename _OutputIterator, typename _Tp>
+ _OutputIterator
+ replace_copy(_InputIterator __first, _InputIterator __last,
+ _OutputIterator __result,
+ const _Tp& __old_value, const _Tp& __new_value)
+ {
+ ;
+ for (; __first != __last; ++__first, ++__result)
+ if (*__first == __old_value)
+ *__result = __new_value;
+ else
+ *__result = *__first;
+ return __result;
+ }
+
+extern size_t shape_rank;
+
+void createDataspaceIdentifier()
+{
+ vector< ulong_t > dataspaceDims( shape_rank );
+ vector< ulong_t > maxDataspaceDims( shape_rank );
+
+ replace_copy(
+ dataspaceDims.begin(), dataspaceDims.end(),
+ maxDataspaceDims.begin(), ulong_t( 0 ), ((ulong_t)(slong_t)(-1)) );
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/other/sized-delete-1.C b/gcc-4.6/gcc/testsuite/g++.dg/other/sized-delete-1.C
new file mode 100644
index 000000000..76f861af3
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/other/sized-delete-1.C
@@ -0,0 +1,14 @@
+// { dg-do link}
+// { dg-options "-O -fsized-delete" }
+// { dg-final { scan-assembler "_ZdlPv\[mj\]" } }
+struct A
+{
+ int a[100];
+};
+
+int main(void)
+{
+ A *a = new A;
+ delete a;
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/pr44486.C b/gcc-4.6/gcc/testsuite/g++.dg/pr44486.C
index 01e84289f..1a23d57b5 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/pr44486.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/pr44486.C
@@ -7,4 +7,4 @@ namespace { S f() { const char * s = __PRETTY_FUNCTION__; return S(); } }
int main() { f(); }
-// { dg-final { scan-assembler "S \{anonymous\}::f" } }
+// { dg-final { scan-assembler "S \\(anonymous namespace\\)::f" } }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/pr48660.C b/gcc-4.6/gcc/testsuite/g++.dg/pr48660.C
new file mode 100644
index 000000000..37b61741a
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/pr48660.C
@@ -0,0 +1,22 @@
+template<int N> struct val { char a[N]; };
+
+class Base
+{
+public:
+ virtual val<1> get1() const = 0;
+ virtual val<2> get2() const = 0;
+ virtual val<3> get3() const = 0;
+ virtual val<4> get4() const = 0;
+};
+
+class Derived : public virtual Base
+{
+public:
+ virtual val<1> get1() const { return foo->get1(); }
+ virtual val<2> get2() const { return foo->get2(); }
+ virtual val<3> get3() const { return foo->get3(); }
+ virtual val<4> get4() const { return foo->get4(); }
+ Base *foo;
+};
+
+Base* make() { return new Derived; }
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/pr51151.C b/gcc-4.6/gcc/testsuite/g++.dg/pr51151.C
new file mode 100644
index 000000000..804498b5f
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/pr51151.C
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-Woverflow" } */
+template<typename T> class C {
+public:
+ void f() {
+ m = c2 + 1;
+ }
+ static const long unsigned int c1 = 7;
+ static const int c2 = c1 - 1;
+ int m;
+};
+template class C<int>;
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/template/partial12.C b/gcc-4.6/gcc/testsuite/g++.dg/template/partial12.C
new file mode 100644
index 000000000..05a3eca97
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/template/partial12.C
@@ -0,0 +1,27 @@
+// PR c++/46105
+
+template< typename T >
+struct empty { // support class is like stripped-down enable_if
+ typedef void type;
+};
+
+template< class T, typename v = void > // v is always void!
+struct element {
+ typedef typename T::value_type type;
+};
+
+template< class T > // T in deduced context, T::element_type is SFINAE:
+struct element< T, typename empty< typename T::element_type >::type > {
+ typedef typename T::element_type type;
+};
+
+template< class T >
+struct element< T const, typename empty< typename T::element_type >::type > {
+ typedef typename T::element_type const type;
+};
+
+struct has_et {
+ typedef int element_type;
+};
+
+element<has_et const>::type ip = 0;
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-79.C b/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-79.C
index 8558670f0..b3c93b4b7 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-79.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-79.C
@@ -75,3 +75,27 @@ void foo3()
(new FooDerived)->doSomething();
}
+class FooNodef;
+
+// test case for cast from undefined type
+void foo4(FooNodef *f) {
+ ((Foo*) f)->doSomething();
+}
+
+
+// Regression test for canonicalization of subexpressions that refer to
+// lockable objects.
+class LOCKABLE Base {
+public:
+ Mutex mu_;
+ virtual void baseMethod() SHARED_LOCKS_REQUIRED(mu_) = 0;
+};
+
+class Derived : public Base {
+public:
+ void foo() SHARED_LOCKS_REQUIRED(mu_);
+};
+
+void Derived::foo() {
+ baseMethod();
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-81.C b/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-81.C
new file mode 100644
index 000000000..5db3ccc1c
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-81.C
@@ -0,0 +1,17 @@
+// Test template methods in the presence of cloned constructors.
+// Regression test for bugfix.
+// { dg-do compile }
+// { dg-options "-Wthread-safety -O" }
+
+#include "thread_annot_common.h"
+
+Mutex mu_;
+Mutex mu2_;
+
+class Foo {
+ Foo() LOCKS_EXCLUDED(mu_) { }
+
+ template <class T>
+ void bar(T* t) LOCKS_EXCLUDED(mu2_) { }
+};
+
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-82.C b/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-82.C
new file mode 100644
index 000000000..556bab676
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-82.C
@@ -0,0 +1,48 @@
+// Regression tests: fix ICE issues when IPA-SRA deletes formal
+// function parameters.
+// { dg-do compile }
+// { dg-options "-Wthread-safety -O3" }
+
+#include "thread_annot_common.h"
+
+class Foo;
+void do_something(void* a);
+
+class Foo {
+ Mutex mu_;
+ int a GUARDED_BY(mu_);
+ int b;
+
+ // with optimization turned on, ipa-sra should eliminate the hidden
+ // "this" argument, thus invalidating EXCLUSIVE_LOCKS_REQUIRED.
+ inline void clone_me_ipasra(Foo* f) EXCLUSIVE_LOCKS_REQUIRED(mu_) {
+ do_something(f);
+ }
+
+ void foo(Foo* f);
+ void bar();
+};
+
+void Foo::foo(Foo* f) {
+ mu_.Lock();
+ // in the cloned version, it looks like the required lock is f->mu_
+ // we should detect this and ignore the attribute.
+ clone_me_ipasra(f);
+ mu_.Unlock();
+}
+
+
+class SCOPED_LOCKABLE DummyMutexLock {
+public:
+ // IPA-SRA should kill the parameters to these functions
+ explicit DummyMutexLock(Mutex* mutex) EXCLUSIVE_LOCK_FUNCTION(mutex) {}
+ ~DummyMutexLock() UNLOCK_FUNCTION() {}
+};
+
+
+void Foo::bar() {
+ // Matches two warnings:
+ DummyMutexLock dlock(&mu_); // { dg-warning "lock attribute has been removed by optimization" }
+ a = 1; // warning here should be suppressed, due to errors handling dlock
+ b = 2; // { dg-warning "unlock attribute has been removed by optimization" }
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-83.C b/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-83.C
new file mode 100644
index 000000000..35e58c09e
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-83.C
@@ -0,0 +1,55 @@
+// Regression test for two bugfixes.
+// Bugfix 1: Shared locks are not properly removed from locksets
+// if a "universal lock" is present.
+// Bugfix 2: Canonicalization does not properly store the lock in
+// the hash table if the lock function is attached to a base class.
+// { dg-do compile }
+// { dg-options "-Wthread-safety" }
+
+#include "thread_annot_common.h"
+
+class Foo;
+
+/* Bugfix 1 */
+class Bar {
+public:
+ Foo* foo;
+ Mutex mu_;
+
+ // foo->mu_ is not visible at this point in the code.
+ // so the attribute will become a "universal lock."
+ void bar() EXCLUSIVE_LOCKS_REQUIRED(foo->mu_);
+};
+
+
+class Foo {
+public:
+ Mutex mu_;
+ int a;
+};
+
+
+void Bar::bar() {
+ ReaderMutexLock rlock(&mu_);
+}
+
+
+/* Bugfix 2 */
+class LOCKABLE Base {
+public:
+ Mutex mu_;
+
+ void Lock() EXCLUSIVE_LOCK_FUNCTION() { mu_.Lock(); }
+ void Unlock() UNLOCK_FUNCTION() { mu_.Unlock(); }
+};
+
+class Derived : public Base {
+public:
+ int b;
+};
+
+void doSomething(Derived *d) {
+ d->Lock();
+ d->Unlock();
+};
+
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-84.C b/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-84.C
new file mode 100644
index 000000000..323b4e303
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-84.C
@@ -0,0 +1,29 @@
+// Test lock expressions involving array elements.
+// { dg-do compile }
+// { dg-options "-Wthread-safety" }
+
+#include "thread_annot_common.h"
+
+struct Foo {
+ Mutex mu_;
+ int a GUARDED_BY(mu_);
+
+ static void foo1(Foo* foos, int n);
+ static void foo2(Foo* foos, int n);
+};
+
+void Foo::foo1(Foo* foos, int n) {
+ for (int i = 0; i < n; ++i) {
+ foos[i].mu_.Lock();
+ foos[i].a = 0;
+ foos[i].mu_.Unlock();
+ }
+}
+
+void Foo::foo2(Foo* foos, int n) {
+ for (int i = 0; i < n-1; ++i) {
+ foos[i].mu_.Lock();
+ foos[i+1].a = 0; // { dg-warning "Writing to variable" }
+ foos[i].mu_.Unlock();
+ }
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-85.C b/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-85.C
new file mode 100644
index 000000000..c553e81d6
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/thread-ann/thread_annot_lock-85.C
@@ -0,0 +1,22 @@
+// Regression test, handle trylock on virtual method.
+// { dg-do compile }
+// { dg-options "-Wthread-safety" }
+
+#include "thread_annot_common.h"
+
+class LOCKABLE Lock {
+ public:
+ virtual ~Lock() {}
+ virtual bool TryLock() EXCLUSIVE_TRYLOCK_FUNCTION(true) { return true; }
+ void Unlock() UNLOCK_FUNCTION() {}
+};
+
+
+void foo() {
+ Lock x;
+ Lock *p = &x;
+ if (p->TryLock()) {
+ p->Unlock();
+ }
+}
+
diff --git a/gcc-4.6/libmudflap/testsuite/libmudflap.c++/pass68-frag.cxx b/gcc-4.6/gcc/testsuite/g++.dg/torture/pr49309.C
index ab8cd97f2..a34537792 100644
--- a/gcc-4.6/libmudflap/testsuite/libmudflap.c++/pass68-frag.cxx
+++ b/gcc-4.6/gcc/testsuite/g++.dg/torture/pr49309.C
@@ -1,6 +1,6 @@
// PR tree-optimization/49309
// { dg-do compile }
-// { dg-options "-fmudflap" }
+// { dg-options "-fpreprocessed -fmudflap" }
struct A
{
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/torture/pr49628.C b/gcc-4.6/gcc/testsuite/g++.dg/torture/pr49628.C
new file mode 100644
index 000000000..4bc6543a3
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/torture/pr49628.C
@@ -0,0 +1,37 @@
+/* { dg-do compile } */
+
+#include <vector>
+
+template <int rank, int dim> class Tensor;
+template <int dim> class Tensor<1,dim> {
+public:
+ explicit Tensor (const bool initialize = true);
+ Tensor (const Tensor<1,dim> &);
+ Tensor<1,dim> & operator = (const Tensor<1,dim> &);
+ double values[(dim!=0) ? (dim) : 1];
+};
+template <int dim>
+inline Tensor<1,dim> & Tensor<1,dim>::operator = (const Tensor<1,dim> &p)
+{
+ for (unsigned int i=0; i<dim; ++i)
+ values[i] = p.values[i];
+};
+template <int dim> class Quadrature {
+public:
+ const unsigned int n_quadrature_points;
+};
+class MappingQ1
+{
+ class InternalData {
+ public:
+ std::vector<Tensor<1,3> > shape_derivatives;
+ unsigned int n_shape_functions;
+ };
+ void compute_data (const Quadrature<3> &quadrature, InternalData &data)
+ const;
+};
+void MappingQ1::compute_data (const Quadrature<3> &q, InternalData &data) const
+{
+ const unsigned int n_q_points = q.n_quadrature_points;
+ data.shape_derivatives.resize(data.n_shape_functions * n_q_points);
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/torture/pr49720.C b/gcc-4.6/gcc/testsuite/g++.dg/torture/pr49720.C
new file mode 100644
index 000000000..c5da7ba67
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/torture/pr49720.C
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+
+extern char t_start[], t_end[], t_size[];
+bool foo (void)
+{
+ long size = reinterpret_cast<long>(t_size);
+ return (size == t_end - t_start);
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/torture/pr50189.C b/gcc-4.6/gcc/testsuite/g++.dg/torture/pr50189.C
new file mode 100644
index 000000000..06f1d3695
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/torture/pr50189.C
@@ -0,0 +1,121 @@
+// { dg-do run }
+// { dg-options "-fstrict-enums" }
+
+extern "C" void abort (void);
+class CCUTILS_KeyedScalarLevelPosition
+{
+public:
+
+ typedef enum
+ {
+ UNINITED = 0,
+ AT_BEGIN = 1,
+ AT_END = 2,
+ AT_KEY = 3
+
+ } position_t;
+
+ bool is_init() const
+ { return(m_timestamp != UNINITED); }
+
+ bool is_at_begin() const
+ { return(m_timestamp == AT_BEGIN); }
+
+ position_t get_state() const
+ {
+ return((m_timestamp >= AT_KEY)
+ ? AT_KEY
+ : ((position_t)m_timestamp));
+ }
+
+ void set_at_begin()
+ { m_timestamp = AT_BEGIN; }
+
+ unsigned int get_index() const
+ { return(m_index); }
+
+ void set_pos(unsigned int a_index, unsigned int a_timestmap)
+ {
+ m_index = a_index;
+ m_timestamp = a_timestmap;
+ }
+
+ bool check_pos(unsigned int a_num_entries, unsigned int a_timestamp) const
+ {
+ if (get_state() != AT_KEY)
+ return(false);
+
+ if (m_timestamp != a_timestamp)
+ return(false);
+
+ return(m_index < a_num_entries);
+ }
+
+ void set_not_init()
+ { m_timestamp = 0; }
+
+private:
+
+ unsigned int m_timestamp;
+ unsigned int m_index;
+
+};
+
+class CCUTILS_KeyedScalarPosition
+{
+public:
+
+ CCUTILS_KeyedScalarLevelPosition m_L1;
+ CCUTILS_KeyedScalarLevelPosition m_L2;
+};
+
+class baz
+{
+public:
+ int *n[20];
+ unsigned int m_cur_array_len;
+ unsigned int m_timestamp;
+
+ unsigned int _get_timestamp() const
+ { return(m_timestamp); }
+
+ bool _check_L1_pos(const CCUTILS_KeyedScalarPosition &a_position) const
+ {
+ return(a_position.m_L1.check_pos(
+ m_cur_array_len, _get_timestamp()));
+ }
+
+ void *next (CCUTILS_KeyedScalarPosition &);
+};
+
+void * baz::next (CCUTILS_KeyedScalarPosition &a_position)
+{
+ if (a_position.m_L1.is_at_begin() || (!a_position.m_L1.is_init()))
+ {
+ a_position.m_L1.set_pos(0, _get_timestamp());
+ a_position.m_L2.set_at_begin();
+ }
+ else if (!_check_L1_pos(a_position))
+ return(0);
+
+ return n[a_position.m_L1.get_index ()];
+}
+
+int main (int, char **)
+{
+ baz obj;
+ CCUTILS_KeyedScalarPosition a_pos;
+ void *ret;
+ int n[5];
+
+ obj.n[0] = n;
+ obj.m_cur_array_len = 1;
+ obj.m_timestamp = 42;
+
+ a_pos.m_L1.set_pos (0, 42);
+
+ ret = obj.next (a_pos);
+ if (ret == 0)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/tree-prof/callgraph-profiles.C b/gcc-4.6/gcc/testsuite/g++.dg/tree-prof/callgraph-profiles.C
new file mode 100644
index 000000000..d9583097c
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/tree-prof/callgraph-profiles.C
@@ -0,0 +1,30 @@
+/* Verify if call-graph profile sections are created
+ with -fcallgraph-profiles-sections. */
+/* { dg-options "-O2 -fcallgraph-profiles-sections -ffunction-sections --save-temps" } */
+/* { dg-require-section-exclude "" } */
+
+int __attribute__ ((noinline))
+foo ()
+{
+ return 1;
+}
+
+int __attribute__ ((noinline))
+bar ()
+{
+ return 0;
+}
+
+int main ()
+{
+ int sum;
+ for (int i = 0; i< 1000; i++)
+ {
+ sum = foo () + bar();
+ }
+ return sum * bar ();
+}
+
+/* { dg-final-use { scan-assembler "\.gnu\.callgraph\.text\.main" } } */
+/* { dg-final-use { scan-assembler "\.string \"1000\"" } } */
+/* { dg-final-use { cleanup-saved-temps } } */
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/tree-prof/mversn15.C b/gcc-4.6/gcc/testsuite/g++.dg/tree-prof/mversn15.C
index 54b4e57a1..cdbb70ed1 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/tree-prof/mversn15.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/tree-prof/mversn15.C
@@ -18,6 +18,6 @@ main ()
return ret - 1000;
}
-/* { dg-final-use { scan-tree-dump "main_clone" "optimized" } } */
+/* { dg-final-use { scan-tree-dump "main\.clone" "optimized" } } */
/* { dg-final-use { scan-tree-dump "return 0" "optimized" } } */
/* { dg-final-use { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C b/gcc-4.6/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C
index 5513d3650..91f43ae8c 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/tree-ssa/dom-invalid.C
@@ -1,7 +1,7 @@
// PR tree-optimization/39557
// invalid post-dom info leads to infinite loop
// { dg-do run }
-// { dg-options "-Wall -fno-exceptions -O2 -fprofile-use -fno-rtti" }
+// { dg-options "-Wall -fno-exceptions -O2 -fprofile-use -fopt-info -fno-rtti" }
struct C
{
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/tree-ssa/pr49911.C b/gcc-4.6/gcc/testsuite/g++.dg/tree-ssa/pr49911.C
new file mode 100644
index 000000000..520a7750d
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/tree-ssa/pr49911.C
@@ -0,0 +1,41 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fstrict-enums -fno-rtti -fno-exceptions -fno-strict-aliasing -fdump-tree-vrp2" } */
+
+
+extern void JS_Assert();
+typedef enum {
+eax, ecx, edx, ebx, esp, ebp,
+esi, edi }
+RegisterID;
+union StateRemat {
+ RegisterID reg_;
+ int offset_;
+};
+static StateRemat FromRegister(RegisterID reg) {
+ StateRemat sr;
+ sr.reg_ = reg;
+ return sr;
+}
+static StateRemat FromAddress3(int address) {
+ StateRemat sr;
+ sr.offset_ = address;
+ //sr.offset_ = 0;
+ if (address < 46 && address >= 0) {
+ JS_Assert();
+ }
+ return sr;
+}
+struct FrameState {
+ StateRemat dataRematInfo2(bool y, int z) {
+ if (y) return FromRegister(RegisterID(1));
+ return FromAddress3(z);
+ }
+};
+FrameState frame;
+StateRemat x;
+void jsop_setelem(bool y, int z) {
+ x = frame.dataRematInfo2(y, z);
+}
+
+/* { dg-final { scan-tree-dump-times "Folding predicate.*45" 0 "vrp2"} } */
+/* { dg-final { cleanup-tree-dump "vrp2" } } */
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/tree-ssa/pr50622.C b/gcc-4.6/gcc/testsuite/g++.dg/tree-ssa/pr50622.C
new file mode 100644
index 000000000..d7f4fa74b
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/tree-ssa/pr50622.C
@@ -0,0 +1,30 @@
+// { dg-do compile }
+// { dg-options "-O2" }
+
+typedef __complex__ double Value;
+struct LorentzVector
+{
+ LorentzVector & operator+=(const LorentzVector & a) {
+ theX += a.theX;
+ theY += a.theY;
+ theZ += a.theZ;
+ theT += a.theT;
+ return *this;
+ }
+
+ Value theX;
+ Value theY;
+ Value theZ;
+ Value theT;
+};
+
+inline LorentzVector
+operator+(LorentzVector a, const LorentzVector & b) {
+ return a += b;
+}
+
+Value ex, et;
+LorentzVector sum() {
+ LorentzVector v1; v1.theX =ex; v1.theY =ex+et; v1.theZ =ex-et; v1.theT =et;
+ return v1+v1;
+}
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/vect/pr51485.cc b/gcc-4.6/gcc/testsuite/g++.dg/vect/pr51485.cc
new file mode 100644
index 000000000..d57d7596d
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/vect/pr51485.cc
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+
+struct A { A (); unsigned int a; };
+double bar (A a) throw () __attribute__((pure));
+
+void
+foo (unsigned int x, double *y, A *z)
+{
+ unsigned int i;
+ for (i = 0; i < x; i++)
+ y[i] = bar (z[i]);
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/vect/slp-pr50413.cc b/gcc-4.6/gcc/testsuite/g++.dg/vect/slp-pr50413.cc
new file mode 100644
index 000000000..e7bdf1f1c
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/g++.dg/vect/slp-pr50413.cc
@@ -0,0 +1,165 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target vect_int } */
+
+typedef unsigned long long UInt64;
+
+typedef struct struct128
+{
+ UInt64 uint64_lower;
+ UInt64 uint64_upper;
+}
+STRUCT_128;
+
+typedef union uint128_bitmap
+{
+ STRUCT_128 uint128;
+
+ struct
+ {
+ UInt64 b00 : 1;
+ UInt64 b01 : 1;
+ UInt64 b02 : 1;
+ UInt64 b03 : 1;
+ UInt64 b04 : 1;
+ UInt64 b05 : 1;
+ UInt64 b06 : 1;
+ UInt64 b07 : 1;
+ UInt64 b08 : 1;
+ UInt64 b09 : 1;
+ UInt64 b10 : 1;
+ UInt64 b11 : 1;
+ UInt64 b12 : 1;
+ UInt64 b13 : 1;
+ UInt64 b14 : 1;
+ UInt64 b15 : 1;
+ UInt64 b16 : 1;
+ UInt64 b17 : 1;
+ UInt64 b18 : 1;
+ UInt64 b19 : 1;
+ UInt64 b20 : 1;
+ UInt64 b21 : 1;
+ UInt64 b22 : 1;
+ UInt64 b23 : 1;
+ UInt64 b24 : 1;
+ UInt64 b25 : 1;
+ UInt64 b26 : 1;
+ UInt64 b27 : 1;
+ UInt64 b28 : 1;
+ UInt64 b29 : 1;
+ UInt64 b30 : 1;
+ UInt64 b31 : 1;
+ UInt64 b32 : 1;
+ UInt64 b33 : 1;
+ UInt64 b34 : 1;
+ UInt64 b35 : 1;
+ UInt64 b36 : 1;
+ UInt64 b37 : 1;
+ UInt64 b38 : 1;
+ UInt64 b39 : 1;
+ UInt64 b40 : 1;
+ UInt64 b41 : 1;
+ UInt64 b42 : 1;
+ UInt64 b43 : 1;
+ UInt64 b44 : 1;
+ UInt64 b45 : 1;
+ UInt64 b46 : 1;
+ UInt64 b47 : 1;
+ UInt64 b48 : 1;
+ UInt64 b49 : 1;
+ UInt64 b50 : 1;
+ UInt64 b51 : 1;
+ UInt64 b52 : 1;
+ UInt64 b53 : 1;
+ UInt64 b54 : 1;
+ UInt64 b55 : 1;
+ UInt64 b56 : 1;
+ UInt64 b57 : 1;
+ UInt64 b58 : 1;
+ UInt64 b59 : 1;
+ UInt64 b60 : 1;
+ UInt64 b61 : 1;
+ UInt64 b62 : 1;
+ UInt64 b63 : 1;
+ UInt64 b64 : 1;
+ UInt64 b65 : 1;
+ UInt64 b66 : 1;
+ UInt64 b67 : 1;
+ UInt64 b68 : 1;
+ UInt64 b69 : 1;
+ UInt64 b70 : 1;
+ UInt64 b71 : 1;
+ UInt64 b72 : 1;
+ UInt64 b73 : 1;
+ UInt64 b74 : 1;
+ UInt64 b75 : 1;
+ UInt64 b76 : 1;
+ UInt64 b77 : 1;
+ UInt64 b78 : 1;
+ UInt64 b79 : 1;
+ UInt64 b80 : 1;
+ UInt64 b81 : 1;
+ UInt64 b82 : 1;
+ UInt64 b83 : 1;
+ UInt64 b84 : 1;
+ UInt64 b85 : 1;
+ UInt64 b86 : 1;
+ UInt64 b87 : 1;
+ UInt64 b88 : 1;
+ UInt64 b89 : 1;
+ UInt64 b90 : 1;
+ UInt64 b91 : 1;
+ UInt64 b92 : 1;
+ UInt64 b93 : 1;
+ UInt64 b94 : 1;
+ UInt64 b95 : 1;
+ UInt64 b96 : 1;
+ UInt64 b97 : 1;
+ UInt64 b98 : 1;
+ UInt64 b99 : 1;
+ UInt64 b100 : 1;
+ UInt64 b101 : 1;
+ UInt64 b102 : 1;
+ UInt64 b103 : 1;
+ UInt64 b104 : 1;
+ UInt64 b105 : 1;
+ UInt64 b106 : 1;
+ UInt64 b107 : 1;
+ UInt64 b108 : 1;
+ UInt64 b109 : 1;
+ UInt64 b110 : 1;
+ UInt64 b111 : 1;
+ UInt64 b112 : 1;
+ UInt64 b113 : 1;
+ UInt64 b114 : 1;
+ UInt64 b115 : 1;
+ UInt64 b116 : 1;
+ UInt64 b117 : 1;
+ UInt64 b118 : 1;
+ UInt64 b119 : 1;
+ UInt64 b120 : 1;
+ UInt64 b121 : 1;
+ UInt64 b122 : 1;
+ UInt64 b123 : 1;
+ UInt64 b124 : 1;
+ UInt64 b125 : 1;
+ UInt64 b126 : 1;
+ UInt64 b127 : 1;
+ }
+ bitmap;
+}
+UInt128_BITMAP;
+
+UInt128_BITMAP V;
+
+void shift(unsigned char t)
+{
+ V.uint128.uint64_lower = (V.uint128.uint64_lower >> 1);
+ V.bitmap.b63 = V.bitmap.b64;
+ V.uint128.uint64_upper = (V.uint128.uint64_upper >> 1);
+
+ V.bitmap.b96 = t;
+}
+
+/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 0 "slp" } } */
+/* { dg-final { cleanup-tree-dump "slp" } } */
+
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/vect/vect.exp b/gcc-4.6/gcc/testsuite/g++.dg/vect/vect.exp
index 9a03f6c42..ac22f4b01 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/vect/vect.exp
+++ b/gcc-4.6/gcc/testsuite/g++.dg/vect/vect.exp
@@ -40,8 +40,13 @@ global DEFAULT_VECTCFLAGS
set DEFAULT_VECTCFLAGS ""
# These flags are used for all targets.
-lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fno-vect-cost-model" \
- "-ftree-vectorizer-verbose=4" "-fdump-tree-vect-stats"
+lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fno-vect-cost-model"
+
+set VECT_SLP_CFLAGS $DEFAULT_VECTCFLAGS
+
+lappend DEFAULT_VECTCFLAGS "-fdump-tree-vect-details"
+lappend VECT_SLP_CFLAGS "-fdump-tree-slp-details"
+
# Skip these tests for targets that do not support generating vector
# code. Set additional target-dependent vector flags, which can be
@@ -54,8 +59,10 @@ if ![check_vect_support_and_set_flags] {
dg-init
# Main loop.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{c,cc,S} ]] \
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/pr*.{c,cc,S} ]] \
"" $DEFAULT_VECTCFLAGS
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/slp-pr*.{c,cc,S} ]] \
+ "" $VECT_SLP_CFLAGS
#### Tests with special options
global SAVED_DEFAULT_VECTCFLAGS
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/warn/Wuninitializable-member.C b/gcc-4.6/gcc/testsuite/g++.dg/warn/Wuninitializable-member.C
index 1c37e3ea0..9d889e1d6 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/warn/Wuninitializable-member.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/warn/Wuninitializable-member.C
@@ -8,7 +8,7 @@ public:
};
class Y {
- const int var;// { dg-warning "non-static const member 'const int Y::var' in class without a constructor" }
+ const int var;// { dg-warning "non-static const member 'int const Y::var' in class without a constructor" }
public:
int g(){ return 2*var; }
};
diff --git a/gcc-4.6/gcc/testsuite/g++.dg/warn/pr35711.C b/gcc-4.6/gcc/testsuite/g++.dg/warn/pr35711.C
index 653269c0e..7c1be1c4e 100644
--- a/gcc-4.6/gcc/testsuite/g++.dg/warn/pr35711.C
+++ b/gcc-4.6/gcc/testsuite/g++.dg/warn/pr35711.C
@@ -4,5 +4,5 @@
int* foo (volatile int *p)
{
- return (int*)p; // { dg-warning "cast from type 'volatile int\\*' to type 'int\\*' casts away qualifiers" }
+ return (int*)p; // { dg-warning "cast from type 'int volatile\\*' to type 'int\\*' casts away qualifiers" }
}
diff --git a/gcc-4.6/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog b/gcc-4.6/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
index 1a84a36eb..c6781e2a6 100644
--- a/gcc-4.6/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
+++ b/gcc-4.6/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/gcc/testsuite/g++.old-deja/g++.pt/memtemp77.C b/gcc-4.6/gcc/testsuite/g++.old-deja/g++.pt/memtemp77.C
index e3ca5298d..2839e3b7f 100644
--- a/gcc-4.6/gcc/testsuite/g++.old-deja/g++.pt/memtemp77.C
+++ b/gcc-4.6/gcc/testsuite/g++.old-deja/g++.pt/memtemp77.C
@@ -19,7 +19,7 @@ const char* S3<char>::h(int) { return __PRETTY_FUNCTION__; }
int main()
{
if (strcmp (S3<double>::h(7),
- "static const char* S3<T>::h(U) [with U = int, T = double]") == 0)
+ "static char const* S3<T>::h(U) [with U = int, T = double]") == 0)
return 0;
else
return 1;
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/20110906-1.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/20110906-1.c
new file mode 100644
index 000000000..50ea9e241
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/20110906-1.c
@@ -0,0 +1,22 @@
+/* PR middle-end/50266 */
+/* Testcase by <bero@arklinux.org> */
+
+struct a {
+ unsigned int a;
+ unsigned int b;
+};
+
+struct a *const p = (struct a *)0x4A004100;
+
+void foo(void)
+{
+ unsigned int i = 0;
+ unsigned int *const x[] = {
+ &p->a,
+ &p->b,
+ 0
+ };
+
+ (*(volatile unsigned int *)((x[i]))
+ = (unsigned int)((unsigned int)((*(volatile unsigned int *)(x[i])))));
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/20110913-1.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/20110913-1.c
new file mode 100644
index 000000000..e435a14b2
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/20110913-1.c
@@ -0,0 +1,26 @@
+struct ieee754_double {
+ double d;
+};
+extern const float __exp_deltatable[178];
+float __ieee754_expf (float x)
+{
+ static const float himark = 88.72283935546875;
+ static const float lomark = -103.972084045410;
+ if (__builtin_isless(x, himark) && __builtin_isgreater(x, lomark))
+ {
+ int tval;
+ double x22, t, result, dx;
+ float delta;
+ struct ieee754_double ex2_u;
+ dx -= t;
+ tval = (int) (t * 512.0);
+ if (t >= 0)
+ delta = - __exp_deltatable[tval];
+ else
+ delta = __exp_deltatable[-tval];
+ x22 = (0.5000000496709180453 * dx + 1.0000001192102037084) * dx + delta;
+ result = x22 * ex2_u.d + ex2_u.d;
+ return (float) result;
+ }
+ return x;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr49049.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr49049.c
new file mode 100644
index 000000000..a24b2a41c
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr49049.c
@@ -0,0 +1,28 @@
+__extension__ typedef unsigned long long int uint64_t;
+
+static int
+sub (int a, int b)
+{
+ return a - b;
+}
+
+static uint64_t
+add (uint64_t a, uint64_t b)
+{
+ return a + b;
+}
+
+int *ptr;
+
+int
+foo (uint64_t arg1, int *arg2)
+{
+ int j;
+ for (; j < 1; j++)
+ {
+ *arg2 |= sub ( sub (sub (j || 1 ^ 0x1, 1), arg1 < 0x1 <=
+ sub (1, *ptr & j)),
+ (sub ( j != 1 || sub (j && j, 1) >= 0,
+ add (!j > arg1, 0x35DLL))));
+ }
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr50565-1.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr50565-1.c
new file mode 100644
index 000000000..cdaad294f
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr50565-1.c
@@ -0,0 +1,4 @@
+struct s { char p[2]; };
+static struct s v;
+const int o0 = (int) ((void *) &v.p[0] - (void *) &v) + 0U;
+const int o1 = (int) ((void *) &v.p[0] - (void *) &v) + 1U;
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr50565-2.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr50565-2.c
new file mode 100644
index 000000000..2d30e8802
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr50565-2.c
@@ -0,0 +1,4 @@
+struct s { char p[2]; };
+static struct s v;
+const int o0 = (int) ((void *) &v.p[0] - (void *) &v) + 0;
+const int o1 = (int) ((void *) &v.p[0] - (void *) &v) + 1;
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr51077.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr51077.c
new file mode 100644
index 000000000..de2b97e58
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/compile/pr51077.c
@@ -0,0 +1,15 @@
+/* PR middle-end/51077 */
+
+struct S { unsigned char s, t[256]; };
+
+void
+foo (const struct S *x, struct S *y, int z)
+{
+ int i;
+ for (i = 0; i < 8; i++)
+ {
+ const struct S *a = &x[i];
+ __builtin___memcpy_chk (y->t, a->t, z, __builtin_object_size (y->t, 0));
+ y = (struct S *) &y->t[z];
+ }
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/20111208-1.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/20111208-1.c
new file mode 100644
index 000000000..8bcb10acc
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/20111208-1.c
@@ -0,0 +1,94 @@
+/* PR tree-optimization/51315 */
+/* Reported by Jurij Smakov <jurij@wooyd.org> */
+
+typedef unsigned int size_t;
+
+extern void *memcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern size_t strlen (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+typedef short int int16_t;
+typedef int int32_t;
+
+extern void abort (void);
+
+int a;
+
+static void __attribute__ ((noinline,noclone))
+do_something (int item)
+{
+ a = item;
+}
+
+int
+pack_unpack (char *s, char *p)
+{
+ char *send, *pend;
+ char type;
+ int integer_size;
+
+ send = s + strlen (s);
+ pend = p + strlen (p);
+
+ while (p < pend)
+ {
+ type = *p++;
+
+ switch (type)
+ {
+ case 's':
+ integer_size = 2;
+ goto unpack_integer;
+
+ case 'l':
+ integer_size = 4;
+ goto unpack_integer;
+
+ unpack_integer:
+ switch (integer_size)
+ {
+ case 2:
+ {
+ union
+ {
+ int16_t i;
+ char a[sizeof (int16_t)];
+ }
+ v;
+ memcpy (v.a, s, sizeof (int16_t));
+ s += sizeof (int16_t);
+ do_something (v.i);
+ }
+ break;
+
+ case 4:
+ {
+ union
+ {
+ int32_t i;
+ char a[sizeof (int32_t)];
+ }
+ v;
+ memcpy (v.a, s, sizeof (int32_t));
+ s += sizeof (int32_t);
+ do_something (v.i);
+ }
+ break;
+ }
+ break;
+ }
+ }
+ return (int) *s;
+}
+
+int
+main (void)
+{
+ int n = pack_unpack ("\200\001\377\376\035\300", "sl");
+ if (n != 0)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/20111212-1.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/20111212-1.c
new file mode 100644
index 000000000..c46e6e946
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/20111212-1.c
@@ -0,0 +1,34 @@
+/* PR tree-optimization/50569 */
+/* Reported by Paul Koning <pkoning@gcc.gnu.org> */
+/* Reduced testcase by Mikael Pettersson <mikpe@it.uu.se> */
+
+struct event {
+ struct {
+ unsigned int sec;
+ } sent __attribute__((packed));
+};
+
+void __attribute__((noinline,noclone)) frob_entry(char *buf)
+{
+ struct event event;
+
+ __builtin_memcpy(&event, buf, sizeof(event));
+ if (event.sent.sec < 64) {
+ event.sent.sec = -1U;
+ __builtin_memcpy(buf, &event, sizeof(event));
+ }
+}
+
+int main(void)
+{
+ union {
+ char buf[1 + sizeof(struct event)];
+ int align;
+ } u;
+
+ __builtin_memset(&u, 0, sizeof u);
+
+ frob_entry(&u.buf[1]);
+
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/20120105-1.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/20120105-1.c
new file mode 100644
index 000000000..115ba1509
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/20120105-1.c
@@ -0,0 +1,24 @@
+struct __attribute__((packed)) S
+{
+ int a, b, c;
+};
+
+static int __attribute__ ((noinline,noclone))
+extract(const char *p)
+{
+ struct S s;
+ __builtin_memcpy (&s, p, sizeof(struct S));
+ return s.a;
+}
+
+volatile int i;
+
+int main (void)
+{
+ char p[sizeof(struct S) + 1];
+
+ __builtin_memset (p, 0, sizeof(struct S) + 1);
+ i = extract (p + 1);
+
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/ieee/pr50310.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/ieee/pr50310.c
new file mode 100644
index 000000000..8d323ca78
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/ieee/pr50310.c
@@ -0,0 +1,73 @@
+/* PR target/50310 */
+
+extern void abort (void);
+double s1[4], s2[4], s3[64];
+
+void
+foo (void)
+{
+ int i;
+ for (i = 0; i < 4; i++)
+ s3[0 * 4 + i] = __builtin_isgreater (s1[i], s2[i]) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[1 * 4 + i] = (!__builtin_isgreater (s1[i], s2[i])) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[2 * 4 + i] = __builtin_isgreaterequal (s1[i], s2[i]) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[3 * 4 + i] = (!__builtin_isgreaterequal (s1[i], s2[i])) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[4 * 4 + i] = __builtin_isless (s1[i], s2[i]) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[5 * 4 + i] = (!__builtin_isless (s1[i], s2[i])) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[6 * 4 + i] = __builtin_islessequal (s1[i], s2[i]) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[7 * 4 + i] = (!__builtin_islessequal (s1[i], s2[i])) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[8 * 4 + i] = __builtin_islessgreater (s1[i], s2[i]) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[9 * 4 + i] = (!__builtin_islessgreater (s1[i], s2[i])) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[10 * 4 + i] = __builtin_isunordered (s1[i], s2[i]) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[11 * 4 + i] = (!__builtin_isunordered (s1[i], s2[i])) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[12 * 4 + i] = s1[i] > s2[i] ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[13 * 4 + i] = s1[i] <= s2[i] ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[14 * 4 + i] = s1[i] < s2[i] ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[15 * 4 + i] = s1[i] >= s2[i] ? -1.0 : 0.0;
+}
+
+int
+main ()
+{
+ int i;
+ s1[0] = 5.0;
+ s1[1] = 6.0;
+ s1[2] = 5.0;
+ s1[3] = __builtin_nan ("");
+ s2[0] = 6.0;
+ s2[1] = 5.0;
+ s2[2] = 5.0;
+ s2[3] = 5.0;
+ asm volatile ("" : : : "memory");
+ foo ();
+ asm volatile ("" : : : "memory");
+ for (i = 0; i < 16 * 4; i++)
+ if (i >= 12 * 4 && (i & 3) == 3)
+ {
+ if (s3[i] != 0.0) abort ();
+ }
+ else
+ {
+ static int masks[] = { 2, 2|4, 1, 1|4, 1|2, 8, 2, 1 };
+ if (s3[i]
+ != (((1 << (i & 3)) & ((i & 4) ? ~masks[i / 8] : masks[i / 8]))
+ ? -1.0 : 0.0))
+ abort ();
+ }
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr49279.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr49279.c
new file mode 100644
index 000000000..7f2c0d221
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr49279.c
@@ -0,0 +1,35 @@
+/* PR tree-optimization/49279 */
+extern void abort (void);
+
+struct S { int a; int *__restrict p; };
+
+__attribute__((noinline, noclone))
+struct S *bar (struct S *p)
+{
+ struct S *r;
+ asm volatile ("" : "=r" (r) : "0" (p) : "memory");
+ return r;
+}
+
+__attribute__((noinline, noclone))
+int
+foo (int *p, int *q)
+{
+ struct S s, *t;
+ s.a = 1;
+ s.p = p;
+ t = bar (&s);
+ t->p = q;
+ s.p[0] = 0;
+ t->p[0] = 1;
+ return s.p[0];
+}
+
+int
+main ()
+{
+ int a, b;
+ if (foo (&a, &b) != 1)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr49768.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr49768.c
new file mode 100644
index 000000000..85bc9d2a0
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr49768.c
@@ -0,0 +1,12 @@
+/* PR tree-optimization/49768 */
+
+extern void abort (void);
+
+int
+main ()
+{
+ static struct { unsigned int : 1; unsigned int s : 1; } s = { .s = 1 };
+ if (s.s != 1)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr51323.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr51323.c
new file mode 100644
index 000000000..929579983
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr51323.c
@@ -0,0 +1,35 @@
+/* PR middle-end/51323 */
+
+extern void abort (void);
+struct S { int a, b, c; };
+int v;
+
+__attribute__((noinline, noclone)) void
+foo (int x, int y, int z)
+{
+ if (x != v || y != 0 || z != 9)
+ abort ();
+}
+
+static inline int
+baz (const struct S *p)
+{
+ return p->b;
+}
+
+__attribute__((noinline, noclone)) void
+bar (int x, struct S y)
+{
+ foo (baz (&y), 0, x);
+}
+
+int
+main ()
+{
+ struct S s;
+ v = 3; s.a = v - 1; s.b = v; s.c = v + 1;
+ bar (9, s);
+ v = 17; s.a = v - 1; s.b = v; s.c = v + 1;
+ bar (9, s);
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr51466.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr51466.c
new file mode 100644
index 000000000..aa0b7fd4f
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr51466.c
@@ -0,0 +1,43 @@
+/* PR tree-optimization/51466 */
+
+extern void abort (void);
+
+__attribute__((noinline, noclone)) int
+foo (int i)
+{
+ volatile int v[4];
+ int *p;
+ v[i] = 6;
+ p = (int *) &v[i];
+ return *p;
+}
+
+__attribute__((noinline, noclone)) int
+bar (int i)
+{
+ volatile int v[4];
+ int *p;
+ v[i] = 6;
+ p = (int *) &v[i];
+ *p = 8;
+ return v[i];
+}
+
+__attribute__((noinline, noclone)) int
+baz (int i)
+{
+ volatile int v[4];
+ int *p;
+ v[i] = 6;
+ p = (int *) &v[0];
+ *p = 8;
+ return v[i];
+}
+
+int
+main ()
+{
+ if (foo (3) != 6 || bar (2) != 8 || baz (0) != 8 || baz (1) != 6)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr52129.c b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr52129.c
new file mode 100644
index 000000000..a60bfa8bb
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.c-torture/execute/pr52129.c
@@ -0,0 +1,28 @@
+/* PR target/52129 */
+
+extern void abort (void);
+struct S { void *p; unsigned int q; };
+struct T { char a[64]; char b[64]; } t;
+
+__attribute__((noinline, noclone)) int
+foo (void *x, struct S s, void *y, void *z)
+{
+ if (x != &t.a[2] || s.p != &t.b[5] || s.q != 27 || y != &t.a[17] || z != &t.b[17])
+ abort ();
+ return 29;
+}
+
+__attribute__((noinline, noclone)) int
+bar (void *x, void *y, void *z, struct S s, int t, struct T *u)
+{
+ return foo (x, s, &u->a[t], &u->b[t]);
+}
+
+int
+main ()
+{
+ struct S s = { &t.b[5], 27 };
+ if (bar (&t.a[2], (void *) 0, (void *) 0, s, 17, &t) != 29)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/automversn_1.c b/gcc-4.6/gcc/testsuite/gcc.dg/automversn_1.c
new file mode 100644
index 000000000..849a72638
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/automversn_1.c
@@ -0,0 +1,27 @@
+/* Check that the auto_clone pass works correctly. Function foo must be cloned
+ because it is hot and has a vectorizable store. */
+
+/* { dg-options "-O2 -ftree-vectorize -mvarch=core2 -fdump-tree-auto_clone" } */
+/* { dg-do run } */
+
+char a[16];
+
+int __attribute__ ((hot)) __attribute__ ((noinline))
+foo (void)
+{
+ int i;
+ for (i = 0; i< 16; i++)
+ a[i] = 0;
+ return 0;
+}
+
+int
+main ()
+{
+ return foo ();
+}
+
+
+/* { dg-final { scan-tree-dump "foo\.autoclone\.original" "auto_clone" } } */
+/* { dg-final { scan-tree-dump "foo\.autoclone\.0" "auto_clone" } } */
+/* { dg-final { cleanup-tree-dump "auto_clone" } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/builtin-object-size-12.c b/gcc-4.6/gcc/testsuite/gcc.dg/builtin-object-size-12.c
new file mode 100644
index 000000000..b21eb0071
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/builtin-object-size-12.c
@@ -0,0 +1,19 @@
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+extern void abort (void);
+struct S {
+ int len;
+ char s[0];
+};
+int main()
+{
+ char buf[sizeof (struct S) + 32];
+ if (__builtin_object_size (((struct S *)&buf[0])->s, 1) != 32)
+ abort ();
+ if (__builtin_object_size (((struct S *)&buf[1])->s, 1) != 31)
+ abort ();
+ if (__builtin_object_size (((struct S *)&buf[64])->s, 0) != 0)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/compat/struct-layout-1_test.h b/gcc-4.6/gcc/testsuite/gcc.dg/compat/struct-layout-1_test.h
index 4a70dfd06..affddcaef 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/compat/struct-layout-1_test.h
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/compat/struct-layout-1_test.h
@@ -1,5 +1 @@
-#if (__SIZEOF_INT__ >= 4)
-T(0,enum E2 a:31;,B(0,a,e2_m1,e2_0))
-#else
-T(0,enum E2 a:15;,B(0,a,e2_m1,e2_0))
-#endif
+T(0,enum E2 a:7;,B(0,a,e2_m1,e2_0))
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/cpp/assert4.c b/gcc-4.6/gcc/testsuite/gcc.dg/cpp/assert4.c
index 0bd88ce06..e6d0b2c50 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/cpp/assert4.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/cpp/assert4.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2006, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2006, 2008, 2009, 2011 Free Software Foundation, Inc.
Test builtin preprocessor assertions.
By Kaveh Ghazi <ghazi@caip.rutgers.edu>. */
@@ -7,7 +7,7 @@
/* Check for #system assertions. */
-#if defined __gnu_linux__
+#if defined __linux__
# if !#system(linux) || !#system(unix) || !#system(posix)
# error
# endif
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/debug/dwarf2/pr49871.c b/gcc-4.6/gcc/testsuite/gcc.dg/debug/dwarf2/pr49871.c
new file mode 100644
index 000000000..c1a58c4bd
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/debug/dwarf2/pr49871.c
@@ -0,0 +1,12 @@
+/* PR debug/49871 */
+/* { dg-do compile } */
+/* { dg-options "-gdwarf-3 -dA -fno-merge-debug-strings" } */
+
+struct S
+{
+ char a[1 << 16];
+ int b;
+} s;
+
+/* { dg-final { scan-assembler "\\(DW_AT_data_member_location\\)\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(DW_FORM_udata\\)" } } */
+/* { dg-final { scan-assembler-not "\\(DW_AT_data_member_location\\)\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(DW_FORM_data\[48\]\\)" } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c b/gcc-4.6/gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c
new file mode 100644
index 000000000..957c152b4
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/debug/dwarf2/pr51410.c
@@ -0,0 +1,13 @@
+/* PR debug/51410 */
+/* { dg-do compile } */
+/* { dg-options "-O0 -gdwarf-2 -dA -fno-merge-debug-strings" } */
+
+int x;
+
+int
+foo (void)
+{
+ return x;
+}
+
+/* { dg-final { scan-assembler-times "\\(DIE\[^\\r\\n\]*DW_TAG_variable\\)" 1 } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/delay-slot-2.c b/gcc-4.6/gcc/testsuite/gcc.dg/delay-slot-2.c
new file mode 100644
index 000000000..79faf81c7
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/delay-slot-2.c
@@ -0,0 +1,116 @@
+/* PR rtl-optimization/51187 */
+/* Reported by Jurij Smakov <jurij@wooyd.org> */
+
+/* { dg-do compile } */
+/* { dg-options "-g -O2" } */
+
+extern int printf (__const char *__restrict __format, ...);
+extern void print_c_condition (const char *);
+
+enum decision_type
+{
+ DT_num_insns,
+ DT_mode, DT_code, DT_veclen,
+ DT_elt_zero_int, DT_elt_one_int, DT_elt_zero_wide, DT_elt_zero_wide_safe,
+ DT_const_int,
+ DT_veclen_ge, DT_dup, DT_pred, DT_c_test,
+ DT_accept_op, DT_accept_insn
+};
+
+struct decision_test
+{
+ struct decision_test *next;
+ enum decision_type type;
+
+ union
+ {
+ int num_insns;
+
+ struct
+ {
+ const char *name;
+ } pred;
+
+ const char *c_test;
+ int veclen;
+ int dup;
+ long intval;
+ int opno;
+
+ struct {
+ int code_number;
+ int lineno;
+ int num_clobbers_to_add;
+ } insn;
+ } u;
+};
+
+enum routine_type {
+ RECOG, SPLIT, PEEPHOLE2
+};
+
+void
+write_cond (struct decision_test *p, int depth,
+ enum routine_type subroutine_type)
+{
+ switch (p->type)
+ {
+ case DT_num_insns:
+ printf ("peep2_current_count >= %d", p->u.num_insns);
+ break;
+
+ case DT_code:
+ printf ("GET_CODE (x%d) == ", depth);
+ break;
+
+ case DT_veclen:
+ printf ("XVECLEN (x%d, 0) == %d", depth, p->u.veclen);
+ break;
+
+ case DT_elt_zero_int:
+ printf ("XINT (x%d, 0) == %d", depth, (int) p->u.intval);
+ break;
+
+ case DT_elt_one_int:
+ printf ("XINT (x%d, 1) == %d", depth, (int) p->u.intval);
+ break;
+
+ case DT_elt_zero_wide:
+ case DT_elt_zero_wide_safe:
+ printf ("XWINT (x%d, 0) == ", depth);
+ print_host_wide_int (p->u.intval);
+ break;
+
+ case DT_const_int:
+ printf ("x%d == const_int_rtx[MAX_SAVED_CONST_INT + (%d)]",
+ depth, (int) p->u.intval);
+ break;
+
+ case DT_veclen_ge:
+ printf ("XVECLEN (x%d, 0) >= %d", depth, p->u.veclen);
+ break;
+
+ case DT_dup:
+ printf ("rtx_equal_p (x%d, operands[%d])", depth, p->u.dup);
+ break;
+
+ case DT_pred:
+ printf ("%s (x%d)", p->u.pred.name, depth);
+ break;
+
+ case DT_c_test:
+ print_c_condition (p->u.c_test);
+ break;
+
+ case DT_accept_insn:
+ ((void)(__builtin_expect(!(subroutine_type == RECOG), 0) ? __builtin_unreachable(), 0 : 0));
+ ((void)(__builtin_expect(!(p->u.insn.num_clobbers_to_add), 0) ? __builtin_unreachable(), 0 : 0));
+ printf ("pnum_clobbers != NULL");
+ break;
+
+ default:
+ __builtin_unreachable();
+ }
+}
+
+/* { dg-final { scan-assembler "printf" } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/fstack-protector-strong.c b/gcc-4.6/gcc/testsuite/gcc.dg/fstack-protector-strong.c
new file mode 100644
index 000000000..5a5cf98a7
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/fstack-protector-strong.c
@@ -0,0 +1,135 @@
+/* Test that stack protection is done on chosen functions. */
+
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-O2 -fstack-protector-strong" } */
+
+#include<string.h>
+#include<stdlib.h>
+
+extern int g0;
+extern int* pg0;
+int
+goo (int *);
+int
+hoo (int);
+
+/* Function frame address escaped function call. */
+int
+foo1 ()
+{
+ int i;
+ return goo (&i);
+}
+
+struct ArrayStruct
+{
+ int a;
+ int array[10];
+};
+
+struct AA
+{
+ int b;
+ struct ArrayStruct as;
+};
+
+/* Function frame contains array. */
+int
+foo2 ()
+{
+ struct AA aa;
+ int i;
+ for (i = 0; i < 10; ++i)
+ {
+ aa.as.array[i] = i * (i-1) + i / 2;
+ }
+ return aa.as.array[5];
+}
+
+/* Address computation based on a function frame address. */
+int
+foo3 ()
+{
+ int a;
+ int *p;
+ p = &a + 5;
+ return goo (p);
+}
+
+/* Address cast based on a function frame address. */
+int
+foo4 ()
+{
+ int a;
+ return goo (g0 << 2 ? (int *)(3 * (long)(void *)(&a)) : 0);
+}
+
+/* Address cast based on a local array. */
+int
+foo5 ()
+{
+ short array[10];
+ return goo ((int *)(array + 5));
+}
+
+struct BB
+{
+ int one;
+ int two;
+ int three;
+};
+
+/* Address computaton based on a function frame address.*/
+int
+foo6 ()
+{
+ struct BB bb;
+ return goo (&bb.one + sizeof(int));
+}
+
+/* Function frame address escaped via global variable. */
+int
+foo7 ()
+{
+ int a;
+ pg0 = &a;
+ goo (pg0);
+ return *pg0;
+}
+
+/* Check that this covers -fstack-protector. */
+int
+foo8 ()
+{
+ char base[100];
+ memcpy ((void *)base, (const void *)pg0, 105);
+ return (int)(base[32]);
+}
+
+/* Check that this covers -fstack-protector. */
+int
+foo9 ()
+{
+ char* p = alloca (100);
+ return goo ((int *)(p + 50));
+}
+
+int
+global2 (struct BB* pbb);
+
+/* Address taken on struct. */
+int
+foo10 ()
+{
+ struct BB bb;
+ int i;
+ bb.one = global2 (&bb);
+ for (i = 0; i < 10; ++i)
+ {
+ bb.two = bb.one + bb.two;
+ bb.three = bb.one + bb.two + bb.three;
+ }
+ return bb.three;
+}
+
+/* { dg-final { scan-assembler-times "stack_chk_fail" 10 } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/gomp/pr51339.c b/gcc-4.6/gcc/testsuite/gcc.dg/gomp/pr51339.c
new file mode 100644
index 000000000..198e4c13e
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/gomp/pr51339.c
@@ -0,0 +1,15 @@
+/* PR c/51339 */
+/* { dg-do compile } */
+/* { dg-options "-fopenmp" } */
+
+char g[] = "g";
+
+void
+foo (void)
+{
+#pragma omp parallel sections firstprivate (g) lastprivate (g)
+ {
+ #pragma omp section
+ g[0] = 'h';
+ }
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/inline-dump.c b/gcc-4.6/gcc/testsuite/gcc.dg/inline-dump.c
new file mode 100644
index 000000000..f08bd005a
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/inline-dump.c
@@ -0,0 +1,11 @@
+/* Verify that -fopt-info can output correct inline info. */
+/* { dg-do compile } */
+/* { dg-options "-Wall -fopt-info -O2 -fno-early-inlining" } */
+static inline int leaf() {
+ int i, ret = 0;
+ for (i = 0; i < 10; i++)
+ ret += i;
+ return ret;
+}
+static inline int foo(void) { return leaf(); } /* { dg-message "note: leaf inlined into bar .via inline instance foo." } */
+int bar(void) { return foo(); } /* { dg-message "note: foo inlined into bar" } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/inline_1.c b/gcc-4.6/gcc/testsuite/gcc.dg/inline_1.c
index 08ccb86f6..0ab4986a6 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/inline_1.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/inline_1.c
@@ -20,4 +20,3 @@ int foo2 (void)
/* { dg-final { scan-tree-dump-times "bar" 5 "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
-/* { dg-excess-errors "extra notes" } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/inline_2.c b/gcc-4.6/gcc/testsuite/gcc.dg/inline_2.c
index efdc76a98..0803aebc6 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/inline_2.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/inline_2.c
@@ -20,4 +20,3 @@ int foo2 (void)
/* { dg-final { scan-tree-dump-times "bar" 5 "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
-/* { dg-excess-errors "extra notes" } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/inline_3.c b/gcc-4.6/gcc/testsuite/gcc.dg/inline_3.c
index 70a23665d..6d5f3654a 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/inline_3.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/inline_3.c
@@ -20,4 +20,3 @@ int foo2 (void)
/* { dg-final { scan-tree-dump-times "bar" 5 "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
-/* { dg-excess-errors "extra notes" } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/inline_4.c b/gcc-4.6/gcc/testsuite/gcc.dg/inline_4.c
index 9a85242a4..ca8049545 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/inline_4.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/inline_4.c
@@ -20,4 +20,3 @@ int foo2 (void)
/* { dg-final { scan-tree-dump-times "bar" 4 "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
-/* { dg-excess-errors "extra notes" } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/ipa/ipa-sra-2.c b/gcc-4.6/gcc/testsuite/gcc.dg/ipa/ipa-sra-2.c
index 3437a81aa..c6b4d63aa 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/ipa/ipa-sra-2.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/ipa/ipa-sra-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fipa-sra -fdump-tree-eipa_sra-details" } */
+/* { dg-require-effective-target non_strict_align } */
struct bovid
{
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/ipa/ipa-sra-6.c b/gcc-4.6/gcc/testsuite/gcc.dg/ipa/ipa-sra-6.c
index 603829491..487e72ef4 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/ipa/ipa-sra-6.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/ipa/ipa-sra-6.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O2 -fipa-sra -fdump-tree-eipa_sra-slim" } */
+/* { dg-require-effective-target non_strict_align } */
struct bovid
{
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/mversn2.c b/gcc-4.6/gcc/testsuite/gcc.dg/mversn2.c
index 070487da8..a08948cb8 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/mversn2.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/mversn2.c
@@ -39,9 +39,9 @@ main ()
return fn1 ();
}
-/* { dg-final { scan-tree-dump "fn1_clone_1" "optimized" } } */
-/* { dg-final { scan-tree-dump "dispatch_clone_0" "optimized" } } */
-/* { dg-final { scan-tree-dump "dispatch_clone_1" "optimized" } } */
-/* { dg-final { scan-tree-dump-not "main_clone_0" "optimized" } } */
-/* { dg-final { scan-tree-dump-not "main_clone_1" "optimized" } } */
+/* { dg-final { scan-tree-dump "fn1\.clone\.1" "optimized" } } */
+/* { dg-final { scan-tree-dump "dispatch\.clone\.0" "optimized" } } */
+/* { dg-final { scan-tree-dump "dispatch\.clone\.1" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "main\.clone\.0" "optimized" } } */
+/* { dg-final { scan-tree-dump-not "main\.clone\.1" "optimized" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/pr26570.c b/gcc-4.6/gcc/testsuite/gcc.dg/pr26570.c
index 5768d32cc..71c16f207 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/pr26570.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/pr26570.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fprofile-generate -fprofile-use" } */
+/* { dg-options "-O2 -fprofile-generate -fprofile-use -fopt-info" } */
unsigned test (unsigned a, unsigned b)
{
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/pr32773.c b/gcc-4.6/gcc/testsuite/gcc.dg/pr32773.c
index e9cdd4c37..19a90195a 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/pr32773.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/pr32773.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
-/* { dg-options "-O -fprofile-use" } */
-/* { dg-options "-O -m4 -fprofile-use" { target sh-*-* } } */
+/* { dg-options "-O -fprofile-use -fopt-info" } */
+/* { dg-options "-O -m4 -fprofile-use -fopt-info" { target sh-*-* } } */
void foo (int *p)
{
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/pr40209.c b/gcc-4.6/gcc/testsuite/gcc.dg/pr40209.c
index f367f7c24..afe131fc5 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/pr40209.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/pr40209.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fprofile-use" } */
+/* { dg-options "-O2 -fprofile-use -fopt-info" } */
void process(const char *s);
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/pr45819.c b/gcc-4.6/gcc/testsuite/gcc.dg/pr45819.c
new file mode 100644
index 000000000..4979fd328
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/pr45819.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized -w" } */
+
+struct ehci_regs {
+ char x;
+ unsigned int port_status[0];
+} __attribute__ ((packed));
+
+struct ehci_hcd {
+ struct ehci_regs *regs;
+};
+
+int ehci_hub_control (struct ehci_hcd *ehci, int wIndex)
+{
+ unsigned int *status_reg = &ehci->regs->port_status[wIndex];
+ return *(volatile unsigned int *)status_reg;
+}
+
+/* { dg-final { scan-tree-dump "={v}" "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/pr48739-1.c b/gcc-4.6/gcc/testsuite/gcc.dg/pr48739-1.c
new file mode 100644
index 000000000..4dcdca977
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/pr48739-1.c
@@ -0,0 +1,27 @@
+/* PR tree-optimization/48739 */
+/* { dg-do compile } */
+/* { dg-require-effective-target pthread } */
+/* { dg-options "-O1 -ftree-parallelize-loops=2 -fno-tree-dominator-opts" } */
+
+extern int g;
+extern void bar (void);
+
+int
+foo (int x)
+{
+ int a, b, *c = (int *) 0;
+ for (a = 0; a < 10; ++a)
+ {
+ bar ();
+ for (b = 0; b < 5; ++b)
+ {
+ x = 0;
+ c = &x;
+ g = 1;
+ }
+ }
+ *c = x;
+ for (x = 0; x != 10; x++)
+ ;
+ return g;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/pr48739-2.c b/gcc-4.6/gcc/testsuite/gcc.dg/pr48739-2.c
new file mode 100644
index 000000000..c79f4e86a
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/pr48739-2.c
@@ -0,0 +1,27 @@
+/* PR tree-optimization/48739 */
+/* { dg-do compile } */
+/* { dg-require-effective-target pthread } */
+/* { dg-options "-O1 -ftree-parallelize-loops=2 -fno-tree-dominator-opts" } */
+
+extern int g, v[10];
+extern void bar (void);
+
+int
+foo (int x)
+{
+ int a, b, *c = (int *) 0;
+ for (a = 0; a < 10; ++a)
+ {
+ bar ();
+ for (b = 0; b < 5; ++b)
+ {
+ x = 0;
+ c = &x;
+ g = 1;
+ }
+ }
+ *c = x;
+ for (x = 0; x != 10; x++)
+ v[x] = x;
+ return g;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/pr49799.c b/gcc-4.6/gcc/testsuite/gcc.dg/pr49799.c
new file mode 100644
index 000000000..61ac261be
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/pr49799.c
@@ -0,0 +1,25 @@
+/* PR rtl-optimization/49799 */
+/* { dg-do assemble } */
+/* { dg-options "-O2 -w" } */
+
+static __inline int bar(int a)
+{
+ int tmp;
+
+ if (a <= 0) a ^= 0xFFFFFFFF;
+
+ return tmp - 1;
+}
+
+void foo(short *K)
+{
+ short tmp;
+ short *pptr, P[14];
+
+ pptr = P;
+ tmp = bar(*K);
+ *pptr = (*K << tmp) >> 16;
+
+ if (*P < tmp)
+ *K++ = 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/pr49948.c b/gcc-4.6/gcc/testsuite/gcc.dg/pr49948.c
new file mode 100644
index 000000000..f74239380
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/pr49948.c
@@ -0,0 +1,22 @@
+/* PR tree-optimization/49948 */
+/* { dg-do compile } */
+/* { dg-options "-O3 -ftree-parallelize-loops=2" } */
+
+extern int a, *b;
+int
+foo (void)
+{
+ int c, d = 8, *e[8], i;
+ if (a <= 7)
+ {
+ for (i = 0; i < 8; ++i)
+ e[i] = &c;
+ while (--d)
+ {
+ a = 0;
+ b = e[0];
+ }
+ return 0;
+ }
+ return b == &d;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/pr50078.c b/gcc-4.6/gcc/testsuite/gcc.dg/pr50078.c
new file mode 100644
index 000000000..a8aee43fb
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/pr50078.c
@@ -0,0 +1,14 @@
+/* PR tree-optimization/50078 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+unsigned nonvolvar[2];
+
+void
+test (int arg)
+{
+ unsigned v = *(volatile unsigned *) (&nonvolvar[arg]);
+ *(volatile unsigned *) (&nonvolvar[arg]) = v;
+}
+
+/* { dg-final { scan-assembler-times "movl\[^\n\r\]*nonvolvar" 2 { target { { i?86-*-* x86_64-*-* } && nonpic } } } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/pr50310-2.c b/gcc-4.6/gcc/testsuite/gcc.dg/pr50310-2.c
new file mode 100644
index 000000000..29621729e
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/pr50310-2.c
@@ -0,0 +1,47 @@
+/* PR target/50310 */
+/* { dg-do run } */
+/* { dg-options "-O3" } */
+/* { dg-options "-O3 -mavx" { target avx_runtime } } */
+
+double s1[4], s2[4], s3[64];
+
+int
+main (void)
+{
+ int i;
+ asm volatile ("" : : : "memory");
+ for (i = 0; i < 4; i++)
+ s3[0 * 4 + i] = __builtin_isgreater (s1[i], s2[i]) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[1 * 4 + i] = (!__builtin_isgreater (s1[i], s2[i])) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[2 * 4 + i] = __builtin_isgreaterequal (s1[i], s2[i]) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[3 * 4 + i] = (!__builtin_isgreaterequal (s1[i], s2[i])) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[4 * 4 + i] = __builtin_isless (s1[i], s2[i]) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[5 * 4 + i] = (!__builtin_isless (s1[i], s2[i])) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[6 * 4 + i] = __builtin_islessequal (s1[i], s2[i]) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[7 * 4 + i] = (!__builtin_islessequal (s1[i], s2[i])) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[8 * 4 + i] = __builtin_islessgreater (s1[i], s2[i]) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[9 * 4 + i] = (!__builtin_islessgreater (s1[i], s2[i])) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[10 * 4 + i] = __builtin_isunordered (s1[i], s2[i]) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[11 * 4 + i] = (!__builtin_isunordered (s1[i], s2[i])) ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[12 * 4 + i] = s1[i] > s2[i] ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[13 * 4 + i] = s1[i] >= s2[i] ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[14 * 4 + i] = s1[i] < s2[i] ? -1.0 : 0.0;
+ for (i = 0; i < 4; i++)
+ s3[15 * 4 + i] = s1[i] <= s2[i] ? -1.0 : 0.0;
+ asm volatile ("" : : : "memory");
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/pr50571.c b/gcc-4.6/gcc/testsuite/gcc.dg/pr50571.c
new file mode 100644
index 000000000..3fb4310d6
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/pr50571.c
@@ -0,0 +1,11 @@
+/* PR inline-asm/50571 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+static const int var[4] = { 1, 2, 3, 4 };
+
+void
+foo (void)
+{
+ __asm volatile ("" : : "m" (*(int *) var));
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/pr51408.c b/gcc-4.6/gcc/testsuite/gcc.dg/pr51408.c
new file mode 100644
index 000000000..2cc5cf967
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/pr51408.c
@@ -0,0 +1,22 @@
+/* This testcase used to fail because of a bug in
+ arm.md:*minmax_arithsi. */
+
+/* { dg-do run } */
+/* { dg-options "-O1" } */
+
+extern void abort (void);
+
+int __attribute__((noinline))
+foo (int a, int b)
+{
+ int max = (b > 0) ? b : 0;
+ return max - a;
+}
+
+int
+main (void)
+{
+ if (foo (3, -1) != -3)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/predict-1.c b/gcc-4.6/gcc/testsuite/gcc.dg/predict-1.c
new file mode 100644
index 000000000..0469a2b5e
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/predict-1.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-profile_estimate" } */
+
+extern int global;
+
+int bar(int);
+
+void foo (int bound)
+{
+ int i, ret = 0;
+ for (i = 0; i < bound; i++)
+ {
+ if (i > bound - 2)
+ global += bar (i);
+ }
+}
+
+/* { dg-final { scan-tree-dump "loop iv compare heuristics" "profile_estimate"} } */
+/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/predict-2.c b/gcc-4.6/gcc/testsuite/gcc.dg/predict-2.c
new file mode 100644
index 000000000..32b09da73
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/predict-2.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-profile_estimate" } */
+
+extern int global;
+
+int bar(int);
+
+void foo (int bound)
+{
+ int i, ret = 0;
+ for (i = 0; i < bound; i++)
+ {
+ if (i > bound * bound )
+ global += bar (i);
+ }
+}
+
+/* { dg-final { scan-tree-dump-not "loop iv compare heuristics" "profile_estimate"} } */
+/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/predict-3.c b/gcc-4.6/gcc/testsuite/gcc.dg/predict-3.c
new file mode 100644
index 000000000..f34a77a25
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/predict-3.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-profile_estimate" } */
+
+extern int global;
+
+int bar(int);
+
+void foo (int bound)
+{
+ int i, ret = 0;
+ for (i = 0; i <= bound; i++)
+ {
+ if (i != bound)
+ global += bar (i);
+ }
+}
+
+/* { dg-final { scan-tree-dump "loop iv compare heuristics" "profile_estimate"} } */
+/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/predict-4.c b/gcc-4.6/gcc/testsuite/gcc.dg/predict-4.c
new file mode 100644
index 000000000..6ff19fb18
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/predict-4.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-profile_estimate" } */
+
+extern int global;
+
+int bar(int);
+
+void foo (int bound)
+{
+ int i, ret = 0;
+ for (i = 0; i < 10; i++)
+ {
+ if (i < 5)
+ global += bar (i);
+ }
+}
+
+/* { dg-final { scan-tree-dump "loop iv compare heuristics" "profile_estimate"} } */
+/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/record-gcc-switches-in-elf-1.c b/gcc-4.6/gcc/testsuite/gcc.dg/record-gcc-switches-in-elf-1.c
new file mode 100644
index 000000000..d79662059
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/record-gcc-switches-in-elf-1.c
@@ -0,0 +1,16 @@
+/* { dg-do compile} */
+/* { dg-options "-frecord-gcc-switches-in-elf -Dtest -dA" } */
+
+void foobar(int);
+
+void
+foo (void)
+{
+ int i;
+ for (i = 0; i < 100; i++)
+ {
+ foobar(i);
+ }
+}
+
+/* { dg-final { scan-assembler-times "Dtest" 1 } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/sample-profile-generate-1.c b/gcc-4.6/gcc/testsuite/gcc.dg/sample-profile-generate-1.c
new file mode 100644
index 000000000..89f17eaf6
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/sample-profile-generate-1.c
@@ -0,0 +1,26 @@
+/* { dg-do compile} */
+/* { dg-options "-O2 -fprofile-generate -fprofile-generate-sampling" } */
+
+void foobar(int);
+
+void
+foo (void)
+{
+ int i;
+ for (i = 0; i < 100; i++)
+ {
+ foobar(i);
+ }
+}
+
+void
+bar (void)
+{
+ int i;
+ for (i = 0; i < 100; i++)
+ {
+ foobar(i);
+ }
+}
+
+/* { dg-final { cleanup-coverage-files } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr49518.c b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr49518.c
new file mode 100644
index 000000000..84a10fbbe
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr49518.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+
+int a, b;
+struct S { unsigned int s, t, u; } c, d = { 0, 1, 0 };
+
+void
+test (unsigned char z)
+{
+ char e[] = {0, 0, 0, 0, 1};
+ for (c.s = 1; c.s; c.s++)
+ {
+ b = e[c.s];
+ if (a)
+ break;
+ b = z >= c.u;
+ if (d.t)
+ break;
+ }
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr49886.c b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr49886.c
new file mode 100644
index 000000000..f0e8e60d3
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr49886.c
@@ -0,0 +1,102 @@
+/* { dg-do run } */
+
+struct PMC {
+ unsigned flags;
+};
+
+typedef struct Pcc_cell
+{
+ struct PMC *p;
+ long bla;
+ long type;
+} Pcc_cell;
+
+int gi;
+int cond;
+
+extern void abort ();
+extern void never_ever(int interp, struct PMC *pmc)
+ __attribute__((noinline,noclone));
+
+void never_ever (int interp, struct PMC *pmc)
+{
+ abort ();
+}
+
+static void mark_cell(int * interp, Pcc_cell *c)
+ __attribute__((__nonnull__(1)));
+
+static void
+mark_cell(int * interp, Pcc_cell *c)
+{
+ if (!cond)
+ return;
+
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<18)))
+ never_ever(gi + 1, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<17)))
+ never_ever(gi + 2, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<16)))
+ never_ever(gi + 3, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<15)))
+ never_ever(gi + 4, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<14)))
+ never_ever(gi + 5, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<13)))
+ never_ever(gi + 6, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<12)))
+ never_ever(gi + 7, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<11)))
+ never_ever(gi + 8, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<10)))
+ never_ever(gi + 9, c->p);
+}
+
+static void
+foo(int * interp, Pcc_cell *c)
+{
+ mark_cell(interp, c);
+}
+
+static struct Pcc_cell *
+__attribute__((noinline,noclone))
+getnull(void)
+{
+ return (struct Pcc_cell *) 0;
+}
+
+
+int main()
+{
+ int i;
+
+ cond = 1;
+ for (i = 0; i < 100; i++)
+ foo (&gi, getnull ());
+ return 0;
+}
+
+
+void
+bar_1 (int * interp, Pcc_cell *c)
+{
+ c->bla += 1;
+ mark_cell(interp, c);
+}
+
+void
+bar_2 (int * interp, Pcc_cell *c)
+{
+ c->bla += 2;
+ mark_cell(interp, c);
+}
+
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50092.c b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50092.c
new file mode 100644
index 000000000..c8a929b2c
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50092.c
@@ -0,0 +1,15 @@
+/* PR target/50092 */
+/* { dg-do compile { target lp64 } } */
+
+volatile int v;
+
+void bar (long double);
+void baz (_Complex long double *);
+
+void
+foo (void)
+{
+ _Complex long double w[100000000];
+ bar ((long double) v / 2147483648.0);
+ baz (w);
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50287.c b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50287.c
new file mode 100644
index 000000000..1f61293a5
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50287.c
@@ -0,0 +1,109 @@
+/* { dg-do compile } */
+
+struct PMC {
+ unsigned flags;
+};
+
+struct PVC {
+ unsigned flags, other_stuff;
+};
+
+
+typedef struct Pcc_cell
+{
+ struct PMC *p;
+ long bla;
+ long type;
+} Pcc_cell;
+
+int gi;
+int cond;
+
+struct PVC g_pvc;
+
+extern void abort ();
+extern void never_ever(int interp, struct PMC *pmc)
+ __attribute__((noinline,noclone));
+
+void never_ever (int interp, struct PMC *pmc)
+{
+ abort ();
+}
+
+static void mark_cell(int * interp, Pcc_cell *c, struct PVC pvc)
+ __attribute__((__nonnull__(1)));
+
+static void
+mark_cell(int * interp, Pcc_cell *c, struct PVC pvc)
+{
+ if (!cond)
+ return;
+
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<8)))
+ never_ever(gi + 1, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<7)))
+ never_ever(gi + 2, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<6)))
+ never_ever(gi + 3, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<5)))
+ never_ever(gi + 4, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<4)))
+ never_ever(gi + 5, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<3)))
+ never_ever(gi + 6, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<2)))
+ never_ever(gi + 7, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<1)))
+ never_ever(gi + 8, c->p);
+ if (c && c->type == 4 && c->p
+ && !(c->p->flags & (1<<9)))
+ never_ever(gi + 9, c->p);
+}
+
+static void
+foo(int * interp, Pcc_cell *c)
+{
+ mark_cell(interp, c, g_pvc);
+}
+
+static struct Pcc_cell *
+__attribute__((noinline,noclone))
+getnull(void)
+{
+ return (struct Pcc_cell *) 0;
+}
+
+
+int main()
+{
+ int i;
+
+ cond = 1;
+ for (i = 0; i < 100; i++)
+ foo (&gi, getnull ());
+ return 0;
+}
+
+
+void
+bar_1 (int * interp, Pcc_cell *c)
+{
+ c->bla += 1;
+ mark_cell(interp, c, g_pvc);
+}
+
+void
+bar_2 (int * interp, Pcc_cell *c, struct PVC pvc)
+{
+ c->bla += 2;
+ mark_cell(interp, c, pvc);
+}
+
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50396.c b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50396.c
new file mode 100644
index 000000000..aa17ebdaa
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50396.c
@@ -0,0 +1,22 @@
+/* { dg-do run } */
+/* { dg-add-options ieee } */
+
+extern void abort (void);
+typedef float vf128 __attribute__((vector_size(16)));
+typedef float vf64 __attribute__((vector_size(8)));
+int main()
+{
+#if !__FINITE_MATH_ONLY__
+#if __FLT_HAS_QUIET_NAN__
+ vf128 v = (vf128){ 0.f, 0.f, 0.f, 0.f };
+ vf64 u = (vf64){ 0.f, 0.f };
+ v = v / (vf128){ 0.f, 0.f, 0.f, 0.f };
+ if (v[0] == v[0])
+ abort ();
+ u = u / (vf64){ 0.f, 0.f };
+ if (u[0] == u[0])
+ abort ();
+#endif
+#endif
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50472.c b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50472.c
new file mode 100644
index 000000000..280f2c4ea
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50472.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-fdump-tree-optimized" } */
+
+static const unsigned int foo = 1;
+unsigned int test( void )
+{
+ const volatile unsigned int *bar = &foo;
+ return ( *bar );
+}
+
+/* { dg-final { scan-tree-dump-not "return 1" "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50723.c b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50723.c
new file mode 100644
index 000000000..24e490fc6
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr50723.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+
+typedef short unsigned int wchar_t;
+typedef unsigned int size_t;
+int* _errno(void);
+int WideCharToMultiByte (wchar_t *);
+int __attribute__ ((__nonnull__ (1)))
+__wcrtomb_cp (char *dst, wchar_t wc, const unsigned int cp,
+ const unsigned int mb_max)
+{
+ if (cp == 0) {
+ if (wc > 255)
+ (*_errno()) = 42;
+ return 1;
+ }
+ else
+ return WideCharToMultiByte (&wc);
+}
+void wcsrtombs (char *dst, const wchar_t *pwc, unsigned int cp,
+ unsigned int mb_max)
+{
+ if ((__wcrtomb_cp (dst, *pwc, cp, mb_max)) <= 0)
+ return;
+ if ((__wcrtomb_cp (dst, *pwc, cp, mb_max)) <= 0)
+ return;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr51042.c b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr51042.c
new file mode 100644
index 000000000..05961c4ac
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr51042.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+
+int a, b;
+
+void
+foo (int x)
+{
+ int e[2];
+ int d;
+ while (x)
+ {
+ for (d = 0; d <= 1; d = 1)
+ if (e[a])
+ break;
+ for (b = 0; b <= 0; b = 1)
+ {
+ e[a] = a;
+ if (a)
+ break;
+ }
+ }
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr51070-2.c b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr51070-2.c
new file mode 100644
index 000000000..f21eb3acb
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr51070-2.c
@@ -0,0 +1,35 @@
+/* { dg-do compile } */
+/* { dg-options "-fno-inline" } */
+
+int
+func_4 (int si1, int si2)
+{
+ return si1;
+}
+
+int
+func_14 (int left, int right)
+{
+ return 1;
+}
+
+int
+func_37 (int left, int right)
+{
+ return left;
+}
+
+int g_92[1024];
+int g_95[1024];
+int g_224;
+int g_352[1024];
+int
+func_9 ()
+{
+ for (; g_224; g_224 += 1)
+ {
+ g_95[0] = func_4 (func_37 (g_92[g_224], 0), 0);
+ g_92[g_224] = 0, g_352[g_224] = func_14 (0, 0);
+ }
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr51070.c b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr51070.c
new file mode 100644
index 000000000..cc06a90c8
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/torture/pr51070.c
@@ -0,0 +1,34 @@
+/* { dg-do compile } */
+
+int
+func_4 (int si1, int si2)
+{
+ return si1;
+}
+
+int
+func_14 (int left, int right)
+{
+ return 1;
+}
+
+int
+func_37 (int left, int right)
+{
+ return left;
+}
+
+int g_92[1024];
+int g_95[1024];
+int g_224;
+int g_352[1024];
+int
+func_9 ()
+{
+ for (; g_224; g_224 += 1)
+ {
+ g_95[0] = func_4 (func_37 (g_92[g_224], 0), 0);
+ g_92[g_224] = 0, g_352[g_224] = func_14 (0, 0);
+ }
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c b/gcc-4.6/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
index b5340b56d..73fde1967 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-inline-hot-caller -fdump-tree-optimized" } */
int a;
int b[100];
void abort (void);
@@ -34,7 +34,7 @@ main ()
return 0;
}
-/* cold function should be inlined, while hot function should not.
+/* cold function should be not inlined, while hot function should be.
Look for "cold_function () [tail call];" call statement not for the
declaration or other apperances of the string in dump. */
/* { dg-final-use { scan-tree-dump "cold_function ..;" "optimized"} } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/tree-prof/lipo/inliner-1_0.c b/gcc-4.6/gcc/testsuite/gcc.dg/tree-prof/lipo/inliner-1_0.c
index b5340b56d..532c4e53d 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/tree-prof/lipo/inliner-1_0.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/tree-prof/lipo/inliner-1_0.c
@@ -1,4 +1,4 @@
-/* { dg-options "-O2 -fdump-tree-optimized" } */
+/* { dg-options "-O2 -fno-inline-hot-caller -fdump-tree-optimized" } */
int a;
int b[100];
void abort (void);
@@ -34,7 +34,7 @@ main ()
return 0;
}
-/* cold function should be inlined, while hot function should not.
+/* cold function should not be inlined, while hot function should be.
Look for "cold_function () [tail call];" call statement not for the
declaration or other apperances of the string in dump. */
/* { dg-final-use { scan-tree-dump "cold_function ..;" "optimized"} } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c b/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c
index 45e44a1b2..470b585fd 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c
@@ -33,5 +33,5 @@ void test55 (int x, int y)
that the && should be emitted (based on BRANCH_COST). Fix this
by teaching dom to look through && and register all components
as true. */
-/* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" { xfail { ! "alpha*-*-* powerpc*-*-* cris-*-* crisv32-*-* hppa*-*-* i?86-*-* mmix-*-* mips*-*-* m68k*-*-* moxie-*-* sparc*-*-* spu-*-* x86_64-*-*" } } } } */
+/* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" { xfail { ! "alpha*-*-* arm*-*-* powerpc*-*-* cris-*-* crisv32-*-* hppa*-*-* i?86-*-* mmix-*-* mips*-*-* m68k*-*-* moxie-*-* sparc*-*-* spu-*-* x86_64-*-*" } } } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pr49671-1.c b/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pr49671-1.c
new file mode 100644
index 000000000..acc9980db
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pr49671-1.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+volatile int t;
+static inline int cvmx_atomic_get32(volatile int *ptr)
+{
+ return *ptr;
+}
+void f(void)
+{
+ while (!cvmx_atomic_get32(&t))
+ ;
+}
+
+/* { dg-final { scan-tree-dump "\{v\}" "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
+
+
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pr49671-2.c b/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pr49671-2.c
new file mode 100644
index 000000000..ba5a9d99c
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pr49671-2.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+int t;
+static inline int cvmx_atomic_get32(int *ptr)
+{
+ return *(volatile int*)ptr;
+}
+void f(void)
+{
+ while (!cvmx_atomic_get32(&t))
+ ;
+}
+
+/* { dg-final { scan-tree-dump "\{v\}" "optimized" } } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */
+
+
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pr51583.c b/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pr51583.c
new file mode 100644
index 000000000..2c4ec4723
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pr51583.c
@@ -0,0 +1,34 @@
+/* { dg-do compile } */
+/* { dg-options "-O1" } */
+
+typedef __complex__ double Value;
+
+union U
+{
+ Value v;
+ char c[sizeof(Value)];
+};
+
+struct S
+{
+ union U u;
+ int i,j;
+};
+
+Value gv;
+int gi, gj;
+
+Value foo (void)
+{
+ struct S s,t;
+
+ t.i = gi;
+ t.j = gj;
+ t.u.v = gv;
+ t.u.c[0] = 0;
+
+ s = t;
+ __imag__ s.u.v += s.i;
+
+ return s.u.v;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c b/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c
index 6db9ba0d8..2a60e1daa 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fno-tree-ccp -fdump-tree-ealias" } */
+/* { dg-options "-O2 -fno-tree-forwprop -fno-tree-ccp -fdump-tree-ealias" } */
extern void abort (void);
struct X {
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c b/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c
index 85b96b190..ddf934bf8 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -fno-tree-ccp -fdump-tree-ealias" } */
+/* { dg-options "-O2 -fno-tree-forwprop -fno-tree-ccp -fdump-tree-ealias" } */
extern void abort (void);
struct X {
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/unroll_1.c b/gcc-4.6/gcc/testsuite/gcc.dg/unroll_1.c
index 3e8e7a55f..23e241bfc 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/unroll_1.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/unroll_1.c
@@ -30,4 +30,3 @@ int foo2(void)
/* { dg-final { scan-rtl-dump-times "Decided to peel loop completely" 2 "loop2_unroll" } } */
/* { dg-final { cleanup-rtl-dump "loop2_unroll" } } */
-/* { dg-excess-errors "extra notes" } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/unroll_2.c b/gcc-4.6/gcc/testsuite/gcc.dg/unroll_2.c
index 12912cf77..9fdec57d6 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/unroll_2.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/unroll_2.c
@@ -30,4 +30,3 @@ int foo2(void)
/* { dg-final { scan-rtl-dump-times "Decided to peel loop completely" 1 "loop2_unroll" } } */
/* { dg-final { cleanup-rtl-dump "loop2_unroll" } } */
-/* { dg-excess-errors "extra notes" } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/unroll_3.c b/gcc-4.6/gcc/testsuite/gcc.dg/unroll_3.c
index d86ed552a..cc9a4fbcc 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/unroll_3.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/unroll_3.c
@@ -30,4 +30,3 @@ int foo2(void)
/* { dg-final { scan-rtl-dump-times "Decided to peel loop completely" 1 "loop2_unroll" } } */
/* { dg-final { cleanup-rtl-dump "loop2_unroll" } } */
-/* { dg-excess-errors "extra notes" } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/unroll_4.c b/gcc-4.6/gcc/testsuite/gcc.dg/unroll_4.c
index 7c70157f5..4484f0481 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/unroll_4.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/unroll_4.c
@@ -30,4 +30,3 @@ int foo2(void)
/* { dg-final { scan-rtl-dump-times "Decided to peel loop completely" 1 "loop2_unroll" } } */
/* { dg-final { cleanup-rtl-dump "loop2_unroll" } } */
-/* { dg-excess-errors "extra notes" } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.dg/vect/vect-70.c b/gcc-4.6/gcc/testsuite/gcc.dg/vect/vect-70.c
index e3ebdcab8..24677c2f8 100644
--- a/gcc-4.6/gcc/testsuite/gcc.dg/vect/vect-70.c
+++ b/gcc-4.6/gcc/testsuite/gcc.dg/vect/vect-70.c
@@ -7,7 +7,7 @@
struct s{
int m;
- int n[N][N][N];
+ int n[N/6][N/6][N];
};
struct test1{
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/arm/pr49641.c b/gcc-4.6/gcc/testsuite/gcc.target/arm/pr49641.c
new file mode 100644
index 000000000..7f9b3769c
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.target/arm/pr49641.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-mthumb -O2" } */
+/* { dg-require-effective-target arm_thumb1_ok } */
+/* { dg-final { scan-assembler-not "stmia\[\\t \]*r3!\[^\\n]*r3" } } */
+typedef struct {
+ void *t1, *t2, *t3;
+} z;
+extern volatile int y;
+static inline void foo(z *x) {
+ x->t1 = &x->t2;
+ x->t2 = ((void *)0);
+ x->t3 = &x->t1;
+}
+extern z v;
+void bar (void) {
+ y = 0;
+ foo(&v);
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/arm/sibcall-2.c b/gcc-4.6/gcc/testsuite/gcc.target/arm/sibcall-2.c
new file mode 100644
index 000000000..921c0f302
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.target/arm/sibcall-2.c
@@ -0,0 +1,12 @@
+/* { dg-require-effective-target arm_eabi } */
+/* { dg-do compile } */
+/* { dg-options "-O2 -mabi=aapcs" } */
+
+
+extern void __attribute__((weak)) wfunc(void);
+void main(void)
+{
+ wfunc(); /* Must not tail-call. */
+}
+
+/* { dg-final { scan-assembler-not "b\[\\t \]+wfunc" } } */
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/i386/aes-avx-check.h b/gcc-4.6/gcc/testsuite/gcc.target/i386/aes-avx-check.h
index 36a038ea3..f2a4ead40 100644
--- a/gcc-4.6/gcc/testsuite/gcc.target/i386/aes-avx-check.h
+++ b/gcc-4.6/gcc/testsuite/gcc.target/i386/aes-avx-check.h
@@ -3,6 +3,7 @@
#endif
#include <stdlib.h>
#include "cpuid.h"
+#include "avx-os-support.h"
static void aes_avx_test (void);
@@ -22,8 +23,9 @@ main ()
return 0;
/* Run AES + AVX test only if host has AES + AVX support. */
- if ((ecx & (bit_AVX | bit_OSXSAVE | bit_AES))
- == (bit_AVX | bit_OSXSAVE | bit_AES))
+ if (((ecx & (bit_AVX | bit_OSXSAVE | bit_AES))
+ == (bit_AVX | bit_OSXSAVE | bit_AES))
+ && avx_os_support ())
{
do_test ();
#ifdef DEBUG
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/i386/avx-check.h b/gcc-4.6/gcc/testsuite/gcc.target/i386/avx-check.h
index b15584ad2..7ddca9d7b 100644
--- a/gcc-4.6/gcc/testsuite/gcc.target/i386/avx-check.h
+++ b/gcc-4.6/gcc/testsuite/gcc.target/i386/avx-check.h
@@ -1,6 +1,7 @@
#include <stdlib.h>
#include "cpuid.h"
#include "m256-check.h"
+#include "avx-os-support.h"
static void avx_test (void);
@@ -20,7 +21,8 @@ main ()
return 0;
/* Run AVX test only if host has AVX support. */
- if ((ecx & (bit_AVX | bit_OSXSAVE)) == (bit_AVX | bit_OSXSAVE))
+ if (((ecx & (bit_AVX | bit_OSXSAVE)) == (bit_AVX | bit_OSXSAVE))
+ && avx_os_support ())
{
do_test ();
#ifdef DEBUG
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/i386/avx-os-support.h b/gcc-4.6/gcc/testsuite/gcc.target/i386/avx-os-support.h
new file mode 100644
index 000000000..21d332f7d
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.target/i386/avx-os-support.h
@@ -0,0 +1,10 @@
+/* Check if the OS supports executing AVX instructions. */
+
+static int
+avx_os_support (void)
+{
+ unsigned int eax, edx;
+
+ __asm__ ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0));
+ return (eax & 6) == 6;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/i386/builtin_target.c b/gcc-4.6/gcc/testsuite/gcc.target/i386/builtin_target.c
new file mode 100644
index 000000000..fc1014fa8
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.target/i386/builtin_target.c
@@ -0,0 +1,61 @@
+/* This test checks if the __builtin_cpu_* calls are recognized. */
+
+/* { dg-do run } */
+
+int
+fn1 ()
+{
+ if (__builtin_cpu_supports_cmov () < 0)
+ return -1;
+ if (__builtin_cpu_supports_mmx () < 0)
+ return -1;
+ if (__builtin_cpu_supports_popcount () < 0)
+ return -1;
+ if (__builtin_cpu_supports_sse () < 0)
+ return -1;
+ if (__builtin_cpu_supports_sse2 () < 0)
+ return -1;
+ if (__builtin_cpu_supports_sse3 () < 0)
+ return -1;
+ if (__builtin_cpu_supports_ssse3 () < 0)
+ return -1;
+ if (__builtin_cpu_supports_sse4_1 () < 0)
+ return -1;
+ if (__builtin_cpu_supports_sse4_2 () < 0)
+ return -1;
+ if (__builtin_cpu_is_amd () < 0)
+ return -1;
+ if (__builtin_cpu_is_intel () < 0)
+ return -1;
+ if (__builtin_cpu_is_intel_atom () < 0)
+ return -1;
+ if (__builtin_cpu_is_intel_core2 () < 0)
+ return -1;
+ if (__builtin_cpu_is_intel_corei7 () < 0)
+ return -1;
+ if (__builtin_cpu_is_intel_corei7_nehalem () < 0)
+ return -1;
+ if (__builtin_cpu_is_intel_corei7_westmere () < 0)
+ return -1;
+ if (__builtin_cpu_is_intel_corei7_sandybridge () < 0)
+ return -1;
+ if (__builtin_cpu_is_amdfam10 () < 0)
+ return -1;
+ if (__builtin_cpu_is_amdfam10_barcelona () < 0)
+ return -1;
+ if (__builtin_cpu_is_amdfam10_shanghai () < 0)
+ return -1;
+ if (__builtin_cpu_is_amdfam10_istanbul () < 0)
+ return -1;
+ if (__builtin_cpu_is_amdfam15_bdver1 () < 0)
+ return -1;
+ if (__builtin_cpu_is_amdfam15_bdver2 () < 0)
+ return -1;
+
+ return 0;
+}
+
+int main ()
+{
+ return fn1 ();
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/i386/movdi-rex64.c b/gcc-4.6/gcc/testsuite/gcc.target/i386/movdi-rex64.c
new file mode 100644
index 000000000..c9102028a
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.target/i386/movdi-rex64.c
@@ -0,0 +1,11 @@
+/* { dg-do compile { target *-*-linux* } } */
+/* { dg-options "-fPIE" } */
+
+char *strcpy (char *dest, const char *src);
+
+static __thread char buffer[25];
+const char * error_message (void)
+{
+ strcpy (buffer, "Unknown code ");
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h b/gcc-4.6/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
index 750e25c50..5eed2e220 100644
--- a/gcc-4.6/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
+++ b/gcc-4.6/gcc/testsuite/gcc.target/i386/pclmul-avx-check.h
@@ -3,6 +3,7 @@
#endif
#include <stdlib.h>
#include "cpuid.h"
+#include "avx-os-support.h"
static void pclmul_avx_test (void);
@@ -22,8 +23,9 @@ main ()
return 0;
/* Run PCLMUL + AVX test only if host has PCLMUL + AVX support. */
- if ((ecx & (bit_AVX | bit_OSXSAVE | bit_PCLMUL))
- == (bit_AVX | bit_OSXSAVE | bit_PCLMUL))
+ if (((ecx & (bit_AVX | bit_OSXSAVE | bit_PCLMUL))
+ == (bit_AVX | bit_OSXSAVE | bit_PCLMUL))
+ && avx_os_support ())
{
do_test ();
#ifdef DEBUG
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/i386/pr48721.c b/gcc-4.6/gcc/testsuite/gcc.target/i386/pr48721.c
new file mode 100644
index 000000000..f37a16949
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.target/i386/pr48721.c
@@ -0,0 +1,51 @@
+/* PR rtl-optimization/48721 */
+/* { dg-do compile } */
+/* { dg-options "-O -foptimize-sibling-calls -fsched2-use-superblocks -fschedule-insns2 -mtune=core2" } */
+
+extern unsigned char a[];
+extern int b[], d[], e[], f[], g[], *h[], m[], *n[], o[];
+extern char c[];
+
+struct S
+{
+ unsigned char s1;
+ int s2, s3, s4, s5, s6, s7, s8;
+};
+
+__attribute__((noinline, noclone)) int
+foo (int x)
+{
+ return 0;
+}
+
+int
+bar (int x, struct S *y)
+{
+ int z;
+ switch (x)
+ {
+ case 1:
+ case 2:
+ {
+ int t2, t4, t5, t6, t7, t8;
+ z = o[y->s8 * 6];
+ t8 = *n[m[x] * 5];
+ t4 = *h[y->s7];
+ t7 = z;
+ z = g[f[x] + y->s6];
+ t6 = e[y->s5];
+ t5 = d[c[x] + y->s3 * 17];
+ if (z)
+ t2 = b[z];
+ if (a[z] != y->s1)
+ return foo (x);
+ y->s8 = t8;
+ y->s4 = t4;
+ y->s7 = t7;
+ y->s6 = t6;
+ y->s5 = t5;
+ y->s2 = t2;
+ }
+ }
+ return 0;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/i386/pr49866.c b/gcc-4.6/gcc/testsuite/gcc.target/i386/pr49866.c
new file mode 100644
index 000000000..823305df7
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.target/i386/pr49866.c
@@ -0,0 +1,23 @@
+/* PR target/49866 */
+/* { dg-do assemble } */
+/* { dg-options "-O2 -mcmodel=large" { target lp64 } } */
+
+void fn (void *, int, int);
+int fn2 (void);
+void baz (int);
+
+static void
+foo (void *x, int y)
+{
+ int i;
+ for (i = 0; i < y; i++)
+ fn (x, fn2 (), i);
+}
+
+void
+bar (int u, int v, int w, void *x)
+{
+ baz (u);
+ foo (x, w);
+ baz (u);
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/i386/pr49920.c b/gcc-4.6/gcc/testsuite/gcc.target/i386/pr49920.c
new file mode 100644
index 000000000..416e7a478
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.target/i386/pr49920.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+/* { dg-require-effective-target ilp32 } */
+
+typedef __SIZE_TYPE__ size_t;
+extern void *malloc (size_t);
+
+register unsigned int MR_mr0 asm ("esi");
+register unsigned int MR_mr1 asm ("edi");
+
+void ml_backend__ml_closure_gen_module11 (void)
+{
+ unsigned int MR_tempr1, MR_tempr2, MR_tempr3;
+
+ MR_tempr1 = (unsigned int)((char *) malloc (sizeof (unsigned int)) + 4);
+ MR_tempr3 = ((unsigned int *) MR_mr0)[0];
+
+ ((unsigned int *) (MR_tempr1 - 4))[0] = MR_tempr3;
+
+ MR_tempr2 = (unsigned int)((char *) malloc (2 * sizeof (unsigned int)));
+
+ ((unsigned int *) MR_tempr2)[1] = MR_tempr1;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/i386/pr50202.c b/gcc-4.6/gcc/testsuite/gcc.target/i386/pr50202.c
new file mode 100644
index 000000000..2023ec86d
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.target/i386/pr50202.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fno-tree-dse -fno-dce -msse4" } */
+/* { dg-require-effective-target sse4 } */
+
+typedef char __v16qi __attribute__ ((__vector_size__ (16)));
+
+__v16qi v;
+int i;
+
+void
+foo (void)
+{
+ i = __builtin_ia32_pcmpistri128 (v, v, 255);
+ i = 255;
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/i386/pr50712.c b/gcc-4.6/gcc/testsuite/gcc.target/i386/pr50712.c
new file mode 100644
index 000000000..f08a94453
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.target/i386/pr50712.c
@@ -0,0 +1,33 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-options "-O2" } */
+
+typedef __builtin_va_list __va_list;
+typedef __va_list __gnuc_va_list;
+typedef __gnuc_va_list va_list;
+struct MSVCRT__iobuf { };
+typedef struct MSVCRT__iobuf MSVCRT_FILE;
+typedef union _printf_arg { } printf_arg;
+MSVCRT_FILE MSVCRT__iob[20];
+int pf_print_a (va_list *);
+int __attribute__((__cdecl__))
+MSVCRT_vfprintf_s(MSVCRT_FILE* file, const char *format, va_list valist)
+{
+ if(!((file != ((void *)0))
+ || (MSVCRT__invalid_parameter(((void *)0), ((void *)0),
+ ((void *)0), 0, 0),0)))
+ return -1;
+ return pf_printf_a(&valist);
+}
+int __attribute__((__cdecl__))
+MSVCRT_vprintf_s(const char *format, va_list valist)
+{
+ return MSVCRT_vfprintf_s((MSVCRT__iob+1),format,valist);
+}
+int __attribute__((__cdecl__))
+MSVCRT_fprintf_s(MSVCRT_FILE* file, const char *format, ...)
+{
+ va_list valist;
+ va_start (valist, format);
+ return MSVCRT_vfprintf_s(file, format, valist);
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/i386/pr50788.c b/gcc-4.6/gcc/testsuite/gcc.target/i386/pr50788.c
new file mode 100644
index 000000000..29a19634c
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.target/i386/pr50788.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mavx -fpeel-loops -fstack-protector-all" } */
+
+typedef long long __m256i __attribute__ ((__vector_size__ (32)));
+typedef double __m256d __attribute__ ((__vector_size__ (32)));
+
+__m256d foo (__m256d *__P, __m256i __M)
+{
+ return __builtin_ia32_maskloadpd256 ( __P, __M);
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/i386/pr51393.c b/gcc-4.6/gcc/testsuite/gcc.target/i386/pr51393.c
new file mode 100644
index 000000000..ac167396e
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.target/i386/pr51393.c
@@ -0,0 +1,22 @@
+/* { dg-do run } */
+/* { dg-require-effective-target avx } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-O -mavx" } */
+
+#include "avx-check.h"
+#include <immintrin.h>
+
+static void
+__attribute__((noinline))
+avx_test (void)
+{
+ long long in = 0x800000000ll;
+ long long out;
+
+ __m256i zero = _mm256_setzero_si256();
+ __m256i tmp = _mm256_insert_epi64 (zero, in, 0);
+ out = _mm256_extract_epi64(tmp, 0);
+
+ if (in != out)
+ abort ();
+}
diff --git a/gcc-4.6/gcc/testsuite/gcc.target/powerpc/pr51623.c b/gcc-4.6/gcc/testsuite/gcc.target/powerpc/pr51623.c
new file mode 100644
index 000000000..37b7d6557
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gcc.target/powerpc/pr51623.c
@@ -0,0 +1,123 @@
+/* PR target/51623 */
+/* { dg-do compile { target { { powerpc*-*-linux* && ilp32 } || { powerpc-*-eabi* } } } } */
+/* { dg-options "-mrelocatable -ffreestanding" } */
+
+/* This generated an error, since the compiler was calling
+ unlikely_text_section_p in a context where it wasn't valid. */
+
+typedef long long loff_t;
+typedef unsigned size_t;
+
+
+struct mtd_info {
+ unsigned writesize;
+ unsigned oobsize;
+ const char *name;
+};
+
+extern int strcmp(const char *,const char *);
+extern char * strchr(const char *,int);
+
+struct cmd_tbl_s {
+ char *name;
+};
+
+
+int printf(const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2)));
+void* malloc(size_t);
+void free(void*);
+
+
+extern int nand_curr_device;
+extern struct mtd_info nand_info[];
+
+static int nand_dump(struct mtd_info *nand, unsigned long off, int only_oob)
+{
+ int i;
+ unsigned char *datbuf, *oobbuf, *p;
+
+ datbuf = malloc(nand->writesize + nand->oobsize);
+ oobbuf = malloc(nand->oobsize);
+ off &= ~(nand->writesize - 1);
+
+ printf("Page %08lx dump:\n", off);
+ i = nand->writesize >> 4;
+ p = datbuf;
+
+ while (i--) {
+ if (!only_oob)
+ printf("\t%02x %02x %02x %02x %02x %02x %02x %02x"
+ " %02x %02x %02x %02x %02x %02x %02x %02x\n",
+ p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7],
+ p[8], p[9], p[10], p[11], p[12], p[13], p[14],
+ p[15]);
+ p += 16;
+ }
+
+ i = nand->oobsize >> 3;
+ free(datbuf);
+ free(oobbuf);
+
+ return 0;
+}
+
+int do_nand(struct cmd_tbl_s * cmdtp, int flag, int argc, char *argv[])
+{
+ int dev;
+ unsigned long off;
+ char *cmd, *s;
+ struct mtd_info *nand;
+
+ if (argc < 2)
+ goto usage;
+
+ cmd = argv[1];
+
+ if (strcmp(cmd, "info") == 0) {
+ putc('\n');
+ return 0;
+ }
+
+ if (strcmp(cmd, "device") == 0) {
+ if (argc < 3) {
+ putc('\n');
+ }
+ dev = (int)simple_strtoul(argv[2], ((void *)0), 10);
+ nand_curr_device = dev;
+ return 0;
+ }
+
+ if (strcmp(cmd, "bad") != 0 && strcmp(cmd, "erase") != 0 )
+ goto usage;
+
+ if (nand_curr_device < 0 ) {
+ return 1;
+ }
+ nand = &nand_info[nand_curr_device];
+
+ if (strcmp(cmd, "erase") == 0 || strcmp(cmd, "scrub") == 0) {
+ int clean = argc > 2 && !strcmp("clean", argv[2]);
+ int scrub = !strcmp(cmd, "scrub");
+ return 0;
+ }
+
+ if (strncmp(cmd, "dump", 4) == 0) {
+ if (argc < 3)
+ goto usage;
+
+ s = strchr(cmd, '.');
+ off = (int)simple_strtoul(argv[2], ((void *)0), 16);
+
+ if (s != ((void *)0) && strcmp(s, ".oob") == 0)
+ nand_dump(nand, off, 1);
+ else
+ nand_dump(nand, off, 0);
+
+ return 0;
+ }
+usage:
+ cmd_usage(cmdtp);
+ return 1;
+}
+
+void *ptr = do_nand;
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/abstract_type_6.f03 b/gcc-4.6/gcc/testsuite/gfortran.dg/abstract_type_6.f03
index 53116dfb3..de1cea363 100644
--- a/gcc-4.6/gcc/testsuite/gfortran.dg/abstract_type_6.f03
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/abstract_type_6.f03
@@ -31,7 +31,7 @@ TYPE, EXTENDS(middle) :: bottom
CONTAINS
! useful proc to satisfy deferred procedure in top. Because we've
! extended middle we wouldn't get told off if we forgot this.
- PROCEDURE :: proc_a => bottom_a
+ PROCEDURE :: proc_a => bottom_a ! { dg-error "must be a module procedure" }
! calls middle%proc_b and then provides extra behaviour
PROCEDURE :: proc_b => bottom_b
! calls top_c and then provides extra behaviour
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/alloc_comp_initializer_3.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/alloc_comp_initializer_3.f90
new file mode 100644
index 000000000..014b069e5
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/alloc_comp_initializer_3.f90
@@ -0,0 +1,15 @@
+! { dg-do compile }
+!
+! PR fortran/50050
+! Out of bound whilst releasing initialization of allocate object
+!
+! Contributed by someone <sigurdkn@gmail.com>
+
+program bug
+ implicit none
+ type foo
+ integer, pointer :: a => null()
+ end type
+ type(foo), dimension(:,:), allocatable :: data
+ allocate(data(1:1,1)) ! This used to lead to an ICE
+end program
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/allocate_error_3.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/allocate_error_3.f90
new file mode 100644
index 000000000..7616caad3
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/allocate_error_3.f90
@@ -0,0 +1,9 @@
+! { dg-do compile }
+!
+! PR 49708: [4.5/4.6/4.7 Regression] ICE with allocate and no dimensions
+!
+! Contributed by <fnordxyz@yahoo.com>
+
+ real, pointer :: x(:)
+ allocate(x) ! { dg-error "Array specification required" }
+end
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/assumed_charlen_arg_2.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/assumed_charlen_arg_2.f90
new file mode 100644
index 000000000..e9481d8ec
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/assumed_charlen_arg_2.f90
@@ -0,0 +1,16 @@
+! { dg-do compile }
+!
+! PR 50585: [4.6/4.7 Regression] ICE with assumed length character array argument
+!
+! Contributed by Stuart Mentzer <sgm@objexx.com>
+
+SUBROUTINE SUB1( str )
+ IMPLICIT NONE
+ CHARACTER(len=*) :: str(2)
+ CALL SUB2( str(1)(:3) )
+END SUBROUTINE
+
+SUBROUTINE SUB2( str )
+ IMPLICIT NONE
+ CHARACTER(*) :: str
+END SUBROUTINE
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/auto_char_dummy_array_3.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/auto_char_dummy_array_3.f90
new file mode 100644
index 000000000..053956cab
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/auto_char_dummy_array_3.f90
@@ -0,0 +1,25 @@
+! { dg-do run }
+
+! PR fortran/49885
+! Check that character arrays with non-constant char-length are handled
+! correctly.
+
+! Contributed by Daniel Kraft <d@domob.eu>,
+! based on original test case and variant by Tobias Burnus in comment 2.
+
+PROGRAM main
+ IMPLICIT NONE
+
+ CALL s (10)
+
+CONTAINS
+
+ SUBROUTINE s (nb)
+ INTEGER :: nb
+ CHARACTER(MAX (80, nb)) :: bad_rec(1)
+
+ bad_rec(1)(1:2) = 'abc'
+ IF (bad_rec(1)(1:2) /= 'ab') CALL abort ()
+ END SUBROUTINE s
+
+END PROGRAM main
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/bessel_6.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/bessel_6.f90
index 3c1a6f418..1671d1118 100644
--- a/gcc-4.6/gcc/testsuite/gfortran.dg/bessel_6.f90
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/bessel_6.f90
@@ -12,7 +12,7 @@
implicit none
real,parameter :: values(*) = [0.0, 0.5, 1.0, 0.9, 1.8,2.0,3.0,4.0,4.25,8.0,34.53, 475.78]
real,parameter :: myeps(size(values)) = epsilon(0.0) &
- * [2, 7, 5, 6, 9, 12, 12, 7, 7, 8, 75, 15 ]
+ * [2, 7, 5, 6, 9, 12, 12, 7, 7, 8, 92, 15 ]
! The following is sufficient for me - the values above are a bit
! more tolerant
! * [0, 5, 3, 4, 6, 7, 7, 5, 5, 6, 66, 4 ]
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/c_kind_tests_3.f03 b/gcc-4.6/gcc/testsuite/gfortran.dg/c_kind_tests_3.f03
new file mode 100644
index 000000000..5d5f3ab19
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/c_kind_tests_3.f03
@@ -0,0 +1,11 @@
+! { dg-do compile }
+!
+! PR 47023: [4.6/4.7 regression] C_Sizeof: Rejects valid code
+!
+! Contributed by <florian.rathgeber@gmail.com>
+
+ use iso_c_binding
+ real(c_double) x
+ print *, c_sizeof(x)
+ print *, c_sizeof(0.0_c_double)
+end
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/class_46.f03 b/gcc-4.6/gcc/testsuite/gfortran.dg/class_46.f03
new file mode 100644
index 000000000..4719c252f
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/class_46.f03
@@ -0,0 +1,18 @@
+! { dg-do run }
+!
+! PR 50625: [4.6/4.7 Regression][OOP] ALLOCATABLE attribute lost for module CLASS variables
+!
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+
+module m
+type t
+end type t
+class(t), allocatable :: x
+end module m
+
+use m
+implicit none
+if (allocated(x)) call abort()
+end
+
+! { dg-final { cleanup-modules "m" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/common_16.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/common_16.f90
new file mode 100644
index 000000000..3314e80ef
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/common_16.f90
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! { dg-options "-pedantic -mdalign" { target sh*-*-* } }
+!
+! PR fortran/50273
+!
+subroutine test()
+ character :: a
+ integer :: b
+ character :: c
+ common /global_var/ a, b, c ! { dg-warning "Padding of 3 bytes required before 'b' in COMMON" }
+ print *, a, b, c
+end subroutine test
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/default_initialization_5.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/default_initialization_5.f90
new file mode 100644
index 000000000..11927619d
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/default_initialization_5.f90
@@ -0,0 +1,66 @@
+! { dg-do run }
+! { dg-options "-fdump-tree-original" }
+!
+! PR fortran/51435
+!
+! Contributed by darmar.xxl@gmail.com
+!
+module arr_m
+ type arr_t
+ real(8), dimension(:), allocatable :: rsk
+ end type
+ type arr_t2
+ integer :: a = 77
+ end type
+end module arr_m
+!*********************
+module list_m
+ use arr_m
+ implicit none
+
+ type(arr_t2), target :: tgt
+
+ type my_list
+ type(arr_t), pointer :: head => null()
+ end type my_list
+ type my_list2
+ type(arr_t2), pointer :: head => tgt
+ end type my_list2
+end module list_m
+!***********************
+module worker_mod
+ use list_m
+ implicit none
+
+ type data_all_t
+ type(my_list) :: my_data
+ end type data_all_t
+ type data_all_t2
+ type(my_list2) :: my_data
+ end type data_all_t2
+contains
+ subroutine do_job()
+ type(data_all_t) :: dum
+ type(data_all_t2) :: dum2
+
+ if (associated(dum%my_data%head)) then
+ call abort()
+ else
+ print *, 'OK: do_job my_data%head is NOT associated'
+ end if
+
+ if (dum2%my_data%head%a /= 77) &
+ call abort()
+ end subroutine
+end module
+!***************
+program hello
+ use worker_mod
+ implicit none
+ call do_job()
+end program
+
+! { dg-final { scan-tree-dump-times "my_data.head = 0B" 1 "original" } }
+! { dg-final { scan-tree-dump-times "my_data.head = &tgt" 1 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
+! { dg-final { cleanup-modules "arr_m list_m worker_mod" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/extends_12.f03 b/gcc-4.6/gcc/testsuite/gfortran.dg/extends_12.f03
new file mode 100644
index 000000000..a93f6d0f1
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/extends_12.f03
@@ -0,0 +1,24 @@
+! { dg-do compile }
+!
+! PR 48706: Type extension inside subroutine
+!
+! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
+
+module mod_diff_01
+ implicit none
+ type :: foo
+ end type
+contains
+ subroutine create_ext
+ type, extends(foo) :: foo_e
+ end type
+ end subroutine
+end module
+
+program diff_01
+ use mod_diff_01
+ implicit none
+ call create_ext()
+end program
+
+! { dg-final { cleanup-modules "mod_diff_01" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/implicit_pure_1.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/implicit_pure_1.f90
new file mode 100644
index 000000000..d4a5a364e
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/implicit_pure_1.f90
@@ -0,0 +1,53 @@
+! { dg-do run }
+!
+! PR fortran/51218
+!
+! Contributed by Harald Anlauf
+!
+
+module a
+ implicit none
+ integer :: neval = 0
+contains
+ subroutine inc_eval
+ neval = neval + 1
+ end subroutine inc_eval
+end module a
+
+module b
+ use a
+ implicit none
+contains
+ function f(x) ! Should be implicit pure
+ real :: f
+ real, intent(in) :: x
+ f = x
+ end function f
+
+ function g(x) ! Should NOT be implicit pure
+ real :: g
+ real, intent(in) :: x
+ call inc_eval
+ g = x
+ end function g
+end module b
+
+program gfcbug114a
+ use a
+ use b
+ implicit none
+ real :: x = 1, y = 1, t, u, v, w
+ if (neval /= 0) call abort ()
+ t = f(x)*f(y)
+ if (neval /= 0) call abort ()
+ u = f(x)*f(y) + f(x)*f(y)
+ if (neval /= 0) call abort ()
+ v = g(x)*g(y)
+ if (neval /= 2) call abort ()
+ w = g(x)*g(y) + g(x)*g(y)
+ if (neval /= 6) call abort ()
+ if (t /= 1.0 .or. u /= 2.0 .or. v /= 1.0 .or. w /= 2) call abort ()
+end program gfcbug114a
+
+! { dg-final { scan-module "b" "IMPLICIT_PURE" } }
+! { dg-final { cleanup-modules "b" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/implicit_pure_2.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/implicit_pure_2.f90
new file mode 100644
index 000000000..496e856e0
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/implicit_pure_2.f90
@@ -0,0 +1,17 @@
+! { dg-do compile }
+! PR 51502 - this was wrongly detected to be implicit pure.
+module m
+ integer :: i
+contains
+ subroutine foo(x)
+ integer, intent(inout) :: x
+ outer: block
+ block
+ i = 5
+ end block
+ end block outer
+ end subroutine foo
+end module m
+
+! { dg-final { scan-module-absence "m" "IMPLICIT_PURE" } }
+! { dg-final { cleanup-modules "m" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/initialization_28.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/initialization_28.f90
new file mode 100644
index 000000000..f5330534a
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/initialization_28.f90
@@ -0,0 +1,9 @@
+! { dg-do compile }
+!
+! PR fortran/50163
+!
+! Contributed by Philip Mason
+!
+character(len=2) :: xx ='aa'
+integer :: iloc=index(xx,'bb') ! { dg-error "has not been declared or is a variable" }
+end
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/lto/pr45586-2_0.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/lto/pr45586-2_0.f90
new file mode 100644
index 000000000..52e2bb1e6
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/lto/pr45586-2_0.f90
@@ -0,0 +1,34 @@
+! { dg-lto-do link }
+!
+! PR fortran/45586 (comment 53)
+!
+
+MODULE M1
+ INTEGER, PARAMETER :: dp=8
+ TYPE realspace_grid_type
+ REAL(KIND=dp), DIMENSION ( :, :, : ), ALLOCATABLE :: r
+ END TYPE realspace_grid_type
+ TYPE realspace_grid_p_type
+ TYPE(realspace_grid_type), POINTER :: rs_grid
+ END TYPE realspace_grid_p_type
+ TYPE realspaces_grid_p_type
+ TYPE(realspace_grid_p_type), DIMENSION(:), POINTER :: rs
+ END TYPE realspaces_grid_p_type
+END MODULE
+
+MODULE M2
+ USE M1
+CONTAINS
+ SUBROUTINE S1()
+ INTEGER :: i,j
+ TYPE(realspaces_grid_p_type), DIMENSION(:), POINTER :: rs_gauge
+ REAL(dp), DIMENSION(:, :, :), POINTER :: y
+ y=>rs_gauge(i)%rs(j)%rs_grid%r
+ END SUBROUTINE
+END MODULE
+
+USE M2
+ CALL S1()
+END
+
+! { dg-final { cleanup-modules "m1 m2" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/move_alloc_8.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/move_alloc_8.f90
new file mode 100644
index 000000000..2fa530666
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/move_alloc_8.f90
@@ -0,0 +1,106 @@
+! { dg-do compile }
+!
+! PR fortran/50684
+!
+! Module "bug" contributed by Martin Steghöfer.
+!
+
+MODULE BUG
+ TYPE MY_TYPE
+ INTEGER, ALLOCATABLE :: VALUE
+ END TYPE
+CONTAINS
+ SUBROUTINE POINTER_INTENT_IN_BUG_WORKING(POINTER_INTENT_IN_VARIABLE)
+ TYPE(MY_TYPE), POINTER, INTENT(IN) :: POINTER_INTENT_IN_VARIABLE
+ TYPE(MY_TYPE), POINTER :: POINTER_VARIABLE_LOCAL
+ INTEGER, ALLOCATABLE :: LOCAL_VALUE
+
+ POINTER_VARIABLE_LOCAL=>POINTER_INTENT_IN_VARIABLE
+ CALL MOVE_ALLOC(POINTER_VARIABLE_LOCAL%VALUE, LOCAL_VALUE)
+
+ RETURN
+ END SUBROUTINE POINTER_INTENT_IN_BUG_WORKING
+
+ SUBROUTINE POINTER_INTENT_IN_BUG_FAILING(POINTER_INTENT_IN_VARIABLE)
+ TYPE(MY_TYPE), POINTER, INTENT(IN) :: POINTER_INTENT_IN_VARIABLE
+ INTEGER, ALLOCATABLE :: LOCAL_VALUE
+
+ CALL MOVE_ALLOC(POINTER_INTENT_IN_VARIABLE%VALUE, LOCAL_VALUE)
+
+ RETURN
+ END SUBROUTINE POINTER_INTENT_IN_BUG_FAILING
+end module bug
+
+subroutine test1()
+ TYPE MY_TYPE
+ INTEGER, ALLOCATABLE :: VALUE
+ END TYPE
+CONTAINS
+ SUBROUTINE sub (dt)
+ type(MY_TYPE), intent(in) :: dt
+ INTEGER, ALLOCATABLE :: lv
+ call move_alloc(dt%VALUE, lv) ! { dg-error "cannot be INTENT.IN." }
+ END SUBROUTINE
+end subroutine test1
+
+subroutine test2 (x, px)
+ implicit none
+ type t
+ integer, allocatable :: a
+ end type t
+
+ type t2
+ type(t), pointer :: ptr
+ integer, allocatable :: a
+ end type t2
+
+ type(t2), intent(in) :: x
+ type(t2), pointer, intent(in) :: px
+
+ integer, allocatable :: a
+ type(t2), pointer :: ta
+
+ call move_alloc (px, ta) ! { dg-error "cannot be INTENT.IN." }
+ call move_alloc (x%a, a) ! { dg-error "cannot be INTENT.IN." }
+ call move_alloc (x%ptr%a, a) ! OK (3)
+ call move_alloc (px%a, a) ! OK (4)
+ call move_alloc (px%ptr%a, a) ! OK (5)
+end subroutine test2
+
+subroutine test3 (x, px)
+ implicit none
+ type t
+ integer, allocatable :: a
+ end type t
+
+ type t2
+ class(t), pointer :: ptr
+ integer, allocatable :: a
+ end type t2
+
+ type(t2), intent(in) :: x
+ class(t2), pointer, intent(in) :: px
+
+ integer, allocatable :: a
+ class(t2), pointer :: ta
+
+ call move_alloc (px, ta) ! { dg-error "cannot be INTENT.IN." }
+ call move_alloc (x%a, a) ! { dg-error "cannot be INTENT.IN." }
+ call move_alloc (x%ptr%a, a) ! OK (6)
+ call move_alloc (px%a, a) ! OK (7)
+ call move_alloc (px%ptr%a, a) ! OK (8)
+end subroutine test3
+
+subroutine test4()
+ TYPE MY_TYPE
+ INTEGER, ALLOCATABLE :: VALUE
+ END TYPE
+CONTAINS
+ SUBROUTINE sub (dt)
+ CLASS(MY_TYPE), intent(in) :: dt
+ INTEGER, ALLOCATABLE :: lv
+ call move_alloc(dt%VALUE, lv) ! { dg-error "cannot be INTENT.IN." }
+ END SUBROUTINE
+end subroutine test4
+
+! { dg-final { cleanup-modules "bug" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/namelist_72.f b/gcc-4.6/gcc/testsuite/gfortran.dg/namelist_72.f
new file mode 100644
index 000000000..22c088076
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/namelist_72.f
@@ -0,0 +1,33 @@
+! { dg-do run }
+!
+! PR fortran/49791
+!
+! Contributed by Elliott Sales de Andrade
+!
+ program namelist_test
+
+ dimension xpos(5000), ypos(5000)
+ namelist /geometry/ xpos, ypos
+
+ xpos = -huge(xpos)
+ ypos = -huge(ypos)
+
+ open(unit=4,file='geometry.in')
+ write(4,'(a)') '$geometry'
+ write(4,'(a)') ' xpos(1)= 0.00, 0.10, 0.20, 0.30, 0.40,'
+ write(4,'(a)') ' ypos(1)= 0.50, 0.60, 0.70, 0.80, 0.90,'
+ write(4,'(a)') '$end'
+
+ close(4)
+
+ open (unit=4,file='geometry.in',status='old',form='formatted')
+ read (4,geometry)
+ close(4, status='delete')
+
+ !print *, 'xpos', xpos(1:10), 'ypos', ypos(1:10)
+
+ if (any (xpos(1:5) /= [0.00, 0.10, 0.20, 0.30, 0.40]))call abort()
+ if (any (ypos(1:5) /= [0.50, 0.60, 0.70, 0.80, 0.90]))call abort()
+ if (any (xpos(6:) /= -huge(xpos))) call abort ()
+ if (any (ypos(6:) /= -huge(ypos))) call abort ()
+ end
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/namelist_73.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/namelist_73.f90
new file mode 100644
index 000000000..8fc88aa1e
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/namelist_73.f90
@@ -0,0 +1,28 @@
+! { dg-do run }
+!
+! PR fortran/50109
+!
+! Contributed by Jim Hanson
+!
+ program namelist_test
+
+ integer nfp
+ namelist /indata/ nfp
+
+ nfp = 99
+ open(unit=4, status='scratch')
+ write(4,'(a)') '$indata'
+ write(4,'(a)') 'NFP = 5,'
+ write(4,'(a)') "! "
+ write(4,'(a)') "! "
+ write(4,'(a)') "! "
+ write(4,'(a)') '/'
+
+ rewind(4)
+ read (4,nml=indata)
+ close(4)
+
+! write(*,*) nfp
+ if (nfp /= 5) call abort()
+
+ end
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/pointer_check_11.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/pointer_check_11.f90
new file mode 100644
index 000000000..b6aa79ae2
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/pointer_check_11.f90
@@ -0,0 +1,24 @@
+! { dg-do run }
+! { dg-options "-fcheck=all" }
+!
+! { dg-shouldfail "Pointer check" }
+! { dg-output "Fortran runtime error: Pointer actual argument 'y' is not associated" }
+!
+!
+! PR fortran/50718
+!
+! Was failing (ICE) with -fcheck=pointer if the dummy had the value attribute.
+
+type t
+ integer :: p
+end type t
+
+type(t), pointer :: y => null()
+
+call sub(y) ! Invalid: Nonassociated pointer
+
+contains
+ subroutine sub (x)
+ type(t), value :: x
+ end subroutine
+end
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/pointer_check_12.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/pointer_check_12.f90
new file mode 100644
index 000000000..cfef70e59
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/pointer_check_12.f90
@@ -0,0 +1,22 @@
+! { dg-do run }
+! { dg-options "-fcheck=all" }
+!
+! { dg-shouldfail "Pointer check" }
+! { dg-output "Fortran runtime error: Pointer actual argument 'p' is not associated" }
+!
+! PR fortran/50718
+!
+! Was failing with -fcheck=pointer: Segfault at run time
+
+integer, pointer :: p => null()
+
+call sub2(%val(p)) ! Invalid: Nonassociated pointer
+end
+
+! Not quite correct dummy, but if one uses VALUE, gfortran
+! complains about a missing interface - which we cannot use
+! if we want to use %VAL().
+
+subroutine sub2(p)
+ integer :: p
+end subroutine sub2
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/pointer_comp_init_1.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/pointer_comp_init_1.f90
new file mode 100644
index 000000000..44f360e98
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/pointer_comp_init_1.f90
@@ -0,0 +1,30 @@
+! { dg-do compile }
+!
+! PR fortran/50050
+! ICE whilst trying to access NULL shape.
+
+! Reduced from the FoX library http://www1.gly.bris.ac.uk/~walker/FoX/
+! Contributed by Andrew Benson <abenson@its.caltech.edu>
+
+module m_common_attrs
+ implicit none
+
+ type dict_item
+ end type dict_item
+
+ type dict_item_ptr
+ type(dict_item), pointer :: d => null()
+ end type dict_item_ptr
+
+contains
+
+ subroutine add_item_to_dict()
+ type(dict_item_ptr), pointer :: tempList(:)
+ integer :: n
+
+ allocate(tempList(0:n+1))
+ end subroutine add_item_to_dict
+
+end module m_common_attrs
+
+! { dg-final { cleanup-modules "m_common_attrs" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/pointer_intent_5.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/pointer_intent_5.f90
new file mode 100644
index 000000000..c4e3c7a3c
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/pointer_intent_5.f90
@@ -0,0 +1,24 @@
+! { dg-do run }
+!
+! PR 50570: [4.6/4.7 Regression] Incorrect error for assignment to intent(in) pointer
+!
+! Contributed by Bill Long <longb@cray.com>
+
+program bots_sparselu_pointer_intent_in
+
+ implicit none
+ integer, pointer :: array(:)
+
+ allocate(array(4))
+ array = 0
+ call sub(array)
+ if (sum(array)/=1) call abort
+
+contains
+
+ subroutine sub(dummy)
+ integer, pointer, intent(in) :: dummy(:)
+ dummy(1) = 1
+ end subroutine sub
+
+end program
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/pr49675.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/pr49675.f90
new file mode 100644
index 000000000..06fd1b665
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/pr49675.f90
@@ -0,0 +1,6 @@
+! PR middle-end/49675
+! { dg-do compile }
+! { dg-options "-finstrument-functions" }
+end
+! { dg-final { scan-assembler "__cyg_profile_func_enter" } }
+! { dg-final { scan-assembler "__cyg_profile_func_exit" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/pr50875.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/pr50875.f90
new file mode 100644
index 000000000..6b4476c14
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/pr50875.f90
@@ -0,0 +1,39 @@
+! { dg-do compile { target { i?86-*-* x86_64-*-* } } }
+! { dg-options "-O3 -mavx" }
+!
+! PR fortran/50875.f90
+
+module test
+
+ implicit none
+
+ integer, parameter :: dp=kind(1.d0)
+
+ integer :: P = 2
+
+ real(kind=dp), allocatable :: real_array_A(:),real_array_B(:,:)
+ complex(kind=dp), allocatable :: cmplx_array_A(:)
+
+contains
+
+ subroutine routine_A
+
+ integer :: i
+
+ allocate(cmplx_array_A(P),real_array_B(P,P),real_array_A(P))
+
+ real_array_A = 1
+ real_array_B = 1
+
+ do i = 1, p
+ cmplx_array_A = cmplx(real_array_B(:,i),0.0_dp,dp)
+ cmplx_array_A = cmplx_array_A * exp(cmplx(0.0_dp,real_array_A+1))
+ end do
+
+ deallocate(cmplx_array_A,real_array_B,real_array_A)
+
+ end subroutine routine_A
+
+end module test
+
+! { dg-final { cleanup-modules "test" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/proc_decl_27.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/proc_decl_27.f90
new file mode 100644
index 000000000..30ff4def3
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/proc_decl_27.f90
@@ -0,0 +1,25 @@
+! { dg-do compile }
+!
+! PR 50659: [4.5/4.6/4.7 Regression] [F03] ICE on invalid with procedure interface
+!
+! Contributed by Andrew Benson <abenson@caltech.edu>
+
+module m1
+ integer :: arrSize
+end module
+
+module m2
+contains
+ function Proc (arg)
+ use m1
+ double precision, dimension(arrSize) :: proc
+ double precision :: arg
+ end function
+end
+
+ use m2
+ implicit none
+ procedure(Proc) :: Proc_Get
+end
+
+! { dg-final { cleanup-modules "m1 m2" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90
new file mode 100644
index 000000000..4f7d28895
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/realloc_on_assign_8.f90
@@ -0,0 +1,17 @@
+! { dg-do compile }
+!
+! PR fortran/51448
+!
+! Contribued by François Willot
+!
+ PROGRAM MAIN
+ IMPLICIT NONE
+ TYPE mytype
+ REAL b(2)
+ END TYPE mytype
+ TYPE(mytype) a
+ DOUBLE PRECISION, ALLOCATABLE :: x(:)
+ ALLOCATE(x(2))
+ a%b=0.0E0
+ x=a%b
+ END
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/result_in_spec_4.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/result_in_spec_4.f90
new file mode 100644
index 000000000..3f0e9a379
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/result_in_spec_4.f90
@@ -0,0 +1,27 @@
+! { dg-do compile }
+!
+! PR fortran/49648
+! ICE for calls to a use-associated function returning an array whose spec
+! depends on a function call.
+
+! Contributed by Tobias Burnus <burnus@net-b.de>
+
+module m2
+ COMPLEX, SAVE, ALLOCATABLE :: P(:)
+contains
+ FUNCTION getPhaseMatrix() RESULT(PM)
+ COMPLEX:: PM(SIZE(P),3)
+ PM=0.0
+ END FUNCTION
+end module m2
+
+module m
+ use m2
+contains
+ SUBROUTINE gf_generateEmbPot()
+ COMPLEX :: sigma2(3,3)
+ sigma2 = MATMUL(getPhaseMatrix(), sigma2)
+ END SUBROUTINE
+end module m
+
+! { dg-final { cleanup-modules "m m2" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/string_5.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/string_5.f90
new file mode 100644
index 000000000..87ec70942
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/string_5.f90
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! PR fortran/48876 - this used to segfault.
+! Test case contributed by mhp77 (a) gmx.at.
+program test
+ character :: string = "string"( : -1 )
+end program test
+
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/typebound_proc_24.f03 b/gcc-4.6/gcc/testsuite/gfortran.dg/typebound_proc_24.f03
new file mode 100644
index 000000000..f200e0efb
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/typebound_proc_24.f03
@@ -0,0 +1,32 @@
+! { dg-do compile }
+!
+! PR 49112: [4.6/4.7 Regression] [OOP] Missing type-bound procedure, "duplicate save" warnings and internal compiler error
+!
+! Contributed by John <jwmwalrus@gmail.com>
+
+module datetime_mod
+
+ implicit none
+
+ type :: DateTime
+ integer :: year, month, day
+ contains
+ procedure :: getFormattedString
+ end type
+
+ type(DateTime) :: ISO_REFERENCE_DATE = DateTime(1875, 5, 20)
+
+contains
+
+ character function getFormattedString(dt)
+ class(DateTime) :: dt
+ end function
+
+ subroutine test
+ type(DateTime) :: dt
+ print *,dt%getFormattedString()
+ end subroutine
+
+end module
+
+! { dg-final { cleanup-modules "datetime_mod" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/vect/pr50178.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/vect/pr50178.f90
new file mode 100644
index 000000000..e24ce5b15
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/vect/pr50178.f90
@@ -0,0 +1,29 @@
+! { dg-do compile }
+
+module yemdyn
+ implicit none
+ integer, parameter :: jpim = selected_int_kind(9)
+ integer, parameter :: jprb = selected_real_kind(13,300)
+ real(kind=jprb) :: elx
+ real(kind=jprb), allocatable :: xkcoef(:)
+ integer(kind=jpim),allocatable :: ncpln(:), npne(:)
+end module yemdyn
+
+subroutine suedyn
+
+ use yemdyn
+
+ implicit none
+
+ integer(kind=jpim) :: jm, jn
+ real(kind=jprb) :: zjm, zjn, zxxx
+
+ jn=0
+ do jm=0,ncpln(jn)
+ zjm=real(jm,jprb) / elx
+ xkcoef(npne(jn)+jm) = - zxxx*(zjm**2)**0.5_jprb
+ end do
+
+end subroutine suedyn
+
+! { dg-final { cleanup-tree-dump "vect" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/vect/pr50412.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/vect/pr50412.f90
new file mode 100644
index 000000000..4f95741f7
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/vect/pr50412.f90
@@ -0,0 +1,12 @@
+! { dg-do compile }
+
+ DOUBLE PRECISION AK,AI,AAE
+ COMMON/com/AK(36),AI(4,4),AAE(8,4),ii,jj
+ DO 20 II=1,4
+ DO 21 JJ=1,4
+ AK(n)=AK(n)-AAE(I,II)*AI(II,JJ)
+ 21 CONTINUE
+ 20 CONTINUE
+ END
+
+! { dg-final { cleanup-tree-dump "vect" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/warn_function_without_result_2.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/warn_function_without_result_2.f90
new file mode 100644
index 000000000..25fd0b73a
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/warn_function_without_result_2.f90
@@ -0,0 +1,19 @@
+! { dg-do compile }
+! { dg-options "-Wall" }
+!
+! PR fortran/50923
+!
+module m
+contains
+ integer pure function f() ! { dg-warning "Return value of function 'f' at .1. not set" }
+ end function f
+ integer pure function g() result(h) ! { dg-warning "Return value 'h' of function 'g' declared at .1. not set" }
+ end function g
+ integer pure function i()
+ i = 7
+ end function i
+ integer pure function j() result(k)
+ k = 8
+ end function j
+end module m
+! { dg-final { cleanup-modules "mod" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/where_3.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/where_3.f90
new file mode 100644
index 000000000..1507ad982
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/where_3.f90
@@ -0,0 +1,15 @@
+! { dg-do compile }
+!
+! PR fortran/50129
+! ICE after reporting an error on a masked ELSEWHERE statement following an
+! unmasked one.
+!
+! Contributed by Joost Van de Vondele <Joost.VandeVondele@pci.uzh.ch>
+
+INTEGER :: I(3)
+WHERE (I>2)
+ELSEWHERE
+ELSEWHERE (I<1) ! { dg-error "follows previous unmasked ELSEWHERE" }
+END WHERE
+END
+
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/whole_file_35.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/whole_file_35.f90
new file mode 100644
index 000000000..46a886551
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/whole_file_35.f90
@@ -0,0 +1,28 @@
+! { dg-do compile }
+!
+! PR fortran/50408
+!
+! Contributed by Vittorio Zecca
+!
+ module m
+ type int
+ integer :: val
+ end type int
+ interface ichar
+ module procedure uch
+ end interface
+ contains
+ function uch (c)
+ character (len=1), intent (in) :: c
+ type (int) :: uch
+ intrinsic ichar
+ uch%val = 127 - ichar (c)
+ end function uch
+ end module m
+
+ program p
+ use m
+ print *,ichar('~') ! must print "1"
+ end program p
+
+! { dg-final { cleanup-modules "m" } }
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/widechar_compare_1.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/widechar_compare_1.f90
new file mode 100644
index 000000000..44101104c
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/widechar_compare_1.f90
@@ -0,0 +1,10 @@
+! { dg-do run }
+! PR 50192 - on little-endian systems, this used to fail.
+program main
+ character(kind=4,len=2) :: c1, c2
+ c1 = 4_' '
+ c2 = 4_' '
+ c1(1:1) = transfer(257, mold=c1(1:1))
+ c2(1:1) = transfer(64, mold=c2(1:1))
+ if (c1 < c2) call abort
+end program main
diff --git a/gcc-4.6/gcc/testsuite/gfortran.dg/zero_stride_1.f90 b/gcc-4.6/gcc/testsuite/gfortran.dg/zero_stride_1.f90
new file mode 100644
index 000000000..c5f6cc724
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.dg/zero_stride_1.f90
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! PR 50130 - this caused an ICE. Test case supplied by Joost
+! VandeVondele.
+integer, parameter :: a(10)=0
+integer, parameter :: b(10)=a(1:10:0) ! { dg-error "Illegal stride of zero" }
+END
+
diff --git a/gcc-4.6/gcc/testsuite/gfortran.fortran-torture/compile/pr50260.f90 b/gcc-4.6/gcc/testsuite/gfortran.fortran-torture/compile/pr50260.f90
new file mode 100644
index 000000000..10f26184b
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gfortran.fortran-torture/compile/pr50260.f90
@@ -0,0 +1,48 @@
+MODULE cp_parser_methods
+ INTEGER, PARAMETER :: default_string_length=80
+ INTEGER, PARAMETER :: default_path_length=250
+ TYPE ilist_type
+ LOGICAL :: in_use
+ END TYPE ilist_type
+ TYPE cp_parser_type
+ CHARACTER(LEN=default_path_length) :: ifn
+ INTEGER :: icol,icol1,icol2
+ TYPE(ilist_type), POINTER :: ilist
+ END TYPE cp_parser_type
+ TYPE cp_error_type
+ END TYPE cp_error_type
+CONTAINS
+ FUNCTION cts(i) RESULT(res)
+ CHARACTER(len=6) :: res
+ END FUNCTION cts
+ FUNCTION parser_location(parser,error) RESULT(res)
+ TYPE(cp_parser_type), POINTER :: parser
+ TYPE(cp_error_type), INTENT(inout) :: error
+ CHARACTER(len=default_path_length+default_string_length) :: res
+ LOGICAL :: failure
+ IF (.NOT. failure) THEN
+ res="file:'"//TRIM(parser%ifn)//"' line:"//cts(parser%icol)
+ END IF
+ END FUNCTION parser_location
+ SUBROUTINE parser_get_integer(parser,at_end, error)
+ TYPE(cp_parser_type), POINTER :: parser
+ TYPE(cp_error_type), INTENT(inout) :: error
+ LOGICAL :: failure, my_at_end
+ IF (.NOT.failure) THEN
+ IF (.NOT.parser%ilist%in_use) THEN
+ CALL cp_assert("A"// TRIM(parser_location(parser,error)))
+ END IF
+ END IF
+ END SUBROUTINE parser_get_integer
+ SUBROUTINE parser_get_string(parser,at_end,error)
+ TYPE(cp_parser_type), POINTER :: parser
+ LOGICAL, INTENT(out), OPTIONAL :: at_end
+ TYPE(cp_error_type), INTENT(inout) :: error
+ LOGICAL :: failure, my_at_end
+ IF (.NOT.failure) THEN
+ IF (PRESENT(at_end)) THEN
+ CALL cp_assert("s"//TRIM(parser_location(parser,error)))
+ END IF
+ END IF
+ END SUBROUTINE parser_get_string
+END MODULE cp_parser_methods
diff --git a/gcc-4.6/gcc/testsuite/gnat.dg/atomic5.adb b/gcc-4.6/gcc/testsuite/gnat.dg/atomic5.adb
new file mode 100644
index 000000000..efbed4e34
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gnat.dg/atomic5.adb
@@ -0,0 +1,20 @@
+package body Atomic5 is
+
+ function Create return R is
+ begin
+ return (A => 0, B => 1, C => 2, D => 4);
+ end;
+
+ procedure Proc1 is
+ I : Unsigned_32;
+ begin
+ I := Conv(Create);
+ end;
+
+ procedure Proc2 is
+ I : Unsigned_32;
+ begin
+ I := Conv(R'(A => 0, B => 1, C => 2, D => 4));
+ end;
+
+end Atomic5;
diff --git a/gcc-4.6/gcc/testsuite/gnat.dg/atomic5.ads b/gcc-4.6/gcc/testsuite/gnat.dg/atomic5.ads
new file mode 100644
index 000000000..3f653fa11
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gnat.dg/atomic5.ads
@@ -0,0 +1,25 @@
+-- { dg-do compile }
+
+with Unchecked_Conversion;
+
+package Atomic5 is
+
+ type Byte is mod 2 ** 8;
+ for Byte'Size use 8;
+
+ type Unsigned_32 is mod 2 ** 32;
+ for Unsigned_32'Size use 32;
+
+ type R is record
+ A,B,C,D : Byte;
+ end record;
+ for R'Alignment use 4;
+ pragma Atomic (R);
+
+ function Conv is new Unchecked_Conversion (R, Unsigned_32);
+
+ procedure Proc1;
+
+ procedure Proc2;
+
+end Atomic5;
diff --git a/gcc-4.6/gcc/testsuite/gnat.dg/frame_overflow.adb b/gcc-4.6/gcc/testsuite/gnat.dg/frame_overflow.adb
index e1ff4d365..1e7405fa5 100644
--- a/gcc-4.6/gcc/testsuite/gnat.dg/frame_overflow.adb
+++ b/gcc-4.6/gcc/testsuite/gnat.dg/frame_overflow.adb
@@ -1,27 +1,20 @@
-- { dg-do compile }
-with System;
+package body Frame_Overflow is
-procedure frame_overflow is
-
- type Bitpos_Range_T is range 1..2**(System.Word_Size-1)-1;
- type Bitmap_Array_T is array (Bitpos_Range_T) of Boolean;
-
- type Bitmap_T is record
- Bits : Bitmap_Array_T := (others => False);
- end record;
-
- function
+ function -- { dg-error "too large" }
Set_In (Bitmap : Bitmap_T; Bitpos : Bitpos_Range_T) return Bitmap_T
is
- Result: Bitmap_T := Bitmap; -- { dg-error "Storage_Error" }
+ Result: Bitmap_T := Bitmap;
begin
Result.Bits (Bitpos) := True;
return Result;
end;
- function Negate (Bitmap : Bitmap_T) return Bitmap_T is
- Result: Bitmap_T; -- { dg-error "Storage_Error" }
+ function -- { dg-error "too large" }
+ Negate (Bitmap : Bitmap_T) return Bitmap_T
+ is
+ Result: Bitmap_T;
begin
for E in Bitpos_Range_T loop
Result.Bits (E) := not Bitmap.Bits (E);
@@ -29,6 +22,4 @@ procedure frame_overflow is
return Result;
end;
-begin
- null;
-end;
+end Frame_Overflow;
diff --git a/gcc-4.6/gcc/testsuite/gnat.dg/frame_overflow.ads b/gcc-4.6/gcc/testsuite/gnat.dg/frame_overflow.ads
new file mode 100644
index 000000000..898e37a67
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/gnat.dg/frame_overflow.ads
@@ -0,0 +1,17 @@
+with System;
+
+package Frame_Overflow is
+
+ type Bitpos_Range_T is range 1..2**(System.Word_Size-1)-1;
+ type Bitmap_Array_T is array (Bitpos_Range_T) of Boolean;
+
+ type Bitmap_T is record
+ Bits : Bitmap_Array_T := (others => False);
+ end record;
+
+ function
+ Set_In (Bitmap : Bitmap_T; Bitpos : Bitpos_Range_T) return Bitmap_T;
+
+ function Negate (Bitmap : Bitmap_T) return Bitmap_T;
+
+end Frame_Overflow;
diff --git a/gcc-4.6/gcc/testsuite/gnat.dg/specs/addr1.ads b/gcc-4.6/gcc/testsuite/gnat.dg/specs/addr1.ads
index 83d432cff..ed048f68e 100644
--- a/gcc-4.6/gcc/testsuite/gnat.dg/specs/addr1.ads
+++ b/gcc-4.6/gcc/testsuite/gnat.dg/specs/addr1.ads
@@ -15,7 +15,7 @@ package Addr1 is
end record;
for Rec2'Size use 64;
- A: Arr (1 .. 12);
+ A: Arr (1 .. 4);
Obj1: Rec1;
for Obj1'Address use A'Address; -- { dg-bogus "alignment" }
diff --git a/gcc-4.6/gcc/testsuite/lib/gcc-dg.exp b/gcc-4.6/gcc/testsuite/lib/gcc-dg.exp
index 4cdfa3e02..450f27804 100644
--- a/gcc-4.6/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc-4.6/gcc/testsuite/lib/gcc-dg.exp
@@ -565,6 +565,24 @@ proc scan-module { args } {
}
}
+# Scan Fortran modules for absence of a given regexp.
+#
+# Argument 0 is the module name
+# Argument 1 is the regexp to match
+proc scan-module-absence { args } {
+ set modfilename [string tolower [lindex $args 0]].mod
+ set fd [open $modfilename r]
+ set text [read $fd]
+ close $fd
+
+ upvar 2 name testcase
+ if [regexp -- [lindex $args 1] $text] {
+ fail "$testcase scan-module [lindex $args 1]"
+ } else {
+ pass "$testcase scan-module [lindex $args 1]"
+ }
+}
+
# Verify that the compiler output file exists, invoked via dg-final.
proc output-exists { args } {
# Process an optional target or xfail list.
diff --git a/gcc-4.6/gcc/testsuite/lib/prune.exp b/gcc-4.6/gcc/testsuite/lib/prune.exp
index 4e08bf3d1..093d4f708 100644
--- a/gcc-4.6/gcc/testsuite/lib/prune.exp
+++ b/gcc-4.6/gcc/testsuite/lib/prune.exp
@@ -30,6 +30,9 @@ proc prune_gcc_output { text } {
regsub -all "(^|\n)Please submit.*instructions\[^\n\]*" $text "" text
regsub -all "(^|\n)\[0-9\]\[0-9\]* errors\." $text "" text
+ # Ignore informational notes.
+ regsub -all "(^|\n)\[^\n\]*: note: \[^\n\]*" $text "" text
+
# Ignore harmless -fpic warnings.
regsub -all "(^|\n)\[^\n\]*: warning: -f(pic|PIC) ignored for target\[^\n\]*" $text "" text
regsub -all "(^|\n)\[^\n\]*: warning: -f(pic|PIC)( and -fpic are| is)? not supported\[^\n\]*" $text "" text
diff --git a/gcc-4.6/gcc/testsuite/lib/target-supports-dg.exp b/gcc-4.6/gcc/testsuite/lib/target-supports-dg.exp
index 99cffe03c..c9aa0cf12 100644
--- a/gcc-4.6/gcc/testsuite/lib/target-supports-dg.exp
+++ b/gcc-4.6/gcc/testsuite/lib/target-supports-dg.exp
@@ -100,6 +100,16 @@ proc dg-require-ifunc { args } {
}
}
+# If this target does not support the section exclude "e" attribute,
+# skip this test.
+
+proc dg-require-section-exclude { args } {
+ if { ![ check_section_exclude_available ] } {
+ upvar dg-do-what dg-do-what
+ set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
+ }
+}
+
# If this target's linker does not support the --gc-sections flag,
# skip this test.
diff --git a/gcc-4.6/gcc/testsuite/lib/target-supports.exp b/gcc-4.6/gcc/testsuite/lib/target-supports.exp
index a90786178..8bd72ef84 100644
--- a/gcc-4.6/gcc/testsuite/lib/target-supports.exp
+++ b/gcc-4.6/gcc/testsuite/lib/target-supports.exp
@@ -370,45 +370,28 @@ proc check_alias_available { } {
return $alias_available_saved
}
-###############################
-# proc check_ifunc_available { }
-###############################
-
-# Determine if the target toolchain supports the ifunc attribute.
-
-# Returns 1 if the target supports ifunc. Returns 0 if the target
-# does not support ifunc.
+# Returns 1 if the target toolchain supports ifunc, 0 otherwise.
proc check_ifunc_available { } {
- global ifunc_available_saved
- global tool
-
- if [info exists ifunc_available_saved] {
- verbose "check_ifunc_available returning saved $ifunc_available_saved" 2
- } else {
- set src ifunc[pid].c
- set obj ifunc[pid].o
- verbose "check_ifunc_available compiling testfile $src" 2
- set f [open $src "w"]
- puts $f "#endif"
- puts $f "#ifdef __cplusplus\nextern \"C\"\n#endif"
- puts $f "void g() {}"
- puts $f "void f() __attribute__((ifunc(\"g\")));"
- close $f
- set lines [${tool}_target_compile $src $obj object ""]
- file delete $src
- remote_file build delete $obj
+ return [check_no_compiler_messages ifunc_available object {
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+ void g() {}
+ void f() __attribute__((ifunc("g")));
+ }]
+}
- if [string match "" $lines] then {
- set ifunc_available_saved 1
- } else {
- set ifunc_available_saved 0
- }
+# Returns true if tool chain supports "e" section attribute.
- verbose "check_ifunc_available returning $ifunc_available_saved" 2
- }
-
- return $ifunc_available_saved
+proc check_section_exclude_available { } {
+ return [check_runtime_nocache section_exclude_available {
+ asm(".section \".gnu.callgraph.text.main\", \"e\"");
+ int main()
+ {
+ return 0;
+ }
+ }]
}
# Returns true if --gc-sections is supported on the target.
@@ -465,7 +448,7 @@ proc check_effective_target_trampolines { } {
}
if { [istarget avr-*-*]
|| [istarget hppa2.0w-hp-hpux11.23]
- || [istarget hppa64-hp-hpux11.23] } {
+ || [istarget hppa64-hp-hpux11.23] } {
return 0;
}
return 1
@@ -1054,8 +1037,8 @@ proc check_sse_os_support_available { } {
check_runtime_nocache sse_os_support_available {
int main ()
{
- __asm__ volatile ("movss %xmm2,%xmm1");
- return 0;
+ asm volatile ("movss %xmm2,%xmm1");
+ return 0;
}
} "-msse"
} else {
@@ -1064,6 +1047,29 @@ proc check_sse_os_support_available { } {
}]
}
+# Return 1 if the target OS supports running AVX executables, 0
+# otherwise. Cache the result.
+
+proc check_avx_os_support_available { } {
+ return [check_cached_effective_target avx_os_support_available {
+ # If this is not the right target then we can skip the test.
+ if { !([istarget x86_64-*-*] || [istarget i?86-*-*]) } {
+ expr 0
+ } else {
+ # Check that OS has AVX and SSE saving enabled.
+ check_runtime_nocache avx_os_support_available {
+ int main ()
+ {
+ unsigned int eax, edx;
+
+ asm ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0));
+ return (eax & 6) != 6;
+ }
+ } ""
+ }
+ }]
+}
+
# Return 1 if the target supports executing SSE instructions, 0
# otherwise. Cache the result.
@@ -1160,7 +1166,8 @@ proc check_effective_target_sse2_runtime { } {
proc check_effective_target_avx_runtime { } {
if { [check_effective_target_avx]
- && [check_avx_hw_available] } {
+ && [check_avx_hw_available]
+ && [check_avx_os_support_available] } {
return 1
}
return 0
diff --git a/gcc-4.6/gcc/testsuite/obj-c++.dg/property/cxx-property-1.mm b/gcc-4.6/gcc/testsuite/obj-c++.dg/property/cxx-property-1.mm
new file mode 100644
index 000000000..3c6f93e2a
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/obj-c++.dg/property/cxx-property-1.mm
@@ -0,0 +1,10 @@
+/* Testcase from PR obj-c++/48275. */
+/* { dg-do compile } */
+
+@interface Test
+{
+ int ns;
+}
+@property (getter=namespace) int ns;
+
+@end
diff --git a/gcc-4.6/gcc/testsuite/obj-c++.dg/property/cxx-property-2.mm b/gcc-4.6/gcc/testsuite/obj-c++.dg/property/cxx-property-2.mm
new file mode 100644
index 000000000..4e085b398
--- /dev/null
+++ b/gcc-4.6/gcc/testsuite/obj-c++.dg/property/cxx-property-2.mm
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+
+/* All these C++ keywords are acceptable in ObjC method names, hence
+ should be accepted for property getters and setters. */
+
+@interface Test
+{
+ Class isa;
+}
+@property (getter=namespace) int p0;
+@property (setter=namespace:) int p1;
+@property (getter=and) int p2;
+@property (setter=and:) int p3;
+@property (getter=class) int p4;
+@property (setter=class:) int p5;
+@property (getter=new) int p6;
+@property (setter=new:) int p7;
+@property (getter=delete) int p8;
+@property (setter=delete:) int p9;
+@property (getter=delete) int p10;
+@property (setter=delete:) int p11;
+@end
diff --git a/gcc-4.6/gcc/tree-inline.c b/gcc-4.6/gcc/tree-inline.c
index 94cb9fcfe..45c32bf17 100644
--- a/gcc-4.6/gcc/tree-inline.c
+++ b/gcc-4.6/gcc/tree-inline.c
@@ -848,14 +848,16 @@ remap_gimple_op_r (tree *tp, int *walk_subtrees, void *data)
build_int_cst
(TREE_TYPE (TREE_OPERAND (*tp, 1)), 0));
*tp = tem;
+ TREE_THIS_VOLATILE (*tem_basep) = TREE_THIS_VOLATILE (old);
+ TREE_THIS_NOTRAP (*tem_basep) = TREE_THIS_NOTRAP (old);
}
else
{
*tp = fold_build2 (MEM_REF, type,
ptr, TREE_OPERAND (*tp, 1));
- TREE_THIS_VOLATILE (*tp) = TREE_THIS_VOLATILE (old);
TREE_THIS_NOTRAP (*tp) = TREE_THIS_NOTRAP (old);
}
+ TREE_THIS_VOLATILE (*tp) = TREE_THIS_VOLATILE (old);
TREE_NO_WARNING (*tp) = TREE_NO_WARNING (old);
*walk_subtrees = 0;
return NULL;
diff --git a/gcc-4.6/gcc/tree-loop-distribution.c b/gcc-4.6/gcc/tree-loop-distribution.c
index 1d6944eef..6b9b98d6b 100644
--- a/gcc-4.6/gcc/tree-loop-distribution.c
+++ b/gcc-4.6/gcc/tree-loop-distribution.c
@@ -63,6 +63,51 @@ static bitmap remaining_stmts;
predecessor a node that writes to memory. */
static bitmap upstream_mem_writes;
+/* Returns true when DEF is an SSA_NAME defined in LOOP and used after
+ the LOOP. */
+
+static bool
+ssa_name_has_uses_outside_loop_p (tree def, loop_p loop)
+{
+ imm_use_iterator imm_iter;
+ use_operand_p use_p;
+
+ FOR_EACH_IMM_USE_FAST (use_p, imm_iter, def)
+ if (loop != loop_containing_stmt (USE_STMT (use_p)))
+ return true;
+
+ return false;
+}
+
+/* Returns true when STMT defines a scalar variable used after the
+ loop. */
+
+static bool
+stmt_has_scalar_dependences_outside_loop (gimple stmt)
+{
+ tree name;
+
+ switch (gimple_code (stmt))
+ {
+ case GIMPLE_CALL:
+ case GIMPLE_ASSIGN:
+ name = gimple_get_lhs (stmt);
+ break;
+
+ case GIMPLE_PHI:
+ name = gimple_phi_result (stmt);
+ break;
+
+ default:
+ return false;
+ }
+
+ return (name
+ && TREE_CODE (name) == SSA_NAME
+ && ssa_name_has_uses_outside_loop_p (name,
+ loop_containing_stmt (stmt)));
+}
+
/* Update the PHI nodes of NEW_LOOP. NEW_LOOP is a duplicate of
ORIG_LOOP. */
@@ -332,10 +377,18 @@ generate_builtin (struct loop *loop, bitmap partition, bool copy_p)
{
gimple stmt = gsi_stmt (bsi);
- if (gimple_code (stmt) != GIMPLE_LABEL
- && !is_gimple_debug (stmt)
- && bitmap_bit_p (partition, x++)
- && is_gimple_assign (stmt)
+ if (gimple_code (stmt) == GIMPLE_LABEL
+ || is_gimple_debug (stmt))
+ continue;
+
+ if (!bitmap_bit_p (partition, x++))
+ continue;
+
+ /* If the stmt has uses outside of the loop fail. */
+ if (stmt_has_scalar_dependences_outside_loop (stmt))
+ goto end;
+
+ if (is_gimple_assign (stmt)
&& !is_gimple_reg (gimple_assign_lhs (stmt)))
{
/* Don't generate the builtins when there are more than
@@ -826,48 +879,6 @@ fuse_partitions_with_similar_memory_accesses (struct graph *rdg,
}
}
-/* Returns true when DEF is an SSA_NAME defined in LOOP and used after
- the LOOP. */
-
-static bool
-ssa_name_has_uses_outside_loop_p (tree def, loop_p loop)
-{
- imm_use_iterator imm_iter;
- use_operand_p use_p;
-
- FOR_EACH_IMM_USE_FAST (use_p, imm_iter, def)
- if (loop != loop_containing_stmt (USE_STMT (use_p)))
- return true;
-
- return false;
-}
-
-/* Returns true when STMT defines a scalar variable used after the
- loop. */
-
-static bool
-stmt_has_scalar_dependences_outside_loop (gimple stmt)
-{
- tree name;
-
- switch (gimple_code (stmt))
- {
- case GIMPLE_ASSIGN:
- name = gimple_assign_lhs (stmt);
- break;
-
- case GIMPLE_PHI:
- name = gimple_phi_result (stmt);
- break;
-
- default:
- return false;
- }
-
- return TREE_CODE (name) == SSA_NAME
- && ssa_name_has_uses_outside_loop_p (name, loop_containing_stmt (stmt));
-}
-
/* Returns true when STMT will be code generated in a partition of RDG
different than PART and that will not be code generated as a
builtin. */
diff --git a/gcc-4.6/gcc/tree-object-size.c b/gcc-4.6/gcc/tree-object-size.c
index 41118d25b..118f6d56a 100644
--- a/gcc-4.6/gcc/tree-object-size.c
+++ b/gcc-4.6/gcc/tree-object-size.c
@@ -166,24 +166,19 @@ addr_object_size (struct object_size_info *osi, const_tree ptr,
gcc_assert (TREE_CODE (ptr) == ADDR_EXPR);
pt_var = TREE_OPERAND (ptr, 0);
- if (REFERENCE_CLASS_P (pt_var))
- pt_var = get_base_address (pt_var);
+ while (handled_component_p (pt_var))
+ pt_var = TREE_OPERAND (pt_var, 0);
if (pt_var
- && TREE_CODE (pt_var) == MEM_REF
- && TREE_CODE (TREE_OPERAND (pt_var, 0)) == SSA_NAME
- && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (pt_var, 0))))
+ && TREE_CODE (pt_var) == MEM_REF)
{
unsigned HOST_WIDE_INT sz;
- if (!osi || (object_size_type & 1) != 0)
+ if (!osi || (object_size_type & 1) != 0
+ || TREE_CODE (TREE_OPERAND (pt_var, 0)) != SSA_NAME)
{
sz = compute_builtin_object_size (TREE_OPERAND (pt_var, 0),
object_size_type & ~1);
- if (host_integerp (TREE_OPERAND (pt_var, 1), 0))
- sz -= TREE_INT_CST_LOW (TREE_OPERAND (pt_var, 1));
- else
- sz = offset_limit;
}
else
{
@@ -195,10 +190,17 @@ addr_object_size (struct object_size_info *osi, const_tree ptr,
sz = object_sizes[object_size_type][SSA_NAME_VERSION (var)];
else
sz = unknown[object_size_type];
- if (host_integerp (TREE_OPERAND (pt_var, 1), 0))
- sz -= TREE_INT_CST_LOW (TREE_OPERAND (pt_var, 1));
+ }
+ if (sz != unknown[object_size_type])
+ {
+ double_int dsz = double_int_sub (uhwi_to_double_int (sz),
+ mem_ref_offset (pt_var));
+ if (double_int_negative_p (dsz))
+ sz = 0;
+ else if (double_int_fits_in_uhwi_p (dsz))
+ sz = double_int_to_uhwi (dsz);
else
- sz = offset_limit;
+ sz = unknown[object_size_type];
}
if (sz != unknown[object_size_type] && sz < offset_limit)
@@ -211,7 +213,7 @@ addr_object_size (struct object_size_info *osi, const_tree ptr,
tree_low_cst (DECL_SIZE_UNIT (pt_var), 1) < offset_limit)
pt_var_size = DECL_SIZE_UNIT (pt_var);
else if (pt_var
- && (SSA_VAR_P (pt_var) || TREE_CODE (pt_var) == STRING_CST)
+ && TREE_CODE (pt_var) == STRING_CST
&& TYPE_SIZE_UNIT (TREE_TYPE (pt_var))
&& host_integerp (TYPE_SIZE_UNIT (TREE_TYPE (pt_var)), 1)
&& (unsigned HOST_WIDE_INT)
diff --git a/gcc-4.6/gcc/tree-optimize.c b/gcc-4.6/gcc/tree-optimize.c
index 3a40ab82d..96cc3bed8 100644
--- a/gcc-4.6/gcc/tree-optimize.c
+++ b/gcc-4.6/gcc/tree-optimize.c
@@ -47,12 +47,19 @@ along with GCC; see the file COPYING3. If not see
#include "except.h"
#include "plugin.h"
#include "regset.h" /* FIXME: For reg_obstack. */
+#include "params.h"
+
+/* Decides if the cgraph callee edges are being cleaned up for the
+ last time. */
+bool cgraph_callee_edges_final_cleanup = false;
/* Gate: execute, or not, all of the non-trivial optimizations. */
static bool
gate_all_optimizations (void)
{
+ /* The cgraph callee edges can be cleaned up for the last time. */
+ cgraph_callee_edges_final_cleanup = true;
return (optimize >= 1
/* Don't bother doing anything if the program has errors.
We have to pass down the queue if we already went into SSA */
@@ -149,6 +156,48 @@ struct gimple_opt_pass pass_all_early_optimizations =
}
};
+int cgraph_codesize_estimate = -1;
+
+/* Estimate the code size from the dynamic IPA call graph. */
+static void
+compute_codesize_estimate(void)
+{
+ struct cgraph_node *node;
+ basic_block bb;
+ gimple_stmt_iterator bsi;
+ struct function *my_function;
+
+ if (!flag_dyn_ipa)
+ return;
+
+ if (cgraph_codesize_estimate >= 0)
+ return;
+ cgraph_codesize_estimate = 0;
+
+ for (node = cgraph_nodes; node; node = node->next)
+ {
+ if (node->count == 0)
+ continue;
+
+ if (!gimple_has_body_p(node->decl))
+ continue;
+
+ my_function = DECL_STRUCT_FUNCTION (node->decl);
+
+ FOR_EACH_BB_FN (bb, my_function)
+ {
+ if (bb->count < PARAM_VALUE (PARAM_CODESIZE_HOTNESS_THRESHOLD))
+ continue;
+ for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi))
+ {
+ gimple stmt = gsi_stmt (bsi);
+ cgraph_codesize_estimate += estimate_num_insns (stmt, &eni_size_weights);
+ }
+ }
+ }
+ if (dump_file)
+ fprintf (dump_file, "Code size estimate from cgraph: %d\n", cgraph_codesize_estimate);
+}
/* Pass: cleanup the CFG just before expanding trees to RTL.
This is just a round of label cleanups and case node grouping
@@ -158,6 +207,8 @@ struct gimple_opt_pass pass_all_early_optimizations =
static unsigned int
execute_cleanup_cfg_post_optimizing (void)
{
+ /* Estimate the code footprint for hot BBs before we enter RTL */
+ compute_codesize_estimate();
cleanup_tree_cfg ();
cleanup_dead_labels ();
group_case_labels ();
diff --git a/gcc-4.6/gcc/tree-outof-ssa.c b/gcc-4.6/gcc/tree-outof-ssa.c
index 4de45001e..e912d4583 100644
--- a/gcc-4.6/gcc/tree-outof-ssa.c
+++ b/gcc-4.6/gcc/tree-outof-ssa.c
@@ -237,9 +237,10 @@ insert_value_copy_on_edge (edge e, int dest, tree src, source_location locus)
var = SSA_NAME_VAR (partition_to_var (SA.map, dest));
src_mode = TYPE_MODE (TREE_TYPE (src));
- dest_mode = promote_decl_mode (var, &unsignedp);
+ dest_mode = GET_MODE (SA.partition_to_pseudo[dest]);
gcc_assert (src_mode == TYPE_MODE (TREE_TYPE (var)));
- gcc_assert (dest_mode == GET_MODE (SA.partition_to_pseudo[dest]));
+ gcc_assert (!REG_P (SA.partition_to_pseudo[dest])
+ || dest_mode == promote_decl_mode (var, &unsignedp));
if (src_mode != dest_mode)
{
diff --git a/gcc-4.6/gcc/tree-pass.h b/gcc-4.6/gcc/tree-pass.h
index b5e987e65..08ef8f7c5 100644
--- a/gcc-4.6/gcc/tree-pass.h
+++ b/gcc-4.6/gcc/tree-pass.h
@@ -449,6 +449,7 @@ extern struct gimple_opt_pass pass_split_functions;
extern struct gimple_opt_pass pass_feedback_split_functions;
extern struct gimple_opt_pass pass_threadsafe_analyze;
extern struct gimple_opt_pass pass_tree_convert_builtin_dispatch;
+extern struct gimple_opt_pass pass_auto_clone;
/* IPA Passes */
extern struct simple_ipa_opt_pass pass_ipa_lower_emutls;
diff --git a/gcc-4.6/gcc/tree-profile.c b/gcc-4.6/gcc/tree-profile.c
index 13aad30f2..352b8efa9 100644
--- a/gcc-4.6/gcc/tree-profile.c
+++ b/gcc-4.6/gcc/tree-profile.c
@@ -163,10 +163,10 @@ init_ic_make_global_vars (void)
static struct pointer_set_t *instrumentation_to_be_sampled = NULL;
/* extern __thread gcov_unsigned_t __gcov_sample_counter */
-static tree gcov_sample_counter_decl = NULL_TREE;
+static GTY(()) tree gcov_sample_counter_decl = NULL_TREE;
/* extern gcov_unsigned_t __gcov_sampling_rate */
-static tree gcov_sampling_rate_decl = NULL_TREE;
+static GTY(()) tree gcov_sampling_rate_decl = NULL_TREE;
/* forward declaration. */
void gimple_init_instrumentation_sampling (void);
@@ -281,9 +281,13 @@ add_sampling_to_edge_counters (void)
break;
}
}
+}
+static void
+cleanup_instrumentation_sampling (void)
+{
/* Free the bitmap. */
- if (instrumentation_to_be_sampled)
+ if (flag_profile_generate_sampling && instrumentation_to_be_sampled)
{
pointer_set_destroy (instrumentation_to_be_sampled);
instrumentation_to_be_sampled = NULL;
@@ -1095,13 +1099,16 @@ gimple_gen_reusedist (void)
reusedist_make_instr_call (stmt, subst, counters),
GSI_NEW_STMT);
- locus = (stmt != NULL)
- ? gimple_location (stmt)
- : DECL_SOURCE_LOCATION (current_function_decl);
- inform (locus,
- "inserted reuse distance instrumentation for %qs, using "
- "%d gcov counters", subst->original_name,
- subst->num_ptr_args * RD_NUM_COUNTERS);
+ if (flag_opt_info >= OPT_INFO_MAX)
+ {
+ locus = (stmt != NULL)
+ ? gimple_location (stmt)
+ : DECL_SOURCE_LOCATION (current_function_decl);
+ inform (locus,
+ "inserted reuse distance instrumentation for %qs, using "
+ "%d gcov counters", subst->original_name,
+ subst->num_ptr_args * RD_NUM_COUNTERS);
+ }
}
}
}
@@ -1213,7 +1220,7 @@ maybe_issue_profile_use_note (location_t locus, gcov_type* counters, int arg)
reusedist_from_counters (counters, &rd);
- if (rd.count)
+ if ((flag_opt_info >= OPT_INFO_MAX) && rd.count)
inform (locus, "reuse distance counters for arg %d: %lld %lld %lld %lld",
arg, (long long int)rd.mean_dist, (long long int)rd.mean_size,
(long long int)rd.count, (long long int)rd.dist_x_size);
@@ -1282,9 +1289,10 @@ reusedist_maybe_replace_with_nt_version (gimple stmt,
subst_decl = reusedist_get_nt_decl (gimple_call_fndecl (stmt), subst,
suffix);
gimple_call_set_fndecl (stmt, subst_decl);
- inform (locus, "replaced %qs with non-temporal %qs",
- subst->original_name,
- IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (subst_decl)));
+ if (flag_opt_info >= OPT_INFO_MED)
+ inform (locus, "replaced %qs with non-temporal %qs",
+ subst->original_name,
+ IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (subst_decl)));
}
/* Replace string operations with equivalent nontemporal, when profitable. */
@@ -1322,11 +1330,13 @@ optimize_reusedist (void)
if (counter_index != n_counters)
{
- warning (0, "coverage mismatch for reuse distance counters "
+ warning (OPT_Wcoverage_mismatch,
+ "coverage mismatch for reuse distance counters "
"in function %qs", IDENTIFIER_POINTER
(DECL_ASSEMBLER_NAME (current_function_decl)));
- inform (input_location, "number of counters is %u instead of %u",
- n_counters, counter_index);
+ if (flag_opt_info >= OPT_INFO_MAX)
+ inform (input_location, "number of counters is %u instead of %u",
+ n_counters, counter_index);
}
}
@@ -1452,6 +1462,7 @@ tree_profiling (void)
}
del_node_map();
+ cleanup_instrumentation_sampling();
return 0;
}
diff --git a/gcc-4.6/gcc/tree-sra.c b/gcc-4.6/gcc/tree-sra.c
index 213a23bde..6c78f7e9b 100644
--- a/gcc-4.6/gcc/tree-sra.c
+++ b/gcc-4.6/gcc/tree-sra.c
@@ -1022,27 +1022,52 @@ disqualify_ops_if_throwing_stmt (gimple stmt, tree lhs, tree rhs)
return false;
}
-/* Return true iff type of EXP is not sufficiently aligned. */
+/* Return true if EXP is a memory reference less aligned than ALIGN. This is
+ invoked only on strict-alignment targets. */
static bool
-tree_non_mode_aligned_mem_p (tree exp)
+tree_non_aligned_mem_p (tree exp, unsigned int align)
{
- enum machine_mode mode = TYPE_MODE (TREE_TYPE (exp));
- unsigned int align;
+ unsigned int exp_align;
- if (TREE_CODE (exp) == SSA_NAME
- || TREE_CODE (exp) == MEM_REF
- || mode == BLKmode
- || !STRICT_ALIGNMENT)
+ if (TREE_CODE (exp) == VIEW_CONVERT_EXPR)
+ exp = TREE_OPERAND (exp, 0);
+
+ if (TREE_CODE (exp) == SSA_NAME || is_gimple_min_invariant (exp))
return false;
- align = get_object_alignment (exp, BIGGEST_ALIGNMENT);
- if (GET_MODE_ALIGNMENT (mode) > align)
+ /* get_object_alignment will fall back to BITS_PER_UNIT if it cannot
+ compute an explicit alignment. Pretend that dereferenced pointers
+ are always aligned on strict-alignment targets. */
+ exp_align = get_object_alignment (exp, BIGGEST_ALIGNMENT);
+ if (TREE_CODE (exp) == MEM_REF || TREE_CODE (exp) == TARGET_MEM_REF)
+ exp_align = MAX (TYPE_ALIGN (TREE_TYPE (exp)), exp_align);
+
+ if (exp_align < align)
return true;
return false;
}
+/* Return true if EXP is a memory reference less aligned than what the access
+ ACC would require. This is invoked only on strict-alignment targets. */
+
+static bool
+tree_non_aligned_mem_for_access_p (tree exp, struct access *acc)
+{
+ unsigned int acc_align;
+
+ /* The alignment of the access is that of its expression. However, it may
+ have been artificially increased, e.g. by a local alignment promotion,
+ so we cap it to the alignment of the type of the base, on the grounds
+ that valid sub-accesses cannot be more aligned than that. */
+ acc_align = get_object_alignment (acc->expr, BIGGEST_ALIGNMENT);
+ if (acc->base && acc_align > TYPE_ALIGN (TREE_TYPE (acc->base)))
+ acc_align = TYPE_ALIGN (TREE_TYPE (acc->base));
+
+ return tree_non_aligned_mem_p (exp, acc_align);
+}
+
/* Scan expressions occuring in STMT, create access structures for all accesses
to candidates for scalarization and remove those candidates which occur in
statements or expressions that prevent them from being split apart. Return
@@ -1069,7 +1094,8 @@ build_accesses_from_assign (gimple stmt)
if (lacc)
{
lacc->grp_assignment_write = 1;
- lacc->grp_unscalarizable_region |= tree_non_mode_aligned_mem_p (rhs);
+ if (STRICT_ALIGNMENT && tree_non_aligned_mem_for_access_p (rhs, lacc))
+ lacc->grp_unscalarizable_region = 1;
}
if (racc)
@@ -1078,7 +1104,8 @@ build_accesses_from_assign (gimple stmt)
if (should_scalarize_away_bitmap && !gimple_has_volatile_ops (stmt)
&& !is_gimple_reg_type (racc->type))
bitmap_set_bit (should_scalarize_away_bitmap, DECL_UID (racc->base));
- racc->grp_unscalarizable_region |= tree_non_mode_aligned_mem_p (lhs);
+ if (STRICT_ALIGNMENT && tree_non_aligned_mem_for_access_p (lhs, racc))
+ racc->grp_unscalarizable_region = 1;
}
if (lacc && racc
@@ -1433,29 +1460,67 @@ build_ref_for_offset (location_t loc, tree base, HOST_WIDE_INT offset,
return fold_build2_loc (loc, MEM_REF, exp_type, base, off);
}
+DEF_VEC_ALLOC_P_STACK (tree);
+#define VEC_tree_stack_alloc(alloc) VEC_stack_alloc (tree, alloc)
+
/* Construct a memory reference to a part of an aggregate BASE at the given
- OFFSET and of the same type as MODEL. In case this is a reference to a
- component, the function will replicate the last COMPONENT_REF of model's
- expr to access it. GSI and INSERT_AFTER have the same meaning as in
- build_ref_for_offset. */
+ OFFSET and of the type of MODEL. In case this is a chain of references
+ to component, the function will replicate the chain of COMPONENT_REFs of
+ the expression of MODEL to access it. GSI and INSERT_AFTER have the same
+ meaning as in build_ref_for_offset. */
static tree
build_ref_for_model (location_t loc, tree base, HOST_WIDE_INT offset,
struct access *model, gimple_stmt_iterator *gsi,
bool insert_after)
{
+ tree type = model->type, t;
+ VEC(tree,stack) *cr_stack = NULL;
+
+ if (TREE_CODE (model->expr) == COMPONENT_REF)
+ {
+ tree expr = model->expr;
+
+ /* Create a stack of the COMPONENT_REFs so later we can walk them in
+ order from inner to outer. */
+ cr_stack = VEC_alloc (tree, stack, 6);
+
+ do {
+ tree field = TREE_OPERAND (expr, 1);
+ HOST_WIDE_INT bit_pos = int_bit_position (field);
+
+ /* We can be called with a model different from the one associated
+ with BASE so we need to avoid going up the chain too far. */
+ if (offset - bit_pos < 0)
+ break;
+
+ offset -= bit_pos;
+ VEC_safe_push (tree, stack, cr_stack, expr);
+
+ expr = TREE_OPERAND (expr, 0);
+ type = TREE_TYPE (expr);
+ } while (TREE_CODE (expr) == COMPONENT_REF);
+ }
+
+ t = build_ref_for_offset (loc, base, offset, type, gsi, insert_after);
+
if (TREE_CODE (model->expr) == COMPONENT_REF)
{
- tree t, exp_type;
- offset -= int_bit_position (TREE_OPERAND (model->expr, 1));
- exp_type = TREE_TYPE (TREE_OPERAND (model->expr, 0));
- t = build_ref_for_offset (loc, base, offset, exp_type, gsi, insert_after);
- return fold_build3_loc (loc, COMPONENT_REF, model->type, t,
- TREE_OPERAND (model->expr, 1), NULL_TREE);
+ unsigned i;
+ tree expr;
+
+ /* Now replicate the chain of COMPONENT_REFs from inner to outer. */
+ FOR_EACH_VEC_ELT_REVERSE (tree, cr_stack, i, expr)
+ {
+ tree field = TREE_OPERAND (expr, 1);
+ t = fold_build3_loc (loc, COMPONENT_REF, TREE_TYPE (field), t, field,
+ NULL_TREE);
+ }
+
+ VEC_free (tree, stack, cr_stack);
}
- else
- return build_ref_for_offset (loc, base, offset, model->type,
- gsi, insert_after);
+
+ return t;
}
/* Construct a memory reference consisting of component_refs and array_refs to
@@ -1990,13 +2055,25 @@ analyze_access_subtree (struct access *root, bool allow_replacements,
|| ((root->grp_scalar_read || root->grp_assignment_read)
&& (root->grp_scalar_write || root->grp_assignment_write))))
{
+ bool new_integer_type;
+ if (TREE_CODE (root->type) == ENUMERAL_TYPE)
+ {
+ tree rt = root->type;
+ root->type = build_nonstandard_integer_type (TYPE_PRECISION (rt),
+ TYPE_UNSIGNED (rt));
+ new_integer_type = true;
+ }
+ else
+ new_integer_type = false;
+
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "Marking ");
print_generic_expr (dump_file, root->base, 0);
- fprintf (dump_file, " offset: %u, size: %u: ",
+ fprintf (dump_file, " offset: %u, size: %u ",
(unsigned) root->offset, (unsigned) root->size);
- fprintf (dump_file, " to be replaced.\n");
+ fprintf (dump_file, " to be replaced%s.\n",
+ new_integer_type ? " with an integer": "");
}
root->grp_to_be_replaced = 1;
@@ -2580,6 +2657,10 @@ load_assign_lhs_subreplacements (struct access *lacc, struct access *top_racc,
rhs = get_access_replacement (racc);
if (!useless_type_conversion_p (lacc->type, racc->type))
rhs = fold_build1_loc (loc, VIEW_CONVERT_EXPR, lacc->type, rhs);
+
+ if (racc->grp_partial_lhs && lacc->grp_partial_lhs)
+ rhs = force_gimple_operand_gsi (old_gsi, rhs, true, NULL_TREE,
+ true, GSI_SAME_STMT);
}
else
{
@@ -2595,6 +2676,9 @@ load_assign_lhs_subreplacements (struct access *lacc, struct access *top_racc,
else
rhs = build_ref_for_model (loc, top_racc->base, offset, lacc,
new_gsi, true);
+ if (lacc->grp_partial_lhs)
+ rhs = force_gimple_operand_gsi (new_gsi, rhs, true, NULL_TREE,
+ false, GSI_NEW_STMT);
}
stmt = gimple_build_assign (get_access_replacement (lacc), rhs);
@@ -3209,7 +3293,8 @@ ptr_parm_has_direct_uses (tree parm)
&& TREE_OPERAND (lhs, 0) == name
&& integer_zerop (TREE_OPERAND (lhs, 1))
&& types_compatible_p (TREE_TYPE (lhs),
- TREE_TYPE (TREE_TYPE (name))))
+ TREE_TYPE (TREE_TYPE (name)))
+ && !TREE_THIS_VOLATILE (lhs))
uses_ok++;
}
if (gimple_assign_single_p (stmt))
@@ -3221,7 +3306,8 @@ ptr_parm_has_direct_uses (tree parm)
&& TREE_OPERAND (rhs, 0) == name
&& integer_zerop (TREE_OPERAND (rhs, 1))
&& types_compatible_p (TREE_TYPE (rhs),
- TREE_TYPE (TREE_TYPE (name))))
+ TREE_TYPE (TREE_TYPE (name)))
+ && !TREE_THIS_VOLATILE (rhs))
uses_ok++;
}
else if (is_gimple_call (stmt))
@@ -3236,7 +3322,8 @@ ptr_parm_has_direct_uses (tree parm)
&& TREE_OPERAND (arg, 0) == name
&& integer_zerop (TREE_OPERAND (arg, 1))
&& types_compatible_p (TREE_TYPE (arg),
- TREE_TYPE (TREE_TYPE (name))))
+ TREE_TYPE (TREE_TYPE (name)))
+ && !TREE_THIS_VOLATILE (arg))
uses_ok++;
}
}
@@ -3587,7 +3674,8 @@ access_precludes_ipa_sra_p (struct access *access)
|| gimple_code (access->stmt) == GIMPLE_ASM))
return true;
- if (tree_non_mode_aligned_mem_p (access->expr))
+ if (STRICT_ALIGNMENT
+ && tree_non_aligned_mem_p (access->expr, TYPE_ALIGN (access->type)))
return true;
return false;
diff --git a/gcc-4.6/gcc/tree-ssa-alias.c b/gcc-4.6/gcc/tree-ssa-alias.c
index f4c38e1ec..e3bb3a8ba 100644
--- a/gcc-4.6/gcc/tree-ssa-alias.c
+++ b/gcc-4.6/gcc/tree-ssa-alias.c
@@ -1216,8 +1216,20 @@ ref_maybe_used_by_call_p_1 (gimple call, ao_ref *ref)
&& DECL_BUILT_IN_CLASS (callee) == BUILT_IN_NORMAL)
switch (DECL_FUNCTION_CODE (callee))
{
- /* All the following functions clobber memory pointed to by
- their first argument. */
+ /* All the following functions read memory pointed to by
+ their second argument. strcat/strncat additionally
+ reads memory pointed to by the first argument. */
+ case BUILT_IN_STRCAT:
+ case BUILT_IN_STRNCAT:
+ {
+ ao_ref dref;
+ ao_ref_init_from_ptr_and_size (&dref,
+ gimple_call_arg (call, 0),
+ NULL_TREE);
+ if (refs_may_alias_p_1 (&dref, ref, false))
+ return true;
+ }
+ /* FALLTHRU */
case BUILT_IN_STRCPY:
case BUILT_IN_STRNCPY:
case BUILT_IN_MEMCPY:
@@ -1225,8 +1237,6 @@ ref_maybe_used_by_call_p_1 (gimple call, ao_ref *ref)
case BUILT_IN_MEMPCPY:
case BUILT_IN_STPCPY:
case BUILT_IN_STPNCPY:
- case BUILT_IN_STRCAT:
- case BUILT_IN_STRNCAT:
{
ao_ref dref;
tree size = NULL_TREE;
@@ -1457,7 +1467,12 @@ call_may_clobber_ref_p_1 (gimple call, ao_ref *ref)
{
ao_ref dref;
tree size = NULL_TREE;
- if (gimple_call_num_args (call) == 3)
+ /* Don't pass in size for strncat, as the maximum size
+ is strlen (dest) + n + 1 instead of n, resp.
+ n + 1 at dest + strlen (dest), but strlen (dest) isn't
+ known. */
+ if (gimple_call_num_args (call) == 3
+ && DECL_FUNCTION_CODE (callee) != BUILT_IN_STRNCAT)
size = gimple_call_arg (call, 2);
ao_ref_init_from_ptr_and_size (&dref,
gimple_call_arg (call, 0),
diff --git a/gcc-4.6/gcc/tree-ssa-ccp.c b/gcc-4.6/gcc/tree-ssa-ccp.c
index 8b8d996f5..9e09eeec8 100644
--- a/gcc-4.6/gcc/tree-ssa-ccp.c
+++ b/gcc-4.6/gcc/tree-ssa-ccp.c
@@ -1520,7 +1520,7 @@ fold_nonarray_ctor_reference (tree type, tree ctor,
double_int bitoffset;
double_int byte_offset_cst = tree_to_double_int (byte_offset);
double_int bits_per_unit_cst = uhwi_to_double_int (BITS_PER_UNIT);
- double_int bitoffset_end;
+ double_int bitoffset_end, access_end;
/* Variable sized objects in static constructors makes no sense,
but field_size can be NULL for flexible array members. */
@@ -1541,14 +1541,16 @@ fold_nonarray_ctor_reference (tree type, tree ctor,
else
bitoffset_end = double_int_zero;
- /* Is OFFSET in the range (BITOFFSET, BITOFFSET_END)? */
- if (double_int_cmp (uhwi_to_double_int (offset), bitoffset, 0) >= 0
+ access_end = double_int_add (uhwi_to_double_int (offset),
+ uhwi_to_double_int (size));
+
+ /* Is there any overlap between [OFFSET, OFFSET+SIZE) and
+ [BITOFFSET, BITOFFSET_END)? */
+ if (double_int_cmp (access_end, bitoffset, 0) > 0
&& (field_size == NULL_TREE
|| double_int_cmp (uhwi_to_double_int (offset),
bitoffset_end, 0) < 0))
{
- double_int access_end = double_int_add (uhwi_to_double_int (offset),
- uhwi_to_double_int (size));
double_int inner_offset = double_int_sub (uhwi_to_double_int (offset),
bitoffset);
/* We do have overlap. Now see if field is large enough to
@@ -1556,6 +1558,8 @@ fold_nonarray_ctor_reference (tree type, tree ctor,
fields. */
if (double_int_cmp (access_end, bitoffset_end, 0) > 0)
return NULL_TREE;
+ if (double_int_cmp (uhwi_to_double_int (offset), bitoffset, 0) < 0)
+ return NULL_TREE;
return fold_ctor_reference (type, cval,
double_int_to_uhwi (inner_offset), size);
}
@@ -1616,6 +1620,9 @@ fold_const_aggregate_ref (tree t)
HOST_WIDE_INT offset, size, max_size;
tree tem;
+ if (TREE_THIS_VOLATILE (t))
+ return NULL_TREE;
+
if (TREE_CODE_CLASS (TREE_CODE (t)) == tcc_declaration)
return get_symbol_constant_value (t);
diff --git a/gcc-4.6/gcc/tree-ssa-forwprop.c b/gcc-4.6/gcc/tree-ssa-forwprop.c
index 4728f1b27..7e1e7c02c 100644
--- a/gcc-4.6/gcc/tree-ssa-forwprop.c
+++ b/gcc-4.6/gcc/tree-ssa-forwprop.c
@@ -872,7 +872,7 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs,
TREE_TYPE (gimple_assign_rhs1 (use_stmt))))
{
tree *def_rhs_basep = &TREE_OPERAND (def_rhs, 0);
- tree new_offset, new_base, saved;
+ tree new_offset, new_base, saved, new_lhs;
while (handled_component_p (*def_rhs_basep))
def_rhs_basep = &TREE_OPERAND (*def_rhs_basep, 0);
saved = *def_rhs_basep;
@@ -890,8 +890,13 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs,
}
*def_rhs_basep = build2 (MEM_REF, TREE_TYPE (*def_rhs_basep),
new_base, new_offset);
- gimple_assign_set_lhs (use_stmt,
- unshare_expr (TREE_OPERAND (def_rhs, 0)));
+ TREE_THIS_VOLATILE (*def_rhs_basep) = TREE_THIS_VOLATILE (lhs);
+ TREE_SIDE_EFFECTS (*def_rhs_basep) = TREE_SIDE_EFFECTS (lhs);
+ TREE_THIS_NOTRAP (*def_rhs_basep) = TREE_THIS_NOTRAP (lhs);
+ new_lhs = unshare_expr (TREE_OPERAND (def_rhs, 0));
+ gimple_assign_set_lhs (use_stmt, new_lhs);
+ TREE_THIS_VOLATILE (new_lhs) = TREE_THIS_VOLATILE (lhs);
+ TREE_SIDE_EFFECTS (new_lhs) = TREE_SIDE_EFFECTS (lhs);
*def_rhs_basep = saved;
tidy_after_forward_propagate_addr (use_stmt);
/* Continue propagating into the RHS if this was not the
@@ -942,16 +947,16 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs,
tidy_after_forward_propagate_addr (use_stmt);
return res;
}
- /* If the LHS is a plain dereference and the value type is the same as
+ /* If the RHS is a plain dereference and the value type is the same as
that of the pointed-to type of the address we can put the
- dereferenced address on the LHS preserving the original alias-type. */
+ dereferenced address on the RHS preserving the original alias-type. */
else if (gimple_assign_rhs1 (use_stmt) == rhs
&& useless_type_conversion_p
(TREE_TYPE (gimple_assign_lhs (use_stmt)),
TREE_TYPE (TREE_OPERAND (def_rhs, 0))))
{
tree *def_rhs_basep = &TREE_OPERAND (def_rhs, 0);
- tree new_offset, new_base, saved;
+ tree new_offset, new_base, saved, new_rhs;
while (handled_component_p (*def_rhs_basep))
def_rhs_basep = &TREE_OPERAND (*def_rhs_basep, 0);
saved = *def_rhs_basep;
@@ -969,8 +974,13 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs,
}
*def_rhs_basep = build2 (MEM_REF, TREE_TYPE (*def_rhs_basep),
new_base, new_offset);
- gimple_assign_set_rhs1 (use_stmt,
- unshare_expr (TREE_OPERAND (def_rhs, 0)));
+ TREE_THIS_VOLATILE (*def_rhs_basep) = TREE_THIS_VOLATILE (rhs);
+ TREE_SIDE_EFFECTS (*def_rhs_basep) = TREE_SIDE_EFFECTS (rhs);
+ TREE_THIS_NOTRAP (*def_rhs_basep) = TREE_THIS_NOTRAP (rhs);
+ new_rhs = unshare_expr (TREE_OPERAND (def_rhs, 0));
+ gimple_assign_set_rhs1 (use_stmt, new_rhs);
+ TREE_THIS_VOLATILE (new_rhs) = TREE_THIS_VOLATILE (rhs);
+ TREE_SIDE_EFFECTS (new_rhs) = TREE_SIDE_EFFECTS (rhs);
*def_rhs_basep = saved;
fold_stmt_inplace (use_stmt);
tidy_after_forward_propagate_addr (use_stmt);
diff --git a/gcc-4.6/gcc/tree-ssa-loop-ivcanon.c b/gcc-4.6/gcc/tree-ssa-loop-ivcanon.c
index 3c4cc77cb..eed7b6fd6 100644
--- a/gcc-4.6/gcc/tree-ssa-loop-ivcanon.c
+++ b/gcc-4.6/gcc/tree-ssa-loop-ivcanon.c
@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "tree-inline.h"
#include "target.h"
+#include "diagnostic.h"
/* Specifies types of loops that may be unrolled. */
@@ -443,6 +444,16 @@ try_unroll_loop_completely (struct loop *loop,
fprintf (dump_file, "Unrolled loop %d completely by factor %d.\n",
loop->num, (int) n_unroll);
+ if (flag_opt_info >= OPT_INFO_MIN)
+ {
+ location_t locus;
+ locus = gimple_location (cond);
+
+ inform (locus, "Completely Unroll loop by %d (header execution count %d)",
+ (int) n_unroll,
+ (int) loop->header->count);
+ }
+
return true;
}
diff --git a/gcc-4.6/gcc/tree-ssa-pre.c b/gcc-4.6/gcc/tree-ssa-pre.c
index e2a8dc2ec..2753fd7ad 100644
--- a/gcc-4.6/gcc/tree-ssa-pre.c
+++ b/gcc-4.6/gcc/tree-ssa-pre.c
@@ -1545,7 +1545,7 @@ phi_translate_1 (pre_expr expr, bitmap_set_t set1, bitmap_set_t set2,
tree newvuse = vuse;
VEC (vn_reference_op_s, heap) *newoperands = NULL;
bool changed = false, same_valid = true;
- unsigned int i, j;
+ unsigned int i, j, n;
vn_reference_op_t operand;
vn_reference_t newref;
@@ -1554,100 +1554,83 @@ phi_translate_1 (pre_expr expr, bitmap_set_t set1, bitmap_set_t set2,
{
pre_expr opresult;
pre_expr leader;
- tree oldop0 = operand->op0;
- tree oldop1 = operand->op1;
- tree oldop2 = operand->op2;
- tree op0 = oldop0;
- tree op1 = oldop1;
- tree op2 = oldop2;
+ tree op[3];
tree type = operand->type;
vn_reference_op_s newop = *operand;
-
- if (op0 && TREE_CODE (op0) == SSA_NAME)
+ op[0] = operand->op0;
+ op[1] = operand->op1;
+ op[2] = operand->op2;
+ for (n = 0; n < 3; ++n)
{
- unsigned int op_val_id = VN_INFO (op0)->value_id;
- leader = find_leader_in_sets (op_val_id, set1, set2);
- opresult = phi_translate (leader, set1, set2, pred, phiblock);
- if (opresult && opresult != leader)
+ unsigned int op_val_id;
+ if (!op[n])
+ continue;
+ if (TREE_CODE (op[n]) != SSA_NAME)
{
- tree name = get_representative_for (opresult);
- if (!name)
+ /* We can't possibly insert these. */
+ if (n != 0
+ && !is_gimple_min_invariant (op[n]))
break;
- op0 = name;
+ continue;
}
- else if (!opresult)
- break;
- }
- changed |= op0 != oldop0;
-
- if (op1 && TREE_CODE (op1) == SSA_NAME)
- {
- unsigned int op_val_id = VN_INFO (op1)->value_id;
+ op_val_id = VN_INFO (op[n])->value_id;
leader = find_leader_in_sets (op_val_id, set1, set2);
- opresult = phi_translate (leader, set1, set2, pred, phiblock);
- if (opresult && opresult != leader)
+ if (!leader)
+ break;
+ /* Make sure we do not recursively translate ourselves
+ like for translating a[n_1] with the leader for
+ n_1 being a[n_1]. */
+ if (get_expression_id (leader) != get_expression_id (expr))
{
- tree name = get_representative_for (opresult);
- if (!name)
+ opresult = phi_translate (leader, set1, set2,
+ pred, phiblock);
+ if (!opresult)
break;
- op1 = name;
+ if (opresult != leader)
+ {
+ tree name = get_representative_for (opresult);
+ if (!name)
+ break;
+ changed |= name != op[n];
+ op[n] = name;
+ }
}
- else if (!opresult)
- break;
}
- /* We can't possibly insert these. */
- else if (op1 && !is_gimple_min_invariant (op1))
- break;
- changed |= op1 != oldop1;
- if (op2 && TREE_CODE (op2) == SSA_NAME)
+ if (n != 3)
{
- unsigned int op_val_id = VN_INFO (op2)->value_id;
- leader = find_leader_in_sets (op_val_id, set1, set2);
- opresult = phi_translate (leader, set1, set2, pred, phiblock);
- if (opresult && opresult != leader)
- {
- tree name = get_representative_for (opresult);
- if (!name)
- break;
- op2 = name;
- }
- else if (!opresult)
- break;
+ if (newoperands)
+ VEC_free (vn_reference_op_s, heap, newoperands);
+ return NULL;
}
- /* We can't possibly insert these. */
- else if (op2 && !is_gimple_min_invariant (op2))
- break;
- changed |= op2 != oldop2;
-
if (!newoperands)
newoperands = VEC_copy (vn_reference_op_s, heap, operands);
/* We may have changed from an SSA_NAME to a constant */
- if (newop.opcode == SSA_NAME && TREE_CODE (op0) != SSA_NAME)
- newop.opcode = TREE_CODE (op0);
+ if (newop.opcode == SSA_NAME && TREE_CODE (op[0]) != SSA_NAME)
+ newop.opcode = TREE_CODE (op[0]);
newop.type = type;
- newop.op0 = op0;
- newop.op1 = op1;
- newop.op2 = op2;
+ newop.op0 = op[0];
+ newop.op1 = op[1];
+ newop.op2 = op[2];
/* If it transforms a non-constant ARRAY_REF into a constant
one, adjust the constant offset. */
if (newop.opcode == ARRAY_REF
&& newop.off == -1
- && TREE_CODE (op0) == INTEGER_CST
- && TREE_CODE (op1) == INTEGER_CST
- && TREE_CODE (op2) == INTEGER_CST)
+ && TREE_CODE (op[0]) == INTEGER_CST
+ && TREE_CODE (op[1]) == INTEGER_CST
+ && TREE_CODE (op[2]) == INTEGER_CST)
{
- double_int off = tree_to_double_int (op0);
+ double_int off = tree_to_double_int (op[0]);
off = double_int_add (off,
double_int_neg
- (tree_to_double_int (op1)));
- off = double_int_mul (off, tree_to_double_int (op2));
+ (tree_to_double_int (op[1])));
+ off = double_int_mul (off, tree_to_double_int (op[2]));
if (double_int_fits_in_shwi_p (off))
newop.off = off.low;
}
VEC_replace (vn_reference_op_s, newoperands, j, &newop);
/* If it transforms from an SSA_NAME to an address, fold with
a preceding indirect reference. */
- if (j > 0 && op0 && TREE_CODE (op0) == ADDR_EXPR
+ if (j > 0 && op[0] && TREE_CODE (op[0]) == ADDR_EXPR
&& VEC_index (vn_reference_op_s,
newoperands, j - 1)->opcode == MEM_REF)
vn_reference_fold_indirect (&newoperands, &j);
diff --git a/gcc-4.6/gcc/tree-ssa-structalias.c b/gcc-4.6/gcc/tree-ssa-structalias.c
index 29643049b..4e1b680cd 100644
--- a/gcc-4.6/gcc/tree-ssa-structalias.c
+++ b/gcc-4.6/gcc/tree-ssa-structalias.c
@@ -308,6 +308,7 @@ static varinfo_t first_vi_for_offset (varinfo_t, unsigned HOST_WIDE_INT);
static varinfo_t first_or_preceding_vi_for_offset (varinfo_t,
unsigned HOST_WIDE_INT);
static varinfo_t lookup_vi_for_tree (tree);
+static inline bool type_can_have_subvars (const_tree);
/* Pool of variable info structures. */
static alloc_pool variable_info_pool;
@@ -3353,7 +3354,8 @@ get_constraint_for_1 (tree t, VEC (ce_s, heap) **results, bool address_p,
return;
cs = *VEC_last (ce_s, *results);
- if (cs.type == DEREF)
+ if (cs.type == DEREF
+ && type_can_have_subvars (TREE_TYPE (t)))
{
/* For dereferences this means we have to defer it
to solving time. */
@@ -4492,15 +4494,6 @@ find_func_aliases (gimple origt)
&& (!in_ipa_mode
|| DECL_EXTERNAL (lhsop) || TREE_PUBLIC (lhsop)))
make_escape_constraint (rhsop);
- /* If this is a conversion of a non-restrict pointer to a
- restrict pointer track it with a new heapvar. */
- else if (gimple_assign_cast_p (t)
- && POINTER_TYPE_P (TREE_TYPE (rhsop))
- && POINTER_TYPE_P (TREE_TYPE (lhsop))
- && !TYPE_RESTRICT (TREE_TYPE (rhsop))
- && TYPE_RESTRICT (TREE_TYPE (lhsop)))
- make_constraint_from_restrict (get_vi_for_tree (lhsop),
- "CAST_RESTRICT");
}
/* Handle escapes through return. */
else if (gimple_code (t) == GIMPLE_RETURN
@@ -4990,6 +4983,15 @@ sort_fieldstack (VEC(fieldoff_s,heap) *fieldstack)
VEC_qsort (fieldoff_s, fieldstack, fieldoff_compare);
}
+/* Return true if T is a type that can have subvars. */
+
+static inline bool
+type_can_have_subvars (const_tree t)
+{
+ /* Aggregates without overlapping fields can have subvars. */
+ return TREE_CODE (t) == RECORD_TYPE;
+}
+
/* Return true if V is a tree that we can have subvars for.
Normally, this is any aggregate type. Also complex
types which are not gimple registers can have subvars. */
@@ -5005,11 +5007,7 @@ var_can_have_subvars (const_tree v)
if (!DECL_P (v))
return false;
- /* Aggregates without overlapping fields can have subvars. */
- if (TREE_CODE (TREE_TYPE (v)) == RECORD_TYPE)
- return true;
-
- return false;
+ return type_can_have_subvars (TREE_TYPE (v));
}
/* Return true if T is a type that does contain pointers. */
diff --git a/gcc-4.6/gcc/tree-ssa.c b/gcc-4.6/gcc/tree-ssa.c
index 3d4a81fd9..9c1e31c88 100644
--- a/gcc-4.6/gcc/tree-ssa.c
+++ b/gcc-4.6/gcc/tree-ssa.c
@@ -44,6 +44,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-pass.h"
#include "diagnostic-core.h"
#include "l-ipo.h"
+#include "cfgloop.h"
/* Pointer map of variable mappings, keyed by edge. */
static struct pointer_map_t *edge_var_maps;
@@ -2228,7 +2229,10 @@ execute_update_addresses_taken (void)
}
/* Update SSA form here, we are called as non-pass as well. */
- update_ssa (TODO_update_ssa);
+ if (number_of_loops () > 1 && loops_state_satisfies_p (LOOP_CLOSED_SSA))
+ rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa);
+ else
+ update_ssa (TODO_update_ssa);
}
BITMAP_FREE (not_reg_needs);
diff --git a/gcc-4.6/gcc/tree-threadsafe-analyze.c b/gcc-4.6/gcc/tree-threadsafe-analyze.c
index 7db1f4116..bda4e9ae0 100644
--- a/gcc-4.6/gcc/tree-threadsafe-analyze.c
+++ b/gcc-4.6/gcc/tree-threadsafe-analyze.c
@@ -79,6 +79,7 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "tree.h"
+#include "gimple.h"
#include "c-family/c-common.h"
#include "toplev.h"
#include "input.h"
@@ -563,6 +564,40 @@ is_base_object_this_pointer (tree base)
return false;
}
+
+/* Get the function declaration from a gimple call stmt (CALL). This handles
+ both ordinary function calls and virtual methods. */
+
+static tree
+get_fdecl_from_gimple_stmt (gimple call)
+{
+ tree fdecl = gimple_call_fndecl (call);
+ /* If the callee fndecl is NULL, check if it is a virtual function,
+ and if so, try to get its decl through the reference object. */
+ if (!fdecl)
+ {
+ tree callee = gimple_call_fn (call);
+ if (TREE_CODE (callee) == OBJ_TYPE_REF)
+ {
+ tree objtype = TREE_TYPE (TREE_TYPE (OBJ_TYPE_REF_OBJECT (callee)));
+ /* Check to make sure objtype is a valid type.
+ OBJ_TYPE_REF_OBJECT does not always return the correct static type
+ of the callee. For example: Given
+ foo(void* ptr) { ((Foo*) ptr)->doSomething(); }
+ objtype will be void, not Foo. Whether or not this happens
+ depends on the details of how a particular call is lowered to
+ GIMPLE, and there is no easy fix that works in all cases. For
+ now, we simply rely on gcc's type information; if that information
+ is not accurate, then the analysis will be less precise.
+ */
+ if (TREE_CODE (objtype) == RECORD_TYPE)
+ fdecl = lang_hooks.get_virtual_function_decl (callee, objtype);
+ }
+ }
+ return fdecl;
+}
+
+
/* Given a CALL gimple statment, check if its function decl is annotated
with "lock_returned" attribute. If so, return the lock specified in
the attribute. Otherise, return NULL_TREE. */
@@ -570,7 +605,7 @@ is_base_object_this_pointer (tree base)
static tree
get_lock_returned_by_call (gimple call)
{
- tree fdecl = gimple_call_fndecl (call);
+ tree fdecl = get_fdecl_from_gimple_stmt (call);
tree attr = (fdecl
? lookup_attribute ("lock_returned", DECL_ATTRIBUTES (fdecl))
: NULL_TREE);
@@ -804,15 +839,30 @@ get_canonical_lock_expr (tree lock, tree base_obj, bool is_temp_expr,
&& !gimple_nop_p (SSA_NAME_DEF_STMT (lock)))
{
gimple def_stmt = SSA_NAME_DEF_STMT (lock);
- if (is_gimple_assign (def_stmt)
- && (get_gimple_rhs_class (gimple_assign_rhs_code (def_stmt))
- == GIMPLE_SINGLE_RHS))
- return get_canonical_lock_expr (gimple_assign_rhs1 (def_stmt),
- base_obj, is_temp_expr,
- NULL_TREE);
+ if (is_gimple_assign (def_stmt))
+ {
+ enum gimple_rhs_class gcls =
+ get_gimple_rhs_class (gimple_assign_rhs_code (def_stmt));
+ tree rhs = NULL_TREE;
+
+ if (gcls == GIMPLE_SINGLE_RHS)
+ rhs = gimple_assign_rhs1 (def_stmt);
+ else if (gcls == GIMPLE_UNARY_RHS)
+ rhs = build1 (gimple_assign_rhs_code (def_stmt),
+ TREE_TYPE (gimple_assign_lhs (def_stmt)),
+ gimple_assign_rhs1 (def_stmt));
+ else if (gcls == GIMPLE_BINARY_RHS)
+ rhs = build2 (gimple_assign_rhs_code (def_stmt),
+ TREE_TYPE (gimple_assign_lhs (def_stmt)),
+ gimple_assign_rhs1 (def_stmt),
+ gimple_assign_rhs2 (def_stmt));
+ if (rhs)
+ return get_canonical_lock_expr (rhs, base_obj,
+ is_temp_expr, NULL_TREE);
+ }
else if (is_gimple_call (def_stmt))
{
- tree fdecl = gimple_call_fndecl (def_stmt);
+ tree fdecl = get_fdecl_from_gimple_stmt (def_stmt);
tree real_lock = get_lock_returned_by_call (def_stmt);
if (real_lock)
{
@@ -884,10 +934,13 @@ get_canonical_lock_expr (tree lock, tree base_obj, bool is_temp_expr,
{
tree base = TREE_OPERAND (lock, 0);
tree canon_base;
- /* When the expr is a pointer to a lockable type (i.e. mu.Lock()
+ /* For expressions that denote locks,
+ When the expr is a pointer to a lockable type (i.e. mu.Lock()
or Lock(&mu) internally), we don't need the address-taken
operator (&). */
- if (lookup_attribute("lockable", TYPE_ATTRIBUTES (TREE_TYPE (base))))
+ if (!is_temp_expr
+ && lookup_attribute("lockable",
+ TYPE_ATTRIBUTES (TREE_TYPE (base))))
return get_canonical_lock_expr (base, base_obj,
false /* is_temp_expr */,
new_leftmost_base_var);
@@ -924,7 +977,16 @@ get_canonical_lock_expr (tree lock, tree base_obj, bool is_temp_expr,
NULL_TREE);
if (lang_hooks.decl_is_base_field (component))
- return canon_base;
+ {
+ if (is_temp_expr)
+ return canon_base;
+ else
+ /* return canon_base, but recalculate it so that it is stored
+ in the hash table. */
+ return get_canonical_lock_expr (base, base_obj,
+ false /* is_temp_expr */,
+ new_leftmost_base_var);
+ }
if (base != canon_base)
lock = build3 (COMPONENT_REF, TREE_TYPE (component),
@@ -969,6 +1031,24 @@ get_canonical_lock_expr (tree lock, tree base_obj, bool is_temp_expr,
TREE_TYPE (TREE_TYPE (canon_base)), canon_base);
break;
}
+ case PLUS_EXPR:
+ case POINTER_PLUS_EXPR:
+ case MULT_EXPR:
+ {
+ tree left = TREE_OPERAND (lock, 0);
+ tree canon_left = get_canonical_lock_expr (left, base_obj,
+ true /* is_temp_expr */,
+ NULL_TREE);
+
+ tree right = TREE_OPERAND (lock, 1);
+ tree canon_right = get_canonical_lock_expr (right, base_obj,
+ true /* is_temp_expr */,
+ NULL_TREE);
+ if (left != canon_left || right != canon_right)
+ lock = build2 (TREE_CODE (lock), TREE_TYPE (lock),
+ canon_left, canon_right);
+ break;
+ }
default:
break;
}
@@ -1582,7 +1662,15 @@ get_actual_argument_from_position (gimple call, tree pos_arg)
lock_pos = TREE_INT_CST_LOW (pos_arg);
- gcc_assert (lock_pos >= 1 && lock_pos <= num_args);
+ /* The ipa-sra optimization can occasionally delete arguments, thus
+ invalidating the index. */
+ if (lock_pos < 1 || lock_pos > num_args)
+ {
+ if (flag_ipa_sra)
+ return NULL_TREE; /* Attempt to recover gracefully. */
+ else
+ gcc_unreachable ();
+ }
/* The lock position specified in the attributes is 1-based, so we need to
subtract 1 from it when accessing the call arguments. */
@@ -1607,6 +1695,7 @@ get_actual_argument_from_parameter (gimple call, tree fdecl, tree param_decl)
gcc_unreachable ();
}
+
/* A helper function that adds the LOCKABLE, acquired by CALL, to the
corresponding lock sets (LIVE_EXCL_LOCKS or LIVE_SHARED_LOCKS) depending
on the boolean parameter IS_EXCLUSIVE_LOCK. If the CALL is a trylock call,
@@ -1722,7 +1811,27 @@ handle_lock_primitive_attrs (gimple call, tree fdecl, tree arg, tree base_obj,
a formal parameter, we need to grab the corresponding actual argument
of the call. */
else if (TREE_CODE (arg) == INTEGER_CST)
- arg = get_actual_argument_from_position (call, arg);
+ {
+ arg = get_actual_argument_from_position (call, arg);
+ /* If ipa-sra has rewritten the call, then recover as gracefully as
+ possible. */
+ if (!arg)
+ {
+ /* Add the universal lock to the lockset to suppress subsequent
+ errors. */
+ if (is_exclusive_lock)
+ pointer_set_insert (live_excl_locks, error_mark_node);
+ else
+ pointer_set_insert (live_shared_locks, error_mark_node);
+
+ if (warn_thread_optimization)
+ warning_at (*locus, OPT_Wthread_safety,
+ G_("lock attribute has been removed by "
+ "optimization"));
+
+ return;
+ }
+ }
else if (TREE_CODE (get_leftmost_base_var (arg)) == PARM_DECL)
{
tree new_base
@@ -1827,14 +1936,27 @@ remove_lock_from_lockset (tree lockable, struct pointer_set_t *live_excl_locks,
{
tree lock_contained;
- if ((lock_contained = lock_set_contains(live_excl_locks, lockable, NULL_TREE,
- false)) != NULL_TREE)
+ /* Try to remove the actual lock. */
+ if ((lock_contained = lock_set_contains(live_excl_locks, lockable,
+ NULL_TREE, true)) != NULL_TREE)
pointer_set_delete (live_excl_locks, lock_contained);
else if ((lock_contained = lock_set_contains(live_shared_locks, lockable,
- NULL_TREE, false)) != NULL_TREE)
+ NULL_TREE, true)) != NULL_TREE)
pointer_set_delete (live_shared_locks, lock_contained);
- return lock_contained;
+ if (lock_contained)
+ return lock_contained;
+
+ /* If either of lock sets contains the universal lock, then pretend that
+ we've removed it, to avoid a warning about unlocking a lock that was
+ not acquired. */
+ if (pointer_set_contains (live_excl_locks, error_mark_node))
+ return lockable;
+
+ if (pointer_set_contains(live_shared_locks, error_mark_node))
+ return lockable;
+
+ return NULL_TREE;
}
/* This function handles function calls that release locks (i.e. the
@@ -1865,10 +1987,21 @@ handle_unlock_primitive_attr (gimple call, tree fdecl, tree arg, tree base_obj,
a formal parameter, we need to grab the corresponding actual argument
of the call. */
if (TREE_CODE (arg) == INTEGER_CST)
- lockable = get_actual_argument_from_position (call, arg);
+ {
+ lockable = get_actual_argument_from_position (call, arg);
+ /* If ipa-sra has rewritten the call, then fail as gracefully as
+ possible -- just leave the lock in the lockset. */
+ if (!lockable)
+ {
+ if (warn_thread_optimization)
+ warning_at (*locus, OPT_Wthread_safety,
+ G_("unlock attribute has been removed by "
+ "optimization"));
+ return;
+ }
+ }
else if (TREE_CODE (get_leftmost_base_var (arg)) == PARM_DECL)
{
- tree fdecl = gimple_call_fndecl (call);
tree new_base = get_actual_argument_from_parameter (
call, fdecl, get_leftmost_base_var (arg));
lockable = get_canonical_lock_expr (arg, NULL_TREE, false, new_base);
@@ -1883,7 +2016,18 @@ handle_unlock_primitive_attr (gimple call, tree fdecl, tree arg, tree base_obj,
}
else
{
- gcc_assert (base_obj);
+ /* If ipa-sra has killed arguments, then base_obj may be NULL.
+ Attempt to recover gracefully by leaving the lock in the lockset. */
+ if (!base_obj)
+ {
+ if (!flag_ipa_sra)
+ gcc_unreachable ();
+ else if (warn_thread_optimization)
+ warning_at (*locus, OPT_Wthread_safety,
+ G_("unlock attribute has been removed by "
+ "optimization"));
+ return;
+ }
/* Check if the primitive is an unlock routine (e.g. the destructor or
a release function) of a scoped_lock. If so, get the lock that is
@@ -2074,6 +2218,9 @@ handle_function_lock_requirement (gimple call, tree fdecl, tree base_obj,
else if (TREE_CODE (lock) == INTEGER_CST)
{
lock = get_actual_argument_from_position (call, lock);
+ /* Ignore attribute if ipa-sra has killed the argument. */
+ if (!lock)
+ return;
/* If the lock is a function argument, we don't want to
prepend the base object to the lock name. Set the
TMP_BASE_OBJ to NULL. */
@@ -2126,6 +2273,7 @@ process_function_attrs (gimple call, tree fdecl,
tree base_obj = NULL_TREE;
bool is_exclusive_lock;
bool is_trylock;
+ bool optimized_args = false;
gcc_assert (is_gimple_call (call));
@@ -2144,16 +2292,28 @@ process_function_attrs (gimple call, tree fdecl,
!= NULL_TREE)
current_bb_info->writes_ignored = false;
+ /* If the given function is a clone, and if some of the parameters of the
+ clone have been optimized away, then the function attribute is no longer
+ correct, and we should suppress certain warnings. Clones are often created
+ when -fipa-sra is enabled, which happens by default at -O2 starting from
+ GCC-4.5. The clones could be created as early as when constructing SSA.
+ ipa-sra is particularly fond of optimizing away the "this" pointer,
+ which is a problem because that makes it impossible to determine the
+ base object, which then causes spurious errors. It's better to just
+ remain silent in this case. */
+ if ((TREE_CODE (TREE_TYPE (fdecl)) == FUNCTION_TYPE
+ || TREE_CODE (TREE_TYPE (fdecl)) == METHOD_TYPE) /* sanity check */
+ && (fdecl != DECL_ORIGIN (fdecl)) /* is it a clone? */
+ && (type_num_arguments (TREE_TYPE (fdecl)) != /* compare args */
+ type_num_arguments (TREE_TYPE (DECL_ORIGIN(fdecl)))))
+ optimized_args = true;
+
/* If the function is a class member, the first argument of the function
(i.e. "this" pointer) would be the base object. Note that here we call
DECL_ORIGIN on fdecl first before we check whether it's a METHOD_TYPE
because if fdecl is a cloned method, the TREE_CODE of its type would be
FUNCTION_DECL instead of METHOD_DECL, which would lead us to not grab
- its base object. One possible situation where fdecl could be a clone is
- when -fipa-sra is enabled. (-fipa-sra is enabled by default at -O2
- starting from GCC-4.5.). The clones could be created as early as when
- constructing SSA. Also note that the parameters of a cloned method could
- be optimized away. */
+ its base object. */
if (TREE_CODE (TREE_TYPE (DECL_ORIGIN (fdecl))) == METHOD_TYPE
&& gimple_call_num_args(call) > 0)
base_obj = gimple_call_arg (call, 0);
@@ -2282,7 +2442,8 @@ process_function_attrs (gimple call, tree fdecl,
current_bb_info, locus);
}
- if (warn_thread_unguarded_func)
+ /* suppress warnings if the function arguments are no longer accurate. */
+ if (warn_thread_unguarded_func && !optimized_args)
{
/* Handle the attributes specifying the lock requirements of
functions. */
@@ -2415,12 +2576,17 @@ handle_indirect_ref (tree ptr, struct pointer_set_t *excl_locks,
return;
}
-/* The main routine that handles gimple call statements. */
+/* The main routine that handles gimple call statements. This will update
+ the set of held locks.
+ CALL -- the gimple call statement.
+ CURRENT_BB_INFO -- a pointer to the lockset structures for the current
+ basic block.
+*/
static void
handle_call_gs (gimple call, struct bb_threadsafe_info *current_bb_info)
{
- tree fdecl = gimple_call_fndecl (call);
+ tree fdecl = get_fdecl_from_gimple_stmt (call);
int num_args = gimple_call_num_args (call);
int arg_index = 0;
tree arg_type = NULL_TREE;
@@ -2433,27 +2599,6 @@ handle_call_gs (gimple call, struct bb_threadsafe_info *current_bb_info)
else
locus = gimple_location (call);
- /* If the callee fndecl is NULL, check if it is a virtual function,
- and if so, try to get its decl through the reference object. */
- if (!fdecl)
- {
- tree callee = gimple_call_fn (call);
- if (TREE_CODE (callee) == OBJ_TYPE_REF)
- {
- tree objtype = TREE_TYPE (TREE_TYPE (OBJ_TYPE_REF_OBJECT (callee)));
- /* Check to make sure objtype is a valid type.
- OBJ_TYPE_REF_OBJECT does not always return the correct static type of the callee.
- For example: Given foo(void* ptr) { ((Foo*) ptr)->doSomething(); }
- objtype will be void, not Foo. Whether or not this happens depends on the details
- of how a particular call is lowered to GIMPLE, and there is no easy fix that works
- in all cases. For now, we simply rely on gcc's type information; if that information
- is not accurate, then the analysis will be less precise.
- */
- if (TREE_CODE (objtype) == RECORD_TYPE)
- fdecl = lang_hooks.get_virtual_function_decl (callee, objtype);
- }
- }
-
/* The callee fndecl could be NULL, e.g., when the function is passed in
as an argument. */
if (fdecl)
@@ -2746,7 +2891,8 @@ get_trylock_info(gimple gs, bool *lock_on_true_path)
}
else if (is_gimple_call (gs))
{
- tree fdecl = gimple_call_fndecl (gs);
+ tree fdecl = get_fdecl_from_gimple_stmt (gs);
+
/* The function decl could be null in some cases, e.g.
a function pointer passed in as a parameter. */
if (fdecl
diff --git a/gcc-4.6/gcc/tree-vect-data-refs.c b/gcc-4.6/gcc/tree-vect-data-refs.c
index e0427c702..e39427716 100644
--- a/gcc-4.6/gcc/tree-vect-data-refs.c
+++ b/gcc-4.6/gcc/tree-vect-data-refs.c
@@ -1495,6 +1495,9 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
stmt = DR_STMT (dr);
stmt_info = vinfo_for_stmt (stmt);
+ if (!STMT_VINFO_RELEVANT (stmt_info))
+ continue;
+
/* For interleaving, only the alignment of the first access
matters. */
if (STMT_VINFO_STRIDED_ACCESS (stmt_info)
@@ -2049,6 +2052,10 @@ vect_analyze_group_access (struct data_reference *dr)
HOST_WIDE_INT dr_step = TREE_INT_CST_LOW (step);
HOST_WIDE_INT stride, last_accessed_element = 1;
bool slp_impossible = false;
+ struct loop *loop = NULL;
+
+ if (loop_vinfo)
+ loop = LOOP_VINFO_LOOP (loop_vinfo);
/* For interleaving, STRIDE is STEP counted in elements, i.e., the size of the
interleaving group (including gaps). */
@@ -2079,11 +2086,18 @@ vect_analyze_group_access (struct data_reference *dr)
if (loop_vinfo)
{
- LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) = true;
-
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "Data access with gaps requires scalar "
"epilogue loop");
+ if (loop->inner)
+ {
+ if (vect_print_dump_info (REPORT_DETAILS))
+ fprintf (vect_dump, "Peeling for outer loop is not"
+ " supported");
+ return false;
+ }
+
+ LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) = true;
}
return true;
@@ -2279,10 +2293,17 @@ vect_analyze_group_access (struct data_reference *dr)
/* There is a gap in the end of the group. */
if (stride - last_accessed_element > 0 && loop_vinfo)
{
- LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) = true;
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "Data access with gaps requires scalar "
"epilogue loop");
+ if (loop->inner)
+ {
+ if (vect_print_dump_info (REPORT_DETAILS))
+ fprintf (vect_dump, "Peeling for outer loop is not supported");
+ return false;
+ }
+
+ LOOP_VINFO_PEELING_FOR_GAPS (loop_vinfo) = true;
}
}
@@ -2576,14 +2597,7 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo,
print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
}
- if (bb_vinfo)
- {
- /* Mark the statement as not vectorizable. */
- STMT_VINFO_VECTORIZABLE (stmt_info) = false;
- continue;
- }
- else
- return false;
+ return false;
}
if (TREE_CODE (DR_BASE_ADDRESS (dr)) == INTEGER_CST)
@@ -2591,14 +2605,7 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo,
if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
fprintf (vect_dump, "not vectorized: base addr of dr is a "
"constant");
- if (bb_vinfo)
- {
- /* Mark the statement as not vectorizable. */
- STMT_VINFO_VECTORIZABLE (stmt_info) = false;
- continue;
- }
- else
- return false;
+ return false;
}
if (TREE_THIS_VOLATILE (DR_REF (dr)))
@@ -2626,6 +2633,16 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo,
return false;
}
+ if (is_gimple_call (stmt))
+ {
+ if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
+ {
+ fprintf (vect_dump, "not vectorized: dr in a call ");
+ print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
+ }
+ return false;
+ }
+
/* Update DR field in stmt_vec_info struct. */
/* If the dataref is in an inner-loop of the loop that is considered for
diff --git a/gcc-4.6/gcc/tree-vect-stmts.c b/gcc-4.6/gcc/tree-vect-stmts.c
index 5685cde88..7311a7753 100644
--- a/gcc-4.6/gcc/tree-vect-stmts.c
+++ b/gcc-4.6/gcc/tree-vect-stmts.c
@@ -1533,7 +1533,7 @@ vectorizable_call (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt)
}
else
{
- vec_oprnd1 = gimple_call_arg (new_stmt, 2*i);
+ vec_oprnd1 = gimple_call_arg (new_stmt, 2*i + 1);
vec_oprnd0
= vect_get_vec_def_for_stmt_copy (dt[i], vec_oprnd1);
vec_oprnd1
@@ -1583,6 +1583,14 @@ vectorizable_call (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt)
new_stmt = gimple_build_assign (gimple_call_lhs (stmt),
build_zero_cst (type));
set_vinfo_for_stmt (new_stmt, stmt_info);
+ /* For pattern statements make the related statement to point to
+ NEW_STMT in order to be able to retrieve the original statement
+ information later. */
+ if (is_pattern_stmt_p (stmt_info))
+ {
+ gimple related = STMT_VINFO_RELATED_STMT (stmt_info);
+ STMT_VINFO_RELATED_STMT (vinfo_for_stmt (related)) = new_stmt;
+ }
set_vinfo_for_stmt (stmt, NULL);
STMT_VINFO_STMT (stmt_info) = new_stmt;
gsi_replace (gsi, new_stmt, false);
@@ -3309,6 +3317,38 @@ vectorizable_type_promotion (gimple stmt, gimple_stmt_iterator *gsi,
return true;
}
+/* Return true if vector load/store with vinfo in STMT_VINFO
+ is slow. If it is a strided access, STRIDED is true. */
+
+static bool
+is_vector_load_store_slow (stmt_vec_info stmt_info, bool strided)
+{
+ struct data_reference *dr;
+
+ if (!targetm.slow_unaligned_vector_memop
+ || !targetm.slow_unaligned_vector_memop ())
+ return false;
+
+ if (strided)
+ dr = STMT_VINFO_DATA_REF (
+ vinfo_for_stmt (DR_GROUP_FIRST_DR (stmt_info)));
+ else
+ dr = STMT_VINFO_DATA_REF (stmt_info);
+
+ if (!aligned_access_p (dr))
+ {
+ if (vect_print_dump_info (REPORT_DETAILS))
+ {
+ fprintf (vect_dump, "Unaligned vectorizable load/store: "
+ " slow & not allowed. ");
+ print_gimple_stmt (vect_dump, STMT_VINFO_STMT (stmt_info),
+ 0, TDF_SLIM);
+ }
+ return true;
+ }
+
+ return false;
+}
/* Function vectorizable_store.
@@ -3456,6 +3496,10 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
}
}
+ /* Return false if unaligned vector stores are expensive. */
+ if (is_vector_load_store_slow (stmt_info, strided_store))
+ return false;
+
if (!vec_stmt) /* transformation not required. */
{
STMT_VINFO_TYPE (stmt_info) = store_vec_info_type;
@@ -3948,6 +3992,10 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
}
}
+ /* Return false if unaligned vector loads are expensive. */
+ if (is_vector_load_store_slow (stmt_info, strided_load))
+ return false;
+
if (!vec_stmt) /* transformation not required. */
{
STMT_VINFO_TYPE (stmt_info) = load_vec_info_type;
@@ -4806,7 +4854,7 @@ vect_transform_stmt (gimple stmt, gimple_stmt_iterator *gsi,
bool is_store = false;
gimple vec_stmt = NULL;
stmt_vec_info stmt_info = vinfo_for_stmt (stmt);
- gimple orig_stmt_in_pattern, orig_scalar_stmt = stmt;
+ gimple orig_stmt_in_pattern;
bool done;
switch (STMT_VINFO_TYPE (stmt_info))
@@ -4957,11 +5005,7 @@ vect_transform_stmt (gimple stmt, gimple_stmt_iterator *gsi,
the stmt_info of ORIG_STMT_IN_PATTERN. See more details in the
documentation of vect_pattern_recog. */
if (STMT_VINFO_IN_PATTERN_P (stmt_vinfo))
- {
- gcc_assert (STMT_VINFO_RELATED_STMT (stmt_vinfo)
- == orig_scalar_stmt);
- STMT_VINFO_VEC_STMT (stmt_vinfo) = vec_stmt;
- }
+ STMT_VINFO_VEC_STMT (stmt_vinfo) = vec_stmt;
}
}
diff --git a/gcc-4.6/gcc/tree-vrp.c b/gcc-4.6/gcc/tree-vrp.c
index 2c4f033ad..118a82ab4 100644
--- a/gcc-4.6/gcc/tree-vrp.c
+++ b/gcc-4.6/gcc/tree-vrp.c
@@ -1476,7 +1476,7 @@ extract_range_from_assert (value_range_t *vr_p, tree expr)
limit = avoid_overflow_infinity (limit);
- type = TREE_TYPE (limit);
+ type = TREE_TYPE (var);
gcc_assert (limit != var);
/* For pointer arithmetic, we only keep track of pointer equality
@@ -1650,8 +1650,8 @@ extract_range_from_assert (value_range_t *vr_p, tree expr)
/* For LT_EXPR, we create the range [MIN, MAX - 1]. */
if (cond_code == LT_EXPR)
{
- tree one = build_int_cst (type, 1);
- max = fold_build2 (MINUS_EXPR, type, max, one);
+ tree one = build_int_cst (TREE_TYPE (max), 1);
+ max = fold_build2 (MINUS_EXPR, TREE_TYPE (max), max, one);
if (EXPR_P (max))
TREE_NO_WARNING (max) = 1;
}
@@ -1685,8 +1685,8 @@ extract_range_from_assert (value_range_t *vr_p, tree expr)
/* For GT_EXPR, we create the range [MIN + 1, MAX]. */
if (cond_code == GT_EXPR)
{
- tree one = build_int_cst (type, 1);
- min = fold_build2 (PLUS_EXPR, type, min, one);
+ tree one = build_int_cst (TREE_TYPE (min), 1);
+ min = fold_build2 (PLUS_EXPR, TREE_TYPE (min), min, one);
if (EXPR_P (min))
TREE_NO_WARNING (min) = 1;
}
diff --git a/gcc-4.6/gcc/tree.c b/gcc-4.6/gcc/tree.c
index 76bd164d1..7e30fe18e 100644
--- a/gcc-4.6/gcc/tree.c
+++ b/gcc-4.6/gcc/tree.c
@@ -9398,6 +9398,31 @@ build_common_builtin_nodes (void)
? "_Unwind_SjLj_Resume" : "_Unwind_Resume"),
ECF_NORETURN);
+ if (built_in_decls[BUILT_IN_RETURN_ADDRESS] == NULL_TREE)
+ {
+ ftype = build_function_type_list (ptr_type_node, integer_type_node,
+ NULL_TREE);
+ local_define_builtin ("__builtin_return_address", ftype,
+ BUILT_IN_RETURN_ADDRESS,
+ "__builtin_return_address",
+ ECF_NOTHROW);
+ }
+
+ if (built_in_decls[BUILT_IN_PROFILE_FUNC_ENTER] == NULL_TREE
+ || built_in_decls[BUILT_IN_PROFILE_FUNC_EXIT] == NULL_TREE)
+ {
+ ftype = build_function_type_list (void_type_node, ptr_type_node,
+ ptr_type_node, NULL_TREE);
+ if (built_in_decls[BUILT_IN_PROFILE_FUNC_ENTER] == NULL_TREE)
+ local_define_builtin ("__cyg_profile_func_enter", ftype,
+ BUILT_IN_PROFILE_FUNC_ENTER,
+ "__cyg_profile_func_enter", 0);
+ if (built_in_decls[BUILT_IN_PROFILE_FUNC_EXIT] == NULL_TREE)
+ local_define_builtin ("__cyg_profile_func_exit", ftype,
+ BUILT_IN_PROFILE_FUNC_EXIT,
+ "__cyg_profile_func_exit", 0);
+ }
+
/* The exception object and filter values from the runtime. The argument
must be zero before exception lowering, i.e. from the front end. After
exception lowering, it will be the region number for the exception
diff --git a/gcc-4.6/gcc/tree.h b/gcc-4.6/gcc/tree.h
index e4469be0d..1ec0c06a9 100644
--- a/gcc-4.6/gcc/tree.h
+++ b/gcc-4.6/gcc/tree.h
@@ -5155,6 +5155,7 @@ truth_value_p (enum tree_code code)
/* In builtins.c */
+extern bool avoid_folding_inline_builtin (tree);
extern tree fold_call_expr (location_t, tree, bool);
extern tree fold_builtin_fputs (location_t, tree, tree, bool, bool, tree);
extern tree fold_builtin_strcpy (location_t, tree, tree, tree, tree);
diff --git a/gcc-4.6/gcc/value-prof.c b/gcc-4.6/gcc/value-prof.c
index 57a9918b0..6d67f6d5b 100644
--- a/gcc-4.6/gcc/value-prof.c
+++ b/gcc-4.6/gcc/value-prof.c
@@ -471,9 +471,10 @@ check_counter (gimple stmt, const char * name,
: DECL_SOURCE_LOCATION (current_function_decl);
if (flag_profile_correction)
{
- inform (locus, "correcting inconsistent value profile: "
- "%s profiler overall count (%d) does not match BB count "
- "(%d)", name, (int)*all, (int)bb_count);
+ if (flag_opt_info >= OPT_INFO_MAX)
+ inform (locus, "correcting inconsistent value profile: %s "
+ "profiler overall count (%d) does not match BB count "
+ "(%d)", name, (int)*all, (int)bb_count);
*all = bb_count;
if (*count > *all)
*count = *all;
@@ -509,33 +510,42 @@ check_ic_counter (gimple stmt, gcov_type *count1, gcov_type *count2,
location_t locus;
if (*count1 > all && flag_profile_correction)
{
- locus = (stmt != NULL)
- ? gimple_location (stmt)
- : DECL_SOURCE_LOCATION (current_function_decl);
- inform (locus, "Correcting inconsistent value profile: "
- "ic (topn) profiler top target count (%ld) exceeds "
- "BB count (%ld)", (long)*count1, (long)all);
+ if (flag_opt_info >= OPT_INFO_MAX)
+ {
+ locus = (stmt != NULL)
+ ? gimple_location (stmt)
+ : DECL_SOURCE_LOCATION (current_function_decl);
+ inform (locus, "Correcting inconsistent value profile: "
+ "ic (topn) profiler top target count (%ld) exceeds "
+ "BB count (%ld)", (long)*count1, (long)all);
+ }
*count1 = all;
}
if (*count2 > all && flag_profile_correction)
{
- locus = (stmt != NULL)
- ? gimple_location (stmt)
- : DECL_SOURCE_LOCATION (current_function_decl);
- inform (locus, "Correcting inconsistent value profile: "
- "ic (topn) profiler second target count (%ld) exceeds "
- "BB count (%ld)", (long)*count2, (long)all);
+ if (flag_opt_info >= OPT_INFO_MAX)
+ {
+ locus = (stmt != NULL)
+ ? gimple_location (stmt)
+ : DECL_SOURCE_LOCATION (current_function_decl);
+ inform (locus, "Correcting inconsistent value profile: "
+ "ic (topn) profiler second target count (%ld) exceeds "
+ "BB count (%ld)", (long)*count2, (long)all);
+ }
*count2 = all;
}
if (*count2 > *count1)
{
- locus = (stmt != NULL)
- ? gimple_location (stmt)
- : DECL_SOURCE_LOCATION (current_function_decl);
- inform (locus, "Corrupted topn ic value profile: "
- "first target count (%ld) is less than the second "
- "target count (%ld)", (long)*count1, (long)*count2);
+ if (flag_opt_info >= OPT_INFO_MAX)
+ {
+ locus = (stmt != NULL)
+ ? gimple_location (stmt)
+ : DECL_SOURCE_LOCATION (current_function_decl);
+ inform (locus, "Corrupted topn ic value profile: "
+ "first target count (%ld) is less than the second "
+ "target count (%ld)", (long)*count1, (long)*count2);
+ }
return true;
}
@@ -547,12 +557,16 @@ check_ic_counter (gimple stmt, gcov_type *count1, gcov_type *count2,
*count2 = all - *count1;
else
{
- locus = (stmt != NULL)
- ? gimple_location (stmt)
- : DECL_SOURCE_LOCATION (current_function_decl);
- inform (locus, "Corrupted topn ic value profile: top two targets's"
- " total count (%ld) exceeds bb count (%ld)",
- (long)(*count1 + *count2), (long)all);
+ if (flag_opt_info >= OPT_INFO_MAX)
+ {
+ locus = (stmt != NULL)
+ ? gimple_location (stmt)
+ : DECL_SOURCE_LOCATION (current_function_decl);
+ inform (locus,
+ "Corrupted topn ic value profile: top two targets's"
+ " total count (%ld) exceeds bb count (%ld)",
+ (long)(*count1 + *count2), (long)all);
+ }
return true;
}
}
@@ -1186,8 +1200,11 @@ find_func_by_funcdef_no (int func_id)
func_id) == NULL)
{
if (flag_profile_correction)
- inform (DECL_SOURCE_LOCATION (current_function_decl),
+ {
+ if (flag_opt_info >= OPT_INFO_MED)
+ inform (DECL_SOURCE_LOCATION (current_function_decl),
"Inconsistent profile: indirect call target (%d) does not exist", func_id);
+ }
else
error ("Inconsistent profile: indirect call target (%d) does not exist", func_id);
@@ -1316,8 +1333,9 @@ check_ic_target (gimple call_stmt, struct cgraph_node *target)
return true;
locus = gimple_location (call_stmt);
- inform (locus, "Skipping target %s with mismatching types for icall ",
- cgraph_node_name (target));
+ if (flag_opt_info >= OPT_INFO_MAX)
+ inform (locus, "Skipping target %s with mismatching types for icall ",
+ cgraph_node_name (target));
return false;
}
@@ -1579,7 +1597,7 @@ gimple_ic_transform_mult_targ (gimple stmt, histogram_value histogram)
if (direct_call1 == NULL
|| !check_ic_target (stmt, direct_call1))
{
- if (flag_ripa_verbose)
+ if (flag_opt_info >= OPT_INFO_MAX)
{
if (!direct_call1)
inform (locus, "Can not find indirect call target decl "
@@ -1605,7 +1623,7 @@ gimple_ic_transform_mult_targ (gimple stmt, histogram_value histogram)
return false;
modify1 = gimple_ic (stmt, direct_call1, prob1, count1, all);
- if (flag_ripa_verbose)
+ if (flag_opt_info >= OPT_INFO_MIN)
inform (locus, "Promote indirect call to target (call count:%u) %s",
(unsigned) count1,
lang_hooks.decl_printable_name (direct_call1->decl, 3));
@@ -1644,7 +1662,7 @@ gimple_ic_transform_mult_targ (gimple stmt, histogram_value histogram)
modify2 = gimple_ic (stmt, direct_call2,
prob2, count2, all - count1);
- if (flag_ripa_verbose)
+ if (flag_opt_info >= OPT_INFO_MIN)
inform (locus, "Promote indirect call to target (call count:%u) %s",
(unsigned) count2,
lang_hooks.decl_printable_name (direct_call2->decl, 3));
diff --git a/gcc-4.6/gcc/varasm.c b/gcc-4.6/gcc/varasm.c
index 1aa8731f6..40a856758 100644
--- a/gcc-4.6/gcc/varasm.c
+++ b/gcc-4.6/gcc/varasm.c
@@ -2613,6 +2613,12 @@ decode_addr_const (tree exp, struct addr_const *value)
* tree_low_cst (TREE_OPERAND (target, 1), 0));
target = TREE_OPERAND (target, 0);
}
+ else if (TREE_CODE (target) == MEM_REF
+ && TREE_CODE (TREE_OPERAND (target, 0)) == ADDR_EXPR)
+ {
+ offset += mem_ref_offset (target).low;
+ target = TREE_OPERAND (TREE_OPERAND (target, 0), 0);
+ }
else if (TREE_CODE (target) == INDIRECT_REF
&& TREE_CODE (TREE_OPERAND (target, 0)) == NOP_EXPR
&& TREE_CODE (TREE_OPERAND (TREE_OPERAND (target, 0), 0))
@@ -6185,6 +6191,8 @@ default_elf_asm_named_section (const char *name, unsigned int flags,
if (!(flags & SECTION_DEBUG))
*f++ = 'a';
+ if (flags & SECTION_EXCLUDE)
+ *f++ = 'e';
if (flags & SECTION_WRITE)
*f++ = 'w';
if (flags & SECTION_CODE)
@@ -6770,11 +6778,14 @@ default_binds_local_p_1 (const_tree exp, int shlib)
/* A non-decl is an entry in the constant pool. */
if (!DECL_P (exp))
local_p = true;
- /* Weakrefs may not bind locally, even though the weakref itself is
- always static and therefore local.
- FIXME: We can resolve this more curefuly by looking at the weakref
- alias. */
- else if (lookup_attribute ("weakref", DECL_ATTRIBUTES (exp)))
+ /* Weakrefs may not bind locally, even though the weakref itself is always
+ static and therefore local. Similarly, the resolver for ifunc functions
+ might resolve to a non-local function.
+ FIXME: We can resolve the weakref case more curefuly by looking at the
+ weakref alias. */
+ else if (lookup_attribute ("weakref", DECL_ATTRIBUTES (exp))
+ || (TREE_CODE (exp) == FUNCTION_DECL
+ && lookup_attribute ("ifunc", DECL_ATTRIBUTES (exp))))
local_p = false;
/* Static variables are always local. */
else if (! TREE_PUBLIC (exp))
diff --git a/gcc-4.6/gnattools/ChangeLog b/gcc-4.6/gnattools/ChangeLog
index cce027091..e28b225f1 100644
--- a/gcc-4.6/gnattools/ChangeLog
+++ b/gcc-4.6/gnattools/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/include/ChangeLog b/gcc-4.6/include/ChangeLog
index 33b3bd05e..2031c706a 100644
--- a/gcc-4.6/include/ChangeLog
+++ b/gcc-4.6/include/ChangeLog
@@ -1,3 +1,19 @@
+2012-01-26 Cary Coutant <ccoutant@google.com>
+
+ * include/dwarf2.h (enum dwarf_form): Update Fission extensions, add
+ wiki reference.
+ (enum dwarf_attribute): Likewise.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-09-23 Cary Coutant <ccoutant@google.com>
+
+ PR 40831
+ * demangle.h (enum demangle_component_type): Add
+ DEMANGLE_COMPONENT_CLONE.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/include/ChangeLog.google-4_6 b/gcc-4.6/include/ChangeLog.google-4_6
new file mode 100644
index 000000000..18d0cf617
--- /dev/null
+++ b/gcc-4.6/include/ChangeLog.google-4_6
@@ -0,0 +1,35 @@
+2011-12-19 Sterling Augustine <saugustine@google.com>
+
+ Backport from google/main
+
+ * dwarf2.h (enum dwarf_form): Add DW_FORM_GNU_ref_index,
+ DW_FORM_GNU_addr_index and DW_FORM_GNU_str_index.
+ (enum dwarf_attribute): Add DW_AT_GNU_dwo_name, DW_AT_GNU_dwo_id,
+ DW_AT_GNU_ref_base, DW_AT_GNU_addr_base, DW_AT_GNU_pubnames and
+ DW_AT_GNU_pubtypes.
+
+2011-09-27 Sriraman Tallam <tmsriram@google.com>
+
+ * plugin-api.h
+ (ld_plugin_section): New struct.
+ (ld_plugin_get_section_count): New typedef.
+ (ld_plugin_get_section_type): New typedef.
+ (ld_plugin_get_section_name): New typedef.
+ (ld_plugin_get_section_contents): New typedef.
+ (ld_plugin_update_section_order): New typedef.
+ (ld_plugin_allow_section_ordering): New typedef.
+ (ld_plugin_get_view): New typedef.
+ (LDPT_GET_SECTION_COUNT): New enum value.
+ (LDPT_GET_SECTION_TYPE): New enum value.
+ (LDPT_GET_SECTION_NAME): New enum value.
+ (LDPT_GET_SECTION_CONTENTS): New enum value.
+ (LDPT_UPDATE_SECTION_ORDER): New enum value.
+ (LDPT_ALLOW_SECTION_ORDERING): New enum value.
+ (LDPT_GET_VIEW): New enum value.
+ (tv_get_section_count): New struct member.
+ (tv_get_section_type): New struct member.
+ (tv_get_section_name): New struct member.
+ (tv_get_section_contents): New struct member.
+ (tv_update_section_order): New struct member.
+ (tv_allow_section_ordering): New struct member.
+ (tv_get_view): New struct member.
diff --git a/gcc-4.6/include/demangle.h b/gcc-4.6/include/demangle.h
index c0624559e..ae11f1804 100644
--- a/gcc-4.6/include/demangle.h
+++ b/gcc-4.6/include/demangle.h
@@ -396,7 +396,9 @@ enum demangle_component_type
/* An unnamed type. */
DEMANGLE_COMPONENT_UNNAMED_TYPE,
/* A pack expansion. */
- DEMANGLE_COMPONENT_PACK_EXPANSION
+ DEMANGLE_COMPONENT_PACK_EXPANSION,
+ /* A cloned function. */
+ DEMANGLE_COMPONENT_CLONE
};
/* Types which are only used internally. */
diff --git a/gcc-4.6/include/dwarf2.h b/gcc-4.6/include/dwarf2.h
index 7d3f5e49f..121b896fa 100644
--- a/gcc-4.6/include/dwarf2.h
+++ b/gcc-4.6/include/dwarf2.h
@@ -182,8 +182,12 @@ enum dwarf_form
DW_FORM_sec_offset = 0x17,
DW_FORM_exprloc = 0x18,
DW_FORM_flag_present = 0x19,
- DW_FORM_ref_sig8 = 0x20
+ DW_FORM_ref_sig8 = 0x20,
#define DW_FORM_sig8 DW_FORM_ref_sig8 /* Note: The use of DW_FORM_sig8 is deprecated. */
+ /* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */
+ DW_FORM_GNU_ref_index = 0x1f00,
+ DW_FORM_GNU_addr_index = 0x1f01,
+ DW_FORM_GNU_str_index = 0x1f02
};
/* Attribute names and codes. */
@@ -351,6 +355,13 @@ enum dwarf_attribute
/* Template template argument name.
See http://gcc.gnu.org/wiki/TemplateParmsDwarf . */
DW_AT_GNU_template_name = 0x2110,
+ /* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */
+ DW_AT_GNU_dwo_name = 0x2130,
+ DW_AT_GNU_dwo_id = 0x2131,
+ DW_AT_GNU_ref_base = 0x2132,
+ DW_AT_GNU_addr_base = 0x2133,
+ DW_AT_GNU_pubnames = 0x2134,
+ DW_AT_GNU_pubtypes = 0x2135,
/* VMS extensions. */
DW_AT_VMS_rtnbeg_pd_address = 0x2201,
/* GNAT extensions. */
diff --git a/gcc-4.6/include/plugin-api.h b/gcc-4.6/include/plugin-api.h
index 956df001a..df0039372 100644
--- a/gcc-4.6/include/plugin-api.h
+++ b/gcc-4.6/include/plugin-api.h
@@ -93,6 +93,14 @@ struct ld_plugin_symbol
int resolution;
};
+/* An object's section. */
+
+struct ld_plugin_section
+{
+ const void* handle;
+ unsigned int shndx;
+};
+
/* Whether the symbol is a definition, reference, or common, weak or not. */
enum ld_plugin_symbol_kind
@@ -203,6 +211,10 @@ enum ld_plugin_status
(*ld_plugin_get_input_file) (const void *handle,
struct ld_plugin_input_file *file);
+typedef
+enum ld_plugin_status
+(*ld_plugin_get_view) (const void *handle, const void **viewp);
+
/* The linker's interface for releasing the input file. */
typedef
@@ -240,6 +252,65 @@ typedef
enum ld_plugin_status
(*ld_plugin_message) (int level, const char *format, ...);
+/* The linker's interface for retrieving the number of sections in an object.
+ The handle is obtained in the claim_file handler. This interface should
+ only be invoked in the claim_file handler. This function sets *COUNT to
+ the number of sections in the object. */
+
+typedef
+enum ld_plugin_status
+(*ld_plugin_get_input_section_count) (const void* handle, unsigned int *count);
+
+/* The linker's interface for retrieving the section type of a specific
+ section in an object. This interface should only be invoked in the
+ claim_file handler. This function sets *TYPE to an ELF SHT_xxx value. */
+
+typedef
+enum ld_plugin_status
+(*ld_plugin_get_input_section_type) (const struct ld_plugin_section section,
+ unsigned int *type);
+
+/* The linker's interface for retrieving the name of a specific section in
+ an object. This interface should only be invoked in the claim_file handler.
+ This function sets *SECTION_NAME_PTR to a null-terminated buffer allocated
+ by malloc. The plugin must free *SECTION_NAME_PTR. */
+
+typedef
+enum ld_plugin_status
+(*ld_plugin_get_input_section_name) (const struct ld_plugin_section section,
+ char **section_name_ptr);
+
+/* The linker's interface for retrieving the contents of a specific section
+ in an object. This interface should only be invoked in the claim_file
+ handler. This function sets *SECTION_CONTENTS to point to a buffer that is
+ valid until clam_file handler returns. It sets *LEN to the size of the
+ buffer. */
+
+typedef
+enum ld_plugin_status
+(*ld_plugin_get_input_section_contents) (const struct ld_plugin_section section,
+ const unsigned char **section_contents,
+ size_t* len);
+
+/* The linker's interface for specifying the desired order of sections.
+ The sections should be specifed using the array SECTION_LIST in the
+ order in which they should appear in the final layout. NUM_SECTIONS
+ specifies the number of entries in each array. This should be invoked
+ in the all_symbols_read handler. */
+
+typedef
+enum ld_plugin_status
+(*ld_plugin_update_section_order) (const struct ld_plugin_section *section_list,
+ unsigned int num_sections);
+
+/* The linker's interface for specifying that reordering of sections is
+ desired so that the linker can prepare for it. This should be invoked
+ before update_section_order, preferably in the claim_file handler. */
+
+typedef
+enum ld_plugin_status
+(*ld_plugin_allow_section_ordering) (void);
+
enum ld_plugin_level
{
LDPL_INFO,
@@ -269,7 +340,14 @@ enum ld_plugin_tag
LDPT_ADD_INPUT_LIBRARY,
LDPT_OUTPUT_NAME,
LDPT_SET_EXTRA_LIBRARY_PATH,
- LDPT_GNU_LD_VERSION
+ LDPT_GNU_LD_VERSION,
+ LDPT_GET_VIEW,
+ LDPT_GET_INPUT_SECTION_COUNT,
+ LDPT_GET_INPUT_SECTION_TYPE,
+ LDPT_GET_INPUT_SECTION_NAME,
+ LDPT_GET_INPUT_SECTION_CONTENTS,
+ LDPT_UPDATE_SECTION_ORDER,
+ LDPT_ALLOW_SECTION_ORDERING
};
/* The plugin transfer vector. */
@@ -289,9 +367,16 @@ struct ld_plugin_tv
ld_plugin_add_input_file tv_add_input_file;
ld_plugin_message tv_message;
ld_plugin_get_input_file tv_get_input_file;
+ ld_plugin_get_view tv_get_view;
ld_plugin_release_input_file tv_release_input_file;
ld_plugin_add_input_library tv_add_input_library;
ld_plugin_set_extra_library_path tv_set_extra_library_path;
+ ld_plugin_get_input_section_count tv_get_input_section_count;
+ ld_plugin_get_input_section_type tv_get_input_section_type;
+ ld_plugin_get_input_section_name tv_get_input_section_name;
+ ld_plugin_get_input_section_contents tv_get_input_section_contents;
+ ld_plugin_update_section_order tv_update_section_order;
+ ld_plugin_allow_section_ordering tv_allow_section_ordering;
} tv_u;
};
diff --git a/gcc-4.6/intl/ChangeLog b/gcc-4.6/intl/ChangeLog
index 8a6e17249..b0ee1ed82 100644
--- a/gcc-4.6/intl/ChangeLog
+++ b/gcc-4.6/intl/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/libada/ChangeLog b/gcc-4.6/libada/ChangeLog
index 29b673c81..ce786fa7a 100644
--- a/gcc-4.6/libada/ChangeLog
+++ b/gcc-4.6/libada/ChangeLog
@@ -1,3 +1,13 @@
+2011-11-13 Iain Sandoe <iains@gcc.gnu.org>
+
+ Backport from mainline r181319
+ Makefile.in: Change dependency on oscons to depend on the generator
+ tool.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/libada/Makefile.in b/gcc-4.6/libada/Makefile.in
index cd518239b..2fa1c6a8c 100644
--- a/gcc-4.6/libada/Makefile.in
+++ b/gcc-4.6/libada/Makefile.in
@@ -70,6 +70,7 @@ target_noncanonical:=@target_noncanonical@
version := $(shell cat $(srcdir)/../gcc/BASE-VER)
libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)
ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
+ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
# exeext should not be used because it's the *host* exeext. We're building
# a *target* library, aren't we?!? Likewise for CC. Still, provide bogus
@@ -96,10 +97,10 @@ LIBADA_FLAGS_TO_PASS = \
"CFLAGS=$(CFLAGS) $(WARN_CFLAGS)"
# Rules to build gnatlib.
-.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared oscons
+.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
gnatlib: @default_gnatlib_target@
-gnatlib-plain: oscons $(GCC_DIR)/ada/Makefile
+gnatlib-plain: osconstool $(GCC_DIR)/ada/Makefile
test -f stamp-libada || \
$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) gnatlib \
&& touch stamp-libada
@@ -108,7 +109,7 @@ gnatlib-plain: oscons $(GCC_DIR)/ada/Makefile
$(LN_S) $(ADA_RTS_DIR) adainclude
$(LN_S) $(ADA_RTS_DIR) adalib
-gnatlib-sjlj gnatlib-zcx gnatlib-shared: oscons $(GCC_DIR)/ada/Makefile
+gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile
test -f stamp-libada || \
$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \
&& touch stamp-libada
@@ -117,8 +118,8 @@ gnatlib-sjlj gnatlib-zcx gnatlib-shared: oscons $(GCC_DIR)/ada/Makefile
$(LN_S) $(ADA_RTS_DIR) adainclude
$(LN_S) $(ADA_RTS_DIR) adalib
-oscons:
- $(MAKE) -C $(GCC_DIR) $(LIBADA_FLAGS_TO_PASS) ada/s-oscons.ads
+osconstool:
+ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons
install-gnatlib: $(GCC_DIR)/ada/Makefile
$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) install-gnatlib
diff --git a/gcc-4.6/libcpp/ChangeLog b/gcc-4.6/libcpp/ChangeLog
index 7308385dc..eb10d631b 100644
--- a/gcc-4.6/libcpp/ChangeLog
+++ b/gcc-4.6/libcpp/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/libcpp/ChangeLog.google-4_6 b/gcc-4.6/libcpp/ChangeLog.google-4_6
new file mode 100644
index 000000000..9c5138321
--- /dev/null
+++ b/gcc-4.6/libcpp/ChangeLog.google-4_6
@@ -0,0 +1,9 @@
+2011-12-06 Jeffrey Yasskin <jyasskin@google.com>
+
+ Backport from rev 180707
+
+ 2011-10-31 Jason Merrill <jason@redhat.com>
+
+ PR c++/50920
+ * include/cpplib.h (enum c_lang): Rename CLK_CXX0X to CLK_CXX11,
+ CLK_GNUCXX0X to CLK_GNUCXX11.
diff --git a/gcc-4.6/libcpp/include/cpplib.h b/gcc-4.6/libcpp/include/cpplib.h
index 8fa28819b..0f32863b4 100644
--- a/gcc-4.6/libcpp/include/cpplib.h
+++ b/gcc-4.6/libcpp/include/cpplib.h
@@ -157,7 +157,7 @@ enum cpp_ttype
/* C language kind, used when calling cpp_create_reader. */
enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_GNUC1X,
CLK_STDC89, CLK_STDC94, CLK_STDC99, CLK_STDC1X,
- CLK_GNUCXX, CLK_CXX98, CLK_GNUCXX0X, CLK_CXX0X, CLK_ASM};
+ CLK_GNUCXX, CLK_CXX98, CLK_GNUCXX11, CLK_CXX11, CLK_ASM};
/* Payload of a NUMBER, STRING, CHAR or COMMENT token. */
struct GTY(()) cpp_string {
diff --git a/gcc-4.6/libcpp/init.c b/gcc-4.6/libcpp/init.c
index cfc16e8f8..6a8f39dea 100644
--- a/gcc-4.6/libcpp/init.c
+++ b/gcc-4.6/libcpp/init.c
@@ -91,11 +91,11 @@ static const struct lang_flags lang_defaults[] =
/* STDC1X */ { 1, 0, 1, 0, 1, 1, 1, 0 },
/* GNUCXX */ { 0, 1, 1, 0, 0, 1, 1, 0 },
/* CXX98 */ { 0, 1, 1, 0, 1, 1, 1, 0 },
- /* GNUCXX0X */ { 1, 1, 1, 0, 0, 1, 1, 1 },
- /* CXX0X */ { 1, 1, 1, 0, 1, 1, 1, 1 },
+ /* GNUCXX11 */ { 1, 1, 1, 0, 0, 1, 1, 1 },
+ /* CXX11 */ { 1, 1, 1, 0, 1, 1, 1, 1 },
/* ASM */ { 0, 0, 1, 0, 0, 1, 0, 0 }
- /* xid should be 1 for GNUC99, STDC99, GNUCXX, CXX98, GNUCXX0X, and
- CXX0X when no longer experimental (when all uses of identifiers
+ /* xid should be 1 for GNUC99, STDC99, GNUCXX, CXX98, GNUCXX11, and
+ CXX11 when no longer experimental (when all uses of identifiers
in the compiler have been audited for correct handling of
extended identifiers). */
};
diff --git a/gcc-4.6/libcpp/po/ChangeLog b/gcc-4.6/libcpp/po/ChangeLog
index 066eaf7c3..ef4fc5d94 100644
--- a/gcc-4.6/libcpp/po/ChangeLog
+++ b/gcc-4.6/libcpp/po/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-07-08 Joseph Myers <joseph@codesourcery.com>
* be.po, ca.po, da.po, de.po, el.po, es.po, fi.po, fr.po, id.po,
diff --git a/gcc-4.6/libdecnumber/ChangeLog b/gcc-4.6/libdecnumber/ChangeLog
index 73a4f9d77..ca4711144 100644
--- a/gcc-4.6/libdecnumber/ChangeLog
+++ b/gcc-4.6/libdecnumber/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/libffi/ChangeLog b/gcc-4.6/libffi/ChangeLog
index c679540e5..24c256cc7 100644
--- a/gcc-4.6/libffi/ChangeLog
+++ b/gcc-4.6/libffi/ChangeLog
@@ -1,3 +1,21 @@
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure: Regenerate.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-10-04 Andrew Haley <aph@redhat.com>
+
+ * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Clear icache.
+
+2011-09-04 Iain Sandoe <iains@gcc.gnu.org>
+
+ PR libffi/49594
+ * src/powerpc/darwin_closure.S (stubs): Make the stub binding
+ helper reference track the architecture pointer size.
+
2011-06-29 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* testsuite/libffi.call/cls_double_va.c: Move PR number to comment.
diff --git a/gcc-4.6/libffi/configure b/gcc-4.6/libffi/configure
index 353cc7e4f..9e653c91a 100755
--- a/gcc-4.6/libffi/configure
+++ b/gcc-4.6/libffi/configure
@@ -9016,7 +9016,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -9929,7 +9929,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -9947,7 +9947,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
diff --git a/gcc-4.6/libffi/src/arm/ffi.c b/gcc-4.6/libffi/src/arm/ffi.c
index 9a0a53c83..4e72c3bcd 100644
--- a/gcc-4.6/libffi/src/arm/ffi.c
+++ b/gcc-4.6/libffi/src/arm/ffi.c
@@ -341,12 +341,16 @@ ffi_prep_incoming_args_SYSV(char *stack, void **rvalue,
({ unsigned char *__tramp = (unsigned char*)(TRAMP); \
unsigned int __fun = (unsigned int)(FUN); \
unsigned int __ctx = (unsigned int)(CTX); \
+ unsigned char *insns = (unsigned char *)(CTX); \
*(unsigned int*) &__tramp[0] = 0xe92d000f; /* stmfd sp!, {r0-r3} */ \
*(unsigned int*) &__tramp[4] = 0xe59f0000; /* ldr r0, [pc] */ \
*(unsigned int*) &__tramp[8] = 0xe59ff000; /* ldr pc, [pc] */ \
*(unsigned int*) &__tramp[12] = __ctx; \
*(unsigned int*) &__tramp[16] = __fun; \
- __clear_cache((&__tramp[0]), (&__tramp[19])); \
+ __clear_cache((&__tramp[0]), (&__tramp[19])); /* Clear data mapping. */ \
+ __clear_cache(insns, insns + 3 * sizeof (unsigned int)); \
+ /* Clear instruction \
+ mapping. */ \
})
diff --git a/gcc-4.6/libffi/src/powerpc/darwin_closure.S b/gcc-4.6/libffi/src/powerpc/darwin_closure.S
index 8c0e11a18..b43f9658f 100644
--- a/gcc-4.6/libffi/src/powerpc/darwin_closure.S
+++ b/gcc-4.6/libffi/src/powerpc/darwin_closure.S
@@ -534,7 +534,7 @@ L_ffi_closure_helper_DARWIN$stub:
.lazy_symbol_pointer
L_ffi_closure_helper_DARWIN$lazy_ptr:
.indirect_symbol _ffi_closure_helper_DARWIN
- .long dyld_stub_binding_helper
+ .g_long dyld_stub_binding_helper
#if defined(__ppc64__)
.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
@@ -553,7 +553,8 @@ L_darwin64_struct_ret_by_value_p$stub:
.lazy_symbol_pointer
L_darwin64_struct_ret_by_value_p$lazy_ptr:
.indirect_symbol _darwin64_struct_ret_by_value_p
- .long dyld_stub_binding_helper
+ .g_long dyld_stub_binding_helper
+
.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
.align 5
L_darwin64_pass_struct_floats$stub:
@@ -570,6 +571,6 @@ L_darwin64_pass_struct_floats$stub:
.lazy_symbol_pointer
L_darwin64_pass_struct_floats$lazy_ptr:
.indirect_symbol _darwin64_pass_struct_floats
- .long dyld_stub_binding_helper
+ .g_long dyld_stub_binding_helper
# endif
#endif
diff --git a/gcc-4.6/libgcc/ChangeLog b/gcc-4.6/libgcc/ChangeLog
index ec575f0c1..c5b1d1cd6 100644
--- a/gcc-4.6/libgcc/ChangeLog
+++ b/gcc-4.6/libgcc/ChangeLog
@@ -1,3 +1,32 @@
+2011-12-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ Backport from mainline
+ 2011-12-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ * generic-morestack.c (__generic_morestack_set_initial_sp): Check
+ __GLIBC__ instead of __linux__ when using __SIGRTMIN.
+
+2011-11-23 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * config.host (*-*-freebsd[12], *-*-freebsd[12].*,
+ *-*-freebsd*aout*): Remove.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-08-24 Richard Sandiford <richard.sandiford@linaro.org>
+
+ PR target/50090
+ * config/arm/bpabi-lib.h (RENAME_LIBRARY_SET): Delete.
+ (RENAME_LIBRARY): Use a C-level alias instead of an assembly one.
+
+2011-08-23 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/64/sfp-machine.h (ASM_INVALID): New define.
+ (ASM_DIVZERO): Ditto.
+ (FP_HANLDE_EXCEPTIONS): Use ASM_INVALID and ASM_DIVZERO.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/libgcc/ChangeLog.google-4_6 b/gcc-4.6/libgcc/ChangeLog.google-4_6
new file mode 100644
index 000000000..7fd222a3a
--- /dev/null
+++ b/gcc-4.6/libgcc/ChangeLog.google-4_6
@@ -0,0 +1,27 @@
+2012-01-11 Sriraman Tallam <tmsriram@google.com>
+
+ Add support to detect AMD Family 15h(0x15) processors, version 1 and 2.
+
+ * i386-cpuinfo.c (__cpu_is_amdfam15h_bdver1): New member in __cpu_model
+ struct.
+ (__cpu_is_amdfam15h_bdver2): New member in __cpu_model struct.
+ (__cpu_model): Rename __cpu_is_amdfam10 to __cpu_is_amdfam10h.
+ Rename __cpu_is_amdfam10_barcelona to __cpu_is_amdfam10h_barcelona.
+ Rename __cpu_is_amdfam10_shanghai to __cpu_is_amdfam10h_shanghai.
+ Rename __cpu_is_amdfam10_istanbul to __cpu_is_amdfam10h_istanbul.
+ (get_amd_cpu): Check for family 15h processors.
+ (cpu_indicator_init): Adjust model and family for AMD processors.
+ Refactor code.
+
+2011-12-17 Sriraman Tallam <tmsriram@google.com>
+
+ * config/i386/i386-cpuinfo.c (__processor_model): Add new members
+ __cpu_is_intel_corei7 and __cpu_is_amdfam10.
+ (get_amd_cpu): Set __cpu_is_amdfam10.
+ (get_intel_cpu): Set __cpu_is_intel_corei7.
+
+2011-09-01 Sriraman Tallam <tmsriram@google.com>
+
+ * config/i386/i386-cpuinfo.c: New file.
+ * config/i386/t-cpuinfo: New file.
+ * config.host: Add t-cpuinfo to link i386-cpuinfo.o with libgcc
diff --git a/gcc-4.6/libgcc/config.host b/gcc-4.6/libgcc/config.host
index d3f64d687..2516c0a0c 100644
--- a/gcc-4.6/libgcc/config.host
+++ b/gcc-4.6/libgcc/config.host
@@ -145,15 +145,6 @@ case ${host} in
asm_hidden_op=.private_extern
tmake_file="t-darwin ${cpu_type}/t-darwin t-slibgcc-darwin"
;;
-*-*-freebsd[12] | *-*-freebsd[12].* | *-*-freebsd*aout*)
- # This is the place-holder for the generic a.out configuration
- # of FreeBSD. No actual configuration resides here since
- # there was only ever a bare-bones ix86 configuration for
- # a.out and it exists solely in the machine-specific section.
- # This place-holder must exist to avoid dropping into
- # the generic ELF configuration of FreeBSD (i.e. it must be
- # ordered before that section).
- ;;
*-*-freebsd*)
# This is the generic ELF configuration of FreeBSD. Later
# machine-specific sections may refine and add to this
@@ -609,7 +600,7 @@ case ${host} in
i[34567]86-*-linux* | x86_64-*-linux* | \
i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | \
i[34567]86-*-gnu*)
- tmake_file="${tmake_file} t-tls"
+ tmake_file="${tmake_file} t-tls i386/t-cpuinfo"
if test "$libgcc_cv_cfi" = "yes"; then
tmake_file="${tmake_file} t-stack i386/t-stack-i386"
fi
diff --git a/gcc-4.6/libgcc/config/arm/bpabi-lib.h b/gcc-4.6/libgcc/config/arm/bpabi-lib.h
index 49a28c3c2..fc0e59507 100644
--- a/gcc-4.6/libgcc/config/arm/bpabi-lib.h
+++ b/gcc-4.6/libgcc/config/arm/bpabi-lib.h
@@ -20,17 +20,10 @@
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
-#if defined (__thumb__)
-#define RENAME_LIBRARY_SET ".thumb_set"
-#else
-#define RENAME_LIBRARY_SET ".set"
-#endif
-
/* Make __aeabi_AEABI_NAME an alias for __GCC_NAME. */
#define RENAME_LIBRARY(GCC_NAME, AEABI_NAME) \
- __asm__ (".globl\t__aeabi_" #AEABI_NAME "\n" \
- RENAME_LIBRARY_SET "\t__aeabi_" #AEABI_NAME \
- ", __" #GCC_NAME "\n");
+ typeof (__##GCC_NAME) __aeabi_##AEABI_NAME \
+ __attribute__((alias ("__" #GCC_NAME)));
/* Give some libgcc functions an additional __aeabi name. */
#ifdef L_muldi3
diff --git a/gcc-4.6/libgcc/config/i386/64/sfp-machine.h b/gcc-4.6/libgcc/config/i386/64/sfp-machine.h
index 5adf6dbba..5186c24ff 100644
--- a/gcc-4.6/libgcc/config/i386/64/sfp-machine.h
+++ b/gcc-4.6/libgcc/config/i386/64/sfp-machine.h
@@ -79,17 +79,25 @@ struct fenv
unsigned short int __unused5;
};
+#ifdef __AVX__
+ #define ASM_INVALID "vdivss %0, %0, %0"
+ #define ASM_DIVZERO "vdivss %1, %0, %0"
+#else
+ #define ASM_INVALID "divss %0, %0"
+ #define ASM_DIVZERO "divss %1, %0"
+#endif
+
#define FP_HANDLE_EXCEPTIONS \
do { \
if (_fex & FP_EX_INVALID) \
{ \
float f = 0.0; \
- __asm__ __volatile__ ("divss %0, %0 " : : "x" (f)); \
+ __asm__ __volatile__ (ASM_INVALID : : "x" (f)); \
} \
if (_fex & FP_EX_DIVZERO) \
{ \
float f = 1.0, g = 0.0; \
- __asm__ __volatile__ ("divss %1, %0" : : "x" (f), "x" (g)); \
+ __asm__ __volatile__ (ASM_DIVZERO : : "x" (f), "x" (g)); \
} \
if (_fex & FP_EX_OVERFLOW) \
{ \
diff --git a/gcc-4.6/libgcc/config/i386/i386-cpuinfo.c b/gcc-4.6/libgcc/config/i386/i386-cpuinfo.c
new file mode 100644
index 000000000..362bfc4cb
--- /dev/null
+++ b/gcc-4.6/libgcc/config/i386/i386-cpuinfo.c
@@ -0,0 +1,307 @@
+/* Get CPU type and Features for x86 processors.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+ Contributed by Sriraman Tallam (tmsriram@google.com)
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#include "cpuid.h"
+#include "tsystem.h"
+
+int __cpu_indicator_init (void) __attribute__ ((constructor));
+
+enum vendor_signatures
+{
+ SIG_INTEL = 0x756e6547 /* Genu */,
+ SIG_AMD = 0x68747541 /* Auth */
+};
+
+
+/* Features supported. */
+
+struct __processor_features
+{
+ unsigned int __cpu_cmov : 1;
+ unsigned int __cpu_mmx : 1;
+ unsigned int __cpu_popcnt : 1;
+ unsigned int __cpu_sse : 1;
+ unsigned int __cpu_sse2 : 1;
+ unsigned int __cpu_sse3 : 1;
+ unsigned int __cpu_ssse3 : 1;
+ unsigned int __cpu_sse4_1 : 1;
+ unsigned int __cpu_sse4_2 : 1;
+} __cpu_features;
+
+/* Processor Model. */
+
+struct __processor_model
+{
+ /* Vendor. */
+ unsigned int __cpu_is_amd : 1;
+ unsigned int __cpu_is_intel : 1;
+ /* CPU type. */
+ unsigned int __cpu_is_intel_atom : 1;
+ unsigned int __cpu_is_intel_core2 : 1;
+ unsigned int __cpu_is_intel_corei7 : 1;
+ unsigned int __cpu_is_intel_corei7_nehalem : 1;
+ unsigned int __cpu_is_intel_corei7_westmere : 1;
+ unsigned int __cpu_is_intel_corei7_sandybridge : 1;
+ unsigned int __cpu_is_amdfam10h : 1;
+ unsigned int __cpu_is_amdfam10h_barcelona : 1;
+ unsigned int __cpu_is_amdfam10h_shanghai : 1;
+ unsigned int __cpu_is_amdfam10h_istanbul : 1;
+ unsigned int __cpu_is_amdfam15h_bdver1 : 1;
+ unsigned int __cpu_is_amdfam15h_bdver2 : 1;
+} __cpu_model;
+
+/* Get the specific type of AMD CPU. */
+
+static void
+get_amd_cpu (unsigned int family, unsigned int model)
+{
+ switch (family)
+ {
+ /* AMD Family 10h. */
+ case 0x10:
+ switch (model)
+ {
+ case 0x2:
+ /* Barcelona. */
+ __cpu_model.__cpu_is_amdfam10h = 1;
+ __cpu_model.__cpu_is_amdfam10h_barcelona = 1;
+ break;
+ case 0x4:
+ /* Shanghai. */
+ __cpu_model.__cpu_is_amdfam10h = 1;
+ __cpu_model.__cpu_is_amdfam10h_shanghai = 1;
+ break;
+ case 0x8:
+ /* Istanbul. */
+ __cpu_model.__cpu_is_amdfam10h = 1;
+ __cpu_model.__cpu_is_amdfam10h_istanbul = 1;
+ break;
+ default:
+ break;
+ }
+ break;
+ /* AMD Family 15h. */
+ case 0x15:
+ /* Bulldozer version 1. */
+ if (model >= 0 && model <= 0xf)
+ __cpu_model.__cpu_is_amdfam15h_bdver1 = 1;
+ /* Bulldozer version 2. */
+ if (model >= 0x10 && model <= 0x1f)
+ __cpu_model.__cpu_is_amdfam15h_bdver2 = 1;
+ break;
+ default:
+ break;
+ }
+}
+
+/* Get the specific type of Intel CPU. */
+
+static void
+get_intel_cpu (unsigned int family, unsigned int model, unsigned int brand_id)
+{
+ /* Parse family and model only if brand ID is 0. */
+ if (brand_id == 0)
+ {
+ switch (family)
+ {
+ case 0x5:
+ /* Pentium. */
+ break;
+ case 0x6:
+ switch (model)
+ {
+ case 0x1c:
+ case 0x26:
+ /* Atom. */
+ __cpu_model.__cpu_is_intel_atom = 1;
+ break;
+ case 0x1a:
+ case 0x1e:
+ case 0x1f:
+ case 0x2e:
+ /* Nehalem. */
+ __cpu_model.__cpu_is_intel_corei7 = 1;
+ __cpu_model.__cpu_is_intel_corei7_nehalem = 1;
+ break;
+ case 0x25:
+ case 0x2c:
+ case 0x2f:
+ /* Westmere. */
+ __cpu_model.__cpu_is_intel_corei7 = 1;
+ __cpu_model.__cpu_is_intel_corei7_westmere = 1;
+ break;
+ case 0x2a:
+ /* Sandy Bridge. */
+ __cpu_model.__cpu_is_intel_corei7 = 1;
+ __cpu_model.__cpu_is_intel_corei7_sandybridge = 1;
+ break;
+ case 0x17:
+ case 0x1d:
+ /* Penryn. */
+ case 0x0f:
+ /* Merom. */
+ __cpu_model.__cpu_is_intel_core2 = 1;
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ /* We have no idea. */
+ break;
+ }
+ }
+}
+
+static void
+get_available_features (unsigned int ecx, unsigned int edx)
+{
+ __cpu_features.__cpu_cmov = (edx & bit_CMOV) ? 1 : 0;
+ __cpu_features.__cpu_mmx = (edx & bit_MMX) ? 1 : 0;
+ __cpu_features.__cpu_sse = (edx & bit_SSE) ? 1 : 0;
+ __cpu_features.__cpu_sse2 = (edx & bit_SSE2) ? 1 : 0;
+ __cpu_features.__cpu_popcnt = (ecx & bit_POPCNT) ? 1 : 0;
+ __cpu_features.__cpu_sse3 = (ecx & bit_SSE3) ? 1 : 0;
+ __cpu_features.__cpu_ssse3 = (ecx & bit_SSSE3) ? 1 : 0;
+ __cpu_features.__cpu_sse4_1 = (ecx & bit_SSE4_1) ? 1 : 0;
+ __cpu_features.__cpu_sse4_2 = (ecx & bit_SSE4_2) ? 1 : 0;
+}
+
+
+/* Sanity check for the vendor and cpu type flags. */
+
+static int
+sanity_check (void)
+{
+ unsigned int one_type = 0;
+
+ /* Vendor cannot be Intel and AMD. */
+ gcc_assert((__cpu_model.__cpu_is_intel == 0)
+ || (__cpu_model.__cpu_is_amd == 0));
+
+ /* Only one CPU type can be set. */
+ one_type = (__cpu_model.__cpu_is_intel_atom
+ + __cpu_model.__cpu_is_intel_core2
+ + __cpu_model.__cpu_is_intel_corei7_nehalem
+ + __cpu_model.__cpu_is_intel_corei7_westmere
+ + __cpu_model.__cpu_is_intel_corei7_sandybridge
+ + __cpu_model.__cpu_is_amdfam10h_barcelona
+ + __cpu_model.__cpu_is_amdfam10h_shanghai
+ + __cpu_model.__cpu_is_amdfam10h_istanbul
+ + __cpu_model.__cpu_is_amdfam15h_bdver1
+ + __cpu_model.__cpu_is_amdfam15h_bdver2);
+
+ gcc_assert (one_type <= 1);
+ return 0;
+}
+
+/* A noinline function calling __get_cpuid. Having many calls to
+ cpuid in one function in 32-bit mode causes GCC to complain:
+ "can’t find a register in class ‘CLOBBERED_REGS’". This is
+ related to PR rtl-optimization 44174. */
+
+static int __attribute__ ((noinline))
+__get_cpuid_output (unsigned int __level,
+ unsigned int *__eax, unsigned int *__ebx,
+ unsigned int *__ecx, unsigned int *__edx)
+{
+ return __get_cpuid (__level, __eax, __ebx, __ecx, __edx);
+}
+
+
+/* A constructor function that is sets __cpu_model and __cpu_features with
+ the right values. This needs to run only once.
+ If another constructor needs to use these values, explicitly call this
+ function from the other constructor. Otherwise, the ordering of
+ constructors could make this constructor run later. */
+
+int __attribute__ ((constructor))
+__cpu_indicator_init (void)
+{
+ unsigned int eax, ebx, ecx, edx;
+
+ int max_level = 5;
+ unsigned int vendor;
+ unsigned int model, family, brand_id;
+ unsigned int extended_model, extended_family;
+ static int called = 0;
+
+ /* This function needs to run just once. */
+ if (called)
+ return 0;
+ else
+ called = 1;
+
+ /* Assume cpuid insn present. Run in level 0 to get vendor id. */
+ if (!__get_cpuid_output (0, &eax, &ebx, &ecx, &edx))
+ return -1;
+
+ vendor = ebx;
+ max_level = eax;
+
+ if (max_level < 1)
+ return -1;
+
+ if (!__get_cpuid_output (1, &eax, &ebx, &ecx, &edx))
+ return -1;
+
+ model = (eax >> 4) & 0x0f;
+ family = (eax >> 8) & 0x0f;
+ brand_id = ebx & 0xff;
+ extended_model = (eax >> 12) & 0xf0;
+ extended_family = (eax >> 20) & 0xff;
+
+ if (vendor == SIG_INTEL)
+ {
+ /* Adjust model and family for Intel CPUS. */
+ if (family == 0x0f)
+ {
+ family += extended_family;
+ model += extended_model;
+ }
+ else if (family == 0x06)
+ model += extended_model;
+
+ /* Get CPU type. */
+ __cpu_model.__cpu_is_intel = 1;
+ get_intel_cpu (family, model, brand_id);
+ }
+
+ if (vendor == SIG_AMD)
+ {
+ /* Adjust model and family for AMD CPUS. */
+ if (family == 0x0f)
+ {
+ family += extended_family;
+ model += (extended_model << 4);
+ }
+
+ /* Get CPU type. */
+ __cpu_model.__cpu_is_amd = 1;
+ get_amd_cpu (family, model);
+ }
+
+ /* Find available features. */
+ get_available_features (ecx, edx);
+
+ sanity_check ();
+
+ return 0;
+}
diff --git a/gcc-4.6/libgcc/config/i386/t-cpuinfo b/gcc-4.6/libgcc/config/i386/t-cpuinfo
new file mode 100644
index 000000000..dd271f9db
--- /dev/null
+++ b/gcc-4.6/libgcc/config/i386/t-cpuinfo
@@ -0,0 +1 @@
+LIB2ADD += $(srcdir)/config/i386/i386-cpuinfo.c
diff --git a/gcc-4.6/libgcc/config/libbid/ChangeLog b/gcc-4.6/libgcc/config/libbid/ChangeLog
index c41204289..5c1f7845e 100644
--- a/gcc-4.6/libgcc/config/libbid/ChangeLog
+++ b/gcc-4.6/libgcc/config/libbid/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/libgcc/generic-morestack.c b/gcc-4.6/libgcc/generic-morestack.c
index 7e29bbcf7..77344a925 100644
--- a/gcc-4.6/libgcc/generic-morestack.c
+++ b/gcc-4.6/libgcc/generic-morestack.c
@@ -459,8 +459,8 @@ __generic_morestack_set_initial_sp (void *sp, size_t len)
sigemptyset (&__morestack_initial_sp.mask);
sigfillset (&__morestack_fullmask);
-#ifdef __linux__
- /* On Linux, the first two real time signals are used by the NPTL
+#ifdef __GLIBC__
+ /* In glibc, the first two real time signals are used by the NPTL
threading library. By taking them out of the set of signals, we
avoiding copying the signal mask in pthread_sigmask. More
importantly, pthread_sigmask uses less stack space on x86_64. */
diff --git a/gcc-4.6/libgfortran/ChangeLog b/gcc-4.6/libgfortran/ChangeLog
index 4b865ad17..a3bfb5374 100644
--- a/gcc-4.6/libgfortran/ChangeLog
+++ b/gcc-4.6/libgfortran/ChangeLog
@@ -1,3 +1,164 @@
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure: Regenerate.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-10-19 Janne Blomqvist <jb@gcc.gnu.org>
+ Kai Tietz <ktietz@redhat.com>
+ Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50016
+ * io/unix.h (flush_sync): Add new libgfortran-internal prototype.
+ * io/unix.c (flush_sync): New function, which calls sflush and
+ on MinGW(-w64) also _commit.
+ (flush_all_units, flush_all_units_1): Replace sflush/_commit by
+ flush_sync.
+ * io/file_pos.c (st_flush): Replace sflush/_commit by flush_sync.
+ * io/intrinsics.c (flush_i4, flush_i8): Ditto.
+
+2011-10-18 Tobias Burnus <burnus@net-b.de>
+ Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR fortran/50016
+ * io/file_pos.c (st_flush): Call _commit on MinGW(-w64).
+ * io/intrinsics.c (flush_i4, flush_i8): Ditto.
+ * io/unix.c (flush_all_units_1, flush_all_units): Ditto.
+ (buf_flush): Remove _commit call.
+ * io/inquire.c (inquire_via_unit): Flush internal buffer
+ and call file_length instead of invoking stat via file_size.
+
+2011-09-11 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport fron trunk
+ PR fortran/49479
+ * generated/m4/ifunction.m4: Always call internal_malloc_size
+ even when there is a zero-sized return array.
+ * generated/generated/maxloc1_16_i16.c: Regenerated.
+ * generated/generated/maxloc1_16_i1.c: Regenerated.
+ * generated/generated/maxloc1_16_i2.c: Regenerated.
+ * generated/generated/maxloc1_16_i4.c: Regenerated.
+ * generated/generated/maxloc1_16_i8.c: Regenerated.
+ * generated/generated/maxloc1_16_r10.c: Regenerated.
+ * generated/generated/maxloc1_16_r16.c: Regenerated.
+ * generated/generated/maxloc1_16_r4.c: Regenerated.
+ * generated/generated/maxloc1_16_r8.c: Regenerated.
+ * generated/generated/maxloc1_4_i16.c: Regenerated.
+ * generated/generated/maxloc1_4_i1.c: Regenerated.
+ * generated/generated/maxloc1_4_i2.c: Regenerated.
+ * generated/generated/maxloc1_4_i4.c: Regenerated.
+ * generated/generated/maxloc1_4_i8.c: Regenerated.
+ * generated/generated/maxloc1_4_r10.c: Regenerated.
+ * generated/generated/maxloc1_4_r16.c: Regenerated.
+ * generated/generated/maxloc1_4_r4.c: Regenerated.
+ * generated/generated/maxloc1_4_r8.c: Regenerated.
+ * generated/generated/maxloc1_8_i16.c: Regenerated.
+ * generated/generated/maxloc1_8_i1.c: Regenerated.
+ * generated/generated/maxloc1_8_i2.c: Regenerated.
+ * generated/generated/maxloc1_8_i4.c: Regenerated.
+ * generated/generated/maxloc1_8_i8.c: Regenerated.
+ * generated/generated/maxloc1_8_r10.c: Regenerated.
+ * generated/generated/maxloc1_8_r16.c: Regenerated.
+ * generated/generated/maxloc1_8_r4.c: Regenerated.
+ * generated/generated/maxloc1_8_r8.c: Regenerated.
+ * generated/generated/maxval_i16.c: Regenerated.
+ * generated/generated/maxval_i1.c: Regenerated.
+ * generated/generated/maxval_i2.c: Regenerated.
+ * generated/generated/maxval_i4.c: Regenerated.
+ * generated/generated/maxval_i8.c: Regenerated.
+ * generated/generated/maxval_r10.c: Regenerated.
+ * generated/generated/maxval_r16.c: Regenerated.
+ * generated/generated/maxval_r4.c: Regenerated.
+ * generated/generated/maxval_r8.c: Regenerated.
+ * generated/generated/minloc1_16_i16.c: Regenerated.
+ * generated/generated/minloc1_16_i1.c: Regenerated.
+ * generated/generated/minloc1_16_i2.c: Regenerated.
+ * generated/generated/minloc1_16_i4.c: Regenerated.
+ * generated/generated/minloc1_16_i8.c: Regenerated.
+ * generated/generated/minloc1_16_r10.c: Regenerated.
+ * generated/generated/minloc1_16_r16.c: Regenerated.
+ * generated/generated/minloc1_16_r4.c: Regenerated.
+ * generated/generated/minloc1_16_r8.c: Regenerated.
+ * generated/generated/minloc1_4_i16.c: Regenerated.
+ * generated/generated/minloc1_4_i1.c: Regenerated.
+ * generated/generated/minloc1_4_i2.c: Regenerated.
+ * generated/generated/minloc1_4_i4.c: Regenerated.
+ * generated/generated/minloc1_4_i8.c: Regenerated.
+ * generated/generated/minloc1_4_r10.c: Regenerated.
+ * generated/generated/minloc1_4_r16.c: Regenerated.
+ * generated/generated/minloc1_4_r4.c: Regenerated.
+ * generated/generated/minloc1_4_r8.c: Regenerated.
+ * generated/generated/minloc1_8_i16.c: Regenerated.
+ * generated/generated/minloc1_8_i1.c: Regenerated.
+ * generated/generated/minloc1_8_i2.c: Regenerated.
+ * generated/generated/minloc1_8_i4.c: Regenerated.
+ * generated/generated/minloc1_8_i8.c: Regenerated.
+ * generated/generated/minloc1_8_r10.c: Regenerated.
+ * generated/generated/minloc1_8_r16.c: Regenerated.
+ * generated/generated/minloc1_8_r4.c: Regenerated.
+ * generated/generated/minloc1_8_r8.c: Regenerated.
+ * generated/generated/minval_i16.c: Regenerated.
+ * generated/generated/minval_i1.c: Regenerated.
+ * generated/generated/minval_i2.c: Regenerated.
+ * generated/generated/minval_i4.c: Regenerated.
+ * generated/generated/minval_i8.c: Regenerated.
+ * generated/generated/minval_r10.c: Regenerated.
+ * generated/generated/minval_r16.c: Regenerated.
+ * generated/generated/minval_r4.c: Regenerated.
+ * generated/generated/minval_r8.c: Regenerated.
+ * generated/generated/product_c10.c: Regenerated.
+ * generated/generated/product_c16.c: Regenerated.
+ * generated/generated/product_c4.c: Regenerated.
+ * generated/generated/product_c8.c: Regenerated.
+ * generated/generated/product_i16.c: Regenerated.
+ * generated/generated/product_i1.c: Regenerated.
+ * generated/generated/product_i2.c: Regenerated.
+ * generated/generated/product_i4.c: Regenerated.
+ * generated/generated/product_i8.c: Regenerated.
+ * generated/generated/product_r10.c: Regenerated.
+ * generated/generated/product_r16.c: Regenerated.
+ * generated/generated/product_r4.c: Regenerated.
+ * generated/generated/product_r8.c: Regenerated.
+ * generated/generated/sum_c10.c: Regenerated.
+ * generated/generated/sum_c16.c: Regenerated.
+ * generated/generated/sum_c4.c: Regenerated.
+ * generated/generated/sum_c8.c: Regenerated.
+ * generated/generated/sum_i16.c: Regenerated.
+ * generated/generated/sum_i1.c: Regenerated.
+ * generated/generated/sum_i2.c: Regenerated.
+ * generated/generated/sum_i4.c: Regenerated.
+ * generated/generated/sum_i8.c: Regenerated.
+ * generated/generated/sum_r10.c: Regenerated.
+ * generated/generated/sum_r16.c: Regenerated.
+ * generated/generated/sum_r4.c: Regenerated.
+ * generated/generated/sum_r8.c: Regenerated.
+
+2011-08-29 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ Backport from trunk
+ PR libfortran/50192
+ * intrinsics/string_intrinsics.c (memcmp_char4): New function.
+ * intrinsics/string_intrinsics_inc.c: New macro MEMCMP, either
+ set to memcmp or memcmp_char4.
+ (compare_string): Use MEMCMP, with correct size for it.
+ * libgfortran.h: Add prototype for memcmp_char4.
+
+2011-08-19 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/50109
+ * io/list_read.c (eat_separator): Fix skipping over "!" lines.
+
+2011-07-27 Tobias Burnus <burnus@net-b.de>
+
+ Backport from mainline
+ 2011-07-23 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/49791
+ * io/list_read.c (nml_parse_qualifier): Remove check to
+ enabled extended read for another case.
+
2011-07-13 Janne Blomqvist <jb@gcc.gnu.org>
Backport from trunk:
@@ -23,9 +184,9 @@
2011-07-03 Janne Blomqvist <jb@gcc.gnu.org>
Backport from mainline:
- PR libfortran/49296
- * io/list_read.c (read_character): Accept EOF as a separator when
- reading string.
+ PR libfortran/49296
+ * io/list_read.c (read_character): Accept EOF as a separator when
+ reading string.
2011-06-27 Release Manager
diff --git a/gcc-4.6/libgfortran/configure b/gcc-4.6/libgfortran/configure
index 7e03d9158..016ecfea4 100755
--- a/gcc-4.6/libgfortran/configure
+++ b/gcc-4.6/libgfortran/configure
@@ -10341,7 +10341,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -11257,7 +11257,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -11275,7 +11275,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
@@ -14177,7 +14177,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct_FC=yes
hardcode_minus_L_FC=yes
@@ -14885,7 +14885,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -14903,7 +14903,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_16_i1.c b/gcc-4.6/libgfortran/generated/maxloc1_16_i1.c
index 920ea836b..3e4246311 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_16_i1.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_16_i1.c
@@ -101,6 +101,7 @@ maxloc1_16_i1 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_16_i1 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_16_i16.c b/gcc-4.6/libgfortran/generated/maxloc1_16_i16.c
index 0da1cc42f..d6819aa71 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_16_i16.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_16_i16.c
@@ -101,6 +101,7 @@ maxloc1_16_i16 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_16_i16 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_16_i2.c b/gcc-4.6/libgfortran/generated/maxloc1_16_i2.c
index 08d2dc19a..691d03486 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_16_i2.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_16_i2.c
@@ -101,6 +101,7 @@ maxloc1_16_i2 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_16_i2 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_16_i4.c b/gcc-4.6/libgfortran/generated/maxloc1_16_i4.c
index 4b8a19ef2..1e5b87cab 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_16_i4.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_16_i4.c
@@ -101,6 +101,7 @@ maxloc1_16_i4 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_16_i4 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_16_i8.c b/gcc-4.6/libgfortran/generated/maxloc1_16_i8.c
index 292dad316..c6a73d833 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_16_i8.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_16_i8.c
@@ -101,6 +101,7 @@ maxloc1_16_i8 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_16_i8 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_16_r10.c b/gcc-4.6/libgfortran/generated/maxloc1_16_r10.c
index 090e9a9d4..d954000c8 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_16_r10.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_16_r10.c
@@ -101,6 +101,7 @@ maxloc1_16_r10 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_16_r10 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_16_r16.c b/gcc-4.6/libgfortran/generated/maxloc1_16_r16.c
index a8fe92c85..4ecb78418 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_16_r16.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_16_r16.c
@@ -101,6 +101,7 @@ maxloc1_16_r16 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_16_r16 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_16_r4.c b/gcc-4.6/libgfortran/generated/maxloc1_16_r4.c
index 5c80034a1..e5cd29156 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_16_r4.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_16_r4.c
@@ -101,6 +101,7 @@ maxloc1_16_r4 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_16_r4 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_16_r8.c b/gcc-4.6/libgfortran/generated/maxloc1_16_r8.c
index 3f9200ecd..2d209d786 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_16_r8.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_16_r8.c
@@ -101,6 +101,7 @@ maxloc1_16_r8 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_16_r8 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_4_i1.c b/gcc-4.6/libgfortran/generated/maxloc1_4_i1.c
index 90f529ac8..efd695807 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_4_i1.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_4_i1.c
@@ -101,6 +101,7 @@ maxloc1_4_i1 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_4_i1 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_4_i16.c b/gcc-4.6/libgfortran/generated/maxloc1_4_i16.c
index 1b4f33775..71850fcf8 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_4_i16.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_4_i16.c
@@ -101,6 +101,7 @@ maxloc1_4_i16 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_4_i16 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_4_i2.c b/gcc-4.6/libgfortran/generated/maxloc1_4_i2.c
index 3898b6f38..d825039e8 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_4_i2.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_4_i2.c
@@ -101,6 +101,7 @@ maxloc1_4_i2 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_4_i2 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_4_i4.c b/gcc-4.6/libgfortran/generated/maxloc1_4_i4.c
index 5fcb75452..f70b5aa10 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_4_i4.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_4_i4.c
@@ -101,6 +101,7 @@ maxloc1_4_i4 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_4_i4 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_4_i8.c b/gcc-4.6/libgfortran/generated/maxloc1_4_i8.c
index b3b1caa11..cda4a99ca 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_4_i8.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_4_i8.c
@@ -101,6 +101,7 @@ maxloc1_4_i8 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_4_i8 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_4_r10.c b/gcc-4.6/libgfortran/generated/maxloc1_4_r10.c
index 7e94e7b45..7901a4b15 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_4_r10.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_4_r10.c
@@ -101,6 +101,7 @@ maxloc1_4_r10 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_4_r10 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_4_r16.c b/gcc-4.6/libgfortran/generated/maxloc1_4_r16.c
index 2793b6abc..f06d7b2bb 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_4_r16.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_4_r16.c
@@ -101,6 +101,7 @@ maxloc1_4_r16 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_4_r16 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_4_r4.c b/gcc-4.6/libgfortran/generated/maxloc1_4_r4.c
index 5292711e5..e6837aa61 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_4_r4.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_4_r4.c
@@ -101,6 +101,7 @@ maxloc1_4_r4 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_4_r4 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_4_r8.c b/gcc-4.6/libgfortran/generated/maxloc1_4_r8.c
index 312e5d0b8..26c10c7b9 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_4_r8.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_4_r8.c
@@ -101,6 +101,7 @@ maxloc1_4_r8 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_4_r8 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_8_i1.c b/gcc-4.6/libgfortran/generated/maxloc1_8_i1.c
index 6e63c7eb6..c9dc61020 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_8_i1.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_8_i1.c
@@ -101,6 +101,7 @@ maxloc1_8_i1 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_8_i1 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_8_i16.c b/gcc-4.6/libgfortran/generated/maxloc1_8_i16.c
index ea1fa9367..7cd62ac3a 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_8_i16.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_8_i16.c
@@ -101,6 +101,7 @@ maxloc1_8_i16 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_8_i16 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_8_i2.c b/gcc-4.6/libgfortran/generated/maxloc1_8_i2.c
index 21362a9d4..fd0cc2172 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_8_i2.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_8_i2.c
@@ -101,6 +101,7 @@ maxloc1_8_i2 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_8_i2 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_8_i4.c b/gcc-4.6/libgfortran/generated/maxloc1_8_i4.c
index e0245e3f9..97cd54bb5 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_8_i4.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_8_i4.c
@@ -101,6 +101,7 @@ maxloc1_8_i4 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_8_i4 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_8_i8.c b/gcc-4.6/libgfortran/generated/maxloc1_8_i8.c
index c5312c0a1..f9c455cb0 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_8_i8.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_8_i8.c
@@ -101,6 +101,7 @@ maxloc1_8_i8 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_8_i8 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_8_r10.c b/gcc-4.6/libgfortran/generated/maxloc1_8_r10.c
index 6459ecffc..ab1173c6c 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_8_r10.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_8_r10.c
@@ -101,6 +101,7 @@ maxloc1_8_r10 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_8_r10 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_8_r16.c b/gcc-4.6/libgfortran/generated/maxloc1_8_r16.c
index 62b9ddbda..9a02e1273 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_8_r16.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_8_r16.c
@@ -101,6 +101,7 @@ maxloc1_8_r16 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_8_r16 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_8_r4.c b/gcc-4.6/libgfortran/generated/maxloc1_8_r4.c
index 97ef902d9..584bdb81f 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_8_r4.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_8_r4.c
@@ -101,6 +101,7 @@ maxloc1_8_r4 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_8_r4 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxloc1_8_r8.c b/gcc-4.6/libgfortran/generated/maxloc1_8_r8.c
index e8cb0678f..c6f3efd70 100644
--- a/gcc-4.6/libgfortran/generated/maxloc1_8_r8.c
+++ b/gcc-4.6/libgfortran/generated/maxloc1_8_r8.c
@@ -101,6 +101,7 @@ maxloc1_8_r8 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ maxloc1_8_r8 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxval_i1.c b/gcc-4.6/libgfortran/generated/maxval_i1.c
index ca6222bd6..5b676827d 100644
--- a/gcc-4.6/libgfortran/generated/maxval_i1.c
+++ b/gcc-4.6/libgfortran/generated/maxval_i1.c
@@ -100,6 +100,7 @@ maxval_i1 (gfc_array_i1 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_1) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ maxval_i1 (gfc_array_i1 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxval_i16.c b/gcc-4.6/libgfortran/generated/maxval_i16.c
index 56580b64d..148319d62 100644
--- a/gcc-4.6/libgfortran/generated/maxval_i16.c
+++ b/gcc-4.6/libgfortran/generated/maxval_i16.c
@@ -100,6 +100,7 @@ maxval_i16 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ maxval_i16 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxval_i2.c b/gcc-4.6/libgfortran/generated/maxval_i2.c
index 7d39b2f9b..f87f3edf3 100644
--- a/gcc-4.6/libgfortran/generated/maxval_i2.c
+++ b/gcc-4.6/libgfortran/generated/maxval_i2.c
@@ -100,6 +100,7 @@ maxval_i2 (gfc_array_i2 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_2) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ maxval_i2 (gfc_array_i2 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxval_i4.c b/gcc-4.6/libgfortran/generated/maxval_i4.c
index 0acb6b3e3..51f2511b4 100644
--- a/gcc-4.6/libgfortran/generated/maxval_i4.c
+++ b/gcc-4.6/libgfortran/generated/maxval_i4.c
@@ -100,6 +100,7 @@ maxval_i4 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ maxval_i4 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxval_i8.c b/gcc-4.6/libgfortran/generated/maxval_i8.c
index 803a79f38..74aca03cf 100644
--- a/gcc-4.6/libgfortran/generated/maxval_i8.c
+++ b/gcc-4.6/libgfortran/generated/maxval_i8.c
@@ -100,6 +100,7 @@ maxval_i8 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ maxval_i8 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxval_r10.c b/gcc-4.6/libgfortran/generated/maxval_r10.c
index 6eb3ea76e..3eaaa4c47 100644
--- a/gcc-4.6/libgfortran/generated/maxval_r10.c
+++ b/gcc-4.6/libgfortran/generated/maxval_r10.c
@@ -100,6 +100,7 @@ maxval_r10 (gfc_array_r10 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_10) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ maxval_r10 (gfc_array_r10 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxval_r16.c b/gcc-4.6/libgfortran/generated/maxval_r16.c
index 32387f4e3..bc4cf27bb 100644
--- a/gcc-4.6/libgfortran/generated/maxval_r16.c
+++ b/gcc-4.6/libgfortran/generated/maxval_r16.c
@@ -100,6 +100,7 @@ maxval_r16 (gfc_array_r16 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ maxval_r16 (gfc_array_r16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxval_r4.c b/gcc-4.6/libgfortran/generated/maxval_r4.c
index c4fe4df36..d7e25ee7a 100644
--- a/gcc-4.6/libgfortran/generated/maxval_r4.c
+++ b/gcc-4.6/libgfortran/generated/maxval_r4.c
@@ -100,6 +100,7 @@ maxval_r4 (gfc_array_r4 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ maxval_r4 (gfc_array_r4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/maxval_r8.c b/gcc-4.6/libgfortran/generated/maxval_r8.c
index bffc2b768..21c08e9ef 100644
--- a/gcc-4.6/libgfortran/generated/maxval_r8.c
+++ b/gcc-4.6/libgfortran/generated/maxval_r8.c
@@ -100,6 +100,7 @@ maxval_r8 (gfc_array_r8 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ maxval_r8 (gfc_array_r8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_16_i1.c b/gcc-4.6/libgfortran/generated/minloc1_16_i1.c
index 2cdfd0f58..8b4b53f81 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_16_i1.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_16_i1.c
@@ -101,6 +101,7 @@ minloc1_16_i1 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_16_i1 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_16_i16.c b/gcc-4.6/libgfortran/generated/minloc1_16_i16.c
index 9e4f82a5f..3a18e8c36 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_16_i16.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_16_i16.c
@@ -101,6 +101,7 @@ minloc1_16_i16 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_16_i16 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_16_i2.c b/gcc-4.6/libgfortran/generated/minloc1_16_i2.c
index 5d55ed01f..bc13bee9e 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_16_i2.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_16_i2.c
@@ -101,6 +101,7 @@ minloc1_16_i2 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_16_i2 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_16_i4.c b/gcc-4.6/libgfortran/generated/minloc1_16_i4.c
index 3ee75aecd..84d131a7a 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_16_i4.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_16_i4.c
@@ -101,6 +101,7 @@ minloc1_16_i4 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_16_i4 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_16_i8.c b/gcc-4.6/libgfortran/generated/minloc1_16_i8.c
index 847aa5184..1f3e0549d 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_16_i8.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_16_i8.c
@@ -101,6 +101,7 @@ minloc1_16_i8 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_16_i8 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_16_r10.c b/gcc-4.6/libgfortran/generated/minloc1_16_r10.c
index cf6f7cf51..6bda151ae 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_16_r10.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_16_r10.c
@@ -101,6 +101,7 @@ minloc1_16_r10 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_16_r10 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_16_r16.c b/gcc-4.6/libgfortran/generated/minloc1_16_r16.c
index ebe6c6dd4..c31cf4bcb 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_16_r16.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_16_r16.c
@@ -101,6 +101,7 @@ minloc1_16_r16 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_16_r16 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_16_r4.c b/gcc-4.6/libgfortran/generated/minloc1_16_r4.c
index 7b335a935..52ec2b078 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_16_r4.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_16_r4.c
@@ -101,6 +101,7 @@ minloc1_16_r4 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_16_r4 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_16_r8.c b/gcc-4.6/libgfortran/generated/minloc1_16_r8.c
index a410a2783..a53ed3452 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_16_r8.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_16_r8.c
@@ -101,6 +101,7 @@ minloc1_16_r8 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_16_r8 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_4_i1.c b/gcc-4.6/libgfortran/generated/minloc1_4_i1.c
index 21448ac18..e8af36127 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_4_i1.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_4_i1.c
@@ -101,6 +101,7 @@ minloc1_4_i1 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_4_i1 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_4_i16.c b/gcc-4.6/libgfortran/generated/minloc1_4_i16.c
index 7851ba8a5..8d3da2059 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_4_i16.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_4_i16.c
@@ -101,6 +101,7 @@ minloc1_4_i16 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_4_i16 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_4_i2.c b/gcc-4.6/libgfortran/generated/minloc1_4_i2.c
index 265472dbd..e7f24491f 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_4_i2.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_4_i2.c
@@ -101,6 +101,7 @@ minloc1_4_i2 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_4_i2 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_4_i4.c b/gcc-4.6/libgfortran/generated/minloc1_4_i4.c
index 794f25e7f..94d45c92d 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_4_i4.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_4_i4.c
@@ -101,6 +101,7 @@ minloc1_4_i4 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_4_i4 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_4_i8.c b/gcc-4.6/libgfortran/generated/minloc1_4_i8.c
index 05e4a6540..fa07bcb87 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_4_i8.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_4_i8.c
@@ -101,6 +101,7 @@ minloc1_4_i8 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_4_i8 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_4_r10.c b/gcc-4.6/libgfortran/generated/minloc1_4_r10.c
index 8f5018f01..5cb23a6b6 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_4_r10.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_4_r10.c
@@ -101,6 +101,7 @@ minloc1_4_r10 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_4_r10 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_4_r16.c b/gcc-4.6/libgfortran/generated/minloc1_4_r16.c
index 42f428a49..40854a12b 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_4_r16.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_4_r16.c
@@ -101,6 +101,7 @@ minloc1_4_r16 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_4_r16 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_4_r4.c b/gcc-4.6/libgfortran/generated/minloc1_4_r4.c
index d05ac79fb..4231d180d 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_4_r4.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_4_r4.c
@@ -101,6 +101,7 @@ minloc1_4_r4 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_4_r4 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_4_r8.c b/gcc-4.6/libgfortran/generated/minloc1_4_r8.c
index 372e592da..8e5e5ddc4 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_4_r8.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_4_r8.c
@@ -101,6 +101,7 @@ minloc1_4_r8 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_4_r8 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_8_i1.c b/gcc-4.6/libgfortran/generated/minloc1_8_i1.c
index c71191f17..9a54335c8 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_8_i1.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_8_i1.c
@@ -101,6 +101,7 @@ minloc1_8_i1 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_8_i1 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_8_i16.c b/gcc-4.6/libgfortran/generated/minloc1_8_i16.c
index 1939ab358..f0b477ebd 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_8_i16.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_8_i16.c
@@ -101,6 +101,7 @@ minloc1_8_i16 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_8_i16 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_8_i2.c b/gcc-4.6/libgfortran/generated/minloc1_8_i2.c
index d869537e6..9d3d14ee5 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_8_i2.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_8_i2.c
@@ -101,6 +101,7 @@ minloc1_8_i2 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_8_i2 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_8_i4.c b/gcc-4.6/libgfortran/generated/minloc1_8_i4.c
index 2ee384f24..edac05ccd 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_8_i4.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_8_i4.c
@@ -101,6 +101,7 @@ minloc1_8_i4 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_8_i4 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_8_i8.c b/gcc-4.6/libgfortran/generated/minloc1_8_i8.c
index ae164cf8e..3c0f44127 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_8_i8.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_8_i8.c
@@ -101,6 +101,7 @@ minloc1_8_i8 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_8_i8 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_8_r10.c b/gcc-4.6/libgfortran/generated/minloc1_8_r10.c
index 383cb884b..a9239d28c 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_8_r10.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_8_r10.c
@@ -101,6 +101,7 @@ minloc1_8_r10 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_8_r10 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_8_r16.c b/gcc-4.6/libgfortran/generated/minloc1_8_r16.c
index 3f4d4702c..953ada7ef 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_8_r16.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_8_r16.c
@@ -101,6 +101,7 @@ minloc1_8_r16 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_8_r16 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_8_r4.c b/gcc-4.6/libgfortran/generated/minloc1_8_r4.c
index f72cbb2ca..388200016 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_8_r4.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_8_r4.c
@@ -101,6 +101,7 @@ minloc1_8_r4 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_8_r4 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minloc1_8_r8.c b/gcc-4.6/libgfortran/generated/minloc1_8_r8.c
index 1ed4486c6..c8d181277 100644
--- a/gcc-4.6/libgfortran/generated/minloc1_8_r8.c
+++ b/gcc-4.6/libgfortran/generated/minloc1_8_r8.c
@@ -101,6 +101,7 @@ minloc1_8_r8 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -108,8 +109,6 @@ minloc1_8_r8 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minval_i1.c b/gcc-4.6/libgfortran/generated/minval_i1.c
index 9b15d0f3f..d9ee1d754 100644
--- a/gcc-4.6/libgfortran/generated/minval_i1.c
+++ b/gcc-4.6/libgfortran/generated/minval_i1.c
@@ -100,6 +100,7 @@ minval_i1 (gfc_array_i1 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_1) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ minval_i1 (gfc_array_i1 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minval_i16.c b/gcc-4.6/libgfortran/generated/minval_i16.c
index 1aea30142..839454756 100644
--- a/gcc-4.6/libgfortran/generated/minval_i16.c
+++ b/gcc-4.6/libgfortran/generated/minval_i16.c
@@ -100,6 +100,7 @@ minval_i16 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ minval_i16 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minval_i2.c b/gcc-4.6/libgfortran/generated/minval_i2.c
index 3de9f023b..9cffe844d 100644
--- a/gcc-4.6/libgfortran/generated/minval_i2.c
+++ b/gcc-4.6/libgfortran/generated/minval_i2.c
@@ -100,6 +100,7 @@ minval_i2 (gfc_array_i2 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_2) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ minval_i2 (gfc_array_i2 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minval_i4.c b/gcc-4.6/libgfortran/generated/minval_i4.c
index 3023bc214..993116a83 100644
--- a/gcc-4.6/libgfortran/generated/minval_i4.c
+++ b/gcc-4.6/libgfortran/generated/minval_i4.c
@@ -100,6 +100,7 @@ minval_i4 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ minval_i4 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minval_i8.c b/gcc-4.6/libgfortran/generated/minval_i8.c
index 32fb133ce..3a52b4b7e 100644
--- a/gcc-4.6/libgfortran/generated/minval_i8.c
+++ b/gcc-4.6/libgfortran/generated/minval_i8.c
@@ -100,6 +100,7 @@ minval_i8 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ minval_i8 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minval_r10.c b/gcc-4.6/libgfortran/generated/minval_r10.c
index 033288d94..b490b3bee 100644
--- a/gcc-4.6/libgfortran/generated/minval_r10.c
+++ b/gcc-4.6/libgfortran/generated/minval_r10.c
@@ -100,6 +100,7 @@ minval_r10 (gfc_array_r10 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_10) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ minval_r10 (gfc_array_r10 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minval_r16.c b/gcc-4.6/libgfortran/generated/minval_r16.c
index 35d2bac11..701191f40 100644
--- a/gcc-4.6/libgfortran/generated/minval_r16.c
+++ b/gcc-4.6/libgfortran/generated/minval_r16.c
@@ -100,6 +100,7 @@ minval_r16 (gfc_array_r16 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ minval_r16 (gfc_array_r16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minval_r4.c b/gcc-4.6/libgfortran/generated/minval_r4.c
index 61502b0c2..e69376590 100644
--- a/gcc-4.6/libgfortran/generated/minval_r4.c
+++ b/gcc-4.6/libgfortran/generated/minval_r4.c
@@ -100,6 +100,7 @@ minval_r4 (gfc_array_r4 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ minval_r4 (gfc_array_r4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/minval_r8.c b/gcc-4.6/libgfortran/generated/minval_r8.c
index 8884d93b9..611ee5796 100644
--- a/gcc-4.6/libgfortran/generated/minval_r8.c
+++ b/gcc-4.6/libgfortran/generated/minval_r8.c
@@ -100,6 +100,7 @@ minval_r8 (gfc_array_r8 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ minval_r8 (gfc_array_r8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/product_c10.c b/gcc-4.6/libgfortran/generated/product_c10.c
index 4aa057de4..140aa305f 100644
--- a/gcc-4.6/libgfortran/generated/product_c10.c
+++ b/gcc-4.6/libgfortran/generated/product_c10.c
@@ -100,6 +100,7 @@ product_c10 (gfc_array_c10 * const restrict retarray,
alloc_size = sizeof (GFC_COMPLEX_10) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ product_c10 (gfc_array_c10 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/product_c16.c b/gcc-4.6/libgfortran/generated/product_c16.c
index aa69fa86f..d59510248 100644
--- a/gcc-4.6/libgfortran/generated/product_c16.c
+++ b/gcc-4.6/libgfortran/generated/product_c16.c
@@ -100,6 +100,7 @@ product_c16 (gfc_array_c16 * const restrict retarray,
alloc_size = sizeof (GFC_COMPLEX_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ product_c16 (gfc_array_c16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/product_c4.c b/gcc-4.6/libgfortran/generated/product_c4.c
index 145f41f33..34c1bde26 100644
--- a/gcc-4.6/libgfortran/generated/product_c4.c
+++ b/gcc-4.6/libgfortran/generated/product_c4.c
@@ -100,6 +100,7 @@ product_c4 (gfc_array_c4 * const restrict retarray,
alloc_size = sizeof (GFC_COMPLEX_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ product_c4 (gfc_array_c4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/product_c8.c b/gcc-4.6/libgfortran/generated/product_c8.c
index 7c16b6425..6e3487489 100644
--- a/gcc-4.6/libgfortran/generated/product_c8.c
+++ b/gcc-4.6/libgfortran/generated/product_c8.c
@@ -100,6 +100,7 @@ product_c8 (gfc_array_c8 * const restrict retarray,
alloc_size = sizeof (GFC_COMPLEX_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ product_c8 (gfc_array_c8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/product_i1.c b/gcc-4.6/libgfortran/generated/product_i1.c
index e087a0621..2e0428718 100644
--- a/gcc-4.6/libgfortran/generated/product_i1.c
+++ b/gcc-4.6/libgfortran/generated/product_i1.c
@@ -100,6 +100,7 @@ product_i1 (gfc_array_i1 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_1) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ product_i1 (gfc_array_i1 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/product_i16.c b/gcc-4.6/libgfortran/generated/product_i16.c
index 9d224f39f..e487ddfed 100644
--- a/gcc-4.6/libgfortran/generated/product_i16.c
+++ b/gcc-4.6/libgfortran/generated/product_i16.c
@@ -100,6 +100,7 @@ product_i16 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ product_i16 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/product_i2.c b/gcc-4.6/libgfortran/generated/product_i2.c
index f025729fe..b4b0a4ce7 100644
--- a/gcc-4.6/libgfortran/generated/product_i2.c
+++ b/gcc-4.6/libgfortran/generated/product_i2.c
@@ -100,6 +100,7 @@ product_i2 (gfc_array_i2 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_2) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ product_i2 (gfc_array_i2 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/product_i4.c b/gcc-4.6/libgfortran/generated/product_i4.c
index 3452923b0..a0164a161 100644
--- a/gcc-4.6/libgfortran/generated/product_i4.c
+++ b/gcc-4.6/libgfortran/generated/product_i4.c
@@ -100,6 +100,7 @@ product_i4 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ product_i4 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/product_i8.c b/gcc-4.6/libgfortran/generated/product_i8.c
index 44b0163ca..64c648774 100644
--- a/gcc-4.6/libgfortran/generated/product_i8.c
+++ b/gcc-4.6/libgfortran/generated/product_i8.c
@@ -100,6 +100,7 @@ product_i8 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ product_i8 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/product_r10.c b/gcc-4.6/libgfortran/generated/product_r10.c
index b93929d95..71a70da96 100644
--- a/gcc-4.6/libgfortran/generated/product_r10.c
+++ b/gcc-4.6/libgfortran/generated/product_r10.c
@@ -100,6 +100,7 @@ product_r10 (gfc_array_r10 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_10) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ product_r10 (gfc_array_r10 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/product_r16.c b/gcc-4.6/libgfortran/generated/product_r16.c
index 6348cc50e..0028ba1f8 100644
--- a/gcc-4.6/libgfortran/generated/product_r16.c
+++ b/gcc-4.6/libgfortran/generated/product_r16.c
@@ -100,6 +100,7 @@ product_r16 (gfc_array_r16 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ product_r16 (gfc_array_r16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/product_r4.c b/gcc-4.6/libgfortran/generated/product_r4.c
index a1c0b521b..492980e67 100644
--- a/gcc-4.6/libgfortran/generated/product_r4.c
+++ b/gcc-4.6/libgfortran/generated/product_r4.c
@@ -100,6 +100,7 @@ product_r4 (gfc_array_r4 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ product_r4 (gfc_array_r4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/product_r8.c b/gcc-4.6/libgfortran/generated/product_r8.c
index b56fcfb23..cf05af1fa 100644
--- a/gcc-4.6/libgfortran/generated/product_r8.c
+++ b/gcc-4.6/libgfortran/generated/product_r8.c
@@ -100,6 +100,7 @@ product_r8 (gfc_array_r8 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ product_r8 (gfc_array_r8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/sum_c10.c b/gcc-4.6/libgfortran/generated/sum_c10.c
index ae654dc9a..b982bfea0 100644
--- a/gcc-4.6/libgfortran/generated/sum_c10.c
+++ b/gcc-4.6/libgfortran/generated/sum_c10.c
@@ -100,6 +100,7 @@ sum_c10 (gfc_array_c10 * const restrict retarray,
alloc_size = sizeof (GFC_COMPLEX_10) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ sum_c10 (gfc_array_c10 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/sum_c16.c b/gcc-4.6/libgfortran/generated/sum_c16.c
index 7829b5594..0bf2b69d7 100644
--- a/gcc-4.6/libgfortran/generated/sum_c16.c
+++ b/gcc-4.6/libgfortran/generated/sum_c16.c
@@ -100,6 +100,7 @@ sum_c16 (gfc_array_c16 * const restrict retarray,
alloc_size = sizeof (GFC_COMPLEX_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ sum_c16 (gfc_array_c16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/sum_c4.c b/gcc-4.6/libgfortran/generated/sum_c4.c
index 76f67afab..a34e63cdd 100644
--- a/gcc-4.6/libgfortran/generated/sum_c4.c
+++ b/gcc-4.6/libgfortran/generated/sum_c4.c
@@ -100,6 +100,7 @@ sum_c4 (gfc_array_c4 * const restrict retarray,
alloc_size = sizeof (GFC_COMPLEX_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ sum_c4 (gfc_array_c4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/sum_c8.c b/gcc-4.6/libgfortran/generated/sum_c8.c
index 4673357e6..42dea7b28 100644
--- a/gcc-4.6/libgfortran/generated/sum_c8.c
+++ b/gcc-4.6/libgfortran/generated/sum_c8.c
@@ -100,6 +100,7 @@ sum_c8 (gfc_array_c8 * const restrict retarray,
alloc_size = sizeof (GFC_COMPLEX_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ sum_c8 (gfc_array_c8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/sum_i1.c b/gcc-4.6/libgfortran/generated/sum_i1.c
index e661f5e87..4eb6d6420 100644
--- a/gcc-4.6/libgfortran/generated/sum_i1.c
+++ b/gcc-4.6/libgfortran/generated/sum_i1.c
@@ -100,6 +100,7 @@ sum_i1 (gfc_array_i1 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_1) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ sum_i1 (gfc_array_i1 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/sum_i16.c b/gcc-4.6/libgfortran/generated/sum_i16.c
index cff59c01c..8e2c7b3ae 100644
--- a/gcc-4.6/libgfortran/generated/sum_i16.c
+++ b/gcc-4.6/libgfortran/generated/sum_i16.c
@@ -100,6 +100,7 @@ sum_i16 (gfc_array_i16 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ sum_i16 (gfc_array_i16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/sum_i2.c b/gcc-4.6/libgfortran/generated/sum_i2.c
index 1cf463e36..12ef64d35 100644
--- a/gcc-4.6/libgfortran/generated/sum_i2.c
+++ b/gcc-4.6/libgfortran/generated/sum_i2.c
@@ -100,6 +100,7 @@ sum_i2 (gfc_array_i2 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_2) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ sum_i2 (gfc_array_i2 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/sum_i4.c b/gcc-4.6/libgfortran/generated/sum_i4.c
index 4c86b5240..645ef436b 100644
--- a/gcc-4.6/libgfortran/generated/sum_i4.c
+++ b/gcc-4.6/libgfortran/generated/sum_i4.c
@@ -100,6 +100,7 @@ sum_i4 (gfc_array_i4 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ sum_i4 (gfc_array_i4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/sum_i8.c b/gcc-4.6/libgfortran/generated/sum_i8.c
index 4b360242e..adb29b51c 100644
--- a/gcc-4.6/libgfortran/generated/sum_i8.c
+++ b/gcc-4.6/libgfortran/generated/sum_i8.c
@@ -100,6 +100,7 @@ sum_i8 (gfc_array_i8 * const restrict retarray,
alloc_size = sizeof (GFC_INTEGER_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ sum_i8 (gfc_array_i8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/sum_r10.c b/gcc-4.6/libgfortran/generated/sum_r10.c
index 7df3ef9a5..9f588a5da 100644
--- a/gcc-4.6/libgfortran/generated/sum_r10.c
+++ b/gcc-4.6/libgfortran/generated/sum_r10.c
@@ -100,6 +100,7 @@ sum_r10 (gfc_array_r10 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_10) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ sum_r10 (gfc_array_r10 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/sum_r16.c b/gcc-4.6/libgfortran/generated/sum_r16.c
index ce0183b6d..292e66f71 100644
--- a/gcc-4.6/libgfortran/generated/sum_r16.c
+++ b/gcc-4.6/libgfortran/generated/sum_r16.c
@@ -100,6 +100,7 @@ sum_r16 (gfc_array_r16 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_16) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ sum_r16 (gfc_array_r16 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/sum_r4.c b/gcc-4.6/libgfortran/generated/sum_r4.c
index ab9335f9b..8fd563fc9 100644
--- a/gcc-4.6/libgfortran/generated/sum_r4.c
+++ b/gcc-4.6/libgfortran/generated/sum_r4.c
@@ -100,6 +100,7 @@ sum_r4 (gfc_array_r4 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_4) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ sum_r4 (gfc_array_r4 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/generated/sum_r8.c b/gcc-4.6/libgfortran/generated/sum_r8.c
index d10a86ebd..e58398060 100644
--- a/gcc-4.6/libgfortran/generated/sum_r8.c
+++ b/gcc-4.6/libgfortran/generated/sum_r8.c
@@ -100,6 +100,7 @@ sum_r8 (gfc_array_r8 * const restrict retarray,
alloc_size = sizeof (GFC_REAL_8) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -107,8 +108,6 @@ sum_r8 (gfc_array_r8 * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgfortran/intrinsics/string_intrinsics.c b/gcc-4.6/libgfortran/intrinsics/string_intrinsics.c
index e2e14e0d0..a1d3b31ab 100644
--- a/gcc-4.6/libgfortran/intrinsics/string_intrinsics.c
+++ b/gcc-4.6/libgfortran/intrinsics/string_intrinsics.c
@@ -51,6 +51,23 @@ memset_char4 (gfc_char4_t *b, gfc_char4_t c, size_t len)
return b;
}
+/* Compare wide character types, which are handled internally as
+ unsigned 4-byte integers. */
+int
+memcmp_char4 (const void *a, const void *b, size_t len)
+{
+ const GFC_UINTEGER_4 *pa = a;
+ const GFC_UINTEGER_4 *pb = b;
+ while (len-- > 0)
+ {
+ if (*pa != *pb)
+ return *pa < *pb ? -1 : 1;
+ pa ++;
+ pb ++;
+ }
+ return 0;
+}
+
/* All other functions are defined using a few generic macros in
string_intrinsics_inc.c, so we avoid code duplication between the
@@ -64,6 +81,8 @@ memset_char4 (gfc_char4_t *b, gfc_char4_t c, size_t len)
#define SUFFIX(x) x
#undef MEMSET
#define MEMSET memset
+#undef MEMCMP
+#define MEMCMP memcmp
#include "string_intrinsics_inc.c"
@@ -76,6 +95,8 @@ memset_char4 (gfc_char4_t *b, gfc_char4_t c, size_t len)
#define SUFFIX(x) x ## _char4
#undef MEMSET
#define MEMSET memset_char4
+#undef MEMCMP
+#define MEMCMP memcmp_char4
#include "string_intrinsics_inc.c"
diff --git a/gcc-4.6/libgfortran/intrinsics/string_intrinsics_inc.c b/gcc-4.6/libgfortran/intrinsics/string_intrinsics_inc.c
index 64f5cd75a..8335a38d9 100644
--- a/gcc-4.6/libgfortran/intrinsics/string_intrinsics_inc.c
+++ b/gcc-4.6/libgfortran/intrinsics/string_intrinsics_inc.c
@@ -90,7 +90,7 @@ compare_string (gfc_charlen_type len1, const CHARTYPE *s1,
gfc_charlen_type len;
int res;
- res = memcmp (s1, s2, ((len1 < len2) ? len1 : len2) * sizeof (CHARTYPE));
+ res = MEMCMP (s1, s2, ((len1 < len2) ? len1 : len2));
if (res != 0)
return res;
diff --git a/gcc-4.6/libgfortran/io/file_pos.c b/gcc-4.6/libgfortran/io/file_pos.c
index b034f3825..da83aa594 100644
--- a/gcc-4.6/libgfortran/io/file_pos.c
+++ b/gcc-4.6/libgfortran/io/file_pos.c
@@ -451,7 +451,7 @@ st_flush (st_parameter_filepos *fpp)
if (u->flags.form == FORM_FORMATTED)
fbuf_flush (u, u->mode);
- sflush (u->s);
+ flush_sync (u->s);
unlock_unit (u);
}
else
diff --git a/gcc-4.6/libgfortran/io/inquire.c b/gcc-4.6/libgfortran/io/inquire.c
index 252f29f0a..97bd9b638 100644
--- a/gcc-4.6/libgfortran/io/inquire.c
+++ b/gcc-4.6/libgfortran/io/inquire.c
@@ -409,7 +409,10 @@ inquire_via_unit (st_parameter_inquire *iqp, gfc_unit * u)
if (u == NULL)
*iqp->size = -1;
else
- *iqp->size = file_size (u->file, (gfc_charlen_type) u->file_len);
+ {
+ sflush (u->s);
+ *iqp->size = file_length (u->s);
+ }
}
}
diff --git a/gcc-4.6/libgfortran/io/intrinsics.c b/gcc-4.6/libgfortran/io/intrinsics.c
index f48bd7774..2d00a6649 100644
--- a/gcc-4.6/libgfortran/io/intrinsics.c
+++ b/gcc-4.6/libgfortran/io/intrinsics.c
@@ -206,7 +206,7 @@ flush_i4 (GFC_INTEGER_4 *unit)
us = find_unit (*unit);
if (us != NULL)
{
- sflush (us->s);
+ flush_sync (us->s);
unlock_unit (us);
}
}
@@ -229,7 +229,7 @@ flush_i8 (GFC_INTEGER_8 *unit)
us = find_unit (*unit);
if (us != NULL)
{
- sflush (us->s);
+ flush_sync (us->s);
unlock_unit (us);
}
}
diff --git a/gcc-4.6/libgfortran/io/list_read.c b/gcc-4.6/libgfortran/io/list_read.c
index 9d92f771c..c473c58b0 100644
--- a/gcc-4.6/libgfortran/io/list_read.c
+++ b/gcc-4.6/libgfortran/io/list_read.c
@@ -353,16 +353,7 @@ eat_separator (st_parameter_dt *dtp)
err = eat_line (dtp);
if (err)
return err;
- if ((c = next_char (dtp)) == EOF)
- return LIBERROR_END;
- if (c == '!')
- {
- err = eat_line (dtp);
- if (err)
- return err;
- if ((c = next_char (dtp)) == EOF)
- return LIBERROR_END;
- }
+ c = '\n';
}
}
while (c == '\n' || c == '\r' || c == ' ' || c == '\t');
@@ -2188,7 +2179,6 @@ nml_parse_qualifier (st_parameter_dt *dtp, descriptor_dimension *ad,
do not allow excess data to be processed. */
if (is_array_section == 1
|| !(compile_options.allow_std & GFC_STD_GNU)
- || !dtp->u.p.ionml->touched
|| dtp->u.p.ionml->type == BT_DERIVED)
ls[dim].end = ls[dim].start;
else
diff --git a/gcc-4.6/libgfortran/io/unix.c b/gcc-4.6/libgfortran/io/unix.c
index 12536ca5c..26bb06a09 100644
--- a/gcc-4.6/libgfortran/io/unix.c
+++ b/gcc-4.6/libgfortran/io/unix.c
@@ -435,10 +435,6 @@ buf_flush (unix_stream * s)
if (s->ndirty != 0)
return -1;
-#ifdef _WIN32
- _commit (s->fd);
-#endif
-
return 0;
}
@@ -1526,6 +1522,23 @@ retry:
return u;
}
+
+/* Flush dirty data, making sure that OS metadata is updated as
+ well. Note that this is VERY slow on mingw due to committing data
+ to stable storage. */
+int
+flush_sync (stream * s)
+{
+ if (sflush (s) == -1)
+ return -1;
+#ifdef __MINGW32__
+ if (_commit (((unix_stream *)s)->fd) == -1)
+ return -1;
+#endif
+ return 0;
+}
+
+
static gfc_unit *
flush_all_units_1 (gfc_unit *u, int min_unit)
{
@@ -1542,7 +1555,7 @@ flush_all_units_1 (gfc_unit *u, int min_unit)
if (__gthread_mutex_trylock (&u->lock))
return u;
if (u->s)
- sflush (u->s);
+ flush_sync (u->s);
__gthread_mutex_unlock (&u->lock);
}
u = u->right;
@@ -1572,7 +1585,7 @@ flush_all_units (void)
if (u->closed == 0)
{
- sflush (u->s);
+ flush_sync (u->s);
__gthread_mutex_lock (&unit_lock);
__gthread_mutex_unlock (&u->lock);
(void) predec_waiting_locked (u);
diff --git a/gcc-4.6/libgfortran/io/unix.h b/gcc-4.6/libgfortran/io/unix.h
index f7d6f0864..5e42268e6 100644
--- a/gcc-4.6/libgfortran/io/unix.h
+++ b/gcc-4.6/libgfortran/io/unix.h
@@ -167,6 +167,9 @@ internal_proto(is_special);
extern void flush_if_preconnected (stream *);
internal_proto(flush_if_preconnected);
+extern int flush_sync (stream *);
+internal_proto(flush_sync);
+
extern int stream_isatty (stream *);
internal_proto(stream_isatty);
diff --git a/gcc-4.6/libgfortran/libgfortran.h b/gcc-4.6/libgfortran/libgfortran.h
index c9d3f371e..87d595038 100644
--- a/gcc-4.6/libgfortran/libgfortran.h
+++ b/gcc-4.6/libgfortran/libgfortran.h
@@ -1284,6 +1284,10 @@ extern int compare_string_char4 (gfc_charlen_type, const gfc_char4_t *,
gfc_charlen_type, const gfc_char4_t *);
iexport_proto(compare_string_char4);
+extern int memcmp_char4 (const void *, const void *, size_t);
+internal_proto(memcmp_char4);
+
+
/* random.c */
extern void random_seed_i4 (GFC_INTEGER_4 * size, gfc_array_i4 * put,
diff --git a/gcc-4.6/libgfortran/m4/ifunction.m4 b/gcc-4.6/libgfortran/m4/ifunction.m4
index 72b05f45e..68e1c5e18 100644
--- a/gcc-4.6/libgfortran/m4/ifunction.m4
+++ b/gcc-4.6/libgfortran/m4/ifunction.m4
@@ -88,6 +88,7 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
alloc_size = sizeof (rtype_name) * GFC_DESCRIPTOR_STRIDE(retarray,rank-1)
* extent[rank-1];
+ retarray->data = internal_malloc_size (alloc_size);
if (alloc_size == 0)
{
/* Make sure we have a zero-sized array. */
@@ -95,8 +96,6 @@ name`'rtype_qual`_'atype_code (rtype * const restrict retarray,
return;
}
- else
- retarray->data = internal_malloc_size (alloc_size);
}
else
{
diff --git a/gcc-4.6/libgomp/ChangeLog b/gcc-4.6/libgomp/ChangeLog
index e7f3836f3..f614c41ba 100644
--- a/gcc-4.6/libgomp/ChangeLog
+++ b/gcc-4.6/libgomp/ChangeLog
@@ -1,3 +1,26 @@
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure: Regenerate.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-08-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/49792
+ * testsuite/libgomp.fortran/pr49792-1.f90: New test.
+ * testsuite/libgomp.fortran/pr49792-2.f90: New test.
+
+2011-07-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/49897
+ PR middle-end/49898
+ * testsuite/libgomp.c/pr49897-1.c: New test.
+ * testsuite/libgomp.c/pr49897-2.c: New test.
+ * testsuite/libgomp.c/pr49898-1.c: New test.
+ * testsuite/libgomp.c/pr49898-2.c: New test.
+
2011-07-18 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR target/49541
diff --git a/gcc-4.6/libgomp/configure b/gcc-4.6/libgomp/configure
index e56e3cbe3..4017aa906 100755
--- a/gcc-4.6/libgomp/configure
+++ b/gcc-4.6/libgomp/configure
@@ -9332,7 +9332,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -10245,7 +10245,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -10263,7 +10263,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
@@ -13179,7 +13179,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct_FC=yes
hardcode_minus_L_FC=yes
@@ -13884,7 +13884,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -13902,7 +13902,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
diff --git a/gcc-4.6/libgomp/testsuite/libgomp.c/pr49897-1.c b/gcc-4.6/libgomp/testsuite/libgomp.c/pr49897-1.c
new file mode 100644
index 000000000..d21a26252
--- /dev/null
+++ b/gcc-4.6/libgomp/testsuite/libgomp.c/pr49897-1.c
@@ -0,0 +1,31 @@
+/* PR middle-end/49897 */
+/* { dg-do run } */
+
+extern void abort (void);
+
+int
+main ()
+{
+ int i, j, x = 0, y, sum = 0;
+#pragma omp parallel reduction(+:sum)
+ {
+ #pragma omp for firstprivate(x) lastprivate(x, y)
+ for (i = 0; i < 10; i++)
+ {
+ x = i;
+ y = 0;
+ #pragma omp parallel reduction(+:sum)
+ {
+ #pragma omp for firstprivate(y) lastprivate(y)
+ for (j = 0; j < 10; j++)
+ {
+ y = j;
+ sum += y;
+ }
+ }
+ }
+ }
+ if (x != 9 || y != 9 || sum != 450)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.6/libgomp/testsuite/libgomp.c/pr49897-2.c b/gcc-4.6/libgomp/testsuite/libgomp.c/pr49897-2.c
new file mode 100644
index 000000000..c9ea5eced
--- /dev/null
+++ b/gcc-4.6/libgomp/testsuite/libgomp.c/pr49897-2.c
@@ -0,0 +1,25 @@
+/* PR middle-end/49897 */
+/* { dg-do run } */
+
+extern void abort (void);
+
+int
+main ()
+{
+ int i, j, x = 0, y, sum = 0;
+#pragma omp parallel for reduction(+:sum) firstprivate(x) lastprivate(x, y)
+ for (i = 0; i < 10; i++)
+ {
+ x = i;
+ y = 0;
+ #pragma omp parallel for reduction(+:sum) firstprivate(y) lastprivate(y)
+ for (j = 0; j < 10; j++)
+ {
+ y = j;
+ sum += y;
+ }
+ }
+ if (x != 9 || y != 9 || sum != 450)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.6/libgomp/testsuite/libgomp.c/pr49898-1.c b/gcc-4.6/libgomp/testsuite/libgomp.c/pr49898-1.c
new file mode 100644
index 000000000..175426d40
--- /dev/null
+++ b/gcc-4.6/libgomp/testsuite/libgomp.c/pr49898-1.c
@@ -0,0 +1,26 @@
+/* PR middle-end/49898 */
+/* { dg-do run } */
+
+extern void abort (void);
+
+int
+main ()
+{
+ int i, j, sum = 0;
+#pragma omp parallel
+ {
+ #pragma omp for reduction(+:sum)
+ for (i = 0; i < 10; i++)
+ {
+ #pragma omp parallel
+ {
+ #pragma omp for reduction(+:sum)
+ for (j = 0; j < 10; j++)
+ sum += j;
+ }
+ }
+ }
+ if (sum != 450)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.6/libgomp/testsuite/libgomp.c/pr49898-2.c b/gcc-4.6/libgomp/testsuite/libgomp.c/pr49898-2.c
new file mode 100644
index 000000000..03ba0f8ff
--- /dev/null
+++ b/gcc-4.6/libgomp/testsuite/libgomp.c/pr49898-2.c
@@ -0,0 +1,18 @@
+/* PR middle-end/49898 */
+/* { dg-do run } */
+
+extern void abort (void);
+
+int
+main ()
+{
+ int i, j, sum = 0;
+#pragma omp parallel for reduction(+:sum)
+ for (i = 0; i < 10; i++)
+ #pragma omp parallel for reduction(+:sum)
+ for (j = 0; j < 10; j++)
+ sum += j;
+ if (sum != 450)
+ abort ();
+ return 0;
+}
diff --git a/gcc-4.6/libgomp/testsuite/libgomp.fortran/pr49792-1.f90 b/gcc-4.6/libgomp/testsuite/libgomp.fortran/pr49792-1.f90
new file mode 100644
index 000000000..cf2bb66fc
--- /dev/null
+++ b/gcc-4.6/libgomp/testsuite/libgomp.fortran/pr49792-1.f90
@@ -0,0 +1,18 @@
+! PR fortran/49792
+! { dg-do run }
+
+subroutine reverse(n, a)
+ integer :: n
+ real(kind=8) :: a(n)
+!$omp parallel workshare
+ a(:) = a(n:1:-1)
+!$omp end parallel workshare
+end subroutine reverse
+
+program pr49792
+ real(kind=8) :: a(16) = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
+ real(kind=8) :: b(16)
+ b(:) = a(16:1:-1)
+ call reverse (16,a)
+ if (any (a.ne.b)) call abort
+end program pr49792
diff --git a/gcc-4.6/libgomp/testsuite/libgomp.fortran/pr49792-2.f90 b/gcc-4.6/libgomp/testsuite/libgomp.fortran/pr49792-2.f90
new file mode 100644
index 000000000..2101028a9
--- /dev/null
+++ b/gcc-4.6/libgomp/testsuite/libgomp.fortran/pr49792-2.f90
@@ -0,0 +1,22 @@
+! PR fortran/49792
+! { dg-do run }
+! { dg-options "-std=f2003 -fall-intrinsics" }
+
+subroutine reverse(n, a)
+ integer :: n
+ real(kind=8) :: a(n)
+!$omp parallel workshare
+ a(:) = a(n:1:-1)
+!$omp end parallel workshare
+end subroutine reverse
+
+program pr49792
+ integer :: b(16)
+ integer, allocatable :: a(:)
+ b = 1
+!$omp parallel workshare
+ a = b
+!$omp end parallel workshare
+ if (size(a).ne.size(b)) call abort()
+ if (any (a.ne.b)) call abort()
+end program pr49792
diff --git a/gcc-4.6/libiberty/ChangeLog b/gcc-4.6/libiberty/ChangeLog
index d2ab674ea..fb2b7348c 100644
--- a/gcc-4.6/libiberty/ChangeLog
+++ b/gcc-4.6/libiberty/ChangeLog
@@ -1,3 +1,35 @@
+2011-11-13 Iain Sandoe <iains@gcc.gnu.org>
+
+ PR target/48108
+ Backport from mainline r180523
+ * simple-object-mach-o.c (GNU_WRAPPER_SECTS, GNU_WRAPPER_INDEX,
+ GNU_WRAPPER_NAMES): New macros.
+ (simple_object_mach_o_segment): Handle wrapper scheme.
+ (simple_object_mach_o_write_section_header): Allow the segment name
+ to be supplied.
+ (simple_object_mach_o_write_segment): Handle wrapper scheme. Ensure
+ that the top-level segment name in the load command is empty.
+ (simple_object_mach_o_write_to_file): Determine the number of
+ sections during segment output, use that in writing the header.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-09-23 Cary Coutant <ccoutant@google.com>
+
+ PR 40831
+ * cp-demangle.c (d_make_comp): Add new component type.
+ (cplus_demangle_mangled_name): Check for clone suffixes.
+ (d_parmlist): Don't error out if we see '.'.
+ (d_clone_suffix): New function.
+ (d_print_comp): Print info for clone suffixes.
+ * testsuite/demangle-expected: Add new testcases.
+
+2011-08-06 Uros Bizjak <ubizjak@gmail.com>
+
+ * testsuite/test-expandargv.c (writeout_test): Check result of fwrite.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
@@ -514,7 +546,7 @@
2009-04-29 Julian Brown <julian@codesourcery.com>
- * pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT.
+ * pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT.
(pex_win32_exec_child): Ensure each process has only one handle open
on pipe endpoints. Close standard input after creating child for
symmetry with standard output/standard error.
@@ -532,7 +564,7 @@
section, so that the native build does detect them at configure
time.
* configure: Regenerated.
-
+
2009-04-13 Ozkan Sezer <sezeroz@gmail.com>
PR target/39397
@@ -632,7 +664,7 @@
2008-10-08 David Edelsohn <edelsohn@gnu.org>
* xstrdup.c: Include <sys/types.h> after "config.h"
-
+
2008-10-07 Jan Kratochvil <jan.kratochvil@redhat.com>
* configure.ac: Call AC_SYS_LARGEFILE.
diff --git a/gcc-4.6/libiberty/cp-demangle.c b/gcc-4.6/libiberty/cp-demangle.c
index 7e951cc78..179197cf1 100644
--- a/gcc-4.6/libiberty/cp-demangle.c
+++ b/gcc-4.6/libiberty/cp-demangle.c
@@ -419,6 +419,9 @@ static struct demangle_component *d_lambda (struct d_info *);
static struct demangle_component *d_unnamed_type (struct d_info *);
+static struct demangle_component *
+d_clone_suffix (struct d_info *, struct demangle_component *);
+
static int
d_add_substitution (struct d_info *, struct demangle_component *);
@@ -804,6 +807,7 @@ d_make_comp (struct d_info *di, enum demangle_component_type type,
case DEMANGLE_COMPONENT_LITERAL_NEG:
case DEMANGLE_COMPONENT_COMPOUND_NAME:
case DEMANGLE_COMPONENT_VECTOR_TYPE:
+ case DEMANGLE_COMPONENT_CLONE:
if (left == NULL || right == NULL)
return NULL;
break;
@@ -1036,7 +1040,7 @@ d_make_sub (struct d_info *di, const char *name, int len)
return p;
}
-/* <mangled-name> ::= _Z <encoding>
+/* <mangled-name> ::= _Z <encoding> [<clone-suffix>]*
TOP_LEVEL is non-zero when called at the top level. */
@@ -1044,6 +1048,8 @@ CP_STATIC_IF_GLIBCPP_V3
struct demangle_component *
cplus_demangle_mangled_name (struct d_info *di, int top_level)
{
+ struct demangle_component *p;
+
if (! d_check_char (di, '_')
/* Allow missing _ if not at toplevel to work around a
bug in G++ abi-version=2 mangling; see the comment in
@@ -1052,7 +1058,18 @@ cplus_demangle_mangled_name (struct d_info *di, int top_level)
return NULL;
if (! d_check_char (di, 'Z'))
return NULL;
- return d_encoding (di, top_level);
+ p = d_encoding (di, top_level);
+
+ /* If at top level and parsing parameters, check for a clone
+ suffix. */
+ if (top_level && (di->options & DMGL_PARAMS) != 0)
+ while (d_peek_char (di) == '.'
+ && (IS_LOWER (d_peek_next_char (di))
+ || d_peek_next_char (di) == '_'
+ || IS_DIGIT (d_peek_next_char (di))))
+ p = d_clone_suffix (di, p);
+
+ return p;
}
/* Return whether a function should have a return type. The argument
@@ -2346,7 +2363,7 @@ d_parmlist (struct d_info *di)
struct demangle_component *type;
char peek = d_peek_char (di);
- if (peek == '\0' || peek == 'E')
+ if (peek == '\0' || peek == 'E' || peek == '.')
break;
type = cplus_demangle_type (di);
if (type == NULL)
@@ -3066,6 +3083,33 @@ d_unnamed_type (struct d_info *di)
return ret;
}
+/* <clone-suffix> ::= [ . <clone-type-identifier> ] [ . <nonnegative number> ]*
+*/
+
+static struct demangle_component *
+d_clone_suffix (struct d_info *di, struct demangle_component *encoding)
+{
+ const char *suffix = d_str (di);
+ const char *pend = suffix;
+ struct demangle_component *n;
+
+ if (*pend == '.' && (IS_LOWER (pend[1]) || pend[1] == '_'))
+ {
+ pend += 2;
+ while (IS_LOWER (*pend) || *pend == '_')
+ ++pend;
+ }
+ while (*pend == '.' && IS_DIGIT (pend[1]))
+ {
+ pend += 2;
+ while (IS_DIGIT (*pend))
+ ++pend;
+ }
+ d_advance (di, pend - suffix);
+ n = d_make_name (di, suffix, pend - suffix);
+ return d_make_comp (di, DEMANGLE_COMPONENT_CLONE, encoding, n);
+}
+
/* Add a new substitution. */
static int
@@ -4343,6 +4387,13 @@ d_print_comp (struct d_print_info *dpi,
d_append_char (dpi, '}');
return;
+ case DEMANGLE_COMPONENT_CLONE:
+ d_print_comp (dpi, d_left (dc));
+ d_append_string (dpi, " [clone ");
+ d_print_comp (dpi, d_right (dc));
+ d_append_char (dpi, ']');
+ return;
+
default:
d_print_error (dpi);
return;
diff --git a/gcc-4.6/libiberty/simple-object-mach-o.c b/gcc-4.6/libiberty/simple-object-mach-o.c
index bbbbd09de..af5e4f9ca 100644
--- a/gcc-4.6/libiberty/simple-object-mach-o.c
+++ b/gcc-4.6/libiberty/simple-object-mach-o.c
@@ -1,5 +1,5 @@
/* simple-object-mach-o.c -- routines to manipulate Mach-O object files.
- Copyright 2010 Free Software Foundation, Inc.
+ Copyright 2010, 2011 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Google.
This program is free software; you can redistribute it and/or modify it
@@ -174,6 +174,15 @@ struct mach_o_section_64
#define GNU_SECTION_NAMES "__section_names"
+/* A GNU-specific extension to wrap multiple sections using three
+ mach-o sections within a given segment. The section '__wrapper_sects'
+ is subdivided according to the index '__wrapper_index' and each sub
+ sect is named according to the names supplied in '__wrapper_names'. */
+
+#define GNU_WRAPPER_SECTS "__wrapper_sects"
+#define GNU_WRAPPER_INDEX "__wrapper_index"
+#define GNU_WRAPPER_NAMES "__wrapper_names"
+
/* Private data for an simple_object_read. */
struct simple_object_mach_o_read
@@ -214,7 +223,18 @@ struct simple_object_mach_o_attributes
unsigned int reserved;
};
-/* See if we have a Mach-O file. */
+/* See if we have a Mach-O MH_OBJECT file:
+
+ A standard MH_OBJECT (from as) will have three load commands:
+ 0 - LC_SEGMENT/LC_SEGMENT64
+ 1 - LC_SYMTAB
+ 2 - LC_DYSYMTAB
+
+ The LC_SEGMENT/LC_SEGMENT64 will introduce a single anonymous segment
+ containing all the sections.
+
+ Files written by simple-object will have only the segment command
+ (no symbol tables). */
static void *
simple_object_mach_o_match (
@@ -356,8 +376,29 @@ simple_object_mach_o_section_info (int is_big_endian, int is_32,
}
}
-/* Handle a segment in a Mach-O file. Return 1 if we should continue,
- 0 if the caller should return. */
+/* Handle a segment in a Mach-O Object file.
+
+ This will callback to the function pfn for each "section found" the meaning
+ of which depends on gnu extensions to mach-o:
+
+ If we find mach-o sections (with the segment name as specified) which also
+ contain: a 'sects' wrapper, an index, and a name table, we expand this into
+ as many sections as are specified in the index. In this case, there will
+ be a callback for each of these.
+
+ We will also allow an extension that permits long names (more than 16
+ characters) to be used with mach-o. In this case, the section name has
+ a specific format embedding an index into a name table, and the file must
+ contain such name table.
+
+ Return 1 if we should continue, 0 if the caller should return. */
+
+#define SOMO_SECTS_PRESENT 0x01
+#define SOMO_INDEX_PRESENT 0x02
+#define SOMO_NAMES_PRESENT 0x04
+#define SOMO_LONGN_PRESENT 0x08
+#define SOMO_WRAPPING (SOMO_SECTS_PRESENT | SOMO_INDEX_PRESENT \
+ | SOMO_NAMES_PRESENT)
static int
simple_object_mach_o_segment (simple_object_read *sobj, off_t offset,
@@ -378,9 +419,20 @@ simple_object_mach_o_segment (simple_object_read *sobj, off_t offset,
unsigned int nsects;
unsigned char *secdata;
unsigned int i;
+ unsigned int gnu_sections_found;
unsigned int strtab_index;
+ unsigned int index_index;
+ unsigned int nametab_index;
+ unsigned int sections_index;
char *strtab;
+ char *nametab;
+ unsigned char *index;
size_t strtab_size;
+ size_t nametab_size;
+ size_t index_size;
+ unsigned int n_wrapped_sects;
+ size_t wrapper_sect_size;
+ off_t wrapper_sect_offset;
fetch_32 = (omr->is_big_endian
? simple_object_fetch_big_32
@@ -409,6 +461,8 @@ simple_object_mach_o_segment (simple_object_read *sobj, off_t offset,
nsects));
}
+ /* Fetch the section headers from the segment command. */
+
secdata = XNEWVEC (unsigned char, nsects * sechdrsize);
if (!simple_object_internal_read (sobj->descriptor, offset + seghdrsize,
secdata, nsects * sechdrsize, errmsg, err))
@@ -417,9 +471,13 @@ simple_object_mach_o_segment (simple_object_read *sobj, off_t offset,
return 0;
}
- /* Scan for a __section_names section. This is in effect a GNU
- extension that permits section names longer than 16 chars. */
+ /* Scan for special sections that signal GNU extensions to the format. */
+ gnu_sections_found = 0;
+ index_index = nsects;
+ sections_index = nsects;
+ strtab_index = nsects;
+ nametab_index = nsects;
for (i = 0; i < nsects; ++i)
{
size_t nameoff;
@@ -427,19 +485,104 @@ simple_object_mach_o_segment (simple_object_read *sobj, off_t offset,
nameoff = i * sechdrsize + segname_offset;
if (strcmp ((char *) secdata + nameoff, omr->segment_name) != 0)
continue;
+
nameoff = i * sechdrsize + sectname_offset;
- if (strcmp ((char *) secdata + nameoff, GNU_SECTION_NAMES) == 0)
- break;
+ if (strcmp ((char *) secdata + nameoff, GNU_WRAPPER_NAMES) == 0)
+ {
+ nametab_index = i;
+ gnu_sections_found |= SOMO_NAMES_PRESENT;
+ }
+ else if (strcmp ((char *) secdata + nameoff, GNU_WRAPPER_INDEX) == 0)
+ {
+ index_index = i;
+ gnu_sections_found |= SOMO_INDEX_PRESENT;
+ }
+ else if (strcmp ((char *) secdata + nameoff, GNU_WRAPPER_SECTS) == 0)
+ {
+ sections_index = i;
+ gnu_sections_found |= SOMO_SECTS_PRESENT;
+ }
+ else if (strcmp ((char *) secdata + nameoff, GNU_SECTION_NAMES) == 0)
+ {
+ strtab_index = i;
+ gnu_sections_found |= SOMO_LONGN_PRESENT;
+ }
}
- strtab_index = i;
- if (strtab_index >= nsects)
+ /* If any of the special wrapper section components is present, then
+ they all should be. */
+
+ if ((gnu_sections_found & SOMO_WRAPPING) != 0)
{
- strtab = NULL;
- strtab_size = 0;
+ off_t nametab_offset;
+ off_t index_offset;
+
+ if ((gnu_sections_found & SOMO_WRAPPING) != SOMO_WRAPPING)
+ {
+ *errmsg = "GNU Mach-o section wrapper: required section missing";
+ *err = 0; /* No useful errno. */
+ XDELETEVEC (secdata);
+ return 0;
+ }
+
+ /* Fetch the name table. */
+
+ simple_object_mach_o_section_info (omr->is_big_endian, is_32,
+ secdata + nametab_index * sechdrsize,
+ &nametab_offset, &nametab_size);
+ nametab = XNEWVEC (char, nametab_size);
+ if (!simple_object_internal_read (sobj->descriptor,
+ sobj->offset + nametab_offset,
+ (unsigned char *) nametab, nametab_size,
+ errmsg, err))
+ {
+ XDELETEVEC (nametab);
+ XDELETEVEC (secdata);
+ return 0;
+ }
+
+ /* Fetch the index. */
+
+ simple_object_mach_o_section_info (omr->is_big_endian, is_32,
+ secdata + index_index * sechdrsize,
+ &index_offset, &index_size);
+ index = XNEWVEC (unsigned char, index_size);
+ if (!simple_object_internal_read (sobj->descriptor,
+ sobj->offset + index_offset,
+ index, index_size,
+ errmsg, err))
+ {
+ XDELETEVEC (index);
+ XDELETEVEC (nametab);
+ XDELETEVEC (secdata);
+ return 0;
+ }
+
+ /* The index contains 4 unsigned ints per sub-section:
+ sub-section offset/length, sub-section name/length.
+ We fix this for both 32 and 64 bit mach-o for now, since
+ other fields limit the maximum size of an object to 4G. */
+ n_wrapped_sects = index_size / 16;
+
+ /* Get the parameters for the wrapper too. */
+ simple_object_mach_o_section_info (omr->is_big_endian, is_32,
+ secdata + sections_index * sechdrsize,
+ &wrapper_sect_offset,
+ &wrapper_sect_size);
}
else
{
+ index = NULL;
+ index_size = 0;
+ nametab = NULL;
+ nametab_size = 0;
+ n_wrapped_sects = 0;
+ }
+
+ /* If we have a long names section, fetch it. */
+
+ if ((gnu_sections_found & SOMO_LONGN_PRESENT) != 0)
+ {
off_t strtab_offset;
simple_object_mach_o_section_info (omr->is_big_endian, is_32,
@@ -452,52 +595,120 @@ simple_object_mach_o_segment (simple_object_read *sobj, off_t offset,
errmsg, err))
{
XDELETEVEC (strtab);
+ XDELETEVEC (index);
+ XDELETEVEC (nametab);
XDELETEVEC (secdata);
return 0;
}
}
+ else
+ {
+ strtab = NULL;
+ strtab_size = 0;
+ strtab_index = nsects;
+ }
/* Process the sections. */
for (i = 0; i < nsects; ++i)
{
const unsigned char *sechdr;
- char namebuf[MACH_O_NAME_LEN + 1];
+ char namebuf[MACH_O_NAME_LEN * 2 + 2];
char *name;
off_t secoffset;
size_t secsize;
+ int l;
- if (i == strtab_index)
+ sechdr = secdata + i * sechdrsize;
+
+ /* We've already processed the long section names. */
+
+ if ((gnu_sections_found & SOMO_LONGN_PRESENT) != 0
+ && i == strtab_index)
continue;
- sechdr = secdata + i * sechdrsize;
+ /* We only act on the segment named. */
if (strcmp ((char *) sechdr + segname_offset, omr->segment_name) != 0)
continue;
- memcpy (namebuf, sechdr + sectname_offset, MACH_O_NAME_LEN);
- namebuf[MACH_O_NAME_LEN] = '\0';
+ /* Process sections associated with the wrapper. */
- name = &namebuf[0];
- if (strtab != NULL && name[0] == '_' && name[1] == '_')
+ if ((gnu_sections_found & SOMO_WRAPPING) != 0)
{
- unsigned long stringoffset;
+ if (i == nametab_index || i == index_index)
+ continue;
- if (sscanf (name + 2, "%08lX", &stringoffset) == 1)
+ if (i == sections_index)
{
- if (stringoffset >= strtab_size)
+ unsigned int j;
+ for (j = 0; j < n_wrapped_sects; ++j)
{
- *errmsg = "section name offset out of range";
- *err = 0;
- XDELETEVEC (strtab);
- XDELETEVEC (secdata);
- return 0;
+ unsigned int subsect_offset, subsect_length, name_offset;
+ subsect_offset = (*fetch_32) (index + 16 * j);
+ subsect_length = (*fetch_32) (index + 16 * j + 4);
+ name_offset = (*fetch_32) (index + 16 * j + 8);
+ /* We don't need the name_length yet. */
+
+ secoffset = wrapper_sect_offset + subsect_offset;
+ secsize = subsect_length;
+ name = nametab + name_offset;
+
+ if (!(*pfn) (data, name, secoffset, secsize))
+ {
+ *errmsg = NULL;
+ *err = 0;
+ XDELETEVEC (index);
+ XDELETEVEC (nametab);
+ XDELETEVEC (strtab);
+ XDELETEVEC (secdata);
+ return 0;
+ }
}
-
- name = strtab + stringoffset;
+ continue;
}
}
+ if ((gnu_sections_found & SOMO_LONGN_PRESENT) != 0)
+ {
+ memcpy (namebuf, sechdr + sectname_offset, MACH_O_NAME_LEN);
+ namebuf[MACH_O_NAME_LEN] = '\0';
+
+ name = &namebuf[0];
+ if (strtab != NULL && name[0] == '_' && name[1] == '_')
+ {
+ unsigned long stringoffset;
+
+ if (sscanf (name + 2, "%08lX", &stringoffset) == 1)
+ {
+ if (stringoffset >= strtab_size)
+ {
+ *errmsg = "section name offset out of range";
+ *err = 0;
+ XDELETEVEC (index);
+ XDELETEVEC (nametab);
+ XDELETEVEC (strtab);
+ XDELETEVEC (secdata);
+ return 0;
+ }
+
+ name = strtab + stringoffset;
+ }
+ }
+ }
+ else
+ {
+ /* Otherwise, make a name like __segment,__section as per the
+ convention in mach-o asm. */
+ name = &namebuf[0];
+ memset (namebuf, 0, MACH_O_NAME_LEN * 2 + 2);
+ memcpy (namebuf, (char *) sechdr + segname_offset, MACH_O_NAME_LEN);
+ l = strlen (namebuf);
+ namebuf[l] = ',';
+ memcpy (namebuf + l + 1, (char *) sechdr + sectname_offset,
+ MACH_O_NAME_LEN);
+ }
+
simple_object_mach_o_section_info (omr->is_big_endian, is_32, sechdr,
&secoffset, &secsize);
@@ -505,12 +716,16 @@ simple_object_mach_o_segment (simple_object_read *sobj, off_t offset,
{
*errmsg = NULL;
*err = 0;
+ XDELETEVEC (index);
+ XDELETEVEC (nametab);
XDELETEVEC (strtab);
XDELETEVEC (secdata);
return 0;
}
}
+ XDELETEVEC (index);
+ XDELETEVEC (nametab);
XDELETEVEC (strtab);
XDELETEVEC (secdata);
@@ -724,9 +939,9 @@ static int
simple_object_mach_o_write_section_header (simple_object_write *sobj,
int descriptor,
size_t sechdr_offset,
- const char *name, size_t secaddr,
- size_t secsize, size_t offset,
- unsigned int align,
+ const char *name, const char *segn,
+ size_t secaddr, size_t secsize,
+ size_t offset, unsigned int align,
const char **errmsg, int *err)
{
struct simple_object_mach_o_attributes *attrs =
@@ -748,7 +963,7 @@ simple_object_mach_o_write_section_header (simple_object_write *sobj,
strncpy ((char *) hdr + offsetof (struct mach_o_section_32, sectname),
name, MACH_O_NAME_LEN);
strncpy ((char *) hdr + offsetof (struct mach_o_section_32, segname),
- sobj->segment_name, MACH_O_NAME_LEN);
+ segn, MACH_O_NAME_LEN);
set_32 (hdr + offsetof (struct mach_o_section_32, addr), secaddr);
set_32 (hdr + offsetof (struct mach_o_section_32, size), secsize);
set_32 (hdr + offsetof (struct mach_o_section_32, offset), offset);
@@ -773,7 +988,7 @@ simple_object_mach_o_write_section_header (simple_object_write *sobj,
strncpy ((char *) hdr + offsetof (struct mach_o_section_64, sectname),
name, MACH_O_NAME_LEN);
strncpy ((char *) hdr + offsetof (struct mach_o_section_64, segname),
- sobj->segment_name, MACH_O_NAME_LEN);
+ segn, MACH_O_NAME_LEN);
set_64 (hdr + offsetof (struct mach_o_section_64, addr), secaddr);
set_64 (hdr + offsetof (struct mach_o_section_64, size), secsize);
set_32 (hdr + offsetof (struct mach_o_section_64, offset), offset);
@@ -793,11 +1008,25 @@ simple_object_mach_o_write_section_header (simple_object_write *sobj,
sechdrsize, errmsg, err);
}
-/* Write out the single segment and the sections of a Mach-O file. */
+/* Write out the single (anonymous) segment containing the sections of a Mach-O
+ Object file.
+
+ As a GNU extension to mach-o, when the caller specifies a segment name in
+ sobj->segment_name, all the sections passed will be output under a single
+ mach-o section header. The caller's sections are indexed within this
+ 'wrapper' section by a table stored in a second mach-o section. Finally,
+ arbitrary length section names are permitted by the extension and these are
+ stored in a table in a third mach-o section.
+
+ Note that this is only likely to make any sense for the __GNU_LTO segment
+ at present.
+
+ If the wrapper extension is not in force, we assume that the section name
+ is in the form __SEGMENT_NAME,__section_name as per Mach-O asm. */
static int
simple_object_mach_o_write_segment (simple_object_write *sobj, int descriptor,
- size_t nsects, const char **errmsg,
+ size_t *nsects, const char **errmsg,
int *err)
{
struct simple_object_mach_o_attributes *attrs =
@@ -814,6 +1043,10 @@ simple_object_mach_o_write_segment (simple_object_write *sobj, int descriptor,
simple_object_write_section *section;
unsigned char hdrbuf[sizeof (struct mach_o_segment_command_64)];
unsigned char *hdr;
+ size_t nsects_in;
+ unsigned int *index;
+ char *snames;
+ unsigned int sect;
set_32 = (attrs->is_big_endian
? simple_object_set_big_32
@@ -834,19 +1067,62 @@ simple_object_mach_o_write_segment (simple_object_write *sobj, int descriptor,
sechdrsize = sizeof (struct mach_o_section_64);
}
+ name_offset = 0;
+ *nsects = nsects_in = 0;
+
+ /* Count the number of sections we start with. */
+
+ for (section = sobj->sections; section != NULL; section = section->next)
+ nsects_in++;
+
+ if (sobj->segment_name != NULL)
+ {
+ /* We will only write 3 sections: wrapped data, index and names. */
+
+ *nsects = 3;
+
+ /* The index has four entries per wrapped section:
+ Section Offset, length, Name offset, length.
+ Where the offsets are based at the start of the wrapper and name
+ sections respectively.
+ The values are stored as 32 bit int for both 32 and 64 bit mach-o
+ since the size of a mach-o MH_OBJECT cannot exceed 4G owing to
+ other constraints. */
+
+ index = XNEWVEC (unsigned int, nsects_in * 4);
+
+ /* We now need to figure out the size of the names section. This just
+ stores the names as null-terminated c strings, packed without any
+ alignment padding. */
+
+ for (section = sobj->sections, sect = 0; section != NULL;
+ section = section->next, sect++)
+ {
+ index[sect*4+2] = name_offset;
+ index[sect*4+3] = strlen (section->name) + 1;
+ name_offset += strlen (section->name) + 1;
+ }
+ snames = XNEWVEC (char, name_offset);
+ }
+ else
+ {
+ *nsects = nsects_in;
+ index = NULL;
+ snames = NULL;
+ }
+
sechdr_offset = hdrsize + seghdrsize;
- cmdsize = seghdrsize + nsects * sechdrsize;
+ cmdsize = seghdrsize + *nsects * sechdrsize;
offset = hdrsize + cmdsize;
- name_offset = 0;
secaddr = 0;
- for (section = sobj->sections; section != NULL; section = section->next)
+ for (section = sobj->sections, sect = 0;
+ section != NULL; section = section->next, sect++)
{
size_t mask;
size_t new_offset;
size_t secsize;
struct simple_object_write_section_buffer *buffer;
- char namebuf[MACH_O_NAME_LEN + 1];
mask = (1U << section->align) - 1;
new_offset = offset + mask;
@@ -877,39 +1153,126 @@ simple_object_mach_o_write_segment (simple_object_write *sobj, int descriptor,
secsize += buffer->size;
}
- snprintf (namebuf, sizeof namebuf, "__%08X", name_offset);
+ if (sobj->segment_name != NULL)
+ {
+ index[sect*4+0] = (unsigned int) offset;
+ index[sect*4+1] = secsize;
+ /* Stash the section name in our table. */
+ memcpy (snames + index[sect * 4 + 2], section->name,
+ index[sect * 4 + 3]);
+ }
+ else
+ {
+ char namebuf[MACH_O_NAME_LEN + 1];
+ char segnbuf[MACH_O_NAME_LEN + 1];
+ char *comma;
+
+ /* Try to extract segment,section from the input name. */
+
+ memset (namebuf, 0, sizeof namebuf);
+ memset (segnbuf, 0, sizeof segnbuf);
+ comma = strchr (section->name, ',');
+ if (comma != NULL)
+ {
+ int len = comma - section->name;
+ len = len > MACH_O_NAME_LEN ? MACH_O_NAME_LEN : len;
+ strncpy (namebuf, section->name, len);
+ strncpy (segnbuf, comma + 1, MACH_O_NAME_LEN);
+ }
+ else /* just try to copy the name, leave segment blank. */
+ strncpy (namebuf, section->name, MACH_O_NAME_LEN);
+
+ if (!simple_object_mach_o_write_section_header (sobj, descriptor,
+ sechdr_offset,
+ namebuf, segnbuf,
+ secaddr, secsize,
+ offset,
+ section->align,
+ errmsg, err))
+ return 0;
+ sechdr_offset += sechdrsize;
+ }
+
+ offset += secsize;
+ secaddr += secsize;
+ }
+
+ if (sobj->segment_name != NULL)
+ {
+ size_t secsize;
+ unsigned int i;
+
+ /* Write the section header for the wrapper. */
+ /* Account for any initial aligment - which becomes the alignment for this
+ created section. */
+
+ secsize = (offset - index[0]);
if (!simple_object_mach_o_write_section_header (sobj, descriptor,
- sechdr_offset, namebuf,
- secaddr, secsize, offset,
- section->align,
+ sechdr_offset,
+ GNU_WRAPPER_SECTS,
+ sobj->segment_name,
+ 0 /*secaddr*/,
+ secsize, index[0],
+ sobj->sections->align,
errmsg, err))
return 0;
+ /* Subtract the wrapper section start from the begining of each sub
+ section. */
+
+ for (i = 1; i < nsects_in; ++i)
+ index[4 * i] -= index[0];
+ index[0] = 0;
+
sechdr_offset += sechdrsize;
- offset += secsize;
- name_offset += strlen (section->name) + 1;
- secaddr += secsize;
- }
- /* Write out the section names. */
+ /* Write out the section names.
+ ... the header ...
+ name_offset contains the length of the section. It is not aligned. */
- if (!simple_object_mach_o_write_section_header (sobj, descriptor,
- sechdr_offset,
- GNU_SECTION_NAMES, secaddr,
- name_offset, offset, 0,
- errmsg, err))
- return 0;
+ if (!simple_object_mach_o_write_section_header (sobj, descriptor,
+ sechdr_offset,
+ GNU_WRAPPER_NAMES,
+ sobj->segment_name,
+ 0 /*secaddr*/,
+ name_offset,
+ offset,
+ 0, errmsg, err))
+ return 0;
- for (section = sobj->sections; section != NULL; section = section->next)
- {
- size_t namelen;
+ /* ... and the content.. */
+ if (!simple_object_internal_write (descriptor, offset,
+ (const unsigned char *) snames,
+ name_offset, errmsg, err))
+ return 0;
+
+ sechdr_offset += sechdrsize;
+ secaddr += name_offset;
+ offset += name_offset;
+
+ /* Now do the index, we'll align this to 4 bytes although the read code
+ will handle unaligned. */
+
+ offset += 3;
+ offset &= ~0x03;
+ if (!simple_object_mach_o_write_section_header (sobj, descriptor,
+ sechdr_offset,
+ GNU_WRAPPER_INDEX,
+ sobj->segment_name,
+ 0 /*secaddr*/,
+ nsects_in * 16,
+ offset,
+ 2, errmsg, err))
+ return 0;
- namelen = strlen (section->name) + 1;
+ /* ... and the content.. */
if (!simple_object_internal_write (descriptor, offset,
- (const unsigned char *) section->name,
- namelen, errmsg, err))
+ (const unsigned char *) index,
+ nsects_in*16, errmsg, err))
return 0;
- offset += namelen;
+
+ XDELETEVEC (index);
+ XDELETEVEC (snames);
}
/* Write out the segment header. */
@@ -923,9 +1286,8 @@ simple_object_mach_o_write_segment (simple_object_write *sobj, int descriptor,
MACH_O_LC_SEGMENT);
set_32 (hdr + offsetof (struct mach_o_segment_command_32, cmdsize),
cmdsize);
- strncpy (((char *) hdr
- + offsetof (struct mach_o_segment_command_32, segname)),
- sobj->segment_name, MACH_O_NAME_LEN);
+ /* MH_OBJECTS have a single, anonymous, segment - so the segment name
+ is left empty. */
/* vmaddr left as zero. */
/* vmsize left as zero. */
set_32 (hdr + offsetof (struct mach_o_segment_command_32, fileoff),
@@ -935,7 +1297,7 @@ simple_object_mach_o_write_segment (simple_object_write *sobj, int descriptor,
/* maxprot left as zero. */
/* initprot left as zero. */
set_32 (hdr + offsetof (struct mach_o_segment_command_32, nsects),
- nsects);
+ *nsects);
/* flags left as zero. */
}
else
@@ -951,9 +1313,8 @@ simple_object_mach_o_write_segment (simple_object_write *sobj, int descriptor,
MACH_O_LC_SEGMENT);
set_32 (hdr + offsetof (struct mach_o_segment_command_64, cmdsize),
cmdsize);
- strncpy (((char *) hdr
- + offsetof (struct mach_o_segment_command_64, segname)),
- sobj->segment_name, MACH_O_NAME_LEN);
+ /* MH_OBJECTS have a single, anonymous, segment - so the segment name
+ is left empty. */
/* vmaddr left as zero. */
/* vmsize left as zero. */
set_64 (hdr + offsetof (struct mach_o_segment_command_64, fileoff),
@@ -963,7 +1324,7 @@ simple_object_mach_o_write_segment (simple_object_write *sobj, int descriptor,
/* maxprot left as zero. */
/* initprot left as zero. */
set_32 (hdr + offsetof (struct mach_o_segment_command_64, nsects),
- nsects);
+ *nsects);
/* flags left as zero. */
#endif
}
@@ -978,23 +1339,17 @@ static const char *
simple_object_mach_o_write_to_file (simple_object_write *sobj, int descriptor,
int *err)
{
- size_t nsects;
- simple_object_write_section *section;
+ size_t nsects = 0;
const char *errmsg;
- /* Start at 1 for symbol_names section. */
- nsects = 1;
- for (section = sobj->sections; section != NULL; section = section->next)
- ++nsects;
+ if (!simple_object_mach_o_write_segment (sobj, descriptor, &nsects,
+ &errmsg, err))
+ return errmsg;
if (!simple_object_mach_o_write_header (sobj, descriptor, nsects,
&errmsg, err))
return errmsg;
- if (!simple_object_mach_o_write_segment (sobj, descriptor, nsects,
- &errmsg, err))
- return errmsg;
-
return NULL;
}
diff --git a/gcc-4.6/libiberty/testsuite/demangle-expected b/gcc-4.6/libiberty/testsuite/demangle-expected
index 5ce0377b1..74dbe8fda 100644
--- a/gcc-4.6/libiberty/testsuite/demangle-expected
+++ b/gcc-4.6/libiberty/testsuite/demangle-expected
@@ -4092,3 +4092,50 @@ DFA
--format=auto
_ZN3Psi7VariantIIcPKcEE5visitIIRZN11VariantTest9TestVisit11test_methodEvEUlS2_E0_RZNS6_11test_methodEvEUlcE1_RZNS6_11test_methodEvEUlNS_4NoneEE_EEENS_13VariantDetail19SelectVisitorResultIIDpT_EE4typeEDpOSG_
Psi::VariantDetail::SelectVisitorResult<VariantTest::TestVisit::test_method()::{lambda(char const*)#2}&, VariantTest::TestVisit::test_method()::{lambda(char)#3}&, VariantTest::TestVisit::test_method()::{lambda(Psi::None)#1}&>::type Psi::Variant<char, char const*>::visit<VariantTest::TestVisit::test_method()::{lambda(char const*)#2}&, VariantTest::TestVisit::test_method()::{lambda(char)#3}&, VariantTest::TestVisit::test_method()::{lambda(Psi::None)#1}&>((VariantTest::TestVisit::test_method()::{lambda(Psi::None)#1}&&&)...)
+#
+# Clone suffix tests
+#
+--format=gnu-v3 --no-params
+_Z3fo5n.clone.1
+fo5(__int128) [clone .clone.1]
+fo5
+#
+--format=gnu-v3 --no-params
+_Z3fo5n.constprop.2
+fo5(__int128) [clone .constprop.2]
+fo5
+#
+--format=gnu-v3 --no-params
+_Z3fo5n.isra.3
+fo5(__int128) [clone .isra.3]
+fo5
+#
+--format=gnu-v3 --no-params
+_Z3fo5n.part.4
+fo5(__int128) [clone .part.4]
+fo5
+#
+--format=gnu-v3 --no-params
+_Z12to_be_clonediPv.clone.0
+to_be_cloned(int, void*) [clone .clone.0]
+to_be_cloned
+#
+--format=gnu-v3 --no-params
+_Z3fooi.1988
+foo(int) [clone .1988]
+foo
+#
+--format=gnu-v3 --no-params
+_Z3fooi.part.9.165493.constprop.775.31805
+foo(int) [clone .part.9.165493] [clone .constprop.775.31805]
+foo
+#
+--format=gnu-v3 --no-params
+_Z2f1IiEvT_S0_S0_._omp_fn.2
+void f1<int>(int, int, int) [clone ._omp_fn.2]
+f1<int>
+#
+--format=gnu-v3 --no-params
+_Z3fooi._omp_cpyfn.6
+foo(int) [clone ._omp_cpyfn.6]
+foo
diff --git a/gcc-4.6/libiberty/testsuite/test-expandargv.c b/gcc-4.6/libiberty/testsuite/test-expandargv.c
index c16a0322a..dc44a1750 100644
--- a/gcc-4.6/libiberty/testsuite/test-expandargv.c
+++ b/gcc-4.6/libiberty/testsuite/test-expandargv.c
@@ -189,7 +189,7 @@ writeout_test (int test, const char * test_data)
{
char filename[256];
FILE *fd;
- size_t len;
+ size_t len, sys_fwrite;
char * parse;
/* Unique filename per test */
@@ -208,7 +208,10 @@ writeout_test (int test, const char * test_data)
/* Run all possible replaces */
run_replaces (parse);
- fwrite (parse, len, sizeof (char), fd);
+ sys_fwrite = fwrite (parse, sizeof (char), len, fd);
+ if (sys_fwrite != len)
+ fatal_error (__LINE__, "Failed to write to test file.", errno);
+
free (parse);
fclose (fd);
}
diff --git a/gcc-4.6/libjava/ChangeLog b/gcc-4.6/libjava/ChangeLog
index 89d12daa7..b27b55bea 100644
--- a/gcc-4.6/libjava/ChangeLog
+++ b/gcc-4.6/libjava/ChangeLog
@@ -1,3 +1,32 @@
+2011-11-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR bootstrap/50888
+ * prims.cc: Don't include ctype.h.
+ (c_isspace): Define.
+ (next_property_key, next_property_value): Use it instead
+ of isspace.
+
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure.ac: Fix FreeBSD 10 detection.
+ * configure: Regenerate.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-10-18 Uros Bizjak <ubizjak@gmail.com>
+ Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/50737
+ * include/dwarf2-signal.h [__alpha__]: Remove MAKE_THROW_FRAME
+ definition.
+
+2011-07-12 Andrew Haley <aph@redhat.com>
+
+ * java/lang/natClass.cc (finalize): Make sure that the class
+ really has an engine.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/libjava/classpath/ChangeLog b/gcc-4.6/libjava/classpath/ChangeLog
index 93a6f6209..7b6d27055 100644
--- a/gcc-4.6/libjava/classpath/ChangeLog
+++ b/gcc-4.6/libjava/classpath/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/libjava/classpath/ChangeLog.gcj b/gcc-4.6/libjava/classpath/ChangeLog.gcj
index 9eb70ac14..0f537912e 100644
--- a/gcc-4.6/libjava/classpath/ChangeLog.gcj
+++ b/gcc-4.6/libjava/classpath/ChangeLog.gcj
@@ -1,3 +1,9 @@
+2011-11-29 Andreas Tobler <andreast@fgznet.ch>
+
+ * config.rpath (ld_shlibs): Fix detection of FreeBSD-10 and up.
+ (libname_spec): Likewise.
+ * configure: Regenerate with autoconf -I ../../.
+
2011-02-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* config.rpath, ltcf-c.sh, ltcf-gcj.sh, ltconfig: Remove
diff --git a/gcc-4.6/libjava/classpath/config.rpath b/gcc-4.6/libjava/classpath/config.rpath
index def43dcc5..b7f75cde4 100755
--- a/gcc-4.6/libjava/classpath/config.rpath
+++ b/gcc-4.6/libjava/classpath/config.rpath
@@ -361,7 +361,7 @@ else
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
;;
- freebsd2*)
+ freebsd2.*)
hardcode_direct=yes
hardcode_minus_L=yes
;;
@@ -533,7 +533,7 @@ case "$host_os" in
;;
freebsd* | dragonfly*)
case "$host_os" in
- freebsd[123]*)
+ freebsd[23].*)
library_names_spec='$libname$shrext$versuffix' ;;
*)
library_names_spec='$libname$shrext' ;;
diff --git a/gcc-4.6/libjava/classpath/configure b/gcc-4.6/libjava/classpath/configure
index 95e5916d1..d95a4df9c 100755
--- a/gcc-4.6/libjava/classpath/configure
+++ b/gcc-4.6/libjava/classpath/configure
@@ -10040,7 +10040,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -10956,7 +10956,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -10974,7 +10974,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
@@ -14240,7 +14240,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
esac
;;
- freebsd[12]*)
+ freebsd2.*)
# C++ shared libraries reported to be fairly broken before
# switch to ELF
ld_shlibs_CXX=no
@@ -16015,7 +16015,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -16033,7 +16033,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
diff --git a/gcc-4.6/libjava/configure b/gcc-4.6/libjava/configure
index d25a1799f..75c2e8cc8 100755
--- a/gcc-4.6/libjava/configure
+++ b/gcc-4.6/libjava/configure
@@ -11575,7 +11575,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -12491,7 +12491,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -12509,7 +12509,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
@@ -14399,7 +14399,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
esac
;;
- freebsd[12]*)
+ freebsd2.*)
# C++ shared libraries reported to be fairly broken before
# switch to ELF
ld_shlibs_CXX=no
@@ -16174,7 +16174,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -16192,7 +16192,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
@@ -18535,7 +18535,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct_GCJ=yes
hardcode_minus_L_GCJ=yes
@@ -20730,7 +20730,7 @@ case "$THREADS" in
*-*-cygwin*)
# Don't set THREADLIBS here. Cygwin doesn't have -lpthread.
;;
- *-*-freebsd[1234]*)
+ *-*-freebsd[34].*)
# Before FreeBSD 5, it didn't have -lpthread (or any library which
# merely adds pthread_* functions) but it does have a -pthread switch
# which is required at link-time to select -lc_r *instead* of -lc.
diff --git a/gcc-4.6/libjava/configure.ac b/gcc-4.6/libjava/configure.ac
index 805c519e2..b8f299dca 100644
--- a/gcc-4.6/libjava/configure.ac
+++ b/gcc-4.6/libjava/configure.ac
@@ -1060,7 +1060,7 @@ case "$THREADS" in
*-*-cygwin*)
# Don't set THREADLIBS here. Cygwin doesn't have -lpthread.
;;
- *-*-freebsd[[1234]]*)
+ *-*-freebsd[[34]].*)
# Before FreeBSD 5, it didn't have -lpthread (or any library which
# merely adds pthread_* functions) but it does have a -pthread switch
# which is required at link-time to select -lc_r *instead* of -lc.
diff --git a/gcc-4.6/libjava/include/dwarf2-signal.h b/gcc-4.6/libjava/include/dwarf2-signal.h
index 949bcc0ae..812968217 100644
--- a/gcc-4.6/libjava/include/dwarf2-signal.h
+++ b/gcc-4.6/libjava/include/dwarf2-signal.h
@@ -29,20 +29,7 @@ class java::lang::Throwable;
// then throw an exception. With the dwarf2 unwinder we don't usually
// need to do anything, with some minor exceptions.
-#ifdef __alpha__
-#define MAKE_THROW_FRAME(_exception) \
-do \
-{ \
- /* Alpha either leaves PC pointing at a faulting instruction or the \
- following instruction, depending on the signal. SEGV always does \
- the former, so we adjust the saved PC to point to the following \
- instruction; this is what the handler in libgcc expects. */ \
- struct sigcontext *_sc = (struct sigcontext *)_p; \
- _sc->sc_pc += 4; \
-} \
-while (0)
-
-#elif defined(__ia64__)
+#ifdef __ia64__
#define MAKE_THROW_FRAME(_exception) \
do \
diff --git a/gcc-4.6/libjava/java/lang/natClass.cc b/gcc-4.6/libjava/java/lang/natClass.cc
index 9f9f05ed8..d6969d49b 100644
--- a/gcc-4.6/libjava/java/lang/natClass.cc
+++ b/gcc-4.6/libjava/java/lang/natClass.cc
@@ -668,7 +668,9 @@ java::lang::Class::newInstance (void)
void
java::lang::Class::finalize (void)
{
- engine->unregister(this);
+ // Array classes don't have an engine, and don't need to be finalized.
+ if (engine)
+ engine->unregister(this);
}
#ifdef INTERPRETER
diff --git a/gcc-4.6/libjava/libltdl/ChangeLog b/gcc-4.6/libjava/libltdl/ChangeLog
index 06bafa095..f2a91dbba 100644
--- a/gcc-4.6/libjava/libltdl/ChangeLog
+++ b/gcc-4.6/libjava/libltdl/ChangeLog
@@ -1,3 +1,12 @@
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * acinclude.m4: Additional FreeBSD 10 fixes.
+ * configure: Regenerate.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/libjava/libltdl/acinclude.m4 b/gcc-4.6/libjava/libltdl/acinclude.m4
index 55beab162..d77a1a399 100644
--- a/gcc-4.6/libjava/libltdl/acinclude.m4
+++ b/gcc-4.6/libjava/libltdl/acinclude.m4
@@ -1377,7 +1377,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[[01]]* | freebsdelf3.[[01]]*)
@@ -3035,7 +3035,7 @@ case $host_os in
;;
esac
;;
- freebsd[[12]]*)
+ freebsd2.*)
# C++ shared libraries reported to be fairly broken before switch to ELF
_LT_AC_TAGVAR(ld_shlibs, $1)=no
;;
@@ -5669,7 +5669,7 @@ EOF
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
_LT_AC_TAGVAR(hardcode_direct, $1)=yes
_LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
diff --git a/gcc-4.6/libjava/libltdl/configure b/gcc-4.6/libjava/libltdl/configure
index f47d95f73..35b89dc55 100755
--- a/gcc-4.6/libjava/libltdl/configure
+++ b/gcc-4.6/libjava/libltdl/configure
@@ -7355,7 +7355,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -7968,7 +7968,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
diff --git a/gcc-4.6/libjava/prims.cc b/gcc-4.6/libjava/prims.cc
index 90f8dc5ca..652cf5b4a 100644
--- a/gcc-4.6/libjava/prims.cc
+++ b/gcc-4.6/libjava/prims.cc
@@ -38,7 +38,6 @@ details. */
#endif
#ifndef DISABLE_GETENV_PROPERTIES
-#include <ctype.h>
#include <java-props.h>
#define PROCESS_GCJ_PROPERTIES process_gcj_properties()
#else
@@ -985,6 +984,8 @@ static java::lang::Thread *main_thread;
#ifndef DISABLE_GETENV_PROPERTIES
+#define c_isspace(c) (memchr (" \t\n\r\v\f", c, 6) != NULL)
+
static char *
next_property_key (char *s, size_t *length)
{
@@ -993,7 +994,7 @@ next_property_key (char *s, size_t *length)
JvAssert (s);
// Skip over whitespace
- while (isspace (*s))
+ while (c_isspace (*s))
s++;
// If we've reached the end, return NULL. Also return NULL if for
@@ -1005,7 +1006,7 @@ next_property_key (char *s, size_t *length)
// Determine the length of the property key.
while (s[l] != 0
- && ! isspace (s[l])
+ && ! c_isspace (s[l])
&& s[l] != ':'
&& s[l] != '=')
{
@@ -1027,19 +1028,19 @@ next_property_value (char *s, size_t *length)
JvAssert (s);
- while (isspace (*s))
+ while (c_isspace (*s))
s++;
if (*s == ':'
|| *s == '=')
s++;
- while (isspace (*s))
+ while (c_isspace (*s))
s++;
// Determine the length of the property value.
while (s[l] != 0
- && ! isspace (s[l])
+ && ! c_isspace (s[l])
&& s[l] != ':'
&& s[l] != '=')
{
diff --git a/gcc-4.6/libmudflap/ChangeLog b/gcc-4.6/libmudflap/ChangeLog
index c0e27e08a..dbd2e54ce 100644
--- a/gcc-4.6/libmudflap/ChangeLog
+++ b/gcc-4.6/libmudflap/ChangeLog
@@ -1,3 +1,20 @@
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure: Regenerate.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-07-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ Revert:
+ 2011-07-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR testsuite/49753
+ PR tree-optimization/49309
+ * testsuite/libmudflap.c++/pass68-frag.cxx: New test.
+
2011-07-15 Jakub Jelinek <jakub@redhat.com>
PR testsuite/49753
diff --git a/gcc-4.6/libmudflap/configure b/gcc-4.6/libmudflap/configure
index fcac79568..f2dd86330 100755
--- a/gcc-4.6/libmudflap/configure
+++ b/gcc-4.6/libmudflap/configure
@@ -9357,7 +9357,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -10270,7 +10270,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -10288,7 +10288,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
diff --git a/gcc-4.6/libobjc/ChangeLog b/gcc-4.6/libobjc/ChangeLog
index ebbbd46dd..381b97cc0 100644
--- a/gcc-4.6/libobjc/ChangeLog
+++ b/gcc-4.6/libobjc/ChangeLog
@@ -1,3 +1,34 @@
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure: Regenerate.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-10-14 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ Backport from mainline
+ 2011-10-09 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR libobjc/49883
+ * init.c (__objc_exec_class): Work around a bug in clang's code
+ generation. Clang sets the class->info field to values different
+ from 0x1 or 0x2 (the only allowed values in the traditional GNU
+ Objective-C runtime ABI) to store some additional information, but
+ this breaks backwards compatibility. Wipe out all the bits in the
+ fields other than the first two upon loading a class.
+
+2011-10-14 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ Backport from mainline
+ 2011-08-06 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ PR libobjc/50002
+ * class.c (__objc_update_classes_with_methods): Iterate over meta
+ classes as well as normal classes when refreshing the method
+ implementations. This fixes replacing class methods.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/libobjc/class.c b/gcc-4.6/libobjc/class.c
index 61d6fdf2f..fb57293a1 100644
--- a/gcc-4.6/libobjc/class.c
+++ b/gcc-4.6/libobjc/class.c
@@ -850,35 +850,57 @@ __objc_update_classes_with_methods (struct objc_method *method_a, struct objc_me
while (node != NULL)
{
- /* Iterate over all methods in the class. */
- Class class = node->pointer;
- struct objc_method_list * method_list = class->methods;
-
- while (method_list)
+ /* We execute this loop twice: the first time, we iterate
+ over all methods in the class (instance methods), while
+ the second time we iterate over all methods in the meta
+ class (class methods). */
+ Class class = Nil;
+ BOOL done = NO;
+
+ while (done == NO)
{
- int i;
+ struct objc_method_list * method_list;
- for (i = 0; i < method_list->method_count; ++i)
+ if (class == Nil)
+ {
+ /* The first time, we work on the class. */
+ class = node->pointer;
+ }
+ else
{
- struct objc_method *method = &method_list->method_list[i];
+ /* The second time, we work on the meta class. */
+ class = class->class_pointer;
+ done = YES;
+ }
- /* If the method is one of the ones we are looking
- for, update the implementation. */
- if (method == method_a)
- sarray_at_put_safe (class->dtable,
- (sidx) method_a->method_name->sel_id,
- method_a->method_imp);
+ method_list = class->methods;
- if (method == method_b)
+ while (method_list)
+ {
+ int i;
+
+ for (i = 0; i < method_list->method_count; ++i)
{
- if (method_b != NULL)
+ struct objc_method *method = &method_list->method_list[i];
+
+ /* If the method is one of the ones we are
+ looking for, update the implementation. */
+ if (method == method_a)
sarray_at_put_safe (class->dtable,
- (sidx) method_b->method_name->sel_id,
- method_b->method_imp);
+ (sidx) method_a->method_name->sel_id,
+ method_a->method_imp);
+
+ if (method == method_b)
+ {
+ if (method_b != NULL)
+ sarray_at_put_safe (class->dtable,
+ (sidx) method_b->method_name->sel_id,
+ method_b->method_imp);
+ }
}
+
+ method_list = method_list->method_next;
}
-
- method_list = method_list->method_next;
}
node = node->next;
}
diff --git a/gcc-4.6/libobjc/configure b/gcc-4.6/libobjc/configure
index 0d2393546..045b7d18a 100755
--- a/gcc-4.6/libobjc/configure
+++ b/gcc-4.6/libobjc/configure
@@ -8812,7 +8812,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -9728,7 +9728,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -9746,7 +9746,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
diff --git a/gcc-4.6/libobjc/init.c b/gcc-4.6/libobjc/init.c
index d4475b3b7..23ba41ba1 100644
--- a/gcc-4.6/libobjc/init.c
+++ b/gcc-4.6/libobjc/init.c
@@ -643,6 +643,15 @@ __objc_exec_class (struct objc_module *module)
assert (CLS_ISMETA (class->class_pointer));
DEBUG_PRINTF (" installing class '%s'\n", class->name);
+ /* Workaround for a bug in clang: Clang may set flags other than
+ _CLS_CLASS and _CLS_META even when compiling for the
+ traditional ABI (version 8), confusing our runtime. Try to
+ wipe these flags out. */
+ if (CLS_ISCLASS (class))
+ __CLS_INFO (class) = _CLS_CLASS;
+ else
+ __CLS_INFO (class) = _CLS_META;
+
/* Initialize the subclass list to be NULL. In some cases it
isn't and this crashes the program. */
class->subclass_list = NULL;
diff --git a/gcc-4.6/libquadmath/ChangeLog b/gcc-4.6/libquadmath/ChangeLog
index a8099a6be..0a38e90ab 100644
--- a/gcc-4.6/libquadmath/ChangeLog
+++ b/gcc-4.6/libquadmath/ChangeLog
@@ -1,3 +1,21 @@
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure: Regenerate.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-09-21 Joseph Myers <joseph@codesourcery.com>
+
+ * Makefile.am (FLAGS_TO_PASS): Define.
+ * Makefile.in: Regenerate.
+
+2011-08-01 Jakub Jelinek <jakub@redhat.com>
+
+ * math/rem_pio2q.c (__quadmath_kernel_rem_pio2): Fix up fq to y
+ conversion for prec 3 and __FLT_EVAL_METHOD__ != 0.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/libquadmath/Makefile.am b/gcc-4.6/libquadmath/Makefile.am
index d8dc2c394..c7be3e554 100644
--- a/gcc-4.6/libquadmath/Makefile.am
+++ b/gcc-4.6/libquadmath/Makefile.am
@@ -107,6 +107,9 @@ AM_MAKEFLAGS = \
"RANLIB=$(RANLIB)" \
"DESTDIR=$(DESTDIR)"
+# Subdir rules rely on $(FLAGS_TO_PASS)
+FLAGS_TO_PASS = $(AM_MAKEFLAGS)
+
MAKEOVERRIDES=
# AM_CONDITIONAL on configure option --generated-files-in-srcdir
diff --git a/gcc-4.6/libquadmath/Makefile.in b/gcc-4.6/libquadmath/Makefile.in
index 6bf7c1138..6e389cf6a 100644
--- a/gcc-4.6/libquadmath/Makefile.in
+++ b/gcc-4.6/libquadmath/Makefile.in
@@ -385,6 +385,9 @@ AUTOMAKE_OPTIONS = 1.8 foreign
@BUILD_LIBQUADMATH_TRUE@ "RANLIB=$(RANLIB)" \
@BUILD_LIBQUADMATH_TRUE@ "DESTDIR=$(DESTDIR)"
+
+# Subdir rules rely on $(FLAGS_TO_PASS)
+@BUILD_LIBQUADMATH_TRUE@FLAGS_TO_PASS = $(AM_MAKEFLAGS)
@BUILD_LIBQUADMATH_TRUE@MAKEOVERRIDES =
@BUILD_LIBQUADMATH_TRUE@@GENINSRC_FALSE@STAMP_GENINSRC =
diff --git a/gcc-4.6/libquadmath/configure b/gcc-4.6/libquadmath/configure
index f5318460e..e787e3088 100755
--- a/gcc-4.6/libquadmath/configure
+++ b/gcc-4.6/libquadmath/configure
@@ -8742,7 +8742,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -9658,7 +9658,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -9676,7 +9676,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
diff --git a/gcc-4.6/libquadmath/math/rem_pio2q.c b/gcc-4.6/libquadmath/math/rem_pio2q.c
index a1c0b831d..47ee8ef20 100644
--- a/gcc-4.6/libquadmath/math/rem_pio2q.c
+++ b/gcc-4.6/libquadmath/math/rem_pio2q.c
@@ -282,14 +282,20 @@ recompute:
break;
case 3: /* painful */
for (i=jz;i>0;i--) {
- fw = fq[i-1]+fq[i];
- fq[i] += fq[i-1]-fw;
- fq[i-1] = fw;
+#if __FLT_EVAL_METHOD__ != 0
+ volatile
+#endif
+ double fv = (double)(fq[i-1]+fq[i]);
+ fq[i] += fq[i-1]-fv;
+ fq[i-1] = fv;
}
for (i=jz;i>1;i--) {
- fw = fq[i-1]+fq[i];
- fq[i] += fq[i-1]-fw;
- fq[i-1] = fw;
+#if __FLT_EVAL_METHOD__ != 0
+ volatile
+#endif
+ double fv = (double)(fq[i-1]+fq[i]);
+ fq[i] += fq[i-1]-fv;
+ fq[i-1] = fv;
}
for (fw=0.0,i=jz;i>=2;i--) fw += fq[i];
if(ih==0) {
diff --git a/gcc-4.6/libssp/ChangeLog b/gcc-4.6/libssp/ChangeLog
index 79b8b18c3..a49e2c951 100644
--- a/gcc-4.6/libssp/ChangeLog
+++ b/gcc-4.6/libssp/ChangeLog
@@ -1,3 +1,11 @@
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure: Regenerate.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/libssp/configure b/gcc-4.6/libssp/configure
index 565523140..f090a39ea 100755
--- a/gcc-4.6/libssp/configure
+++ b/gcc-4.6/libssp/configure
@@ -8879,7 +8879,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -9795,7 +9795,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -9813,7 +9813,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
diff --git a/gcc-4.6/libstdc++-v3/ChangeLog b/gcc-4.6/libstdc++-v3/ChangeLog
index 9df48f81d..7036b53c4 100644
--- a/gcc-4.6/libstdc++-v3/ChangeLog
+++ b/gcc-4.6/libstdc++-v3/ChangeLog
@@ -1,7 +1,233 @@
+2012-01-03 Chase Douglas <chase.douglas@canonical.com>
+ Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/bits/shared_ptr.h: Default copy ctor and assignment.
+ * include/bits/shared_ptr_base.h: Likewise.
+ * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error
+ line numbers.
+ * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
+
+2011-12-30 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/51711
+ * include/bits/regex.h (regex_replace): Fix thinko.
+ * testsuite/28_regex/algorithms/regex_replace/char/51711.cc: New.
+ * testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc:
+ Likewise.
+
+2011-12-19 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/51626
+ * include/bits/stl_uninitialized.h (_Construct_default_a_impl): Define
+ overloaded functions to conditionally use allocator::construct.
+ (_Construct_default_a): Define to dispatch to appropriate
+ _Construct_default_a_impl overload.
+ (__uninitialized_default_a, __uninitialized_default_n_a): Use
+ _Construct_default_a.
+ * testsuite/20_util/allocator/51626.cc: New.
+
+2011-12-19 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Adjust
+ dg-error line numbers.
+ * testsuite/ext/type_traits/add_unsigned_floating_neg.cc: Likewise.
+ * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc: Likewise.
+ * testsuite/ext/type_traits/add_unsigned_integer_neg.cc: Likewise.
+
+2011-12-19 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ * include/c_global/cmath: Update copyright years.
+ * include/ext/type_traits.h: Likewise.
+
+2011-12-19 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ Backport from mainline
+ 2011-11-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/c_global/cmath (atan2, pow): Simplify constraining on the
+ return type.
+
+ Backport from mainline
+ 2011-11-12 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/51083
+ * include/ext/type_traits.h (__promote): Only define __type member
+ for integral and floating point types, to prevent math functions
+ participating in overload resolution for other types.
+ (__promote_2, __promote_3, __promote_4): Use __promote in default
+ template argument values, so deduction only succeeds for integral and
+ floating point types.
+ * testsuite/26_numerics/cmath/51083.cc: New.
+ * testsuite/26_numerics/complex/51083.cc: New.
+ * testsuite/tr1/8_c_compatibility/cmath/51083.cc: New.
+ * testsuite/tr1/8_c_compatibility/complex/51083.cc: New.
+
+2011-12-19 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/50862
+ * include/std/condition_variable (condition_variable_any::wait): Fix
+ deadlock and ensure _Lock::lock() is called on exit.
+ * testsuite/30_threads/condition_variable_any/50862.cc: New.
+
+2011-12-18 Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/51540
+ * include/bits/stl_numeric.h (partial_sum): Adjust doxygen comments.
+
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure: Regenerate.
+
+2011-11-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/51142
+ * include/debug/unordered_map (unordered_map<>::erase(iterator),
+ unordered_multimap<>::erase(iterator)): Add, consistently with
+ LWG 2059.
+ * include/debug/unordered_set (unordered_set<>::erase(iterator),
+ unordered_multiset<>::erase(iterator)): Likewise.
+ * include/debug/map.h (map<>::erase(iterator)): Likewise.
+ * include/debug/multimap.h (multimap<>::erase(iterator)): Likewise.
+ * include/profile/map.h (map<>::erase(iterator)): Likewise.
+ * include/profile/multimap.h (multimap<>::erase(iterator)): Likewise.
+ * include/bits/hashtable.h (_Hashtable<>::erase(iterator)): Likewise.
+ * include/bits/stl_map.h (map<>::erase(iterator)): Likewise.
+ * include/bits/stl_multimap.h (multimap<>::erase(iterator)): Likewise.
+ * include/bits/stl_tree.h (_Rb_tree<>::erase(iterator)): Likewise.
+ * testsuite/23_containers/unordered_map/erase/51142.cc: New.
+ * testsuite/23_containers/multimap/modifiers/erase/51142.cc: Likewise.
+ * testsuite/23_containers/set/modifiers/erase/51142.cc: Likewise.
+ * testsuite/23_containers/unordered_multimap/erase/51142.cc: Likewise.
+ * testsuite/23_containers/unordered_set/erase/51142.cc: Likewise.
+ * testsuite/23_containers/multiset/modifiers/erase/51142.cc: Likewise.
+ * testsuite/23_containers/unordered_multiset/erase/51142.cc: Likewise.
+ * testsuite/23_containers/map/modifiers/erase/51142.cc: Likewise.
+
+2011-11-15 Jason Dick <dickphd@gmail.com>
+
+ PR libstdc++/51133
+ * include/tr1/poly_hermite.tcc (__poly_hermite_recursion): Fix
+ wrong sign in recursion relation.
+
+2011-11-02 Richard B. Kreckel <kreckel@ginac.de>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/50880
+ * include/std/complex (__complex_acosh): Fix in a better way,
+ use Kahan's formula.
+ * include/tr1/complex (__complex_acosh): Likewise.
+
+2011-11-02 Richard B. Kreckel <kreckel@ginac.de>
+ Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/50880
+ * include/std/complex (__complex_acosh): Fix for __z.real() < 0.
+ * include/tr1/complex (__complex_acosh): Likewise.
+ * testsuite/26_numerics/complex/50880.cc: New.
+ * testsuite/tr1/8_c_compatibility/complex/50880.cc: Likewise.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
+2011-10-05 Benjamin Kosnik <bkoz@redhat.com
+ Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/48698
+ * acinclude.m4 (GLIBCXX_ENABLE_SYMVERS): Set libtool_VERSION here.
+ * configure.ac: Move AC_SUBST of libtool_VERSION past call to
+ GLIBCXX_ENABLE_SYMVERS.
+ * configure: Regenerate.
+ * include/bits/c++config: Use __7 as versioned namespace name.
+ * config/abi/pre/gnu-versioned-namespace.ver: Change mangling as
+ per above.
+ * include/c_global/cwchar: Adjust nested namespaces.
+ * testsuite/20_util/bind/48698.cc: Add test case.
+ * testsuite/ext/profile/mutex_extensions_neg.cc: Change line number.
+
+2011-09-30 François Dumont <fdumont@gcc.gnu.org>
+
+ * include/debug/vector (vector<>::erase(iterator, iterator)): Check
+ iterators equality using normal iterators.
+ * include/debug/deque (deque<>::erase(iterator, iterator)): Likewise.
+
+2011-09-30 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/50529
+ * include/bits/vector.tcc (vector<>::erase(iterator, iterator)):
+ Fix to do nothing if the range is empty.
+ * include/bits/stl_bvector.h: Likewise.
+ * include/bits/deque.tcc: Likewise.
+ * include/debug/vector: Adjust.
+ * include/debug/deque: Likewise.
+ * testsuite/23_containers/vector/modifiers/erase/50529.cc: New.
+ * testsuite/23_containers/deque/modifiers/erase/50529.cc: Likewise.
+ * testsuite/23_containers/deque/modifiers/erase/3.cc: Adjust.
+
+2011-09-27 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/49559
+ * include/bits/stl_algo.h (__move_merge_backward): Remove.
+ (__move_merge_adaptive, __move_merge_adaptive_backward): New.
+ (__merge_adaptive): Use the latter two.
+ (__rotate_adaptive): Avoid self move-assignment.
+ * include/bits/stl_algobase.h (move_backward): Fix comment.
+ * testsuite/25_algorithms/stable_sort/49559.cc: New.
+ * testsuite/25_algorithms/inplace_merge/49559.cc: Likewise.
+ * testsuite/25_algorithms/inplace_merge/moveable.cc: Extend.
+ * testsuite/25_algorithms/inplace_merge/moveable2.cc: Likewise.
+ * testsuite/util/testsuite_rvalref.h (rvalstruct::operator=
+ (rvalstruct&&)): Check for self move-assignment.
+
+2011-09-24 John Salmon <john.salmon@deshaw.com>
+
+ PR libstdc++/50510
+ * include/bits/random.tcc (seed_seq::generate): Fix computation.
+
+2011-09-24 John Salmon <john.salmon@deshaw.com>
+
+ PR libstdc++/50509
+ * include/bits/random.tcc (seed_seq::generate): Fix computation.
+
+2011-09-02 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/bits/hashtable.h (_Hashtable<>::_Hashtable(_Hashtable&&)):
+ rearrange to consistently update __ht._M_rehash_policy before using
+ _M_next_bkt on it.
+
+2011-09-02 Paolo Carlini <paolo.carlini@oracle.com>
+ Marc Glisse <marc.glisse@normalesup.org>
+
+ PR libstdc++/50268
+ * include/std/bitset (struct _Sanitize_val): Add.
+ (bitset<>::bitset(unsigned long long)): Fix.
+ * testsuite/23_containers/bitset/cons/50268.cc: New.
+
+2011-07-31 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/parallel/algo.h: Trivial uglification fixes.
+
+2011-07-31 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/49925
+ * include/bits/shared_ptr.h (make_shared): Qualify allocate_shared
+ with std::.
+ * include/bits/shared_ptr_base.h (__make_shared): Likewise.
+
2011-07-27 Jeffrey Yasskin <jyasskin@google.com>
* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Updated.
+2011-07-22 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline
+ 2011-06-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR libstdc++/49293
+ * testsuite/22_locale/time_get/get_weekday/char/38081-1.cc: Tweak
+ for glibc 2.14.
+ * testsuite/22_locale/time_get/get_weekday/char/38081-2.cc: Likewise.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/libstdc++-v3/ChangeLog.google-4_6 b/gcc-4.6/libstdc++-v3/ChangeLog.google-4_6
index 647e9871a..7164214f3 100644
--- a/gcc-4.6/libstdc++-v3/ChangeLog.google-4_6
+++ b/gcc-4.6/libstdc++-v3/ChangeLog.google-4_6
@@ -1,3 +1,108 @@
+2012-01-05 Paul Pluzhnikov <ppluzhnikov@google.com>
+
+ Backport r178624 from google/integration.
+
+ 2011-09-06 Paul Pluzhnikov <ppluzhnikov@google.com>
+
+ * include/bits/stl_vector.h (_M_is_valid): New function.
+ (begin, end, size, capacity, swap, clear): Call it.
+ * include/bits/vector.tcc (operator=): Likewise.
+
+ * libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+ Adjust line numbers.
+ * libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+ Likewise.
+ * libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc:
+ Likewise.
+ * libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc:
+ Likewise.
+
+2011-12-19 H.J. Lu <hongjiu.lu@intel.com>
+ Jing Yu <jingyu@google.com>
+
+ * config/locale/generic/c_locale.h (__convert_from_v): Replace NULL
+ with 0.
+ * config/locale/generic/c_locale.cc (__convert_to_v): Likewise.
+ * config/locale/generic/time_members.cc (_M_put): Likewise.
+
+2011-12-17 Easwaran Raman <eraman@google.com>
+ Backport r182443 from google/main.
+
+ 2011-12-17 Easwaran Raman <eraman@google.com>
+
+ * libsupc++/del_op.cc (delete): Define a new variant
+ void operator delete(void*, std::size_t).
+ * libsupc++/new (delete): Declare
+ void operator delete(void*, std::size_t) throw();
+ * testsuite/util/testsuite_abi.cc (check_version): Add new
+ known version GLIBCXX_3.4.18.
+ * config/abi/pre/gnu.ver: Add new symbol _ZdlPv[jmy] at version
+ GLIBCXX_3.4.18.
+
+2011-12-16 Jeffrey Yasskin <jyasskin@google.com>
+
+ Backport from revs 181473, 182392
+
+ 2011-12-15 Paolo Carlini <paolo.carlini@oracle.com>
+ Jonathan Wakely <jwakely.gcc@gmail.com>
+
+ PR libstdc++/51558
+ * include/bits/functional_hash.h (struct hash): Add static_assert.
+ * src/compatibility-c++0x.cc: Adjust compatibility definitions.
+ * testsuite/23_containers/unordered_map/erase/51142.cc: Adjust.
+ * testsuite/23_containers/unordered_set/erase/51142.cc: Likewise.
+ * testsuite/23_containers/unordered_multimap/erase/51142.cc: Likewise.
+ * testsuite/23_containers/unordered_multiset/erase/51142.cc: Likewise.
+
+ 2011-11-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * src/hash-long-double-aux.cc: Rename to...
+ * src/hash-long-double-tr1-aux.cc: ... this.
+ * src/compatibility-ldbl.cc: Adjust.
+ * src/hash_tr1.cc: Likewise.
+ * src/hash_c++0x.cc: Don't use src/hash-long-double-aux.cc.
+ * include/bits/functional_hash.h (hash<_Tp*>::operator(), specs
+ for integer types, hash<float>::operator(), hash<double>::operator(),
+ hash<long double>::operator()): Declare noexcept.
+ * include/debug/bitset (hash<__debug::bitset>::operator()): Likewise.
+ * include/debug/vector (hash<__debug::vector>::operator()): Likewise.
+ * include/std/system_error (hash<error_code>::operator()): Likewise.
+ * include/std/thread (hash<thread::id>::operator()): Likewise.
+ * include/std/bitset (hash<bitset>::operator()): Likewise.
+ * include/std/typeindex (hash<type_index>::operator()): Likewise.
+ * include/profile/bitset (hash<__profile::vector>::operator()):
+ Likewise.
+ * include/profile/vector (hash<__profile::vector>::operator()):
+ Likewise.
+ * include/ext/vstring.h (hash<__vstring>::operator(),
+ hash<__wvstring>::operator(), hash<__u16vstring>::operator(),
+ hash<__u32vstring>::operator()): Likewise.
+ * include/bits/shared_ptr.h (hash<shared_ptr>::operator()): Likewise.
+ * include/bits/shared_ptr_base.h (hash<__shared_ptr>::operator()):
+ Likewise.
+ * include/bits/unique_ptr.h (hash<unique_ptr>::operator()): Likewise.
+ * include/bits/basic_string.h (hash<string>::operator(),
+ hash<wstring>::operator(), hash<u16string>::operator(),
+ hash<u32string>::operator()): Likewise.
+ * include/bits/vector.tcc (hash<vector>::operator()): Likewise.
+ * include/bits/stl_bvector.h (hash<vector>::operator()): Likewise.
+ * libsupc++/typeinfo (type_info::hash_code): Use noexcept instead of
+ throw().
+
+2011-12-06 Jeffrey Yasskin <jyasskin@google.com>
+
+ Backport from rev 180707
+
+ 2011-10-31 Jason Merrill <jason@redhat.com>
+
+ PR c++/50920
+ * include/bits/c++0x_warning.h: Change -std=c++0x to -std=c++11.
+
+2011-11-06 Xinliang David Li <davidxl@google.com>
+
+ backport 181071 from trunk
+ * include/backward/hashtable.h: Make __stl_prime_list comdat.
+
2011-08-01 Jeffrey Yasskin <jyasskin@google.com>
* include/bits/stl_heap.h(make_heap): Add a newline back.
diff --git a/gcc-4.6/libstdc++-v3/acinclude.m4 b/gcc-4.6/libstdc++-v3/acinclude.m4
index ed8b129c2..d6735e9b5 100644
--- a/gcc-4.6/libstdc++-v3/acinclude.m4
+++ b/gcc-4.6/libstdc++-v3/acinclude.m4
@@ -2861,10 +2861,15 @@ dnl
dnl Add version tags to symbols in shared library (or not), additionally
dnl marking other symbols as private/local (or not).
dnl
+dnl Sets libtool_VERSION, and determines shared library SONAME.
+dnl
+dnl This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no.
+dnl
dnl --enable-symvers=style adds a version script to the linker call when
dnl creating the shared library. The choice of version script is
dnl controlled by 'style'.
dnl --disable-symvers does not.
+dnl
dnl + Usage: GLIBCXX_ENABLE_SYMVERS[(DEFAULT)]
dnl Where DEFAULT is either 'yes' or 'no'. Passing `yes' tries to
dnl choose a default style based on linker characteristics. Passing
@@ -3001,7 +3006,10 @@ changequote([,])dnl
fi
fi
-# Everything parsed; figure out what file to use.
+# For libtool versioning info, format is CURRENT:REVISION:AGE
+libtool_VERSION=6:16:0
+
+# Everything parsed; figure out what files and settings to use.
case $enable_symvers in
no)
SYMVER_FILE=config/abi/pre/none.ver
@@ -3012,6 +3020,7 @@ case $enable_symvers in
[Define to use GNU versioning in the shared library.])
;;
gnu-versioned-namespace)
+ libtool_VERSION=7:0:0
SYMVER_FILE=config/abi/pre/gnu-versioned-namespace.ver
AC_DEFINE(_GLIBCXX_SYMVER_GNU_NAMESPACE, 1,
[Define to use GNU namespace versioning in the shared library.])
diff --git a/gcc-4.6/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver b/gcc-4.6/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
index ab9380c37..32bcf67d8 100644
--- a/gcc-4.6/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
+++ b/gcc-4.6/libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
@@ -20,23 +20,23 @@
## with this library; see the file COPYING3. If not see
## <http://www.gnu.org/licenses/>.
-GLIBCXX_5.0 {
+GLIBCXX_7.0 {
global:
# Names inside the 'extern' block are demangled names.
extern "C++"
{
- std::_6::*;
+ std::__7::*;
std::*
};
# locale
- _ZNSt2_69has_facetINS_*;
+ _ZNSt3__79has_facetINS_*;
# hash
- _ZNSt8__detail2_612__prime_listE;
- _ZNSt3tr18__detail2_612__prime_listE;
+ _ZNSt8__detail3__712__prime_listE;
+ _ZNSt3tr18__detail3__712__prime_listE;
# thread/mutex/condition_variable/future
__once_proxy;
@@ -73,41 +73,41 @@ GLIBCXX_5.0 {
_ZTv0_n*;
# std::__detail::_List_node_base
- _ZNSt8__detail2_615_List_node_base7_M_hook*;
- _ZNSt8__detail2_615_List_node_base9_M_unhookEv;
- _ZNSt8__detail2_615_List_node_base10_M_reverseEv;
- _ZNSt8__detail2_615_List_node_base11_M_transfer*;
- _ZNSt8__detail2_615_List_node_base4swapER*;
+ _ZNSt8__detail3__715_List_node_base7_M_hook*;
+ _ZNSt8__detail3__715_List_node_base9_M_unhookEv;
+ _ZNSt8__detail3__715_List_node_base10_M_reverseEv;
+ _ZNSt8__detail3__715_List_node_base11_M_transfer*;
+ _ZNSt8__detail3__715_List_node_base4swapER*;
# std::__convert_to_v
- _ZNSt2_614__convert_to_v*;
+ _ZNSt3__714__convert_to_v*;
# std::__copy_streambufs
- _ZNSt2_617__copy_streambufsI*;
- _ZNSt2_621__copy_streambufs_eofI*;
+ _ZNSt3__717__copy_streambufsI*;
+ _ZNSt3__721__copy_streambufs_eofI*;
# __gnu_cxx::__atomic_add
# __gnu_cxx::__exchange_and_add
- _ZN9__gnu_cxx2_612__atomic_addEPV[il][il];
- _ZN9__gnu_cxx2_618__exchange_and_addEPV[li][il];
+ _ZN9__gnu_cxx3__712__atomic_addEPV[il][il];
+ _ZN9__gnu_cxx3__718__exchange_and_addEPV[li][il];
# __gnu_cxx::__pool
- _ZN9__gnu_cxx2_66__poolILb[01]EE13_M_initializeEv;
- _ZN9__gnu_cxx2_66__poolILb[01]EE16_M_reserve_blockE[jm][jm];
- _ZN9__gnu_cxx2_66__poolILb[01]EE16_M_reclaim_blockEPc[jm];
- _ZN9__gnu_cxx2_66__poolILb[01]EE10_M_destroyEv;
- _ZN9__gnu_cxx2_66__poolILb1EE16_M_get_thread_idEv;
+ _ZN9__gnu_cxx3__76__poolILb[01]EE13_M_initializeEv;
+ _ZN9__gnu_cxx3__76__poolILb[01]EE16_M_reserve_blockE[jm][jm];
+ _ZN9__gnu_cxx3__76__poolILb[01]EE16_M_reclaim_blockEPc[jm];
+ _ZN9__gnu_cxx3__76__poolILb[01]EE10_M_destroyEv;
+ _ZN9__gnu_cxx3__76__poolILb1EE16_M_get_thread_idEv;
- _ZN9__gnu_cxx2_617__pool_alloc_base9_M_refillE[jm];
- _ZN9__gnu_cxx2_617__pool_alloc_base16_M_get_free_listE[jm];
- _ZN9__gnu_cxx2_617__pool_alloc_base12_M_get_mutexEv;
+ _ZN9__gnu_cxx3__717__pool_alloc_base9_M_refillE[jm];
+ _ZN9__gnu_cxx3__717__pool_alloc_base16_M_get_free_listE[jm];
+ _ZN9__gnu_cxx3__717__pool_alloc_base12_M_get_mutexEv;
- _ZN9__gnu_cxx2_69free_list6_M_getE[jm];
- _ZN9__gnu_cxx2_69free_list8_M_clearEv;
+ _ZN9__gnu_cxx3__79free_list6_M_getE[jm];
+ _ZN9__gnu_cxx3__79free_list8_M_clearEv;
# __gnu_cxx::stdio_sync_filebuf
- _ZTVN9__gnu_cxx2_618stdio_sync_filebufI[cw]St2_611char_traitsI[cw]EEE;
- _ZN9__gnu_cxx2_618stdio_sync_filebufI[cw]NSt2_611char_traitsI[cw]EEE[5-9]*;
+ _ZTVN9__gnu_cxx3__718stdio_sync_filebufI[cw]St3__711char_traitsI[cw]EEE;
+ _ZN9__gnu_cxx3__718stdio_sync_filebufI[cw]NSt3__711char_traitsI[cw]EEE[5-9]*;
# debug mode
_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv;
@@ -212,7 +212,7 @@ CXXABI_2.0 {
_ZSt15_Fnv_hash_bytesPKv*;
# __gnu_cxx::_verbose_terminate_handler()
- _ZN9__gnu_cxx2_627__verbose_terminate_handlerEv;
+ _ZN9__gnu_cxx3__727__verbose_terminate_handlerEv;
# *_type_info classes, ctor and dtor
_ZN10__cxxabiv117__array_type_info*;
diff --git a/gcc-4.6/libstdc++-v3/config/abi/pre/gnu.ver b/gcc-4.6/libstdc++-v3/config/abi/pre/gnu.ver
index 57744a410..3d5ccff4b 100644
--- a/gcc-4.6/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/gcc-4.6/libstdc++-v3/config/abi/pre/gnu.ver
@@ -1279,6 +1279,17 @@ GLIBCXX_3.4.16 {
} GLIBCXX_3.4.15;
+GLIBCXX_3.4.17 {
+
+} GLIBCXX_3.4.16;
+
+GLIBCXX_3.4.18 {
+
+ # operator delete(void*, , unsigned long)
+ _ZdlPv[jmy];
+
+} GLIBCXX_3.4.17;
+
# Symbols in the support library (libsupc++) have their own tag.
CXXABI_1.3 {
diff --git a/gcc-4.6/libstdc++-v3/config/locale/generic/c_locale.cc b/gcc-4.6/libstdc++-v3/config/locale/generic/c_locale.cc
index 7e34fcf32..783bf30ef 100644
--- a/gcc-4.6/libstdc++-v3/config/locale/generic/c_locale.cc
+++ b/gcc-4.6/libstdc++-v3/config/locale/generic/c_locale.cc
@@ -52,8 +52,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{
// Assumes __s formatted for "C" locale.
char* __old = setlocale(LC_ALL, 0);
- char* __sav = NULL;
- if (__old != NULL)
+ char* __sav = 0;
+ if (__old)
{
const size_t __len = strlen(__old) + 1;
__sav = new char[__len];
@@ -121,8 +121,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{
// Assumes __s formatted for "C" locale.
char* __old = setlocale(LC_ALL, 0);
- char* __sav = NULL;
- if (__old != NULL)
+ char* __sav = 0;
+ if (__old)
{
const size_t __len = strlen(__old) + 1;
__sav = new char[__len];
@@ -170,8 +170,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{
// Assumes __s formatted for "C" locale.
char* __old = setlocale(LC_ALL, 0);
- char* __sav = NULL;
- if (__old != NULL)
+ char* __sav = 0;
+ if (__old)
{
const size_t __len = strlen(__old) + 1;
__sav = new char[__len];
diff --git a/gcc-4.6/libstdc++-v3/config/locale/generic/c_locale.h b/gcc-4.6/libstdc++-v3/config/locale/generic/c_locale.h
index 6e6f673ec..fa42918cc 100644
--- a/gcc-4.6/libstdc++-v3/config/locale/generic/c_locale.h
+++ b/gcc-4.6/libstdc++-v3/config/locale/generic/c_locale.h
@@ -60,7 +60,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{
char* __old = std::setlocale(LC_NUMERIC, 0);
char* __sav = 0;
- if (__old != NULL && __builtin_strcmp(__old, "C"))
+ if (__old && __builtin_strcmp(__old, "C"))
{
const size_t __len = __builtin_strlen(__old) + 1;
__sav = new char[__len];
diff --git a/gcc-4.6/libstdc++-v3/config/locale/generic/time_members.cc b/gcc-4.6/libstdc++-v3/config/locale/generic/time_members.cc
index fb9eb6ec1..724dd26b7 100644
--- a/gcc-4.6/libstdc++-v3/config/locale/generic/time_members.cc
+++ b/gcc-4.6/libstdc++-v3/config/locale/generic/time_members.cc
@@ -45,8 +45,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
const tm* __tm) const throw()
{
char* __old = setlocale(LC_ALL, 0);
- char* __sav = NULL;
- if (__old != NULL)
+ char* __sav = 0;
+ if (__old)
{
const size_t __llen = strlen(__old) + 1;
__sav = new char[__llen];
@@ -134,8 +134,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
const tm* __tm) const throw()
{
char* __old = setlocale(LC_ALL, 0);
- char* __sav = NULL;
- if (__old != NULL)
+ char* __sav = 0;
+ if (__old)
{
const size_t __llen = strlen(__old) + 1;
__sav = new char[__llen];
diff --git a/gcc-4.6/libstdc++-v3/configure b/gcc-4.6/libstdc++-v3/configure
index a68accae8..9aedd4fb7 100755
--- a/gcc-4.6/libstdc++-v3/configure
+++ b/gcc-4.6/libstdc++-v3/configure
@@ -644,6 +644,7 @@ GLIBCXX_LDBL_COMPAT_FALSE
GLIBCXX_LDBL_COMPAT_TRUE
ENABLE_VISIBILITY_FALSE
ENABLE_VISIBILITY_TRUE
+libtool_VERSION
ENABLE_SYMVERS_SOL2_FALSE
ENABLE_SYMVERS_SOL2_TRUE
ENABLE_SYMVERS_SUN_FALSE
@@ -787,7 +788,6 @@ build_vendor
build_cpu
build
multi_basedir
-libtool_VERSION
target_alias
host_alias
build_alias
@@ -2824,10 +2824,6 @@ ac_config_headers="$ac_config_headers config.h"
# exported. Only used at the end of this file.
### am handles this now? ORIGINAL_LD_FOR_MULTILIBS=$LD
-# For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:16:0
-
-
# Find the rest of the source tree framework.
# Default to --enable-multilib
# Check whether --enable-multilib was given.
@@ -9717,7 +9713,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -10633,7 +10629,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -10651,7 +10647,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
@@ -11503,7 +11499,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11506 "configure"
+#line 11502 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11609,7 +11605,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11612 "configure"
+#line 11608 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12541,7 +12537,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
esac
;;
- freebsd[12]*)
+ freebsd2.*)
# C++ shared libraries reported to be fairly broken before
# switch to ELF
ld_shlibs_CXX=no
@@ -14316,7 +14312,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -14334,7 +14330,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
@@ -14967,7 +14963,7 @@ fi
#
# Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style.
cat > conftest.$ac_ext << EOF
-#line 14970 "configure"
+#line 14966 "configure"
struct S { ~S(); };
void bar();
void foo()
@@ -15335,7 +15331,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; }
# Fake what AC_TRY_COMPILE does.
cat > conftest.$ac_ext << EOF
-#line 15338 "configure"
+#line 15334 "configure"
int main()
{
typedef bool atomic_type;
@@ -15372,7 +15368,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15375 "configure"
+#line 15371 "configure"
int main()
{
typedef short atomic_type;
@@ -15409,7 +15405,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15412 "configure"
+#line 15408 "configure"
int main()
{
// NB: _Atomic_word not necessarily int.
@@ -15447,7 +15443,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15450 "configure"
+#line 15446 "configure"
int main()
{
typedef long long atomic_type;
@@ -15523,7 +15519,7 @@ $as_echo "$as_me: WARNING: Performance of certain classes will degrade as a resu
# unnecessary for this test.
cat > conftest.$ac_ext << EOF
-#line 15526 "configure"
+#line 15522 "configure"
int main()
{
_Decimal32 d1;
@@ -64282,7 +64278,10 @@ $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
fi
fi
-# Everything parsed; figure out what file to use.
+# For libtool versioning info, format is CURRENT:REVISION:AGE
+libtool_VERSION=6:16:0
+
+# Everything parsed; figure out what files and settings to use.
case $enable_symvers in
no)
SYMVER_FILE=config/abi/pre/none.ver
@@ -64294,6 +64293,7 @@ $as_echo "#define _GLIBCXX_SYMVER_GNU 1" >>confdefs.h
;;
gnu-versioned-namespace)
+ libtool_VERSION=7:0:0
SYMVER_FILE=config/abi/pre/gnu-versioned-namespace.ver
$as_echo "#define _GLIBCXX_SYMVER_GNU_NAMESPACE 1" >>confdefs.h
@@ -64444,6 +64444,8 @@ fi
$as_echo "$glibcxx_ptrdiff_t_is_i" >&6; }
+
+
# Check whether --enable-visibility was given.
if test "${enable_visibility+set}" = set; then :
enableval=$enable_visibility;
diff --git a/gcc-4.6/libstdc++-v3/configure.ac b/gcc-4.6/libstdc++-v3/configure.ac
index ccf12306d..cc4c9bf2d 100644
--- a/gcc-4.6/libstdc++-v3/configure.ac
+++ b/gcc-4.6/libstdc++-v3/configure.ac
@@ -11,10 +11,6 @@ AC_CONFIG_HEADER(config.h)
# exported. Only used at the end of this file.
### am handles this now? ORIGINAL_LD_FOR_MULTILIBS=$LD
-# For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=6:16:0
-AC_SUBST(libtool_VERSION)
-
# Find the rest of the source tree framework.
AM_ENABLE_MULTILIB(, ..)
@@ -303,6 +299,8 @@ GCC_HEADER_STDINT(include/gstdint.h)
# This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no.
GLIBCXX_ENABLE_SYMVERS([yes])
+AC_SUBST(libtool_VERSION)
+
GLIBCXX_ENABLE_VISIBILITY([yes])
ac_ldbl_compat=no
diff --git a/gcc-4.6/libstdc++-v3/include/backward/hashtable.h b/gcc-4.6/libstdc++-v3/include/backward/hashtable.h
index c3eefccdc..e04d8faa4 100644
--- a/gcc-4.6/libstdc++-v3/include/backward/hashtable.h
+++ b/gcc-4.6/libstdc++-v3/include/backward/hashtable.h
@@ -210,7 +210,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Note: assumes long is at least 32 bits.
enum { _S_num_primes = 29 };
- static const unsigned long __stl_prime_list[_S_num_primes] =
+ template<typename _PrimeType>
+ struct _Hashtable_prime_list
+ {
+ static const _PrimeType __stl_prime_list[_S_num_primes];
+
+ static const _PrimeType*
+ _S_get_prime_list();
+ };
+
+ template<typename _PrimeType> const _PrimeType
+ _Hashtable_prime_list<_PrimeType>::__stl_prime_list[_S_num_primes] =
{
5ul, 53ul, 97ul, 193ul, 389ul,
769ul, 1543ul, 3079ul, 6151ul, 12289ul,
@@ -220,11 +230,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
805306457ul, 1610612741ul, 3221225473ul, 4294967291ul
};
+ template<class _PrimeType> inline const _PrimeType*
+ _Hashtable_prime_list<_PrimeType>::_S_get_prime_list()
+ {
+ return __stl_prime_list;
+ }
+
inline unsigned long
__stl_next_prime(unsigned long __n)
{
- const unsigned long* __first = __stl_prime_list;
- const unsigned long* __last = __stl_prime_list + (int)_S_num_primes;
+ const unsigned long* __first = _Hashtable_prime_list<unsigned long>::_S_get_prime_list();
+ const unsigned long* __last = __first + (int)_S_num_primes;
const unsigned long* pos = std::lower_bound(__first, __last, __n);
return pos == __last ? *(__last - 1) : *pos;
}
@@ -418,7 +434,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
size_type
max_bucket_count() const
- { return __stl_prime_list[(int)_S_num_primes - 1]; }
+ { return _Hashtable_prime_list<unsigned long>::
+ _S_get_prime_list()[(int)_S_num_primes - 1];
+ }
size_type
elems_in_bucket(size_type __bucket) const
diff --git a/gcc-4.6/libstdc++-v3/include/bits/basic_string.h b/gcc-4.6/libstdc++-v3/include/bits/basic_string.h
index 102ef77a6..2f708b7a8 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/basic_string.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/basic_string.h
@@ -2986,7 +2986,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public __hash_base<size_t, string>
{
size_t
- operator()(const string& __s) const
+ operator()(const string& __s) const noexcept
{ return std::_Hash_impl::hash(__s.data(), __s.length()); }
};
@@ -2997,7 +2997,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public __hash_base<size_t, wstring>
{
size_t
- operator()(const wstring& __s) const
+ operator()(const wstring& __s) const noexcept
{ return std::_Hash_impl::hash(__s.data(),
__s.length() * sizeof(wchar_t)); }
};
@@ -3011,7 +3011,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public __hash_base<size_t, u16string>
{
size_t
- operator()(const u16string& __s) const
+ operator()(const u16string& __s) const noexcept
{ return std::_Hash_impl::hash(__s.data(),
__s.length() * sizeof(char16_t)); }
};
@@ -3022,7 +3022,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public __hash_base<size_t, u32string>
{
size_t
- operator()(const u32string& __s) const
+ operator()(const u32string& __s) const noexcept
{ return std::_Hash_impl::hash(__s.data(),
__s.length() * sizeof(char32_t)); }
};
diff --git a/gcc-4.6/libstdc++-v3/include/bits/c++0x_warning.h b/gcc-4.6/libstdc++-v3/include/bits/c++0x_warning.h
index 0685a50e6..eb072d00a 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/c++0x_warning.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/c++0x_warning.h
@@ -29,9 +29,9 @@
#define _CXX0X_WARNING_H 1
#ifndef __GXX_EXPERIMENTAL_CXX0X__
-#error This file requires compiler and library support for the upcoming \
-ISO C++ standard, C++0x. This support is currently experimental, and must be \
-enabled with the -std=c++0x or -std=gnu++0x compiler options.
+#error This file requires compiler and library support for the \
+ISO C++ 2011 standard. This support is currently experimental, and must be \
+enabled with the -std=c++11 or -std=gnu++11 compiler options.
#endif
#endif
diff --git a/gcc-4.6/libstdc++-v3/include/bits/c++config b/gcc-4.6/libstdc++-v3/include/bits/c++config
index 8ac3c159d..fce52475f 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/c++config
+++ b/gcc-4.6/libstdc++-v3/include/bits/c++config
@@ -162,41 +162,42 @@ namespace std
// Defined if inline namespaces are used for versioning.
-#define _GLIBCXX_INLINE_VERSION
+#define _GLIBCXX_INLINE_VERSION
// Inline namespace for symbol versioning.
#if _GLIBCXX_INLINE_VERSION
+
namespace std
{
- inline namespace _6 { }
+ inline namespace __7 { }
- namespace rel_ops { inline namespace _6 { } }
+ namespace rel_ops { inline namespace __7 { } }
namespace tr1
{
- inline namespace _6 { }
- namespace placeholders { inline namespace _6 { } }
- namespace regex_constants { inline namespace _6 { } }
- namespace __detail { inline namespace _6 { } }
+ inline namespace __7 { }
+ namespace placeholders { inline namespace __7 { } }
+ namespace regex_constants { inline namespace __7 { } }
+ namespace __detail { inline namespace __7 { } }
}
- namespace decimal { inline namespace _6 { } }
+ namespace decimal { inline namespace __7 { } }
- namespace chrono { inline namespace _6 { } }
- namespace placeholders { inline namespace _6 { } }
- namespace regex_constants { inline namespace _6 { } }
- namespace this_thread { inline namespace _6 { } }
+ namespace chrono { inline namespace __7 { } }
+ namespace placeholders { inline namespace __7 { } }
+ namespace regex_constants { inline namespace __7 { } }
+ namespace this_thread { inline namespace __7 { } }
- namespace __detail { inline namespace _6 { } }
- namespace __regex { inline namespace _6 { } }
+ namespace __detail { inline namespace __7 { } }
+ namespace __regex { inline namespace __7 { } }
}
namespace __gnu_cxx
{
- inline namespace _6 { }
- namespace __detail { inline namespace _6 { } }
+ inline namespace __7 { }
+ namespace __detail { inline namespace __7 { } }
}
-# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace _6 {
+# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 {
# define _GLIBCXX_END_NAMESPACE_VERSION }
#else
# define _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -213,7 +214,7 @@ namespace std
namespace __cxx1998
{
#if _GLIBCXX_INLINE_VERSION
- inline namespace _6 { }
+ inline namespace __7 { }
#endif
}
diff --git a/gcc-4.6/libstdc++-v3/include/bits/deque.tcc b/gcc-4.6/libstdc++-v3/include/bits/deque.tcc
index 389fc80d9..638102274 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/deque.tcc
+++ b/gcc-4.6/libstdc++-v3/include/bits/deque.tcc
@@ -218,7 +218,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
deque<_Tp, _Alloc>::
erase(iterator __first, iterator __last)
{
- if (__first == begin() && __last == end())
+ if (__first == __last)
+ return __first;
+ else if (__first == begin() && __last == end())
{
clear();
return end();
diff --git a/gcc-4.6/libstdc++-v3/include/bits/functional_hash.h b/gcc-4.6/libstdc++-v3/include/bits/functional_hash.h
index e77cb4e17..e892159d4 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/functional_hash.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/functional_hash.h
@@ -57,8 +57,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Tp>
struct hash : public __hash_base<size_t, _Tp>
{
- size_t
- operator()(_Tp __val) const;
+ static_assert(sizeof(_Tp) < 0,
+ "std::hash is not specialized for this type");
+ size_t operator()(const _Tp&) const noexcept;
};
/// Partial specializations for pointer types.
@@ -66,61 +67,64 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
struct hash<_Tp*> : public __hash_base<size_t, _Tp*>
{
size_t
- operator()(_Tp* __p) const
+ operator()(_Tp* __p) const noexcept
{ return reinterpret_cast<size_t>(__p); }
};
// Explicit specializations for integer types.
#define _Cxx_hashtable_define_trivial_hash(_Tp) \
template<> \
- inline size_t \
- hash<_Tp>::operator()(_Tp __val) const \
- { return static_cast<size_t>(__val); }
+ struct hash<_Tp> : public __hash_base<size_t, _Tp> \
+ { \
+ size_t \
+ operator()(_Tp __val) const noexcept \
+ { return static_cast<size_t>(__val); } \
+ };
/// Explicit specialization for bool.
- _Cxx_hashtable_define_trivial_hash(bool);
+ _Cxx_hashtable_define_trivial_hash(bool)
/// Explicit specialization for char.
- _Cxx_hashtable_define_trivial_hash(char);
+ _Cxx_hashtable_define_trivial_hash(char)
/// Explicit specialization for signed char.
- _Cxx_hashtable_define_trivial_hash(signed char);
+ _Cxx_hashtable_define_trivial_hash(signed char)
/// Explicit specialization for unsigned char.
- _Cxx_hashtable_define_trivial_hash(unsigned char);
+ _Cxx_hashtable_define_trivial_hash(unsigned char)
/// Explicit specialization for wchar_t.
- _Cxx_hashtable_define_trivial_hash(wchar_t);
+ _Cxx_hashtable_define_trivial_hash(wchar_t)
/// Explicit specialization for char16_t.
- _Cxx_hashtable_define_trivial_hash(char16_t);
+ _Cxx_hashtable_define_trivial_hash(char16_t)
/// Explicit specialization for char32_t.
- _Cxx_hashtable_define_trivial_hash(char32_t);
+ _Cxx_hashtable_define_trivial_hash(char32_t)
/// Explicit specialization for short.
- _Cxx_hashtable_define_trivial_hash(short);
+ _Cxx_hashtable_define_trivial_hash(short)
/// Explicit specialization for int.
- _Cxx_hashtable_define_trivial_hash(int);
+ _Cxx_hashtable_define_trivial_hash(int)
/// Explicit specialization for long.
- _Cxx_hashtable_define_trivial_hash(long);
+ _Cxx_hashtable_define_trivial_hash(long)
/// Explicit specialization for long long.
- _Cxx_hashtable_define_trivial_hash(long long);
+ _Cxx_hashtable_define_trivial_hash(long long)
/// Explicit specialization for unsigned short.
- _Cxx_hashtable_define_trivial_hash(unsigned short);
+ _Cxx_hashtable_define_trivial_hash(unsigned short)
/// Explicit specialization for unsigned int.
- _Cxx_hashtable_define_trivial_hash(unsigned int);
+ _Cxx_hashtable_define_trivial_hash(unsigned int)
/// Explicit specialization for unsigned long.
- _Cxx_hashtable_define_trivial_hash(unsigned long);
+ _Cxx_hashtable_define_trivial_hash(unsigned long)
/// Explicit specialization for unsigned long long.
- _Cxx_hashtable_define_trivial_hash(unsigned long long);
+ _Cxx_hashtable_define_trivial_hash(unsigned long long)
#undef _Cxx_hashtable_define_trivial_hash
@@ -162,26 +166,36 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
/// Specialization for float.
template<>
- inline size_t
- hash<float>::operator()(float __val) const
+ struct hash<float> : public __hash_base<size_t, float>
{
- // 0 and -0 both hash to zero.
- return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0;
- }
+ size_t
+ operator()(float __val) const noexcept
+ {
+ // 0 and -0 both hash to zero.
+ return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0;
+ }
+ };
/// Specialization for double.
template<>
- inline size_t
- hash<double>::operator()(double __val) const
+ struct hash<double> : public __hash_base<size_t, double>
{
- // 0 and -0 both hash to zero.
- return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0;
- }
+ size_t
+ operator()(double __val) const noexcept
+ {
+ // 0 and -0 both hash to zero.
+ return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0;
+ }
+ };
/// Specialization for long double.
template<>
- _GLIBCXX_PURE size_t
- hash<long double>::operator()(long double __val) const;
+ struct hash<long double>
+ : public __hash_base<size_t, long double>
+ {
+ _GLIBCXX_PURE size_t
+ operator()(long double __val) const noexcept;
+ };
// @} group hashes
diff --git a/gcc-4.6/libstdc++-v3/include/bits/hashtable.h b/gcc-4.6/libstdc++-v3/include/bits/hashtable.h
index f284126e2..8fdcfbfc3 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/hashtable.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/hashtable.h
@@ -440,6 +440,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
iterator
erase(const_iterator);
+ // LWG 2059.
+ iterator
+ erase(iterator __it)
+ { return erase(const_iterator(__it)); }
+
size_type
erase(const key_type&);
@@ -683,12 +688,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_M_element_count(__ht._M_element_count),
_M_rehash_policy(__ht._M_rehash_policy)
{
- size_type __n_bkt = __ht._M_rehash_policy._M_next_bkt(0);
- __ht._M_buckets = __ht._M_allocate_buckets(__n_bkt);
- __ht._M_bucket_count = __n_bkt;
+ __ht._M_rehash_policy = _RehashPolicy();
+ __ht._M_bucket_count = __ht._M_rehash_policy._M_next_bkt(0);
+ __ht._M_buckets = __ht._M_allocate_buckets(__ht._M_bucket_count);
__ht._M_begin_bucket_index = __ht._M_bucket_count;
__ht._M_element_count = 0;
- __ht._M_rehash_policy = _RehashPolicy();
}
template<typename _Key, typename _Value,
diff --git a/gcc-4.6/libstdc++-v3/include/bits/random.tcc b/gcc-4.6/libstdc++-v3/include/bits/random.tcc
index e81392fa5..b9f6af653 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/random.tcc
+++ b/gcc-4.6/libstdc++-v3/include/bits/random.tcc
@@ -2768,7 +2768,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_Type __arg = (__begin[__k % __n]
^ __begin[(__k + __p) % __n]
^ __begin[(__k - 1) % __n]);
- _Type __r1 = __arg ^ (__arg << 27);
+ _Type __r1 = __arg ^ (__arg >> 27);
__r1 = __detail::__mod<_Type, __detail::_Shift<_Type, 32>::__value,
1664525u, 0u>(__r1);
_Type __r2 = __r1;
@@ -2790,14 +2790,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_Type __arg = (__begin[__k % __n]
+ __begin[(__k + __p) % __n]
+ __begin[(__k - 1) % __n]);
- _Type __r3 = __arg ^ (__arg << 27);
+ _Type __r3 = __arg ^ (__arg >> 27);
__r3 = __detail::__mod<_Type, __detail::_Shift<_Type, 32>::__value,
1566083941u, 0u>(__r3);
_Type __r4 = __r3 - __k % __n;
__r4 = __detail::__mod<_Type,
__detail::_Shift<_Type, 32>::__value>(__r4);
- __begin[(__k + __p) % __n] ^= __r4;
- __begin[(__k + __q) % __n] ^= __r3;
+ __begin[(__k + __p) % __n] ^= __r3;
+ __begin[(__k + __q) % __n] ^= __r4;
__begin[__k % __n] = __r4;
}
}
diff --git a/gcc-4.6/libstdc++-v3/include/bits/regex.h b/gcc-4.6/libstdc++-v3/include/bits/regex.h
index f29ee9139..2bea0c3b7 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/regex.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/regex.h
@@ -2219,7 +2219,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
regex_constants::match_flag_type __flags
= regex_constants::match_default)
{
- std::string __result;
+ basic_string<_Ch_type> __result;
regex_replace(std::back_inserter(__result),
__s.begin(), __s.end(), __e, __fmt, __flags);
return __result;
diff --git a/gcc-4.6/libstdc++-v3/include/bits/shared_ptr.h b/gcc-4.6/libstdc++-v3/include/bits/shared_ptr.h
index 97d123f94..81ac382a2 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/shared_ptr.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/shared_ptr.h
@@ -100,6 +100,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
constexpr shared_ptr()
: __shared_ptr<_Tp>() { }
+ shared_ptr(const shared_ptr&) = default; // never throws
+
/**
* @brief Construct a %shared_ptr that owns the pointer @a __p.
* @param __p A pointer that is convertible to element_type*.
@@ -264,6 +266,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
constexpr shared_ptr(nullptr_t __p)
: __shared_ptr<_Tp>(__p) { }
+ shared_ptr& operator=(const shared_ptr&) = default;
+
template<typename _Tp1>
shared_ptr&
operator=(const shared_ptr<_Tp1>& __r) // never throws
@@ -543,8 +547,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
make_shared(_Args&&... __args)
{
typedef typename std::remove_const<_Tp>::type _Tp_nc;
- return allocate_shared<_Tp>(std::allocator<_Tp_nc>(),
- std::forward<_Args>(__args)...);
+ return std::allocate_shared<_Tp>(std::allocator<_Tp_nc>(),
+ std::forward<_Args>(__args)...);
}
/// std::hash specialization for shared_ptr.
@@ -553,7 +557,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public std::unary_function<shared_ptr<_Tp>, size_t>
{
size_t
- operator()(const shared_ptr<_Tp>& __s) const
+ operator()(const shared_ptr<_Tp>& __s) const noexcept
{ return std::hash<_Tp*>()(__s.get()); }
};
diff --git a/gcc-4.6/libstdc++-v3/include/bits/shared_ptr_base.h b/gcc-4.6/libstdc++-v3/include/bits/shared_ptr_base.h
index 72bc4f046..7badc39cb 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/shared_ptr_base.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/shared_ptr_base.h
@@ -799,7 +799,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: _M_ptr(__p), _M_refcount(__r._M_refcount) // never throws
{ }
- // generated copy constructor, assignment, destructor are fine.
+ __shared_ptr(const __shared_ptr&) = default; // never throws
+ __shared_ptr& operator=(const __shared_ptr&) = default; // never throws
template<typename _Tp1, typename = typename
std::enable_if<std::is_convertible<_Tp1*, _Tp*>::value>::type>
@@ -1365,8 +1366,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__make_shared(_Args&&... __args)
{
typedef typename std::remove_const<_Tp>::type _Tp_nc;
- return __allocate_shared<_Tp, _Lp>(std::allocator<_Tp_nc>(),
- std::forward<_Args>(__args)...);
+ return std::__allocate_shared<_Tp, _Lp>(std::allocator<_Tp_nc>(),
+ std::forward<_Args>(__args)...);
}
/// std::hash specialization for __shared_ptr.
@@ -1375,7 +1376,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public std::unary_function<__shared_ptr<_Tp, _Lp>, size_t>
{
size_t
- operator()(const __shared_ptr<_Tp, _Lp>& __s) const
+ operator()(const __shared_ptr<_Tp, _Lp>& __s) const noexcept
{ return std::hash<_Tp*>()(__s.get()); }
};
diff --git a/gcc-4.6/libstdc++-v3/include/bits/stl_algo.h b/gcc-4.6/libstdc++-v3/include/bits/stl_algo.h
index 6c2be06f1..1d6026a68 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/stl_algo.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/stl_algo.h
@@ -2751,20 +2751,76 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// merge
- /// This is a helper function for the merge routines.
+ /// This is a helper function for the __merge_adaptive routines.
+ template<typename _InputIterator1, typename _InputIterator2,
+ typename _OutputIterator>
+ void
+ __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1,
+ _InputIterator2 __first2, _InputIterator2 __last2,
+ _OutputIterator __result)
+ {
+ while (__first1 != __last1 && __first2 != __last2)
+ {
+ if (*__first2 < *__first1)
+ {
+ *__result = _GLIBCXX_MOVE(*__first2);
+ ++__first2;
+ }
+ else
+ {
+ *__result = _GLIBCXX_MOVE(*__first1);
+ ++__first1;
+ }
+ ++__result;
+ }
+ if (__first1 != __last1)
+ _GLIBCXX_MOVE3(__first1, __last1, __result);
+ }
+
+ /// This is a helper function for the __merge_adaptive routines.
+ template<typename _InputIterator1, typename _InputIterator2,
+ typename _OutputIterator, typename _Compare>
+ void
+ __move_merge_adaptive(_InputIterator1 __first1, _InputIterator1 __last1,
+ _InputIterator2 __first2, _InputIterator2 __last2,
+ _OutputIterator __result, _Compare __comp)
+ {
+ while (__first1 != __last1 && __first2 != __last2)
+ {
+ if (__comp(*__first2, *__first1))
+ {
+ *__result = _GLIBCXX_MOVE(*__first2);
+ ++__first2;
+ }
+ else
+ {
+ *__result = _GLIBCXX_MOVE(*__first1);
+ ++__first1;
+ }
+ ++__result;
+ }
+ if (__first1 != __last1)
+ _GLIBCXX_MOVE3(__first1, __last1, __result);
+ }
+
+ /// This is a helper function for the __merge_adaptive routines.
template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
typename _BidirectionalIterator3>
- _BidirectionalIterator3
- __move_merge_backward(_BidirectionalIterator1 __first1,
- _BidirectionalIterator1 __last1,
- _BidirectionalIterator2 __first2,
- _BidirectionalIterator2 __last2,
- _BidirectionalIterator3 __result)
+ void
+ __move_merge_adaptive_backward(_BidirectionalIterator1 __first1,
+ _BidirectionalIterator1 __last1,
+ _BidirectionalIterator2 __first2,
+ _BidirectionalIterator2 __last2,
+ _BidirectionalIterator3 __result)
{
if (__first1 == __last1)
- return _GLIBCXX_MOVE_BACKWARD3(__first2, __last2, __result);
- if (__first2 == __last2)
- return _GLIBCXX_MOVE_BACKWARD3(__first1, __last1, __result);
+ {
+ _GLIBCXX_MOVE_BACKWARD3(__first2, __last2, __result);
+ return;
+ }
+ else if (__first2 == __last2)
+ return;
+
--__last1;
--__last2;
while (true)
@@ -2773,34 +2829,41 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{
*--__result = _GLIBCXX_MOVE(*__last1);
if (__first1 == __last1)
- return _GLIBCXX_MOVE_BACKWARD3(__first2, ++__last2, __result);
+ {
+ _GLIBCXX_MOVE_BACKWARD3(__first2, ++__last2, __result);
+ return;
+ }
--__last1;
}
else
{
*--__result = _GLIBCXX_MOVE(*__last2);
if (__first2 == __last2)
- return _GLIBCXX_MOVE_BACKWARD3(__first1, ++__last1, __result);
+ return;
--__last2;
}
}
}
- /// This is a helper function for the merge routines.
+ /// This is a helper function for the __merge_adaptive routines.
template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
typename _BidirectionalIterator3, typename _Compare>
- _BidirectionalIterator3
- __move_merge_backward(_BidirectionalIterator1 __first1,
- _BidirectionalIterator1 __last1,
- _BidirectionalIterator2 __first2,
- _BidirectionalIterator2 __last2,
- _BidirectionalIterator3 __result,
- _Compare __comp)
+ void
+ __move_merge_adaptive_backward(_BidirectionalIterator1 __first1,
+ _BidirectionalIterator1 __last1,
+ _BidirectionalIterator2 __first2,
+ _BidirectionalIterator2 __last2,
+ _BidirectionalIterator3 __result,
+ _Compare __comp)
{
if (__first1 == __last1)
- return _GLIBCXX_MOVE_BACKWARD3(__first2, __last2, __result);
- if (__first2 == __last2)
- return _GLIBCXX_MOVE_BACKWARD3(__first1, __last1, __result);
+ {
+ _GLIBCXX_MOVE_BACKWARD3(__first2, __last2, __result);
+ return;
+ }
+ else if (__first2 == __last2)
+ return;
+
--__last1;
--__last2;
while (true)
@@ -2809,75 +2872,23 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{
*--__result = _GLIBCXX_MOVE(*__last1);
if (__first1 == __last1)
- return _GLIBCXX_MOVE_BACKWARD3(__first2, ++__last2, __result);
+ {
+ _GLIBCXX_MOVE_BACKWARD3(__first2, ++__last2, __result);
+ return;
+ }
--__last1;
}
else
{
*--__result = _GLIBCXX_MOVE(*__last2);
if (__first2 == __last2)
- return _GLIBCXX_MOVE_BACKWARD3(__first1, ++__last1, __result);
+ return;
--__last2;
}
}
}
/// This is a helper function for the merge routines.
- template<typename _InputIterator1, typename _InputIterator2,
- typename _OutputIterator>
- _OutputIterator
- __move_merge(_InputIterator1 __first1, _InputIterator1 __last1,
- _InputIterator2 __first2, _InputIterator2 __last2,
- _OutputIterator __result)
- {
- while (__first1 != __last1 && __first2 != __last2)
- {
- if (*__first2 < *__first1)
- {
- *__result = _GLIBCXX_MOVE(*__first2);
- ++__first2;
- }
- else
- {
- *__result = _GLIBCXX_MOVE(*__first1);
- ++__first1;
- }
- ++__result;
- }
- return _GLIBCXX_MOVE3(__first2, __last2,
- _GLIBCXX_MOVE3(__first1, __last1,
- __result));
- }
-
- /// This is a helper function for the merge routines.
- template<typename _InputIterator1, typename _InputIterator2,
- typename _OutputIterator, typename _Compare>
- _OutputIterator
- __move_merge(_InputIterator1 __first1, _InputIterator1 __last1,
- _InputIterator2 __first2, _InputIterator2 __last2,
- _OutputIterator __result, _Compare __comp)
- {
- while (__first1 != __last1 && __first2 != __last2)
- {
- if (__comp(*__first2, *__first1))
- {
- *__result = _GLIBCXX_MOVE(*__first2);
- ++__first2;
- }
- else
- {
- *__result = _GLIBCXX_MOVE(*__first1);
- ++__first1;
- }
- ++__result;
- }
- return _GLIBCXX_MOVE3(__first2, __last2,
- _GLIBCXX_MOVE3(__first1, __last1,
- __result));
- }
-
-
- /// This is a helper function for the merge routines.
template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,
typename _Distance>
_BidirectionalIterator1
@@ -2891,15 +2902,25 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_BidirectionalIterator2 __buffer_end;
if (__len1 > __len2 && __len2 <= __buffer_size)
{
- __buffer_end = _GLIBCXX_MOVE3(__middle, __last, __buffer);
- _GLIBCXX_MOVE_BACKWARD3(__first, __middle, __last);
- return _GLIBCXX_MOVE3(__buffer, __buffer_end, __first);
+ if (__len2)
+ {
+ __buffer_end = _GLIBCXX_MOVE3(__middle, __last, __buffer);
+ _GLIBCXX_MOVE_BACKWARD3(__first, __middle, __last);
+ return _GLIBCXX_MOVE3(__buffer, __buffer_end, __first);
+ }
+ else
+ return __first;
}
else if (__len1 <= __buffer_size)
{
- __buffer_end = _GLIBCXX_MOVE3(__first, __middle, __buffer);
- _GLIBCXX_MOVE3(__middle, __last, __first);
- return _GLIBCXX_MOVE_BACKWARD3(__buffer, __buffer_end, __last);
+ if (__len1)
+ {
+ __buffer_end = _GLIBCXX_MOVE3(__first, __middle, __buffer);
+ _GLIBCXX_MOVE3(__middle, __last, __first);
+ return _GLIBCXX_MOVE_BACKWARD3(__buffer, __buffer_end, __last);
+ }
+ else
+ return __last;
}
else
{
@@ -2922,13 +2943,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
if (__len1 <= __len2 && __len1 <= __buffer_size)
{
_Pointer __buffer_end = _GLIBCXX_MOVE3(__first, __middle, __buffer);
- std::__move_merge(__buffer, __buffer_end, __middle, __last, __first);
+ std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last,
+ __first);
}
else if (__len2 <= __buffer_size)
{
_Pointer __buffer_end = _GLIBCXX_MOVE3(__middle, __last, __buffer);
- std::__move_merge_backward(__first, __middle, __buffer,
- __buffer_end, __last);
+ std::__move_merge_adaptive_backward(__first, __middle, __buffer,
+ __buffer_end, __last);
}
else
{
@@ -2978,14 +3000,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
if (__len1 <= __len2 && __len1 <= __buffer_size)
{
_Pointer __buffer_end = _GLIBCXX_MOVE3(__first, __middle, __buffer);
- std::__move_merge(__buffer, __buffer_end, __middle, __last,
- __first, __comp);
+ std::__move_merge_adaptive(__buffer, __buffer_end, __middle, __last,
+ __first, __comp);
}
else if (__len2 <= __buffer_size)
{
_Pointer __buffer_end = _GLIBCXX_MOVE3(__middle, __last, __buffer);
- std::__move_merge_backward(__first, __middle, __buffer, __buffer_end,
- __last, __comp);
+ std::__move_merge_adaptive_backward(__first, __middle, __buffer,
+ __buffer_end, __last, __comp);
}
else
{
@@ -3222,6 +3244,61 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__CheckedCompare(__comp));
}
+
+ /// This is a helper function for the __merge_sort_loop routines.
+ template<typename _InputIterator1, typename _InputIterator2,
+ typename _OutputIterator>
+ _OutputIterator
+ __move_merge(_InputIterator1 __first1, _InputIterator1 __last1,
+ _InputIterator2 __first2, _InputIterator2 __last2,
+ _OutputIterator __result)
+ {
+ while (__first1 != __last1 && __first2 != __last2)
+ {
+ if (*__first2 < *__first1)
+ {
+ *__result = _GLIBCXX_MOVE(*__first2);
+ ++__first2;
+ }
+ else
+ {
+ *__result = _GLIBCXX_MOVE(*__first1);
+ ++__first1;
+ }
+ ++__result;
+ }
+ return _GLIBCXX_MOVE3(__first2, __last2,
+ _GLIBCXX_MOVE3(__first1, __last1,
+ __result));
+ }
+
+ /// This is a helper function for the __merge_sort_loop routines.
+ template<typename _InputIterator1, typename _InputIterator2,
+ typename _OutputIterator, typename _Compare>
+ _OutputIterator
+ __move_merge(_InputIterator1 __first1, _InputIterator1 __last1,
+ _InputIterator2 __first2, _InputIterator2 __last2,
+ _OutputIterator __result, _Compare __comp)
+ {
+ while (__first1 != __last1 && __first2 != __last2)
+ {
+ if (__comp(*__first2, *__first1))
+ {
+ *__result = _GLIBCXX_MOVE(*__first2);
+ ++__first2;
+ }
+ else
+ {
+ *__result = _GLIBCXX_MOVE(*__first1);
+ ++__first1;
+ }
+ ++__result;
+ }
+ return _GLIBCXX_MOVE3(__first2, __last2,
+ _GLIBCXX_MOVE3(__first1, __last1,
+ __result));
+ }
+
template<typename _RandomAccessIterator1, typename _RandomAccessIterator2,
typename _Distance>
void
diff --git a/gcc-4.6/libstdc++-v3/include/bits/stl_algobase.h b/gcc-4.6/libstdc++-v3/include/bits/stl_algobase.h
index 626d5bf1c..aecdcb9c6 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/stl_algobase.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/stl_algobase.h
@@ -641,7 +641,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
* loop count will be known (and therefore a candidate for compiler
* optimizations such as unrolling).
*
- * Result may not be in the range [first,last). Use move instead. Note
+ * Result may not be in the range (first,last]. Use move instead. Note
* that the start of the output range may overlap [first,last).
*/
template<typename _BI1, typename _BI2>
diff --git a/gcc-4.6/libstdc++-v3/include/bits/stl_bvector.h b/gcc-4.6/libstdc++-v3/include/bits/stl_bvector.h
index 3cd53e7fa..5bf10d9f3 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/stl_bvector.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/stl_bvector.h
@@ -821,7 +821,8 @@ template<typename _Alloc>
iterator
erase(iterator __first, iterator __last)
{
- _M_erase_at_end(std::copy(__last, end(), __first));
+ if (__first != __last)
+ _M_erase_at_end(std::copy(__last, end(), __first));
return __first;
}
@@ -1049,7 +1050,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public __hash_base<size_t, _GLIBCXX_STD_C::vector<bool, _Alloc>>
{
size_t
- operator()(const _GLIBCXX_STD_C::vector<bool, _Alloc>& __b) const;
+ operator()(const _GLIBCXX_STD_C::vector<bool, _Alloc>&) const noexcept;
};
_GLIBCXX_END_NAMESPACE_VERSION
diff --git a/gcc-4.6/libstdc++-v3/include/bits/stl_map.h b/gcc-4.6/libstdc++-v3/include/bits/stl_map.h
index a84b4b61d..a1bef8b6a 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/stl_map.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/stl_map.h
@@ -612,6 +612,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
iterator
erase(const_iterator __position)
{ return _M_t.erase(__position); }
+
+ // LWG 2059.
+ iterator
+ erase(iterator __position)
+ { return _M_t.erase(__position); }
#else
/**
* @brief Erases an element from a %map.
diff --git a/gcc-4.6/libstdc++-v3/include/bits/stl_multimap.h b/gcc-4.6/libstdc++-v3/include/bits/stl_multimap.h
index ca37f359e..02e8f58e9 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/stl_multimap.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/stl_multimap.h
@@ -533,6 +533,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
iterator
erase(const_iterator __position)
{ return _M_t.erase(__position); }
+
+ // LWG 2059.
+ iterator
+ erase(iterator __position)
+ { return _M_t.erase(__position); }
#else
/**
* @brief Erases an element from a %multimap.
diff --git a/gcc-4.6/libstdc++-v3/include/bits/stl_numeric.h b/gcc-4.6/libstdc++-v3/include/bits/stl_numeric.h
index 1b6998d97..6cbc6d2fe 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/stl_numeric.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/stl_numeric.h
@@ -222,10 +222,10 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
/**
* @brief Return list of partial sums
*
- * Accumulates the values in the range [first,last) using operator+().
+ * Accumulates the values in the range [first,last) using the @c + operator.
* As each successive input value is added into the total, that partial sum
- * is written to @a result. Therefore, the first value in result is the
- * first value of the input, the second value in result is the sum of the
+ * is written to @p result. Therefore, the first value in @p result is the
+ * first value of the input, the second value in @p result is the sum of the
* first and second input values, and so on.
*
* @param first Start of input range.
@@ -261,15 +261,16 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
/**
* @brief Return list of partial sums
*
- * Accumulates the values in the range [first,last) using operator+().
+ * Accumulates the values in the range [first,last) using @p binary_op.
* As each successive input value is added into the total, that partial sum
- * is written to @a result. Therefore, the first value in result is the
- * first value of the input, the second value in result is the sum of the
+ * is written to @a result. Therefore, the first value in @p result is the
+ * first value of the input, the second value in @p result is the sum of the
* first and second input values, and so on.
*
* @param first Start of input range.
* @param last End of input range.
* @param result Output to write sums to.
+ * @param binary_op Function object.
* @return Iterator pointing just beyond the values written to result.
*/
template<typename _InputIterator, typename _OutputIterator,
diff --git a/gcc-4.6/libstdc++-v3/include/bits/stl_tree.h b/gcc-4.6/libstdc++-v3/include/bits/stl_tree.h
index 7567e209c..a7e956441 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/stl_tree.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/stl_tree.h
@@ -800,6 +800,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
_M_erase_aux(__position);
return __result._M_const_cast();
}
+
+ // LWG 2059.
+ iterator
+ erase(iterator __position)
+ {
+ iterator __result = __position;
+ ++__result;
+ _M_erase_aux(__position);
+ return __result;
+ }
#else
void
erase(iterator __position)
diff --git a/gcc-4.6/libstdc++-v3/include/bits/stl_uninitialized.h b/gcc-4.6/libstdc++-v3/include/bits/stl_uninitialized.h
index f15be3aee..70ce545b8 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/stl_uninitialized.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/stl_uninitialized.h
@@ -1,7 +1,7 @@
// Raw memory manipulators -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-// 2009, 2010
+// 2009, 2010, 2011
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -530,6 +530,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__uninit_default_n(__first, __n);
}
+ template<typename _Tp, typename _Allocator>
+ inline auto
+ _Construct_default_a_impl(_Tp* __ptr, _Allocator& __alloc, void*)
+ -> decltype(__alloc.construct(__ptr))
+ { return __alloc.construct(__ptr); }
+
+ template<typename _Tp, typename _Allocator>
+ inline void
+ _Construct_default_a_impl(_Tp* __ptr, _Allocator& __alloc, ...)
+ { _Construct(__ptr); }
+
+ template<typename _Tp, typename _Allocator>
+ inline void
+ _Construct_default_a(_Tp* __ptr, _Allocator& __alloc)
+ { _Construct_default_a_impl(__ptr, __alloc, nullptr); }
// __uninitialized_default_a
// Fills [first, last) with std::distance(first, last) default
@@ -544,7 +559,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__try
{
for (; __cur != __last; ++__cur)
- __alloc.construct(std::__addressof(*__cur));
+ _Construct_default_a(std::__addressof(*__cur), __alloc);
}
__catch(...)
{
@@ -573,7 +588,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
__try
{
for (; __n > 0; --__n, ++__cur)
- __alloc.construct(std::__addressof(*__cur));
+ _Construct_default_a(std::__addressof(*__cur), __alloc);
}
__catch(...)
{
diff --git a/gcc-4.6/libstdc++-v3/include/bits/stl_vector.h b/gcc-4.6/libstdc++-v3/include/bits/stl_vector.h
index 92137b6bd..8b7fdb146 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/stl_vector.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/stl_vector.h
@@ -208,6 +208,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
using _Base::_M_impl;
using _Base::_M_get_Tp_allocator;
+ bool _M_is_valid() const
+ {
+ return (this->_M_impl._M_end_of_storage == 0
+ && this->_M_impl._M_start == 0
+ && this->_M_impl._M_finish == 0)
+ || (this->_M_impl._M_start <= this->_M_impl._M_finish
+ && this->_M_impl._M_finish <= this->_M_impl._M_end_of_storage
+ && this->_M_impl._M_start < this->_M_impl._M_end_of_storage);
+ }
+
public:
// [23.2.4.1] construct/copy/destroy
// (assign() and get_allocator() are also listed in this section)
@@ -461,7 +471,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*/
iterator
begin()
- { return iterator(this->_M_impl._M_start); }
+ {
+#if __google_stl_debug_dangling_vector
+ if (!this->_M_is_valid())
+ __throw_logic_error("begin() on corrupt (dangling?) vector");
+#endif
+ return iterator(this->_M_impl._M_start);
+ }
/**
* Returns a read-only (constant) iterator that points to the
@@ -470,7 +486,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*/
const_iterator
begin() const
- { return const_iterator(this->_M_impl._M_start); }
+ {
+#if __google_stl_debug_dangling_vector
+ if (!this->_M_is_valid())
+ __throw_logic_error("begin() on corrupt (dangling?) vector");
+#endif
+ return const_iterator(this->_M_impl._M_start);
+ }
/**
* Returns a read/write iterator that points one past the last
@@ -479,7 +501,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*/
iterator
end()
- { return iterator(this->_M_impl._M_finish); }
+ {
+#if __google_stl_debug_dangling_vector
+ if (!this->_M_is_valid())
+ __throw_logic_error("end() on corrupt (dangling?) vector");
+#endif
+ return iterator(this->_M_impl._M_finish);
+ }
/**
* Returns a read-only (constant) iterator that points one past
@@ -488,7 +516,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*/
const_iterator
end() const
- { return const_iterator(this->_M_impl._M_finish); }
+ {
+#if __google_stl_debug_dangling_vector
+ if (!this->_M_is_valid())
+ __throw_logic_error("end() on corrupt (dangling?) vector");
+#endif
+ return const_iterator(this->_M_impl._M_finish);
+ }
/**
* Returns a read/write reverse iterator that points to the
@@ -568,7 +602,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
/** Returns the number of elements in the %vector. */
size_type
size() const
- { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
+ {
+#if __google_stl_debug_dangling_vector
+ if (!this->_M_is_valid())
+ __throw_logic_error("size() on corrupt (dangling?) vector");
+#endif
+ return size_type(this->_M_impl._M_finish - this->_M_impl._M_start);
+ }
/** Returns the size() of the largest possible %vector. */
size_type
@@ -648,7 +688,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*/
size_type
capacity() const
- { return size_type(this->_M_impl._M_end_of_storage
+ {
+#if __google_stl_debug_dangling_vector
+ if (!this->_M_is_valid())
+ __throw_logic_error("capacity() on corrupt (dangling?) vector");
+#endif
+ return size_type(this->_M_impl._M_end_of_storage
- this->_M_impl._M_start); }
/**
@@ -1034,6 +1079,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
void
swap(vector& __x)
{
+#if __google_stl_debug_dangling_vector
+ if (!this->_M_is_valid() || !__x._M_is_valid())
+ __throw_logic_error("swap() on corrupt (dangling?) vector");
+#endif
std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
std::swap(this->_M_impl._M_end_of_storage,
@@ -1053,7 +1102,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*/
void
clear()
- { _M_erase_at_end(this->_M_impl._M_start); }
+ {
+#if __google_stl_debug_dangling_vector
+ if (!this->_M_is_valid())
+ __throw_logic_error("clear() on corrupt (dangling?) vector");
+#endif
+ _M_erase_at_end(this->_M_impl._M_start);
+ }
protected:
/**
diff --git a/gcc-4.6/libstdc++-v3/include/bits/unique_ptr.h b/gcc-4.6/libstdc++-v3/include/bits/unique_ptr.h
index 9d5d206bb..cb2d86092 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/unique_ptr.h
+++ b/gcc-4.6/libstdc++-v3/include/bits/unique_ptr.h
@@ -496,7 +496,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public std::unary_function<unique_ptr<_Tp, _Dp>, size_t>
{
size_t
- operator()(const unique_ptr<_Tp, _Dp>& __u) const
+ operator()(const unique_ptr<_Tp, _Dp>& __u) const noexcept
{
typedef unique_ptr<_Tp, _Dp> _UP;
return std::hash<typename _UP::pointer>()(__u.get());
diff --git a/gcc-4.6/libstdc++-v3/include/bits/vector.tcc b/gcc-4.6/libstdc++-v3/include/bits/vector.tcc
index 3aaee392e..cd23f769f 100644
--- a/gcc-4.6/libstdc++-v3/include/bits/vector.tcc
+++ b/gcc-4.6/libstdc++-v3/include/bits/vector.tcc
@@ -147,9 +147,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
vector<_Tp, _Alloc>::
erase(iterator __first, iterator __last)
{
- if (__last != end())
- _GLIBCXX_MOVE3(__last, end(), __first);
- _M_erase_at_end(__first.base() + (end() - __last));
+ if (__first != __last)
+ {
+ if (__last != end())
+ _GLIBCXX_MOVE3(__last, end(), __first);
+ _M_erase_at_end(__first.base() + (end() - __last));
+ }
return __first;
}
@@ -158,6 +161,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
vector<_Tp, _Alloc>::
operator=(const vector<_Tp, _Alloc>& __x)
{
+#if __google_stl_debug_dangling_vector
+ if (!this->_M_is_valid() || !__x._M_is_valid())
+ __throw_logic_error("operator=() on corrupt (dangling?) vector");
+#endif
if (&__x != this)
{
const size_type __xlen = __x.size();
@@ -743,7 +750,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Alloc>
size_t
hash<_GLIBCXX_STD_C::vector<bool, _Alloc>>::
- operator()(const _GLIBCXX_STD_C::vector<bool, _Alloc>& __b) const
+ operator()(const _GLIBCXX_STD_C::vector<bool, _Alloc>& __b) const noexcept
{
size_t __hash = 0;
using _GLIBCXX_STD_C::_S_word_bit;
diff --git a/gcc-4.6/libstdc++-v3/include/c_global/cmath b/gcc-4.6/libstdc++-v3/include/c_global/cmath
index e38ab9d6e..6e8cd1372 100644
--- a/gcc-4.6/libstdc++-v3/include/c_global/cmath
+++ b/gcc-4.6/libstdc++-v3/include/c_global/cmath
@@ -156,10 +156,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Tp, typename _Up>
inline
- typename __gnu_cxx::__promote_2<
- typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value
- && __is_arithmetic<_Up>::__value,
- _Tp>::__type, _Up>::__type
+ typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
atan2(_Tp __y, _Up __x)
{
typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
@@ -374,10 +371,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Tp, typename _Up>
inline
- typename __gnu_cxx::__promote_2<
- typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value
- && __is_arithmetic<_Up>::__value,
- _Tp>::__type, _Up>::__type
+ typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
pow(_Tp __x, _Up __y)
{
typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
diff --git a/gcc-4.6/libstdc++-v3/include/c_global/cwchar b/gcc-4.6/libstdc++-v3/include/c_global/cwchar
index 5a3396577..a2b1168f9 100644
--- a/gcc-4.6/libstdc++-v3/include/c_global/cwchar
+++ b/gcc-4.6/libstdc++-v3/include/c_global/cwchar
@@ -136,6 +136,8 @@ namespace std
namespace std _GLIBCXX_VISIBILITY(default)
{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
using ::wint_t;
using ::btowc;
@@ -207,8 +209,6 @@ namespace std _GLIBCXX_VISIBILITY(default)
using ::wcsstr;
using ::wmemchr;
-_GLIBCXX_BEGIN_NAMESPACE_VERSION
-
#ifndef __CORRECT_ISO_CPP_WCHAR_H_PROTO
inline wchar_t*
wcschr(wchar_t* __p, wchar_t __c)
diff --git a/gcc-4.6/libstdc++-v3/include/debug/bitset b/gcc-4.6/libstdc++-v3/include/debug/bitset
index c18754542..09929e7a9 100644
--- a/gcc-4.6/libstdc++-v3/include/debug/bitset
+++ b/gcc-4.6/libstdc++-v3/include/debug/bitset
@@ -409,7 +409,7 @@ namespace __debug
: public __hash_base<size_t, __debug::bitset<_Nb>>
{
size_t
- operator()(const __debug::bitset<_Nb>& __b) const
+ operator()(const __debug::bitset<_Nb>& __b) const noexcept
{ return std::hash<_GLIBCXX_STD_C::bitset<_Nb>>()(__b._M_base()); }
};
#endif
diff --git a/gcc-4.6/libstdc++-v3/include/debug/deque b/gcc-4.6/libstdc++-v3/include/debug/deque
index ee17f2041..fc4d8cb61 100644
--- a/gcc-4.6/libstdc++-v3/include/debug/deque
+++ b/gcc-4.6/libstdc++-v3/include/debug/deque
@@ -460,7 +460,11 @@ namespace __debug
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container
__glibcxx_check_erase_range(__first, __last);
- if (__first.base() == _Base::begin() || __last.base() == _Base::end())
+
+ if (__first.base() == __last.base())
+ return __first;
+ else if (__first.base() == _Base::begin()
+ || __last.base() == _Base::end())
{
this->_M_detach_singular();
for (_Base_iterator __position = __first.base();
diff --git a/gcc-4.6/libstdc++-v3/include/debug/map.h b/gcc-4.6/libstdc++-v3/include/debug/map.h
index 31085197f..177797d73 100644
--- a/gcc-4.6/libstdc++-v3/include/debug/map.h
+++ b/gcc-4.6/libstdc++-v3/include/debug/map.h
@@ -273,6 +273,10 @@ namespace __debug
this->_M_invalidate_if(_Equal(__position.base()));
return iterator(_Base::erase(__position.base()), this);
}
+
+ iterator
+ erase(iterator __position)
+ { return erase(const_iterator(__position)); }
#else
void
erase(iterator __position)
diff --git a/gcc-4.6/libstdc++-v3/include/debug/multimap.h b/gcc-4.6/libstdc++-v3/include/debug/multimap.h
index 3c22517b2..d2e197699 100644
--- a/gcc-4.6/libstdc++-v3/include/debug/multimap.h
+++ b/gcc-4.6/libstdc++-v3/include/debug/multimap.h
@@ -254,6 +254,10 @@ namespace __debug
this->_M_invalidate_if(_Equal(__position.base()));
return iterator(_Base::erase(__position.base()), this);
}
+
+ iterator
+ erase(iterator __position)
+ { return erase(const_iterator(__position)); }
#else
void
erase(iterator __position)
diff --git a/gcc-4.6/libstdc++-v3/include/debug/unordered_map b/gcc-4.6/libstdc++-v3/include/debug/unordered_map
index 2d7e100c4..43b1e9c29 100644
--- a/gcc-4.6/libstdc++-v3/include/debug/unordered_map
+++ b/gcc-4.6/libstdc++-v3/include/debug/unordered_map
@@ -276,6 +276,10 @@ namespace __debug
}
iterator
+ erase(iterator __it)
+ { return erase(const_iterator(__it)); }
+
+ iterator
erase(const_iterator __first, const_iterator __last)
{
__glibcxx_check_erase_range(__first, __last);
@@ -558,6 +562,10 @@ namespace __debug
}
iterator
+ erase(iterator __it)
+ { return erase(const_iterator(__it)); }
+
+ iterator
erase(const_iterator __first, const_iterator __last)
{
__glibcxx_check_erase_range(__first, __last);
diff --git a/gcc-4.6/libstdc++-v3/include/debug/unordered_set b/gcc-4.6/libstdc++-v3/include/debug/unordered_set
index e30f976d3..cf21a3c15 100644
--- a/gcc-4.6/libstdc++-v3/include/debug/unordered_set
+++ b/gcc-4.6/libstdc++-v3/include/debug/unordered_set
@@ -269,6 +269,10 @@ namespace __debug
}
iterator
+ erase(iterator __it)
+ { return erase(const_iterator(__it)); }
+
+ iterator
erase(const_iterator __first, const_iterator __last)
{
__glibcxx_check_erase_range(__first, __last);
@@ -539,6 +543,10 @@ namespace __debug
}
iterator
+ erase(iterator __it)
+ { return erase(const_iterator(__it)); }
+
+ iterator
erase(const_iterator __first, const_iterator __last)
{
__glibcxx_check_erase_range(__first, __last);
diff --git a/gcc-4.6/libstdc++-v3/include/debug/vector b/gcc-4.6/libstdc++-v3/include/debug/vector
index e2dd71a7e..edb1f88d5 100644
--- a/gcc-4.6/libstdc++-v3/include/debug/vector
+++ b/gcc-4.6/libstdc++-v3/include/debug/vector
@@ -492,11 +492,16 @@ namespace __debug
// 151. can't currently clear() empty container
__glibcxx_check_erase_range(__first, __last);
- difference_type __offset = __first.base() - _Base::begin();
- _Base_iterator __res = _Base::erase(__first.base(),
- __last.base());
- this->_M_invalidate_after_nth(__offset);
- return iterator(__res, this);
+ if (__first.base() != __last.base())
+ {
+ difference_type __offset = __first.base() - _Base::begin();
+ _Base_iterator __res = _Base::erase(__first.base(),
+ __last.base());
+ this->_M_invalidate_after_nth(__offset);
+ return iterator(__res, this);
+ }
+ else
+ return __first;
}
void
@@ -594,7 +599,7 @@ namespace __debug
: public __hash_base<size_t, __debug::vector<bool, _Alloc>>
{
size_t
- operator()(const __debug::vector<bool, _Alloc>& __b) const
+ operator()(const __debug::vector<bool, _Alloc>& __b) const noexcept
{ return std::hash<_GLIBCXX_STD_C::vector<bool, _Alloc>>()
(__b._M_base()); }
};
diff --git a/gcc-4.6/libstdc++-v3/include/ext/type_traits.h b/gcc-4.6/libstdc++-v3/include/ext/type_traits.h
index 92747268a..51db03ec7 100644
--- a/gcc-4.6/libstdc++-v3/include/ext/type_traits.h
+++ b/gcc-4.6/libstdc++-v3/include/ext/type_traits.h
@@ -1,6 +1,7 @@
// -*- C++ -*-
-// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2005, 2006, 2007, 2009, 2010, 2011
+// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the terms
@@ -161,44 +162,50 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
struct __promote
{ typedef double __type; };
+ // No nested __type member for non-integer non-floating point types,
+ // allows this type to be used for SFINAE to constrain overloads in
+ // <cmath> and <complex> to only the intended types.
template<typename _Tp>
struct __promote<_Tp, false>
- { typedef _Tp __type; };
+ { };
+
+ template<>
+ struct __promote<long double>
+ { typedef long double __type; };
+
+ template<>
+ struct __promote<double>
+ { typedef double __type; };
+
+ template<>
+ struct __promote<float>
+ { typedef float __type; };
- template<typename _Tp, typename _Up>
+ template<typename _Tp, typename _Up,
+ typename _Tp2 = typename __promote<_Tp>::__type,
+ typename _Up2 = typename __promote<_Up>::__type>
struct __promote_2
{
- private:
- typedef typename __promote<_Tp>::__type __type1;
- typedef typename __promote<_Up>::__type __type2;
-
- public:
- typedef __typeof__(__type1() + __type2()) __type;
+ typedef __typeof__(_Tp2() + _Up2()) __type;
};
- template<typename _Tp, typename _Up, typename _Vp>
+ template<typename _Tp, typename _Up, typename _Vp,
+ typename _Tp2 = typename __promote<_Tp>::__type,
+ typename _Up2 = typename __promote<_Up>::__type,
+ typename _Vp2 = typename __promote<_Vp>::__type>
struct __promote_3
{
- private:
- typedef typename __promote<_Tp>::__type __type1;
- typedef typename __promote<_Up>::__type __type2;
- typedef typename __promote<_Vp>::__type __type3;
-
- public:
- typedef __typeof__(__type1() + __type2() + __type3()) __type;
+ typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type;
};
- template<typename _Tp, typename _Up, typename _Vp, typename _Wp>
+ template<typename _Tp, typename _Up, typename _Vp, typename _Wp,
+ typename _Tp2 = typename __promote<_Tp>::__type,
+ typename _Up2 = typename __promote<_Up>::__type,
+ typename _Vp2 = typename __promote<_Vp>::__type,
+ typename _Wp2 = typename __promote<_Wp>::__type>
struct __promote_4
{
- private:
- typedef typename __promote<_Tp>::__type __type1;
- typedef typename __promote<_Up>::__type __type2;
- typedef typename __promote<_Vp>::__type __type3;
- typedef typename __promote<_Wp>::__type __type4;
-
- public:
- typedef __typeof__(__type1() + __type2() + __type3() + __type4()) __type;
+ typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type;
};
_GLIBCXX_END_NAMESPACE_VERSION
diff --git a/gcc-4.6/libstdc++-v3/include/ext/vstring.h b/gcc-4.6/libstdc++-v3/include/ext/vstring.h
index 57f36a634..19df37573 100644
--- a/gcc-4.6/libstdc++-v3/include/ext/vstring.h
+++ b/gcc-4.6/libstdc++-v3/include/ext/vstring.h
@@ -2760,7 +2760,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public __hash_base<size_t, __gnu_cxx::__vstring>
{
size_t
- operator()(const __gnu_cxx::__vstring& __s) const
+ operator()(const __gnu_cxx::__vstring& __s) const noexcept
{ return std::_Hash_impl::hash(__s.data(), __s.length()); }
};
@@ -2771,7 +2771,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public __hash_base<size_t, __gnu_cxx::__wvstring>
{
size_t
- operator()(const __gnu_cxx::__wvstring& __s) const
+ operator()(const __gnu_cxx::__wvstring& __s) const noexcept
{ return std::_Hash_impl::hash(__s.data(),
__s.length() * sizeof(wchar_t)); }
};
@@ -2784,7 +2784,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public __hash_base<size_t, __gnu_cxx::__u16vstring>
{
size_t
- operator()(const __gnu_cxx::__u16vstring& __s) const
+ operator()(const __gnu_cxx::__u16vstring& __s) const noexcept
{ return std::_Hash_impl::hash(__s.data(),
__s.length() * sizeof(char16_t)); }
};
@@ -2795,7 +2795,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public __hash_base<size_t, __gnu_cxx::__u32vstring>
{
size_t
- operator()(const __gnu_cxx::__u32vstring& __s) const
+ operator()(const __gnu_cxx::__u32vstring& __s) const noexcept
{ return std::_Hash_impl::hash(__s.data(),
__s.length() * sizeof(char32_t)); }
};
diff --git a/gcc-4.6/libstdc++-v3/include/parallel/algo.h b/gcc-4.6/libstdc++-v3/include/parallel/algo.h
index 89b7f6d82..b27de9b37 100644
--- a/gcc-4.6/libstdc++-v3/include/parallel/algo.h
+++ b/gcc-4.6/libstdc++-v3/include/parallel/algo.h
@@ -1,6 +1,6 @@
// -*- C++ -*-
-// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the terms
@@ -273,12 +273,12 @@ namespace __parallel
_BinaryPredicate __comp)
{
typedef std::iterator_traits<_IIter> _IIterTraits;
- typedef std::iterator_traits<_FIterator> iteratorf_traits;
+ typedef std::iterator_traits<_FIterator> _FIterTraits;
typedef typename _IIterTraits::iterator_category _IIteratorCategory;
- typedef typename iteratorf_traits::iterator_category iteratorf_category;
+ typedef typename _FIterTraits::iterator_category _FIteratorCategory;
return __find_first_of_switch(__begin1, __end1, __begin2, __end2, __comp,
- _IIteratorCategory(), iteratorf_category());
+ _IIteratorCategory(), _FIteratorCategory());
}
// Public interface, insert default comparator
@@ -288,9 +288,9 @@ namespace __parallel
_FIterator __begin2, _FIterator __end2)
{
typedef std::iterator_traits<_IIter> _IIterTraits;
- typedef std::iterator_traits<_FIterator> iteratorf_traits;
+ typedef std::iterator_traits<_FIterator> _FIterTraits;
typedef typename _IIterTraits::value_type _IValueType;
- typedef typename iteratorf_traits::value_type _FValueType;
+ typedef typename _FIterTraits::value_type _FValueType;
return __gnu_parallel::find_first_of(__begin1, __end1, __begin2, __end2,
__gnu_parallel::_EqualTo<_IValueType, _FValueType>());
diff --git a/gcc-4.6/libstdc++-v3/include/profile/bitset b/gcc-4.6/libstdc++-v3/include/profile/bitset
index a995afa97..381f1eab6 100644
--- a/gcc-4.6/libstdc++-v3/include/profile/bitset
+++ b/gcc-4.6/libstdc++-v3/include/profile/bitset
@@ -367,7 +367,7 @@ namespace __profile
: public __hash_base<size_t, __profile::bitset<_Nb>>
{
size_t
- operator()(const __profile::bitset<_Nb>& __b) const
+ operator()(const __profile::bitset<_Nb>& __b) const noexcept
{ return std::hash<_GLIBCXX_STD_C::bitset<_Nb>>()(__b._M_base()); }
};
#endif
diff --git a/gcc-4.6/libstdc++-v3/include/profile/map.h b/gcc-4.6/libstdc++-v3/include/profile/map.h
index 1edc16c78..a58a2b01a 100644
--- a/gcc-4.6/libstdc++-v3/include/profile/map.h
+++ b/gcc-4.6/libstdc++-v3/include/profile/map.h
@@ -326,6 +326,10 @@ namespace __profile
__profcxx_map_to_unordered_map_erase(this, size(), 1);
return __i;
}
+
+ iterator
+ erase(iterator __position)
+ { return erase(const_iterator(__position)); }
#else
void
erase(iterator __position)
diff --git a/gcc-4.6/libstdc++-v3/include/profile/multimap.h b/gcc-4.6/libstdc++-v3/include/profile/multimap.h
index 76ce805f3..3ee169b24 100644
--- a/gcc-4.6/libstdc++-v3/include/profile/multimap.h
+++ b/gcc-4.6/libstdc++-v3/include/profile/multimap.h
@@ -225,6 +225,10 @@ namespace __profile
iterator
erase(const_iterator __position)
{ return iterator(_Base::erase(__position)); }
+
+ iterator
+ erase(iterator __position)
+ { return iterator(_Base::erase(__position)); }
#else
void
erase(iterator __position)
diff --git a/gcc-4.6/libstdc++-v3/include/profile/vector b/gcc-4.6/libstdc++-v3/include/profile/vector
index f8a9622e8..3e81c0f5b 100644
--- a/gcc-4.6/libstdc++-v3/include/profile/vector
+++ b/gcc-4.6/libstdc++-v3/include/profile/vector
@@ -508,7 +508,7 @@ namespace __profile
: public __hash_base<size_t, __profile::vector<bool, _Alloc>>
{
size_t
- operator()(const __profile::vector<bool, _Alloc>& __b) const
+ operator()(const __profile::vector<bool, _Alloc>& __b) const noexcept
{ return std::hash<_GLIBCXX_STD_C::vector<bool, _Alloc>>()
(__b._M_base()); }
};
diff --git a/gcc-4.6/libstdc++-v3/include/std/bitset b/gcc-4.6/libstdc++-v3/include/std/bitset
index e0e8f1340..ee771bed0 100644
--- a/gcc-4.6/libstdc++-v3/include/std/bitset
+++ b/gcc-4.6/libstdc++-v3/include/std/bitset
@@ -52,11 +52,13 @@
#include <iosfwd>
#include <bits/cxxabi_forced.h>
-#define _GLIBCXX_BITSET_BITS_PER_WORD (__CHAR_BIT__ * sizeof(unsigned long))
+#define _GLIBCXX_BITSET_BITS_PER_WORD (__CHAR_BIT__ * __SIZEOF_LONG__)
#define _GLIBCXX_BITSET_WORDS(__n) \
((__n) / _GLIBCXX_BITSET_BITS_PER_WORD + \
((__n) % _GLIBCXX_BITSET_BITS_PER_WORD == 0 ? 0 : 1))
+#define _GLIBCXX_BITSET_BITS_PER_ULL (__CHAR_BIT__ * __SIZEOF_LONG_LONG__)
+
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_CONTAINER
@@ -654,6 +656,24 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
_S_do_sanitize(_WordT) { }
};
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ template<size_t _Nb, bool = _Nb < _GLIBCXX_BITSET_BITS_PER_ULL>
+ struct _Sanitize_val
+ {
+ static constexpr unsigned long long
+ _S_do_sanitize_val(unsigned long long __val)
+ { return __val; }
+ };
+
+ template<size_t _Nb>
+ struct _Sanitize_val<_Nb, true>
+ {
+ static constexpr unsigned long long
+ _S_do_sanitize_val(unsigned long long __val)
+ { return __val & ~((~static_cast<unsigned long long>(0)) << _Nb); }
+ };
+#endif
+
/**
* @brief The %bitset class represents a @e fixed-size sequence of bits.
*
@@ -819,7 +839,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
/// Initial bits bitwise-copied from a single word (others set to zero).
#ifdef __GXX_EXPERIMENTAL_CXX0X__
constexpr bitset(unsigned long long __val)
- : _Base(__val) { }
+ : _Base(_Sanitize_val<_Nb>::_S_do_sanitize_val(__val)) { }
#else
bitset(unsigned long __val)
: _Base(__val)
@@ -1509,6 +1529,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER
#undef _GLIBCXX_BITSET_WORDS
#undef _GLIBCXX_BITSET_BITS_PER_WORD
+#undef _GLIBCXX_BITSET_BITS_PER_ULL
#ifdef __GXX_EXPERIMENTAL_CXX0X__
@@ -1525,7 +1546,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public __hash_base<size_t, _GLIBCXX_STD_C::bitset<_Nb>>
{
size_t
- operator()(const _GLIBCXX_STD_C::bitset<_Nb>& __b) const
+ operator()(const _GLIBCXX_STD_C::bitset<_Nb>& __b) const noexcept
{
const size_t __clength = (_Nb + __CHAR_BIT__ - 1) / __CHAR_BIT__;
return std::_Hash_impl::hash(__b._M_getdata(), __clength);
@@ -1537,7 +1558,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public __hash_base<size_t, _GLIBCXX_STD_C::bitset<0>>
{
size_t
- operator()(const _GLIBCXX_STD_C::bitset<0>&) const
+ operator()(const _GLIBCXX_STD_C::bitset<0>&) const noexcept
{ return 0; }
};
diff --git a/gcc-4.6/libstdc++-v3/include/std/complex b/gcc-4.6/libstdc++-v3/include/std/complex
index aa6e81d24..da3c469f8 100644
--- a/gcc-4.6/libstdc++-v3/include/std/complex
+++ b/gcc-4.6/libstdc++-v3/include/std/complex
@@ -1,7 +1,7 @@
// The template and inlines for the -*- C++ -*- complex number classes.
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009, 2010
+// 2006, 2007, 2008, 2009, 2010, 2011
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -1695,12 +1695,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
std::complex<_Tp>
__complex_acosh(const std::complex<_Tp>& __z)
{
- std::complex<_Tp> __t((__z.real() - __z.imag())
- * (__z.real() + __z.imag()) - _Tp(1.0),
- _Tp(2.0) * __z.real() * __z.imag());
- __t = std::sqrt(__t);
-
- return std::log(__t + __z);
+ // Kahan's formula.
+ return _Tp(2.0) * std::log(std::sqrt(_Tp(0.5) * (__z + _Tp(1.0)))
+ + std::sqrt(_Tp(0.5) * (__z - _Tp(1.0))));
}
#if _GLIBCXX_USE_C99_COMPLEX_TR1
diff --git a/gcc-4.6/libstdc++-v3/include/std/condition_variable b/gcc-4.6/libstdc++-v3/include/std/condition_variable
index a0a3c0879..ff65dc49c 100644
--- a/gcc-4.6/libstdc++-v3/include/std/condition_variable
+++ b/gcc-4.6/libstdc++-v3/include/std/condition_variable
@@ -198,10 +198,25 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
void
wait(_Lock& __lock)
{
- unique_lock<mutex> __my_lock(_M_mutex);
- __lock.unlock();
- _M_cond.wait(__my_lock);
- __lock.lock();
+ // scoped unlock - unlocks in ctor, re-locks in dtor
+ struct _Unlock {
+ explicit _Unlock(_Lock& __lk) : _M_lock(__lk) { __lk.unlock(); }
+ ~_Unlock() noexcept(false)
+ {
+ if (uncaught_exception())
+ __try { _M_lock.lock(); } __catch(...) { }
+ else
+ _M_lock.lock();
+ }
+ _Lock& _M_lock;
+ };
+
+ unique_lock<mutex> __my_lock(_M_mutex);
+ _Unlock __unlock(__lock);
+ // _M_mutex must be unlocked before re-locking __lock so move
+ // ownership of _M_mutex lock to an object with shorter lifetime.
+ unique_lock<mutex> __my_lock2(std::move(__my_lock));
+ _M_cond.wait(__my_lock2);
}
diff --git a/gcc-4.6/libstdc++-v3/include/std/system_error b/gcc-4.6/libstdc++-v3/include/std/system_error
index da09a7588..6ef070a9d 100644
--- a/gcc-4.6/libstdc++-v3/include/std/system_error
+++ b/gcc-4.6/libstdc++-v3/include/std/system_error
@@ -359,7 +359,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public __hash_base<size_t, error_code>
{
size_t
- operator()(const error_code& __e) const
+ operator()(const error_code& __e) const noexcept
{
const size_t __tmp = std::_Hash_impl::hash(__e._M_value);
return std::_Hash_impl::__hash_combine(__e._M_cat, __tmp);
diff --git a/gcc-4.6/libstdc++-v3/include/std/thread b/gcc-4.6/libstdc++-v3/include/std/thread
index de58e8141..bd102fc8d 100644
--- a/gcc-4.6/libstdc++-v3/include/std/thread
+++ b/gcc-4.6/libstdc++-v3/include/std/thread
@@ -224,7 +224,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
: public __hash_base<size_t, thread::id>
{
size_t
- operator()(const thread::id& __id) const
+ operator()(const thread::id& __id) const noexcept
{ return std::_Hash_impl::hash(__id._M_thread); }
};
diff --git a/gcc-4.6/libstdc++-v3/include/std/typeindex b/gcc-4.6/libstdc++-v3/include/std/typeindex
index 79b3eadf7..78aeeb1e9 100644
--- a/gcc-4.6/libstdc++-v3/include/std/typeindex
+++ b/gcc-4.6/libstdc++-v3/include/std/typeindex
@@ -76,7 +76,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
{ return !_M_target->before(*__rhs._M_target); }
size_t
- hash_code() const
+ hash_code() const noexcept
{ return _M_target->hash_code(); }
const char*
@@ -97,7 +97,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
typedef type_index argument_type;
size_t
- operator()(const type_index& __ti) const
+ operator()(const type_index& __ti) const noexcept
{ return __ti.hash_code(); }
};
diff --git a/gcc-4.6/libstdc++-v3/include/tr1/complex b/gcc-4.6/libstdc++-v3/include/tr1/complex
index fc213b8f1..689ea167b 100644
--- a/gcc-4.6/libstdc++-v3/include/tr1/complex
+++ b/gcc-4.6/libstdc++-v3/include/tr1/complex
@@ -185,12 +185,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
std::complex<_Tp>
__complex_acosh(const std::complex<_Tp>& __z)
{
- std::complex<_Tp> __t((__z.real() - __z.imag())
- * (__z.real() + __z.imag()) - _Tp(1.0),
- _Tp(2.0) * __z.real() * __z.imag());
- __t = std::sqrt(__t);
-
- return std::log(__t + __z);
+ // Kahan's formula.
+ return _Tp(2.0) * std::log(std::sqrt(_Tp(0.5) * (__z + _Tp(1.0)))
+ + std::sqrt(_Tp(0.5) * (__z - _Tp(1.0))));
}
#if _GLIBCXX_USE_C99_COMPLEX_TR1
diff --git a/gcc-4.6/libstdc++-v3/include/tr1/poly_hermite.tcc b/gcc-4.6/libstdc++-v3/include/tr1/poly_hermite.tcc
index e86b3777c..95e8079d5 100644
--- a/gcc-4.6/libstdc++-v3/include/tr1/poly_hermite.tcc
+++ b/gcc-4.6/libstdc++-v3/include/tr1/poly_hermite.tcc
@@ -1,6 +1,6 @@
// Special functions -*- C++ -*-
-// Copyright (C) 2006, 2007, 2008, 2009, 2010
+// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -84,7 +84,7 @@ namespace tr1
unsigned int __i;
for (__H_nm2 = __H_0, __H_nm1 = __H_1, __i = 2; __i <= __n; ++__i)
{
- __H_n = 2 * (__x * __H_nm1 + (__i - 1) * __H_nm2);
+ __H_n = 2 * (__x * __H_nm1 - (__i - 1) * __H_nm2);
__H_nm2 = __H_nm1;
__H_nm1 = __H_n;
}
diff --git a/gcc-4.6/libstdc++-v3/libsupc++/del_op.cc b/gcc-4.6/libstdc++-v3/libsupc++/del_op.cc
index 86d4c1e29..d512146df 100644
--- a/gcc-4.6/libstdc++-v3/libsupc++/del_op.cc
+++ b/gcc-4.6/libstdc++-v3/libsupc++/del_op.cc
@@ -46,3 +46,11 @@ operator delete(void* ptr) throw ()
if (ptr)
std::free(ptr);
}
+
+_GLIBCXX_WEAK_DEFINITION void
+operator delete(void* ptr,
+ std::size_t bytes __attribute__((__unused__))) throw ()
+{
+ if (ptr)
+ std::free(ptr);
+}
diff --git a/gcc-4.6/libstdc++-v3/libsupc++/new b/gcc-4.6/libstdc++-v3/libsupc++/new
index 80ee3ba0f..7f7fdb8e4 100644
--- a/gcc-4.6/libstdc++-v3/libsupc++/new
+++ b/gcc-4.6/libstdc++-v3/libsupc++/new
@@ -93,6 +93,7 @@ namespace std
void* operator new(std::size_t) throw (std::bad_alloc);
void* operator new[](std::size_t) throw (std::bad_alloc);
void operator delete(void*) throw();
+void operator delete(void*, std::size_t) throw();
void operator delete[](void*) throw();
void* operator new(std::size_t, const std::nothrow_t&) throw();
void* operator new[](std::size_t, const std::nothrow_t&) throw();
diff --git a/gcc-4.6/libstdc++-v3/libsupc++/typeinfo b/gcc-4.6/libstdc++-v3/libsupc++/typeinfo
index 69311d69e..22ef49fa7 100644
--- a/gcc-4.6/libstdc++-v3/libsupc++/typeinfo
+++ b/gcc-4.6/libstdc++-v3/libsupc++/typeinfo
@@ -140,7 +140,7 @@ namespace std
{ return !operator==(__arg); }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
- size_t hash_code() const throw()
+ size_t hash_code() const noexcept
{
# if !__GXX_MERGED_TYPEINFO_NAMES
return _Hash_bytes(name(), __builtin_strlen(name()),
diff --git a/gcc-4.6/libstdc++-v3/src/compatibility-c++0x.cc b/gcc-4.6/libstdc++-v3/src/compatibility-c++0x.cc
index 08a572761..133426eaa 100644
--- a/gcc-4.6/libstdc++-v3/src/compatibility-c++0x.cc
+++ b/gcc-4.6/libstdc++-v3/src/compatibility-c++0x.cc
@@ -52,33 +52,58 @@ namespace std _GLIBCXX_VISIBILITY(default)
#ifndef _GLIBCXX_LONG_DOUBLE_COMPAT_IMPL
template<>
- size_t
- hash<string>::operator()(string __s) const
- { return _Hash_impl::hash(__s.data(), __s.length()); }
+ struct hash<string>
+ {
+ size_t operator()(string) const;
+ };
+
+ size_t
+ hash<string>::operator()(string __s) const
+ { return _Hash_impl::hash(__s.data(), __s.length()); }
template<>
- size_t
- hash<const string&>::operator()(const string& __s) const
- { return _Hash_impl::hash(__s.data(), __s.length()); }
+ struct hash<const string&>
+ {
+ size_t operator()(const string&) const;
+ };
+
+ size_t
+ hash<const string&>::operator()(const string& __s) const
+ { return _Hash_impl::hash(__s.data(), __s.length()); }
#ifdef _GLIBCXX_USE_WCHAR_T
template<>
- size_t
- hash<wstring>::operator()(wstring __s) const
- { return _Hash_impl::hash(__s.data(), __s.length() * sizeof(wchar_t)); }
+ struct hash<wstring>
+ {
+ size_t operator()(wstring) const;
+ };
+
+ size_t
+ hash<wstring>::operator()(wstring __s) const
+ { return _Hash_impl::hash(__s.data(), __s.length() * sizeof(wchar_t)); }
template<>
- size_t
- hash<const wstring&>::operator()(const wstring& __s) const
- { return _Hash_impl::hash(__s.data(), __s.length() * sizeof(wchar_t)); }
+ struct hash<const wstring&>
+ {
+ size_t operator()(const wstring&) const;
+ };
+
+ size_t
+ hash<const wstring&>::operator()(const wstring& __s) const
+ { return _Hash_impl::hash(__s.data(), __s.length() * sizeof(wchar_t)); }
#endif
#endif
template<>
- size_t
- hash<error_code>::operator()(error_code __e) const
+ struct hash<error_code>
{
- const size_t __tmp = std::_Hash_impl::hash(__e._M_value);
- return std::_Hash_impl::__hash_combine(__e._M_cat, __tmp);
- }
+ size_t operator()(error_code) const;
+ };
+
+ size_t
+ hash<error_code>::operator()(error_code __e) const
+ {
+ const size_t __tmp = std::_Hash_impl::hash(__e._M_value);
+ return std::_Hash_impl::__hash_combine(__e._M_cat, __tmp);
+ }
}
diff --git a/gcc-4.6/libstdc++-v3/src/compatibility-ldbl.cc b/gcc-4.6/libstdc++-v3/src/compatibility-ldbl.cc
index a9bdb8b09..a103856ad 100644
--- a/gcc-4.6/libstdc++-v3/src/compatibility-ldbl.cc
+++ b/gcc-4.6/libstdc++-v3/src/compatibility-ldbl.cc
@@ -1,6 +1,6 @@
// Compatibility symbols for -mlong-double-64 compatibility -*- C++ -*-
-// Copyright (C) 2006, 2008, 2009, 2010
+// Copyright (C) 2006, 2008, 2009, 2010, 2011
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -69,14 +69,7 @@ namespace std _GLIBCXX_VISIBILITY(default)
// For std::tr1::hash<long double>::operator()
#define _GLIBCXX_LONG_DOUBLE_COMPAT_IMPL
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
- namespace tr1
- {
-#include "hash-long-double-aux.cc"
- }
-}
+#include "hash-long-double-tr1-aux.cc"
// std::tr1::hash<long double>::operator()
// and std::hash<long double>::operator()
diff --git a/gcc-4.6/libstdc++-v3/src/hash-long-double-aux.cc b/gcc-4.6/libstdc++-v3/src/hash-long-double-aux.cc
deleted file mode 100644
index d54d635f8..000000000
--- a/gcc-4.6/libstdc++-v3/src/hash-long-double-aux.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-// std::hash and std::tr1::hash definitions, long double bits -*- C++ -*-
-
-// Copyright (C) 2010 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
- // For long double, careful with random padding bits (e.g., on x86,
- // 10 bytes -> 12 bytes) and resort to frexp.
- template<>
- size_t
- hash<long double>::operator()(long double __val) const
- {
- // 0 and -0 both hash to zero.
- if (__val == 0.0L)
- return 0;
-
- int __exponent;
- __val = __builtin_frexpl(__val, &__exponent);
- __val = __val < 0.0l ? -(__val + 0.5l) : __val;
-
- const long double __mult = __SIZE_MAX__ + 1.0l;
- __val *= __mult;
-
- // Try to use all the bits of the mantissa (really necessary only
- // on 32-bit targets, at least for 80-bit floating point formats).
- const size_t __hibits = (size_t)__val;
- __val = (__val - (long double)__hibits) * __mult;
-
- const size_t __coeff = __SIZE_MAX__ / __LDBL_MAX_EXP__;
-
- return __hibits + (size_t)__val + __coeff * __exponent;
- }
diff --git a/gcc-4.6/libstdc++-v3/src/hash-long-double-tr1-aux.cc b/gcc-4.6/libstdc++-v3/src/hash-long-double-tr1-aux.cc
new file mode 100644
index 000000000..70ed45bbf
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/src/hash-long-double-tr1-aux.cc
@@ -0,0 +1,56 @@
+// std::tr1::hash definitions, long double bits -*- C++ -*-
+
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+ namespace tr1
+ {
+ // For long double, careful with random padding bits (e.g., on x86,
+ // 10 bytes -> 12 bytes) and resort to frexp.
+ template<>
+ size_t
+ hash<long double>::operator()(long double __val) const
+ {
+ // 0 and -0 both hash to zero.
+ if (__val == 0.0L)
+ return 0;
+
+ int __exponent;
+ __val = __builtin_frexpl(__val, &__exponent);
+ __val = __val < 0.0l ? -(__val + 0.5l) : __val;
+
+ const long double __mult = __SIZE_MAX__ + 1.0l;
+ __val *= __mult;
+
+ // Try to use all the bits of the mantissa (really necessary only
+ // on 32-bit targets, at least for 80-bit floating point formats).
+ const size_t __hibits = (size_t)__val;
+ __val = (__val - (long double)__hibits) * __mult;
+
+ const size_t __coeff = __SIZE_MAX__ / __LDBL_MAX_EXP__;
+
+ return __hibits + (size_t)__val + __coeff * __exponent;
+ }
+ }
+}
diff --git a/gcc-4.6/libstdc++-v3/src/hash_c++0x.cc b/gcc-4.6/libstdc++-v3/src/hash_c++0x.cc
index 852498df6..d68507454 100644
--- a/gcc-4.6/libstdc++-v3/src/hash_c++0x.cc
+++ b/gcc-4.6/libstdc++-v3/src/hash_c++0x.cc
@@ -1,6 +1,6 @@
// std::hash definitions -*- C++ -*-
-// Copyright (C) 2010 Free Software Foundation, Inc.
+// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -30,5 +30,27 @@
namespace std _GLIBCXX_VISIBILITY(default)
{
-#include "hash-long-double-aux.cc"
+ _GLIBCXX_PURE size_t
+ hash<long double>::operator()(long double __val) const noexcept
+ {
+ // 0 and -0 both hash to zero.
+ if (__val == 0.0L)
+ return 0;
+
+ int __exponent;
+ __val = __builtin_frexpl(__val, &__exponent);
+ __val = __val < 0.0l ? -(__val + 0.5l) : __val;
+
+ const long double __mult = __SIZE_MAX__ + 1.0l;
+ __val *= __mult;
+
+ // Try to use all the bits of the mantissa (really necessary only
+ // on 32-bit targets, at least for 80-bit floating point formats).
+ const size_t __hibits = (size_t)__val;
+ __val = (__val - (long double)__hibits) * __mult;
+
+ const size_t __coeff = __SIZE_MAX__ / __LDBL_MAX_EXP__;
+
+ return __hibits + (size_t)__val + __coeff * __exponent;
+ }
}
diff --git a/gcc-4.6/libstdc++-v3/src/hash_tr1.cc b/gcc-4.6/libstdc++-v3/src/hash_tr1.cc
index e707e827a..a5ac87e58 100644
--- a/gcc-4.6/libstdc++-v3/src/hash_tr1.cc
+++ b/gcc-4.6/libstdc++-v3/src/hash_tr1.cc
@@ -1,6 +1,6 @@
// std::tr1::hash definitions -*- C++ -*-
-// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -25,12 +25,12 @@
#include <string>
#include <tr1/functional>
+#include "hash-long-double-tr1-aux.cc"
+
namespace std _GLIBCXX_VISIBILITY(default)
{
namespace tr1
{
-#include "hash-long-double-aux.cc"
-
#ifndef _GLIBCXX_LONG_DOUBLE_COMPAT_IMPL
template<>
size_t
diff --git a/gcc-4.6/libstdc++-v3/testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc
index 146b9656f..f8361c40c 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <cstdbool>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/18_support/headers/cstdint/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/18_support/headers/cstdint/std_c++0x_neg.cc
index afd65a36a..7dbc10ef2 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/18_support/headers/cstdint/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/18_support/headers/cstdint/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <cstdint>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc
index 9698cf031..38e27dc82 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc
@@ -19,7 +19,7 @@
#include <system_error>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/20_util/allocator/51626.cc b/gcc-4.6/libstdc++-v3/testsuite/20_util/allocator/51626.cc
new file mode 100644
index 000000000..951aa18fe
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/20_util/allocator/51626.cc
@@ -0,0 +1,66 @@
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+// { dg-options "-std=gnu++0x" }
+
+#include <memory>
+#include <vector>
+#include <testsuite_hooks.h>
+
+int count = 0;
+
+template <class T>
+ struct allocator98 : std::allocator<T>
+ {
+ template <class U> struct rebind { typedef allocator98<U> other; };
+
+ allocator98() { }
+
+ template <class U> allocator98(const allocator98<U>&) { };
+
+ void construct(T* p, const T& val)
+ {
+ ++count;
+ std::allocator<T>::construct(p, val);
+ }
+ };
+
+template <class T>
+ struct allocator11 : std::allocator<T>
+ {
+ template <class U> struct rebind { typedef allocator11<U> other; };
+
+ allocator11() { }
+
+ template <class U> allocator11(const allocator11<U>&) { };
+
+ template<typename... Args>
+ void construct(T* p, Args&&... args)
+ {
+ ++count;
+ std::allocator<T>::construct(p, std::forward<Args>(args)...);
+ }
+ };
+
+int main()
+{
+ std::vector< int, allocator98<int> > v98(1);
+ VERIFY( count == 0 );
+
+ std::vector< int, allocator11<int> > v11(1);
+ VERIFY( count == 1 );
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/20_util/headers/type_traits/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/20_util/headers/type_traits/std_c++0x_neg.cc
index 4fd554e35..e69811409 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/20_util/headers/type_traits/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/20_util/headers/type_traits/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <type_traits>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
index 36cf7f9c2..f5899d399 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
@@ -35,6 +35,6 @@ void test01()
// { dg-error "incomplete" "" { target *-*-* } 766 }
std::shared_ptr<X> p9(ap()); // { dg-error "here" }
- // { dg-error "incomplete" "" { target *-*-* } 858 }
+ // { dg-error "incomplete" "" { target *-*-* } 859 }
}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
index a210d0432..046fd3c6c 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
@@ -42,8 +42,8 @@ main()
return 0;
}
-// { dg-warning "note" "" { target *-*-* } 354 }
-// { dg-warning "note" "" { target *-*-* } 1085 }
+// { dg-warning "note" "" { target *-*-* } 358 }
+// { dg-warning "note" "" { target *-*-* } 1086 }
// { dg-warning "note" "" { target *-*-* } 468 }
// { dg-warning "note" "" { target *-*-* } 586 }
// { dg-warning "note" "" { target *-*-* } 1049 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc b/gcc-4.6/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc
index 7316cc454..4e039775a 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc
@@ -1,6 +1,6 @@
// { dg-require-namedlocale "ru_RU.ISO-8859-5" }
-// Copyright (C) 2010 Free Software Foundation
+// Copyright (C) 2010, 2011 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -49,7 +49,11 @@ void test01()
// get_weekday(iter_type, iter_type, ios_base&,
// ios_base::iostate&, tm*) const
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 14)
+ iss.str("\xbf\xdd\x2e");
+#else
iss.str("\xbf\xdd\xd4");
+#endif
iterator_type is_it01(iss);
tm time01;
memset(&time01, -1, sizeof(tm));
@@ -67,7 +71,11 @@ void test01()
VERIFY( time02.tm_wday == 1 );
VERIFY( errorstate == ios_base::eofbit );
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 14)
+ iss.str("\xbf\xdd\x2e\xd5\xd4\xd5\xdb\xec\xdd\xd8\xda");
+#else
iss.str("\xbf\xdd\xd4\xd5\xd4\xd5\xdb\xec\xdd\xd8\xda");
+#endif
iterator_type is_it03(iss);
tm time03;
memset(&time03, -1, sizeof(tm));
diff --git a/gcc-4.6/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc b/gcc-4.6/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc
index 1c079a400..ee8d6769d 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc
@@ -2,7 +2,7 @@
// 2010-01-05 Paolo Carlini <paolo.carlini@oracle.com>
-// Copyright (C) 2010 Free Software Foundation
+// Copyright (C) 2010, 2011 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -50,6 +50,15 @@ void test01()
// get_weekday(iter_type, iter_type, ios_base&,
// ios_base::iostate&, tm*) const
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 14)
+ const char* awdays[7] = { "\u0412\u0441\u002E",
+ "\u041F\u043D\u002E",
+ "\u0412\u0442\u002E",
+ "\u0421\u0440\u002E",
+ "\u0427\u0442\u002E",
+ "\u041F\u0442\u002E",
+ "\u0421\u0431\u002E" };
+#else
const char* awdays[7] = { "\u0412\u0441\u043A",
"\u041F\u043D\u0434",
"\u0412\u0442\u0440",
@@ -57,6 +66,7 @@ void test01()
"\u0427\u0442\u0432",
"\u041F\u0442\u043D",
"\u0421\u0431\u0442" };
+#endif
for (int i = 0; i < 7; ++i)
{
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/bitset/cons/50268.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/bitset/cons/50268.cc
new file mode 100644
index 000000000..6a61d7e2f
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/bitset/cons/50268.cc
@@ -0,0 +1,84 @@
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <bitset>
+#include <testsuite_hooks.h>
+
+// libstdc++/50268
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ std::bitset<1> b1(3ULL);
+ VERIFY( b1.count() == 1ULL );
+
+ std::bitset<3> b2(30ULL);
+ VERIFY( b2.count() == 2ULL );
+
+ std::bitset<6> b3(300ULL);
+ VERIFY( b3.count() == 3ULL );
+
+ std::bitset<9> b4(3000ULL);
+ VERIFY( b4.count() == 5ULL );
+
+ std::bitset<16> b5(300000ULL);
+ VERIFY( b5.count() == 7ULL );
+
+ std::bitset<24> b6(30000000ULL);
+ VERIFY( b6.count() == 9ULL );
+
+ std::bitset<32> b7(30000000000ULL);
+ VERIFY( b7.count() == 13ULL );
+
+ std::bitset<37> b8(3000000000000ULL);
+ VERIFY( b8.count() == 18ULL );
+
+ std::bitset<40> b9(30000000000000ULL);
+ VERIFY( b9.count() == 16ULL );
+
+ std::bitset<45> b10(30000000000000ULL);
+ VERIFY( b10.count() == 20ULL );
+
+ std::bitset<64> b11(30000000000000ULL);
+ VERIFY( b11.count() == 20ULL );
+
+ std::bitset<100> b12(30000000000000ULL);
+ VERIFY( b12.count() == 20ULL );
+
+ std::bitset<200> b13(30000000000000ULL);
+ VERIFY( b13.count() == 20ULL );
+
+ std::bitset<45> b14(18446744073709551615ULL);
+ VERIFY( b14.count() == 45ULL );
+
+ std::bitset<64> b15(18446744073709551615ULL);
+ VERIFY( b15.count() == 64ULL );
+
+ std::bitset<100> b16(18446744073709551615ULL);
+ VERIFY( b16.count() == 64ULL );
+
+ std::bitset<200> b17(18446744073709551615ULL);
+ VERIFY( b17.count() == 64ULL );
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/3.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/3.cc
index 34d0f74f1..79a046ed7 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/3.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/3.cc
@@ -1,4 +1,4 @@
-// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -31,7 +31,9 @@ void erase(size_t num_elm, size_t elm_strt, size_t elm_end)
x.erase(x.begin() + elm_strt, x.begin() + elm_end);
- const size_t min_num_cpy = std::min(elm_strt, num_elm - elm_end);
+ const size_t min_num_cpy
+ = elm_strt == elm_end ? 0 : std::min(elm_strt, num_elm - elm_end);
+
VERIFY( assignment_operator::count() == min_num_cpy );
}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/50529.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/50529.cc
new file mode 100644
index 000000000..f534758a9
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/50529.cc
@@ -0,0 +1,38 @@
+// { dg-options "-std=gnu++0x" }
+
+// 2011-09-26 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <deque>
+#include <testsuite_rvalref.h>
+
+// libstdc++/50529
+void test01()
+{
+ std::deque<__gnu_test::rvalstruct> d(10);
+
+ for (auto it = d.begin(); it != d.end(); ++it)
+ d.erase(it, it);
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/array/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/array/std_c++0x_neg.cc
index e9317d7ed..bded29ee6 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/array/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/array/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <array>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/tuple/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/tuple/std_c++0x_neg.cc
index 0a2e073a5..b5a10d2d6 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/tuple/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/tuple/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <tuple>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc
index 0b32304ca..612124006 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <unordered_map>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc
index bc6963c80..85aca13c3 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <unordered_set>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc
new file mode 100644
index 000000000..f50b7b7e9
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc
@@ -0,0 +1,38 @@
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+#include <map>
+
+struct X
+{
+ template<typename T>
+ X(T&) {}
+};
+
+bool operator<(const X&, const X&) { return false; }
+
+// LWG 2059.
+void erasor(std::map<X, int>& s, X x)
+{
+ std::map<X, int>::iterator it = s.find(x);
+ if (it != s.end())
+ s.erase(it);
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc
new file mode 100644
index 000000000..ee687f77c
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc
@@ -0,0 +1,38 @@
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+#include <map>
+
+struct X
+{
+ template<typename T>
+ X(T&) {}
+};
+
+bool operator<(const X&, const X&) { return false; }
+
+// LWG 2059.
+void erasor(std::multimap<X, int>& s, X x)
+{
+ std::multimap<X, int>::iterator it = s.find(x);
+ if (it != s.end())
+ s.erase(it);
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc
new file mode 100644
index 000000000..c5beb6a8d
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc
@@ -0,0 +1,38 @@
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+#include <set>
+
+struct X
+{
+ template<typename T>
+ X(T&) {}
+};
+
+bool operator<(const X&, const X&) { return false; }
+
+// LWG 2059.
+void erasor(std::multiset<X>& s, X x)
+{
+ std::multiset<X>::iterator it = s.find(x);
+ if (it != s.end())
+ s.erase(it);
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc
new file mode 100644
index 000000000..4fb296a95
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc
@@ -0,0 +1,38 @@
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+#include <set>
+
+struct X
+{
+ template<typename T>
+ X(T&) {}
+};
+
+bool operator<(const X&, const X&) { return false; }
+
+// LWG 2059.
+void erasor(std::set<X>& s, X x)
+{
+ std::set<X>::iterator it = s.find(x);
+ if (it != s.end())
+ s.erase(it);
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc
new file mode 100644
index 000000000..7986fb23a
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc
@@ -0,0 +1,41 @@
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+#include <unordered_map>
+
+struct X
+{
+ template<typename T>
+ X(T&) {}
+};
+
+struct X_hash
+{ std::size_t operator()(const X&) const { return 0; } };
+
+bool operator==(const X&, const X&) { return false; }
+
+// LWG 2059.
+void erasor(std::unordered_map<X, int, X_hash>& s, X x)
+{
+ std::unordered_map<X, int, X_hash>::iterator it = s.find(x);
+ if (it != s.end())
+ s.erase(it);
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc
new file mode 100644
index 000000000..0d434ac8a
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc
@@ -0,0 +1,41 @@
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+#include <unordered_map>
+
+struct X
+{
+ template<typename T>
+ X(T&) {}
+};
+
+struct X_hash
+{ std::size_t operator()(const X&) const { return 0; } };
+
+bool operator==(const X&, const X&) { return false; }
+
+// LWG 2059.
+void erasor(std::unordered_multimap<X, int, X_hash>& s, X x)
+{
+ std::unordered_multimap<X, int, X_hash>::iterator it = s.find(x);
+ if (it != s.end())
+ s.erase(it);
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc
new file mode 100644
index 000000000..7a0a18352
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc
@@ -0,0 +1,41 @@
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+#include <unordered_set>
+
+struct X
+{
+ template<typename T>
+ X(T&) {}
+};
+
+struct X_hash
+{ std::size_t operator()(const X&) const { return 0; } };
+
+bool operator==(const X&, const X&) { return false; }
+
+// LWG 2059.
+void erasor(std::unordered_multiset<X, X_hash>& s, X x)
+{
+ std::unordered_multiset<X, X_hash>::iterator it = s.find(x);
+ if (it != s.end())
+ s.erase(it);
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc
new file mode 100644
index 000000000..ec5aeb1a2
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc
@@ -0,0 +1,41 @@
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+
+// { dg-do compile }
+// { dg-options "-std=gnu++0x" }
+
+#include <unordered_set>
+
+struct X
+{
+ template<typename T>
+ X(T&) {}
+};
+
+struct X_hash
+{ std::size_t operator()(const X&) const { return 0; } };
+
+bool operator==(const X&, const X&) { return false; }
+
+// LWG 2059.
+void erasor(std::unordered_set<X, X_hash>& s, X x)
+{
+ std::unordered_set<X, X_hash>::iterator it = s.find(x);
+ if (it != s.end())
+ s.erase(it);
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/50529.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/50529.cc
new file mode 100644
index 000000000..d76bed53c
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/50529.cc
@@ -0,0 +1,38 @@
+// { dg-options "-std=gnu++0x" }
+
+// 2011-09-26 Paolo Carlini <paolo.carlini@oracle.com>
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <vector>
+#include <testsuite_rvalref.h>
+
+// libstdc++/50529
+void test01()
+{
+ std::vector<__gnu_test::rvalstruct> v(10);
+
+ for (auto it = v.begin(); it != v.end(); ++it)
+ v.erase(it, it);
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
index 8c6a25cfe..1985074c1 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1166 }
+// { dg-error "no matching" "" { target *-*-* } 1221 }
// { dg-excess-errors "" }
#include <vector>
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
index 03aa5346c..fe2429598 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1096 }
+// { dg-error "no matching" "" { target *-*-* } 1151 }
// { dg-excess-errors "" }
#include <vector>
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
index a78e56c00..7616bca84 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1096 }
+// { dg-error "no matching" "" { target *-*-* } 1151 }
// { dg-excess-errors "" }
#include <vector>
diff --git a/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
index 1c29e29d3..3ff504fe7 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>.
// { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1207 }
+// { dg-error "no matching" "" { target *-*-* } 1262 }
// { dg-excess-errors "" }
#include <vector>
diff --git a/gcc-4.6/libstdc++-v3/testsuite/25_algorithms/inplace_merge/49559.cc b/gcc-4.6/libstdc++-v3/testsuite/25_algorithms/inplace_merge/49559.cc
new file mode 100644
index 000000000..8b7b52e3f
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/25_algorithms/inplace_merge/49559.cc
@@ -0,0 +1,72 @@
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#undef _GLIBCXX_CONCEPT_CHECKS
+
+// XXX FIXME: parallel-mode should deal correctly with moveable-only types
+// per C++0x, at minimum smoothly fall back to serial.
+#undef _GLIBCXX_PARALLEL
+
+#include <algorithm>
+#include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
+#include <testsuite_rvalref.h>
+
+using __gnu_test::test_container;
+using __gnu_test::bidirectional_iterator_wrapper;
+using __gnu_test::rvalstruct;
+
+typedef test_container<rvalstruct, bidirectional_iterator_wrapper> Container;
+
+const int A[] = { 0, 1, 2, 3, 4, 5 };
+const int N = 6;
+
+bool are_ordered(const rvalstruct& lhs, const rvalstruct& rhs)
+{ return lhs < rhs; }
+
+// libstdc++/49559
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ rvalstruct s1[6];
+ std::copy(A, A + N, s1);
+ Container con1(s1, s1 + N);
+ std::inplace_merge(con1.begin(), con1.it(4), con1.end());
+ VERIFY( s1[0] == 0 && s1[1] == 1 && s1[2] == 2
+ && s1[3] == 3 && s1[4] == 4 && s1[5] == 5 );
+ VERIFY( s1[0].valid && s1[1].valid && s1[2].valid
+ && s1[3].valid && s1[4].valid && s1[5].valid );
+
+ rvalstruct s2[6];
+ std::copy(A, A + N, s2);
+ Container con2(s2, s2 + N);
+ std::inplace_merge(con2.begin(), con2.it(4), con2.end(), are_ordered);
+ VERIFY( s2[0] == 0 && s2[1] == 1 && s2[2] == 2
+ && s2[3] == 3 && s2[4] == 4 && s2[5] == 5 );
+ VERIFY( s2[0].valid && s2[1].valid && s2[2].valid
+ && s2[3].valid && s2[4].valid && s2[5].valid );
+}
+
+int
+main()
+{
+ test01();
+ return 0;
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable.cc b/gcc-4.6/libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable.cc
index f7a35ffec..6509957da 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable.cc
@@ -39,13 +39,59 @@ test01()
{
bool test __attribute__((unused)) = true;
- int array[]={0,2,4,1,3,5};
- rvalstruct rv_array[6];
- std::copy(array, array + 6, rv_array);
- container con(rv_array, rv_array + 6);
- std::inplace_merge(con.begin(), con.it(3), con.end());
- VERIFY( rv_array[0] == 0 && rv_array[1] == 1 && rv_array[2] == 2
- && rv_array[3] == 3 && rv_array[4] == 4 && rv_array[5] == 5 );
+ int array1[]={0,2,4,1,3,5};
+ rvalstruct rv_array1[6];
+ std::copy(array1, array1 + 6, rv_array1);
+ container con1(rv_array1, rv_array1 + 6);
+ std::inplace_merge(con1.begin(), con1.it(3), con1.end());
+ VERIFY( rv_array1[0] == 0 && rv_array1[1] == 1 && rv_array1[2] == 2
+ && rv_array1[3] == 3 && rv_array1[4] == 4 && rv_array1[5] == 5 );
+
+ int array2[]={0,2,4,5,1,3};
+ rvalstruct rv_array2[6];
+ std::copy(array2, array2 + 6, rv_array2);
+ container con2(rv_array2, rv_array2 + 6);
+ std::inplace_merge(con2.begin(), con2.it(4), con2.end());
+ VERIFY( rv_array2[0] == 0 && rv_array2[1] == 1 && rv_array2[2] == 2
+ && rv_array2[3] == 3 && rv_array2[4] == 4 && rv_array2[5] == 5 );
+
+ int array3[]={1,1,1,2,2,2};
+ rvalstruct rv_array3[6];
+ std::copy(array3, array3 + 6, rv_array3);
+ container con3(rv_array3, rv_array3 + 6);
+ std::inplace_merge(con3.begin(), con3.it(3), con3.end());
+ VERIFY( rv_array3[0] == 1 && rv_array3[1] == 1 && rv_array3[2] == 1
+ && rv_array3[3] == 2 && rv_array3[4] == 2 && rv_array3[5] == 2 );
+
+ int array4[]={1,1,1,1,2,2};
+ rvalstruct rv_array4[6];
+ std::copy(array4, array4 + 6, rv_array4);
+ container con4(rv_array4, rv_array4 + 6);
+ std::inplace_merge(con4.begin(), con4.it(4), con4.end());
+ VERIFY( rv_array4[0] == 1 && rv_array4[1] == 1 && rv_array4[2] == 1
+ && rv_array4[3] == 1 && rv_array4[4] == 2 && rv_array4[5] == 2 );
+
+ int array5[]={3,3,3,3};
+ rvalstruct rv_array5[4];
+ std::copy(array5, array5 + 4, rv_array5);
+ container con5(rv_array5, rv_array5 + 4);
+ std::inplace_merge(con5.begin(), con5.it(2), con5.end());
+ VERIFY( rv_array5[0] == 3 && rv_array5[1] == 3 && rv_array5[2] == 3
+ && rv_array5[3] == 3 );
+
+ int array6[]={3,3,3};
+ rvalstruct rv_array6[3];
+ std::copy(array6, array6 + 3, rv_array6);
+ container con6(rv_array6, rv_array6 + 3);
+ std::inplace_merge(con6.begin(), con6.it(0), con6.end());
+ VERIFY( rv_array6[0] == 3 && rv_array6[1] == 3 && rv_array6[2] == 3 );
+
+ int array7[]={3,3};
+ rvalstruct rv_array7[2];
+ std::copy(array7, array7 + 2, rv_array7);
+ container con7(rv_array7, rv_array7 + 2);
+ std::inplace_merge(con7.begin(), con7.it(2), con7.end());
+ VERIFY( rv_array7[0] == 3 && rv_array7[1] == 3 );
}
int
diff --git a/gcc-4.6/libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable2.cc b/gcc-4.6/libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable2.cc
index 32ab3c70c..a3a898cd5 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable2.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable2.cc
@@ -1,6 +1,6 @@
// { dg-options "-std=gnu++0x" }
-// Copyright (C) 2009 Free Software Foundation, Inc.
+// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -39,13 +39,59 @@ test01()
{
bool test __attribute__((unused)) = true;
- int array[]={0,2,4,1,3,5};
- rvalstruct rv_array[6];
- std::copy(array, array + 6, rv_array);
- container con(rv_array, rv_array + 6);
- std::inplace_merge(con.begin(), con.it(3), con.end(), are_ordered);
- VERIFY( rv_array[0] == 0 && rv_array[1] == 1 && rv_array[2] == 2
- && rv_array[3] == 3 && rv_array[4] == 4 && rv_array[5] == 5 );
+ int array1[]={0,2,4,1,3,5};
+ rvalstruct rv_array1[6];
+ std::copy(array1, array1 + 6, rv_array1);
+ container con1(rv_array1, rv_array1 + 6);
+ std::inplace_merge(con1.begin(), con1.it(3), con1.end(), are_ordered);
+ VERIFY( rv_array1[0] == 0 && rv_array1[1] == 1 && rv_array1[2] == 2
+ && rv_array1[3] == 3 && rv_array1[4] == 4 && rv_array1[5] == 5 );
+
+ int array2[]={0,2,4,5,1,3};
+ rvalstruct rv_array2[6];
+ std::copy(array2, array2 + 6, rv_array2);
+ container con2(rv_array2, rv_array2 + 6);
+ std::inplace_merge(con2.begin(), con2.it(4), con2.end(), are_ordered);
+ VERIFY( rv_array2[0] == 0 && rv_array2[1] == 1 && rv_array2[2] == 2
+ && rv_array2[3] == 3 && rv_array2[4] == 4 && rv_array2[5] == 5 );
+
+ int array3[]={1,1,1,2,2,2};
+ rvalstruct rv_array3[6];
+ std::copy(array3, array3 + 6, rv_array3);
+ container con3(rv_array3, rv_array3 + 6);
+ std::inplace_merge(con3.begin(), con3.it(3), con3.end(), are_ordered);
+ VERIFY( rv_array3[0] == 1 && rv_array3[1] == 1 && rv_array3[2] == 1
+ && rv_array3[3] == 2 && rv_array3[4] == 2 && rv_array3[5] == 2 );
+
+ int array4[]={1,1,1,1,2,2};
+ rvalstruct rv_array4[6];
+ std::copy(array4, array4 + 6, rv_array4);
+ container con4(rv_array4, rv_array4 + 6);
+ std::inplace_merge(con4.begin(), con4.it(4), con4.end(), are_ordered);
+ VERIFY( rv_array4[0] == 1 && rv_array4[1] == 1 && rv_array4[2] == 1
+ && rv_array4[3] == 1 && rv_array4[4] == 2 && rv_array4[5] == 2 );
+
+ int array5[]={3,3,3,3};
+ rvalstruct rv_array5[4];
+ std::copy(array5, array5 + 4, rv_array5);
+ container con5(rv_array5, rv_array5 + 4);
+ std::inplace_merge(con5.begin(), con5.it(2), con5.end(), are_ordered);
+ VERIFY( rv_array5[0] == 3 && rv_array5[1] == 3 && rv_array5[2] == 3
+ && rv_array5[3] == 3 );
+
+ int array6[]={3,3,3};
+ rvalstruct rv_array6[3];
+ std::copy(array6, array6 + 3, rv_array6);
+ container con6(rv_array6, rv_array6 + 3);
+ std::inplace_merge(con6.begin(), con6.it(0), con6.end(), are_ordered);
+ VERIFY( rv_array6[0] == 3 && rv_array6[1] == 3 && rv_array6[2] == 3 );
+
+ int array7[]={3,3};
+ rvalstruct rv_array7[2];
+ std::copy(array7, array7 + 2, rv_array7);
+ container con7(rv_array7, rv_array7 + 2);
+ std::inplace_merge(con7.begin(), con7.it(2), con7.end(), are_ordered);
+ VERIFY( rv_array7[0] == 3 && rv_array7[1] == 3 );
}
int
diff --git a/gcc-4.6/libstdc++-v3/testsuite/25_algorithms/stable_sort/49559.cc b/gcc-4.6/libstdc++-v3/testsuite/25_algorithms/stable_sort/49559.cc
new file mode 100644
index 000000000..544511793
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/25_algorithms/stable_sort/49559.cc
@@ -0,0 +1,68 @@
+// { dg-options "-std=gnu++0x" }
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#undef _GLIBCXX_CONCEPT_CHECKS
+
+// XXX FIXME: parallel-mode should deal correctly with moveable-only types
+// per C++0x, at minimum smoothly fall back to serial.
+#undef _GLIBCXX_PARALLEL
+
+#include <algorithm>
+#include <testsuite_hooks.h>
+#include <testsuite_iterators.h>
+#include <testsuite_rvalref.h>
+
+using __gnu_test::test_container;
+using __gnu_test::random_access_iterator_wrapper;
+using __gnu_test::rvalstruct;
+
+typedef test_container<rvalstruct, random_access_iterator_wrapper> Container;
+
+const int A[] = { 10 };
+const int N = 1;
+
+bool order(const rvalstruct& lhs, const rvalstruct& rhs)
+{ return lhs < rhs; }
+
+// libstdc++/49559
+void test01()
+{
+ bool test __attribute__((unused)) = true;
+
+ rvalstruct s1[1];
+ std::copy(A, A + 1, s1);
+ Container con1(s1, s1 + 1);
+ std::stable_sort(con1.begin(), con1.end());
+ VERIFY( s1[0] == 10 );
+ VERIFY( s1[0].valid );
+
+ rvalstruct s2[1];
+ std::copy(A, A + 1, s2);
+ Container con2(s2, s2 + 1);
+ std::stable_sort(con2.begin(), con2.end(), order);
+ VERIFY( s2[0] == 10 );
+ VERIFY( s2[0].valid );
+}
+
+int
+main()
+{
+ test01();
+ return 0;
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/26_numerics/cmath/51083.cc b/gcc-4.6/libstdc++-v3/testsuite/26_numerics/cmath/51083.cc
new file mode 100644
index 000000000..8ba9b10e5
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/26_numerics/cmath/51083.cc
@@ -0,0 +1,62 @@
+// { dg-options "-std=gnu++0x" }
+//
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <cmath>
+
+namespace a
+{
+ template<typename> class Mat { };
+
+ template<typename T> struct Mat2 : Mat<T> { };
+
+ template<typename T>
+ int fdim(Mat<T>) { return 1; }
+
+ template<typename T, typename U>
+ int floor(Mat<T>, U) { return 1; }
+ template<typename T, typename U>
+ int floor(T, Mat<U>) { return 1; }
+
+ template<typename T, typename U, typename V>
+ int fma(Mat<T>, U, V) { return 1; }
+ template<typename T, typename U, typename V>
+ int fma(T, Mat<U>, V) { return 1; }
+ template<typename T, typename U, typename V>
+ int fma(T, U, Mat<V>) { return 1; }
+}
+
+int main()
+{
+ int __attribute__((unused)) i;
+
+ using namespace std;
+
+ a::Mat2<double> c;
+ i = fdim(c);
+ i = floor(c, 0.);
+ i = floor(0., c);
+ i = floor(c, 1);
+ i = floor(1, c);
+ i = fma(c, 0., 1.);
+ i = fma(0., c, 1.);
+ i = fma(0., 1., c);
+ i = fma(c, 0., 1);
+ i = fma(0., c, 1);
+ i = fma(0., 1, c);
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/26_numerics/complex/50880.cc b/gcc-4.6/libstdc++-v3/testsuite/26_numerics/complex/50880.cc
new file mode 100644
index 000000000..2b70a99dd
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/26_numerics/complex/50880.cc
@@ -0,0 +1,53 @@
+// { dg-options "-std=gnu++0x" }
+//
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <complex>
+#include <testsuite_hooks.h>
+
+template<typename T>
+ void test01_do()
+ {
+ bool test __attribute__((unused)) = true;
+
+ const std::complex<T> ca(T(-2), T(2));
+ const std::complex<T> cb(T(-2), T(0));
+ const std::complex<T> cc(T(-2), T(-2));
+
+ std::complex<T> cra = std::acosh(ca);
+ std::complex<T> crb = std::acosh(cb);
+ std::complex<T> crc = std::acosh(cc);
+
+ VERIFY( cra.real() > T(0) );
+ VERIFY( crb.real() > T(0) );
+ VERIFY( crc.real() > T(0) );
+ }
+
+// libstdc++/50880
+void test01()
+{
+ test01_do<float>();
+ test01_do<double>();
+ test01_do<long double>();
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/26_numerics/complex/51083.cc b/gcc-4.6/libstdc++-v3/testsuite/26_numerics/complex/51083.cc
new file mode 100644
index 000000000..54e781ba1
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/26_numerics/complex/51083.cc
@@ -0,0 +1,54 @@
+// { dg-options "-std=gnu++0x" }
+//
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <complex>
+
+namespace a
+{
+ template<typename> class Mat { };
+
+ template<typename T> struct Mat2 : Mat<T> { };
+
+ template<typename T> int arg(Mat<T>) { return 1; }
+ template<typename T> int conj(Mat<T>) { return 1; }
+ template<typename T> int imag(Mat<T>) { return 1; }
+ template<typename T> int norm(Mat<T>) { return 1; }
+ template<typename T> int proj(Mat<T>) { return 1; }
+ template<typename T> int real(Mat<T>) { return 1; }
+
+ template<typename T, typename U> int pow(Mat<T>, U) { return 1; }
+ template<typename T, typename U> int pow(T, Mat<U>) { return 1; }
+}
+
+int main()
+{
+ int __attribute__((unused)) i;
+
+ using namespace std;
+
+ a::Mat2< std::complex<double> > c;
+ i = arg(c);
+ i = conj(c);
+ i = imag(c);
+ i = norm(c);
+ i = proj(c);
+ i = real(c);
+ i = pow(std::complex<float>(), c);
+ i = pow(c, std::complex<float>());
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc
index 29e8dac5f..2f1226f3e 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <ccomplex>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc
index 3a1910692..36e19d05a 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <cfenv>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc
index 23b266e85..b8238df95 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <ctgmath>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/random/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/random/std_c++0x_neg.cc
index 1f83cdac6..467caa073 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/random/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/26_numerics/headers/random/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <random>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc
index 21da0770b..0285417ab 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <cinttypes>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc b/gcc-4.6/libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc
new file mode 100644
index 000000000..5532713ce
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc
@@ -0,0 +1,31 @@
+// { dg-options "-std=gnu++0x" }
+// { dg-do compile }
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+
+#include <regex>
+#include <string>
+
+// libstdc++/51711
+void test01()
+{
+ std::string toProcess("Bug\r\n");
+ std::string result __attribute__((unused))
+ = std::regex_replace(toProcess, std::regex("\\r"), std::string("\\r"));
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc b/gcc-4.6/libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc
new file mode 100644
index 000000000..66b74e458
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc
@@ -0,0 +1,31 @@
+// { dg-options "-std=gnu++0x" }
+// { dg-do compile }
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+//
+
+#include <regex>
+#include <string>
+
+// libstdc++/51711
+void test01()
+{
+ std::wstring toProcess(L"Bug\r\n");
+ std::wstring result __attribute__((unused))
+ = std::regex_replace(toProcess, std::wregex(L"\\r"), std::wstring(L"\\r"));
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc
index 21a98b8ae..b5289f802 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <regex>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc
index be390b0f7..38b49b6db 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <atomic> // { dg-excess-errors "In file included from" }
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc b/gcc-4.6/libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc
new file mode 100644
index 000000000..b85a5e136
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc
@@ -0,0 +1,80 @@
+// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* alpha*-*-osf* mips-sgi-irix6* } }
+// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* alpha*-*-osf* mips-sgi-irix6* } }
+// { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } }
+// { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } }
+// { dg-require-cstdint "" }
+// { dg-require-gthreads "" }
+// { dg-require-sched-yield "" }
+
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <condition_variable>
+#include <thread>
+#include <mutex>
+#include <array>
+#include <sstream>
+
+struct scoped_thread
+{
+ ~scoped_thread() { if (t.joinable()) t.join(); }
+ std::thread t;
+};
+
+int main()
+{
+ typedef std::unique_lock<std::mutex> Lock;
+
+ std::mutex m;
+ std::condition_variable_any cond;
+ unsigned int product = 0;
+ const unsigned int count = 10;
+
+ // writing to stream causes timing changes which makes deadlock easier
+ // to reproduce - do not remove
+ std::ostringstream out;
+
+ // create consumers
+ std::array<scoped_thread, 2> threads;
+ for (std::size_t i = 0; i < threads.size(); ++i)
+ threads[i].t
+ = std::thread( [&]
+ {
+ for (unsigned int i = 0; i < count; ++i)
+ {
+ std::this_thread::yield();
+ Lock lock(m);
+ while(product == 0)
+ cond.wait(lock);
+ out << "got product "
+ << std::this_thread::get_id()
+ << ' ' << product << std::endl;
+ --product;
+ }
+ } );
+
+ // single producer
+ for (std::size_t i = 0; i < threads.size() * count; ++i)
+ {
+ std::this_thread::yield();
+ Lock lock(m);
+ ++product;
+ out << "setting product " << std::this_thread::get_id()
+ << ' ' << product << std::endl;
+ cond.notify_one();
+ }
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc
index 6e345243c..5df33d943 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <condition_variable>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/future/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/future/std_c++0x_neg.cc
index 5dbaffdef..ec018f736 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/future/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/future/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <future>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/mutex/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/mutex/std_c++0x_neg.cc
index 31bf41c06..3d7a09d82 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/mutex/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/mutex/std_c++0x_neg.cc
@@ -20,7 +20,7 @@
#include <mutex>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/thread/std_c++0x_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/thread/std_c++0x_neg.cc
index cc8a3877d..6089f3317 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/thread/std_c++0x_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/30_threads/headers/thread/std_c++0x_neg.cc
@@ -22,4 +22,4 @@
#include <thread>
-// { dg-error "upcoming ISO" "" { target *-*-* } 32 }
+// { dg-error "ISO C.. 2011" "" { target *-*-* } 32 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc
index c0b1f688a..58cab3a66 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc
@@ -25,4 +25,4 @@
#include <vector>
-// { dg-error "multiple inlined namespaces" "" { target *-*-* } 241 }
+// { dg-error "multiple inlined namespaces" "" { target *-*-* } 242 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc
index 98202bdb8..3e46b8538 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc
@@ -35,4 +35,4 @@ int main()
}
// { dg-error "instantiated from" "" { target *-*-* } 28 }
-// { dg-error "no type" "" { target *-*-* } 69 }
+// { dg-error "no type" "" { target *-*-* } 70 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc
index f08c879e5..59bc10153 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc
@@ -36,4 +36,4 @@ int main()
}
// { dg-error "invalid use of incomplete" "" { target *-*-* } 28 }
-// { dg-error "declaration of" "" { target *-*-* } 63 }
+// { dg-error "declaration of" "" { target *-*-* } 64 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
index 486baad93..291ef7554 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
@@ -35,4 +35,4 @@ int main()
}
// { dg-error "instantiated from" "" { target *-*-* } 28 }
-// { dg-error "no type" "" { target *-*-* } 112 }
+// { dg-error "no type" "" { target *-*-* } 113 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc b/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc
index 1ad1d93bf..0f79877f7 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc
@@ -36,4 +36,4 @@ int main()
}
// { dg-error "invalid use of incomplete" "" { target *-*-* } 28 }
-// { dg-error "declaration of" "" { target *-*-* } 106 }
+// { dg-error "declaration of" "" { target *-*-* } 107 }
diff --git a/gcc-4.6/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc b/gcc-4.6/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc
new file mode 100644
index 000000000..504305a30
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc
@@ -0,0 +1,62 @@
+// { dg-options "-std=gnu++0x" }
+//
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <tr1/cmath>
+
+namespace a
+{
+ template<typename> class Mat { };
+
+ template<typename T> struct Mat2 : Mat<T> { };
+
+ template<typename T>
+ int fdim(Mat<T>) { return 1; }
+
+ template<typename T, typename U>
+ int floor(Mat<T>, U) { return 1; }
+ template<typename T, typename U>
+ int floor(T, Mat<U>) { return 1; }
+
+ template<typename T, typename U, typename V>
+ int fma(Mat<T>, U, V) { return 1; }
+ template<typename T, typename U, typename V>
+ int fma(T, Mat<U>, V) { return 1; }
+ template<typename T, typename U, typename V>
+ int fma(T, U, Mat<V>) { return 1; }
+}
+
+int main()
+{
+ int __attribute__((unused)) i;
+
+ using namespace std::tr1;
+
+ a::Mat2<double> c;
+ i = fdim(c);
+ i = floor(c, 0.);
+ i = floor(0., c);
+ i = floor(c, 1);
+ i = floor(1, c);
+ i = fma(c, 0., 1.);
+ i = fma(0., c, 1.);
+ i = fma(0., 1., c);
+ i = fma(c, 0., 1);
+ i = fma(0., c, 1);
+ i = fma(0., 1, c);
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc b/gcc-4.6/libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc
new file mode 100644
index 000000000..eaa2f3d81
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc
@@ -0,0 +1,51 @@
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <tr1/complex>
+#include <testsuite_hooks.h>
+
+template<typename T>
+ void test01_do()
+ {
+ bool test __attribute__((unused)) = true;
+
+ const std::complex<T> ca(T(-2), T(2));
+ const std::complex<T> cb(T(-2), T(0));
+ const std::complex<T> cc(T(-2), T(-2));
+
+ std::complex<T> cra = std::tr1::acosh(ca);
+ std::complex<T> crb = std::tr1::acosh(cb);
+ std::complex<T> crc = std::tr1::acosh(cc);
+
+ VERIFY( cra.real() > T(0) );
+ VERIFY( crb.real() > T(0) );
+ VERIFY( crc.real() > T(0) );
+ }
+
+// libstdc++/50880
+void test01()
+{
+ test01_do<float>();
+ test01_do<double>();
+ test01_do<long double>();
+}
+
+int main()
+{
+ test01();
+ return 0;
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc b/gcc-4.6/libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc
new file mode 100644
index 000000000..f41914ee9
--- /dev/null
+++ b/gcc-4.6/libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc
@@ -0,0 +1,54 @@
+// { dg-options "-std=gnu++0x" }
+//
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <tr1/complex>
+
+namespace a
+{
+ template<typename> class Mat { };
+
+ template<typename T> struct Mat2 : Mat<T> { };
+
+ template<typename T> int arg(Mat<T>) { return 1; }
+ template<typename T> int conj(Mat<T>) { return 1; }
+ template<typename T> int imag(Mat<T>) { return 1; }
+ template<typename T> int norm(Mat<T>) { return 1; }
+ template<typename T> int proj(Mat<T>) { return 1; }
+ template<typename T> int real(Mat<T>) { return 1; }
+
+ template<typename T, typename U> int pow(Mat<T>, U) { return 1; }
+ template<typename T, typename U> int pow(T, Mat<U>) { return 1; }
+}
+
+int main()
+{
+ int __attribute__((unused)) i;
+
+ using namespace std::tr1;
+
+ a::Mat2< std::complex<double> > c;
+ i = arg(c);
+ i = conj(c);
+ i = imag(c);
+ i = norm(c);
+ i = proj(c);
+ i = real(c);
+ i = pow(std::complex<float>(), c);
+ i = pow(c, std::complex<float>());
+}
diff --git a/gcc-4.6/libstdc++-v3/testsuite/util/testsuite_abi.cc b/gcc-4.6/libstdc++-v3/testsuite/util/testsuite_abi.cc
index ea100b681..97fb31a77 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/util/testsuite_abi.cc
+++ b/gcc-4.6/libstdc++-v3/testsuite/util/testsuite_abi.cc
@@ -194,6 +194,8 @@ check_version(symbol& test, bool added)
known_versions.push_back("GLIBCXX_3.4.14");
known_versions.push_back("GLIBCXX_3.4.15");
known_versions.push_back("GLIBCXX_3.4.16");
+ known_versions.push_back("GLIBCXX_3.4.17");
+ known_versions.push_back("GLIBCXX_3.4.18");
known_versions.push_back("GLIBCXX_LDBL_3.4");
known_versions.push_back("GLIBCXX_LDBL_3.4.7");
known_versions.push_back("GLIBCXX_LDBL_3.4.10");
@@ -560,4 +562,3 @@ demangle(const std::string& mangled)
}
return name;
}
-
diff --git a/gcc-4.6/libstdc++-v3/testsuite/util/testsuite_rvalref.h b/gcc-4.6/libstdc++-v3/testsuite/util/testsuite_rvalref.h
index 8e37bbdb0..7725e580a 100644
--- a/gcc-4.6/libstdc++-v3/testsuite/util/testsuite_rvalref.h
+++ b/gcc-4.6/libstdc++-v3/testsuite/util/testsuite_rvalref.h
@@ -68,6 +68,7 @@ namespace __gnu_test
operator=(rvalstruct&& in)
{
bool test __attribute__((unused)) = true;
+ VERIFY( this != &in );
VERIFY( in.valid == true );
val = in.val;
in.valid = false;
diff --git a/gcc-4.6/libtool.m4 b/gcc-4.6/libtool.m4
index 71bcee83c..67321a7d0 100644
--- a/gcc-4.6/libtool.m4
+++ b/gcc-4.6/libtool.m4
@@ -2273,7 +2273,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[[123]]*) objformat=aout ;;
+ freebsd[[23]].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -2291,7 +2291,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[[01]]* | freebsdelf3.[[01]]*)
@@ -4804,7 +4804,7 @@ _LT_EOF
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
_LT_TAGVAR(hardcode_direct, $1)=yes
_LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -5751,7 +5751,7 @@ if test "$_lt_caught_CXX_error" != yes; then
esac
;;
- freebsd[[12]]*)
+ freebsd2.*)
# C++ shared libraries reported to be fairly broken before
# switch to ELF
_LT_TAGVAR(ld_shlibs, $1)=no
diff --git a/gcc-4.6/lto-plugin/ChangeLog b/gcc-4.6/lto-plugin/ChangeLog
index b7f95400a..b19f0837e 100644
--- a/gcc-4.6/lto-plugin/ChangeLog
+++ b/gcc-4.6/lto-plugin/ChangeLog
@@ -1,3 +1,24 @@
+2012-01-03 Richard Guenther <rguenther@suse.de>
+
+ Backport from mainline
+ 2011-08-10 Richard Guenther <rguenther@suse.de>
+
+ PR bootstrap/49907
+ lto-plugin/
+ * configure.ac: Use ACX_PROG_CC_WARNING_OPTS to detect -Wall presence.
+ * Makefile.am (AM_CFLAGS): Adjust. Do not build with -Werror.
+ * configure: Regenerate.
+ * Makefile.in: Likewise.
+ * aclocal.m4: Likewise.
+
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure: Regenerate.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/lto-plugin/Makefile.am b/gcc-4.6/lto-plugin/Makefile.am
index 4067c4315..b24015e13 100644
--- a/gcc-4.6/lto-plugin/Makefile.am
+++ b/gcc-4.6/lto-plugin/Makefile.am
@@ -8,7 +8,7 @@ target_noncanonical := @target_noncanonical@
libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS)
-AM_CFLAGS = -Wall -Werror
+AM_CFLAGS = @ac_lto_plugin_warn_cflags@
AM_LIBTOOLFLAGS = --tag=disable-static
libexecsub_LTLIBRARIES = liblto_plugin.la
diff --git a/gcc-4.6/lto-plugin/Makefile.in b/gcc-4.6/lto-plugin/Makefile.in
index 86edb99bf..0c8d89fc7 100644
--- a/gcc-4.6/lto-plugin/Makefile.in
+++ b/gcc-4.6/lto-plugin/Makefile.in
@@ -47,6 +47,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
$(top_srcdir)/../config/lead-dot.m4 \
$(top_srcdir)/../config/lthostflags.m4 \
$(top_srcdir)/../config/override.m4 \
+ $(top_srcdir)/../config/warnings.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
$(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
$(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/configure.ac
@@ -167,6 +168,7 @@ abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_lto_plugin_warn_cflags = @ac_lto_plugin_warn_cflags@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -227,7 +229,7 @@ AUTOMAKE_OPTIONS = no-dependencies
gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS)
-AM_CFLAGS = -Wall -Werror
+AM_CFLAGS = @ac_lto_plugin_warn_cflags@
AM_LIBTOOLFLAGS = --tag=disable-static
libexecsub_LTLIBRARIES = liblto_plugin.la
gcc_build_dir = ../$(host_subdir)/gcc
diff --git a/gcc-4.6/lto-plugin/aclocal.m4 b/gcc-4.6/lto-plugin/aclocal.m4
index 7c370a7d0..ce9a5c2e4 100644
--- a/gcc-4.6/lto-plugin/aclocal.m4
+++ b/gcc-4.6/lto-plugin/aclocal.m4
@@ -973,6 +973,7 @@ m4_include([../config/depstand.m4])
m4_include([../config/lead-dot.m4])
m4_include([../config/lthostflags.m4])
m4_include([../config/override.m4])
+m4_include([../config/warnings.m4])
m4_include([../libtool.m4])
m4_include([../ltoptions.m4])
m4_include([../ltsugar.m4])
diff --git a/gcc-4.6/lto-plugin/configure b/gcc-4.6/lto-plugin/configure
index d4791fd0a..179ed90c2 100755
--- a/gcc-4.6/lto-plugin/configure
+++ b/gcc-4.6/lto-plugin/configure
@@ -622,6 +622,7 @@ EGREP
GREP
SED
LIBTOOL
+ac_lto_plugin_warn_cflags
am__fastdepCC_FALSE
am__fastdepCC_TRUE
CCDEPMODE
@@ -4040,6 +4041,45 @@ rm -rf conftest*
fi
fi
+ac_lto_plugin_warn_cflags=
+save_CFLAGS="$CFLAGS"
+for option in -Wall; do
+ as_acx_Woption=`$as_echo "acx_cv_prog_cc_warning_$option" | $as_tr_sh`
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports $option" >&5
+$as_echo_n "checking whether $CC supports $option... " >&6; }
+if { as_var=$as_acx_Woption; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ CFLAGS="$option"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$as_acx_Woption=yes"
+else
+ eval "$as_acx_Woption=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+eval ac_res=\$$as_acx_Woption
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ if test `eval 'as_val=${'$as_acx_Woption'};$as_echo "$as_val"'` = yes; then :
+ ac_lto_plugin_warn_cflags="$ac_lto_plugin_warn_cflags${ac_lto_plugin_warn_cflags:+ }$option"
+fi
+ done
+CFLAGS="$save_CFLAGS"
+
case `pwd` in
*\ * | *\ *)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
@@ -8748,7 +8788,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -9661,7 +9701,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -9679,7 +9719,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)
@@ -10513,7 +10553,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10516 "configure"
+#line 10556 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -10619,7 +10659,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10622 "configure"
+#line 10662 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
diff --git a/gcc-4.6/lto-plugin/configure.ac b/gcc-4.6/lto-plugin/configure.ac
index 1aba69713..9a418d231 100644
--- a/gcc-4.6/lto-plugin/configure.ac
+++ b/gcc-4.6/lto-plugin/configure.ac
@@ -6,6 +6,7 @@ AM_INIT_AUTOMAKE([foreign no-dist])
AM_MAINTAINER_MODE
AC_PROG_CC
AC_SYS_LARGEFILE
+ACX_PROG_CC_WARNING_OPTS([-Wall], [ac_lto_plugin_warn_cflags])
AM_PROG_LIBTOOL
ACX_LT_HOST_FLAGS
AC_SUBST(target_noncanonical)
diff --git a/gcc-4.6/maintainer-scripts/ChangeLog b/gcc-4.6/maintainer-scripts/ChangeLog
index 65c9b27fd..f570ceaae 100644
--- a/gcc-4.6/maintainer-scripts/ChangeLog
+++ b/gcc-4.6/maintainer-scripts/ChangeLog
@@ -1,3 +1,12 @@
+2011-11-23 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * update_web_docs_svn: Make $DOCSDIR group writable after
+ creating it.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/maintainer-scripts/update_web_docs_svn b/gcc-4.6/maintainer-scripts/update_web_docs_svn
index a0551615d..cfc33c42b 100755
--- a/gcc-4.6/maintainer-scripts/update_web_docs_svn
+++ b/gcc-4.6/maintainer-scripts/update_web_docs_svn
@@ -93,6 +93,7 @@ fi
if [ ! -d $DOCSDIR ]; then
mkdir $DOCSDIR
+ chmod g+w $DOCSDIR
fi
if [ -z "$RELEASE" ]; then
diff --git a/gcc-4.6/zlib/ChangeLog b/gcc-4.6/zlib/ChangeLog
index 70f06ac06..dd62cbfe6 100644
--- a/gcc-4.6/zlib/ChangeLog
+++ b/gcc-4.6/zlib/ChangeLog
@@ -1,3 +1,11 @@
+2011-11-20 Andreas Tobler <andreast@fgznet.ch>
+
+ * configure: Regenerate.
+
+2011-10-26 Release Manager
+
+ * GCC 4.6.2 released.
+
2011-06-27 Release Manager
* GCC 4.6.1 released.
diff --git a/gcc-4.6/zlib/configure b/gcc-4.6/zlib/configure
index 688f4836b..e4b025246 100755
--- a/gcc-4.6/zlib/configure
+++ b/gcc-4.6/zlib/configure
@@ -8615,7 +8615,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
# Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
+ freebsd2.*)
archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
hardcode_direct=yes
hardcode_minus_L=yes
@@ -9531,7 +9531,7 @@ freebsd* | dragonfly*)
objformat=`/usr/bin/objformat`
else
case $host_os in
- freebsd[123]*) objformat=aout ;;
+ freebsd[23].*) objformat=aout ;;
*) objformat=elf ;;
esac
fi
@@ -9549,7 +9549,7 @@ freebsd* | dragonfly*)
esac
shlibpath_var=LD_LIBRARY_PATH
case $host_os in
- freebsd2*)
+ freebsd2.*)
shlibpath_overrides_runpath=yes
;;
freebsd3.[01]* | freebsdelf3.[01]*)