From 39c183c149bdfa422b5ae634deee800bb3524897 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Wed, 1 Aug 2001 14:37:47 +0000 Subject: [PATCH] Do not require any exception support library. Check results against NRV. --- ld/testsuite/ChangeLog | 6 +++ ld/testsuite/ld-cdtest/cdtest-nrv.dat | 13 ++++++ ld/testsuite/ld-cdtest/cdtest.exp | 57 +++++++++++++++++++-------- 3 files changed, 59 insertions(+), 17 deletions(-) create mode 100644 ld/testsuite/ld-cdtest/cdtest-nrv.dat diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 3957eb8854..89c2b065a1 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2001-08-01 Loren J. Rittle + + * ld-cdtest/cdtest-nrv.dat: New file. + * ld-cdtest/cdtest.exp: Do not require any exception support + library. Check results against NRV. + 2001-08-01 Loren J. Rittle * ld-srec/srec.exp: Do not require any exception support diff --git a/ld/testsuite/ld-cdtest/cdtest-nrv.dat b/ld/testsuite/ld-cdtest/cdtest-nrv.dat new file mode 100644 index 0000000000..d3f871ff10 --- /dev/null +++ b/ld/testsuite/ld-cdtest/cdtest-nrv.dat @@ -0,0 +1,13 @@ +Constructing Foo(1) "static_foo" +Constructing Foo(2) "static_foo" +Constructing Foo(3) "automatic_foo" +Constructing Foo(4) "default-foo" +Constructing Foo(5) "other_foo1" +Constructing Foo(6) "other_foo2" +Copying Foo(5) "other_foo1" to Foo(6) +Destructing Foo(6) "other_foo1" (remaining foos: 5) +Destructing Foo(5) "other_foo1" (remaining foos: 4) +Destructing Foo(4) "default-foo" (remaining foos: 3) +Destructing Foo(3) "automatic_foo" (remaining foos: 2) +Destructing Foo(2) "static_foo" (remaining foos: 1) +Destructing Foo(1) "static_foo" (remaining foos: 0) diff --git a/ld/testsuite/ld-cdtest/cdtest.exp b/ld/testsuite/ld-cdtest/cdtest.exp index 76f8291677..1c51f0d213 100644 --- a/ld/testsuite/ld-cdtest/cdtest.exp +++ b/ld/testsuite/ld-cdtest/cdtest.exp @@ -1,5 +1,5 @@ # Expect script for LD cdtest Tests -# Copyright 1993, 1994, 1995, 1997 Free Software Foundation, Inc. +# Copyright 1993, 1994, 1995, 1997, 2001 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -35,35 +35,55 @@ if { [which $CXX] == 0 } { return } -if { ![ld_compile "$CXX $CXXFLAGS -fgnu-linker" $srcdir/$subdir/cdtest-foo.cc tmpdir/cdtest-foo.o] - || ![ld_compile "$CXX $CXXFLAGS -fgnu-linker" $srcdir/$subdir/cdtest-bar.cc tmpdir/cdtest-bar.o] - || ![ld_compile "$CXX $CXXFLAGS -fgnu-linker" $srcdir/$subdir/cdtest-main.cc tmpdir/cdtest-main.o] } { +if { ![ld_compile "$CXX $CXXFLAGS -fgnu-linker -fno-exceptions" $srcdir/$subdir/cdtest-foo.cc tmpdir/cdtest-foo.o] + || ![ld_compile "$CXX $CXXFLAGS -fgnu-linker -fno-exceptions" $srcdir/$subdir/cdtest-bar.cc tmpdir/cdtest-bar.o] + || ![ld_compile "$CXX $CXXFLAGS -fgnu-linker -fno-exceptions" $srcdir/$subdir/cdtest-main.cc tmpdir/cdtest-main.o] } { unresolved $test1 unresolved $test2 return } +set expected_output "$srcdir/$subdir/cdtest.dat" + if ![ld_link $ld tmpdir/cdtest {tmpdir/cdtest-foo.o tmpdir/cdtest-bar.o tmpdir/cdtest-main.o}] { fail $test1 } else { - send_log "tmpdir/cdtest >tmpdir/cdtest.out\n" - verbose "tmpdir/cdtest >tmpdir/cdtest.out" + send_log "tmpdir/cdtest >tmpdir/cdtest.out\n" + verbose "tmpdir/cdtest >tmpdir/cdtest.out" catch "exec tmpdir/cdtest >tmpdir/cdtest.out" exec_output + if ![string match "" $exec_output] then { send_log "$exec_output\n" verbose "$exec_output" 1 + fail $test1 } else { - send_log "diff tmpdir/cdtest.out $srcdir/$subdir/cdtest.dat\n" - verbose "diff tmpdir/cdtest.out $srcdir/$subdir/cdtest.dat" - catch "exec diff tmpdir/cdtest.out $srcdir/$subdir/cdtest.dat" exec_output + send_log "diff tmpdir/cdtest.out $expected_output\n" + verbose "diff tmpdir/cdtest.out $expected_output" + catch "exec diff tmpdir/cdtest.out $expected_output" exec_output set exec_output [prune_warnings $exec_output] + if ![string match "" $exec_output] then { + send_log "$exec_output\n" + verbose "$exec_output" 1 + + send_log "Checking against Named Return Value optimization\n" + verbose "Checking against Named Return Value optimization" 1 + + set expected_output "$srcdir/$subdir/cdtest-nrv.dat" + + send_log "diff tmpdir/cdtest.out $expected_output\n" + verbose "diff tmpdir/cdtest.out $expected_output" + catch "exec diff tmpdir/cdtest.out $expected_output" exec_output + set exec_output [prune_warnings $exec_output] + } + if [string match "" $exec_output] then { pass $test1 } else { send_log "$exec_output\n" - verbose "$exec_output" 1 + verbose "$exec_output" 1 + fail $test1 } } @@ -75,24 +95,27 @@ if ![ld_relocate $ld tmpdir/cdtest.o {-Ur tmpdir/cdtest-foo.o tmpdir/cdtest-bar. if ![ld_link $ld tmpdir/cdtest tmpdir/cdtest.o] { fail $test2 } else { - send_log "tmpdir/cdtest >tmpdir/cdtest.out\n" - verbose "tmpdir/cdtest >tmpdir/cdtest.out" + send_log "tmpdir/cdtest >tmpdir/cdtest.out\n" + verbose "tmpdir/cdtest >tmpdir/cdtest.out" catch "exec tmpdir/cdtest >tmpdir/cdtest.out" exec_output + if ![string match "" $exec_output] then { send_log "$exec_output\n" - verbose "$exec_output" 1 + verbose "$exec_output" 1 + fail $test2 } else { - send_log "diff tmpdir/cdtest.out $srcdir/$subdir/cdtest.dat\n" - verbose "diff tmpdir/cdtest.out $srcdir/$subdir/cdtest.dat" - catch "exec diff tmpdir/cdtest.out $srcdir/$subdir/cdtest.dat" exec_output + send_log "diff tmpdir/cdtest.out $expected_output\n" + verbose "diff tmpdir/cdtest.out $expected_output" + catch "exec diff tmpdir/cdtest.out $expected_output" exec_output set exec_output [prune_warnings $exec_output] if [string match "" $exec_output] then { pass $test2 } else { send_log "$exec_output\n" - verbose "$exec_output" 1 + verbose "$exec_output" 1 + fail $test2 } }