From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2667 invoked by alias); 10 Oct 2008 17:04:00 -0000 Received: (qmail 2648 invoked by uid 22791); 10 Oct 2008 17:03:57 -0000 X-Spam-Check-By: sourceware.org Received: from el-out-1112.google.com (HELO el-out-1112.google.com) (209.85.162.178) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 10 Oct 2008 17:03:20 +0000 Received: by el-out-1112.google.com with SMTP id m34so287876ele.8 for ; Fri, 10 Oct 2008 10:03:17 -0700 (PDT) Received: by 10.150.124.2 with SMTP id w2mr2540907ybc.208.1223658197555; Fri, 10 Oct 2008 10:03:17 -0700 (PDT) Received: from legolas.novillo.homelinux.org (CPE000f6636bf6c-CM00407b85cf5d.cpe.net.cable.rogers.com [99.229.48.247]) by mx.google.com with ESMTPS id 28sm3099290qbw.11.2008.10.10.10.03.15 (version=TLSv1/SSLv3 cipher=RC4-MD5); Fri, 10 Oct 2008 10:03:16 -0700 (PDT) Received: from legolas.novillo.homelinux.org (localhost.localdomain [127.0.0.1]) by legolas.novillo.homelinux.org (8.14.2/8.14.2) with ESMTP id m9AH3DbF004583 for ; Fri, 10 Oct 2008 13:03:13 -0400 Received: (from dnovillo@localhost) by legolas.novillo.homelinux.org (8.14.2/8.14.2/Submit) id m9AH3DLQ004580 for gcc-patches@gcc.gnu.org; Fri, 10 Oct 2008 13:03:13 -0400 Date: Fri, 10 Oct 2008 18:23:00 -0000 From: Diego Novillo To: gcc-patches@gcc.gnu.org Subject: [lto] Add -flto to all the C and C++ testsuites Message-ID: <20081010170312.GA2335@legolas> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2008-10/txt/msg00455.txt.bz2 This patch forces -flto on all the C and C++ testsuites. I may have missed some, but it covers check-gcc, check-g++ and check-libstdc++. We currently do not build many libstdc++ tests because we fail creating one of the shared libraries used by the testsuite. All these failures are being worked on, so they should disappear shortly. Tested on x86_64. Diego. gcc/ChangeLog.lto * opts.c (decode_options): Remove error message about -g -flto. gcc/testsuite/ChangeLog.lto * gcc.target/i386/i386.exp: Add -flto by default. * gcc.target/i386/math-torture/math-torture.exp: Likewise. * gcc.dg/matrix/matrix.exp: Likewise. * gcc.dg/struct/struct-reorg.exp: Likewise. * gcc.dg/debug/debug.exp: Likewise. * gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp: Likewise. * gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp: Likewise. * gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp: Likewise. * gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp: Likewise. * gcc.dg/vect/vect.exp: Likewise. * gcc.misc-tests/dectest.exp: Likewise. * g++.dg/debug/debug.exp: Likewise. * g++.dg/vect/vect.exp: Likewise. * g++.dg/pch/pch.exp: Likewise. * lib/c-torture.exp: Likewise. * lib/gcc-dg.exp: Likewise. libstdc++-v3/ChangeLog.lto * scripts/testsuite_flags.in: Add -flto by default. Index: gcc/testsuite/gcc.target/i386/i386.exp =================================================================== --- gcc/testsuite/gcc.target/i386/i386.exp (revision 141015) +++ gcc/testsuite/gcc.target/i386/i386.exp (working copy) @@ -34,7 +34,7 @@ proc check_effective_target_ssse3 { } { { return (__m128i) __builtin_ia32_pabsd128 ((__v4si)__X); } - } "-O2 -mssse3" ] + } "-O2 -mssse3 -flto" ] } # Return 1 if sse4 instructions can be compiled. @@ -48,7 +48,7 @@ proc check_effective_target_sse4 { } { return (__m128i) __builtin_ia32_pmulld128 ((__v4si)__X, (__v4si)__Y); } - } "-O2 -msse4.1" ] + } "-O2 -msse4.1 -flto" ] } # Return 1 if aes instructions can be compiled. @@ -61,7 +61,7 @@ proc check_effective_target_aes { } { { return (__m128i) __builtin_ia32_aesimc128 ((__v2di)__X); } - } "-O2 -maes" ] + } "-O2 -maes -flto" ] } # Return 1 if vaes instructions can be compiled. @@ -74,7 +74,7 @@ proc check_effective_target_vaes { } { { return (__m128i) __builtin_ia32_aesimc128 ((__v2di)__X); } - } "-O2 -maes -mavx" ] + } "-O2 -maes -mavx -flto" ] } # Return 1 if pclmul instructions can be compiled. @@ -89,7 +89,7 @@ proc check_effective_target_pclmul { } { (__v2di)__Y, 1); } - } "-O2 -mpclmul" ] + } "-O2 -mpclmul -flto" ] } # Return 1 if sse4a instructions can be compiled. @@ -102,7 +102,7 @@ proc check_effective_target_sse4a { } { { return (__m128i) __builtin_ia32_insertq ((__v2di)__X, (__v2di)__Y); } - } "-O2 -msse4a" ] + } "-O2 -msse4a -flto" ] } # Return 1 if sse5 instructions can be compiled. @@ -117,7 +117,7 @@ proc check_effective_target_sse5 { } { (__v8hi)__B, (__v8hi)__C); } - } "-O2 -msse5" ] + } "-O2 -msse5 -flto" ] } # If a testcase doesn't have special options, use these. @@ -133,7 +133,7 @@ dg-init # replicate it 10 times. foreach type { "" -mmmx -m3dnow -msse -msse2 } { foreach level { "" -O } { - set flags "$type $level" + set flags "$type $level -flto" verbose -log "Testing vect-args, $flags" 1 dg-test $srcdir/$subdir/vect-args.c $flags "" } Index: gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp =================================================================== --- gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp (revision 141015) +++ gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp (working copy) @@ -6,28 +6,28 @@ if { ![istarget i?86*-*-*] && ![istarget } set MATH_TORTURE_OPTIONS [list \ - { -O0 } \ - { -O0 -mfpmath=387 } \ - { -O0 -msse -mno-sse2 -mfpmath=sse } \ - { -O0 -msse -msse2 -mfpmath=sse } \ - { -O0 -msse -mno-sse2 -mfpmath=sse,387 } \ - { -O0 -msse -msse2 -mfpmath=sse,387 } \ - { -O0 -mfpmath=387 -ffast-math } \ - { -O0 -msse -mno-sse2 -mfpmath=sse -ffast-math } \ - { -O0 -msse -msse2 -mfpmath=sse -ffast-math } \ - { -O0 -msse -mno-sse2 -mfpmath=sse,387 -ffast-math } \ - { -O0 -msse -msse2 -mfpmath=sse,387 -ffast-math } \ - { -O2 } \ - { -O2 -mfpmath=387 } \ - { -O2 -msse -mno-sse2 -mfpmath=sse } \ - { -O2 -msse -msse2 -mfpmath=sse } \ - { -O2 -msse -mno-sse2 -mfpmath=sse,387 } \ - { -O2 -msse -msse2 -mfpmath=sse,387 } \ - { -O2 -mfpmath=387 -ffast-math } \ - { -O2 -msse -mno-sse2 -mfpmath=sse -ffast-math } \ - { -O2 -msse -msse2 -mfpmath=sse -ffast-math } \ - { -O2 -msse -mno-sse2 -mfpmath=sse,387 -ffast-math } \ - { -O2 -msse -msse2 -mfpmath=sse,387 -ffast-math } \ + { -O0 -flto } \ + { -O0 -flto -mfpmath=387 } \ + { -O0 -flto -msse -mno-sse2 -mfpmath=sse } \ + { -O0 -flto -msse -msse2 -mfpmath=sse } \ + { -O0 -flto -msse -mno-sse2 -mfpmath=sse,387 } \ + { -O0 -flto -msse -msse2 -mfpmath=sse,387 } \ + { -O0 -flto -mfpmath=387 -ffast-math } \ + { -O0 -flto -msse -mno-sse2 -mfpmath=sse -ffast-math } \ + { -O0 -flto -msse -msse2 -mfpmath=sse -ffast-math } \ + { -O0 -flto -msse -mno-sse2 -mfpmath=sse,387 -ffast-math } \ + { -O0 -flto -msse -msse2 -mfpmath=sse,387 -ffast-math } \ + { -O2 -flto } \ + { -O2 -flto -mfpmath=387 } \ + { -O2 -flto -msse -mno-sse2 -mfpmath=sse } \ + { -O2 -flto -msse -msse2 -mfpmath=sse } \ + { -O2 -flto -msse -mno-sse2 -mfpmath=sse,387 } \ + { -O2 -flto -msse -msse2 -mfpmath=sse,387 } \ + { -O2 -flto -mfpmath=387 -ffast-math } \ + { -O2 -flto -msse -mno-sse2 -mfpmath=sse -ffast-math } \ + { -O2 -flto -msse -msse2 -mfpmath=sse -ffast-math } \ + { -O2 -flto -msse -mno-sse2 -mfpmath=sse,387 -ffast-math } \ + { -O2 -flto -msse -msse2 -mfpmath=sse,387 -ffast-math } \ ] load_lib gcc-dg.exp Index: gcc/testsuite/gcc.dg/matrix/matrix.exp =================================================================== --- gcc/testsuite/gcc.dg/matrix/matrix.exp (revision 141015) +++ gcc/testsuite/gcc.dg/matrix/matrix.exp (working copy) @@ -19,7 +19,7 @@ load_lib gcc-dg.exp load_lib target-supports.exp -set DEFAULT_MATCFLAGS "-O3 -fipa-matrix-reorg -fdump-ipa-matrix-reorg -fwhole-program -combine" +set DEFAULT_MATCFLAGS "-O3 -flto -fipa-matrix-reorg -fdump-ipa-matrix-reorg -fwhole-program -combine" # Initialize `dg'. dg-init Index: gcc/testsuite/gcc.dg/struct/struct-reorg.exp =================================================================== --- gcc/testsuite/gcc.dg/struct/struct-reorg.exp (revision 141015) +++ gcc/testsuite/gcc.dg/struct/struct-reorg.exp (working copy) @@ -20,7 +20,7 @@ load_lib gcc-dg.exp load_lib target-supports.exp -set STRUCT_REORG_CFLAGS "-O3 -fipa-struct-reorg -fdump-ipa-all -fwhole-program -combine -fipa-type-escape" +set STRUCT_REORG_CFLAGS "-O3 -flto -fipa-struct-reorg -fdump-ipa-all -fwhole-program -combine -fipa-type-escape" # Initialize `dg'. dg-init Index: gcc/testsuite/gcc.dg/debug/debug.exp =================================================================== --- gcc/testsuite/gcc.dg/debug/debug.exp (revision 141015) +++ gcc/testsuite/gcc.dg/debug/debug.exp (working copy) @@ -24,7 +24,7 @@ dg-init # Main loop. -gcc-dg-debug-runtest gcc_target_compile trivial.c [list -O -O3] \ +gcc-dg-debug-runtest gcc_target_compile trivial.c [list "-O -flto" "-O3 -flto"] \ [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] # All done. Index: gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp =================================================================== --- gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp (revision 141015) +++ gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp (working copy) @@ -33,7 +33,7 @@ if ![is-effective-target powerpc_altivec set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. -lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fvect-cost-model" +lappend DEFAULT_VECTCFLAGS "-O2 -flto" "-ftree-vectorize" "-fvect-cost-model" # If the target system supports vector instructions, the default action # for a test is 'run', otherwise it's 'compile'. Save current default. Index: gcc/testsuite/gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp =================================================================== --- gcc/testsuite/gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp (revision 141015) +++ gcc/testsuite/gcc.dg/vect/costmodel/spu/spu-costmodel-vect.exp (working copy) @@ -29,7 +29,7 @@ if { ![istarget spu*-*-*] } then { set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. -lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fvect-cost-model" +lappend DEFAULT_VECTCFLAGS "-O2 -flto" "-ftree-vectorize" "-fvect-cost-model" # If the target system supports vector instructions, the default action # for a test is 'run', otherwise it's 'compile'. Save current default. Index: gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp =================================================================== --- gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp (revision 141015) +++ gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp (working copy) @@ -28,7 +28,7 @@ if { ![istarget i?86*-*-*] && ![istarget set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. -lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fvect-cost-model" +lappend DEFAULT_VECTCFLAGS "-O2 -flto" "-ftree-vectorize" "-fvect-cost-model" # If the target system supports vector instructions, the default action # for a test is 'run', otherwise it's 'compile'. Save current default. Index: gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp =================================================================== --- gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp (revision 141015) +++ gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp (working copy) @@ -29,7 +29,7 @@ if { (![istarget x86_64-*-*] && ![istarg set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. -lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fvect-cost-model" +lappend DEFAULT_VECTCFLAGS "-O2 -flto" "-ftree-vectorize" "-fvect-cost-model" # If the target system supports vector instructions, the default action # for a test is 'run', otherwise it's 'compile'. Save current default. Index: gcc/testsuite/gcc.dg/vect/vect.exp =================================================================== --- gcc/testsuite/gcc.dg/vect/vect.exp (revision 141015) +++ gcc/testsuite/gcc.dg/vect/vect.exp (working copy) @@ -111,10 +111,10 @@ dg-init global O1_VECTCFLAGS set O1_VECTCFLAGS $DEFAULT_VECTCFLAGS -lappend O1_VECTCFLAGS "-O1" +lappend O1_VECTCFLAGS "-O1 -flto" lappend O1_VECTCFLAGS "-fdump-tree-vect-details" -lappend DEFAULT_VECTCFLAGS "-O2" +lappend DEFAULT_VECTCFLAGS "-O2 -flto" # Tests that should be run without generating dump info dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/nodump-*.\[cS\]]] \ @@ -238,13 +238,13 @@ dg-runtest [lsort [glob -nocomplain $src # With -Os set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS -lappend DEFAULT_VECTCFLAGS "-Os" +lappend DEFAULT_VECTCFLAGS "-Os -flto" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/Os-vect-*.\[cS\]]] \ "" $DEFAULT_VECTCFLAGS # With -O3 set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS -lappend DEFAULT_VECTCFLAGS "-O3" +lappend DEFAULT_VECTCFLAGS "-O3 -flto" if [istarget "spu-*-*"] { lappend DEFAULT_VECTCFLAGS "-funroll-loops" } Index: gcc/testsuite/gcc.misc-tests/dectest.exp =================================================================== --- gcc/testsuite/gcc.misc-tests/dectest.exp (revision 141015) +++ gcc/testsuite/gcc.misc-tests/dectest.exp (working copy) @@ -20,7 +20,7 @@ # # Contributed by Ben Elliston . -set DEC_TORTURE_OPTIONS [list {} -O1 -O2 -O3 -Os -msoft-float] +set DEC_TORTURE_OPTIONS [list {} -O1 "-O2 -flto" -O3 -Os -msoft-float] proc target-specific-flags {} { set result "-frounding-math " Index: gcc/testsuite/g++.dg/debug/debug.exp =================================================================== --- gcc/testsuite/g++.dg/debug/debug.exp (revision 141015) +++ gcc/testsuite/g++.dg/debug/debug.exp (working copy) @@ -23,7 +23,7 @@ load_lib g++-dg.exp dg-init # Main loop. -gcc-dg-debug-runtest g++_target_compile trivial.C [list -O2 -O3] \ +gcc-dg-debug-runtest g++_target_compile trivial.C [list "-O2 -flto" "-O3 -flto"] \ [lsort [glob -nocomplain $srcdir/$subdir/*.C]] # All done. Index: gcc/testsuite/g++.dg/vect/vect.exp =================================================================== --- gcc/testsuite/g++.dg/vect/vect.exp (revision 141015) +++ gcc/testsuite/g++.dg/vect/vect.exp (working copy) @@ -39,7 +39,7 @@ set save-dg-do-what-default ${dg-do-what set DEFAULT_VECTCFLAGS "" # These flags are used for all targets. -lappend DEFAULT_VECTCFLAGS "-O2" "-ftree-vectorize" "-fno-vect-cost-model" \ +lappend DEFAULT_VECTCFLAGS "-O2 -flto" "-ftree-vectorize" "-fno-vect-cost-model" \ "-ftree-vectorizer-verbose=4" "-fdump-tree-vect-stats" # Skip these tests for targets that do not support generating vector Index: gcc/testsuite/g++.dg/pch/pch.exp =================================================================== --- gcc/testsuite/g++.dg/pch/pch.exp (revision 141015) +++ gcc/testsuite/g++.dg/pch/pch.exp (working copy) @@ -30,7 +30,7 @@ set old_dg_do_what_default "${dg-do-what foreach test [lsort [glob -nocomplain $srcdir/$subdir/*.C]] { # We don't try to use the loop-optimizing options, since they are highly # unlikely to make any difference to PCH. - dg-pch $subdir $test [list "-g" "-O2 -g" "-O2"] ".H" + dg-pch $subdir $test [list "-g" "-O2 -g" "-O2 -flto"] ".H" } set dg-do-what-default "$old_dg_do_what_default" Index: gcc/testsuite/lib/c-torture.exp =================================================================== --- gcc/testsuite/lib/c-torture.exp (revision 141015) +++ gcc/testsuite/lib/c-torture.exp (working copy) @@ -33,14 +33,14 @@ if [info exists TORTURE_OPTIONS] { # items below, even though -O3 is also specified, because some ports may # choose to disable inlining functions by default, even when optimizing. set C_TORTURE_OPTIONS [list \ - { -O0 } \ - { -O1 } \ + { -O0 -flto } \ + { -O1 -flto } \ { -O2 -flto } \ - { -O3 -fomit-frame-pointer } \ - { -O3 -fomit-frame-pointer -funroll-loops } \ - { -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions } \ + { -O3 -flto -fomit-frame-pointer } \ + { -O3 -flto -fomit-frame-pointer -funroll-loops } \ + { -O3 -flto -fomit-frame-pointer -funroll-all-loops -finline-functions } \ { -O3 -g } \ - { -Os } ] + { -Os -flto } ] } global GCC_UNDER_TEST Index: gcc/testsuite/lib/gcc-dg.exp =================================================================== --- gcc/testsuite/lib/gcc-dg.exp (revision 141015) +++ gcc/testsuite/lib/gcc-dg.exp (working copy) @@ -43,14 +43,14 @@ if [info exists TORTURE_OPTIONS] { # items below, even though -O3 is also specified, because some ports may # choose to disable inlining functions by default, even when optimizing. set DG_TORTURE_OPTIONS [list \ - { -O0 } \ - { -O1 } \ + { -O0 -flto } \ + { -O1 -flto } \ { -O2 -flto } \ - { -O3 -fomit-frame-pointer } \ - { -O3 -fomit-frame-pointer -funroll-loops } \ - { -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions } \ + { -O3 -flto -fomit-frame-pointer } \ + { -O3 -flto -fomit-frame-pointer -funroll-loops } \ + { -O3 -flto -fomit-frame-pointer -funroll-all-loops -finline-functions } \ { -O3 -g } \ - { -Os } ] + { -Os -flto } ] } global GCC_UNDER_TEST Index: gcc/opts.c =================================================================== --- gcc/opts.c (revision 141015) +++ gcc/opts.c (working copy) @@ -1057,12 +1057,6 @@ decode_options (unsigned int argc, const flag_shlib = 1; } - /* FIXME lto: With -flto, debug information will be incomplete or - inaccurate, or worse, may be sufficiently corrupt as to crash the - debug info writer. */ - if (flag_generate_lto && debug_info_level != DINFO_LEVEL_NONE) - inform (input_location, "-g is presently unsupported with -flto"); - /* Set flag_no_inline before the post_options () hook. The C front ends use it to determine tree inlining defaults. FIXME: such code should be lang-independent when all front ends use tree Index: libstdc++-v3/scripts/testsuite_flags.in =================================================================== --- libstdc++-v3/scripts/testsuite_flags.in (revision 141015) +++ libstdc++-v3/scripts/testsuite_flags.in (working copy) @@ -54,12 +54,12 @@ case ${query} in echo ${CC} ;; --cxxflags) - CXXFLAGS_default="-g -O2 -D_GLIBCXX_ASSERT -fmessage-length=0" + CXXFLAGS_default="-O2 -flto -D_GLIBCXX_ASSERT -fmessage-length=0" CXXFLAGS_config="@SECTION_FLAGS@ @CXXFLAGS@ @EXTRA_CXX_FLAGS@" echo ${CXXFLAGS_default} ${CXXFLAGS_config} ;; --cxxparallelflags) - CXXFLAGS_parallel="-D_GLIBCXX_PARALLEL -fopenmp + CXXFLAGS_parallel="-flto -D_GLIBCXX_PARALLEL -fopenmp -B${BUILD_DIR}/../libgomp -I${BUILD_DIR}/../libgomp -L${BUILD_DIR}/../libgomp/.libs -lgomp"