Do not require any exception support library. Check results against NRV.
authorNick Clifton <nickc@redhat.com>
Wed, 1 Aug 2001 14:37:47 +0000 (14:37 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 1 Aug 2001 14:37:47 +0000 (14:37 +0000)
ld/testsuite/ChangeLog
ld/testsuite/ld-cdtest/cdtest-nrv.dat [new file with mode: 0644]
ld/testsuite/ld-cdtest/cdtest.exp

index 3957eb885462aef258163f24a3eb667a15f7b266..89c2b065a138ec82f0c7704fa994cfd71b6ca2ba 100644 (file)
@@ -1,3 +1,9 @@
+2001-08-01  Loren J. Rittle  <ljrittle@acm.org>
+
+       * 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  <ljrittle@acm.org>
 
        * 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 (file)
index 0000000..d3f871f
--- /dev/null
@@ -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)
index 76f8291677308e7c4a4fc622c375e7a8a7d7751c..1c51f0d21398271715f198995252b5fdf5cc22ed 100644 (file)
@@ -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
            }
        }