summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2004-08-12 16:41:42 +0000
committerkan <kan@FreeBSD.org>2004-08-12 16:41:42 +0000
commitd42790ccc00a70f00d10a3b8f17967a5b396bd4d (patch)
tree05895ca3fdba11097afd624bf6f64962995c416e /contrib
parentd42b9316c71d1b89b1b05d36be366eadf7bd8cdf (diff)
downloadFreeBSD-src-d42790ccc00a70f00d10a3b8f17967a5b396bd4d.zip
FreeBSD-src-d42790ccc00a70f00d10a3b8f17967a5b396bd4d.tar.gz
Remove files that are not part of GCC 3.4.x from the vendor branch.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/gcc/.brik14448
-rw-r--r--contrib/gcc/.cvsignore32
-rw-r--r--contrib/gcc/BUGS594
-rw-r--r--contrib/gcc/NEWS2446
-rw-r--r--contrib/gcc/README17
-rw-r--r--contrib/gcc/acconfig.h44
-rw-r--r--contrib/gcc/cccp.1674
-rwxr-xr-xcontrib/gcc/config.guess4
-rw-r--r--contrib/gcc/config/alpha/alpha-interix.h150
-rw-r--r--contrib/gcc/config/alpha/alpha32.h85
-rw-r--r--contrib/gcc/config/alpha/crtbegin.asm192
-rw-r--r--contrib/gcc/config/alpha/crtend.asm108
-rw-r--r--contrib/gcc/config/alpha/gdb-osf12.h26
-rw-r--r--contrib/gcc/config/alpha/gdb-osf2.h26
-rw-r--r--contrib/gcc/config/alpha/gdb.h26
-rw-r--r--contrib/gcc/config/alpha/osf2.h32
-rw-r--r--contrib/gcc/config/alpha/t-interix7
-rw-r--r--contrib/gcc/config/alpha/vxworks.h55
-rw-r--r--contrib/gcc/config/alpha/xm-alpha-interix.h39
-rw-r--r--contrib/gcc/config/alpha/xm-vms64.h29
-rw-r--r--contrib/gcc/config/aoutos.h41
-rw-r--r--contrib/gcc/config/arm/conix-elf.h46
-rw-r--r--contrib/gcc/config/arm/t-arm-aout29
-rw-r--r--contrib/gcc/config/arm/t-strongarm-coff34
-rw-r--r--contrib/gcc/config/arm/unknown-elf-oabi.h29
-rw-r--r--contrib/gcc/config/arm/vxarm.h71
-rw-r--r--contrib/gcc/config/freebsd3.h22
-rw-r--r--contrib/gcc/config/freebsd4.h22
-rw-r--r--contrib/gcc/config/freebsd5.h22
-rw-r--r--contrib/gcc/config/freebsd6.h22
-rw-r--r--contrib/gcc/config/i386/freebsd-elf.h257
-rw-r--r--contrib/gcc/config/i386/freebsd.h.fixed257
-rw-r--r--contrib/gcc/config/i386/vxi386.h66
-rw-r--r--contrib/gcc/config/i386/win32.h173
-rw-r--r--contrib/gcc/config/i386/x-freebsd3
-rw-r--r--contrib/gcc/config/i386/xm-i386-interix.h32
-rw-r--r--contrib/gcc/config/i386/xm-vsta.h11
-rw-r--r--contrib/gcc/config/ia64/aix.h159
-rw-r--r--contrib/gcc/config/ia64/hpux_longdouble.h99
-rw-r--r--contrib/gcc/config/ia64/t-aix15
-rw-r--r--contrib/gcc/config/ia64/unwind-aix.c120
-rw-r--r--contrib/gcc/config/psos.h88
-rw-r--r--contrib/gcc/config/rs6000/aix31.h87
-rw-r--r--contrib/gcc/config/rs6000/aix3newas.h60
-rw-r--r--contrib/gcc/config/rs6000/eabiaix.h36
-rw-r--r--contrib/gcc/config/rs6000/mach.h54
-rw-r--r--contrib/gcc/config/rs6000/t-rs6000-c-rule4
-rw-r--r--contrib/gcc/config/rs6000/vxppc.h57
-rw-r--r--contrib/gcc/config/sparc/bsd.h5
-rw-r--r--contrib/gcc/config/sparc/hal.h33
-rw-r--r--contrib/gcc/config/sparc/linux-aout.h96
-rw-r--r--contrib/gcc/config/sparc/lynx-ng.h38
-rw-r--r--contrib/gcc/config/sparc/lynx.h47
-rw-r--r--contrib/gcc/config/sparc/netbsd.h49
-rw-r--r--contrib/gcc/config/sparc/sp86x-aout.h51
-rw-r--r--contrib/gcc/config/sparc/splet.h46
-rw-r--r--contrib/gcc/config/sparc/sun4gas.h22
-rw-r--r--contrib/gcc/config/sparc/sun4o3.h11
-rw-r--r--contrib/gcc/config/sparc/sunos4.h48
-rw-r--r--contrib/gcc/config/sparc/t-chorus-elf29
-rw-r--r--contrib/gcc/config/sparc/t-halos2
-rw-r--r--contrib/gcc/config/sparc/t-sparcbare25
-rw-r--r--contrib/gcc/config/sparc/t-splet21
-rw-r--r--contrib/gcc/config/sparc/t-sunos4112
-rw-r--r--contrib/gcc/config/sparc/t-vxsparc10
-rw-r--r--contrib/gcc/config/sparc/t-vxsparc6423
-rw-r--r--contrib/gcc/config/sparc/vxsim.h136
-rw-r--r--contrib/gcc/config/sparc/vxsparc.h59
-rw-r--r--contrib/gcc/config/sparc/vxsparc64.h92
-rw-r--r--contrib/gcc/config/t-interix2
-rw-r--r--contrib/gcc/config/t-linux-aout2
-rw-r--r--contrib/gcc/configure.frag77
-rw-r--r--contrib/gcc/configure.in2969
-rw-r--r--contrib/gcc/cp/cfns.h467
-rw-r--r--contrib/gcc/cp/g++.c582
-rw-r--r--contrib/gcc/cp/lang-options.h159
-rw-r--r--contrib/gcc/cp/parse.y4237
-rw-r--r--contrib/gcc/cp/reno.texi752
-rw-r--r--contrib/gcc/cp/spew.c1558
-rw-r--r--contrib/gcc/cppmain.c432
-rw-r--r--contrib/gcc/dbxstclass.h17
-rw-r--r--contrib/gcc/doc/install-old.texi725
-rw-r--r--contrib/gcc/doc/install.texi3928
-rwxr-xr-xcontrib/gcc/doc/install.texi2html31
-rw-r--r--contrib/gcc/doschk.c360
-rw-r--r--contrib/gcc/dwarfout.c6561
-rw-r--r--contrib/gcc/f/README7
-rw-r--r--contrib/gcc/f/lang-options.h239
-rw-r--r--contrib/gcc/floatlib.c944
-rw-r--r--contrib/gcc/future.options40
-rw-r--r--contrib/gcc/getopt.c1056
-rw-r--r--contrib/gcc/getopt.h144
-rw-r--r--contrib/gcc/getopt1.c190
-rw-r--r--contrib/gcc/location.h38
-rw-r--r--contrib/gcc/mbchar.c334
-rw-r--r--contrib/gcc/mbchar.h41
-rw-r--r--contrib/gcc/objc/lang-options.h43
-rw-r--r--contrib/gcc/objc/sendmsg.c651
-rw-r--r--contrib/gcc/pexecute.c792
-rw-r--r--contrib/gcc/profile.h54
-rw-r--r--contrib/gcc/ssa-ccp.c1219
-rw-r--r--contrib/gcc/ssa-dce.c733
-rw-r--r--contrib/gcc/ssa.c2334
-rw-r--r--contrib/gcc/ssa.h72
-rw-r--r--contrib/gcc/unwind-libunwind.c172
-rw-r--r--contrib/libf2c/libU77/bes.c58
-rw-r--r--contrib/libf2c/libU77/dbes.c58
-rw-r--r--contrib/libstdc++/NEWS9
-rw-r--r--contrib/libstdc++/cassert7
-rw-r--r--contrib/libstdc++/cctype7
-rw-r--r--contrib/libstdc++/cerrno7
-rw-r--r--contrib/libstdc++/cfloat7
-rw-r--r--contrib/libstdc++/cinst.cc154
-rw-r--r--contrib/libstdc++/ciso6467
-rw-r--r--contrib/libstdc++/climits7
-rw-r--r--contrib/libstdc++/clocale7
-rw-r--r--contrib/libstdc++/cmath76
-rw-r--r--contrib/libstdc++/cmathi.cc7
-rw-r--r--contrib/libstdc++/complex18
-rw-r--r--contrib/libstdc++/complex.h6
-rwxr-xr-xcontrib/libstdc++/config/abi/extract_symvers64
-rw-r--r--contrib/libstdc++/config/aix.ml9
-rw-r--r--contrib/libstdc++/config/cpu/sparc/sparc32/bits/atomicity.h88
-rw-r--r--contrib/libstdc++/config/cpu/sparc/sparc64/bits/atomicity.h70
-rw-r--r--contrib/libstdc++/config/dec-osf.ml6
-rw-r--r--contrib/libstdc++/config/delta.mt2
-rw-r--r--contrib/libstdc++/config/elf.ml8
-rw-r--r--contrib/libstdc++/config/elfshlibm.ml6
-rw-r--r--contrib/libstdc++/config/freebsd.ml6
-rw-r--r--contrib/libstdc++/config/gnu.ml6
-rw-r--r--contrib/libstdc++/config/hpux.ml6
-rw-r--r--contrib/libstdc++/config/io/basic_file_libio.cc194
-rw-r--r--contrib/libstdc++/config/io/basic_file_libio.h498
-rw-r--r--contrib/libstdc++/config/io/c_io_libio.h113
-rw-r--r--contrib/libstdc++/config/io/c_io_libio_codecvt.c153
-rw-r--r--contrib/libstdc++/config/irix5.ml6
-rw-r--r--contrib/libstdc++/config/linux.ml11
-rw-r--r--contrib/libstdc++/config/linux.mt2
-rw-r--r--contrib/libstdc++/config/openbsd.ml7
-rw-r--r--contrib/libstdc++/config/openbsd.mt3
-rw-r--r--contrib/libstdc++/config/posix.mt1
-rw-r--r--contrib/libstdc++/config/sol2pth.mt1
-rw-r--r--contrib/libstdc++/config/sol2shm.ml6
-rw-r--r--contrib/libstdc++/config/sol2solth.mt1
-rw-r--r--contrib/libstdc++/config/sunos4.ml9
-rw-r--r--contrib/libstdc++/config/x86-interix.ml9
-rw-r--r--contrib/libstdc++/configure.in554
-rw-r--r--contrib/libstdc++/configure.target200
-rw-r--r--contrib/libstdc++/csetjmp8
-rw-r--r--contrib/libstdc++/csignal7
-rw-r--r--contrib/libstdc++/cstdarg7
-rw-r--r--contrib/libstdc++/cstddef7
-rw-r--r--contrib/libstdc++/cstdio7
-rw-r--r--contrib/libstdc++/cstdlib23
-rw-r--r--contrib/libstdc++/cstdlibi.cc7
-rw-r--r--contrib/libstdc++/cstring96
-rw-r--r--contrib/libstdc++/cstringi.cc7
-rw-r--r--contrib/libstdc++/ctime7
-rw-r--r--contrib/libstdc++/cwchar7
-rw-r--r--contrib/libstdc++/cwctype7
-rw-r--r--contrib/libstdc++/fstream7
-rw-r--r--contrib/libstdc++/include/bits/fpos.h127
-rw-r--r--contrib/libstdc++/include/bits/pthread_allocimpl.h525
-rw-r--r--contrib/libstdc++/include/bits/stl_alloc.h974
-rw-r--r--contrib/libstdc++/include/bits/stl_pthread_alloc.h60
-rw-r--r--contrib/libstdc++/include/bits/valarray_meta.h1147
-rw-r--r--contrib/libstdc++/include/ext/stl_hash_fun.h126
-rw-r--r--contrib/libstdc++/include/ext/stl_hashtable.h996
-rw-r--r--contrib/libstdc++/include/ext/stl_rope.h2503
-rw-r--r--contrib/libstdc++/iomanip7
-rw-r--r--contrib/libstdc++/iosfwd15
-rw-r--r--contrib/libstdc++/iostream7
-rw-r--r--contrib/libstdc++/libio/ChangeLog2802
-rw-r--r--contrib/libstdc++/libio/Makefile.am67
-rw-r--r--contrib/libstdc++/libio/Makefile.in406
-rw-r--r--contrib/libstdc++/libio/_G_config.h136
-rw-r--r--contrib/libstdc++/libio/filedoalloc.c101
-rw-r--r--contrib/libstdc++/libio/fileops.c1049
-rw-r--r--contrib/libstdc++/libio/genops.c1123
-rw-r--r--contrib/libstdc++/libio/iofclose.c97
-rw-r--r--contrib/libstdc++/libio/iofopen.c78
-rw-r--r--contrib/libstdc++/libio/iofwide.c476
-rw-r--r--contrib/libstdc++/libio/iolibio.h82
-rw-r--r--contrib/libstdc++/libio/libio.h511
-rw-r--r--contrib/libstdc++/libio/libioP.h821
-rw-r--r--contrib/libstdc++/libio/stdfiles.c71
-rw-r--r--contrib/libstdc++/libio/stdio.c43
-rw-r--r--contrib/libstdc++/libio/wfiledoalloc.c108
-rw-r--r--contrib/libstdc++/libio/wfileops.c754
-rw-r--r--contrib/libstdc++/libio/wgenops.c756
-rw-r--r--contrib/libstdc++/libmath/nan.c36
-rwxr-xr-xcontrib/libstdc++/mkcheck.in448
-rw-r--r--contrib/libstdc++/sinst.cc135
-rw-r--r--contrib/libstdc++/src/bitset.cc219
-rw-r--r--contrib/libstdc++/src/cmath.cc47
-rw-r--r--contrib/libstdc++/src/fstream.cc202
-rw-r--r--contrib/libstdc++/src/globals.cc317
-rw-r--r--contrib/libstdc++/src/stl-inst.cc43
-rw-r--r--contrib/libstdc++/src/vterminate.cc82
-rw-r--r--contrib/libstdc++/sstream343
-rw-r--r--contrib/libstdc++/std/bastring.cc524
-rw-r--r--contrib/libstdc++/std/bastring.h657
-rw-r--r--contrib/libstdc++/std/complext.cc273
-rw-r--r--contrib/libstdc++/std/complext.h400
-rw-r--r--contrib/libstdc++/std/dcomplex.h91
-rw-r--r--contrib/libstdc++/std/fcomplex.h87
-rw-r--r--contrib/libstdc++/std/gslice.h111
-rw-r--r--contrib/libstdc++/std/gslice_array.h170
-rw-r--r--contrib/libstdc++/std/indirect_array.h157
-rw-r--r--contrib/libstdc++/std/ldcomplex.h95
-rw-r--r--contrib/libstdc++/std/mask_array.h154
-rw-r--r--contrib/libstdc++/std/slice.h76
-rw-r--r--contrib/libstdc++/std/slice_array.h156
-rw-r--r--contrib/libstdc++/std/std_valarray.h728
-rw-r--r--contrib/libstdc++/std/straits.h161
-rw-r--r--contrib/libstdc++/std/valarray_array.h346
-rw-r--r--contrib/libstdc++/std/valarray_array.tcc130
-rw-r--r--contrib/libstdc++/std/valarray_meta.h1046
-rw-r--r--contrib/libstdc++/stdexcept97
-rw-r--r--contrib/libstdc++/stdexcepti.cc21
-rw-r--r--contrib/libstdc++/stl.h15
-rw-r--r--contrib/libstdc++/stl/ChangeLog381
-rw-r--r--contrib/libstdc++/stl/README13
-rw-r--r--contrib/libstdc++/stl/algo.h114
-rw-r--r--contrib/libstdc++/stl/algobase.h71
-rw-r--r--contrib/libstdc++/stl/algorithm40
-rw-r--r--contrib/libstdc++/stl/alloc.h46
-rw-r--r--contrib/libstdc++/stl/bitset1066
-rw-r--r--contrib/libstdc++/stl/bvector.h51
-rw-r--r--contrib/libstdc++/stl/defalloc.h87
-rw-r--r--contrib/libstdc++/stl/deque40
-rw-r--r--contrib/libstdc++/stl/deque.h42
-rw-r--r--contrib/libstdc++/stl/function.h118
-rw-r--r--contrib/libstdc++/stl/functional26
-rw-r--r--contrib/libstdc++/stl/hash_map40
-rw-r--r--contrib/libstdc++/stl/hash_map.h49
-rw-r--r--contrib/libstdc++/stl/hash_set40
-rw-r--r--contrib/libstdc++/stl/hash_set.h44
-rw-r--r--contrib/libstdc++/stl/hashtable.h48
-rw-r--r--contrib/libstdc++/stl/heap.h46
-rw-r--r--contrib/libstdc++/stl/iterator44
-rw-r--r--contrib/libstdc++/stl/iterator.h104
-rw-r--r--contrib/libstdc++/stl/list40
-rw-r--r--contrib/libstdc++/stl/list.h42
-rw-r--r--contrib/libstdc++/stl/map40
-rw-r--r--contrib/libstdc++/stl/map.h41
-rw-r--r--contrib/libstdc++/stl/memory108
-rw-r--r--contrib/libstdc++/stl/multimap.h41
-rw-r--r--contrib/libstdc++/stl/multiset.h41
-rw-r--r--contrib/libstdc++/stl/numeric42
-rw-r--r--contrib/libstdc++/stl/pair.h51
-rw-r--r--contrib/libstdc++/stl/pthread_alloc479
-rw-r--r--contrib/libstdc++/stl/pthread_alloc.h31
-rw-r--r--contrib/libstdc++/stl/queue45
-rw-r--r--contrib/libstdc++/stl/rope32
-rw-r--r--contrib/libstdc++/stl/rope.h34
-rw-r--r--contrib/libstdc++/stl/ropeimpl.h1550
-rw-r--r--contrib/libstdc++/stl/set40
-rw-r--r--contrib/libstdc++/stl/set.h41
-rw-r--r--contrib/libstdc++/stl/slist28
-rw-r--r--contrib/libstdc++/stl/slist.h30
-rw-r--r--contrib/libstdc++/stl/stack41
-rw-r--r--contrib/libstdc++/stl/stack.h46
-rw-r--r--contrib/libstdc++/stl/stl_algo.h2894
-rw-r--r--contrib/libstdc++/stl/stl_algobase.h526
-rw-r--r--contrib/libstdc++/stl/stl_alloc.h1057
-rw-r--r--contrib/libstdc++/stl/stl_bvector.h838
-rw-r--r--contrib/libstdc++/stl/stl_config.h356
-rw-r--r--contrib/libstdc++/stl/stl_construct.h90
-rw-r--r--contrib/libstdc++/stl/stl_deque.h1698
-rw-r--r--contrib/libstdc++/stl/stl_function.h700
-rw-r--r--contrib/libstdc++/stl/stl_hash_fun.h93
-rw-r--r--contrib/libstdc++/stl/stl_hash_map.h416
-rw-r--r--contrib/libstdc++/stl/stl_hash_set.h401
-rw-r--r--contrib/libstdc++/stl/stl_hashtable.h1039
-rw-r--r--contrib/libstdc++/stl/stl_heap.h281
-rw-r--r--contrib/libstdc++/stl/stl_iterator.h915
-rw-r--r--contrib/libstdc++/stl/stl_list.h840
-rw-r--r--contrib/libstdc++/stl/stl_map.h242
-rw-r--r--contrib/libstdc++/stl/stl_multimap.h232
-rw-r--r--contrib/libstdc++/stl/stl_multiset.h224
-rw-r--r--contrib/libstdc++/stl/stl_numeric.h239
-rw-r--r--contrib/libstdc++/stl/stl_pair.h77
-rw-r--r--contrib/libstdc++/stl/stl_queue.h202
-rw-r--r--contrib/libstdc++/stl/stl_raw_storage_iter.h81
-rw-r--r--contrib/libstdc++/stl/stl_relops.h62
-rw-r--r--contrib/libstdc++/stl/stl_rope.h2541
-rw-r--r--contrib/libstdc++/stl/stl_set.h216
-rw-r--r--contrib/libstdc++/stl/stl_slist.h945
-rw-r--r--contrib/libstdc++/stl/stl_stack.h111
-rw-r--r--contrib/libstdc++/stl/stl_tempbuf.h156
-rw-r--r--contrib/libstdc++/stl/stl_tree.h1333
-rw-r--r--contrib/libstdc++/stl/stl_uninitialized.h279
-rw-r--r--contrib/libstdc++/stl/stl_vector.h823
-rw-r--r--contrib/libstdc++/stl/tempbuf.h61
-rw-r--r--contrib/libstdc++/stl/tree.h46
-rw-r--r--contrib/libstdc++/stl/type_traits.h373
-rw-r--r--contrib/libstdc++/stl/utility38
-rw-r--r--contrib/libstdc++/stl/vector41
-rw-r--r--contrib/libstdc++/stl/vector.h42
-rw-r--r--contrib/libstdc++/stlinst.cc10
-rw-r--r--contrib/libstdc++/string13
-rw-r--r--contrib/libstdc++/strstream7
-rw-r--r--contrib/libstdc++/tests/ChangeLog132
-rw-r--r--contrib/libstdc++/tests/Makefile.in35
-rw-r--r--contrib/libstdc++/tests/configure.in65
-rw-r--r--contrib/libstdc++/tests/tcomplex.cc151
-rw-r--r--contrib/libstdc++/tests/tcomplex.exp37
-rw-r--r--contrib/libstdc++/tests/tcomplex.inp1
-rw-r--r--contrib/libstdc++/tests/tlist.cc151
-rw-r--r--contrib/libstdc++/tests/tlist.exp44
-rw-r--r--contrib/libstdc++/tests/tmap.cc59
-rw-r--r--contrib/libstdc++/tests/tmap.exp7
-rw-r--r--contrib/libstdc++/tests/tstring.cc249
-rw-r--r--contrib/libstdc++/tests/tstring.exp22
-rw-r--r--contrib/libstdc++/tests/tstring.inp1
-rw-r--r--contrib/libstdc++/tests/tvector.cc20
-rw-r--r--contrib/libstdc++/tests/tvector.exp4
-rw-r--r--contrib/libstdc++/testsuite/ChangeLog94
-rw-r--r--contrib/libstdc++/testsuite/Makefile.in428
-rw-r--r--contrib/libstdc++/testsuite/config/default.exp21
-rw-r--r--contrib/libstdc++/testsuite/configure.in24
-rw-r--r--contrib/libstdc++/testsuite/lib/libstdc++.exp179
-rw-r--r--contrib/libstdc++/testsuite/libstdc++.tests/test.exp34
-rwxr-xr-xcontrib/libstdc++/testsuite_flags.in61
-rw-r--r--contrib/libstdc++/valarray8
-rw-r--r--contrib/libstdc++/valarray.cc50
327 files changed, 0 insertions, 107541 deletions
diff --git a/contrib/gcc/.brik b/contrib/gcc/.brik
deleted file mode 100644
index 112cead..0000000
--- a/contrib/gcc/.brik
+++ /dev/null
@@ -1,14448 +0,0 @@
-# Whole file CRCs generated by Brik v2.0. Use "brik -C" to verify them.
-
-# CRC-32 filename
-# ------ --------
-
- 643045998b ./boehm-gc/acinclude.m4
-2700729979b ./boehm-gc/aclocal.m4
- 971051254b ./boehm-gc/add_gc_prefix.c
-2056900000b ./boehm-gc/allchblk.c
- 182725132b ./boehm-gc/alloc.c
-1198071641b ./boehm-gc/alpha_mach_dep.s
- 655018850b ./boehm-gc/AmigaOS.c
-3099799990b ./boehm-gc/backgraph.c
-2411687152b ./boehm-gc/BCC_MAKEFILE
- 394605993b ./boehm-gc/blacklst.c
- 971406525b ./boehm-gc/callprocs
-2840737175b ./boehm-gc/ChangeLog
-2542310219b ./boehm-gc/checksums.c
-1272640704b ./boehm-gc/config.guess
-4182969326b ./boehm-gc/config.sub
-1543515895b ./boehm-gc/configure
-2331870630b ./boehm-gc/configure.host
-2767393649b ./boehm-gc/configure.in
-3430717956b ./boehm-gc/cord/cordbscs.c
- 473686535b ./boehm-gc/cord/cordprnt.c
-1796537586b ./boehm-gc/cord/cordtest.c
-3610557498b ./boehm-gc/cord/cordxtra.c
-1399512076b ./boehm-gc/cord/de.c
-3493089115b ./boehm-gc/cord/de_cmds.h
-1274913051b ./boehm-gc/cord/de_win.c
-1969645283b ./boehm-gc/cord/de_win.h
-2226183422b ./boehm-gc/cord/de_win.ICO
-2296745137b ./boehm-gc/cord/de_win.RC
-3479570773b ./boehm-gc/dbg_mlc.c
-4155306217b ./boehm-gc/digimars.mak
- 602673483b ./boehm-gc/doc/barrett_diagram
-2134574438b ./boehm-gc/doc/debugging.html
-4112273729b ./boehm-gc/doc/gcdescr.html
-2587456343b ./boehm-gc/doc/gc.man
-1852147885b ./boehm-gc/doc/README
-1398938057b ./boehm-gc/doc/README.amiga
-3968038895b ./boehm-gc/doc/README.autoconf
- 609394135b ./boehm-gc/doc/README.changes
- 124254120b ./boehm-gc/doc/README.contributors
-2337143875b ./boehm-gc/doc/README.cords
-2101980206b ./boehm-gc/doc/README.dj
-1564073111b ./boehm-gc/doc/README.environment
-1544667036b ./boehm-gc/doc/README.ews4800
-2032435380b ./boehm-gc/doc/README.hp
- 261398962b ./boehm-gc/doc/README.linux
-2912965872b ./boehm-gc/doc/README.Mac
-3192387476b ./boehm-gc/doc/README.MacOSX
-3651372180b ./boehm-gc/doc/README.macros
-1009764294b ./boehm-gc/doc/README.OS2
-3249391671b ./boehm-gc/doc/README.rs6000
-2157435131b ./boehm-gc/doc/README.sgi
-2210572734b ./boehm-gc/doc/README.solaris2
-1044770375b ./boehm-gc/doc/README.uts
-3162142981b ./boehm-gc/doc/README.win32
-1244216301b ./boehm-gc/doc/tree.html
-1267269518b ./boehm-gc/dyn_load.c
-3428452570b ./boehm-gc/EMX_MAKEFILE
- 110360283b ./boehm-gc/finalize.c
-3449835837b ./boehm-gc/gc_cpp.cc
- 231223753b ./boehm-gc/gc_cpp.cpp
-3458300802b ./boehm-gc/gcc_support.c
- 145159317b ./boehm-gc/gc_dlopen.c
-4111426693b ./boehm-gc/gcj_mlc.c
-3607948475b ./boehm-gc/gc.mak
-3106502053b ./boehm-gc/gcname.c
-1644234138b ./boehm-gc/headers.c
-1596485799b ./boehm-gc/hpux_test_and_clear.s
-1676909184b ./boehm-gc/ia64_save_regs_in_stack.s
-3582080946b ./boehm-gc/if_mach.c
- 387600055b ./boehm-gc/if_not_there.c
-3897882033b ./boehm-gc/include/cord.h
- 214150158b ./boehm-gc/include/ec.h
-2874534410b ./boehm-gc/include/gc_alloc.h
-1922524680b ./boehm-gc/include/gc_amiga_redirects.h
-3531915622b ./boehm-gc/include/gc_backptr.h
-1564499082b ./boehm-gc/include/gc_cpp.h
-2080667503b ./boehm-gc/include/gc_gcj.h
- 61666144b ./boehm-gc/include/gc.h
- 30043067b ./boehm-gc/include/gc_inl.h
- 601682422b ./boehm-gc/include/gc_inline.h
-2851726125b ./boehm-gc/include/gc_local_alloc.h
-3323450216b ./boehm-gc/include/gc_mark.h
-4062216651b ./boehm-gc/include/gc_pthread_redirects.h
-3286861254b ./boehm-gc/include/gc_typed.h
-2246764458b ./boehm-gc/include/javaxfc.h
-4237951566b ./boehm-gc/include/leak_detector.h
- 695561534b ./boehm-gc/include/Makefile.am
-3142769731b ./boehm-gc/include/Makefile.in
-3792791209b ./boehm-gc/include/new_gc_alloc.h
-1547838704b ./boehm-gc/include/private/cord_pos.h
- 902196938b ./boehm-gc/include/private/dbg_mlc.h
-1218966353b ./boehm-gc/include/private/gcconfig.h
-1215170430b ./boehm-gc/include/private/gc_hdrs.h
- 687589575b ./boehm-gc/include/private/gc_locks.h
- 583510369b ./boehm-gc/include/private/gc_pmark.h
-2936482199b ./boehm-gc/include/private/gc_priv.h
-2686914147b ./boehm-gc/include/private/solaris_threads.h
-3935909412b ./boehm-gc/include/private/specific.h
-2262051120b ./boehm-gc/include/weakpointer.h
-4171599065b ./boehm-gc/install-sh
-3059795267b ./boehm-gc/irix_threads.c
-1133052236b ./boehm-gc/libtool.m4
-3750760998b ./boehm-gc/linux_threads.c
-3535854335b ./boehm-gc/ltconfig
-2828184627b ./boehm-gc/ltmain.sh
- 789649079b ./boehm-gc/Mac_files/dataend.c
-3520138091b ./boehm-gc/Mac_files/datastart.c
- 537693184b ./boehm-gc/Mac_files/MacOS_config.h
-3338272940b ./boehm-gc/Mac_files/MacOS_Test_config.h
-2932074179b ./boehm-gc/mach_dep.c
- 145946109b ./boehm-gc/MacOS.c
- 591574792b ./boehm-gc/MacProjects.sit.hqx
-3930151010b ./boehm-gc/Makefile.am
-3148936110b ./boehm-gc/Makefile.direct
-3806813747b ./boehm-gc/Makefile.dist
- 87051491b ./boehm-gc/Makefile.dj
-2647418481b ./boehm-gc/Makefile.DLLs
-1617270503b ./boehm-gc/Makefile.in
-4270565414b ./boehm-gc/malloc.c
-3656007348b ./boehm-gc/mallocx.c
-2488176063b ./boehm-gc/mark.c
-4184892336b ./boehm-gc/mark_rts.c
-2792262463b ./boehm-gc/mips_sgi_mach_dep.S
- 447949782b ./boehm-gc/mips_ultrix_mach_dep.s
-1352116856b ./boehm-gc/misc.c
-4236112450b ./boehm-gc/mkinstalldirs
-2583630088b ./boehm-gc/new_hblk.c
-3941839401b ./boehm-gc/NT_MAKEFILE
-3607948475b ./boehm-gc/NT_THREADS_MAKEFILE
-1361724709b ./boehm-gc/obj_map.c
-3289014202b ./boehm-gc/OS2_MAKEFILE
-3844001122b ./boehm-gc/os_dep.c
- 600864111b ./boehm-gc/pc_excludes
- 735852084b ./boehm-gc/pcr_interface.c
-2438519321b ./boehm-gc/PCR-Makefile
- 811834911b ./boehm-gc/powerpc_macosx_mach_dep.s
- 105828241b ./boehm-gc/ptr_chck.c
-3988382907b ./boehm-gc/real_malloc.c
-2946495074b ./boehm-gc/reclaim.c
-2737439630b ./boehm-gc/rs6000_mach_dep.s
- 636267038b ./boehm-gc/setjmp_t.c
-2956367466b ./boehm-gc/SMakefile.amiga
- 751650501b ./boehm-gc/solaris_pthreads.c
- 275051372b ./boehm-gc/solaris_threads.c
-1425695416b ./boehm-gc/sparc_mach_dep.S
- 551455534b ./boehm-gc/sparc_netbsd_mach_dep.s
- 293721320b ./boehm-gc/sparc_sunos4_mach_dep.s
-3072675593b ./boehm-gc/specific.c
- 644387711b ./boehm-gc/stubborn.c
-1440779450b ./boehm-gc/tests/leak_test.c
-1742599416b ./boehm-gc/tests/test.c
-3630296235b ./boehm-gc/tests/test_cpp.cc
- 14580047b ./boehm-gc/tests/thread_leak_test.c
-1499257362b ./boehm-gc/tests/trace_test.c
-3287937987b ./boehm-gc/threadlibs.c
-2467355438b ./boehm-gc/typd_mlc.c
- 332085760b ./boehm-gc/version.h
- 205379550b ./boehm-gc/WCC_MAKEFILE
-3326583566b ./boehm-gc/win32_threads.c
-1610170592b ./BUGS
-3809269006b ./bugs.html
-3781032226b ./ChangeLog
-3004978457b ./config/acinclude.m4
-3317944764b ./config/ChangeLog
-1242784498b ./config.guess
-1864899138b ./config.if
-3007349820b ./config/mh-a68bsd
-1442196770b ./config/mh-aix386
-3054121875b ./config/mh-apollo68
-3478341494b ./config/mh-armpic
-1811916229b ./config/mh-cxux
-3020282061b ./config/mh-cygwin
-2180612469b ./config/mh-decstation
- 973727842b ./config/mh-delta88
-2133351807b ./config/mh-dgux
- 746894734b ./config/mh-dgux386
-3870705974b ./config/mh-djgpp
-3478341494b ./config/mh-elfalphapic
- 41994544b ./config/mh-hp300
- 318860404b ./config/mh-hpux
- 318860404b ./config/mh-hpux8
-3478341494b ./config/mh-i370pic
-3265825290b ./config/mh-ia64pic
-2339341800b ./config/mh-interix
-3277888801b ./config/mh-irix4
-1357357208b ./config/mh-irix5
- 200282509b ./config/mh-irix6
-2624861245b ./config/mh-lynxos
-1194372982b ./config/mh-lynxrs6k
-3265825290b ./config/mh-m68kpic
-1904254329b ./config/mh-mingw32
-3317263548b ./config/mh-ncr3000
-2638893829b ./config/mh-ncrsvr43
-4287527672b ./config/mh-necv4
-3000874205b ./config/mh-openedition
-3478341494b ./config/mh-papic
-3478341494b ./config/mh-ppcpic
- 136062744b ./config/mh-riscos
- 407821128b ./config/mh-sco
-2015316329b ./config/mh-solaris
-1399222241b ./config/mh-sparcpic
- 889431517b ./config/mh-sun3
-1253937510b ./config/mh-sysv
-3104599531b ./config/mh-sysv4
-2519884023b ./config/mh-sysv5
- 456622165b ./config/mh-vaxult2
-3265825290b ./config/mh-x86pic
-3139906847b ./config-ml.in
-2319412792b ./config/mpw/ChangeLog
-4005879853b ./config/mpw/forward-include
- 439409833b ./config/mpw/g-mpw-make.sed
- 198559626b ./config/mpw-mh-mpw
-3145098931b ./config/mpw/MoveIfChange
-2800114792b ./config/mpw/mpw-touch
-3832565257b ./config/mpw/mpw-true
- 792347706b ./config/mpw/null-command
-3439853311b ./config/mpw/open-brace
-1476422091b ./config/mpw/README
- 779160003b ./config/mpw/tr-7to8-src
-3832565257b ./config/mpw/true
-2474610656b ./config/mt-aix43
-3955224621b ./config/mt-alphaieee
- 536974328b ./config/mt-armpic
-1487563357b ./config/mt-d30v
- 536974328b ./config/mt-elfalphapic
- 536974328b ./config/mt-i370pic
- 771382916b ./config/mt-ia64pic
-3571760336b ./config/mt-linux
- 771382916b ./config/mt-m68kpic
-2548851201b ./config/mt-netware
- 971016637b ./config/mt-ospace
- 536974328b ./config/mt-papic
- 536974328b ./config/mt-ppcpic
-1847648786b ./config/mt-sparcpic
- 787786243b ./config/mt-v810
-2659154290b ./config/mt-wince
- 771382916b ./config/mt-x86pic
-3897683520b ./config.sub
-2416042097b ./configure
-3230279174b ./configure.in
-1948950130b ./contrib/analyze_brprob
-3428325838b ./contrib/ChangeLog
- 550196746b ./contrib/compare_tests
-2828387446b ./contrib/convert_to_f2c
-2929939770b ./contrib/convert_to_g2c
-2025073358b ./contrib/download_f2c
-1336632236b ./contrib/gccbug.el
-2292355102b ./contrib/gcc_build
-2687391969b ./contrib/gcc_update
- 109296376b ./contrib/gennews
-4256039795b ./contrib/index-prop
-3683285493b ./contrib/newcvsroot
-1596938872b ./contrib/regression/btest-gcc.sh
-2896767265b ./contrib/regression/ChangeLog
-4208566980b ./contrib/regression/objs-gcc.sh
-1757898889b ./contrib/regression/README
-1865505596b ./contrib/regression/site.exp
-1623905231b ./contrib/test_installed
-2523431553b ./contrib/test_summary
-3362750683b ./contrib/texi2pod.pl
-4228623080b ./contrib/warn_summary
-2171125041b ./COPYING
- 508743035b ./COPYING.LIB
-3205162104b ./.cvsignore
-3112237745b ./FAQ
- 118439247b ./faq.html
-3513702948b ./fastjar/aclocal.m4
-1005262133b ./fastjar/AUTHORS
- 640599037b ./fastjar/ChangeLog
-1745615150b ./fastjar/CHANGES
-3743222129b ./fastjar/compress.c
-1169302702b ./fastjar/compress.h
- 754715889b ./fastjar/config.h.in
-1796406241b ./fastjar/configure
-1220094724b ./fastjar/configure.in
-1396100520b ./fastjar/COPYING
-3353116274b ./fastjar/dostime.c
- 446939748b ./fastjar/dostime.h
-2770615802b ./fastjar/INSTALL
-2331671736b ./fastjar/install-defs.sh.in
-1178077958b ./fastjar/install-sh
-1960714715b ./fastjar/jargrep.c
-4062871816b ./fastjar/jargrep.h
-2153374785b ./fastjar/jartool.c
-2754304773b ./fastjar/jartool.h
-3714739366b ./fastjar/Makefile.am
- 39617579b ./fastjar/Makefile.in
- 990942143b ./fastjar/missing
-1455437353b ./fastjar/mkinstalldirs
-4038493440b ./fastjar/NEWS
-1315168235b ./fastjar/pushback.c
- 302085493b ./fastjar/pushback.h
-3780741064b ./fastjar/README
- 216805921b ./fastjar/stamp-h.in
-3071504729b ./fastjar/zipfile.h
-2539671184b ./gcc/ABOUT-GCC-NLS
-1758308615b ./gcc/ABOUT-NLS
-3729933059b ./gcc/acconfig.h
-3650551157b ./gcc/aclocal.m4
-4242669380b ./gcc/ada/1aexcept.adb
- 956455478b ./gcc/ada/1aexcept.ads
-1459838793b ./gcc/ada/1ic.ads
-3953623706b ./gcc/ada/31soccon.ads
-2884972597b ./gcc/ada/31soliop.ads
-4248758801b ./gcc/ada/3asoccon.ads
-3931896843b ./gcc/ada/3bsoccon.ads
-3560754896b ./gcc/ada/3gsoccon.ads
- 580031672b ./gcc/ada/3hsoccon.ads
- 229359869b ./gcc/ada/3lsoccon.ads
-2442231443b ./gcc/ada/3ssoccon.ads
-1502394419b ./gcc/ada/3ssoliop.ads
-3387310401b ./gcc/ada/3wsoccon.ads
- 391658942b ./gcc/ada/3wsocthi.adb
-1356739718b ./gcc/ada/3wsocthi.ads
- 681502184b ./gcc/ada/3wsoliop.ads
-3245682325b ./gcc/ada/41intnam.ads
-2662178618b ./gcc/ada/42intnam.ads
- 959518590b ./gcc/ada/4aintnam.ads
-3097801335b ./gcc/ada/4cintnam.ads
- 481858334b ./gcc/ada/4dintnam.ads
-4162574675b ./gcc/ada/4gintnam.ads
-2002752921b ./gcc/ada/4hexcpol.adb
-2499132704b ./gcc/ada/4hintnam.ads
- 222726646b ./gcc/ada/4lintnam.ads
- 374384539b ./gcc/ada/4mintnam.ads
-3241941732b ./gcc/ada/4nintnam.ads
- 620116621b ./gcc/ada/4ointnam.ads
-3443503753b ./gcc/ada/4onumaux.ads
-1566782773b ./gcc/ada/4pintnam.ads
-3406122898b ./gcc/ada/4rintnam.ads
- 459655329b ./gcc/ada/4sintnam.ads
- 719827780b ./gcc/ada/4uintnam.ads
-1115932068b ./gcc/ada/4vcaldel.adb
-4160669776b ./gcc/ada/4vcalend.adb
-2943884446b ./gcc/ada/4vcalend.ads
-1904156899b ./gcc/ada/4vintnam.ads
- 594124201b ./gcc/ada/4wcalend.adb
-3762378663b ./gcc/ada/4wexcpol.adb
-1710451163b ./gcc/ada/4wintnam.ads
- 548303504b ./gcc/ada/4zintnam.ads
- 770211451b ./gcc/ada/4znumaux.ads
- 930797522b ./gcc/ada/4zsytaco.adb
-3071531568b ./gcc/ada/4zsytaco.ads
-3569647494b ./gcc/ada/51osinte.adb
-2532503682b ./gcc/ada/51osinte.ads
-3468089494b ./gcc/ada/52osinte.adb
-2083506135b ./gcc/ada/52osinte.ads
- 765740382b ./gcc/ada/52system.ads
-3057318985b ./gcc/ada/53osinte.ads
-3513991105b ./gcc/ada/54osinte.ads
- 249779471b ./gcc/ada/5amastop.adb
-1653378497b ./gcc/ada/5aosinte.adb
-3367754742b ./gcc/ada/5aosinte.ads
-3819202190b ./gcc/ada/5asystem.ads
- 613172531b ./gcc/ada/5ataprop.adb
-3013377906b ./gcc/ada/5atasinf.ads
-3014755298b ./gcc/ada/5ataspri.ads
-3667261101b ./gcc/ada/5atpopsp.adb
-3916423708b ./gcc/ada/5avxwork.ads
-3659011384b ./gcc/ada/5bosinte.adb
-2779241737b ./gcc/ada/5bosinte.ads
-2308169616b ./gcc/ada/5bsystem.ads
-1335114659b ./gcc/ada/5cosinte.ads
-2058704820b ./gcc/ada/5dosinte.ads
-1118228281b ./gcc/ada/5esystem.ads
- 74251179b ./gcc/ada/5etpopse.adb
- 745978377b ./gcc/ada/5fintman.adb
-3658042447b ./gcc/ada/5fosinte.ads
-3136371085b ./gcc/ada/5fsystem.ads
-1678802713b ./gcc/ada/5ftaprop.adb
-2739603168b ./gcc/ada/5ftasinf.ads
-3610821942b ./gcc/ada/5ginterr.adb
- 975866538b ./gcc/ada/5gintman.adb
-1378115556b ./gcc/ada/5gmastop.adb
-2183233435b ./gcc/ada/5gosinte.ads
- 571431837b ./gcc/ada/5gproinf.adb
-3191048862b ./gcc/ada/5gproinf.ads
- 693393540b ./gcc/ada/5gsystem.ads
-2970373496b ./gcc/ada/5gtaprop.adb
-2321444413b ./gcc/ada/5gtasinf.adb
-3287583301b ./gcc/ada/5gtasinf.ads
-2785741821b ./gcc/ada/5gtpgetc.adb
-3503873280b ./gcc/ada/5hosinte.adb
-2098542990b ./gcc/ada/5hosinte.ads
-2099158447b ./gcc/ada/5hparame.ads
-3465869647b ./gcc/ada/5hsystem.ads
-1377954775b ./gcc/ada/5htaprop.adb
- 158492006b ./gcc/ada/5htaspri.ads
- 58230655b ./gcc/ada/5htraceb.adb
- 703108891b ./gcc/ada/5iosinte.adb
-3200296303b ./gcc/ada/5iosinte.ads
-1823263396b ./gcc/ada/5itaprop.adb
-2428441881b ./gcc/ada/5itaspri.ads
- 258764448b ./gcc/ada/5ksystem.ads
- 801131281b ./gcc/ada/5kvxwork.ads
-3740352184b ./gcc/ada/5lintman.adb
-2092578045b ./gcc/ada/5lml-tgt.adb
-1560385947b ./gcc/ada/5losinte.ads
- 566581471b ./gcc/ada/5lsystem.ads
-3212004635b ./gcc/ada/5mosinte.ads
-2556228116b ./gcc/ada/5mvxwork.ads
-1277970924b ./gcc/ada/5ninmaop.adb
- 921618338b ./gcc/ada/5nintman.adb
-2773599964b ./gcc/ada/5nosinte.ads
-2606543337b ./gcc/ada/5ntaprop.adb
-3755362459b ./gcc/ada/5ntaspri.ads
-2203283165b ./gcc/ada/5ointerr.adb
-4214075066b ./gcc/ada/5omastop.adb
- 51561081b ./gcc/ada/5oosinte.adb
-3809744645b ./gcc/ada/5oosinte.ads
-2928684265b ./gcc/ada/5oosprim.adb
-2072280969b ./gcc/ada/5oparame.adb
-3575712341b ./gcc/ada/5osystem.ads
- 679733143b ./gcc/ada/5otaprop.adb
-1685662286b ./gcc/ada/5otaspri.ads
- 656589266b ./gcc/ada/5posinte.ads
-3394687510b ./gcc/ada/5posprim.adb
-1947102917b ./gcc/ada/5pvxwork.ads
-2218896062b ./gcc/ada/5qosinte.adb
- 147874672b ./gcc/ada/5qosinte.ads
- 487900047b ./gcc/ada/5qparame.ads
-1923594129b ./gcc/ada/5qstache.adb
-2941573152b ./gcc/ada/5qtaprop.adb
-3425306326b ./gcc/ada/5qtaspri.ads
-3925078434b ./gcc/ada/5qvxwork.ads
-3811279815b ./gcc/ada/5rosinte.adb
-4146733644b ./gcc/ada/5rosinte.ads
- 341619696b ./gcc/ada/5rparame.adb
-3395974413b ./gcc/ada/5sintman.adb
-2666853386b ./gcc/ada/5smastop.adb
- 946915847b ./gcc/ada/5sosinte.adb
-1686512140b ./gcc/ada/5sosinte.ads
-1089056181b ./gcc/ada/5sparame.adb
-1789906565b ./gcc/ada/5ssystem.ads
-1618657802b ./gcc/ada/5staprop.adb
-2345225497b ./gcc/ada/5stasinf.adb
-2933480236b ./gcc/ada/5stasinf.ads
-3413502572b ./gcc/ada/5staspri.ads
-1154412482b ./gcc/ada/5stpopse.adb
- 67524432b ./gcc/ada/5svxwork.ads
-3415155229b ./gcc/ada/5tosinte.ads
- 512605178b ./gcc/ada/5uintman.adb
-4009109831b ./gcc/ada/5uosinte.ads
- 20834007b ./gcc/ada/5vasthan.adb
-2828545983b ./gcc/ada/5vinmaop.adb
- 757746642b ./gcc/ada/5vinterr.adb
-3554377996b ./gcc/ada/5vintman.adb
-4186329246b ./gcc/ada/5vintman.ads
-1363122615b ./gcc/ada/5vmastop.adb
-2126801266b ./gcc/ada/5vosinte.adb
- 257481916b ./gcc/ada/5vosinte.ads
-2697009894b ./gcc/ada/5vosprim.adb
-3173364854b ./gcc/ada/5vosprim.ads
-1485530536b ./gcc/ada/5vparame.ads
- 477268412b ./gcc/ada/5vsystem.ads
- 880665297b ./gcc/ada/5vtaprop.adb
-2017768241b ./gcc/ada/5vtaspri.ads
-1524831970b ./gcc/ada/5vtpopde.adb
-2510422485b ./gcc/ada/5vtpopde.ads
-1323493335b ./gcc/ada/5vvaflop.adb
-2061622518b ./gcc/ada/5wgloloc.adb
-2867255266b ./gcc/ada/5wintman.adb
- 379035915b ./gcc/ada/5wmemory.adb
-1635278585b ./gcc/ada/5wosinte.ads
-2409163205b ./gcc/ada/5wosprim.adb
- 478208583b ./gcc/ada/5wsystem.ads
-3106892401b ./gcc/ada/5wtaprop.adb
-4085824633b ./gcc/ada/5wtaspri.ads
-3290324010b ./gcc/ada/5ysystem.ads
- 218453075b ./gcc/ada/5zinterr.adb
-2488090528b ./gcc/ada/5zintman.adb
-3420496615b ./gcc/ada/5zosinte.adb
- 217803163b ./gcc/ada/5zosinte.ads
-2386679201b ./gcc/ada/5zosprim.adb
-4153514169b ./gcc/ada/5zparame.ads
-2955891758b ./gcc/ada/5zsystem.ads
-1056290651b ./gcc/ada/5ztaprop.adb
-2493859349b ./gcc/ada/6vcpp.adb
-3764631364b ./gcc/ada/6vcstrea.adb
-1298363378b ./gcc/ada/6vinterf.ads
-4042684575b ./gcc/ada/7sinmaop.adb
- 784835892b ./gcc/ada/7sintman.adb
-3674994444b ./gcc/ada/7sosinte.adb
-1201544504b ./gcc/ada/7sosprim.adb
-2188892819b ./gcc/ada/7staprop.adb
-2314536447b ./gcc/ada/7staspri.ads
-2244813175b ./gcc/ada/7stpopsp.adb
-1360717481b ./gcc/ada/7straceb.adb
-1989930650b ./gcc/ada/86numaux.adb
-4223067829b ./gcc/ada/86numaux.ads
- 176063031b ./gcc/ada/9drpc.adb
-1238937539b ./gcc/ada/a-astaco.adb
-4160306902b ./gcc/ada/a-astaco.ads
-1228169839b ./gcc/ada/a-caldel.adb
-2176358398b ./gcc/ada/a-caldel.ads
-3780985610b ./gcc/ada/a-calend.adb
-3197442795b ./gcc/ada/a-calend.ads
-1974463316b ./gcc/ada/a-chahan.adb
-3292743834b ./gcc/ada/a-chahan.ads
- 825575293b ./gcc/ada/a-charac.ads
-3290669737b ./gcc/ada/a-chlat1.ads
-4141698919b ./gcc/ada/a-colien.adb
-1708206584b ./gcc/ada/a-colien.ads
-2886731379b ./gcc/ada/a-colire.adb
- 632756715b ./gcc/ada/a-colire.ads
-4188471995b ./gcc/ada/a-comlin.adb
-1346248274b ./gcc/ada/a-comlin.ads
-3629140421b ./gcc/ada/a-cwila1.ads
- 307313649b ./gcc/ada/ada.ads
-4047226521b ./gcc/ada/ada.h
- 885231182b ./gcc/ada/adaint.c
-2846678559b ./gcc/ada/adaint.h
- 512963659b ./gcc/ada/ada-tree.def
- 804772500b ./gcc/ada/ada-tree.h
-3138793590b ./gcc/ada/a-decima.adb
-1463764551b ./gcc/ada/a-decima.ads
-2965106267b ./gcc/ada/a-diocst.adb
-1351302553b ./gcc/ada/a-diocst.ads
-2204236254b ./gcc/ada/a-direio.adb
-2663951086b ./gcc/ada/a-direio.ads
-2899453035b ./gcc/ada/a-dynpri.adb
-1808034404b ./gcc/ada/a-dynpri.ads
-1930539183b ./gcc/ada/a-einuoc.adb
-2923383870b ./gcc/ada/a-einuoc.ads
-3811259854b ./gcc/ada/a-except.adb
-4208405793b ./gcc/ada/a-except.ads
-4151617553b ./gcc/ada/a-excpol.adb
-1040381731b ./gcc/ada/a-exctra.adb
- 87828562b ./gcc/ada/a-exctra.ads
-2225675502b ./gcc/ada/a-filico.adb
-3260597455b ./gcc/ada/a-filico.ads
- 907923324b ./gcc/ada/a-finali.adb
-3572535024b ./gcc/ada/a-finali.ads
-2422945006b ./gcc/ada/a-flteio.ads
-3013254494b ./gcc/ada/a-fwteio.ads
-1706398574b ./gcc/ada/a-inteio.ads
-2001069544b ./gcc/ada/a-interr.adb
-2400554368b ./gcc/ada/a-interr.ads
-3855829577b ./gcc/ada/a-intnam.ads
-1774182036b ./gcc/ada/a-intsig.adb
-2389005781b ./gcc/ada/a-intsig.ads
-2978442327b ./gcc/ada/a-ioexce.ads
-2820771598b ./gcc/ada/a-iwteio.ads
-2695025338b ./gcc/ada/a-lfteio.ads
- 68898824b ./gcc/ada/a-lfwtio.ads
-1582815074b ./gcc/ada/ali.adb
-1110656306b ./gcc/ada/ali.ads
-3958947062b ./gcc/ada/a-liteio.ads
-3701505690b ./gcc/ada/ali-util.adb
- 534404399b ./gcc/ada/ali-util.ads
-3989352502b ./gcc/ada/a-liwtio.ads
- 706064852b ./gcc/ada/a-llftio.ads
-1760483522b ./gcc/ada/a-llfwti.ads
-1685529166b ./gcc/ada/a-llitio.ads
-1092110807b ./gcc/ada/a-lliwti.ads
-1648510288b ./gcc/ada/alloc.ads
-3751218976b ./gcc/ada/a-ncelfu.ads
-3307386742b ./gcc/ada/a-ngcefu.adb
-3410028763b ./gcc/ada/a-ngcefu.ads
-1098245021b ./gcc/ada/a-ngcoty.adb
-3206810014b ./gcc/ada/a-ngcoty.ads
-3316580416b ./gcc/ada/a-ngelfu.adb
-3094594364b ./gcc/ada/a-ngelfu.ads
- 238508204b ./gcc/ada/a-nlcefu.ads
-4084493045b ./gcc/ada/a-nlcoty.ads
-2627472219b ./gcc/ada/a-nlelfu.ads
-4117474264b ./gcc/ada/a-nllcef.ads
-2318923524b ./gcc/ada/a-nllcty.ads
-2611968609b ./gcc/ada/a-nllefu.ads
-1082074441b ./gcc/ada/a-nscefu.ads
-3357121256b ./gcc/ada/a-nscoty.ads
-3712559791b ./gcc/ada/a-nselfu.ads
-1597516775b ./gcc/ada/a-nucoty.ads
-1662364886b ./gcc/ada/a-nudira.adb
-3453922662b ./gcc/ada/a-nudira.ads
-4261702712b ./gcc/ada/a-nuelfu.ads
-2981834359b ./gcc/ada/a-nuflra.adb
- 197186767b ./gcc/ada/a-nuflra.ads
-3913215245b ./gcc/ada/a-numaux.ads
-1796312085b ./gcc/ada/a-numeri.ads
-1699976913b ./gcc/ada/a-reatim.adb
-2826402039b ./gcc/ada/a-reatim.ads
-4184054556b ./gcc/ada/a-retide.adb
-1321308146b ./gcc/ada/a-retide.ads
- 151152579b ./gcc/ada/argv.c
-4225555660b ./gcc/ada/a-sequio.adb
-3093499209b ./gcc/ada/a-sequio.ads
- 201813662b ./gcc/ada/a-sfteio.ads
- 768813005b ./gcc/ada/a-sfwtio.ads
-3107027497b ./gcc/ada/a-siocst.adb
-4067781141b ./gcc/ada/a-siocst.ads
-2998945311b ./gcc/ada/a-siteio.ads
- 764480998b ./gcc/ada/a-siwtio.ads
- 164767602b ./gcc/ada/a-ssicst.adb
-2673543741b ./gcc/ada/a-ssicst.ads
- 6703000b ./gcc/ada/a-ssitio.ads
- 597839343b ./gcc/ada/a-ssiwti.ads
- 358760311b ./gcc/ada/a-stmaco.ads
-3991680331b ./gcc/ada/a-storio.adb
-3996647403b ./gcc/ada/a-storio.ads
- 850701758b ./gcc/ada/a-strbou.adb
- 209100723b ./gcc/ada/a-strbou.ads
-2712052749b ./gcc/ada/a-stream.ads
-3445389326b ./gcc/ada/a-strfix.adb
-2291830284b ./gcc/ada/a-strfix.ads
-3358703553b ./gcc/ada/a-string.ads
-1074484976b ./gcc/ada/a-strmap.adb
-3962780233b ./gcc/ada/a-strmap.ads
-2443268654b ./gcc/ada/a-strsea.adb
- 294757473b ./gcc/ada/a-strsea.ads
-1067561841b ./gcc/ada/a-strunb.adb
-4156134282b ./gcc/ada/a-strunb.ads
-4032395003b ./gcc/ada/a-ststio.adb
-1884417935b ./gcc/ada/a-ststio.ads
-3010897568b ./gcc/ada/a-stunau.adb
-3715203779b ./gcc/ada/a-stunau.ads
-2054174824b ./gcc/ada/a-stwibo.adb
- 744358246b ./gcc/ada/a-stwibo.ads
-3330826391b ./gcc/ada/a-stwifi.adb
-2923302688b ./gcc/ada/a-stwifi.ads
-3258659279b ./gcc/ada/a-stwima.adb
-1429080954b ./gcc/ada/a-stwima.ads
-1405535584b ./gcc/ada/a-stwise.adb
-2375036092b ./gcc/ada/a-stwise.ads
-3573494769b ./gcc/ada/a-stwiun.adb
-4063750480b ./gcc/ada/a-stwiun.ads
-1857462924b ./gcc/ada/a-suteio.adb
- 988077225b ./gcc/ada/a-suteio.ads
-3427083052b ./gcc/ada/a-swmwco.ads
- 247624637b ./gcc/ada/a-swuwti.adb
-1326104524b ./gcc/ada/a-swuwti.ads
-3992727238b ./gcc/ada/a-sytaco.adb
-4059971314b ./gcc/ada/a-sytaco.ads
-2394326814b ./gcc/ada/a-tags.adb
-3486033137b ./gcc/ada/a-tags.ads
-1194894578b ./gcc/ada/a-tasatt.adb
-2943432852b ./gcc/ada/a-tasatt.ads
-2912651322b ./gcc/ada/a-taside.adb
- 646153741b ./gcc/ada/a-taside.ads
-3438800004b ./gcc/ada/a-teioed.adb
-1748001536b ./gcc/ada/a-teioed.ads
-1427379759b ./gcc/ada/a-textio.adb
-1210750137b ./gcc/ada/a-textio.ads
-1749119361b ./gcc/ada/a-ticoau.adb
-2222697472b ./gcc/ada/a-ticoau.ads
-1221231446b ./gcc/ada/a-ticoio.adb
-1223874862b ./gcc/ada/a-ticoio.ads
-4279581986b ./gcc/ada/a-tideau.adb
- 434050393b ./gcc/ada/a-tideau.ads
-2037256210b ./gcc/ada/a-tideio.adb
-1718502310b ./gcc/ada/a-tideio.ads
- 529543928b ./gcc/ada/a-tienau.adb
-3941439160b ./gcc/ada/a-tienau.ads
-3371851163b ./gcc/ada/a-tienio.adb
-3974972174b ./gcc/ada/a-tienio.ads
-4188977439b ./gcc/ada/a-tifiio.adb
-1786065440b ./gcc/ada/a-tifiio.ads
-3558731868b ./gcc/ada/a-tiflau.adb
-1745997125b ./gcc/ada/a-tiflau.ads
-1485143016b ./gcc/ada/a-tiflio.adb
-3470894323b ./gcc/ada/a-tiflio.ads
-3323143227b ./gcc/ada/a-tigeau.adb
-1729452158b ./gcc/ada/a-tigeau.ads
-3932871049b ./gcc/ada/a-tiinau.adb
-2369391467b ./gcc/ada/a-tiinau.ads
-1924191553b ./gcc/ada/a-tiinio.adb
-2729601893b ./gcc/ada/a-tiinio.ads
- 934261002b ./gcc/ada/a-timoau.adb
-1113536362b ./gcc/ada/a-timoau.ads
-4264051069b ./gcc/ada/a-timoio.adb
- 805418156b ./gcc/ada/a-timoio.ads
-3870116277b ./gcc/ada/a-tiocst.adb
-1562031680b ./gcc/ada/a-tiocst.ads
- 622798727b ./gcc/ada/a-titest.adb
-1725647162b ./gcc/ada/a-titest.ads
-2460925843b ./gcc/ada/atree.adb
-1541614871b ./gcc/ada/atree.ads
-1078226318b ./gcc/ada/atree.h
- 278716747b ./gcc/ada/a-unccon.ads
-1157859592b ./gcc/ada/a-uncdea.ads
-3576417048b ./gcc/ada/a-witeio.adb
-3179602980b ./gcc/ada/a-witeio.ads
-3259356202b ./gcc/ada/a-wtcoau.adb
-4157240054b ./gcc/ada/a-wtcoau.ads
-2649721481b ./gcc/ada/a-wtcoio.adb
-3041062214b ./gcc/ada/a-wtcoio.ads
-2350995641b ./gcc/ada/a-wtcstr.adb
-4151370387b ./gcc/ada/a-wtcstr.ads
- 737993830b ./gcc/ada/a-wtdeau.adb
-1297223500b ./gcc/ada/a-wtdeau.ads
- 317498445b ./gcc/ada/a-wtdeio.adb
-2698675362b ./gcc/ada/a-wtdeio.ads
-1920359111b ./gcc/ada/a-wtedit.adb
-4233035352b ./gcc/ada/a-wtedit.ads
-3733610031b ./gcc/ada/a-wtenau.adb
-1209649592b ./gcc/ada/a-wtenau.ads
-1772371901b ./gcc/ada/a-wtenio.adb
-3345087568b ./gcc/ada/a-wtenio.ads
-3955231020b ./gcc/ada/a-wtfiio.adb
-2966383122b ./gcc/ada/a-wtfiio.ads
-3172802882b ./gcc/ada/a-wtflau.adb
-2847914558b ./gcc/ada/a-wtflau.ads
-1430031960b ./gcc/ada/a-wtflio.adb
-3504471884b ./gcc/ada/a-wtflio.ads
- 146615287b ./gcc/ada/a-wtgeau.adb
-3202407425b ./gcc/ada/a-wtgeau.ads
-1556046286b ./gcc/ada/a-wtinau.adb
- 620705682b ./gcc/ada/a-wtinau.ads
-3330610374b ./gcc/ada/a-wtinio.adb
-1587983670b ./gcc/ada/a-wtinio.ads
- 585816566b ./gcc/ada/a-wtmoau.adb
-2360842842b ./gcc/ada/a-wtmoau.ads
-2728837322b ./gcc/ada/a-wtmoio.adb
- 994042627b ./gcc/ada/a-wtmoio.ads
- 10193259b ./gcc/ada/a-wttest.adb
-3792433389b ./gcc/ada/a-wttest.ads
-3092527849b ./gcc/ada/back_end.adb
- 477747165b ./gcc/ada/back_end.ads
- 554760143b ./gcc/ada/bcheck.adb
-1423149518b ./gcc/ada/bcheck.ads
- 603483282b ./gcc/ada/binde.adb
- 608595938b ./gcc/ada/binde.ads
-3034016752b ./gcc/ada/binderr.adb
- 861498600b ./gcc/ada/binderr.ads
-3217748288b ./gcc/ada/bindgen.adb
-3453434027b ./gcc/ada/bindgen.ads
- 715016497b ./gcc/ada/bindusg.adb
-2507691128b ./gcc/ada/bindusg.ads
-1055153314b ./gcc/ada/butil.adb
-2616385499b ./gcc/ada/butil.ads
- 322199477b ./gcc/ada/cal.c
-3874049157b ./gcc/ada/calendar.ads
-3825818772b ./gcc/ada/casing.adb
-2190810584b ./gcc/ada/casing.ads
-3750437973b ./gcc/ada/ceinfo.adb
-2529867828b ./gcc/ada/ChangeLog
- 869185536b ./gcc/ada/checks.adb
- 440073759b ./gcc/ada/checks.ads
- 401488734b ./gcc/ada/cio.c
-1870694279b ./gcc/ada/comperr.adb
-1643780092b ./gcc/ada/comperr.ads
-1676023100b ./gcc/ada/config-lang.in
-3110809717b ./gcc/ada/csets.adb
- 519863585b ./gcc/ada/csets.ads
-1124381824b ./gcc/ada/csinfo.adb
- 853889379b ./gcc/ada/cstand.adb
- 276146343b ./gcc/ada/cstand.ads
-1520807724b ./gcc/ada/cstreams.c
-1822736202b ./gcc/ada/cuintp.c
- 579009580b ./gcc/ada/debug_a.adb
- 799315376b ./gcc/ada/debug_a.ads
-2435692819b ./gcc/ada/debug.adb
- 638126818b ./gcc/ada/debug.ads
-1459266024b ./gcc/ada/dec.ads
-3565371015b ./gcc/ada/dec-io.adb
-2106947862b ./gcc/ada/dec-io.ads
-2132162623b ./gcc/ada/decl.c
-1390338918b ./gcc/ada/deftarg.c
-1749835375b ./gcc/ada/directio.ads
-2461185080b ./gcc/ada/einfo.adb
-3725314637b ./gcc/ada/einfo.ads
-1040486350b ./gcc/ada/einfo.h
-3827088848b ./gcc/ada/elists.adb
-2003740348b ./gcc/ada/elists.ads
-1105190374b ./gcc/ada/elists.h
- 204753916b ./gcc/ada/errno.c
-4008402022b ./gcc/ada/errout.adb
- 320928564b ./gcc/ada/errout.ads
-2999271413b ./gcc/ada/eval_fat.adb
-2463431696b ./gcc/ada/eval_fat.ads
-3517544739b ./gcc/ada/exit.c
-2311141325b ./gcc/ada/exp_aggr.adb
-2860900195b ./gcc/ada/exp_aggr.ads
-2681017510b ./gcc/ada/expander.adb
-2575484225b ./gcc/ada/expander.ads
-2455995554b ./gcc/ada/exp_attr.adb
-2274665870b ./gcc/ada/exp_attr.ads
-3788438274b ./gcc/ada/exp_ch10.ads
-1959020568b ./gcc/ada/exp_ch11.adb
-1356092263b ./gcc/ada/exp_ch11.ads
-2662303632b ./gcc/ada/exp_ch12.adb
-1677837106b ./gcc/ada/exp_ch12.ads
-1201493881b ./gcc/ada/exp_ch13.adb
-2523628624b ./gcc/ada/exp_ch13.ads
-2836932963b ./gcc/ada/exp_ch2.adb
-1920342641b ./gcc/ada/exp_ch2.ads
-2780430528b ./gcc/ada/exp_ch3.adb
-3277988254b ./gcc/ada/exp_ch3.ads
- 423127048b ./gcc/ada/exp_ch4.adb
- 630544925b ./gcc/ada/exp_ch4.ads
-1300859159b ./gcc/ada/exp_ch5.adb
-3884008715b ./gcc/ada/exp_ch5.ads
-1421574227b ./gcc/ada/exp_ch6.adb
-2978408620b ./gcc/ada/exp_ch6.ads
-1516530505b ./gcc/ada/exp_ch7.adb
-4029388464b ./gcc/ada/exp_ch7.ads
- 806341254b ./gcc/ada/exp_ch8.adb
-2493548378b ./gcc/ada/exp_ch8.ads
- 947069359b ./gcc/ada/exp_ch9.adb
-3130662329b ./gcc/ada/exp_ch9.ads
-2689298271b ./gcc/ada/exp_code.adb
-3591911170b ./gcc/ada/exp_code.ads
-3574458760b ./gcc/ada/exp_dbug.adb
-4105290806b ./gcc/ada/exp_dbug.ads
-3835417459b ./gcc/ada/exp_disp.adb
-1460989777b ./gcc/ada/exp_disp.ads
-4152673151b ./gcc/ada/exp_dist.adb
-2224744101b ./gcc/ada/exp_dist.ads
- 196370175b ./gcc/ada/expect.c
-2380394819b ./gcc/ada/exp_fixd.adb
-2971633787b ./gcc/ada/exp_fixd.ads
- 383808865b ./gcc/ada/exp_imgv.adb
- 107414456b ./gcc/ada/exp_imgv.ads
- 533490453b ./gcc/ada/exp_intr.adb
- 603944530b ./gcc/ada/exp_intr.ads
-1223570350b ./gcc/ada/exp_pakd.adb
-3169217058b ./gcc/ada/exp_pakd.ads
- 561903948b ./gcc/ada/exp_prag.adb
-2726623065b ./gcc/ada/exp_prag.ads
-2694622276b ./gcc/ada/exp_smem.adb
-4102883600b ./gcc/ada/exp_smem.ads
-3367849671b ./gcc/ada/exp_strm.adb
- 508903407b ./gcc/ada/exp_strm.ads
-4061285632b ./gcc/ada/exp_tss.adb
- 802174414b ./gcc/ada/exp_tss.ads
-4294889971b ./gcc/ada/exp_util.adb
-2588841819b ./gcc/ada/exp_util.ads
- 732650724b ./gcc/ada/exp_vfpt.adb
-3158703166b ./gcc/ada/exp_vfpt.ads
-3730235790b ./gcc/ada/fe.h
- 742167588b ./gcc/ada/final.c
-2410826795b ./gcc/ada/fmap.adb
-1989849769b ./gcc/ada/fmap.ads
-4193711832b ./gcc/ada/fname.adb
-3581054847b ./gcc/ada/fname.ads
-2554721004b ./gcc/ada/fname-sf.adb
-3385587425b ./gcc/ada/fname-sf.ads
- 152433494b ./gcc/ada/fname-uf.adb
-2869979673b ./gcc/ada/fname-uf.ads
- 165073793b ./gcc/ada/freeze.adb
- 286956192b ./gcc/ada/freeze.ads
- 146613934b ./gcc/ada/frontend.adb
-1342421440b ./gcc/ada/frontend.ads
-4158577973b ./gcc/ada/g-awk.adb
- 609310253b ./gcc/ada/g-awk.ads
- 606317350b ./gcc/ada/g-busora.adb
-2327940372b ./gcc/ada/g-busora.ads
- 614263783b ./gcc/ada/g-busorg.adb
-2383765954b ./gcc/ada/g-busorg.ads
-2310918787b ./gcc/ada/g-calend.adb
- 775102218b ./gcc/ada/g-calend.ads
-4188678555b ./gcc/ada/g-casuti.adb
-1046751589b ./gcc/ada/g-casuti.ads
-2508275788b ./gcc/ada/g-catiio.adb
-1700304817b ./gcc/ada/g-catiio.ads
- 153263812b ./gcc/ada/g-cgi.adb
- 491501987b ./gcc/ada/g-cgi.ads
-1552120806b ./gcc/ada/g-cgicoo.adb
- 514376152b ./gcc/ada/g-cgicoo.ads
-2079055740b ./gcc/ada/g-cgideb.adb
-3073151229b ./gcc/ada/g-cgideb.ads
-1337328080b ./gcc/ada/g-comlin.adb
- 762947182b ./gcc/ada/g-comlin.ads
-3063697563b ./gcc/ada/g-crc32.adb
-4042174606b ./gcc/ada/g-crc32.ads
- 123778282b ./gcc/ada/g-curexc.ads
-1009530951b ./gcc/ada/g-debpoo.adb
-2797049575b ./gcc/ada/g-debpoo.ads
-2483821241b ./gcc/ada/g-debuti.adb
-2759144883b ./gcc/ada/g-debuti.ads
-1479126304b ./gcc/ada/g-diopit.adb
-2613579847b ./gcc/ada/g-diopit.ads
-1351705587b ./gcc/ada/g-dirope.adb
-1843551212b ./gcc/ada/g-dirope.ads
-2129456205b ./gcc/ada/g-dyntab.adb
-2301313958b ./gcc/ada/g-dyntab.ads
-2000619828b ./gcc/ada/get_targ.adb
-4235434426b ./gcc/ada/get_targ.ads
- 240250153b ./gcc/ada/g-except.ads
- 311327188b ./gcc/ada/g-exctra.adb
- 696104010b ./gcc/ada/g-exctra.ads
-2021399770b ./gcc/ada/g-expect.adb
-3670453648b ./gcc/ada/g-expect.ads
- 115710627b ./gcc/ada/g-flocon.ads
-1241285700b ./gcc/ada/g-hesora.adb
-1954443348b ./gcc/ada/g-hesora.ads
-2162133654b ./gcc/ada/g-hesorg.adb
-1899093730b ./gcc/ada/g-hesorg.ads
- 615231546b ./gcc/ada/g-htable.adb
-1147404231b ./gcc/ada/g-htable.ads
-3771528129b ./gcc/ada/gigi.h
-4074378557b ./gcc/ada/g-io.adb
-2059397144b ./gcc/ada/g-io.ads
-3075502902b ./gcc/ada/g-io_aux.adb
-2987271187b ./gcc/ada/g-io_aux.ads
-2315560945b ./gcc/ada/g-locfil.adb
-3845793000b ./gcc/ada/g-locfil.ads
-3781796779b ./gcc/ada/gmem.c
-2382601227b ./gcc/ada/g-moreex.adb
-1324668450b ./gcc/ada/g-moreex.ads
-3331018174b ./gcc/ada/gnat1drv.adb
-1236781124b ./gcc/ada/gnat1drv.ads
-3338432106b ./gcc/ada/gnat.ads
-2299667202b ./gcc/ada/gnatbind.adb
- 104731427b ./gcc/ada/gnatbind.ads
-4059170038b ./gcc/ada/gnatbl.c
-3226234054b ./gcc/ada/gnatchop.adb
-3118972477b ./gcc/ada/gnatcmd.adb
-3908617844b ./gcc/ada/gnatcmd.ads
-2796597452b ./gcc/ada/gnatdll.adb
-1086468102b ./gcc/ada/gnatfind.adb
-3373987329b ./gcc/ada/gnatkr.adb
-3373093353b ./gcc/ada/gnatkr.ads
- 616714676b ./gcc/ada/gnatlbr.adb
-2504670692b ./gcc/ada/gnatlink.adb
-2544717462b ./gcc/ada/gnatlink.ads
-4282914717b ./gcc/ada/gnatls.adb
-1758666063b ./gcc/ada/gnatls.ads
-1542183559b ./gcc/ada/gnatmain.adb
-3283765307b ./gcc/ada/gnatmain.ads
-2033004516b ./gcc/ada/gnatmake.adb
- 145840748b ./gcc/ada/gnatmake.ads
-1758767486b ./gcc/ada/gnatmem.adb
-2813528580b ./gcc/ada/gnatprep.adb
-2835105488b ./gcc/ada/gnatprep.ads
-3865862564b ./gcc/ada/gnatpsta.adb
-3829654473b ./gcc/ada/gnatpsys.adb
-2787179765b ./gcc/ada/gnat_rm.texi
-1099903949b ./gcc/ada/gnat-style.texi
-3866519797b ./gcc/ada/gnat_ug.texi
-2880471508b ./gcc/ada/gnatvsn.ads
-2692053620b ./gcc/ada/gnatxref.adb
-1804647254b ./gcc/ada/g-os_lib.adb
-3221085683b ./gcc/ada/g-os_lib.ads
-1185528967b ./gcc/ada/g-regexp.adb
-1629361223b ./gcc/ada/g-regexp.ads
-3390523966b ./gcc/ada/g-regist.adb
-3208719885b ./gcc/ada/g-regist.ads
-1577468709b ./gcc/ada/g-regpat.adb
- 582026880b ./gcc/ada/g-regpat.ads
-2451205314b ./gcc/ada/g-soccon.ads
-2575242004b ./gcc/ada/g-socket.adb
-1535656165b ./gcc/ada/g-socket.ads
-2293859502b ./gcc/ada/g-socthi.adb
- 651912058b ./gcc/ada/g-socthi.ads
-3350030780b ./gcc/ada/g-soliop.ads
- 758288908b ./gcc/ada/g-souinf.ads
- 581975334b ./gcc/ada/g-speche.adb
-2314638139b ./gcc/ada/g-speche.ads
-2855842118b ./gcc/ada/g-spipat.adb
- 791106872b ./gcc/ada/g-spipat.ads
-3318271323b ./gcc/ada/g-spitbo.adb
- 605302019b ./gcc/ada/g-spitbo.ads
-2302115365b ./gcc/ada/g-sptabo.ads
- 795251741b ./gcc/ada/g-sptain.ads
-2860049437b ./gcc/ada/g-sptavs.ads
-2522673043b ./gcc/ada/g-table.adb
-4247473857b ./gcc/ada/g-table.ads
- 963828728b ./gcc/ada/g-tasloc.adb
-3443589956b ./gcc/ada/g-tasloc.ads
-4222037032b ./gcc/ada/g-thread.adb
-2926605455b ./gcc/ada/g-thread.ads
-1214503882b ./gcc/ada/g-traceb.adb
-3641101501b ./gcc/ada/g-traceb.ads
-4093206552b ./gcc/ada/g-trasym.adb
- 344030511b ./gcc/ada/g-trasym.ads
- 577038397b ./gcc/ada/hlo.adb
- 991320325b ./gcc/ada/hlo.ads
-1962035170b ./gcc/ada/hostparm.ads
-2031335613b ./gcc/ada/i-c.adb
-1630163220b ./gcc/ada/i-c.ads
-1541946831b ./gcc/ada/i-cexten.ads
-3090969270b ./gcc/ada/i-cobol.adb
-2496712247b ./gcc/ada/i-cobol.ads
-2325074871b ./gcc/ada/i-cpoint.adb
-1699793483b ./gcc/ada/i-cpoint.ads
- 214865019b ./gcc/ada/i-cpp.adb
-2912941503b ./gcc/ada/i-cpp.ads
-3140439521b ./gcc/ada/i-cstrea.adb
-1842827516b ./gcc/ada/i-cstrea.ads
-1294230726b ./gcc/ada/i-cstrin.adb
-3630365631b ./gcc/ada/i-cstrin.ads
-3233154322b ./gcc/ada/i-fortra.adb
-3862297824b ./gcc/ada/i-fortra.ads
-2205213686b ./gcc/ada/impunit.adb
-3867557683b ./gcc/ada/impunit.ads
-1455106367b ./gcc/ada/init.c
-2729724075b ./gcc/ada/inline.adb
- 409617942b ./gcc/ada/inline.ads
-2710275605b ./gcc/ada/interfac.ads
- 304019218b ./gcc/ada/io-aux.c
- 182695114b ./gcc/ada/ioexcept.ads
-2660299838b ./gcc/ada/i-os2err.ads
-1001031450b ./gcc/ada/i-os2lib.adb
-3863909326b ./gcc/ada/i-os2lib.ads
-2629699505b ./gcc/ada/i-os2syn.ads
-2757162007b ./gcc/ada/i-os2thr.ads
- 10095810b ./gcc/ada/i-pacdec.adb
-4204365106b ./gcc/ada/i-pacdec.ads
-3730121014b ./gcc/ada/itypes.adb
-1791965281b ./gcc/ada/itypes.ads
-2079820695b ./gcc/ada/i-vxwork.ads
-1636222037b ./gcc/ada/krunch.adb
-3193149413b ./gcc/ada/krunch.ads
-3877739435b ./gcc/ada/lang-options.h
-2419758820b ./gcc/ada/lang-specs.h
- 731292528b ./gcc/ada/layout.adb
-2930468142b ./gcc/ada/layout.ads
-1029825782b ./gcc/ada/lib.adb
-1122008701b ./gcc/ada/lib.ads
-3615838165b ./gcc/ada/lib-list.adb
- 13730108b ./gcc/ada/lib-load.adb
-2583052213b ./gcc/ada/lib-load.ads
-1127145456b ./gcc/ada/lib-sort.adb
-1302172495b ./gcc/ada/lib-util.adb
-1970877184b ./gcc/ada/lib-util.ads
-1719338144b ./gcc/ada/lib-writ.adb
-3384492892b ./gcc/ada/lib-writ.ads
-1654030036b ./gcc/ada/lib-xref.adb
-2167962937b ./gcc/ada/lib-xref.ads
-3576767122b ./gcc/ada/link.c
-1382287720b ./gcc/ada/live.adb
- 241788297b ./gcc/ada/live.ads
-2349274909b ./gcc/ada/machcode.ads
-1702260548b ./gcc/ada/make.adb
-3505443302b ./gcc/ada/make.ads
- 82447397b ./gcc/ada/Makefile.adalib
-2651233511b ./gcc/ada/Makefile.in
-1732491936b ./gcc/ada/Make-lang.in
-2073972201b ./gcc/ada/makeusg.adb
-2946385998b ./gcc/ada/makeusg.ads
-1369191481b ./gcc/ada/math_lib.adb
-3431850830b ./gcc/ada/mdll.adb
-3403824619b ./gcc/ada/mdll.ads
- 63072210b ./gcc/ada/mdllfile.adb
-1377024247b ./gcc/ada/mdllfile.ads
- 271650509b ./gcc/ada/mdlltool.adb
-3822656791b ./gcc/ada/mdlltool.ads
-2562707248b ./gcc/ada/memroot.adb
-3394187078b ./gcc/ada/memroot.ads
-3285031453b ./gcc/ada/memtrack.adb
-2151760376b ./gcc/ada/misc.c
-2389340576b ./gcc/ada/mlib.adb
-3760284379b ./gcc/ada/mlib.ads
-3038778953b ./gcc/ada/mlib-fil.adb
-1806810212b ./gcc/ada/mlib-fil.ads
- 222091384b ./gcc/ada/mlib-prj.adb
-2968654783b ./gcc/ada/mlib-prj.ads
- 882896001b ./gcc/ada/mlib-tgt.adb
-3995257659b ./gcc/ada/mlib-tgt.ads
- 557486163b ./gcc/ada/mlib-utl.adb
-3132611148b ./gcc/ada/mlib-utl.ads
-2192832241b ./gcc/ada/namet.adb
-4115408171b ./gcc/ada/namet.ads
-1021113274b ./gcc/ada/namet.h
-2786583125b ./gcc/ada/nlists.adb
-3207616321b ./gcc/ada/nlists.ads
-4207230567b ./gcc/ada/nlists.h
-1668172920b ./gcc/ada/nmake.adb
-3530016949b ./gcc/ada/nmake.ads
- 810039548b ./gcc/ada/nmake.adt
- 603482997b ./gcc/ada/opt.adb
- 272528391b ./gcc/ada/opt.ads
- 757957959b ./gcc/ada/osint.adb
- 124998996b ./gcc/ada/osint.ads
-1444051127b ./gcc/ada/output.adb
-4192286483b ./gcc/ada/output.ads
- 667325059b ./gcc/ada/par.adb
- 890918457b ./gcc/ada/par.ads
- 286171607b ./gcc/ada/par-ch10.adb
- 82263454b ./gcc/ada/par-ch11.adb
- 977429014b ./gcc/ada/par-ch12.adb
-1605568863b ./gcc/ada/par-ch13.adb
-2759284176b ./gcc/ada/par-ch2.adb
-3744247741b ./gcc/ada/par-ch3.adb
-2502332261b ./gcc/ada/par-ch4.adb
-2508708623b ./gcc/ada/par-ch5.adb
-3460173897b ./gcc/ada/par-ch6.adb
-2558917702b ./gcc/ada/par-ch7.adb
-1991687801b ./gcc/ada/par-ch8.adb
-2902683544b ./gcc/ada/par-ch9.adb
-1736379569b ./gcc/ada/par-endh.adb
-2386370437b ./gcc/ada/par-labl.adb
-2191110385b ./gcc/ada/par-load.adb
-3989665290b ./gcc/ada/par-prag.adb
-2061902000b ./gcc/ada/par-sync.adb
-3034220935b ./gcc/ada/par-tchk.adb
- 435842982b ./gcc/ada/par-util.adb
-2681846287b ./gcc/ada/prj.adb
-2159508649b ./gcc/ada/prj.ads
- 769972278b ./gcc/ada/prj-attr.adb
-1517107046b ./gcc/ada/prj-attr.ads
-2579476649b ./gcc/ada/prj-com.adb
-4188434019b ./gcc/ada/prj-com.ads
-1445752564b ./gcc/ada/prj-dect.adb
-2054972414b ./gcc/ada/prj-dect.ads
-2978271615b ./gcc/ada/prj-env.adb
-3039443255b ./gcc/ada/prj-env.ads
-2914671733b ./gcc/ada/prj-ext.adb
-2463218682b ./gcc/ada/prj-ext.ads
-2361570952b ./gcc/ada/prj-nmsc.adb
-1462185546b ./gcc/ada/prj-nmsc.ads
-1324893907b ./gcc/ada/prj-pars.adb
-1278172108b ./gcc/ada/prj-pars.ads
-3627484519b ./gcc/ada/prj-part.adb
-3249280050b ./gcc/ada/prj-part.ads
-4152265411b ./gcc/ada/prj-proc.adb
-2864536023b ./gcc/ada/prj-proc.ads
-3885810048b ./gcc/ada/prj-strt.adb
- 463253586b ./gcc/ada/prj-strt.ads
-2752403718b ./gcc/ada/prj-tree.adb
-4172539515b ./gcc/ada/prj-tree.ads
- 195833379b ./gcc/ada/prj-util.adb
-2190751868b ./gcc/ada/prj-util.ads
-1173868787b ./gcc/ada/raise.c
- 137228817b ./gcc/ada/raise.h
-2480259783b ./gcc/ada/repinfo.adb
- 638755227b ./gcc/ada/repinfo.ads
-3072671705b ./gcc/ada/repinfo.h
-1399693331b ./gcc/ada/restrict.adb
-2826035214b ./gcc/ada/restrict.ads
-1958872377b ./gcc/ada/rident.ads
- 685615765b ./gcc/ada/rtsfind.adb
- 944636897b ./gcc/ada/rtsfind.ads
-2934207681b ./gcc/ada/s-addima.adb
-2921793700b ./gcc/ada/s-addima.ads
-3133788426b ./gcc/ada/s-arit64.adb
- 139066661b ./gcc/ada/s-arit64.ads
-2146399349b ./gcc/ada/s-assert.adb
-2467675233b ./gcc/ada/s-assert.ads
-2471473947b ./gcc/ada/s-asthan.adb
-1425755957b ./gcc/ada/s-asthan.ads
-3345093947b ./gcc/ada/s-atacco.adb
- 274791225b ./gcc/ada/s-atacco.ads
-1268162914b ./gcc/ada/s-auxdec.adb
-3265586513b ./gcc/ada/s-auxdec.ads
-1722353021b ./gcc/ada/s-bitops.adb
-2501304200b ./gcc/ada/s-bitops.ads
- 468056045b ./gcc/ada/scans.adb
- 815846534b ./gcc/ada/scans.ads
- 368971619b ./gcc/ada/s-chepoo.ads
-2107362337b ./gcc/ada/scn.adb
- 643548576b ./gcc/ada/scn.ads
-3089102575b ./gcc/ada/scn-nlit.adb
-4137585658b ./gcc/ada/scn-slit.adb
-2083911466b ./gcc/ada/s-crc32.adb
-3182978663b ./gcc/ada/s-crc32.ads
-1550561834b ./gcc/ada/sdefault.ads
- 353869099b ./gcc/ada/s-direio.adb
- 309988644b ./gcc/ada/s-direio.ads
-3951057432b ./gcc/ada/sem.adb
-1409686204b ./gcc/ada/sem.ads
- 666790856b ./gcc/ada/sem_aggr.adb
- 526541988b ./gcc/ada/sem_aggr.ads
-3591099921b ./gcc/ada/sem_attr.adb
-2192022517b ./gcc/ada/sem_attr.ads
-2483089446b ./gcc/ada/sem_case.adb
-1285698743b ./gcc/ada/sem_case.ads
-3650211808b ./gcc/ada/sem_cat.adb
-2960627583b ./gcc/ada/sem_cat.ads
-3310159843b ./gcc/ada/sem_ch10.adb
-1481985747b ./gcc/ada/sem_ch10.ads
-4010667392b ./gcc/ada/sem_ch11.adb
-1735222025b ./gcc/ada/sem_ch11.ads
- 248848194b ./gcc/ada/sem_ch12.adb
- 997879767b ./gcc/ada/sem_ch12.ads
-2493455042b ./gcc/ada/sem_ch13.adb
-3760013065b ./gcc/ada/sem_ch13.ads
-1035453033b ./gcc/ada/sem_ch2.adb
-2925796260b ./gcc/ada/sem_ch2.ads
- 256651025b ./gcc/ada/sem_ch3.adb
-3506394288b ./gcc/ada/sem_ch3.ads
-3342506445b ./gcc/ada/sem_ch4.adb
-3161721114b ./gcc/ada/sem_ch4.ads
- 425430463b ./gcc/ada/sem_ch5.adb
- 921448714b ./gcc/ada/sem_ch5.ads
-3940967835b ./gcc/ada/sem_ch6.adb
-3617379945b ./gcc/ada/sem_ch6.ads
- 806087534b ./gcc/ada/sem_ch7.adb
-2229285886b ./gcc/ada/sem_ch7.ads
-2675641382b ./gcc/ada/sem_ch8.adb
- 414296948b ./gcc/ada/sem_ch8.ads
-2226149000b ./gcc/ada/sem_ch9.adb
-2313393680b ./gcc/ada/sem_ch9.ads
-2789952266b ./gcc/ada/sem_disp.adb
-1522627489b ./gcc/ada/sem_disp.ads
- 705974316b ./gcc/ada/sem_dist.adb
-1442557709b ./gcc/ada/sem_dist.ads
-2065925155b ./gcc/ada/sem_elab.adb
- 618332011b ./gcc/ada/sem_elab.ads
-2796522258b ./gcc/ada/sem_elim.adb
-4083559357b ./gcc/ada/sem_elim.ads
-2582716150b ./gcc/ada/sem_eval.adb
-1067144441b ./gcc/ada/sem_eval.ads
-2566870177b ./gcc/ada/sem_intr.adb
-4270264978b ./gcc/ada/sem_intr.ads
- 626970173b ./gcc/ada/sem_maps.adb
-2624950393b ./gcc/ada/sem_maps.ads
-2004945865b ./gcc/ada/sem_mech.adb
- 727986888b ./gcc/ada/sem_mech.ads
- 211861215b ./gcc/ada/sem_prag.adb
- 692139933b ./gcc/ada/sem_prag.ads
-1680274646b ./gcc/ada/sem_res.adb
-4223338214b ./gcc/ada/sem_res.ads
-1966095667b ./gcc/ada/sem_smem.adb
-3543394119b ./gcc/ada/sem_smem.ads
- 54838574b ./gcc/ada/sem_type.adb
-1083645285b ./gcc/ada/sem_type.ads
-3315098834b ./gcc/ada/sem_util.adb
-3071381257b ./gcc/ada/sem_util.ads
- 512361512b ./gcc/ada/sem_vfpt.adb
-2796693707b ./gcc/ada/sem_vfpt.ads
-4155489467b ./gcc/ada/sem_warn.adb
-2670991982b ./gcc/ada/sem_warn.ads
-1802605744b ./gcc/ada/sequenio.ads
-2211683422b ./gcc/ada/s-errrep.adb
-1186812435b ./gcc/ada/s-errrep.ads
- 561621508b ./gcc/ada/s-except.ads
- 7350293b ./gcc/ada/s-exctab.adb
-1119186265b ./gcc/ada/s-exctab.ads
- 622864413b ./gcc/ada/s-exnflt.ads
-1352415346b ./gcc/ada/s-exngen.adb
-2596541002b ./gcc/ada/s-exngen.ads
-3390809287b ./gcc/ada/s-exnint.ads
-4092255620b ./gcc/ada/s-exnlfl.ads
-1474028514b ./gcc/ada/s-exnlin.ads
-3994054006b ./gcc/ada/s-exnllf.ads
-2680813188b ./gcc/ada/s-exnlli.ads
-1172996611b ./gcc/ada/s-exnsfl.ads
-2557413106b ./gcc/ada/s-exnsin.ads
-2820344349b ./gcc/ada/s-exnssi.ads
-4059331373b ./gcc/ada/s-expflt.ads
-3105649102b ./gcc/ada/s-expgen.adb
-4177327143b ./gcc/ada/s-expgen.ads
-2038272825b ./gcc/ada/s-expint.ads
-2921280512b ./gcc/ada/s-explfl.ads
-3409169717b ./gcc/ada/s-explin.ads
-1559471549b ./gcc/ada/s-expllf.ads
- 361819024b ./gcc/ada/s-explli.ads
-1136797591b ./gcc/ada/s-expllu.adb
-1070447422b ./gcc/ada/s-expllu.ads
-3783588084b ./gcc/ada/s-expmod.adb
-1306565465b ./gcc/ada/s-expmod.ads
-1935872355b ./gcc/ada/s-expsfl.ads
- 693874826b ./gcc/ada/s-expsin.ads
-3200711015b ./gcc/ada/s-expssi.ads
- 423463208b ./gcc/ada/s-expuns.adb
-1226202999b ./gcc/ada/s-expuns.ads
-3596082207b ./gcc/ada/s-fatflt.ads
- 152336698b ./gcc/ada/s-fatgen.adb
-3452704907b ./gcc/ada/s-fatgen.ads
- 518796998b ./gcc/ada/s-fatlfl.ads
- 177868014b ./gcc/ada/s-fatllf.ads
-1844976187b ./gcc/ada/s-fatsfl.ads
-2030917946b ./gcc/ada/s-ficobl.ads
-3604265630b ./gcc/ada/s-fileio.adb
-1245988519b ./gcc/ada/s-fileio.ads
-3998800077b ./gcc/ada/s-finimp.adb
- 348300428b ./gcc/ada/s-finimp.ads
-3256667434b ./gcc/ada/s-finroo.adb
-3539088082b ./gcc/ada/s-finroo.ads
-2389974990b ./gcc/ada/sfn_scan.adb
-2382113394b ./gcc/ada/sfn_scan.ads
-1543367984b ./gcc/ada/s-fore.adb
-2136160505b ./gcc/ada/s-fore.ads
-1724896850b ./gcc/ada/s-gloloc.adb
-2874263872b ./gcc/ada/s-gloloc.ads
-2576558599b ./gcc/ada/s-imgbiu.adb
- 485571853b ./gcc/ada/s-imgbiu.ads
-2696391467b ./gcc/ada/s-imgboo.adb
- 562529842b ./gcc/ada/s-imgboo.ads
-3469875082b ./gcc/ada/s-imgcha.adb
- 768667588b ./gcc/ada/s-imgcha.ads
- 891425892b ./gcc/ada/s-imgdec.adb
-3956162567b ./gcc/ada/s-imgdec.ads
- 799265416b ./gcc/ada/s-imgenu.adb
-3206640093b ./gcc/ada/s-imgenu.ads
-1232841808b ./gcc/ada/s-imgint.adb
-1884481077b ./gcc/ada/s-imgint.ads
-2589338037b ./gcc/ada/s-imgllb.adb
- 952054489b ./gcc/ada/s-imgllb.ads
-3511505943b ./gcc/ada/s-imglld.adb
-3728427327b ./gcc/ada/s-imglld.ads
- 710546980b ./gcc/ada/s-imglli.adb
-3496934828b ./gcc/ada/s-imglli.ads
-2026551128b ./gcc/ada/s-imgllu.adb
- 898533582b ./gcc/ada/s-imgllu.ads
-2093598044b ./gcc/ada/s-imgllw.adb
-1635490829b ./gcc/ada/s-imgllw.ads
- 771945696b ./gcc/ada/s-imgrea.adb
-3266140221b ./gcc/ada/s-imgrea.ads
- 783564063b ./gcc/ada/s-imguns.adb
- 550522958b ./gcc/ada/s-imguns.ads
-1103898200b ./gcc/ada/s-imgwch.adb
- 306032126b ./gcc/ada/s-imgwch.ads
-1632744438b ./gcc/ada/s-imgwiu.adb
-3186715504b ./gcc/ada/s-imgwiu.ads
-1405497043b ./gcc/ada/sinfo.adb
- 267608903b ./gcc/ada/sinfo.ads
-2547960021b ./gcc/ada/sinfo-cn.adb
- 528396316b ./gcc/ada/sinfo-cn.ads
-4211174202b ./gcc/ada/sinfo.h
-2491143860b ./gcc/ada/s-inmaop.ads
-3969757742b ./gcc/ada/sinput.adb
-2051669844b ./gcc/ada/sinput.ads
- 318075408b ./gcc/ada/sinput-l.adb
-4161724197b ./gcc/ada/sinput-l.ads
-2486137427b ./gcc/ada/sinput-p.adb
-4179659691b ./gcc/ada/sinput-p.ads
- 642329874b ./gcc/ada/s-interr.adb
-2363118667b ./gcc/ada/s-interr.ads
-3439464760b ./gcc/ada/s-intman.ads
-3081896815b ./gcc/ada/s-io.adb
-2704983298b ./gcc/ada/s-io.ads
-4266387665b ./gcc/ada/s-maccod.ads
- 697475233b ./gcc/ada/s-mantis.adb
-3382852588b ./gcc/ada/s-mantis.ads
-2497788184b ./gcc/ada/s-mastop.adb
- 412040989b ./gcc/ada/s-mastop.ads
-4056300803b ./gcc/ada/s-memory.adb
- 436917678b ./gcc/ada/s-memory.ads
-3972943832b ./gcc/ada/snames.adb
-2711732664b ./gcc/ada/snames.ads
- 95357118b ./gcc/ada/snames.h
- 915988587b ./gcc/ada/s-osprim.ads
-1785995040b ./gcc/ada/s-pack03.adb
-1159696143b ./gcc/ada/s-pack03.ads
-4006352481b ./gcc/ada/s-pack05.adb
- 943301033b ./gcc/ada/s-pack05.ads
-2948914699b ./gcc/ada/s-pack06.adb
-1761489706b ./gcc/ada/s-pack06.ads
-2460225886b ./gcc/ada/s-pack07.adb
-1527563558b ./gcc/ada/s-pack07.ads
-1020068514b ./gcc/ada/s-pack09.adb
-2851601610b ./gcc/ada/s-pack09.ads
-3981484000b ./gcc/ada/s-pack10.adb
-4110961926b ./gcc/ada/s-pack10.ads
-3243254137b ./gcc/ada/s-pack11.adb
- 650802763b ./gcc/ada/s-pack11.ads
-3544834485b ./gcc/ada/s-pack12.adb
-1524517676b ./gcc/ada/s-pack12.ads
-3174573638b ./gcc/ada/s-pack13.adb
-1859524441b ./gcc/ada/s-pack13.ads
-2439144266b ./gcc/ada/s-pack14.adb
- 34461279b ./gcc/ada/s-pack14.ads
- 964701959b ./gcc/ada/s-pack15.adb
-3069359215b ./gcc/ada/s-pack15.ads
-1172842552b ./gcc/ada/s-pack17.adb
-4277065085b ./gcc/ada/s-pack17.ads
- 355821236b ./gcc/ada/s-pack18.adb
- 667115373b ./gcc/ada/s-pack18.ads
-3951115204b ./gcc/ada/s-pack19.adb
-3721065538b ./gcc/ada/s-pack19.ads
-3968916188b ./gcc/ada/s-pack20.adb
-1519291685b ./gcc/ada/s-pack20.ads
-1677028498b ./gcc/ada/s-pack21.adb
-2507237065b ./gcc/ada/s-pack21.ads
-3532235913b ./gcc/ada/s-pack22.adb
-4116220687b ./gcc/ada/s-pack22.ads
- 530410413b ./gcc/ada/s-pack23.adb
-3714910171b ./gcc/ada/s-pack23.ads
-2426545782b ./gcc/ada/s-pack24.adb
-3730016048b ./gcc/ada/s-pack24.ads
-2602918636b ./gcc/ada/s-pack25.adb
- 88712429b ./gcc/ada/s-pack25.ads
-2931513379b ./gcc/ada/s-pack26.adb
-1904574746b ./gcc/ada/s-pack26.ads
-3880609235b ./gcc/ada/s-pack27.adb
-1297466879b ./gcc/ada/s-pack27.ads
- 351609736b ./gcc/ada/s-pack28.adb
-2286264142b ./gcc/ada/s-pack28.ads
-1227126319b ./gcc/ada/s-pack29.adb
-1852957888b ./gcc/ada/s-pack29.ads
-3962509768b ./gcc/ada/s-pack30.adb
-1072902852b ./gcc/ada/s-pack30.ads
-3032045044b ./gcc/ada/s-pack31.adb
-4226258615b ./gcc/ada/s-pack31.ads
-3369161419b ./gcc/ada/s-pack33.adb
-3019634597b ./gcc/ada/s-pack33.ads
-2417878370b ./gcc/ada/s-pack34.adb
-3140368593b ./gcc/ada/s-pack34.ads
-1281973130b ./gcc/ada/s-pack35.adb
-1809798291b ./gcc/ada/s-pack35.ads
-2919537463b ./gcc/ada/s-pack36.adb
- 351813371b ./gcc/ada/s-pack36.ads
- 805395637b ./gcc/ada/s-pack37.adb
- 599995777b ./gcc/ada/s-pack37.ads
- 340451484b ./gcc/ada/s-pack38.adb
-3979878575b ./gcc/ada/s-pack38.ads
-2657636169b ./gcc/ada/s-pack39.adb
- 15144126b ./gcc/ada/s-pack39.ads
-4010823844b ./gcc/ada/s-pack40.adb
-3740404514b ./gcc/ada/s-pack40.ads
-4258197765b ./gcc/ada/s-pack41.adb
- 695615884b ./gcc/ada/s-pack41.ads
-3507039985b ./gcc/ada/s-pack42.adb
-1898188040b ./gcc/ada/s-pack42.ads
-2175202874b ./gcc/ada/s-pack43.adb
-1634345118b ./gcc/ada/s-pack43.ads
-2468523022b ./gcc/ada/s-pack44.adb
-1513029943b ./gcc/ada/s-pack44.ads
- 85917563b ./gcc/ada/s-pack45.adb
-3108930472b ./gcc/ada/s-pack45.ads
-2906378843b ./gcc/ada/s-pack46.adb
-4126738205b ./gcc/ada/s-pack46.ads
-2037839940b ./gcc/ada/s-pack47.adb
-4048741050b ./gcc/ada/s-pack47.ads
- 393587184b ./gcc/ada/s-pack48.adb
- 205068617b ./gcc/ada/s-pack48.ads
-3609193400b ./gcc/ada/s-pack49.adb
-3530998661b ./gcc/ada/s-pack49.ads
-4021261232b ./gcc/ada/s-pack50.adb
-3146757315b ./gcc/ada/s-pack50.ads
- 713214051b ./gcc/ada/s-pack51.adb
-1205907954b ./gcc/ada/s-pack51.ads
-3518426597b ./gcc/ada/s-pack52.adb
- 341422825b ./gcc/ada/s-pack52.ads
-1458229084b ./gcc/ada/s-pack53.adb
- 268226784b ./gcc/ada/s-pack53.ads
-2476568346b ./gcc/ada/s-pack54.adb
-1062387414b ./gcc/ada/s-pack54.ads
-3528640029b ./gcc/ada/s-pack55.adb
-3621286870b ./gcc/ada/s-pack55.ads
-2911113551b ./gcc/ada/s-pack56.adb
-2424617212b ./gcc/ada/s-pack56.ads
-2923086114b ./gcc/ada/s-pack57.adb
-2680427204b ./gcc/ada/s-pack57.ads
- 399141604b ./gcc/ada/s-pack58.adb
-1766106792b ./gcc/ada/s-pack58.ads
- 5493470b ./gcc/ada/s-pack59.adb
-3168809979b ./gcc/ada/s-pack59.ads
-4000306828b ./gcc/ada/s-pack60.adb
- 336164064b ./gcc/ada/s-pack60.ads
-2284291464b ./gcc/ada/s-pack61.adb
-4099645808b ./gcc/ada/s-pack61.ads
-3497437401b ./gcc/ada/s-pack62.adb
-3151983306b ./gcc/ada/s-pack62.ads
-4098851511b ./gcc/ada/s-pack63.adb
-3158818914b ./gcc/ada/s-pack63.ads
-4185842302b ./gcc/ada/s-parame.adb
-1016134734b ./gcc/ada/s-parame.ads
-1616379944b ./gcc/ada/s-parint.adb
- 93334734b ./gcc/ada/s-parint.ads
- 985076593b ./gcc/ada/s-pooglo.adb
-3631327025b ./gcc/ada/s-pooglo.ads
-2411088466b ./gcc/ada/s-pooloc.adb
-1220335642b ./gcc/ada/s-pooloc.ads
-1276581093b ./gcc/ada/s-poosiz.adb
-2771854951b ./gcc/ada/s-poosiz.ads
-2369419157b ./gcc/ada/s-powtab.ads
-3261788857b ./gcc/ada/sprint.adb
-1590570499b ./gcc/ada/sprint.ads
-4071092937b ./gcc/ada/s-proinf.adb
- 416511513b ./gcc/ada/s-proinf.ads
-2266850977b ./gcc/ada/s-rpc.adb
-4275658188b ./gcc/ada/s-rpc.ads
-3513640423b ./gcc/ada/s-scaval.ads
-2621428416b ./gcc/ada/s-secsta.adb
-2345034983b ./gcc/ada/s-secsta.ads
-4240948929b ./gcc/ada/s-sequio.adb
- 382868367b ./gcc/ada/s-sequio.ads
-3744646875b ./gcc/ada/s-shasto.adb
-3750666269b ./gcc/ada/s-shasto.ads
-2184182802b ./gcc/ada/s-soflin.adb
-4106853306b ./gcc/ada/s-soflin.ads
-2959161428b ./gcc/ada/s-sopco3.adb
- 104891649b ./gcc/ada/s-sopco3.ads
-4175442594b ./gcc/ada/s-sopco4.adb
-3936975251b ./gcc/ada/s-sopco4.ads
- 291408130b ./gcc/ada/s-sopco5.adb
- 812118675b ./gcc/ada/s-sopco5.ads
-1796793007b ./gcc/ada/s-stache.adb
-2789527219b ./gcc/ada/s-stache.ads
-1537964372b ./gcc/ada/s-stalib.adb
-3115651505b ./gcc/ada/s-stalib.ads
- 432471810b ./gcc/ada/s-stoele.adb
-1360919545b ./gcc/ada/s-stoele.ads
-2052345399b ./gcc/ada/s-stopoo.ads
-1633760278b ./gcc/ada/s-stratt.adb
-1417791298b ./gcc/ada/s-stratt.ads
-1686965279b ./gcc/ada/s-strops.adb
-4252576344b ./gcc/ada/s-strops.ads
-2532586131b ./gcc/ada/s-taasde.adb
-2453532957b ./gcc/ada/s-taasde.ads
- 828130019b ./gcc/ada/s-tadeca.adb
-1076421306b ./gcc/ada/s-tadeca.ads
-1301221686b ./gcc/ada/s-tadert.adb
- 789036441b ./gcc/ada/s-tadert.ads
- 630027435b ./gcc/ada/s-taenca.adb
-2587539578b ./gcc/ada/s-taenca.ads
-4203205869b ./gcc/ada/stand.adb
-3916070949b ./gcc/ada/stand.ads
-2632590584b ./gcc/ada/s-taprob.adb
-4128031181b ./gcc/ada/s-taprob.ads
-1400440071b ./gcc/ada/s-taprop.ads
- 177921966b ./gcc/ada/s-tarest.adb
-4066847638b ./gcc/ada/s-tarest.ads
-1991438887b ./gcc/ada/s-tasdeb.adb
-2613803021b ./gcc/ada/s-tasdeb.ads
-4020918264b ./gcc/ada/s-tasinf.adb
-1668935870b ./gcc/ada/s-tasinf.ads
-2945140891b ./gcc/ada/s-tasini.adb
- 334920681b ./gcc/ada/s-tasini.ads
-1584664889b ./gcc/ada/s-taskin.adb
-1712940961b ./gcc/ada/s-taskin.ads
-1111738188b ./gcc/ada/s-tasque.adb
-3925582077b ./gcc/ada/s-tasque.ads
-3253689117b ./gcc/ada/s-tasren.adb
-3585675949b ./gcc/ada/s-tasren.ads
- 639180081b ./gcc/ada/s-tasres.ads
-2506382509b ./gcc/ada/s-tassta.adb
-1308608849b ./gcc/ada/s-tassta.ads
-2198255554b ./gcc/ada/s-tasuti.adb
-1251170994b ./gcc/ada/s-tasuti.ads
-2438615219b ./gcc/ada/s-tataat.adb
-2752485611b ./gcc/ada/s-tataat.ads
-3146825506b ./gcc/ada/s-tpinop.adb
-2392114437b ./gcc/ada/s-tpinop.ads
-1630989423b ./gcc/ada/s-tpoben.adb
-2974774482b ./gcc/ada/s-tpoben.ads
- 576942612b ./gcc/ada/s-tpobop.adb
- 348329523b ./gcc/ada/s-tpobop.ads
-4078482581b ./gcc/ada/s-tposen.adb
- 583641471b ./gcc/ada/s-tposen.ads
-1726319339b ./gcc/ada/s-traceb.adb
-2819123084b ./gcc/ada/s-traceb.ads
-3088644110b ./gcc/ada/stringt.adb
-3489928984b ./gcc/ada/stringt.ads
- 115966881b ./gcc/ada/stringt.h
-1519917575b ./gcc/ada/style.adb
-2363652095b ./gcc/ada/style.ads
- 941550211b ./gcc/ada/stylesw.adb
- 300221687b ./gcc/ada/stylesw.ads
-2238856213b ./gcc/ada/s-unstyp.ads
- 383705502b ./gcc/ada/s-vaflop.adb
-3525840106b ./gcc/ada/s-vaflop.ads
-3777456120b ./gcc/ada/s-valboo.adb
- 823783850b ./gcc/ada/s-valboo.ads
-2182323653b ./gcc/ada/s-valcha.adb
-3984994262b ./gcc/ada/s-valcha.ads
-2486462063b ./gcc/ada/s-valdec.adb
-3078507172b ./gcc/ada/s-valdec.ads
-4035209494b ./gcc/ada/s-valenu.adb
-3348402059b ./gcc/ada/s-valenu.ads
-3233347202b ./gcc/ada/s-valint.adb
- 809353895b ./gcc/ada/s-valint.ads
-1624092680b ./gcc/ada/s-vallld.adb
-2769897228b ./gcc/ada/s-vallld.ads
-3744656291b ./gcc/ada/s-vallli.adb
-3279109387b ./gcc/ada/s-vallli.ads
-1459947133b ./gcc/ada/s-valllu.adb
- 585018696b ./gcc/ada/s-valllu.ads
- 764594178b ./gcc/ada/s-valrea.adb
-1720102121b ./gcc/ada/s-valrea.ads
- 532716097b ./gcc/ada/s-valuns.adb
-1244197250b ./gcc/ada/s-valuns.ads
- 852079584b ./gcc/ada/s-valuti.adb
- 738175561b ./gcc/ada/s-valuti.ads
- 8578713b ./gcc/ada/s-valwch.adb
-1511491362b ./gcc/ada/s-valwch.ads
-2493998789b ./gcc/ada/s-vercon.adb
- 76755328b ./gcc/ada/s-vercon.ads
-4202237657b ./gcc/ada/s-vmexta.adb
-4131737075b ./gcc/ada/s-vmexta.ads
-3071200887b ./gcc/ada/s-wchcnv.adb
-4248746072b ./gcc/ada/s-wchcnv.ads
-1113131496b ./gcc/ada/s-wchcon.ads
- 13946560b ./gcc/ada/s-wchjis.adb
-2260481846b ./gcc/ada/s-wchjis.ads
-1448393887b ./gcc/ada/s-wchstw.adb
-1559813388b ./gcc/ada/s-wchstw.ads
-3747078028b ./gcc/ada/s-wchwts.adb
-3218956526b ./gcc/ada/s-wchwts.ads
-2111277990b ./gcc/ada/s-widboo.adb
-3292895124b ./gcc/ada/s-widboo.ads
-1836742483b ./gcc/ada/s-widcha.adb
-3867876244b ./gcc/ada/s-widcha.ads
-1034537775b ./gcc/ada/s-widenu.adb
- 847743074b ./gcc/ada/s-widenu.ads
-1845615445b ./gcc/ada/s-widlli.adb
-2364218579b ./gcc/ada/s-widlli.ads
- 248576485b ./gcc/ada/s-widllu.adb
-2854689029b ./gcc/ada/s-widllu.ads
-2511495067b ./gcc/ada/s-widwch.adb
-3401797070b ./gcc/ada/s-widwch.ads
- 27582413b ./gcc/ada/switch.adb
-1598342278b ./gcc/ada/switch.ads
-3528609494b ./gcc/ada/s-wwdcha.adb
- 586285622b ./gcc/ada/s-wwdcha.ads
-2810367382b ./gcc/ada/s-wwdenu.adb
-4200440603b ./gcc/ada/s-wwdenu.ads
-1874741026b ./gcc/ada/s-wwdwch.adb
-3321650370b ./gcc/ada/s-wwdwch.ads
-4244182023b ./gcc/ada/sysdep.c
-1119298405b ./gcc/ada/system.ads
-3848197813b ./gcc/ada/table.adb
-3687590744b ./gcc/ada/table.ads
-1109639380b ./gcc/ada/targparm.adb
-1825795995b ./gcc/ada/targparm.ads
-1202794553b ./gcc/ada/targtyps.c
-1356345663b ./gcc/ada/tbuild.adb
-1858742811b ./gcc/ada/tbuild.ads
- 75780159b ./gcc/ada/text_io.ads
- 360994578b ./gcc/ada/tracebak.c
-2571992805b ./gcc/ada/trans.c
-1966951634b ./gcc/ada/tree_gen.adb
-3159530633b ./gcc/ada/tree_gen.ads
-2530728701b ./gcc/ada/tree_in.adb
-2711628455b ./gcc/ada/tree_in.ads
- 838934979b ./gcc/ada/tree_io.adb
- 752324076b ./gcc/ada/tree_io.ads
-3859295957b ./gcc/ada/treepr.adb
-2456186617b ./gcc/ada/treepr.ads
-1911577299b ./gcc/ada/treeprs.ads
-1276512398b ./gcc/ada/treeprs.adt
-4263888685b ./gcc/ada/ttypef.ads
-3874309715b ./gcc/ada/ttypes.ads
-1369397640b ./gcc/ada/types.adb
-4024957899b ./gcc/ada/types.ads
-1402875333b ./gcc/ada/types.h
- 981400444b ./gcc/ada/ug_words
- 259981028b ./gcc/ada/uintp.adb
-1501595103b ./gcc/ada/uintp.ads
-2726784320b ./gcc/ada/uintp.h
-1168757069b ./gcc/ada/uname.adb
-3887027289b ./gcc/ada/uname.ads
-2682664197b ./gcc/ada/unchconv.ads
- 906261077b ./gcc/ada/unchdeal.ads
-1146813221b ./gcc/ada/urealp.adb
-3019307290b ./gcc/ada/urealp.ads
-2098404567b ./gcc/ada/urealp.h
-3991257953b ./gcc/ada/usage.adb
- 876425940b ./gcc/ada/usage.ads
-3098691088b ./gcc/ada/utils2.c
- 35898743b ./gcc/ada/utils.c
-2206670030b ./gcc/ada/validsw.adb
-2813759673b ./gcc/ada/validsw.ads
-3183449725b ./gcc/ada/widechar.adb
-1939896965b ./gcc/ada/widechar.ads
-4107540872b ./gcc/ada/xeinfo.adb
- 208322693b ./gcc/ada/xgnatug.adb
- 5897144b ./gcc/ada/xnmake.adb
-3670337130b ./gcc/ada/xref_lib.adb
-4020137442b ./gcc/ada/xref_lib.ads
-3378631066b ./gcc/ada/xr_tabls.adb
-3872099053b ./gcc/ada/xr_tabls.ads
-1408035530b ./gcc/ada/xsinfo.adb
-1441973181b ./gcc/ada/xsnames.adb
- 579454790b ./gcc/ada/xtreeprs.adb
- 790330640b ./gcc/alias.c
-1031959714b ./gcc/attribs.c
-2742514573b ./gcc/basic-block.h
- 534677057b ./gcc/bb-reorder.c
- 518972076b ./gcc/bitmap.c
- 477755928b ./gcc/bitmap.h
- 540939972b ./gcc/builtin-attrs.def
-2448248820b ./gcc/builtins.c
-2454689977b ./gcc/builtins.def
-3361511841b ./gcc/builtin-types.def
-4196427447b ./gcc/caller-save.c
-1802334908b ./gcc/calls.c
- 420541423b ./gcc/c-aux-info.c
-1073499624b ./gcc/c-common.c
-2096270511b ./gcc/c-common.def
-3764400561b ./gcc/c-common.h
-1317742909b ./gcc/c-convert.c
-1025902837b ./gcc/c-decl.c
- 487899684b ./gcc/c-errors.c
-2570808086b ./gcc/cfganal.c
-1964748151b ./gcc/cfgbuild.c
-2908854975b ./gcc/cfg.c
- 822237739b ./gcc/cfgcleanup.c
-1219429812b ./gcc/cfglayout.c
-1858346793b ./gcc/cfglayout.h
-3236894730b ./gcc/cfgloop.c
-2041391494b ./gcc/cfgrtl.c
-2243757094b ./gcc/c-format.c
-2870572971b ./gcc/ChangeLog
-1398127668b ./gcc/ChangeLog.0
-2827765101b ./gcc/ChangeLog.1
-1199055802b ./gcc/ChangeLog.2
-2924329613b ./gcc/ChangeLog.3
- 164761891b ./gcc/ChangeLog.4
-1481898300b ./gcc/ChangeLog.5
-2613464808b ./gcc/ChangeLog.6
-3235050590b ./gcc/ChangeLog.lib
-1985388077b ./gcc/c-lang.c
- 382517507b ./gcc/c-lex.c
- 835686435b ./gcc/c-lex.h
-1191094530b ./gcc/c-objc-common.c
-1806916686b ./gcc/collect2.c
- 653998699b ./gcc/collect2.h
-2586036597b ./gcc/combine.c
-4122382037b ./gcc/conditions.h
- 525821919b ./gcc/config/1750a/1750a.c
-2195664858b ./gcc/config/1750a/1750a.h
-3089740443b ./gcc/config/1750a/1750a.md
-3356933371b ./gcc/config/1750a/1750a-protos.h
-2477730384b ./gcc/config/1750a/ms1750.inc
-4248885141b ./gcc/config/a29k/a29k.c
-1800382809b ./gcc/config/a29k/a29k.h
-1270050344b ./gcc/config/a29k/a29k.md
- 820188974b ./gcc/config/a29k/a29k-protos.h
-1083391793b ./gcc/config/a29k/rtems.h
- 696851807b ./gcc/config/a29k/t-a29kbare
-2585873370b ./gcc/config/a29k/t-vx29k
-1544651385b ./gcc/config/a29k/unix.h
-3167234709b ./gcc/config/a29k/vx29k.h
-3915788506b ./gcc/config/alpha/alpha32.h
- 830149807b ./gcc/config/alpha/alpha.c
-2486755494b ./gcc/config/alpha/alpha.h
-1076515812b ./gcc/config/alpha/alpha-interix.h
-1955091231b ./gcc/config/alpha/alpha.md
-4085134134b ./gcc/config/alpha/alpha-protos.h
-1407988137b ./gcc/config/alpha/crtfastmath.c
- 221364934b ./gcc/config/alpha/elf.h
- 611485563b ./gcc/config/alpha/freebsd.h
-2998860143b ./gcc/config/alpha/lib1funcs.asm
-1763018017b ./gcc/config/alpha/linux-ecoff.h
- 37916839b ./gcc/config/alpha/linux-elf.h
-3901756355b ./gcc/config/alpha/linux.h
-1830150315b ./gcc/config/alpha/netbsd.h
- 156117508b ./gcc/config/alpha/openbsd.h
-1792826440b ./gcc/config/alpha/osf12.h
-3744703656b ./gcc/config/alpha/osf2or3.h
-2776242025b ./gcc/config/alpha/osf5.h
-2313475776b ./gcc/config/alpha/osf.h
-1190572001b ./gcc/config/alpha/qrnnd.asm
-2672344824b ./gcc/config/alpha/t-alpha
-1949254250b ./gcc/config/alpha/t-crtfm
-3084092578b ./gcc/config/alpha/t-ieee
-3884780449b ./gcc/config/alpha/t-interix
-4208963116b ./gcc/config/alpha/t-osf4
-1191509594b ./gcc/config/alpha/t-unicosmk
-1694999122b ./gcc/config/alpha/t-vms
-3342100479b ./gcc/config/alpha/t-vms64
-3395550504b ./gcc/config/alpha/unicosmk.h
-2817356982b ./gcc/config/alpha/va_list.h
-2920918174b ./gcc/config/alpha/vms64.h
-3118436884b ./gcc/config/alpha/vms-cc.c
-2784080362b ./gcc/config/alpha/vms-crt0-64.c
- 92885822b ./gcc/config/alpha/vms-crt0.c
-3572749067b ./gcc/config/alpha/vms-dwarf2.asm
-3031921581b ./gcc/config/alpha/vms-dwarf2eh.asm
- 923619902b ./gcc/config/alpha/vms.h
-2333112991b ./gcc/config/alpha/vms-ld.c
- 664285780b ./gcc/config/alpha/vms-psxcrt0-64.c
-1499899963b ./gcc/config/alpha/vms-psxcrt0.c
-1497613985b ./gcc/config/alpha/vms_tramp.asm
- 985208816b ./gcc/config/alpha/vxworks.h
-1631226706b ./gcc/config/alpha/xm-alpha-interix.h
-2164887597b ./gcc/config/alpha/xm-vms64.h
-1813891070b ./gcc/config/alpha/xm-vms.h
-1756604664b ./gcc/config/alpha/x-vms
- 662120966b ./gcc/config/aoutos.h
-3700366341b ./gcc/config/arc/arc.c
-2300457202b ./gcc/config/arc/arc.h
-2348200471b ./gcc/config/arc/arc.md
-1916903876b ./gcc/config/arc/arc-protos.h
-2242623574b ./gcc/config/arc/initfini.c
-4224412506b ./gcc/config/arc/lib1funcs.asm
-2135297695b ./gcc/config/arc/t-arc
-2672724137b ./gcc/config/arm/aof.h
- 754089758b ./gcc/config/arm/aout.h
- 968318223b ./gcc/config/arm/arm.c
-2386488705b ./gcc/config/arm/arm.h
-2864793753b ./gcc/config/arm/arm.md
-2355527864b ./gcc/config/arm/arm-protos.h
- 478450204b ./gcc/config/arm/arm-wince-pe.h
- 531784060b ./gcc/config/arm/coff.h
-3968543328b ./gcc/config/arm/conix-elf.h
-2901180917b ./gcc/config/arm/crti.asm
-2281461647b ./gcc/config/arm/crtn.asm
-4281626291b ./gcc/config/arm/ecos-elf.h
-3143079784b ./gcc/config/arm/elf.h
-1564985594b ./gcc/config/arm/freebsd.h
-3355567723b ./gcc/config/arm/lib1funcs.asm
-1770982396b ./gcc/config/arm/linux-elf.h
-2890656711b ./gcc/config/arm/linux-gas.h
-3050794234b ./gcc/config/arm/netbsd.h
-3970353953b ./gcc/config/arm/pe.c
- 581802105b ./gcc/config/arm/pe.h
-2885119589b ./gcc/config/arm/README-interworking
-2367073445b ./gcc/config/arm/riscix1-1.h
-3068021852b ./gcc/config/arm/riscix.h
-3648344095b ./gcc/config/arm/rix-gas.h
-3970258112b ./gcc/config/arm/rtems-elf.h
-3108552778b ./gcc/config/arm/semiaof.h
-2419470702b ./gcc/config/arm/semi.h
-1676744073b ./gcc/config/arm/strongarm-coff.h
-2572947596b ./gcc/config/arm/strongarm-elf.h
-4084147202b ./gcc/config/arm/strongarm-pe.h
-1225127474b ./gcc/config/arm/t-arm-aout
-1432575844b ./gcc/config/arm/t-arm-coff
-3068297759b ./gcc/config/arm/t-arm-elf
-2454749767b ./gcc/config/arm/t-linux
- 849756574b ./gcc/config/arm/t-netbsd
-1171746127b ./gcc/config/arm/t-pe
-3531598494b ./gcc/config/arm/t-riscix
-1572194130b ./gcc/config/arm/t-semi
-3145229981b ./gcc/config/arm/t-strongarm-coff
- 358695252b ./gcc/config/arm/t-strongarm-elf
-2389193190b ./gcc/config/arm/t-strongarm-pe
-3941249553b ./gcc/config/arm/t-xscale-coff
-4238855457b ./gcc/config/arm/t-xscale-elf
-3331622085b ./gcc/config/arm/uclinux-elf.h
- 169320906b ./gcc/config/arm/unknown-elf.h
-3664576446b ./gcc/config/arm/unknown-elf-oabi.h
-4086326841b ./gcc/config/arm/vxarm.h
-2632983487b ./gcc/config/arm/xscale-coff.h
-2366951282b ./gcc/config/arm/xscale-elf.h
-2474041656b ./gcc/config/avr/avr.c
-3254145940b ./gcc/config/avr/avr.h
-4276324027b ./gcc/config/avr/avr.md
- 567694740b ./gcc/config/avr/avr-protos.h
-1853285406b ./gcc/config/avr/libgcc.S
-3040444126b ./gcc/config/avr/t-avr
- 487323483b ./gcc/config/c4x/c4x.c
-1272252374b ./gcc/config/c4x/c4x-c.c
-4149345821b ./gcc/config/c4x/c4x.h
-2240751934b ./gcc/config/c4x/c4x.md
-4161503224b ./gcc/config/c4x/c4x-protos.h
-1473970252b ./gcc/config/c4x/libgcc.S
-3126919437b ./gcc/config/c4x/rtems.h
-1848402932b ./gcc/config/c4x/t-c4x
-2216814105b ./gcc/config/chorus.h
-2064231953b ./gcc/config/clipper/clipper.c
-4145616021b ./gcc/config/clipper/clipper.h
- 28615455b ./gcc/config/clipper/clipper.md
-3381447812b ./gcc/config/clipper/clipper-protos.h
- 319322158b ./gcc/config/clipper/clix.h
-3677219838b ./gcc/config/convex/convex.c
- 597637161b ./gcc/config/convex/convex.h
- 462857671b ./gcc/config/convex/convex.md
-2941206894b ./gcc/config/convex/convex-protos.h
- 384964748b ./gcc/config/convex/fixinc.convex
-2576905081b ./gcc/config/convex/proto.h
-2561716856b ./gcc/config/cris/aout.h
-2531765543b ./gcc/config/cris/arit.c
-4228128527b ./gcc/config/cris/cris_abi_symbol.c
- 937590356b ./gcc/config/cris/cris.c
-1846933412b ./gcc/config/cris/cris.h
-3975834409b ./gcc/config/cris/cris.md
-2623962717b ./gcc/config/cris/cris-protos.h
-2550031006b ./gcc/config/cris/linux.h
- 907689569b ./gcc/config/cris/mulsi3.asm
- 45521295b ./gcc/config/cris/t-aout
- 874481385b ./gcc/config/cris/t-cris
-2080407099b ./gcc/config/cris/t-elfmulti
-1112852607b ./gcc/config/cris/t-linux
-3834330727b ./gcc/config/d30v/abi
- 349365251b ./gcc/config/d30v/d30v.c
- 5113978b ./gcc/config/d30v/d30v.h
-3430463305b ./gcc/config/d30v/d30v.md
-3966607018b ./gcc/config/d30v/d30v-protos.h
-1512688016b ./gcc/config/d30v/libgcc1.asm
-2120255627b ./gcc/config/d30v/t-d30v
-2411222628b ./gcc/config/darwin.c
-2176622144b ./gcc/config/darwin-c.c
-2796646825b ./gcc/config/darwin.h
-1469496228b ./gcc/config/darwin-protos.h
-2118339989b ./gcc/config/dbxcoff.h
-2470898471b ./gcc/config/dbxelf.h
- 186717254b ./gcc/config/dbx.h
-4083711028b ./gcc/config/divmod.c
-1337751109b ./gcc/config/dsp16xx/dsp16xx.c
- 508710765b ./gcc/config/dsp16xx/dsp16xx.h
- 273715633b ./gcc/config/dsp16xx/dsp16xx.md
-3807169411b ./gcc/config/dsp16xx/dsp16xx-protos.h
-1123139357b ./gcc/config/elfos.h
-2583638380b ./gcc/config/elxsi/elxsi.c
-1846962457b ./gcc/config/elxsi/elxsi.h
-1729380348b ./gcc/config/elxsi/elxsi.md
-1622698848b ./gcc/config/elxsi/elxsi-protos.h
-2520622557b ./gcc/config/float-c4x.h
- 36687624b ./gcc/config/float-i128.h
-2077185169b ./gcc/config/float-i32.h
- 751904614b ./gcc/config/float-i386.h
- 466751418b ./gcc/config/float-i64.h
-2601002892b ./gcc/config/float-m68k.h
-1084189067b ./gcc/config/float-sh.h
-2134536939b ./gcc/config/float-sparc.h
- 766947524b ./gcc/config/float-vax.h
-2162319998b ./gcc/config/fp-bit.c
-3844459473b ./gcc/config/fp-bit.h
-2304723625b ./gcc/config/fr30/crti.asm
-2025473533b ./gcc/config/fr30/crtn.asm
-3792879472b ./gcc/config/fr30/fr30.c
- 869213712b ./gcc/config/fr30/fr30.h
-4172871396b ./gcc/config/fr30/fr30.md
-4061935745b ./gcc/config/fr30/fr30-protos.h
-2734319269b ./gcc/config/fr30/lib1funcs.asm
-3068633205b ./gcc/config/fr30/t-fr30
-3857422654b ./gcc/config/freebsd3.h
-2210711654b ./gcc/config/freebsd4.h
-1531797731b ./gcc/config/freebsd5.h
-3920011053b ./gcc/config/freebsd6.h
- 22917470b ./gcc/config/freebsd.h
-3532526787b ./gcc/config/freebsd-nthr.h
-3508760161b ./gcc/config/freebsd-spec.h
-3290013183b ./gcc/config.gcc
-3236013445b ./gcc/config/gnu.h
- 269492728b ./gcc/config/gofast.h
-1315260558b ./gcc/config.guess
-3397297833b ./gcc/config/h8300/crti.asm
-3919963794b ./gcc/config/h8300/crtn.asm
-3512988181b ./gcc/config/h8300/elf.h
-3407042493b ./gcc/config/h8300/fixunssfsi.c
-3423866381b ./gcc/config/h8300/h8300.c
-1422146659b ./gcc/config/h8300/h8300.h
- 311961515b ./gcc/config/h8300/h8300.md
-1292256972b ./gcc/config/h8300/h8300-protos.h
-2991149153b ./gcc/config/h8300/lib1funcs.asm
-2198420981b ./gcc/config/h8300/rtems.h
-2094865057b ./gcc/config/h8300/t-elf
- 85067832b ./gcc/config/h8300/t-h8300
-3470805473b ./gcc/config/i370/i370.c
- 979765873b ./gcc/config/i370/i370-c.c
-3238258803b ./gcc/config/i370/i370.h
-4214408308b ./gcc/config/i370/i370.md
-1981911754b ./gcc/config/i370/i370-protos.h
-1433729913b ./gcc/config/i370/linux.h
-1044154955b ./gcc/config/i370/mvs.h
-3630097967b ./gcc/config/i370/oe.h
-2187046003b ./gcc/config/i370/README
-1023365638b ./gcc/config/i370/t-i370
-1100145942b ./gcc/config/i370/t-oe
-3856846943b ./gcc/config/i386/386bsd.h
-3990721733b ./gcc/config/i386/aix386.h
- 757618460b ./gcc/config/i386/aix386ng.h
-3049279797b ./gcc/config/i386/att.h
-1685915522b ./gcc/config/i386/beos-elf.h
- 778550489b ./gcc/config/i386/biarch64.h
- 118206770b ./gcc/config/i386/bsd386.h
-2349519740b ./gcc/config/i386/bsd.h
- 105502713b ./gcc/config/i386/crtdll.h
-4293145615b ./gcc/config/i386/cygwin.asm
-2449448955b ./gcc/config/i386/cygwin.h
-3582951454b ./gcc/config/i386/dgux.h
-1419143807b ./gcc/config/i386/djgpp.h
-2694509274b ./gcc/config/i386/djgpp-rtems.h
-3516447755b ./gcc/config/i386/freebsd64.h
-1128409449b ./gcc/config/i386/freebsd-aout.h
- 149642195b ./gcc/config/i386/freebsd.h
- 872852389b ./gcc/config/i386/gas.h
-4266288971b ./gcc/config/i386/gmon-sol2.c
- 915598536b ./gcc/config/i386/gnu.h
- 166489147b ./gcc/config/i386/gstabs.h
-1725036574b ./gcc/config/i386/i386-aout.h
-2087644841b ./gcc/config/i386/i386.c
-4168545992b ./gcc/config/i386/i386-coff.h
-2017248418b ./gcc/config/i386/i386elf.h
- 126280949b ./gcc/config/i386/i386.h
- 721929446b ./gcc/config/i386/i386-interix3.h
-1321445318b ./gcc/config/i386/i386-interix.h
-1643637147b ./gcc/config/i386/i386.md
-2589129574b ./gcc/config/i386/i386-protos.h
-1164740130b ./gcc/config/i386/interix.c
-1996803131b ./gcc/config/i386/isccoff.h
-1692083111b ./gcc/config/i386/iscdbx.h
-3908393755b ./gcc/config/i386/isc.h
- 877642037b ./gcc/config/i386/libgcc-x86_64-glibc.ver
-1758822745b ./gcc/config/i386/linux64.h
-2999558891b ./gcc/config/i386/linux-aout.h
-2801664794b ./gcc/config/i386/linux.h
-2799520524b ./gcc/config/i386/linux-oldld.h
- 372710545b ./gcc/config/i386/lynx.h
- 83628421b ./gcc/config/i386/lynx-ng.h
-4206477894b ./gcc/config/i386/mach.h
-3763689293b ./gcc/config/i386/mingw32.h
-3851444052b ./gcc/config/i386/mmintrin.h
-3361545892b ./gcc/config/i386/moss.h
-2015644945b ./gcc/config/i386/netbsd64.h
- 527360119b ./gcc/config/i386/netbsd-elf.h
-4276805615b ./gcc/config/i386/netbsd.h
-2351965586b ./gcc/config/i386/netware.h
-3059925901b ./gcc/config/i386/next.h
- 903611773b ./gcc/config/i386/openbsd.h
-2999570618b ./gcc/config/i386/osf1-ci.asm
-2303041887b ./gcc/config/i386/osf1-cn.asm
-3979872455b ./gcc/config/i386/osf1elfgdb.h
-1710286781b ./gcc/config/i386/osf1elf.h
-3128347339b ./gcc/config/i386/osfelf.h
-4023690019b ./gcc/config/i386/osfrose.h
-4166685458b ./gcc/config/i386/ptx4-i.h
-3397896458b ./gcc/config/i386/rtemself.h
-3754059204b ./gcc/config/i386/rtems.h
-3691307729b ./gcc/config/i386/sco5.h
-3439848366b ./gcc/config/i386/seq2-sysv3.h
-2517904468b ./gcc/config/i386/seq-gas.h
-2376826274b ./gcc/config/i386/seq-sysv3.h
-1460292009b ./gcc/config/i386/sequent.h
- 425477609b ./gcc/config/i386/sol2-c1.asm
-1565106149b ./gcc/config/i386/sol2-ci.asm
-4008317666b ./gcc/config/i386/sol2-cn.asm
-3870175252b ./gcc/config/i386/sol2gas.h
-2045686122b ./gcc/config/i386/sol2-gc1.asm
- 293602449b ./gcc/config/i386/sol2.h
-3471554836b ./gcc/config/i386/sun386.h
-4009223163b ./gcc/config/i386/sun.h
-2138673972b ./gcc/config/i386/svr3dbx.h
-1965747476b ./gcc/config/i386/svr3gas.h
-3846064431b ./gcc/config/i386/svr3.ifile
-1523044645b ./gcc/config/i386/svr3z.ifile
-3848105951b ./gcc/config/i386/sysv3.h
-1594728867b ./gcc/config/i386/sysv4.h
-1357982390b ./gcc/config/i386/sysv5.h
-3914733738b ./gcc/config/i386/t-beos
-2437302600b ./gcc/config/i386/t-crtpic
-2246944266b ./gcc/config/i386/t-crtstuff
-3093621951b ./gcc/config/i386/t-cygwin
-2054288148b ./gcc/config/i386/t-dgux
-2902972689b ./gcc/config/i386/t-djgpp
- 537671296b ./gcc/config/i386/t-i386elf
-1614388594b ./gcc/config/i386/t-interix
- 196644080b ./gcc/config/i386/t-linux64
-4056914306b ./gcc/config/i386/t-mingw32
- 92801654b ./gcc/config/i386/t-netware
-1960948471b ./gcc/config/i386/t-next
- 709063989b ./gcc/config/i386/t-openbsd
-1186749595b ./gcc/config/i386/t-osf
-1520459705b ./gcc/config/i386/t-osf1elf
- 422823583b ./gcc/config/i386/t-rtems-i386
-1649755892b ./gcc/config/i386/t-sco5
-1824758327b ./gcc/config/i386/t-sco5gas
-2786912378b ./gcc/config/i386/t-sol2
-3128852740b ./gcc/config/i386/t-svr3dbx
-2977164768b ./gcc/config/i386/t-udk
-1023926647b ./gcc/config/i386/t-uwin
-1775100101b ./gcc/config/i386/udk.h
-3838506178b ./gcc/config/i386/unix.h
-2798938994b ./gcc/config/i386/uwin.asm
-4142598938b ./gcc/config/i386/uwin.h
-1148022895b ./gcc/config/i386/v3gas.h
-1621915956b ./gcc/config/i386/vsta.h
- 57307462b ./gcc/config/i386/vxi386.h
-3423798645b ./gcc/config/i386/win32.h
-1200967744b ./gcc/config/i386/winnt.c
-2420589009b ./gcc/config/i386/x86-64.h
-1690208514b ./gcc/config/i386/xm-cygwin.h
-3902343879b ./gcc/config/i386/xm-djgpp.h
-3631826497b ./gcc/config/i386/xm-i386-interix.h
- 92688945b ./gcc/config/i386/xm-mingw32.h
-2085781748b ./gcc/config/i386/xmmintrin.h
-1404515293b ./gcc/config/i386/xm-vsta.h
-2229503331b ./gcc/config/i860/bsd-gas.h
-3105781024b ./gcc/config/i860/bsd.h
-1997415443b ./gcc/config/i860/fx2800.h
-4081368347b ./gcc/config/i860/i860.c
- 718661732b ./gcc/config/i860/i860.h
-2940070083b ./gcc/config/i860/i860.md
-1479219352b ./gcc/config/i860/i860-protos.h
-3806449409b ./gcc/config/i860/mach.h
-3225474743b ./gcc/config/i860/paragon.h
-3497246692b ./gcc/config/i860/sysv3.h
-1181281122b ./gcc/config/i860/sysv4.h
- 269024431b ./gcc/config/i860/t-fx2800
-1835110220b ./gcc/config/i860/varargs.asm
- 736082089b ./gcc/config/i960/i960.c
- 648677105b ./gcc/config/i960/i960-c.c
-3384279950b ./gcc/config/i960/i960-coff.h
-3931238913b ./gcc/config/i960/i960.h
-2800981685b ./gcc/config/i960/i960.md
-3598295769b ./gcc/config/i960/i960-protos.h
-1281966645b ./gcc/config/i960/rtems.h
-2036399646b ./gcc/config/i960/t-960bare
- 703563677b ./gcc/config/i960/t-vxworks960
-3103531078b ./gcc/config/i960/vx960-coff.h
-1895495318b ./gcc/config/i960/vx960.h
-1007852506b ./gcc/config/ia64/aix.h
-1057225417b ./gcc/config/ia64/crtbegin.asm
-2515543842b ./gcc/config/ia64/crtend.asm
- 281392077b ./gcc/config/ia64/crtfastmath.c
-3128441059b ./gcc/config/ia64/crti.asm
-3161585686b ./gcc/config/ia64/crtn.asm
-2297508797b ./gcc/config/ia64/elf.h
-2446839914b ./gcc/config/ia64/fde-glibc.c
-2501046378b ./gcc/config/ia64/freebsd.h
-2423115826b ./gcc/config/ia64/hpux.h
-3320865692b ./gcc/config/ia64/hpux_longdouble.h
-2150614374b ./gcc/config/ia64/ia64.c
- 160446917b ./gcc/config/ia64/ia64.h
- 511545686b ./gcc/config/ia64/ia64intrin.h
-1143291289b ./gcc/config/ia64/ia64.md
-2354458740b ./gcc/config/ia64/ia64-protos.h
-3488320870b ./gcc/config/ia64/lib1funcs.asm
-2361471520b ./gcc/config/ia64/libgcc-ia64.ver
-2435218299b ./gcc/config/ia64/linux.h
-1337642433b ./gcc/config/ia64/quadlib.c
-1454530158b ./gcc/config/ia64/sysv4.h
-2374494786b ./gcc/config/ia64/t-aix
-2148782144b ./gcc/config/ia64/t-glibc
-3471209231b ./gcc/config/ia64/t-hpux
- 158251161b ./gcc/config/ia64/t-ia64
-2759923269b ./gcc/config/ia64/unwind-aix.c
-1364155779b ./gcc/config/ia64/unwind-ia64.c
-2355075302b ./gcc/config/ia64/unwind-ia64.h
-1761565476b ./gcc/config.in
-3221870490b ./gcc/config/interix3.h
-1139973568b ./gcc/config/interix.h
-3774321010b ./gcc/config/libgcc-glibc.ver
- 679171109b ./gcc/config/libgloss.h
- 265766519b ./gcc/config/linux-aout.h
-2201567287b ./gcc/config/linux.h
- 510514981b ./gcc/config/lynx.h
-2466014571b ./gcc/config/lynx-ng.h
-2460604231b ./gcc/config/m32r/initfini.c
-2298486681b ./gcc/config/m32r/m32r.c
-2178062905b ./gcc/config/m32r/m32r.h
-2455193277b ./gcc/config/m32r/m32r.md
- 67938598b ./gcc/config/m32r/m32r-protos.h
-3043182144b ./gcc/config/m32r/t-m32r
- 35339373b ./gcc/config/m68hc11/larith.asm
-1272963761b ./gcc/config/m68hc11/m68hc11.c
-3563849705b ./gcc/config/m68hc11/m68hc11-crt0.S
-1280294916b ./gcc/config/m68hc11/m68hc11.h
- 520753477b ./gcc/config/m68hc11/m68hc11.md
-1796033124b ./gcc/config/m68hc11/m68hc11-protos.h
- 452436463b ./gcc/config/m68hc11/m68hc12.h
-1483227044b ./gcc/config/m68hc11/t-m68hc11-gas
-3032963201b ./gcc/config/m68k/3b1g.h
-3262237289b ./gcc/config/m68k/3b1.h
-1524307847b ./gcc/config/m68k/altos3068.h
-1472845046b ./gcc/config/m68k/amix.h
-3726815317b ./gcc/config/m68k/apollo68.h
-2229011187b ./gcc/config/m68k/atari.h
- 304653227b ./gcc/config/m68k/auxas.h
-1360990051b ./gcc/config/m68k/aux-crt1.c
-1689696476b ./gcc/config/m68k/aux-crt2.asm
-2072970828b ./gcc/config/m68k/aux-crtn.asm
- 409246969b ./gcc/config/m68k/aux-exit.c
- 741505994b ./gcc/config/m68k/auxgas.h
- 922288695b ./gcc/config/m68k/auxgld.h
-1105413220b ./gcc/config/m68k/a-ux.h
-2685530303b ./gcc/config/m68k/auxld.h
-2164284366b ./gcc/config/m68k/aux-low.gld
-2208437798b ./gcc/config/m68k/aux-mcount.c
-1916112183b ./gcc/config/m68k/ccur-GAS.h
- 597864788b ./gcc/config/m68k/coff.h
-2360909894b ./gcc/config/m68k/crds.h
-1173190318b ./gcc/config/m68k/crti.s
-4181788584b ./gcc/config/m68k/crtn.s
-3642339847b ./gcc/config/m68k/ctix.h
-2770446786b ./gcc/config/m68k/dpx2cdbx.h
-3851760573b ./gcc/config/m68k/dpx2g.h
-2199460345b ./gcc/config/m68k/dpx2.h
-2216029984b ./gcc/config/m68k/dpx2.ifile
-2518640661b ./gcc/config/m68k/fpgnulib.c
- 136981270b ./gcc/config/m68k/hp2bsd.h
-4247760656b ./gcc/config/m68k/hp310g.h
-2625821362b ./gcc/config/m68k/hp310.h
-3645108527b ./gcc/config/m68k/hp320g.h
-2642329211b ./gcc/config/m68k/hp320.h
-3605366445b ./gcc/config/m68k/hp3bsd44.h
- 942415927b ./gcc/config/m68k/hp3bsd.h
-2864047424b ./gcc/config/m68k/hpux7.h
- 665470337b ./gcc/config/m68k/isi.h
-3484500543b ./gcc/config/m68k/isi-nfp.h
- 704862081b ./gcc/config/m68k/lb1sf68.asm
-1023591365b ./gcc/config/m68k/linux-aout.h
-1138393842b ./gcc/config/m68k/linux.h
-3350690882b ./gcc/config/m68k/lynx.h
- 162996909b ./gcc/config/m68k/lynx-ng.h
-3379792683b ./gcc/config/m68k/m68020-elf.h
- 388266224b ./gcc/config/m68k/m68k-aout.h
-1870424553b ./gcc/config/m68k/m68k.c
-3882947461b ./gcc/config/m68k/m68k-coff.h
-2573430517b ./gcc/config/m68k/m68kelf.h
-1120822994b ./gcc/config/m68k/m68kemb.h
-3756685982b ./gcc/config/m68k/m68k.h
-3281000245b ./gcc/config/m68k/m68k.md
-3855098247b ./gcc/config/m68k/m68k-none.h
-3954442786b ./gcc/config/m68k/m68k-protos.h
-1109594909b ./gcc/config/m68k/m68k-psos.h
- 947783547b ./gcc/config/m68k/m68kv4.h
-2766673945b ./gcc/config/m68k/math-3300.h
-3047408322b ./gcc/config/m68k/math-68881.h
-1902334218b ./gcc/config/m68k/mot3300-crt0.S
-2216988570b ./gcc/config/m68k/mot3300.h
-4250921257b ./gcc/config/m68k/mot3300Mcrt0.S
-1653993281b ./gcc/config/m68k/netbsd-elf.h
- 306540848b ./gcc/config/m68k/netbsd.h
-2598124463b ./gcc/config/m68k/news3gas.h
- 895337217b ./gcc/config/m68k/news3.h
-2724290690b ./gcc/config/m68k/newsgas.h
- 823527599b ./gcc/config/m68k/news.h
-3839942171b ./gcc/config/m68k/next21.h
-3375370361b ./gcc/config/m68k/next.h
- 615787625b ./gcc/config/m68k/openbsd.h
-1412462225b ./gcc/config/m68k/pbb.h
- 964659279b ./gcc/config/m68k/plexus.h
-3840336856b ./gcc/config/m68k/rtemself.h
-4045485418b ./gcc/config/m68k/rtems.h
-2246845695b ./gcc/config/m68k/sgs.h
- 844744081b ./gcc/config/m68k/sun2.h
-3991060631b ./gcc/config/m68k/sun2o4.h
-3239560263b ./gcc/config/m68k/sun3.h
-3724598161b ./gcc/config/m68k/sun3mach.h
- 864417723b ./gcc/config/m68k/sun3n3.h
- 120628064b ./gcc/config/m68k/sun3n.h
-2298299278b ./gcc/config/m68k/sun3o3.h
-3527955370b ./gcc/config/m68k/t-aux
-2428228359b ./gcc/config/m68k/t-crtstuff
-1845413337b ./gcc/config/m68k/t-hp320
-1601671577b ./gcc/config/m68k/t-linux
-1601671577b ./gcc/config/m68k/t-linux-aout
-3474104024b ./gcc/config/m68k/t-lynx
- 591505405b ./gcc/config/m68k/t-m68kbare
-1376927127b ./gcc/config/m68k/t-m68kelf
-2312371323b ./gcc/config/m68k/t-mot3300
-1278563328b ./gcc/config/m68k/t-mot3300-gald
- 505153656b ./gcc/config/m68k/t-mot3300-gas
-2294965883b ./gcc/config/m68k/t-mot3300-gld
-1947397845b ./gcc/config/m68k/t-next
-3937644742b ./gcc/config/m68k/t-openbsd
-2078063242b ./gcc/config/m68k/tower-as.h
-2265492461b ./gcc/config/m68k/tower.h
-2710264317b ./gcc/config/m68k/t-vxworks68
-2466779056b ./gcc/config/m68k/vxm68k.h
- 330782920b ./gcc/config/m68k/x-next
-3877749712b ./gcc/config/m88k/aout-dbx.h
-3964892058b ./gcc/config/m88k/dguxbcs.h
-2407166913b ./gcc/config/m88k/dgux.h
-3298414170b ./gcc/config/m88k/dgux.ld
-1645309935b ./gcc/config/m88k/dolph.h
-1558967450b ./gcc/config/m88k/dolphin.ld
- 27544745b ./gcc/config/m88k/luna.h
-1097971558b ./gcc/config/m88k/m88k-aout.h
- 382352310b ./gcc/config/m88k/m88k.c
- 929158884b ./gcc/config/m88k/m88k-coff.h
-2252790221b ./gcc/config/m88k/m88k.h
- 249987577b ./gcc/config/m88k/m88k.md
-2372325319b ./gcc/config/m88k/m88k-move.sh
- 192457426b ./gcc/config/m88k/m88k-protos.h
-3182883703b ./gcc/config/m88k/openbsd.h
-2062420508b ./gcc/config/m88k/sysv3.h
-2064243939b ./gcc/config/m88k/sysv4.h
-1952601632b ./gcc/config/m88k/t-bug
-3570488521b ./gcc/config/m88k/t-dgux
-1929747752b ./gcc/config/m88k/t-dguxbcs
- 185935036b ./gcc/config/m88k/t-dgux-gas
- 141637502b ./gcc/config/m88k/t-dolph
-3899935761b ./gcc/config/m88k/tekXD88.h
- 173867895b ./gcc/config/m88k/tekXD88.ld
-2294317049b ./gcc/config/m88k/t-luna
-3352809625b ./gcc/config/m88k/t-luna-gas
-1952601632b ./gcc/config/m88k/t-m88k
-2909533034b ./gcc/config/m88k/t-m88k-gas
-3580877409b ./gcc/config/m88k/t-sysv4
-3049523840b ./gcc/config/m88k/t-tekXD88
-4057462442b ./gcc/config/mcore/crti.asm
-3021138350b ./gcc/config/mcore/crtn.asm
-3514021936b ./gcc/config/mcore/gfloat.h
-3510059529b ./gcc/config/mcore/lib1.asm
-2263673310b ./gcc/config/mcore/mcore.c
- 511751417b ./gcc/config/mcore/mcore-elf.h
-2030700230b ./gcc/config/mcore/mcore.h
- 400725302b ./gcc/config/mcore/mcore.md
-3984142890b ./gcc/config/mcore/mcore-pe.h
- 149272234b ./gcc/config/mcore/mcore-protos.h
-1343396749b ./gcc/config/mcore/t-mcore
-2921008064b ./gcc/config/mcore/t-mcore-pe
-1252529019b ./gcc/config/mips/abi64.h
-1865003947b ./gcc/config/mips/bsd-4.h
-2290247989b ./gcc/config/mips/bsd-5.h
- 930726788b ./gcc/config/mips/cross64.h
-1227388398b ./gcc/config/mips/crti.asm
-1600482981b ./gcc/config/mips/crtn.asm
-3317633569b ./gcc/config/mips/dec-bsd.h
-4118299381b ./gcc/config/mips/dec-osf1.h
-1910637049b ./gcc/config/mips/ecoff.h
-3551974985b ./gcc/config/mips/ecoffl.h
-1974114900b ./gcc/config/mips/elf64.h
-1297779950b ./gcc/config/mips/elf.h
-1175169006b ./gcc/config/mips/elfl64.h
-4118432176b ./gcc/config/mips/elfl.h
- 452497001b ./gcc/config/mips/elflorion.h
-4210328521b ./gcc/config/mips/elforion.h
-4009674128b ./gcc/config/mips/iris3.h
-3161243087b ./gcc/config/mips/iris4.h
-2743944992b ./gcc/config/mips/iris4loser.h
-1342606731b ./gcc/config/mips/iris5gas.h
-4137712676b ./gcc/config/mips/iris5.h
-2290690324b ./gcc/config/mips/iris6gld.h
-2714897906b ./gcc/config/mips/iris6.h
-3658812670b ./gcc/config/mips/irix6-libc-compat.c
-3639703657b ./gcc/config/mips/isa3264.h
-3645898751b ./gcc/config/mips/isa32-linux.h
-1922092548b ./gcc/config/mips/linux.h
-2202363688b ./gcc/config/mips/little.h
-2024693888b ./gcc/config/mips/mips16.S
-3112223626b ./gcc/config/mips/mips-5.h
-4175300921b ./gcc/config/mips/mips.c
-1450296441b ./gcc/config/mips/mips.h
-3326013566b ./gcc/config/mips/mips.md
-4191298187b ./gcc/config/mips/mips-protos.h
-3451330990b ./gcc/config/mips/netbsd.h
-1685635385b ./gcc/config/mips/news4.h
-3776131275b ./gcc/config/mips/news5.h
- 807792414b ./gcc/config/mips/nws3250v4.h
- 391873849b ./gcc/config/mips/openbsd-be.h
-2082964611b ./gcc/config/mips/openbsd.h
- 14433004b ./gcc/config/mips/osfrose.h
- 440031462b ./gcc/config/mips/r3900.h
-1390680376b ./gcc/config/mips/rtems64.h
- 725646271b ./gcc/config/mips/rtems.h
-4240783400b ./gcc/config/mips/sni-gas.h
- 670897314b ./gcc/config/mips/sni-svr4.h
-3194520655b ./gcc/config/mips/svr3-4.h
- 767984692b ./gcc/config/mips/svr3-5.h
-2860455593b ./gcc/config/mips/svr4-4.h
- 980733461b ./gcc/config/mips/svr4-5.h
-2452459111b ./gcc/config/mips/svr4-t.h
-2607420510b ./gcc/config/mips/t-bsd
-2303697534b ./gcc/config/mips/t-bsd-gas
-3044783963b ./gcc/config/mips/t-cross64
-3379398326b ./gcc/config/mips/t-ecoff
-3744526568b ./gcc/config/mips/t-elf
-2896429436b ./gcc/config/mips/t-iris
-1323445357b ./gcc/config/mips/t-iris6
-2995723142b ./gcc/config/mips/t-isa3264
-3174612276b ./gcc/config/mips/t-linux
-3174612276b ./gcc/config/mips/t-netbsd
-1879935135b ./gcc/config/mips/t-r3900
-1413700483b ./gcc/config/mips/t-svr3
-3653081423b ./gcc/config/mips/t-svr3-gas
- 764398973b ./gcc/config/mips/t-svr4
-2691764145b ./gcc/config/mips/t-svr4-gas
-1592869717b ./gcc/config/mips/t-ultrix
- 904152708b ./gcc/config/mips/ultrix.h
-2931924525b ./gcc/config/mips/vxworks.h
-3454112118b ./gcc/config/mips/xm-iris5.h
-1256346916b ./gcc/config/mmix/crti.asm
-4149276856b ./gcc/config/mmix/crtn.asm
-1365569292b ./gcc/config/mmix/mmix.c
-3912110255b ./gcc/config/mmix/mmix.h
- 785535891b ./gcc/config/mmix/mmix.md
-1558302901b ./gcc/config/mmix/mmix-protos.h
-1410017015b ./gcc/config/mmix/t-mmix
- 38698671b ./gcc/config/mn10200/lib1funcs.asm
- 585104722b ./gcc/config/mn10200/mn10200.c
-3521160628b ./gcc/config/mn10200/mn10200.h
-1601326717b ./gcc/config/mn10200/mn10200.md
-4029388596b ./gcc/config/mn10200/mn10200-protos.h
-2767557893b ./gcc/config/mn10200/t-mn10200
- 62398656b ./gcc/config/mn10300/mn10300.c
-2168100301b ./gcc/config/mn10300/mn10300.h
- 680410204b ./gcc/config/mn10300/mn10300.md
-3249413352b ./gcc/config/mn10300/mn10300-protos.h
-3295955402b ./gcc/config/mn10300/t-mn10300
-3969750295b ./gcc/config/netbsd-aout.h
-2304062656b ./gcc/config/netbsd-elf.h
-1669681271b ./gcc/config/netbsd.h
-3670236471b ./gcc/config/netware.h
-3498035575b ./gcc/config/nextstep21.h
- 884710202b ./gcc/config/nextstep.c
- 251016432b ./gcc/config/nextstep.h
-2525790015b ./gcc/config/nextstep-protos.h
- 505151767b ./gcc/config/ns32k/encore.h
-3294809321b ./gcc/config/ns32k/merlin.h
-1759962800b ./gcc/config/ns32k/netbsd.h
-1296740637b ./gcc/config/ns32k/ns32k.c
-1493984519b ./gcc/config/ns32k/ns32k.h
-1903185806b ./gcc/config/ns32k/ns32k.md
-1708247420b ./gcc/config/ns32k/ns32k-protos.h
-3974800750b ./gcc/config/ns32k/pc532.h
- 104963810b ./gcc/config/ns32k/pc532-mach.h
-1249730935b ./gcc/config/ns32k/pc532-min.h
-1951152204b ./gcc/config/ns32k/sequent.h
-3970632321b ./gcc/config/ns32k/tek6000.h
- 906085514b ./gcc/config/ns32k/tek6100.h
-3417438490b ./gcc/config/ns32k/tek6200.h
- 247387334b ./gcc/config/openbsd.h
-2401043639b ./gcc/config/pa/elf.h
-1435423353b ./gcc/config/pa/lib1funcs.asm
- 454965220b ./gcc/config/pa/lib2funcs.asm
-2056209887b ./gcc/config/pa/long_double.h
-2062031370b ./gcc/config/pa/milli32.S
- 401709680b ./gcc/config/pa/milli64.S
-2660241824b ./gcc/config/pa/pa32-linux.h
-3627454173b ./gcc/config/pa/pa32-regs.h
- 255410879b ./gcc/config/pa/pa-64.h
-2399407521b ./gcc/config/pa/pa64-hpux.h
-4127689659b ./gcc/config/pa/pa64-linux.h
- 106717215b ./gcc/config/pa/pa64-regs.h
-3813586304b ./gcc/config/pa/pa64-start.h
-2253880751b ./gcc/config/pa/pa.c
-4124147372b ./gcc/config/pa/pa.h
-2070570431b ./gcc/config/pa/pa-hiux.h
- 722967032b ./gcc/config/pa/pa-hpux10.h
-3160109858b ./gcc/config/pa/pa-hpux11.h
-3949639215b ./gcc/config/pa/pa-hpux7.h
-3124002443b ./gcc/config/pa/pa-hpux9.h
-2419055394b ./gcc/config/pa/pa-hpux.h
-2614885764b ./gcc/config/pa/pa-linux.h
-2396760795b ./gcc/config/pa/pa.md
-3618123809b ./gcc/config/pa/pa-oldas.h
-3108768032b ./gcc/config/pa/pa-osf.h
-2360373262b ./gcc/config/pa/pa-pro-end.h
-1408239843b ./gcc/config/pa/pa-protos.h
-1224647575b ./gcc/config/pa/quadlib.c
- 17931766b ./gcc/config/pa/rtems.h
- 971757202b ./gcc/config/pa/som.h
- 299977776b ./gcc/config/pa/t-bsd
-1117935804b ./gcc/config/pa/t-dce-thr
-4044826599b ./gcc/config/pa/t-hpux-shlib
- 176583881b ./gcc/config/pa/t-linux
-3127053933b ./gcc/config/pa/t-linux64
-1211178790b ./gcc/config/pa/t-mpeix
-3597581162b ./gcc/config/pa/t-pa
-1659865778b ./gcc/config/pa/t-pa64
-2754633370b ./gcc/config/pa/t-pa-hpux
- 817714064b ./gcc/config/pa/t-pro
-1293323254b ./gcc/config/pa/x-ada
-4118902235b ./gcc/config/pdp11/2bsd.h
-3233992791b ./gcc/config/pdp11/pdp11.c
-3228770397b ./gcc/config/pdp11/pdp11.h
-3587948093b ./gcc/config/pdp11/pdp11.md
-1678731791b ./gcc/config/pdp11/pdp11-protos.h
-3096460014b ./gcc/config/pdp11/t-pdp11
-1460345365b ./gcc/config/pj/lib1funcs.S
-3899085832b ./gcc/config/pj/linux.h
-3905905230b ./gcc/config/pj/pj.c
-2997103714b ./gcc/config/pj/pj.h
- 140528803b ./gcc/config/pj/pjl.h
-4115579495b ./gcc/config/pj/pj.md
- 827420337b ./gcc/config/pj/pj-protos.h
-3942936368b ./gcc/config/pj/t-pj
-1311052798b ./gcc/config/psos.h
-1638983603b ./gcc/config/ptx4.h
-3917072699b ./gcc/config/README
-1415145997b ./gcc/config/romp/romp.c
-4030226328b ./gcc/config/romp/romp.h
-4096557609b ./gcc/config/romp/romp.md
-1229374838b ./gcc/config/romp/romp-protos.h
-3731158896b ./gcc/config/rs6000/aix31.h
-2741987967b ./gcc/config/rs6000/aix3newas.h
-1702283472b ./gcc/config/rs6000/aix41.h
-1402586921b ./gcc/config/rs6000/aix43.h
-1428773917b ./gcc/config/rs6000/aix51.h
- 676923459b ./gcc/config/rs6000/aix.h
-1953946692b ./gcc/config/rs6000/altivec-defs.h
-3231976674b ./gcc/config/rs6000/altivec.h
- 510508394b ./gcc/config/rs6000/beos.h
- 511519789b ./gcc/config/rs6000/crtsavres.asm
- 362681124b ./gcc/config/rs6000/darwin.h
-3983537248b ./gcc/config/rs6000/darwin-tramp.asm
- 318728404b ./gcc/config/rs6000/eabiaix.h
-1991998428b ./gcc/config/rs6000/eabialtivec.h
-2647778291b ./gcc/config/rs6000/eabi.asm
- 383867253b ./gcc/config/rs6000/eabi-ci.asm
-3758141774b ./gcc/config/rs6000/eabi-cn.asm
-4071223554b ./gcc/config/rs6000/eabi.h
-1258445797b ./gcc/config/rs6000/eabisim.h
-3017082484b ./gcc/config/rs6000/freebsd.h
-4293496085b ./gcc/config/rs6000/gnu.h
-1281642247b ./gcc/config/rs6000/linux64.h
-1351560312b ./gcc/config/rs6000/linuxaltivec.h
-3642990693b ./gcc/config/rs6000/linux.h
-1286374006b ./gcc/config/rs6000/lynx.h
-4204979131b ./gcc/config/rs6000/mach.h
-1820610909b ./gcc/config/rs6000/milli.exp
- 926081320b ./gcc/config/rs6000/netbsd.h
-4127185084b ./gcc/config/rs6000/ppc-asm.h
-2628430224b ./gcc/config/rs6000/rs6000.c
-1882734550b ./gcc/config/rs6000/rs6000.h
-1182996779b ./gcc/config/rs6000/rs6000.md
-4107218804b ./gcc/config/rs6000/rs6000-protos.h
-1817513646b ./gcc/config/rs6000/rtems.h
-2439652147b ./gcc/config/rs6000/softfloat.h
-3703627966b ./gcc/config/rs6000/sol-ci.asm
-3016810975b ./gcc/config/rs6000/sol-cn.asm
-1082828955b ./gcc/config/rs6000/sysv4.h
-3795959522b ./gcc/config/rs6000/sysv4le.h
- 781650112b ./gcc/config/rs6000/t-aix43
-2042460673b ./gcc/config/rs6000/t-beos
-3302666617b ./gcc/config/rs6000/t-darwin
-2019934202b ./gcc/config/rs6000/t-linux64
-4049449059b ./gcc/config/rs6000/t-newas
-3107528900b ./gcc/config/rs6000/t-ppccomm
- 365048301b ./gcc/config/rs6000/t-ppcgas
-3552141086b ./gcc/config/rs6000/t-ppcos
- 85679922b ./gcc/config/rs6000/tramp.asm
- 946774617b ./gcc/config/rs6000/t-rs6000
- 301220496b ./gcc/config/rs6000/vxppc.h
- 950192882b ./gcc/config/rs6000/xcoff.h
-1142085470b ./gcc/config/rtems.h
-3390348482b ./gcc/config/s390/fixdfdi.h
-1234245155b ./gcc/config/s390/libgcc-glibc.ver
- 661638700b ./gcc/config/s390/linux.h
-3979416840b ./gcc/config/s390/s390.c
-2354192299b ./gcc/config/s390/s390.h
-2229281672b ./gcc/config/s390/s390.md
-1407420306b ./gcc/config/s390/s390-protos.h
-3998835120b ./gcc/config/s390/s390x.h
-1051100452b ./gcc/config/s390/t-linux
-2020003531b ./gcc/config/s390/t-linux64
- 41732123b ./gcc/config/sh/crt1.asm
- 643557115b ./gcc/config/sh/crti.asm
- 567573801b ./gcc/config/sh/crtn.asm
-1588713186b ./gcc/config/sh/elf.h
-3107978185b ./gcc/config/sh/lib1funcs.asm
- 450228266b ./gcc/config/sh/linux.h
-2022181827b ./gcc/config/sh/rtemself.h
-1498631144b ./gcc/config/sh/rtems.h
-1071738647b ./gcc/config/sh/sh64.h
-3254166331b ./gcc/config/sh/sh.c
-3738163077b ./gcc/config/sh/sh.h
-1738052341b ./gcc/config/sh/sh.md
-3656510246b ./gcc/config/sh/shmedia.h
- 410816511b ./gcc/config/sh/sh-protos.h
-4192915538b ./gcc/config/sh/sshmedia.h
-3555569248b ./gcc/config/sh/t-elf
-3486728930b ./gcc/config/sh/t-linux
-2597458196b ./gcc/config/sh/t-sh
- 672246409b ./gcc/config/sh/t-sh64
-2893164163b ./gcc/config/sh/ushmedia.h
-1926756242b ./gcc/config/sparc/aout.h
-3461838008b ./gcc/config/sparc/biarch64.h
-1386942151b ./gcc/config/sparc/bsd.h
-1479022830b ./gcc/config/sparc/crtfastmath.c
- 54964474b ./gcc/config/sparc/elf.h
-1883862361b ./gcc/config/sparc/freebsd.h
-1322899413b ./gcc/config/sparc/gmon-sol2.c
-3746795534b ./gcc/config/sparc/hal.h
-3587954192b ./gcc/config/sparc/lb1spc.asm
- 557614974b ./gcc/config/sparc/lb1spl.asm
-1761187951b ./gcc/config/sparc/libgcc-sparc-glibc.ver
- 753491459b ./gcc/config/sparc/linux64.h
-2544415545b ./gcc/config/sparc/linux-aout.h
-1914379195b ./gcc/config/sparc/linux.h
-2163445162b ./gcc/config/sparc/litecoff.h
-1933660745b ./gcc/config/sparc/liteelf.h
-2424336991b ./gcc/config/sparc/lite.h
-2399395336b ./gcc/config/sparc/lynx.h
-2334021382b ./gcc/config/sparc/lynx-ng.h
-3811927118b ./gcc/config/sparc/netbsd-elf.h
- 365271853b ./gcc/config/sparc/netbsd.h
-1122827784b ./gcc/config/sparc/openbsd1-64.h
-1977030271b ./gcc/config/sparc/openbsd64.h
- 349992599b ./gcc/config/sparc/openbsd.h
-3728184707b ./gcc/config/sparc/pbd.h
-2243601282b ./gcc/config/sparc/rtemself.h
-4106236389b ./gcc/config/sparc/rtems.h
-1579903847b ./gcc/config/sparc/sol2-64.h
-2488307215b ./gcc/config/sparc/sol27-sld.h
-1510111749b ./gcc/config/sparc/sol2-bi.h
-1463670426b ./gcc/config/sparc/sol2-c1.asm
-3288323690b ./gcc/config/sparc/sol2-ci.asm
-2004370404b ./gcc/config/sparc/sol2-cn.asm
-2182182911b ./gcc/config/sparc/sol2-g1.asm
- 878755050b ./gcc/config/sparc/sol2-gas-bi.h
-3173831404b ./gcc/config/sparc/sol2-gld-bi.h
-4206582763b ./gcc/config/sparc/sol2-gld.h
-2455246824b ./gcc/config/sparc/sol2.h
-3918002150b ./gcc/config/sparc/sp64-aout.h
-2870886299b ./gcc/config/sparc/sp64-elf.h
-3128199560b ./gcc/config/sparc/sp86x-aout.h
-1221714757b ./gcc/config/sparc/sp86x-elf.h
-2169834781b ./gcc/config/sparc/sparc.c
-3432806460b ./gcc/config/sparc/sparc.h
- 879790849b ./gcc/config/sparc/sparc.md
-4023359087b ./gcc/config/sparc/sparc-protos.h
- 842964351b ./gcc/config/sparc/splet.h
- 952337645b ./gcc/config/sparc/sun4gas.h
-1795303911b ./gcc/config/sparc/sun4o3.h
- 721602587b ./gcc/config/sparc/sunos4.h
- 14508846b ./gcc/config/sparc/sysv4.h
-2782836992b ./gcc/config/sparc/t-chorus-elf
-2056024669b ./gcc/config/sparc/t-crtfm
-3744055768b ./gcc/config/sparc/t-elf
-1582758741b ./gcc/config/sparc/t-halos
-2435625847b ./gcc/config/sparc/t-linux64
-1132426437b ./gcc/config/sparc/t-netbsd64
-1190032917b ./gcc/config/sparc/t-openbsd
- 851768603b ./gcc/config/sparc/t-sol2
-3560385692b ./gcc/config/sparc/t-sol2-64
-4194854877b ./gcc/config/sparc/t-sp86x
-2727045329b ./gcc/config/sparc/t-sparcbare
-1324996929b ./gcc/config/sparc/t-sparclite
-4249538597b ./gcc/config/sparc/t-splet
-1776401931b ./gcc/config/sparc/t-sunos41
-3082115393b ./gcc/config/sparc/t-vxsparc
-3638105138b ./gcc/config/sparc/t-vxsparc64
-2444638453b ./gcc/config/sparc/vxsim.h
-3450727705b ./gcc/config/sparc/vxsparc64.h
-1610820992b ./gcc/config/sparc/vxsparc.h
-1548984109b ./gcc/config/stormy16/stormy16.c
-3776989782b ./gcc/config/stormy16/stormy16.h
-4011003560b ./gcc/config/stormy16/stormy16-lib2.c
- 552174638b ./gcc/config/stormy16/stormy16.md
-2190947530b ./gcc/config/stormy16/stormy16-protos.h
-1002673818b ./gcc/config/stormy16/stormy-abi
-3561720924b ./gcc/config/stormy16/t-stormy16
-2159505844b ./gcc/config/svr3.h
-4237693824b ./gcc/config/svr4.h
-2749923948b ./gcc/config/t-freebsd
-3853732254b ./gcc/config/t-freebsd-thread
-2512129728b ./gcc/config/t-gnu
-3050012299b ./gcc/config/t-install-cpp
- 825269638b ./gcc/config/t-interix
-1047761087b ./gcc/config/t-libc-ok
-2753685882b ./gcc/config/t-libgcc-pic
-2712900964b ./gcc/config/t-linux
- 825269638b ./gcc/config/t-linux-aout
-3205817010b ./gcc/config/t-linux-gnulibc1
- 121353396b ./gcc/config/tm-dwarf2.h
- 825269638b ./gcc/config/t-netbsd
-2903849127b ./gcc/config/t-openbsd
-2917904648b ./gcc/config/t-openbsd-thread
-2246241652b ./gcc/config/t-rtems
-2258421829b ./gcc/config/t-slibgcc-elf-ver
-2124668958b ./gcc/config/t-slibgcc-nolc-override
-1896414626b ./gcc/config/t-slibgcc-sld
- 321200235b ./gcc/config/t-svr4
- 937080303b ./gcc/config/udivmod.c
-2590328114b ./gcc/config/udivmodsi4.c
-2291528331b ./gcc/configure
-2239237249b ./gcc/configure.frag
-4254063890b ./gcc/configure.in
-1401546799b ./gcc/config/usegas.h
-1330961877b ./gcc/config/v850/lib1funcs.asm
-3345272584b ./gcc/config/v850/rtems.h
-3046767615b ./gcc/config/v850/t-v850
-2149356335b ./gcc/config/v850/v850.c
-4072890677b ./gcc/config/v850/v850-c.c
-1028297694b ./gcc/config/v850/v850.h
-2739963548b ./gcc/config/v850/v850.md
-1229280760b ./gcc/config/v850/v850-protos.h
- 678831326b ./gcc/config/vax/netbsd.h
-3271953013b ./gcc/config/vax/openbsd1.h
-2993271330b ./gcc/config/vax/openbsd.h
-1070068995b ./gcc/config/vax/ultrix.h
-3091217209b ./gcc/config/vax/vax.c
-3909127338b ./gcc/config/vax/vax.h
- 657520682b ./gcc/config/vax/vax.md
-3894216269b ./gcc/config/vax/vax-protos.h
-3118052779b ./gcc/config/vax/vaxv.h
-1265968606b ./gcc/config/vax/vms.h
-1260653442b ./gcc/config/vax/xm-vms.h
- 560039799b ./gcc/config/we32k/we32k.c
- 423633273b ./gcc/config/we32k/we32k.h
-3169968881b ./gcc/config/we32k/we32k.md
-2514844092b ./gcc/config/we32k/we32k-protos.h
-2711497169b ./gcc/config/x-interix
-1151914555b ./gcc/config/xtensa/elf.h
-1027874511b ./gcc/config/xtensa/lib1funcs.asm
-3621223618b ./gcc/config/xtensa/lib2funcs.S
-2321639494b ./gcc/config/xtensa/linux.h
-3617796239b ./gcc/config/xtensa/t-xtensa
- 221057176b ./gcc/config/xtensa/xtensa.c
-2796950173b ./gcc/config/xtensa/xtensa-config.h
-3802608261b ./gcc/config/xtensa/xtensa.h
-1183159023b ./gcc/config/xtensa/xtensa.md
-2389425253b ./gcc/config/xtensa/xtensa-protos.h
-3382606314b ./gcc/conflict.c
-2854418854b ./gcc/convert.c
-2020855935b ./gcc/convert.h
-2171125041b ./gcc/COPYING
- 508743035b ./gcc/COPYING.LIB
-1845167332b ./gcc/c-parse.c
- 300639623b ./gcc/c-parse.in
- 492383053b ./gcc/c-parse.y
- 211407592b ./gcc/cp/call.c
-4115552602b ./gcc/cp/cfns.gperf
-1705070232b ./gcc/cp/cfns.h
- 696338438b ./gcc/cp/ChangeLog
-2221404065b ./gcc/cp/ChangeLog.1
-2127340768b ./gcc/cp/ChangeLog.2
-2546444747b ./gcc/cp/ChangeLog.egcs
-3828154577b ./gcc/cp/class.c
-1309293181b ./gcc/cp/config-lang.in
-4084279121b ./gcc/cp/cp-lang.c
-2928114977b ./gcc/cp/cp-tree.def
-4216823168b ./gcc/cp/cp-tree.h
-1230086821b ./gcc/cp/.cvsignore
- 106302269b ./gcc/cp/cvt.c
- 276724828b ./gcc/cp/decl2.c
-3891994909b ./gcc/cp/decl.c
-3040950596b ./gcc/cp/decl.h
-1503739344b ./gcc/cp/dump.c
-1402846352b ./gcc/cp/error.c
-1298672024b ./gcc/cp/except.c
-2612079645b ./gcc/cp/expr.c
- 728682437b ./gcc/cp/friend.c
-1574667259b ./gcc/cp/g++.1
-3180385434b ./gcc/cp/g++spec.c
-1504087345b ./gcc/cp/init.c
-3812650249b ./gcc/cp/lang-options.h
-2714092533b ./gcc/cp/lang-specs.h
-1945319355b ./gcc/cp/lex.c
-2280147967b ./gcc/cp/lex.h
-2683095257b ./gcc/cp/Make-lang.in
-1932648807b ./gcc/cp/mangle.c
-3212394829b ./gcc/cp/method.c
- 701335209b ./gcc/cp/mpw-config.in
-4041177245b ./gcc/cp/mpw-make.sed
-3379488726b ./gcc/cp/NEWS
-3146548402b ./gcc/cp/operators.def
- 622478745b ./gcc/cp/optimize.c
-2202196704b ./gcc/cp/parse.c
- 24533096b ./gcc/cp/parse.h
-1414382616b ./gcc/cp/parse.y
-1602205564b ./gcc/cppdefault.c
- 733799898b ./gcc/cppdefault.h
-3582099799b ./gcc/cpperror.c
-4072103215b ./gcc/cppexp.c
-2221722550b ./gcc/cppfiles.c
-2283152717b ./gcc/cpphash.c
-3545195852b ./gcc/cpphash.h
-2419669468b ./gcc/cppinit.c
- 201524367b ./gcc/cpplex.c
-2222966585b ./gcc/cpplib.c
-3414601474b ./gcc/cpplib.h
-3518489790b ./gcc/cppmacro.c
-2363485754b ./gcc/cppmain.c
-3972345626b ./gcc/cppspec.c
-3092071067b ./gcc/cp/pt.c
-1408553642b ./gcc/cp/ptree.c
- 73956308b ./gcc/c-pragma.c
-1212765089b ./gcc/c-pragma.h
-3993964584b ./gcc/cp/repo.c
-1891418656b ./gcc/cp/rtti.c
-1831732259b ./gcc/cp/search.c
-1562130475b ./gcc/cp/semantics.c
-2648162646b ./gcc/cp/spew.c
-3766127741b ./gcc/cp/tree.c
-1284974262b ./gcc/cp/typeck2.c
-3575565334b ./gcc/cp/typeck.c
-2032357073b ./gcc/crtstuff.c
-3365219033b ./gcc/cse.c
-1706957017b ./gcc/cselib.c
-3914093915b ./gcc/cselib.h
-2383555787b ./gcc/c-semantics.c
- 216805921b ./gcc/cstamp-h.in
-2780104305b ./gcc/c-tree.h
-1526402625b ./gcc/c-typeck.c
-4208197548b ./gcc/.cvsignore
-1308064076b ./gcc/dbxout.c
-2583180678b ./gcc/dbxout.h
-1104788844b ./gcc/dbxstclass.h
-2470087149b ./gcc/debug.c
- 178689220b ./gcc/debug.h
- 852153964b ./gcc/defaults.h
-2369804086b ./gcc/dependence.c
-2491556822b ./gcc/df.c
-3792421516b ./gcc/df.h
-1042165669b ./gcc/diagnostic.c
-1311569781b ./gcc/diagnostic.def
-4192732570b ./gcc/diagnostic.h
- 23600501b ./gcc/doc/bugreport.texi
-2815010075b ./gcc/doc/collect2.texi
-3060436631b ./gcc/doc/compat.texi
-2785243168b ./gcc/doc/configfiles.texi
-3399730921b ./gcc/doc/configterms.texi
-2163122922b ./gcc/doc/contrib.texi
-2272556046b ./gcc/doc/contribute.texi
- 299886887b ./gcc/doc/cpp.1
-1838233798b ./gcc/doc/cppenv.texi
- 942037060b ./gcc/doc/cpp.info
- 579743374b ./gcc/doc/cpp.info-1
-3971167691b ./gcc/doc/cpp.info-2
-3217640916b ./gcc/doc/cpp.info-3
-3238131507b ./gcc/doc/cpp.info-4
- 113743627b ./gcc/doc/cpp.info-5
-4128300115b ./gcc/doc/cppinternals.info
-1958814700b ./gcc/doc/cppinternals.texi
- 685869710b ./gcc/doc/cppopts.texi
-3543132597b ./gcc/doc/cpp.texi
-3813743019b ./gcc/doc/c-tree.texi
-1471878644b ./gcc/doc/.cvsignore
-1477628931b ./gcc/doc/extend.texi
-2634996326b ./gcc/doc/fragments.texi
- 600815516b ./gcc/doc/frontends.texi
-4060734459b ./gcc/doc/fsf-funding.7
-2701882048b ./gcc/doc/gcc.1
-3771908520b ./gcc/doc/gcc.info
-1921369526b ./gcc/doc/gcc.info-1
- 809288507b ./gcc/doc/gcc.info-10
- 937687037b ./gcc/doc/gcc.info-11
-2472794790b ./gcc/doc/gcc.info-12
-3020319333b ./gcc/doc/gcc.info-13
-3100556077b ./gcc/doc/gcc.info-14
-2100335389b ./gcc/doc/gcc.info-15
-1973326326b ./gcc/doc/gcc.info-16
-4233127554b ./gcc/doc/gcc.info-17
-1177537033b ./gcc/doc/gcc.info-18
-2957434958b ./gcc/doc/gcc.info-19
- 546744273b ./gcc/doc/gcc.info-2
-4179571895b ./gcc/doc/gcc.info-20
- 503977090b ./gcc/doc/gcc.info-21
-3135435025b ./gcc/doc/gcc.info-22
- 766898990b ./gcc/doc/gcc.info-23
- 177802939b ./gcc/doc/gcc.info-3
- 300919832b ./gcc/doc/gcc.info-4
-3173162766b ./gcc/doc/gcc.info-5
- 523405852b ./gcc/doc/gcc.info-6
-4075929926b ./gcc/doc/gcc.info-7
-1604498314b ./gcc/doc/gcc.info-8
- 701416922b ./gcc/doc/gcc.info-9
-1334526965b ./gcc/doc/gccint.info
-3600548089b ./gcc/doc/gccint.info-1
-1504619998b ./gcc/doc/gccint.info-10
-3473339140b ./gcc/doc/gccint.info-11
- 121842836b ./gcc/doc/gccint.info-12
-4274041826b ./gcc/doc/gccint.info-13
-3366735740b ./gcc/doc/gccint.info-14
-3485597023b ./gcc/doc/gccint.info-15
-1782892412b ./gcc/doc/gccint.info-16
-2959978575b ./gcc/doc/gccint.info-17
-4176515869b ./gcc/doc/gccint.info-18
-2985208404b ./gcc/doc/gccint.info-19
- 630391800b ./gcc/doc/gccint.info-2
- 202943203b ./gcc/doc/gccint.info-20
-3389515766b ./gcc/doc/gccint.info-21
- 244064775b ./gcc/doc/gccint.info-22
-3017009534b ./gcc/doc/gccint.info-23
-1907881660b ./gcc/doc/gccint.info-3
-1456140435b ./gcc/doc/gccint.info-4
- 645003639b ./gcc/doc/gccint.info-5
-2130774212b ./gcc/doc/gccint.info-6
-2788607605b ./gcc/doc/gccint.info-7
- 422138694b ./gcc/doc/gccint.info-8
-3245006523b ./gcc/doc/gccint.info-9
- 926520134b ./gcc/doc/gccint.texi
- 489956337b ./gcc/doc/gcc.texi
- 439884872b ./gcc/doc/gcov.1
-3165676809b ./gcc/doc/gcov.texi
- 41943876b ./gcc/doc/gfdl.7
-4217859569b ./gcc/doc/gnu.texi
-1434573161b ./gcc/doc/gpl.7
-2632697239b ./gcc/doc/headerdirs.texi
-1425599017b ./gcc/doc/hostconfig.texi
-1232987106b ./gcc/doc/include/fdl.texi
-2048065465b ./gcc/doc/include/funding.texi
-3327005891b ./gcc/doc/include/gcc-common.texi
-1416455933b ./gcc/doc/include/gpl.texi
-3627483023b ./gcc/doc/include/texinfo.tex
-4219640220b ./gcc/doc/install-old.texi
- 977716914b ./gcc/doc/install.texi
-1451529977b ./gcc/doc/install.texi2html
-1103982611b ./gcc/doc/interface.texi
-1690368898b ./gcc/doc/invoke.texi
-1327866291b ./gcc/doc/languages.texi
- 409601074b ./gcc/doc/makefile.texi
- 647485435b ./gcc/doc/md.texi
-2014418726b ./gcc/doc/objc.texi
- 285120363b ./gcc/doc/passes.texi
-2247614285b ./gcc/doc/portability.texi
-2576532070b ./gcc/doc/rtl.texi
-3603168219b ./gcc/doc/service.texi
-3643604442b ./gcc/doc/sourcebuild.texi
-2997941012b ./gcc/doc/standards.texi
-3195862103b ./gcc/doc/tm.texi
- 886635974b ./gcc/doc/trouble.texi
-3478556786b ./gcc/doc/vms.texi
-2482239883b ./gcc/doloop.c
-1033704706b ./gcc/dominance.c
-2791449994b ./gcc/doschk.c
- 31829346b ./gcc/dwarf2asm.c
-2077057275b ./gcc/dwarf2asm.h
-2184520814b ./gcc/dwarf2.h
-3548213262b ./gcc/dwarf2out.c
-1010158138b ./gcc/dwarf2out.h
- 109276966b ./gcc/dwarf.h
-3359840971b ./gcc/dwarfout.c
-1599988341b ./gcc/emit-rtl.c
- 626897841b ./gcc/enquire.c
-2953931641b ./gcc/errors.c
-3972701730b ./gcc/errors.h
-1431652736b ./gcc/except.c
-2826708782b ./gcc/except.h
- 908040152b ./gcc/explow.c
-1156766543b ./gcc/expmed.c
-3693001667b ./gcc/expr.c
-3115307664b ./gcc/expr.h
-1934744031b ./gcc/f/ansify.c
-1543506773b ./gcc/f/bad.c
-3978113547b ./gcc/f/bad.def
-2128126262b ./gcc/f/bad.h
-4003760421b ./gcc/f/bit.c
- 194938753b ./gcc/f/bit.h
- 948632599b ./gcc/f/bld.c
-3286267604b ./gcc/f/bld.h
-2128697889b ./gcc/f/bld-op.def
- 576635123b ./gcc/f/BUGS
- 235013049b ./gcc/f/bugs0.texi
- 158397208b ./gcc/f/bugs.texi
-2823422254b ./gcc/f/ChangeLog
-4225493150b ./gcc/f/ChangeLog.0
-1588166676b ./gcc/f/com.c
- 87369815b ./gcc/f/com.h
-2664732170b ./gcc/f/com-rt.def
- 535595698b ./gcc/f/config-lang.in
-1546791101b ./gcc/f/.cvsignore
-1011994563b ./gcc/f/data.c
-1923155684b ./gcc/f/data.h
-1611338677b ./gcc/f/equiv.c
-2175994638b ./gcc/f/equiv.h
-2251785098b ./gcc/f/expr.c
- 417834755b ./gcc/f/expr.h
-2351117682b ./gcc/f/ffe.texi
- 782070966b ./gcc/f/fini.c
-3506777541b ./gcc/f/g77.1
-3497434494b ./gcc/f/g77.info
-1405242906b ./gcc/f/g77.info-1
-4020360826b ./gcc/f/g77.info-10
-2010631566b ./gcc/f/g77.info-11
-2792393564b ./gcc/f/g77.info-12
-3461821628b ./gcc/f/g77.info-13
-1208071216b ./gcc/f/g77.info-14
-1936205287b ./gcc/f/g77.info-15
-2810069222b ./gcc/f/g77.info-16
- 259584195b ./gcc/f/g77.info-17
-4125227617b ./gcc/f/g77.info-18
- 254417931b ./gcc/f/g77.info-19
- 179100652b ./gcc/f/g77.info-2
- 26285497b ./gcc/f/g77.info-20
-3543736255b ./gcc/f/g77.info-21
- 116586643b ./gcc/f/g77.info-3
-3513135358b ./gcc/f/g77.info-4
- 676912166b ./gcc/f/g77.info-5
- 145000084b ./gcc/f/g77.info-6
-2563451928b ./gcc/f/g77.info-7
-3172593296b ./gcc/f/g77.info-8
-2848927902b ./gcc/f/g77.info-9
-2824974536b ./gcc/f/g77spec.c
-3054392079b ./gcc/f/g77.texi
-4062822261b ./gcc/f/global.c
-3559352394b ./gcc/f/global.h
-1392305407b ./gcc/f/implic.c
-3939649511b ./gcc/f/implic.h
-1237323857b ./gcc/final.c
-2287601317b ./gcc/f/info-b.def
-2342702754b ./gcc/f/info.c
-1115234844b ./gcc/f/info.h
-2535813338b ./gcc/f/info-k.def
-2242176401b ./gcc/f/info-w.def
-3953937189b ./gcc/f/intdoc.c
-3843015483b ./gcc/f/intdoc.in
-4069635816b ./gcc/f/intdoc.texi
-2410122381b ./gcc/f/intrin.c
-1048488593b ./gcc/f/intrin.def
-3418049706b ./gcc/f/intrin.h
-2243664841b ./gcc/f/invoke.texi
-2247789519b ./gcc/fix-header.c
-2894614091b ./gcc/fixinc/check.tpl
- 786772235b ./gcc/fixinc/fixfixes.c
-3110054233b ./gcc/fixinc/fixinc.dgux
- 15758129b ./gcc/fixinc/fixinc.interix
-1824978333b ./gcc/fixinc/fixincl.c
-4214658264b ./gcc/fixinc/fixincl.sh
-2178021789b ./gcc/fixinc/fixincl.tpl
-3312009046b ./gcc/fixinc/fixincl.x
-1474597097b ./gcc/fixinc/fixinc.ptx
-1901674452b ./gcc/fixinc/fixinc.svr4
-2193207840b ./gcc/fixinc/fixinc.winnt
-1439814780b ./gcc/fixinc/fixinc.wrap
-1372603529b ./gcc/fixinc/fixlib.c
- 971233728b ./gcc/fixinc/fixlib.h
-4013194329b ./gcc/fixinc/fixtests.c
-2003329934b ./gcc/fixinc/genfixes
- 605191257b ./gcc/fixinc/gnu-regex.c
-1403987073b ./gcc/fixinc/gnu-regex.h
-2194272133b ./gcc/fixinc/inclhack.def
-3390155447b ./gcc/fixinc/Makefile.in
-3327140809b ./gcc/fixinc/mkfixinc.sh
-1834585069b ./gcc/fixinc/procopen.c
-2750464368b ./gcc/fixinc/README
-1750379031b ./gcc/fixinc/server.c
-3490851801b ./gcc/fixinc/server.h
-1165473466b ./gcc/fixinc/tests/base/ansi/math.h
-3124694417b ./gcc/fixinc/tests/base/ansi/stdlib.h
-2980092932b ./gcc/fixinc/tests/base/arch/i960/archI960.h
-1062137968b ./gcc/fixinc/tests/base/arpa/inet.h
- 597415717b ./gcc/fixinc/tests/base/assert.h
-3220984809b ./gcc/fixinc/tests/base/bsd/libc.h
-1799847368b ./gcc/fixinc/tests/base/c_asm.h
-2725396384b ./gcc/fixinc/tests/base/ctrl-quotes-def-1.h
-3049981119b ./gcc/fixinc/tests/base/curses.h
-2909636960b ./gcc/fixinc/tests/base/fcntl.h
-3901972537b ./gcc/fixinc/tests/base/fixinc-test-limits.h
-4150745363b ./gcc/fixinc/tests/base/hsfs/hsfs_spec.h
-2118846136b ./gcc/fixinc/tests/base/inttypes.h
- 92918392b ./gcc/fixinc/tests/base/io-quotes-def-1.h
-2670651204b ./gcc/fixinc/tests/base/libgen.h
-1854625388b ./gcc/fixinc/tests/base/machine/cpu.h
- 114078425b ./gcc/fixinc/tests/base/malloc.h
-2389003803b ./gcc/fixinc/tests/base/math.h
-2373596333b ./gcc/fixinc/tests/base/netdnet/dnetdb.h
-4211518276b ./gcc/fixinc/tests/base/netinet/ip.h
-3107111098b ./gcc/fixinc/tests/base/pixrect/memvar.h
- 634408265b ./gcc/fixinc/tests/base/pthread.h
-2876721819b ./gcc/fixinc/tests/base/regex.h
- 351364386b ./gcc/fixinc/tests/base/reg_types.h
-2249464053b ./gcc/fixinc/tests/base/rpc/auth.h
-4166238922b ./gcc/fixinc/tests/base/rpc/rpc.h
- 778394431b ./gcc/fixinc/tests/base/rpc/svc.h
-1831085175b ./gcc/fixinc/tests/base/rpcsvc/rstat.h
-2162639252b ./gcc/fixinc/tests/base/rpcsvc/rusers.h
- 164451816b ./gcc/fixinc/tests/base/rpc/xdr.h
- 135186565b ./gcc/fixinc/tests/base/sparc/asm_linkage.h
-2925418517b ./gcc/fixinc/tests/base/stdio.h
-1529509815b ./gcc/fixinc/tests/base/stdio_tag.h
- 135522837b ./gcc/fixinc/tests/base/stdlib.h
-2941232612b ./gcc/fixinc/tests/base/strings.h
- 482468002b ./gcc/fixinc/tests/base/sundev/vuid_event.h
-1807434691b ./gcc/fixinc/tests/base/sunwindow/win_lock.h
- 124945712b ./gcc/fixinc/tests/base/sym.h
-3921290193b ./gcc/fixinc/tests/base/sys/asm.h
- 54324049b ./gcc/fixinc/tests/base/sys/byteorder.h
-1224260027b ./gcc/fixinc/tests/base/sys/cdefs.h
-1406575472b ./gcc/fixinc/tests/base/sys/file.h
-3052695740b ./gcc/fixinc/tests/base/sys/ioctl.h
- 912107621b ./gcc/fixinc/tests/base/sys/limits.h
- 645497489b ./gcc/fixinc/tests/base/sys/machine.h
-3274995808b ./gcc/fixinc/tests/base/sys/mman.h
-3800154687b ./gcc/fixinc/tests/base/sys/param.h
-3041640682b ./gcc/fixinc/tests/base/sys/signal.h
-2450632911b ./gcc/fixinc/tests/base/sys/spinlock.h
- 711604668b ./gcc/fixinc/tests/base/sys/stat.h
-2422167059b ./gcc/fixinc/tests/base/sys/time.h
-2994886866b ./gcc/fixinc/tests/base/sys/times.h
-1174710562b ./gcc/fixinc/tests/base/sys/types.h
-3923345847b ./gcc/fixinc/tests/base/sys/utsname.h
-3579560225b ./gcc/fixinc/tests/base/sys/wait.h
-2119077343b ./gcc/fixinc/tests/base/testing.h
- 10407256b ./gcc/fixinc/tests/base/time.h
-3845139066b ./gcc/fixinc/tests/base/tinfo.h
-4209310059b ./gcc/fixinc/tests/base/types/vxTypesBase.h
-3839547353b ./gcc/fixinc/tests/base/unistd.h
-1242753480b ./gcc/fixinc/tests/base/widec.h
-1516247519b ./gcc/fixinc/tests/base/X11/Intrinsic.h
-2715935838b ./gcc/fixinc/tests/base/X11/ShellP.h
-4147305037b ./gcc/fixinc/tests/base/X11/Xmu.h
-3373785317b ./gcc/fixinc/tests/base/Xm/BaseClassI.h
-1118590845b ./gcc/fixinc/tests/base/Xm/Traversal.h
-2236212838b ./gcc/fixproto
-1861938661b ./gcc/f/lab.c
-3674332618b ./gcc/f/lab.h
-3658835587b ./gcc/flags.h
- 136843109b ./gcc/f/lang-options.h
-1977846343b ./gcc/f/lang-specs.h
-4037310288b ./gcc/f/lex.c
- 722310274b ./gcc/f/lex.h
-1465737068b ./gcc/floatlib.c
- 959822363b ./gcc/flow.c
- 413109492b ./gcc/f/Make-lang.in
-3929672430b ./gcc/f/malloc.c
-1633854048b ./gcc/f/malloc.h
-2687881356b ./gcc/f/name.c
- 558328466b ./gcc/f/name.h
-2816874481b ./gcc/f/NEWS
-3453379674b ./gcc/f/news0.texi
- 273264189b ./gcc/f/news.texi
- 522369544b ./gcc/fold-const.c
-2696377463b ./gcc/f/parse.c
-1067232252b ./gcc/f/proj.h
-3820449811b ./gcc/fp-test.c
- 281424983b ./gcc/f/README
-3295584012b ./gcc/f/RELEASE-PREP
-3126162622b ./gcc/f/root.texi
-2146007539b ./gcc/FSFChangeLog
-4184732518b ./gcc/FSFChangeLog.10
-3797967515b ./gcc/FSFChangeLog.11
-3531682397b ./gcc/f/src.c
- 246620254b ./gcc/f/src.h
-3608541363b ./gcc/f/sta.c
- 520236030b ./gcc/f/sta.h
- 520927036b ./gcc/f/stb.c
-2810193132b ./gcc/f/stb.h
-3466162958b ./gcc/f/st.c
- 502694498b ./gcc/f/stc.c
-1751601456b ./gcc/f/stc.h
- 260229363b ./gcc/f/std.c
-1219390242b ./gcc/f/std.h
-2021799054b ./gcc/f/ste.c
-1786873989b ./gcc/f/ste.h
-1705988958b ./gcc/f/st.h
-1100581971b ./gcc/f/storag.c
- 790029114b ./gcc/f/storag.h
-2404416327b ./gcc/f/stp.c
-3782361290b ./gcc/f/stp.h
-3722860946b ./gcc/f/str-1t.fin
-2828127862b ./gcc/f/str-2t.fin
- 920153914b ./gcc/f/str.c
-4215029898b ./gcc/f/str-fo.fin
-2184386780b ./gcc/f/str.h
- 281471485b ./gcc/f/str-io.fin
-3735910053b ./gcc/f/str-nq.fin
-3134124633b ./gcc/f/str-op.fin
-2608567153b ./gcc/f/str-ot.fin
- 610725318b ./gcc/f/sts.c
-1450832819b ./gcc/f/sts.h
-2301635495b ./gcc/f/stt.c
- 514307919b ./gcc/f/stt.h
-3188469687b ./gcc/f/stu.c
- 166252279b ./gcc/f/stu.h
- 857063390b ./gcc/f/stv.c
- 971049710b ./gcc/f/stv.h
-2156320080b ./gcc/f/stw.c
-3741680211b ./gcc/f/stw.h
- 659922490b ./gcc/f/symbol.c
-1323122026b ./gcc/f/symbol.def
- 690030434b ./gcc/f/symbol.h
- 561154028b ./gcc/f/target.c
-1248104671b ./gcc/f/target.h
-2698043928b ./gcc/f/top.c
-2232338664b ./gcc/f/top.h
-3443401298b ./gcc/f/type.c
-2499934202b ./gcc/f/type.h
-3426758284b ./gcc/function.c
- 316231375b ./gcc/function.h
-3058774034b ./gcc/future.options
-3972775402b ./gcc/f/version.c
-1781447679b ./gcc/f/version.h
-3584291506b ./gcc/f/where.c
- 819940437b ./gcc/f/where.h
-1214866690b ./gcc/gbl-ctors.h
-2405976148b ./gcc/gccbug.in
-2534170090b ./gcc/gcc.c
- 960741132b ./gcc/gcc.h
-3093644366b ./gcc/gcc.hlp
-3633749318b ./gcc/gccspec.c
-3825112355b ./gcc/gcov.c
-4197147799b ./gcc/gcov-io.h
-1895463511b ./gcc/gcse.c
- 802469235b ./gcc/gdbinit.in
-3638083387b ./gcc/genattr.c
-3417344932b ./gcc/genattrtab.c
-2682166046b ./gcc/gencheck.c
-3810064934b ./gcc/gencodes.c
-2539346427b ./gcc/genconfig.c
-2631615302b ./gcc/genconstants.c
-1628507273b ./gcc/genemit.c
-2648961261b ./gcc/genextract.c
-2023228290b ./gcc/genflags.c
-2713590814b ./gcc/gengenrtl.c
-2574485728b ./gcc/genmultilib
-1384421270b ./gcc/genopinit.c
-4030468350b ./gcc/genoutput.c
-2221468101b ./gcc/genpeep.c
- 345520579b ./gcc/genpreds.c
-4293398944b ./gcc/gen-protos.c
-1766167058b ./gcc/genrecog.c
-3076545551b ./gcc/gensupport.c
-1823528383b ./gcc/gensupport.h
-2561993607b ./gcc/ggc-callbacks.c
- 831448355b ./gcc/ggc-common.c
-1613425309b ./gcc/ggc.h
-1943428995b ./gcc/ggc-none.c
- 914540366b ./gcc/ggc-page.c
-3876596452b ./gcc/ggc-simple.c
- 684549565b ./gcc/ginclude/iso646.h
- 956736189b ./gcc/ginclude/stdarg.h
-4095609490b ./gcc/ginclude/stdbool.h
- 917377878b ./gcc/ginclude/stddef.h
- 673473982b ./gcc/ginclude/varargs.h
-1222982330b ./gcc/glimits.h
- 807066606b ./gcc/global.c
- 991678839b ./gcc/gmon.c
-4262862037b ./gcc/graph.c
-2272086758b ./gcc/graph.h
-2006423200b ./gcc/gstab.h
-2040904551b ./gcc/gsyms.h
- 808024354b ./gcc/gsyslimits.h
-2343151743b ./gcc/gthr-aix.h
-3203810708b ./gcc/gthr-dce.h
- 925349290b ./gcc/gthr.h
-1931993243b ./gcc/gthr-posix.h
-2000135006b ./gcc/gthr-rtems.h
-1258851302b ./gcc/gthr-single.h
-3966292684b ./gcc/gthr-solaris.h
-4243675148b ./gcc/gthr-vxworks.h
-3942109358b ./gcc/gthr-win32.h
- 430540108b ./gcc/haifa-sched.c
- 544018069b ./gcc/halfpic.c
-2731657470b ./gcc/halfpic.h
-3590969103b ./gcc/hard-reg-set.h
-2643914866b ./gcc/hash.c
-2987787285b ./gcc/hash.h
- 466224151b ./gcc/hashtable.c
- 126902747b ./gcc/hashtable.h
-3796251430b ./gcc/hooks.c
- 779103435b ./gcc/hooks.h
- 519586985b ./gcc/hwint.h
-3563549730b ./gcc/ifcvt.c
-3686080794b ./gcc/input.h
-2324132584b ./gcc/insn-addr.h
-3004940478b ./gcc/integrate.c
-1320722832b ./gcc/integrate.h
-3847321727b ./gcc/intl/bindtextdom.c
-3277280645b ./gcc/intl.c
-4257359986b ./gcc/intl/ChangeLog
-3698301396b ./gcc/intl/config.charset
-3683549278b ./gcc/intl/dcgettext.c
-1537282354b ./gcc/intl/dcigettext.c
-4252721850b ./gcc/intl/dcngettext.c
-3231507403b ./gcc/intl/dgettext.c
-1989280280b ./gcc/intl/dngettext.c
-3422232669b ./gcc/intl/explodename.c
- 745873491b ./gcc/intl/finddomain.c
-3807651580b ./gcc/intl/gettext.c
- 864082220b ./gcc/intl/gettext.h
-3298993106b ./gcc/intl/gettextP.h
-2379664116b ./gcc/intl.h
-3470048606b ./gcc/intl/hash-string.h
-3803759614b ./gcc/intl/intl-compat.c
-3500562604b ./gcc/intl/l10nflist.c
- 863021802b ./gcc/intl/libgettext.h
- 21199758b ./gcc/intl/libgnuintl.h
- 105544597b ./gcc/intl/loadinfo.h
-2094146432b ./gcc/intl/loadmsgcat.c
- 934932803b ./gcc/intl/localcharset.c
-3093413149b ./gcc/intl/locale.alias
-2364750309b ./gcc/intl/localealias.c
- 680616337b ./gcc/intl/Makefile.in
-2022997717b ./gcc/intl/ngettext.c
- 543478295b ./gcc/intl/plural.c
-1047167798b ./gcc/intl/plural.y
- 409545719b ./gcc/intl/ref-add.sin
-1121743739b ./gcc/intl/ref-del.sin
-1971238900b ./gcc/intl/textdomain.c
-1166279255b ./gcc/intl/VERSION
-1752055498b ./gcc/java/boehm.c
-3814965188b ./gcc/java/buffer.c
-1535113190b ./gcc/java/buffer.h
- 637702143b ./gcc/java/builtins.c
-1215892592b ./gcc/java/ChangeLog
-2409493226b ./gcc/java/chartables.h
-1544711683b ./gcc/java/check-init.c
-3161785437b ./gcc/java/class.c
-2672598613b ./gcc/java/config-lang.in
- 70342256b ./gcc/java/constants.c
- 640032177b ./gcc/java/convert.h
- 503022028b ./gcc/java/.cvsignore
- 698834578b ./gcc/java/decl.c
-1301173842b ./gcc/java/except.c
-1888306202b ./gcc/java/expr.c
-3243162773b ./gcc/java/gcj.1
-1643671722b ./gcc/java/gcjh.1
-4005049153b ./gcc/java/gcj.info
-3864487285b ./gcc/java/gcj.info-1
-4154067378b ./gcc/java/gcj.info-2
-1974029021b ./gcc/java/gcj.texi
- 533046670b ./gcc/java/gen-table.pl
-2017208618b ./gcc/java/gij.1
-2862690686b ./gcc/java/gjavah.c
-1545050516b ./gcc/java/java-except.h
-1953641142b ./gcc/java/java-opcodes.h
-2538410445b ./gcc/java/javaop.def
- 872575611b ./gcc/java/javaop.h
-2113802419b ./gcc/java/java-tree.def
-3036080891b ./gcc/java/java-tree.h
-1618392854b ./gcc/java/jcf-depend.c
- 134179386b ./gcc/java/jcf-dump.1
-1347786459b ./gcc/java/jcf-dump.c
- 921328820b ./gcc/java/jcf.h
- 370700983b ./gcc/java/jcf-io.c
- 981094631b ./gcc/java/jcf-parse.c
- 189754917b ./gcc/java/jcf-path.c
-3070824570b ./gcc/java/jcf-reader.c
-3086938723b ./gcc/java/jcf-write.c
-3332938287b ./gcc/java/jv-convert.1
-3805988298b ./gcc/java/jvgenmain.c
-2795084151b ./gcc/java/jv-scan.1
-3491242747b ./gcc/java/jv-scan.c
- 686969605b ./gcc/java/jvspec.c
-3733396854b ./gcc/java/keyword.gperf
-3748734913b ./gcc/java/keyword.h
-2455368983b ./gcc/java/lang.c
- 366330104b ./gcc/java/lang-options.h
-3731853870b ./gcc/java/lang-specs.h
- 930602719b ./gcc/java/lex.c
-1057768549b ./gcc/java/lex.h
- 497222224b ./gcc/java/Make-lang.in
-1290236487b ./gcc/java/mangle.c
- 624686086b ./gcc/java/mangle_name.c
-3984779313b ./gcc/java/parse.c
- 924019294b ./gcc/java/parse.h
-3149853640b ./gcc/java/parse-scan.c
- 578153036b ./gcc/java/parse-scan.y
-2763518333b ./gcc/java/parse.y
- 298027378b ./gcc/java/rmic.1
-3080717916b ./gcc/java/rmiregistry.1
-2066605666b ./gcc/java/typeck.c
- 173829162b ./gcc/java/verify.c
-3207437983b ./gcc/java/xref.c
-3070080051b ./gcc/java/xref.h
-2742723736b ./gcc/java/zextract.c
-1459175152b ./gcc/java/zipfile.h
-2867377468b ./gcc/jump.c
-4163847594b ./gcc/langhooks.c
-1885354315b ./gcc/langhooks-def.h
- 718654791b ./gcc/langhooks.h
-4134111346b ./gcc/LANGUAGES
-2367190261b ./gcc/lcm.c
-2318627229b ./gcc/libfuncs.h
-2402286846b ./gcc/libgcc2.c
-3671718625b ./gcc/libgcc2.h
-1452643639b ./gcc/libgcc-std.ver
-2497915666b ./gcc/limitx.h
-1045880008b ./gcc/limity.h
-1060915850b ./gcc/line-map.c
-3486158933b ./gcc/line-map.h
-2698117766b ./gcc/lists.c
-1174355773b ./gcc/local-alloc.c
- 830917499b ./gcc/longlong.h
-3943918019b ./gcc/loop.c
- 483531210b ./gcc/loop.h
-2150704349b ./gcc/machmode.def
-3928982379b ./gcc/machmode.h
- 189930733b ./gcc/main.c
-1247644918b ./gcc/Makefile.in
- 501600506b ./gcc/mbchar.c
-1508701785b ./gcc/mbchar.h
- 886384654b ./gcc/mips-tdump.c
-4187769843b ./gcc/mips-tfile.c
-3936313187b ./gcc/mkconfig.sh
- 217659056b ./gcc/mkdeps.c
-3976112005b ./gcc/mkdeps.h
- 827441351b ./gcc/mkinstalldirs
-4248086923b ./gcc/mklibgcc.in
-4201050746b ./gcc/mkmap-flat.awk
-2827346461b ./gcc/mkmap-symver.awk
-1597314052b ./gcc/move-if-change
-1558946830b ./gcc/NEWS
-4010954163b ./gcc/objc/config-lang.in
-1966957144b ./gcc/objc/.cvsignore
- 588115418b ./gcc/objc/lang-options.h
- 852310047b ./gcc/objc/lang-specs.h
- 566554613b ./gcc/objc/Make-lang.in
-3712044081b ./gcc/objc/objc-act.c
-2554922770b ./gcc/objc/objc-act.h
-2534517289b ./gcc/objc/objc-lang.c
-1052913658b ./gcc/objc/objc-parse.c
- 283420579b ./gcc/objc/objc-parse.y
- 688475759b ./gcc/objc/objc-tree.def
-3823063152b ./gcc/objc/README
- 538471119b ./gcc/ONEWS
-3305080539b ./gcc/optabs.c
-3971816206b ./gcc/optabs.h
- 151133448b ./gcc/output.h
-1911824904b ./gcc/params.c
-2474575794b ./gcc/params.def
- 840880994b ./gcc/params.h
-3712234942b ./gcc/po/ChangeLog
- 275286308b ./gcc/po/da.gmo
- 276047898b ./gcc/po/da.po
-4175362661b ./gcc/po/el.gmo
-1399154149b ./gcc/po/el.po
-1592121868b ./gcc/po/es.gmo
- 239486157b ./gcc/po/es.po
-4281232887b ./gcc/po/EXCLUDES
- 234060324b ./gcc/po/exgettext
-3271137864b ./gcc/po/fr.gmo
- 641572084b ./gcc/po/fr.po
- 953510881b ./gcc/po/gcc.pot
- 810430188b ./gcc/po/ja.gmo
-2505973891b ./gcc/po/ja.po
-3002010451b ./gcc/po/nl.gmo
- 934957733b ./gcc/po/nl.po
-3351765398b ./gcc/po/sv.gmo
-1330626989b ./gcc/po/sv.po
- 866561722b ./gcc/po/tr.gmo
-3345738807b ./gcc/po/tr.po
-1839892656b ./gcc/predict.c
-1371462395b ./gcc/predict.def
- 204342296b ./gcc/predict.h
- 542352850b ./gcc/prefix.c
-3203071066b ./gcc/prefix.h
-3447032665b ./gcc/print-rtl.c
- 417163997b ./gcc/print-tree.c
-2666623009b ./gcc/profile.c
-1610870410b ./gcc/protoize.c
-2799003008b ./gcc/README-fixinc
-2741038711b ./gcc/README.Portability
-2723074973b ./gcc/read-rtl.c
-2962281463b ./gcc/real.c
-2885483337b ./gcc/real.h
-2524966106b ./gcc/recog.c
-2056680576b ./gcc/recog.h
- 57810796b ./gcc/regclass.c
-3586182830b ./gcc/regmove.c
- 113125100b ./gcc/regrename.c
-3100477763b ./gcc/regs.h
-3611458427b ./gcc/reg-stack.c
- 664936410b ./gcc/reload1.c
- 55889624b ./gcc/reload.c
- 834085082b ./gcc/reload.h
-4167441145b ./gcc/reorg.c
-2715704724b ./gcc/resource.c
-2605579460b ./gcc/resource.h
-1675583813b ./gcc/rtlanal.c
-2800367218b ./gcc/rtl.c
-3964111654b ./gcc/rtl.def
-3490774286b ./gcc/rtl-error.c
-3336969021b ./gcc/rtl.h
-1989258075b ./gcc/sbitmap.c
-3201428436b ./gcc/sbitmap.h
- 324348149b ./gcc/scan.c
-1702118899b ./gcc/scan-decls.c
- 339714129b ./gcc/scan.h
-3912741047b ./gcc/scan-types.sh
- 347395426b ./gcc/sched-deps.c
-3568403641b ./gcc/sched-ebb.c
-4108826208b ./gcc/sched-int.h
-2565292623b ./gcc/sched-rgn.c
-2176345645b ./gcc/sched-vis.c
-3014933100b ./gcc/sdbout.c
-1391855772b ./gcc/sdbout.h
-1084935625b ./gcc/SERVICE
-2225673670b ./gcc/sibcall.c
- 63942362b ./gcc/simplify-rtx.c
-3345261950b ./gcc/sort-protos
-3157302619b ./gcc/ssa.c
-3407562807b ./gcc/ssa-ccp.c
-2078369101b ./gcc/ssa-dce.c
- 332547863b ./gcc/ssa.h
-2395322097b ./gcc/stab.def
- 471587796b ./gcc/stack.h
-2351196198b ./gcc/stmt.c
-2592810543b ./gcc/stor-layout.c
-3515875777b ./gcc/stringpool.c
- 567176141b ./gcc/sys-protos.h
-1242992540b ./gcc/system.h
- 482558466b ./gcc/sys-types.h
- 293723253b ./gcc/target-def.h
-4078089769b ./gcc/target.h
-1391688077b ./gcc/testsuite/ChangeLog
-1101480727b ./gcc/testsuite/config/default.exp
-3657217366b ./gcc/testsuite/consistency.vlad/layout/a-char.c
-2814769741b ./gcc/testsuite/consistency.vlad/layout/a-double.c
- 789833107b ./gcc/testsuite/consistency.vlad/layout/a-float.c
-1654384929b ./gcc/testsuite/consistency.vlad/layout/a-int.c
-4146459649b ./gcc/testsuite/consistency.vlad/layout/align-bool.cpp
-2242642270b ./gcc/testsuite/consistency.vlad/layout/align-char.c
-1789069487b ./gcc/testsuite/consistency.vlad/layout/align-double.c
-2365706302b ./gcc/testsuite/consistency.vlad/layout/align-float.c
-1139013298b ./gcc/testsuite/consistency.vlad/layout/align-int.c
-2305175273b ./gcc/testsuite/consistency.vlad/layout/align-long.c
-1683867594b ./gcc/testsuite/consistency.vlad/layout/align-longdouble.c
-2116189486b ./gcc/testsuite/consistency.vlad/layout/align-longlong.c
-3775705613b ./gcc/testsuite/consistency.vlad/layout/align-pointer.c
-3243328118b ./gcc/testsuite/consistency.vlad/layout/align-ptrdiff.c
-3355052908b ./gcc/testsuite/consistency.vlad/layout/align-short.c
-2446562994b ./gcc/testsuite/consistency.vlad/layout/align-size.c
-4125888825b ./gcc/testsuite/consistency.vlad/layout/align-wchar.c
-4126836986b ./gcc/testsuite/consistency.vlad/layout/a-long.c
-2082883507b ./gcc/testsuite/consistency.vlad/layout/a-longdouble.c
-1870550230b ./gcc/testsuite/consistency.vlad/layout/a-longlong.c
- 836566472b ./gcc/testsuite/consistency.vlad/layout/a-of-s-char.c
- 808556227b ./gcc/testsuite/consistency.vlad/layout/a-of-s-double.c
-3993719731b ./gcc/testsuite/consistency.vlad/layout/a-of-s-float.c
- 783523024b ./gcc/testsuite/consistency.vlad/layout/a-of-s-int.c
- 942819612b ./gcc/testsuite/consistency.vlad/layout/a-of-s-long.c
-3646710863b ./gcc/testsuite/consistency.vlad/layout/a-of-s-longdouble.c
-3060876629b ./gcc/testsuite/consistency.vlad/layout/a-of-s-longlong.c
-3104817372b ./gcc/testsuite/consistency.vlad/layout/a-of-s-pointer.c
-1147565030b ./gcc/testsuite/consistency.vlad/layout/a-of-s-ptrdiff_t.c
- 418802581b ./gcc/testsuite/consistency.vlad/layout/a-of-s-short.c
- 141666140b ./gcc/testsuite/consistency.vlad/layout/a-pointer.c
- 420085095b ./gcc/testsuite/consistency.vlad/layout/a-ptrdiff_t.c
-3218633480b ./gcc/testsuite/consistency.vlad/layout/a-short.c
-1126124139b ./gcc/testsuite/consistency.vlad/layout/a-size_t.c
-3526110053b ./gcc/testsuite/consistency.vlad/layout/a-wchar_t.c
-3324795146b ./gcc/testsuite/consistency.vlad/layout/biggest-field-align.c
-1487466473b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-char.cpp
-3519286859b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-double.cpp
-1910397221b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-float.cpp
-2051738332b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-int.cpp
-2064124916b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-long.cpp
-2713877479b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-longdouble.cpp
-1809060976b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-longlong.cpp
-1381436129b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-pointer.cpp
-3954863954b ./gcc/testsuite/consistency.vlad/layout/c-char-1-c-short.cpp
-1129753509b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-char.cpp
- 152778947b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-double.cpp
-3158222807b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-float.cpp
- 724995923b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-int.cpp
-2244023836b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-long.cpp
-1820645651b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-longdouble.cpp
-2590987120b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-longlong.cpp
-2721353414b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-pointer.cpp
- 647549268b ./gcc/testsuite/consistency.vlad/layout/c-char-2-c-short.cpp
- 698855560b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-char.cpp
-1810672926b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-double.cpp
- 882201712b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-float.cpp
-1868861566b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-int.cpp
-1504966725b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-long.cpp
-2848245738b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-longdouble.cpp
- 323482860b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-longlong.cpp
-1719416020b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-pointer.cpp
-3378135217b ./gcc/testsuite/consistency.vlad/layout/c-double-1-c-short.cpp
-4238608616b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-char.cpp
-3694666869b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-double.cpp
-3134966605b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-float.cpp
-2693193737b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-int.cpp
-3803963296b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-long.cpp
- 184829139b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-longdouble.cpp
-2949968343b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-longlong.cpp
-2009543278b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-pointer.cpp
- 44469885b ./gcc/testsuite/consistency.vlad/layout/c-double-2-c-short.cpp
- 558923497b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-char.cpp
-3523046577b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-double.cpp
-1275327467b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-float.cpp
-3922774992b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-int.cpp
-2704908269b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-long.cpp
-3193901260b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-longdouble.cpp
- 436514518b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-longlong.cpp
-2452020808b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-pointer.cpp
- 418251021b ./gcc/testsuite/consistency.vlad/layout/c-float-1-c-short.cpp
-2667439235b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-char.cpp
-2881981590b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-double.cpp
-3201780621b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-float.cpp
-3375452217b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-int.cpp
-2468199592b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-long.cpp
-3842914089b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-longdouble.cpp
- 114905404b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-longlong.cpp
-1497679777b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-pointer.cpp
- 143833974b ./gcc/testsuite/consistency.vlad/layout/c-float-2-c-short.cpp
-1543978137b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-char.cpp
-4270896237b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-double.cpp
-4263740047b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-float.cpp
-1779635362b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-int.cpp
- 743837724b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-long.cpp
-3224784467b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-longdouble.cpp
-3401381192b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-longlong.cpp
-3737012303b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-pointer.cpp
-2370648943b ./gcc/testsuite/consistency.vlad/layout/c-int-1-c-short.cpp
-4055775560b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-char.cpp
-4043145228b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-double.cpp
-1704557853b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-float.cpp
- 360364552b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-int.cpp
-1401787792b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-long.cpp
-1019203678b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-longdouble.cpp
-3230342428b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-longlong.cpp
- 443814793b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-pointer.cpp
- 986131700b ./gcc/testsuite/consistency.vlad/layout/c-int-2-c-short.cpp
-1839888072b ./gcc/testsuite/consistency.vlad/layout/class-char-and-virtual.cpp
-2259371507b ./gcc/testsuite/consistency.vlad/layout/class-double-and-virtual.cpp
-3308691044b ./gcc/testsuite/consistency.vlad/layout/class-float-and-virtual.cpp
-4237514561b ./gcc/testsuite/consistency.vlad/layout/class-int-and-virtual.cpp
-3380766571b ./gcc/testsuite/consistency.vlad/layout/class-long-and-virtual.cpp
- 815671556b ./gcc/testsuite/consistency.vlad/layout/class-longdouble-and-virtual.cpp
-3694413639b ./gcc/testsuite/consistency.vlad/layout/class-longlong-and-virtual.cpp
- 361431068b ./gcc/testsuite/consistency.vlad/layout/class-pointer-and-virtual.cpp
-4030637509b ./gcc/testsuite/consistency.vlad/layout/class-short-and-virtual.cpp
-3640144004b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-char.cpp
-3170239534b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-double.cpp
-1373364368b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-float.cpp
-2715489812b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-int.cpp
-4216902809b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-long.cpp
-2020353215b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-longdouble.cpp
- 143021478b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-longlong.cpp
- 288494342b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-pointer.cpp
-3418347239b ./gcc/testsuite/consistency.vlad/layout/c-long-1-c-short.cpp
- 391993576b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-char.cpp
-1825915999b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-double.cpp
-3270317833b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-float.cpp
-1164900700b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-int.cpp
-3519735121b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-long.cpp
- 690915349b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-longdouble.cpp
- 952863529b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-longlong.cpp
-1541971925b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-pointer.cpp
-1481335178b ./gcc/testsuite/consistency.vlad/layout/c-long-2-c-short.cpp
-1034111645b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-char.cpp
- 223428769b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-double.cpp
-1686950830b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-float.cpp
-4007796170b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-int.cpp
-1430297307b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-long.cpp
-1762615105b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-longdouble.cpp
- 455084292b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-longlong.cpp
- 989738191b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-pointer.cpp
-2328224637b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-1-c-short.cpp
-1760745939b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-char.cpp
-1217350634b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-double.cpp
-4225543090b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-float.cpp
-1922520334b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-int.cpp
- 124367783b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-long.cpp
-2219449090b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-longdouble.cpp
-1757646669b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-longlong.cpp
-1035759316b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-pointer.cpp
- 444856555b ./gcc/testsuite/consistency.vlad/layout/c-longdouble-2-c-short.cpp
-1826856781b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-char.cpp
-1741302927b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-double.cpp
-4120602989b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-float.cpp
-1561431628b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-int.cpp
-1058278587b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-long.cpp
-4082939652b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-longdouble.cpp
-4091778481b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-longlong.cpp
-2537874539b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-pointer.cpp
-1697718289b ./gcc/testsuite/consistency.vlad/layout/c-longlong-1-c-short.cpp
-4035527714b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-char.cpp
-2229850447b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-double.cpp
-2643791394b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-float.cpp
- 925524845b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-int.cpp
- 463155534b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-long.cpp
-2018895918b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-longdouble.cpp
- 737052449b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-longlong.cpp
-3847946387b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-pointer.cpp
-1651679595b ./gcc/testsuite/consistency.vlad/layout/c-longlong-2-c-short.cpp
-1442225884b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-char.cpp
- 86231492b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-double.cpp
-3039612943b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-float.cpp
-4268774855b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-int.cpp
-1989685785b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-long.cpp
-1765842423b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-longdouble.cpp
-3566620692b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-longlong.cpp
-1511217411b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-pointer.cpp
- 146891497b ./gcc/testsuite/consistency.vlad/layout/c-pointer-1-c-short.cpp
-1203621554b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-char.cpp
-1661672620b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-double.cpp
-3464981922b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-float.cpp
-2162290685b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-int.cpp
-3458760843b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-long.cpp
-1723971678b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-longdouble.cpp
-2772502076b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-longlong.cpp
-1617244322b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-pointer.cpp
-2107205209b ./gcc/testsuite/consistency.vlad/layout/c-pointer-2-c-short.cpp
-2637993722b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-char.cpp
-2593108653b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-double.cpp
-2285678779b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-float.cpp
-4058415376b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-int.cpp
- 492140542b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-long.cpp
-2044765763b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-longdouble.cpp
-3012275733b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-longlong.cpp
-1369560784b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-pointer.cpp
-3704701533b ./gcc/testsuite/consistency.vlad/layout/c-short-1-c-short.cpp
-3281843471b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-char.cpp
-1657812194b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-double.cpp
-2415256428b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-float.cpp
-1236964140b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-int.cpp
-3464277284b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-long.cpp
-3737764099b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-longdouble.cpp
-4128191352b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-longlong.cpp
- 249914684b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-pointer.cpp
- 967840663b ./gcc/testsuite/consistency.vlad/layout/c-short-2-c-short.cpp
-3227054482b ./gcc/testsuite/consistency.vlad/layout/endian.c
-3691894150b ./gcc/testsuite/consistency.vlad/layout/f-0-0-5.c
-2906280459b ./gcc/testsuite/consistency.vlad/layout/f-0-20-17.c
-4153795460b ./gcc/testsuite/consistency.vlad/layout/f-0-24-24.c
-2223677750b ./gcc/testsuite/consistency.vlad/layout/f-10-11-10.c
-1656961235b ./gcc/testsuite/consistency.vlad/layout/f-11-12-10.c
-2616499905b ./gcc/testsuite/consistency.vlad/layout/f-1-21-31.c
- 877204714b ./gcc/testsuite/consistency.vlad/layout/f-1-3-1.c
- 628897670b ./gcc/testsuite/consistency.vlad/layout/f-14-22-10.c
-2499257242b ./gcc/testsuite/consistency.vlad/layout/f-14-29-30.c
-1116508393b ./gcc/testsuite/consistency.vlad/layout/f-14-31-26.c
-3215710590b ./gcc/testsuite/consistency.vlad/layout/f-14-8-9.c
-2598471587b ./gcc/testsuite/consistency.vlad/layout/f-15-1-22.c
-1235023325b ./gcc/testsuite/consistency.vlad/layout/f-16-30-15.c
-3175789490b ./gcc/testsuite/consistency.vlad/layout/f-17-17-20.c
-1483764145b ./gcc/testsuite/consistency.vlad/layout/f-17-17-2.c
-2825171767b ./gcc/testsuite/consistency.vlad/layout/f-17-21-17.c
-3571484701b ./gcc/testsuite/consistency.vlad/layout/f-18-15-30.c
- 325844328b ./gcc/testsuite/consistency.vlad/layout/f-18-26-0.c
-4067860400b ./gcc/testsuite/consistency.vlad/layout/f-18-26-11.c
-1812484656b ./gcc/testsuite/consistency.vlad/layout/f-18-4-17.c
-3026961559b ./gcc/testsuite/consistency.vlad/layout/f-18-5-16.c
-3538065200b ./gcc/testsuite/consistency.vlad/layout/f-19-6-22.c
-2636321909b ./gcc/testsuite/consistency.vlad/layout/f-20-19-9.c
-4072544979b ./gcc/testsuite/consistency.vlad/layout/f-20-20-15.c
-3513144108b ./gcc/testsuite/consistency.vlad/layout/f-20-26-14.c
- 413528084b ./gcc/testsuite/consistency.vlad/layout/f-21-16-24.c
-2389669149b ./gcc/testsuite/consistency.vlad/layout/f-21-19-4.c
-1161583564b ./gcc/testsuite/consistency.vlad/layout/f-21-22-1.c
-3107982509b ./gcc/testsuite/consistency.vlad/layout/f-21-24-20.c
-1590859529b ./gcc/testsuite/consistency.vlad/layout/f-21-5-26.c
-1027772335b ./gcc/testsuite/consistency.vlad/layout/f-22-2-19.c
-1959300243b ./gcc/testsuite/consistency.vlad/layout/f-22-2-28.c
-1424392875b ./gcc/testsuite/consistency.vlad/layout/f-2-25-27.c
-4169983870b ./gcc/testsuite/consistency.vlad/layout/f-23-17-8.c
- 728940177b ./gcc/testsuite/consistency.vlad/layout/f-24-18-9.c
- 851596736b ./gcc/testsuite/consistency.vlad/layout/f-24-27-8.c
- 58214057b ./gcc/testsuite/consistency.vlad/layout/f-25-6-23.c
-2209054578b ./gcc/testsuite/consistency.vlad/layout/f-26-8-6.c
-2248812453b ./gcc/testsuite/consistency.vlad/layout/f-27-22-7.c
-3851531263b ./gcc/testsuite/consistency.vlad/layout/f-29-16-7.c
-1140548972b ./gcc/testsuite/consistency.vlad/layout/f-29-4-10.c
-3817519794b ./gcc/testsuite/consistency.vlad/layout/f-30-15-26.c
-2254570093b ./gcc/testsuite/consistency.vlad/layout/f-30-24-30.c
-1287065065b ./gcc/testsuite/consistency.vlad/layout/f-31-28-16.c
-1393314717b ./gcc/testsuite/consistency.vlad/layout/f-31-4-14.c
-1649382578b ./gcc/testsuite/consistency.vlad/layout/f-31-9-0.c
- 600206604b ./gcc/testsuite/consistency.vlad/layout/f-3-7-1.c
- 666347310b ./gcc/testsuite/consistency.vlad/layout/f-4-14-29.c
- 821467656b ./gcc/testsuite/consistency.vlad/layout/f-5-23-7.c
-2794715020b ./gcc/testsuite/consistency.vlad/layout/f-7-14-12.c
- 281818021b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-char.out
- 281818021b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-char.out++
-1727061245b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-double.out
-1727061245b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-double.out++
-1601851831b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-float.out
-1601851831b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-float.out++
-3221406627b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-int.out
-3221406627b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-int.out++
-3462656330b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-bool.out++
-2284866161b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-char.out
-2284866161b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-char.out++
-2016168953b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-double.out
-2016168953b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-double.out++
-3778571582b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-float.out
-3778571582b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-float.out++
-2268947026b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-int.out
-2268947026b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-int.out++
-3232401121b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-longdouble.out
-3232401121b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-longdouble.out++
-2659664521b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-longlong.out
-2659664521b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-longlong.out++
-3668254953b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-long.out
-3668254953b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-long.out++
-3544657861b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-pointer.out
-3544657861b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-pointer.out++
- 568190957b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-ptrdiff.out
- 568190957b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-ptrdiff.out++
-1592598882b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-short.out
-1592598882b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-short.out++
-2711568334b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-size.out
-2711568334b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-size.out++
-1604716971b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-wchar.out
-1604716971b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/align-wchar.out++
-2227734332b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-longdouble.out
-2227734332b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-longdouble.out++
-1069590031b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-longlong.out
-1069590031b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-longlong.out++
-3142186771b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-long.out
-3142186771b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-long.out++
-1963275345b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-char.out
-1963275345b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-char.out++
-2939358541b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-double.out
-2939358541b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-double.out++
-4001039866b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-float.out
-4001039866b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-float.out++
-3232823433b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-int.out
-3232823433b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-int.out++
-2623902989b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-longdouble.out
-2623902989b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-longdouble.out++
-1713649002b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-longlong.out
-1713649002b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-longlong.out++
-3779601801b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-long.out
-3779601801b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-long.out++
-2443484079b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-pointer.out
-2443484079b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-pointer.out++
-3159633525b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-ptrdiff_t.out
-3159633525b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-ptrdiff_t.out++
-2253324871b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-short.out
-2253324871b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-of-s-short.out++
- 166125968b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-pointer.out
- 166125968b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-pointer.out++
- 608443471b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-ptrdiff_t.out
- 608443471b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-ptrdiff_t.out++
-2402228544b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-short.out
-2402228544b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-short.out++
-4156594561b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-size_t.out
-4156594561b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-size_t.out++
- 492360794b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-wchar_t.out
- 492360794b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/a-wchar_t.out++
-4129036106b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/biggest-field-align.out
-4129036106b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/biggest-field-align.out++
-4100226006b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-char.out++
-3647609206b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-double.out++
- 706559590b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-float.out++
-1215678453b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-int.out++
-2100244020b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-longdouble.out+
- 48453457b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-longlong.out++
-4196765215b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-long.out++
-3131996511b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-pointer.out++
-1181309658b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-1-c-short.out++
-3978860778b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-char.out++
-2575125216b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-double.out++
-3758626543b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-float.out++
- 876931045b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-int.out++
-2507562199b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-longdouble.out+
-1079948168b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-longlong.out++
-3122728674b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-long.out++
- 557528819b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-pointer.out++
- 984328826b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-char-2-c-short.out++
-3870081867b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-char.out++
- 19559768b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-double.out++
-2915080636b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-float.out++
- 391114415b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-int.out++
-2943384114b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-longlong.out+
- 897790368b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-long.out++
-1812530953b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-pointer.out++
- 4419316b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-1-c-short.out++
-1529425773b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-char.out++
-2110018195b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-double.out++
- 431267742b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-float.out++
-4127117436b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-int.out++
-3919625178b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-longlong.out+
-3610473804b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-long.out++
-4161112465b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-pointer.out++
-2097187829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-double-2-c-short.out++
- 638577261b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-char.out++
- 476074193b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-double.out++
- 384192667b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-float.out++
-3196085957b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-int.out++
-3708436693b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-longdouble.out
-2203415599b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-longlong.out++
- 964541378b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-long.out++
- 317097833b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-pointer.out++
-2217857064b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-1-c-short.out++
-3381433116b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-char.out++
- 429641349b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-double.out++
-3143138522b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-float.out++
- 637049178b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-int.out++
-2436155461b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-longdouble.out
-1035042416b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-longlong.out++
-3915291152b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-long.out++
-2715660950b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-pointer.out++
-1668069472b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-float-2-c-short.out++
-3152579670b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-char.out++
-1138705949b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-double.out++
-2023313489b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-float.out++
-1706645581b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-int.out++
-1167102151b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-longdouble.out++
- 853135804b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-longlong.out++
- 824095637b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-long.out++
-2845722513b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-pointer.out++
-1032279461b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-1-c-short.out++
- 150139450b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-char.out++
-3993039563b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-double.out++
-1771341638b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-float.out++
- 981734500b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-int.out++
-1272920488b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-longdouble.out++
-2082772967b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-longlong.out++
- 673250102b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-long.out++
-1447464664b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-pointer.out++
-2980070396b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-int-2-c-short.out++
-3338202537b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/class-char-and-virtual.out
- 836464684b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/class-int-and-virtual.out+
-3651827794b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/class-long-and-virtual.out
- 978303701b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-char.out++
-1349831301b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-double.out++
-4055309409b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-float.out++
- 281114634b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-int.out++
-1591591915b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-longdouble.out+
-1601182123b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-longlong.out++
-2092387878b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-long.out++
-1167331858b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-pointer.out++
-1373996143b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-1-c-short.out++
- 328768010b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-char.out++
-3391651497b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-double.out++
-1331092866b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-float.out++
-1363762993b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-int.out++
-3764776043b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-longdouble.out+
-3487659489b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-longlong.out++
- 860525318b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-long.out++
-1919812282b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-pointer.out++
-2539788600b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-long-2-c-short.out++
-1261002308b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-1-c-char.out+
-1789962814b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-1-c-float.out
-1178372529b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-1-c-int.out++
- 923540745b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-1-c-long.out+
-4019539100b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-1-c-short.out
-1400671035b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-2-c-char.out+
-1620516804b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-2-c-float.out
- 57959266b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-2-c-int.out++
- 428651475b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-2-c-long.out+
-2929532078b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longdouble-2-c-short.out
- 156205829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-1-c-char.out++
- 274806308b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-1-c-double.out+
-1311432891b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-1-c-float.out++
- 271147996b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-1-c-int.out++
-2325547598b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-1-c-long.out++
-1602376231b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-1-c-pointer.out
-2056285955b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-1-c-short.out++
- 252215927b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-2-c-char.out++
-1703813948b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-2-c-double.out+
-3833743177b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-2-c-float.out++
- 168092554b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-2-c-int.out++
-2199050326b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-2-c-long.out++
-3195305369b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-2-c-pointer.out
-2151043874b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-longlong-2-c-short.out++
-3346796594b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-char.out++
-1049692423b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-double.out++
-1162385065b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-float.out++
-1723690768b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-int.out++
-1018652914b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-longlong.out
-1122627681b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-long.out++
-3157843542b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-pointer.out+
- 274267090b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-1-c-short.out++
-1856515882b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-char.out++
-1292784229b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-double.out++
-1950731775b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-float.out++
-1717751486b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-int.out++
-2591426150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-longlong.out
-1316628006b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-long.out++
-4115148406b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-pointer.out+
-2893089093b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-pointer-2-c-short.out++
-3269036579b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-char.out++
- 327031780b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-double.out++
-1794337572b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-float.out++
- 799398662b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-int.out++
- 82846972b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-longdouble.out
-3028299097b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-longlong.out++
- 294463294b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-long.out++
-3616473829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-pointer.out++
-4123209829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-1-c-short.out++
-2386618953b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-char.out++
- 337500653b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-double.out++
-2241141027b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-float.out++
-3329743364b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-int.out++
-3880624999b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-longdouble.out
-3865506072b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-longlong.out++
-1783534270b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-long.out++
-2891687422b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-pointer.out++
-3938727462b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/c-short-2-c-short.out++
-2162077044b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/endian.out
-2162077044b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/endian.out++
-3419137637b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-0-0-5.out
-2697696866b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-0-0-5.out++
-3829700152b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-0-20-17.out
-4063785218b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-0-20-17.out++
-3595644405b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-0-24-24.out
-2437734191b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-0-24-24.out++
-3203785748b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-10-11-10.out
-3203785748b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-10-11-10.out++
-3883743979b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-11-12-10.out
-3883743979b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-11-12-10.out++
-1776162150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-1-21-31.out
-1776162150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-1-21-31.out++
-4292846411b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-1-3-1.out
-4292846411b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-1-3-1.out++
- 268554786b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-22-10.out
- 268554786b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-22-10.out++
-3887247867b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-29-30.out
-3887247867b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-29-30.out++
-1252658061b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-31-26.out
-1252658061b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-31-26.out++
-3752599983b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-8-9.out
-3752599983b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-14-8-9.out++
-2504143009b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-15-1-22.out
-2504143009b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-15-1-22.out++
- 285193031b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-16-30-15.out
- 285193031b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-16-30-15.out++
-1491637755b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-17-17-20.out
-1491637755b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-17-17-20.out++
-3346294426b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-17-17-2.out
-3346294426b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-17-17-2.out++
-2949641380b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-17-21-17.out
-2949641380b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-17-21-17.out++
-3877885575b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-15-30.out
-3877885575b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-15-30.out++
-3070142360b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-26-0.out
-1554435890b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-26-0.out++
- 934830165b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-26-11.out
- 934830165b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-26-11.out++
-3962835451b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-4-17.out
-3962835451b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-4-17.out++
-1291671333b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-5-16.out
-1291671333b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-18-5-16.out++
-1700775495b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-19-6-22.out
-1700775495b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-19-6-22.out++
- 123227249b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-20-19-9.out
- 123227249b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-20-19-9.out++
-1217631134b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-20-20-15.out
-1217631134b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-20-20-15.out++
- 122124427b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-20-26-14.out
- 122124427b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-20-26-14.out++
-1954763271b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-16-24.out
-1954763271b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-16-24.out++
-4037426595b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-19-4.out
-4037426595b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-19-4.out++
- 570806957b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-22-1.out
- 570806957b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-22-1.out++
-3471862654b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-24-20.out
-3471862654b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-24-20.out++
-2840862240b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-5-26.out
-2840862240b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-21-5-26.out++
-1675033355b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-22-2-19.out
-1675033355b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-22-2-19.out++
- 419856428b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-22-2-28.out
- 419856428b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-22-2-28.out++
- 906364881b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-2-25-27.out
- 906364881b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-2-25-27.out++
-2034059518b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-23-17-8.out
-2034059518b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-23-17-8.out++
-4200924887b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-24-18-9.out
-4200924887b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-24-18-9.out++
- 945528697b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-24-27-8.out
- 945528697b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-24-27-8.out++
-3365164560b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-25-6-23.out
-3365164560b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-25-6-23.out++
- 925799049b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-26-8-6.out
- 925799049b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-26-8-6.out++
-1807802763b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-27-22-7.out
-1807802763b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-27-22-7.out++
-3387583484b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-29-16-7.out
-3387583484b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-29-16-7.out++
-2411254670b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-29-4-10.out
-2411254670b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-29-4-10.out++
-1870571592b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-30-15-26.out
-1870571592b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-30-15-26.out++
-1466032498b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-30-24-30.out
-1466032498b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-30-24-30.out++
-1625962562b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-31-28-16.out
-1625962562b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-31-28-16.out++
- 663265344b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-31-4-14.out
- 663265344b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-31-4-14.out++
-1272990598b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-31-9-0.out
- 785742212b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-31-9-0.out++
-1816309710b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-3-7-1.out
-1816309710b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-3-7-1.out++
-4120030053b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-4-14-29.out
-4120030053b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-4-14-29.out++
- 140937946b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-5-23-7.out
- 140937946b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-5-23-7.out++
-1100765591b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-7-14-12.out
-1100765591b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/f-7-14-12.out++
-2156310103b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/README
- 13174497b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-char.out
- 13174497b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-char.out++
-1263879599b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-double.out
-1263879599b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-double.out++
-3169577204b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-float.out
-3169577204b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-float.out++
-3237207754b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-int.out
-3237207754b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-int.out++
- 300638802b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-longdouble.out
- 300638802b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-longdouble.out++
- 851353395b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-longlong.out
- 851353395b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-longlong.out++
-1717871431b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-long.out
-1717871431b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-long.out++
-2838094559b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-pointer.out
-2838094559b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-pointer.out++
-4192163054b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-short.out
-4192163054b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-a-short.out++
- 149259060b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-char.out
- 149259060b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-char.out++
- 119844797b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-double.out
- 119844797b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-double.out++
-3332841867b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-float.out
-3332841867b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-float.out++
-1726003194b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-int.out
-1726003194b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-int.out++
-2075118149b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-longdouble.out
-2075118149b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-longdouble.out++
-4051434430b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-longlong.out
-4051434430b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-longlong.out++
-1941216341b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-long.out
-1941216341b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-long.out++
-3517893171b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-pointer.out
-3517893171b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-pointer.out++
-1361556762b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-ptrdiff_t.out
-1361556762b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-ptrdiff_t.out++
-3648796915b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-char.out
-3648796915b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-char.out++
-3472798323b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-double.out
-3472798323b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-double.out++
-1163555929b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-float.out
-1163555929b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-float.out++
-2797269136b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-short.out
-2797269136b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-short.out++
- 611130168b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-int.out
- 611130168b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-int.out++
-3946363802b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-size_t.out
-3946363802b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-size_t.out++
-1330421760b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-longdouble.out
-1330421760b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-longdouble.out++
-2813748371b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-longlong.out
-2813748371b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-longlong.out++
-3300687114b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-long.out
-3300687114b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-long.out++
- 622013241b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-pointer.out
- 622013241b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-pointer.out++
-2254695019b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-short.out
-2254695019b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-s-short.out++
- 782081091b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-wchar_t.out
- 782081091b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-wchar_t.out++
-4058125827b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-char.out
-2028972393b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-char.out++
-2183773616b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-int.out
- 720666868b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-int.out++
-2722211350b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-longlong.out
-3171703288b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-longlong.out++
-3570596356b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-long.out
-3870166054b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-long.out++
-3936055108b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-short.out
-2420900899b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-char-zf-short.out++
-4236338674b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-char.out
-4236338674b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-char.out++
-2364889610b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-double.out
-2364889610b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-double.out++
- 424524236b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-float.out
- 424524236b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-float.out++
-2185924966b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-int.out
-2185924966b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-int.out++
-3208408277b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-longdouble.out
-3208408277b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-longdouble.out+
- 616366511b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-longlong.out
- 616366511b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-longlong.out++
-1377847542b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-long.out
-1377847542b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-long.out++
-1932644731b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-pointer.out
-1932644731b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-pointer.out++
-2597633381b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-short.out
-2597633381b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-a-short.out++
-2667451408b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-char.out
-2667451408b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-char.out++
-3581566571b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-double.out
-3581566571b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-double.out++
-3759577000b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-float.out
-3759577000b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-float.out++
- 51600390b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-int.out
- 51600390b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-int.out++
-3808892329b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-longdouble.out
-3808892329b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-longdouble.out++
-3894925976b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-longlong.out
-3894925976b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-longlong.out++
-3724144772b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-long.out
-3724144772b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-long.out++
-1869357795b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-pointer.out
-1869357795b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-pointer.out++
- 993350744b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-ptrdiff_t.out
- 993350744b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-ptrdiff_t.out++
-2313797849b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-char.out
-2313797849b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-char.out++
-2223824125b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-double.out
-2223824125b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-double.out++
-3883069309b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-float.out
-3883069309b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-float.out++
- 351083924b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-short.out
- 351083924b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-short.out++
-2863998748b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-int.out
-2863998748b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-int.out++
-3505234855b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-size_t.out
-3505234855b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-size_t.out++
-1829775023b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-longdouble.out
-1829775023b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-longdouble.out+
- 284599855b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-longlong.out
- 284599855b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-longlong.out++
-2272464711b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-long.out
-2272464711b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-long.out++
- 598623650b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-pointer.out
- 598623650b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-pointer.out++
-2749602529b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-short.out
-2749602529b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-s-short.out++
-3026762224b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-wchar_t.out
-3026762224b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-wchar_t.out++
-3986574077b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-char.out
-2222066822b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-char.out++
-1754736725b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-int.out
-1559899710b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-int.out++
-3088104680b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-longlong.out
-3583168624b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-longlong.out++
-2138195968b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-long.out
-1206677029b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-long.out++
- 868552483b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-short.out
-3855067152b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-double-zf-short.out++
- 424345382b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-char.out
- 424345382b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-char.out++
-3542754385b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-double.out
-3542754385b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-double.out++
-1489296274b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-float.out
-1489296274b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-float.out++
-1250016403b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-int.out
-1250016403b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-int.out++
-1568017389b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-longdouble.out
-1568017389b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-longdouble.out++
-1248642357b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-longlong.out
-1248642357b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-longlong.out++
-2598597791b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-long.out
-2598597791b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-long.out++
- 799116997b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-pointer.out
- 799116997b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-pointer.out++
-3756480259b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-short.out
-3756480259b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-a-short.out++
-3564221209b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-char.out
-3564221209b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-char.out++
-3409990675b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-double.out
-3409990675b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-double.out++
-1556696261b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-float.out
-1556696261b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-float.out++
-1622170282b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-int.out
-1622170282b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-int.out++
-1134958145b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-longdouble.out
-1134958145b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-longdouble.out++
-3168453682b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-longlong.out
-3168453682b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-longlong.out++
- 530122249b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-long.out
- 530122249b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-long.out++
-2922640763b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-pointer.out
-2922640763b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-pointer.out++
-4066163210b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-ptrdiff_t.out
-4066163210b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-ptrdiff_t.out++
- 646390276b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-char.out
- 646390276b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-char.out++
-1420738760b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-double.out
-1420738760b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-double.out++
-1009261265b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-float.out
-1009261265b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-float.out++
- 233068758b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-short.out
- 233068758b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-short.out++
-2256009544b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-int.out
-2256009544b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-int.out++
-3735342934b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-size_t.out
-3735342934b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-size_t.out++
- 310608698b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-longdouble.out
- 310608698b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-longdouble.out++
- 229917060b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-longlong.out
- 229917060b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-longlong.out++
-1389606757b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-long.out
-1389606757b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-long.out++
-1605766695b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-pointer.out
-1605766695b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-pointer.out++
-1493100197b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-short.out
-1493100197b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-s-short.out++
-1525245762b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-wchar_t.out
-1525245762b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-wchar_t.out++
-2458932893b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-char.out
-2965855099b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-char.out++
- 349006013b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-int.out
-2335123085b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-int.out++
-1503454956b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-longlong.out
-2287857977b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-longlong.out++
-1137560689b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-long.out
- 430614706b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-long.out++
- 811714276b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-short.out
-2579260275b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-float-zf-short.out++
-3026572564b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-char.out
-3026572564b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-char.out++
-3107188041b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-double.out
-3107188041b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-double.out++
- 879973237b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-float.out
- 879973237b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-float.out++
-3051633289b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-int.out
-3051633289b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-int.out++
-2410327242b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-longdouble.out
-2410327242b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-longdouble.out++
-3929531475b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-longlong.out
-3929531475b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-longlong.out++
-2062849219b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-long.out
-2062849219b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-long.out++
-3096965928b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-pointer.out
-3096965928b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-pointer.out++
-1204833150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-short.out
-1204833150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-a-short.out++
-2920760800b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-char.out
-2920760800b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-char.out++
-1027251474b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-double.out
-1027251474b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-double.out++
-3856842277b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-float.out
-3856842277b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-float.out++
-3890912034b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-int.out
-3890912034b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-int.out++
-3592101251b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-longdouble.out
-3592101251b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-longdouble.out++
- 881354323b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-longlong.out
- 881354323b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-longlong.out++
- 162876982b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-long.out
- 162876982b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-long.out++
-3497380019b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-pointer.out
-3497380019b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-pointer.out++
- 127240785b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-ptrdiff_t.out
- 127240785b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-ptrdiff_t.out++
-1588095226b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-char.out
-1588095226b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-char.out++
-1788492129b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-double.out
-1788492129b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-double.out++
-3331892538b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-float.out
-3331892538b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-float.out++
-3410880438b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-short.out
-3410880438b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-short.out++
- 446524396b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-int.out
- 446524396b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-int.out++
-2907962645b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-size_t.out
-2907962645b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-size_t.out++
- 476184310b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-longdouble.out
- 476184310b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-longdouble.out++
-4058854518b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-longlong.out
-4058854518b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-longlong.out++
- 751158190b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-long.out
- 751158190b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-long.out++
-1766070031b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-pointer.out
-1766070031b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-pointer.out++
-2844975244b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-short.out
-2844975244b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-s-short.out++
- 496574257b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-wchar_t.out
- 496574257b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-wchar_t.out++
-3465834813b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-char.out
-3886284191b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-char.out++
-1090439347b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-int.out
-3979163905b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-int.out++
-2062836287b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-longlong.out
-3075841449b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-longlong.out++
-2400092189b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-long.out
-3700180902b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-long.out++
-2158685975b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-short.out
-1012271831b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-int-zf-short.out++
-4107261541b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-bool.out++
- 919632946b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-char.out
- 919632946b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-char.out++
-1524915532b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-double.out
-1524915532b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-double.out++
- 594930693b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-float.out
- 594930693b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-float.out++
-1957268000b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-int.out
-1957268000b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-int.out++
-1658583497b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-longdouble.out
-1658583497b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-longdouble.out++
- 312453039b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-longlong.out
- 312453039b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-longlong.out++
-1244662439b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-long.out
-1244662439b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-long.out++
-3802875737b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-pointer.out
-3802875737b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-pointer.out++
-1324451320b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-ptrdiff.out
-1324451320b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-ptrdiff.out++
-1620300254b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-short.out
-1620300254b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-short.out++
-1933118540b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-size.out
-1933118540b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-size.out++
-3741425609b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-wchar.out
-3741425609b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/size-wchar.out++
-1870109470b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-char.out
-1870109470b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-char.out++
-1651744974b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-double.out
-1651744974b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-double.out++
- 362585434b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-float.out
- 362585434b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-float.out++
-1163094327b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-int.out
-1163094327b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-int.out++
- 291703399b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-longdouble.out
- 291703399b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-longdouble.out++
-3762408624b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-longlong.out
-3762408624b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-longlong.out++
-3555956076b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-long.out
-3555956076b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-long.out++
-2332886721b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-pointer.out
-2332886721b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-pointer.out++
-2480870612b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-short.out
-2480870612b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-a-short.out++
-2916189460b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-char.out
-2916189460b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-char.out++
-2502123578b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-char.out
-2502123578b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-char.out++
- 908745179b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-double.out
- 908745179b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-double.out+
-1491334033b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-float.out
-1491334033b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-float.out++
-1108678434b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-int.out
-1108678434b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-int.out++
-1691807337b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-long.out
-1691807337b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-long.out++
-3880595806b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-pointer.out
-1830679325b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-short.out
-1830679325b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-a-short.out++
-2688367579b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-char.out
-2688367579b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-char.out++
- 562176588b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-double.out
- 562176588b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-double.out++
-3081730244b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-float.out
-3081730244b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-float.out++
- 830680808b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-int.out
- 830680808b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-int.out++
-4111931150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-longlong.out
-4111931150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-longlong.out+
-1437253678b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-long.out
-1437253678b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-long.out++
- 497513900b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-double.out
- 497513900b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-double.out++
-3184654982b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-pointer.out
-3184654982b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-pointer.out++
-2209121894b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-ptrdiff_t.out
- 607323772b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-char.out
- 607323772b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-char.out++
-1592572645b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-double.out
-1592572645b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-double.out+
-2123592192b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-float.out
-2123592192b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-float.out++
-1624565665b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-short.out
-1624565665b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-short.out++
-2058112871b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-int.out
-2058112871b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-int.out++
- 18114278b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-size_t.out
- 18114278b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-size_t.out++
-1209643017b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-long.out
-1209643017b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-long.out++
- 137221407b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-pointer.out
-2707233896b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-short.out
-2707233896b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-s-short.out++
-2306040258b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-wchar_t.out
-2306040258b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-wchar_t.out++
- 561421555b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-char.out
-3000456303b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-char.out++
- 989841357b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-int.out
-2841513809b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-int.out++
-3221903988b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-long.out
-1403753192b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-long.out++
-2463066035b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-short.out
- 24031023b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longdouble-zf-short.out+
-2489472050b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-float.out
-2489472050b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-float.out++
-2743476630b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-int.out
-2743476630b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-int.out++
-2821438118b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-char.out
-2821438118b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-char.out++
- 44039327b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-double.out
- 44039327b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-double.out++
-3941392051b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-float.out
-3941392051b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-float.out++
-2609834450b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-int.out
-2609834450b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-int.out++
-2868812260b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-longlong.out
-2868812260b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-longlong.out+
-3407178115b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-long.out
-3407178115b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-long.out++
- 855452388b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-pointer.out
- 855452388b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-pointer.out++
-3186715271b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-short.out
-3186715271b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-a-short.out++
-3073461247b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-char.out
-3073461247b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-char.out++
-3665863579b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-longdouble.out
-3665863579b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-longdouble.out++
-3026224568b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-double.out
-3026224568b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-double.out++
-1191292162b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-float.out
-1191292162b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-float.out++
-1548870351b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-int.out
-1548870351b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-int.out++
-3829659624b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-longdouble.out
-3829659624b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-longdouble.out+
-1372837239b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-longlong.out
-1372837239b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-longlong.out++
-4020247482b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-longlong.out
-4020247482b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-longlong.out++
- 470378869b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-long.out
- 470378869b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-long.out++
-2654575439b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-long.out
-2654575439b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-long.out++
-3536102064b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-pointer.out
-3536102064b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-pointer.out++
- 579862700b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-ptrdiff_t.out
- 579862700b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-ptrdiff_t.out++
- 949526555b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-char.out
- 949526555b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-char.out++
- 397921610b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-double.out
- 397921610b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-double.out++
-2538191755b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-float.out
-2538191755b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-float.out++
-1971310399b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-short.out
-1971310399b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-short.out++
-4237589805b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-int.out
-4237589805b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-int.out++
-2419011586b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-size_t.out
-2419011586b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-size_t.out++
-1624025758b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-longlong.out
-1624025758b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-longlong.out+
-3782463750b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-long.out
-3782463750b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-long.out++
-1972186934b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-pointer.out
-1972186934b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-pointer.out++
- 829099133b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-short.out
- 829099133b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-s-short.out++
-1350491757b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-wchar_t.out
-1350491757b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-wchar_t.out++
-2215666329b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-char.out
- 745407154b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-char.out++
- 140198870b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-int.out
-3397457298b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-int.out++
- 972059489b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-longlong.out
- 904046880b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-long.out
-2657286993b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-long.out++
-2804701286b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-short.out
- 22008069b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-longlong-zf-short.out++
- 628108037b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-pointer.out
- 628108037b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-pointer.out++
-1311213846b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-ptrdiff_t.out
-1311213846b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-ptrdiff_t.out++
-2141238480b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-char.out
-2141238480b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-char.out++
-1859208772b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-double.out
-1859208772b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-double.out++
-4206164034b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-float.out
-4206164034b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-float.out++
- 945387931b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-short.out
- 945387931b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-short.out++
-3679940725b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-int.out
-3679940725b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-int.out++
-2232487072b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-size_t.out
-2232487072b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-size_t.out++
-3251153332b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-longdouble.out
-3251153332b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-longdouble.out++
- 247594466b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-longlong.out
- 247594466b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-longlong.out++
-2261218946b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-long.out
-2261218946b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-long.out++
-3759513989b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-pointer.out
-3759513989b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-pointer.out++
-3008225932b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-short.out
-3008225932b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-s-short.out++
-3661856117b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-wchar_t.out
-3661856117b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-wchar_t.out++
-2003883578b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-char.out
-1185711188b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-char.out++
- 79396233b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-int.out
- 347581897b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-int.out++
-2617412395b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-longlong.out
-2872220966b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-longlong.out++
-1379940925b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-long.out
-3639419163b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-long.out++
-1812574077b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-short.out
-2920229150b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-long-zf-short.out++
- 638071746b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-char.out
- 638071746b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-char.out++
-3332432545b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-double.out
-3332432545b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-double.out++
-1534334155b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-float.out
-1534334155b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-float.out++
-3880550727b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-int.out
-3880550727b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-int.out++
- 251411986b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-longdouble.out
-2493905430b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-longlong.out
-2493905430b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-longlong.out++
- 180275403b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-long.out
- 180275403b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-long.out++
-1868637423b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-pointer.out
-1868637423b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-pointer.out++
-3971852122b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-short.out
-3971852122b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-a-short.out++
-3868413247b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-char.out
-3868413247b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-char.out++
-3686342475b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-double.out
-3686342475b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-double.out++
-3364520721b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-float.out
-3364520721b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-float.out++
-2026186277b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-int.out
-2026186277b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-int.out++
-1274562854b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-longdouble.out
-1274562854b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-longdouble.out++
-2670045344b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-longlong.out
-2670045344b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-longlong.out++
- 554032384b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-long.out
- 554032384b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-long.out++
-2655788537b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-pointer.out
-2655788537b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-pointer.out++
- 797630104b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-ptrdiff_t.out
- 797630104b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-ptrdiff_t.out++
-1922745643b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-char.out
-1922745643b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-char.out++
-4073638002b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-double.out
-4073638002b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-double.out++
-3219629814b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-float.out
-3219629814b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-float.out++
-3050131671b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-short.out
-3050131671b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-short.out++
-2810751409b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-int.out
-2810751409b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-int.out++
-3655683515b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-size_t.out
-3655683515b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-size_t.out++
-2708502837b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-longdouble.out
- 753682265b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-longlong.out
- 753682265b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-longlong.out++
-4193535248b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-long.out
-4193535248b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-long.out++
- 554657656b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-pointer.out
- 554657656b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-pointer.out++
- 843107606b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-short.out
- 843107606b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-s-short.out++
-2293091315b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-wchar_t.out
-2293091315b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-wchar_t.out++
-1599802745b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-char.out
-3264566923b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-char.out++
-2587475685b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-int.out
-1005185879b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-int.out++
-2426330969b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-longlong.out
-3112366542b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-longlong.out+
- 273113417b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-long.out
-3825433163b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-long.out++
-1180077740b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-short.out
- 875920723b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-pointer-zf-short.out++
-2651380458b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-char.out
-2651380458b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-char.out++
-2157112743b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-double.out
-2157112743b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-double.out++
- 2483342b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-float.out
- 2483342b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-float.out++
-3030027871b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-int.out
-3030027871b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-int.out++
- 842815367b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-longdouble.out
-2374908820b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-longlong.out
-2374908820b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-longlong.out++
-2742634608b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-long.out
-2742634608b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-long.out++
-1105378681b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-pointer.out
-1105378681b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-pointer.out++
-2222112016b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-ptrdiff_t.out
-2222112016b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-ptrdiff_t.out+
- 178487862b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-short.out
- 178487862b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-short.out++
-3944948267b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-size_t.out
-3944948267b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-size_t.out++
- 730216995b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-wchar_t.out
- 730216995b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-ptrdiff_t-wchar_t.out++
-3233423287b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-char.out
-3233423287b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-char.out++
-2913953381b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-double.out
-2913953381b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-double.out++
-3441673581b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-float.out
-3441673581b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-float.out++
- 911216572b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-int.out
- 911216572b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-int.out++
-3193177612b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-longdouble.out
-3193177612b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-longdouble.out++
-3997296607b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-longlong.out
-3997296607b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-longlong.out++
-1537969173b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-long.out
-1537969173b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-long.out++
- 364952624b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-pointer.out
- 364952624b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-pointer.out++
- 970855379b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-short.out
- 970855379b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-a-short.out++
-3887113392b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-char.out
-3887113392b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-char.out++
- 851101858b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-double.out
- 851101858b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-double.out++
-3721234230b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-float.out
-3721234230b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-float.out++
-1012475701b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-int.out
-1012475701b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-int.out++
-2555149638b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-longdouble.out
-2555149638b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-longdouble.out++
-2273094318b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-longlong.out
-2273094318b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-longlong.out++
-3766414610b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-long.out
-3766414610b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-long.out++
-1639107229b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-pointer.out
-1639107229b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-pointer.out++
-1075156439b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-ptrdiff_t.out
-1075156439b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-ptrdiff_t.out++
-2869252033b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-char.out
-2869252033b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-char.out++
-2528716480b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-double.out
-2528716480b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-double.out++
- 785209287b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-float.out
- 785209287b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-float.out++
-2164738263b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-short.out
-2164738263b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-short.out++
-1126071492b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-int.out
-1126071492b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-int.out++
-3593875829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-size_t.out
-3593875829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-size_t.out++
-3460438392b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-longdouble.out
-3460438392b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-longdouble.out++
-1289753849b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-longlong.out
-1289753849b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-longlong.out++
-1435590236b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-long.out
-1435590236b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-long.out++
-1476260714b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-pointer.out
-1476260714b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-pointer.out++
- 500188532b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-short.out
- 500188532b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-s-short.out++
-2506643620b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-wchar_t.out
-2506643620b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-wchar_t.out++
-3126905441b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-char.out
-1940799148b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-char.out++
-1010693185b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-int.out
-1212564314b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-int.out++
-2599781179b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-longlong.out
-3990788430b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-longlong.out++
-1799180429b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-long.out
-3670265189b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-long.out++
- 412178968b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-short.out
-1523910308b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-short-zf-short.out++
- 177607961b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-char.out
- 177607961b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-char.out++
-2444832335b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-double.out
-2444832335b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-double.out++
-2227123143b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-float.out
-2227123143b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-float.out++
-2732243950b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-int.out
-2732243950b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-int.out++
-2655501391b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-longdouble.out
-2655501391b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-longdouble.out++
-3487867828b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-longlong.out
-3487867828b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-longlong.out++
- 978381513b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-long.out
- 978381513b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-long.out++
-4141092354b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-pointer.out
-4141092354b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-pointer.out++
- 282420262b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-ptrdiff_t.out
- 282420262b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-ptrdiff_t.out++
- 708432696b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-short.out
- 708432696b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-short.out++
-1667222853b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-size_t.out
-1667222853b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-size_t.out++
- 839103492b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-wchar_t.out
- 839103492b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-size_t-wchar_t.out++
-1754196141b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-char.out
-1754196141b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-char.out++
- 355115283b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-double.out
- 355115283b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-double.out++
-4175033844b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-float.out
-4175033844b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-float.out++
-2745764679b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-int.out
-2745764679b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-int.out++
-3007141392b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-longdouble.out
-3007141392b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-longdouble.out++
-1445387844b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-longlong.out
-1445387844b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-longlong.out++
-2937616530b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-long.out
-2937616530b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-long.out++
-2501204111b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-pointer.out
-2501204111b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-pointer.out++
- 887379829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-ptrdiff_t.out
- 887379829b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-ptrdiff_t.out++
-2241734194b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-short.out
-2241734194b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-short.out++
- 676320345b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-size_t.out
- 676320345b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-size_t.out++
-2213842565b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-wchar_t.out
-2213842565b ./gcc/testsuite/consistency.vlad/layout/i960-97r2-results/s-wchar_t-wchar_t.out++
-2700306833b ./gcc/testsuite/consistency.vlad/layout/minimal-struct-size-align.c
-3619982975b ./gcc/testsuite/consistency.vlad/layout/s-char-a-char.c
- 727040386b ./gcc/testsuite/consistency.vlad/layout/s-char-a-double.c
- 491533109b ./gcc/testsuite/consistency.vlad/layout/s-char-a-float.c
-3078996477b ./gcc/testsuite/consistency.vlad/layout/s-char-a-int.c
- 572081613b ./gcc/testsuite/consistency.vlad/layout/s-char-a-long.c
-1875679261b ./gcc/testsuite/consistency.vlad/layout/s-char-a-longdouble.c
-1802587241b ./gcc/testsuite/consistency.vlad/layout/s-char-a-longlong.c
-3668401631b ./gcc/testsuite/consistency.vlad/layout/s-char-a-pointer.c
-2583229386b ./gcc/testsuite/consistency.vlad/layout/s-char-a-short.c
- 354065986b ./gcc/testsuite/consistency.vlad/layout/s-char-char.c
- 166713106b ./gcc/testsuite/consistency.vlad/layout/s-char-double.c
- 789665974b ./gcc/testsuite/consistency.vlad/layout/s-char-float.c
-2449543606b ./gcc/testsuite/consistency.vlad/layout/s-char-int.c
-2677202274b ./gcc/testsuite/consistency.vlad/layout/s-char-long.c
-3864063005b ./gcc/testsuite/consistency.vlad/layout/s-char-longdouble.c
-2745197038b ./gcc/testsuite/consistency.vlad/layout/s-char-longlong.c
-4261808453b ./gcc/testsuite/consistency.vlad/layout/s-char-pointer.c
-2261048804b ./gcc/testsuite/consistency.vlad/layout/s-char-ptrdiff_t.c
-1919204038b ./gcc/testsuite/consistency.vlad/layout/s-char-s-char.c
-2356076301b ./gcc/testsuite/consistency.vlad/layout/s-char-s-double.c
- 765329706b ./gcc/testsuite/consistency.vlad/layout/s-char-s-float.c
-3605211274b ./gcc/testsuite/consistency.vlad/layout/s-char-short.c
-3351760677b ./gcc/testsuite/consistency.vlad/layout/s-char-s-int.c
-3130164308b ./gcc/testsuite/consistency.vlad/layout/s-char-size_t.c
-1763672929b ./gcc/testsuite/consistency.vlad/layout/s-char-s-long.c
-1834388031b ./gcc/testsuite/consistency.vlad/layout/s-char-s-longdouble.c
- 559076232b ./gcc/testsuite/consistency.vlad/layout/s-char-s-longlong.c
-2344655103b ./gcc/testsuite/consistency.vlad/layout/s-char-s-pointer.c
- 220067620b ./gcc/testsuite/consistency.vlad/layout/s-char-s-short.c
-4159231551b ./gcc/testsuite/consistency.vlad/layout/s-char-wchar_t.c
-2462993036b ./gcc/testsuite/consistency.vlad/layout/s-char-zf-char.c
- 541003594b ./gcc/testsuite/consistency.vlad/layout/s-char-zf-int.c
-2021533516b ./gcc/testsuite/consistency.vlad/layout/s-char-zf-long.c
- 664373477b ./gcc/testsuite/consistency.vlad/layout/s-char-zf-longlong.c
-3578692014b ./gcc/testsuite/consistency.vlad/layout/s-char-zf-short.c
-3453180393b ./gcc/testsuite/consistency.vlad/layout/s-double-a-char.c
- 101761990b ./gcc/testsuite/consistency.vlad/layout/s-double-a-double.c
-3473415719b ./gcc/testsuite/consistency.vlad/layout/s-double-a-float.c
- 327989632b ./gcc/testsuite/consistency.vlad/layout/s-double-a-int.c
- 233827811b ./gcc/testsuite/consistency.vlad/layout/s-double-a-long.c
-2208485716b ./gcc/testsuite/consistency.vlad/layout/s-double-a-longdouble.c
-1391002931b ./gcc/testsuite/consistency.vlad/layout/s-double-a-longlong.c
-2859596990b ./gcc/testsuite/consistency.vlad/layout/s-double-a-pointer.c
-3559689934b ./gcc/testsuite/consistency.vlad/layout/s-double-a-short.c
-4020276225b ./gcc/testsuite/consistency.vlad/layout/s-double-char.c
- 987841011b ./gcc/testsuite/consistency.vlad/layout/s-double-double.c
- 704836077b ./gcc/testsuite/consistency.vlad/layout/s-double-float.c
-2692874561b ./gcc/testsuite/consistency.vlad/layout/s-double-int.c
-2941605757b ./gcc/testsuite/consistency.vlad/layout/s-double-long.c
-3228770514b ./gcc/testsuite/consistency.vlad/layout/s-double-longdouble.c
-3584369719b ./gcc/testsuite/consistency.vlad/layout/s-double-longlong.c
-1752254424b ./gcc/testsuite/consistency.vlad/layout/s-double-pointer.c
-2905865681b ./gcc/testsuite/consistency.vlad/layout/s-double-ptrdiff_t.c
-1892057278b ./gcc/testsuite/consistency.vlad/layout/s-double-s-char.c
-2394566615b ./gcc/testsuite/consistency.vlad/layout/s-double-s-double.c
-4064931917b ./gcc/testsuite/consistency.vlad/layout/s-double-s-float.c
-1137455402b ./gcc/testsuite/consistency.vlad/layout/s-double-short.c
-3672946380b ./gcc/testsuite/consistency.vlad/layout/s-double-s-int.c
-3731114983b ./gcc/testsuite/consistency.vlad/layout/s-double-size_t.c
-4099130503b ./gcc/testsuite/consistency.vlad/layout/s-double-s-long.c
-2508841997b ./gcc/testsuite/consistency.vlad/layout/s-double-s-longdouble.c
-2547516874b ./gcc/testsuite/consistency.vlad/layout/s-double-s-longlong.c
-2394584890b ./gcc/testsuite/consistency.vlad/layout/s-double-s-pointer.c
-1087857878b ./gcc/testsuite/consistency.vlad/layout/s-double-s-short.c
-1074227714b ./gcc/testsuite/consistency.vlad/layout/s-double-wchar_t.c
-4075513176b ./gcc/testsuite/consistency.vlad/layout/s-double-zf-char.c
-2181060239b ./gcc/testsuite/consistency.vlad/layout/s-double-zf-int.c
-1000788988b ./gcc/testsuite/consistency.vlad/layout/s-double-zf-long.c
-2794343535b ./gcc/testsuite/consistency.vlad/layout/s-double-zf-longlong.c
-3512529490b ./gcc/testsuite/consistency.vlad/layout/s-double-zf-short.c
-4042825902b ./gcc/testsuite/consistency.vlad/layout/s-float-a-char.c
- 281123545b ./gcc/testsuite/consistency.vlad/layout/s-float-a-double.c
-1325772879b ./gcc/testsuite/consistency.vlad/layout/s-float-a-float.c
-3760629573b ./gcc/testsuite/consistency.vlad/layout/s-float-a-int.c
-2902891820b ./gcc/testsuite/consistency.vlad/layout/s-float-a-long.c
-3379455906b ./gcc/testsuite/consistency.vlad/layout/s-float-a-longdouble.c
- 398042011b ./gcc/testsuite/consistency.vlad/layout/s-float-a-longlong.c
-2674774020b ./gcc/testsuite/consistency.vlad/layout/s-float-a-pointer.c
-3115271065b ./gcc/testsuite/consistency.vlad/layout/s-float-a-short.c
- 230653640b ./gcc/testsuite/consistency.vlad/layout/s-float-char.c
-1157255499b ./gcc/testsuite/consistency.vlad/layout/s-float-double.c
-3686192464b ./gcc/testsuite/consistency.vlad/layout/s-float-float.c
-2877639267b ./gcc/testsuite/consistency.vlad/layout/s-float-int.c
-3705421231b ./gcc/testsuite/consistency.vlad/layout/s-float-long.c
-1996389551b ./gcc/testsuite/consistency.vlad/layout/s-float-longdouble.c
-3641662812b ./gcc/testsuite/consistency.vlad/layout/s-float-longlong.c
-4197610973b ./gcc/testsuite/consistency.vlad/layout/s-float-pointer.c
-3172840384b ./gcc/testsuite/consistency.vlad/layout/s-float-ptrdiff_t.c
-3748837421b ./gcc/testsuite/consistency.vlad/layout/s-float-s-char.c
-1026162480b ./gcc/testsuite/consistency.vlad/layout/s-float-s-double.c
-1757829971b ./gcc/testsuite/consistency.vlad/layout/s-float-s-float.c
-1092900439b ./gcc/testsuite/consistency.vlad/layout/s-float-short.c
-1286304248b ./gcc/testsuite/consistency.vlad/layout/s-float-s-int.c
-1246576103b ./gcc/testsuite/consistency.vlad/layout/s-float-size_t.c
-1058880033b ./gcc/testsuite/consistency.vlad/layout/s-float-s-long.c
-3954384291b ./gcc/testsuite/consistency.vlad/layout/s-float-s-longdouble.c
-2151659662b ./gcc/testsuite/consistency.vlad/layout/s-float-s-longlong.c
-3825039217b ./gcc/testsuite/consistency.vlad/layout/s-float-s-pointer.c
-4061428355b ./gcc/testsuite/consistency.vlad/layout/s-float-s-short.c
-1758331367b ./gcc/testsuite/consistency.vlad/layout/s-float-wchar_t.c
-3117484708b ./gcc/testsuite/consistency.vlad/layout/s-float-zf-char.c
- 550306535b ./gcc/testsuite/consistency.vlad/layout/s-float-zf-int.c
- 860633704b ./gcc/testsuite/consistency.vlad/layout/s-float-zf-long.c
-2581705036b ./gcc/testsuite/consistency.vlad/layout/s-float-zf-longlong.c
- 978024585b ./gcc/testsuite/consistency.vlad/layout/s-float-zf-short.c
-2251445439b ./gcc/testsuite/consistency.vlad/layout/s-int-a-char.c
-4138447069b ./gcc/testsuite/consistency.vlad/layout/s-int-a-double.c
- 8870751b ./gcc/testsuite/consistency.vlad/layout/s-int-a-float.c
- 594032269b ./gcc/testsuite/consistency.vlad/layout/s-int-a-int.c
-1651432793b ./gcc/testsuite/consistency.vlad/layout/s-int-a-long.c
- 425973014b ./gcc/testsuite/consistency.vlad/layout/s-int-a-longdouble.c
-2059166583b ./gcc/testsuite/consistency.vlad/layout/s-int-a-longlong.c
-1995049255b ./gcc/testsuite/consistency.vlad/layout/s-int-a-pointer.c
-2715818862b ./gcc/testsuite/consistency.vlad/layout/s-int-a-short.c
-2961221250b ./gcc/testsuite/consistency.vlad/layout/s-int-char.c
-3584882967b ./gcc/testsuite/consistency.vlad/layout/s-int-double.c
- 125565346b ./gcc/testsuite/consistency.vlad/layout/s-int-float.c
-2549467707b ./gcc/testsuite/consistency.vlad/layout/s-int-int.c
-2672469567b ./gcc/testsuite/consistency.vlad/layout/s-int-long.c
-1658335152b ./gcc/testsuite/consistency.vlad/layout/s-int-longdouble.c
-2278283539b ./gcc/testsuite/consistency.vlad/layout/s-int-longlong.c
-2494362400b ./gcc/testsuite/consistency.vlad/layout/s-int-pointer.c
-2858080039b ./gcc/testsuite/consistency.vlad/layout/s-int-ptrdiff_t.c
-2014925874b ./gcc/testsuite/consistency.vlad/layout/s-int-s-char.c
-1964724618b ./gcc/testsuite/consistency.vlad/layout/s-int-s-double.c
-3513841278b ./gcc/testsuite/consistency.vlad/layout/s-int-s-float.c
-3104696131b ./gcc/testsuite/consistency.vlad/layout/s-int-short.c
-1905836586b ./gcc/testsuite/consistency.vlad/layout/s-int-s-int.c
-2371102487b ./gcc/testsuite/consistency.vlad/layout/s-int-size_t.c
-2587799721b ./gcc/testsuite/consistency.vlad/layout/s-int-s-long.c
-3343583899b ./gcc/testsuite/consistency.vlad/layout/s-int-s-longdouble.c
-3181309941b ./gcc/testsuite/consistency.vlad/layout/s-int-s-longlong.c
-3198349197b ./gcc/testsuite/consistency.vlad/layout/s-int-s-pointer.c
-1300436407b ./gcc/testsuite/consistency.vlad/layout/s-int-s-short.c
-1358869671b ./gcc/testsuite/consistency.vlad/layout/s-int-wchar_t.c
-2934034901b ./gcc/testsuite/consistency.vlad/layout/s-int-zf-char.c
-3777217979b ./gcc/testsuite/consistency.vlad/layout/s-int-zf-int.c
- 823148372b ./gcc/testsuite/consistency.vlad/layout/s-int-zf-long.c
- 55540591b ./gcc/testsuite/consistency.vlad/layout/s-int-zf-longlong.c
-3825926612b ./gcc/testsuite/consistency.vlad/layout/s-int-zf-short.c
-1746672839b ./gcc/testsuite/consistency.vlad/layout/size-bool.cpp
-1662052327b ./gcc/testsuite/consistency.vlad/layout/size-char.c
-3361924014b ./gcc/testsuite/consistency.vlad/layout/size-double.c
-3608174439b ./gcc/testsuite/consistency.vlad/layout/size-float.c
- 224133749b ./gcc/testsuite/consistency.vlad/layout/size-int.c
-2229647371b ./gcc/testsuite/consistency.vlad/layout/size-long.c
-1496097293b ./gcc/testsuite/consistency.vlad/layout/size-longdouble.c
-4243493805b ./gcc/testsuite/consistency.vlad/layout/size-longlong.c
-4234774016b ./gcc/testsuite/consistency.vlad/layout/size-pointer.c
-2742276437b ./gcc/testsuite/consistency.vlad/layout/size-ptrdiff.c
-2302838291b ./gcc/testsuite/consistency.vlad/layout/size-short.c
-1008704183b ./gcc/testsuite/consistency.vlad/layout/size-size.c
- 767395346b ./gcc/testsuite/consistency.vlad/layout/size-wchar.c
-1014160019b ./gcc/testsuite/consistency.vlad/layout/s-long-a-char.c
-1536711874b ./gcc/testsuite/consistency.vlad/layout/s-long-a-double.c
-3755724289b ./gcc/testsuite/consistency.vlad/layout/s-long-a-float.c
- 503463330b ./gcc/testsuite/consistency.vlad/layout/s-long-a-int.c
-3383693601b ./gcc/testsuite/consistency.vlad/layout/s-long-a-long.c
-2168579267b ./gcc/testsuite/consistency.vlad/layout/s-long-a-longdouble.c
-4089126986b ./gcc/testsuite/consistency.vlad/layout/s-long-a-longlong.c
-4219127792b ./gcc/testsuite/consistency.vlad/layout/s-long-a-pointer.c
-1534004990b ./gcc/testsuite/consistency.vlad/layout/s-long-a-short.c
- 34352633b ./gcc/testsuite/consistency.vlad/layout/s-long-char.c
-2174891233b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-char.c
-2263495912b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-double.c
-3626355134b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-float.c
-1044992438b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-int.c
- 189180334b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-long.c
-4219133242b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-longdouble.c
-2001710554b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-longlong.c
-1208252647b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-pointer.c
-2636586618b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-a-short.c
-1855339665b ./gcc/testsuite/consistency.vlad/layout/s-long-double.c
-1490423944b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-char.c
- 838089339b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-double.c
-1901020700b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-float.c
-2396695027b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-int.c
-2690146526b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-long.c
-2776581044b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-longdouble.c
-3418604951b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-longlong.c
-1459368509b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-pointer.c
-3960936313b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-ptrdiff_t.c
-3172036867b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-char.c
-3278313495b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-double.c
- 717089781b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-float.c
-2851776236b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-short.c
- 585061394b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-int.c
-1105156962b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-size_t.c
-2473143756b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-long.c
-3638726274b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-longdouble.c
-2023017496b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-longlong.c
- 54720140b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-pointer.c
-1046498915b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-s-short.c
- 696506953b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-wchar_t.c
- 928069138b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-zf-char.c
- 258209983b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-zf-int.c
-2227123382b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-zf-long.c
-2318782753b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-zf-longlong.c
- 558562280b ./gcc/testsuite/consistency.vlad/layout/s-longdouble-zf-short.c
-1325299293b ./gcc/testsuite/consistency.vlad/layout/s-long-float.c
-1780742682b ./gcc/testsuite/consistency.vlad/layout/s-long-int.c
-2746913946b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-char.c
-2756929591b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-double.c
-2279164925b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-float.c
-4018385557b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-int.c
-1568904470b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-long.c
-2084909194b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-longdouble.c
-2072567607b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-longlong.c
-3659263135b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-pointer.c
-2702861495b ./gcc/testsuite/consistency.vlad/layout/s-longlong-a-short.c
-2290380505b ./gcc/testsuite/consistency.vlad/layout/s-long-long.c
-1507260206b ./gcc/testsuite/consistency.vlad/layout/s-longlong-char.c
-1915663861b ./gcc/testsuite/consistency.vlad/layout/s-long-longdouble.c
-3018473966b ./gcc/testsuite/consistency.vlad/layout/s-longlong-double.c
-3253702018b ./gcc/testsuite/consistency.vlad/layout/s-longlong-float.c
-2941557918b ./gcc/testsuite/consistency.vlad/layout/s-longlong-int.c
-2368362338b ./gcc/testsuite/consistency.vlad/layout/s-long-longlong.c
-4153967841b ./gcc/testsuite/consistency.vlad/layout/s-longlong-long.c
-3405846513b ./gcc/testsuite/consistency.vlad/layout/s-longlong-longdouble.c
-2651247883b ./gcc/testsuite/consistency.vlad/layout/s-longlong-longlong.c
-1899261816b ./gcc/testsuite/consistency.vlad/layout/s-longlong-pointer.c
-4100649747b ./gcc/testsuite/consistency.vlad/layout/s-longlong-ptrdiff_t.c
- 183550901b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-char.c
-1353709337b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-double.c
-1622859985b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-float.c
- 922091281b ./gcc/testsuite/consistency.vlad/layout/s-longlong-short.c
-3395819121b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-int.c
-3366304494b ./gcc/testsuite/consistency.vlad/layout/s-longlong-size_t.c
- 263554828b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-long.c
-3292604731b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-longdouble.c
- 591712639b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-longlong.c
-1892567537b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-pointer.c
- 108932916b ./gcc/testsuite/consistency.vlad/layout/s-longlong-s-short.c
-2585353545b ./gcc/testsuite/consistency.vlad/layout/s-longlong-wchar_t.c
-1992502711b ./gcc/testsuite/consistency.vlad/layout/s-longlong-zf-char.c
- 943400451b ./gcc/testsuite/consistency.vlad/layout/s-longlong-zf-int.c
-2630463188b ./gcc/testsuite/consistency.vlad/layout/s-longlong-zf-long.c
- 108059264b ./gcc/testsuite/consistency.vlad/layout/s-longlong-zf-longlong.c
- 162090179b ./gcc/testsuite/consistency.vlad/layout/s-longlong-zf-short.c
- 843227723b ./gcc/testsuite/consistency.vlad/layout/s-long-pointer.c
- 501034814b ./gcc/testsuite/consistency.vlad/layout/s-long-ptrdiff_t.c
-1174469544b ./gcc/testsuite/consistency.vlad/layout/s-long-s-char.c
-1007870215b ./gcc/testsuite/consistency.vlad/layout/s-long-s-double.c
-1307839500b ./gcc/testsuite/consistency.vlad/layout/s-long-s-float.c
-3071018593b ./gcc/testsuite/consistency.vlad/layout/s-long-short.c
-3475912781b ./gcc/testsuite/consistency.vlad/layout/s-long-s-int.c
-3723194327b ./gcc/testsuite/consistency.vlad/layout/s-long-size_t.c
-1568391695b ./gcc/testsuite/consistency.vlad/layout/s-long-s-long.c
- 74365094b ./gcc/testsuite/consistency.vlad/layout/s-long-s-longdouble.c
- 501521658b ./gcc/testsuite/consistency.vlad/layout/s-long-s-longlong.c
-1748381535b ./gcc/testsuite/consistency.vlad/layout/s-long-s-pointer.c
-1836579330b ./gcc/testsuite/consistency.vlad/layout/s-long-s-short.c
- 531244141b ./gcc/testsuite/consistency.vlad/layout/s-long-wchar_t.c
-3081442820b ./gcc/testsuite/consistency.vlad/layout/s-long-zf-char.c
- 914301375b ./gcc/testsuite/consistency.vlad/layout/s-long-zf-int.c
-1562082244b ./gcc/testsuite/consistency.vlad/layout/s-long-zf-long.c
-2520232686b ./gcc/testsuite/consistency.vlad/layout/s-long-zf-longlong.c
-3568433576b ./gcc/testsuite/consistency.vlad/layout/s-long-zf-short.c
-2431525882b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-char.c
-4182828966b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-double.c
-2030442801b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-float.c
-1733216426b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-int.c
-3840360232b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-long.c
-2069695022b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-longdouble.c
-2835229256b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-longlong.c
-3644499340b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-pointer.c
- 773032503b ./gcc/testsuite/consistency.vlad/layout/s-pointer-a-short.c
- 872221332b ./gcc/testsuite/consistency.vlad/layout/s-pointer-char.c
-3712864759b ./gcc/testsuite/consistency.vlad/layout/s-pointer-double.c
-3278150392b ./gcc/testsuite/consistency.vlad/layout/s-pointer-float.c
-2124704716b ./gcc/testsuite/consistency.vlad/layout/s-pointer-int.c
-1565179914b ./gcc/testsuite/consistency.vlad/layout/s-pointer-long.c
-2078378543b ./gcc/testsuite/consistency.vlad/layout/s-pointer-longdouble.c
-1849539090b ./gcc/testsuite/consistency.vlad/layout/s-pointer-longlong.c
- 503815918b ./gcc/testsuite/consistency.vlad/layout/s-pointer-pointer.c
-3954057196b ./gcc/testsuite/consistency.vlad/layout/s-pointer-ptrdiff_t.c
-1074103467b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-char.c
- 902838190b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-double.c
-2754137289b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-float.c
-2645485672b ./gcc/testsuite/consistency.vlad/layout/s-pointer-short.c
- 157709325b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-int.c
-3640207262b ./gcc/testsuite/consistency.vlad/layout/s-pointer-size_t.c
- 663732630b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-long.c
-1874509941b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-longdouble.c
-2063875624b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-longlong.c
-3199456656b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-pointer.c
-2883478056b ./gcc/testsuite/consistency.vlad/layout/s-pointer-s-short.c
-1316769493b ./gcc/testsuite/consistency.vlad/layout/s-pointer-wchar_t.c
-2773199310b ./gcc/testsuite/consistency.vlad/layout/s-pointer-zf-char.c
-2595768381b ./gcc/testsuite/consistency.vlad/layout/s-pointer-zf-int.c
-3251136680b ./gcc/testsuite/consistency.vlad/layout/s-pointer-zf-long.c
-3053600608b ./gcc/testsuite/consistency.vlad/layout/s-pointer-zf-longlong.c
-2022112027b ./gcc/testsuite/consistency.vlad/layout/s-pointer-zf-short.c
- 618303243b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-char.c
-3604192129b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-double.c
-3789860510b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-float.c
-4080198327b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-int.c
- 728676820b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-long.c
-2724559984b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-longdouble.c
-3861693259b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-longlong.c
-2953128927b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-pointer.c
-3951847759b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-ptrdiff_t.c
-1191074387b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-short.c
-2578277124b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-size_t.c
- 990211289b ./gcc/testsuite/consistency.vlad/layout/s-ptrdiff_t-wchar_t.c
-3239161768b ./gcc/testsuite/consistency.vlad/layout/s-short-a-char.c
- 166180776b ./gcc/testsuite/consistency.vlad/layout/s-short-a-double.c
-3527046415b ./gcc/testsuite/consistency.vlad/layout/s-short-a-float.c
-3518845261b ./gcc/testsuite/consistency.vlad/layout/s-short-a-int.c
-2632946218b ./gcc/testsuite/consistency.vlad/layout/s-short-a-long.c
- 891865249b ./gcc/testsuite/consistency.vlad/layout/s-short-a-longdouble.c
-3556515853b ./gcc/testsuite/consistency.vlad/layout/s-short-a-longlong.c
-4114603886b ./gcc/testsuite/consistency.vlad/layout/s-short-a-pointer.c
- 613451481b ./gcc/testsuite/consistency.vlad/layout/s-short-a-short.c
-1593495051b ./gcc/testsuite/consistency.vlad/layout/s-short-char.c
-1100143197b ./gcc/testsuite/consistency.vlad/layout/s-short-double.c
-2242679753b ./gcc/testsuite/consistency.vlad/layout/s-short-float.c
- 238785879b ./gcc/testsuite/consistency.vlad/layout/s-short-int.c
-2409205100b ./gcc/testsuite/consistency.vlad/layout/s-short-long.c
- 936065027b ./gcc/testsuite/consistency.vlad/layout/s-short-longdouble.c
-1356304829b ./gcc/testsuite/consistency.vlad/layout/s-short-longlong.c
-3906654641b ./gcc/testsuite/consistency.vlad/layout/s-short-pointer.c
- 746386291b ./gcc/testsuite/consistency.vlad/layout/s-short-ptrdiff_t.c
-4244286521b ./gcc/testsuite/consistency.vlad/layout/s-short-s-char.c
-2777905017b ./gcc/testsuite/consistency.vlad/layout/s-short-s-double.c
-2756050532b ./gcc/testsuite/consistency.vlad/layout/s-short-s-float.c
- 524161230b ./gcc/testsuite/consistency.vlad/layout/s-short-short.c
- 374910896b ./gcc/testsuite/consistency.vlad/layout/s-short-s-int.c
-1327871729b ./gcc/testsuite/consistency.vlad/layout/s-short-size_t.c
- 479538741b ./gcc/testsuite/consistency.vlad/layout/s-short-s-long.c
-4025001367b ./gcc/testsuite/consistency.vlad/layout/s-short-s-longdouble.c
-1274385076b ./gcc/testsuite/consistency.vlad/layout/s-short-s-longlong.c
-2921220650b ./gcc/testsuite/consistency.vlad/layout/s-short-s-pointer.c
-1050140596b ./gcc/testsuite/consistency.vlad/layout/s-short-s-short.c
-2735755699b ./gcc/testsuite/consistency.vlad/layout/s-short-wchar_t.c
-2947437906b ./gcc/testsuite/consistency.vlad/layout/s-short-zf-char.c
-3330463439b ./gcc/testsuite/consistency.vlad/layout/s-short-zf-int.c
- 624125342b ./gcc/testsuite/consistency.vlad/layout/s-short-zf-long.c
-3735090434b ./gcc/testsuite/consistency.vlad/layout/s-short-zf-longlong.c
-1239770486b ./gcc/testsuite/consistency.vlad/layout/s-short-zf-short.c
-3848053775b ./gcc/testsuite/consistency.vlad/layout/s-size_t-char.c
-1956516319b ./gcc/testsuite/consistency.vlad/layout/s-size_t-double.c
-2592266062b ./gcc/testsuite/consistency.vlad/layout/s-size_t-float.c
-3435419949b ./gcc/testsuite/consistency.vlad/layout/s-size_t-int.c
-2779348851b ./gcc/testsuite/consistency.vlad/layout/s-size_t-long.c
-1352676649b ./gcc/testsuite/consistency.vlad/layout/s-size_t-longdouble.c
-1255992044b ./gcc/testsuite/consistency.vlad/layout/s-size_t-longlong.c
-1034174646b ./gcc/testsuite/consistency.vlad/layout/s-size_t-pointer.c
-1114015641b ./gcc/testsuite/consistency.vlad/layout/s-size_t-ptrdiff_t.c
-4081850249b ./gcc/testsuite/consistency.vlad/layout/s-size_t-short.c
-3689183736b ./gcc/testsuite/consistency.vlad/layout/s-size_t-size_t.c
-1221978657b ./gcc/testsuite/consistency.vlad/layout/s-size_t-wchar_t.c
- 828103866b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-char.c
-3601528642b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-double.c
-2903333507b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-float.c
-3466709699b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-int.c
-1609307684b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-long.c
-1060870307b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-longdouble.c
- 6489873b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-longlong.c
-3776188535b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-pointer.c
-1700128528b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-ptrdiff_t.c
-4089915411b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-short.c
-2415574017b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-size_t.c
-2755349152b ./gcc/testsuite/consistency.vlad/layout/s-wchar_t-wchar_t.c
-3207711727b ./gcc/testsuite/consistency.vlad/README
-2068139423b ./gcc/testsuite/consistency.vlad/vlad.exp
-2710099993b ./gcc/testsuite/g77.dg/20010216-1.f
- 211215127b ./gcc/testsuite/g77.dg/bprob/bprob-1.f
- 345215922b ./gcc/testsuite/g77.dg/bprob/bprob.exp
-1815830648b ./gcc/testsuite/g77.dg/dg.exp
-2557434398b ./gcc/testsuite/g77.dg/f77-edit-i-in.f
- 462852590b ./gcc/testsuite/g77.dg/f77-edit-i-out.f
-3692598063b ./gcc/testsuite/g77.dg/fbackslash.f
-3349950140b ./gcc/testsuite/g77.dg/fcase-preserve.f
-3493107241b ./gcc/testsuite/g77.dg/ff90-1.f
- 846110140b ./gcc/testsuite/g77.dg/ffixed-line-length-0.f
- 306302525b ./gcc/testsuite/g77.dg/ffixed-line-length-132.f
- 256008601b ./gcc/testsuite/g77.dg/ffixed-line-length-72.f
-1293833923b ./gcc/testsuite/g77.dg/ffixed-line-length-7.f
-2426259256b ./gcc/testsuite/g77.dg/ffixed-line-length-none.f
- 382313186b ./gcc/testsuite/g77.dg/ffree-form-1.f
-1427613779b ./gcc/testsuite/g77.dg/fno-backslash.f
-1787673713b ./gcc/testsuite/g77.dg/fno-f90-1.f
-1073584992b ./gcc/testsuite/g77.dg/fno-fixed-form-1.f
-2730066868b ./gcc/testsuite/g77.dg/fno-onetrip.f
- 109115498b ./gcc/testsuite/g77.dg/fno-typeless-boz.f
-2720105997b ./gcc/testsuite/g77.dg/fno-underscoring.f
- 614291430b ./gcc/testsuite/g77.dg/fno-vxt-1.f
- 646478354b ./gcc/testsuite/g77.dg/fonetrip.f
- 298378793b ./gcc/testsuite/g77.dg/ftypeless-boz.f
-1970388396b ./gcc/testsuite/g77.dg/fugly-assumed.f
- 813122842b ./gcc/testsuite/g77.dg/funderscoring.f
-2755287889b ./gcc/testsuite/g77.dg/fvxt-1.f
-4218369628b ./gcc/testsuite/g77.dg/gcov/gcov-1.f
-2262587727b ./gcc/testsuite/g77.dg/gcov/gcov-1.x
-3439770285b ./gcc/testsuite/g77.dg/gcov/gcov.exp
-2336318971b ./gcc/testsuite/g77.dg/pr3743-1.f
-3986109564b ./gcc/testsuite/g77.dg/pr3743-2.f
- 202729794b ./gcc/testsuite/g77.dg/pr3743-3.f
-2533314951b ./gcc/testsuite/g77.dg/pr3743-4.f
-3959051916b ./gcc/testsuite/g77.dg/pr5473.f
-3263834407b ./gcc/testsuite/g77.dg/strlen0.f
-2382988813b ./gcc/testsuite/g77.f-torture/compile/19990218-0.f
- 687255164b ./gcc/testsuite/g77.f-torture/compile/19990305-0.f
-4067537756b ./gcc/testsuite/g77.f-torture/compile/19990419-0.f
-3411435248b ./gcc/testsuite/g77.f-torture/compile/19990502-0.f
-1869005611b ./gcc/testsuite/g77.f-torture/compile/19990502-1.f
-4129788740b ./gcc/testsuite/g77.f-torture/compile/19990525-0.f
-2117801028b ./gcc/testsuite/g77.f-torture/compile/19990826-1.f
-1740583941b ./gcc/testsuite/g77.f-torture/compile/19990826-3.f
-2822256200b ./gcc/testsuite/g77.f-torture/compile/19990905-0.f
-1729432512b ./gcc/testsuite/g77.f-torture/compile/19990905-2.f
-3873649497b ./gcc/testsuite/g77.f-torture/compile/20000412-1.f
-2840421610b ./gcc/testsuite/g77.f-torture/compile/20000511-1.f
-2723712181b ./gcc/testsuite/g77.f-torture/compile/20000511-2.f
- 82013928b ./gcc/testsuite/g77.f-torture/compile/20000518.f
- 412413004b ./gcc/testsuite/g77.f-torture/compile/20000601-1.f
-3180214474b ./gcc/testsuite/g77.f-torture/compile/20000601-2.f
-4055621021b ./gcc/testsuite/g77.f-torture/compile/20000629-1.f
-2336002500b ./gcc/testsuite/g77.f-torture/compile/20000630-2.f
-3970776632b ./gcc/testsuite/g77.f-torture/compile/20010115.f
-3772314415b ./gcc/testsuite/g77.f-torture/compile/20010321-1.f
-2213180372b ./gcc/testsuite/g77.f-torture/compile/20010426.f
- 267354428b ./gcc/testsuite/g77.f-torture/compile/20010519-1.f
-1776224360b ./gcc/testsuite/g77.f-torture/compile/960317-1.f
-2528706840b ./gcc/testsuite/g77.f-torture/compile/970125-0.f
-3100920780b ./gcc/testsuite/g77.f-torture/compile/970915-0.f
-3454578083b ./gcc/testsuite/g77.f-torture/compile/980310-1.f
-1063918752b ./gcc/testsuite/g77.f-torture/compile/980310-2.f
-3699662809b ./gcc/testsuite/g77.f-torture/compile/980310-3.f
-3523537961b ./gcc/testsuite/g77.f-torture/compile/980310-4.f
- 581995045b ./gcc/testsuite/g77.f-torture/compile/980310-6.f
- 758602941b ./gcc/testsuite/g77.f-torture/compile/980310-7.f
-3264996889b ./gcc/testsuite/g77.f-torture/compile/980310-8.f
- 55455134b ./gcc/testsuite/g77.f-torture/compile/980419-2.f
-2284181108b ./gcc/testsuite/g77.f-torture/compile/980424-0.f
- 585713859b ./gcc/testsuite/g77.f-torture/compile/980427-0.f
-2853235618b ./gcc/testsuite/g77.f-torture/compile/980519-2.f
-2138526345b ./gcc/testsuite/g77.f-torture/compile/980729-0.f
-1069123470b ./gcc/testsuite/g77.f-torture/compile/981117-1.f
-2053478041b ./gcc/testsuite/g77.f-torture/compile/990115-1.f
-3973737388b ./gcc/testsuite/g77.f-torture/compile/alpha1.f
-2107279947b ./gcc/testsuite/g77.f-torture/compile/alpha1.x
-4148688482b ./gcc/testsuite/g77.f-torture/compile/compile.exp
-1347946300b ./gcc/testsuite/g77.f-torture/compile/cpp2.F
- 883444817b ./gcc/testsuite/g77.f-torture/compile/cpp.F
- 407305629b ./gcc/testsuite/g77.f-torture/compile/toon_1.f
-1875205813b ./gcc/testsuite/g77.f-torture/execute/19981119-0.f
- 207133658b ./gcc/testsuite/g77.f-torture/execute/19990313-0.f
-1311165077b ./gcc/testsuite/g77.f-torture/execute/19990313-1.f
-2827041779b ./gcc/testsuite/g77.f-torture/execute/19990313-2.f
-3627217083b ./gcc/testsuite/g77.f-torture/execute/19990313-3.f
- 334442269b ./gcc/testsuite/g77.f-torture/execute/19990325-0.f
-2498790248b ./gcc/testsuite/g77.f-torture/execute/19990325-1.f
-1566943825b ./gcc/testsuite/g77.f-torture/execute/19990419-1.f
-1702408878b ./gcc/testsuite/g77.f-torture/execute/19990826-0.f
- 548549288b ./gcc/testsuite/g77.f-torture/execute/19990826-2.f
-2245832686b ./gcc/testsuite/g77.f-torture/execute/20000503-1.f
- 119817854b ./gcc/testsuite/g77.f-torture/execute/20001111.f
-3778266196b ./gcc/testsuite/g77.f-torture/execute/20001201.f
-1721706271b ./gcc/testsuite/g77.f-torture/execute/20001201.x
-3482653018b ./gcc/testsuite/g77.f-torture/execute/20010116.f
- 104441706b ./gcc/testsuite/g77.f-torture/execute/20010426.f
-2134591728b ./gcc/testsuite/g77.f-torture/execute/20010430.f
-2127502131b ./gcc/testsuite/g77.f-torture/execute/20010610.f
-1835626441b ./gcc/testsuite/g77.f-torture/execute/5122.f
- 166046708b ./gcc/testsuite/g77.f-torture/execute/947.f
-2872624206b ./gcc/testsuite/g77.f-torture/execute/970625-2.f
-2944713164b ./gcc/testsuite/g77.f-torture/execute/970816-3.f
-3043987240b ./gcc/testsuite/g77.f-torture/execute/971102-1.f
-1356010785b ./gcc/testsuite/g77.f-torture/execute/980520-1.f
-2822825054b ./gcc/testsuite/g77.f-torture/execute/980628-0.f
-1154425496b ./gcc/testsuite/g77.f-torture/execute/980628-10.f
- 731282896b ./gcc/testsuite/g77.f-torture/execute/980628-1.f
- 652392894b ./gcc/testsuite/g77.f-torture/execute/980628-2.f
-3891656681b ./gcc/testsuite/g77.f-torture/execute/980628-3.f
-4188896500b ./gcc/testsuite/g77.f-torture/execute/980628-4.f
-2107279947b ./gcc/testsuite/g77.f-torture/execute/980628-4.x
-3480269714b ./gcc/testsuite/g77.f-torture/execute/980628-5.f
-2107279947b ./gcc/testsuite/g77.f-torture/execute/980628-5.x
-1467613590b ./gcc/testsuite/g77.f-torture/execute/980628-6.f
-2107279947b ./gcc/testsuite/g77.f-torture/execute/980628-6.x
-1104933088b ./gcc/testsuite/g77.f-torture/execute/980628-7.f
-1264093278b ./gcc/testsuite/g77.f-torture/execute/980628-8.f
-2969694593b ./gcc/testsuite/g77.f-torture/execute/980628-9.f
-1979661682b ./gcc/testsuite/g77.f-torture/execute/980701-0.f
-2199388550b ./gcc/testsuite/g77.f-torture/execute/980701-1.f
-2519492399b ./gcc/testsuite/g77.f-torture/execute/alpha2.f
-2107279947b ./gcc/testsuite/g77.f-torture/execute/alpha2.x
-2259027475b ./gcc/testsuite/g77.f-torture/execute/auto0.f
-2107279947b ./gcc/testsuite/g77.f-torture/execute/auto0.x
-4202240464b ./gcc/testsuite/g77.f-torture/execute/auto1.f
-2107279947b ./gcc/testsuite/g77.f-torture/execute/auto1.x
- 232981110b ./gcc/testsuite/g77.f-torture/execute/cabs.f
- 877306443b ./gcc/testsuite/g77.f-torture/execute/claus.f
-2682388459b ./gcc/testsuite/g77.f-torture/execute/complex_1.f
- 268027241b ./gcc/testsuite/g77.f-torture/execute/cpp2.F
- 274053025b ./gcc/testsuite/g77.f-torture/execute/cpp.F
-3689042274b ./gcc/testsuite/g77.f-torture/execute/dcomplex.f
-2431087293b ./gcc/testsuite/g77.f-torture/execute/dnrm2.f
-1012852742b ./gcc/testsuite/g77.f-torture/execute/erfc.f
- 574860802b ./gcc/testsuite/g77.f-torture/execute/execute.exp
-2348837361b ./gcc/testsuite/g77.f-torture/execute/exp.f
-1166305221b ./gcc/testsuite/g77.f-torture/execute/f90-intrinsic-bit.f
-1401151480b ./gcc/testsuite/g77.f-torture/execute/f90-intrinsic-mathematical.f
- 296501581b ./gcc/testsuite/g77.f-torture/execute/f90-intrinsic-numeric.f
-1448802159b ./gcc/testsuite/g77.f-torture/execute/intrinsic77.f
-1619227376b ./gcc/testsuite/g77.f-torture/execute/intrinsic-f2c-z.f
-2512429495b ./gcc/testsuite/g77.f-torture/execute/intrinsic-unix-bessel.f
- 846341057b ./gcc/testsuite/g77.f-torture/execute/intrinsic-unix-erf.f
-3837275230b ./gcc/testsuite/g77.f-torture/execute/intrinsic-vax-cd.f
-3527337523b ./gcc/testsuite/g77.f-torture/execute/io0.f
-1721706271b ./gcc/testsuite/g77.f-torture/execute/io0.x
-1499748556b ./gcc/testsuite/g77.f-torture/execute/io1.f
-1721706271b ./gcc/testsuite/g77.f-torture/execute/io1.x
-3838992103b ./gcc/testsuite/g77.f-torture/execute/labug1.f
- 273345472b ./gcc/testsuite/g77.f-torture/execute/large_vec.f
- 775036014b ./gcc/testsuite/g77.f-torture/execute/le.f
-3780459526b ./gcc/testsuite/g77.f-torture/execute/short.f
- 85764886b ./gcc/testsuite/g77.f-torture/execute/u77-test.f
- 991484451b ./gcc/testsuite/g77.f-torture/execute/u77-test.x
-2234422141b ./gcc/testsuite/g77.f-torture/noncompile/19981216-0.f
-2509327097b ./gcc/testsuite/g77.f-torture/noncompile/19990218-1.f
- 684708897b ./gcc/testsuite/g77.f-torture/noncompile/19990826-4.f
-3593377062b ./gcc/testsuite/g77.f-torture/noncompile/19990905-1.f
-3649968898b ./gcc/testsuite/g77.f-torture/noncompile/970626-2.f
-3382416911b ./gcc/testsuite/g77.f-torture/noncompile/980615-0.f
-4269744935b ./gcc/testsuite/g77.f-torture/noncompile/980616-0.f
-2374591598b ./gcc/testsuite/g77.f-torture/noncompile/check0.f
- 351555731b ./gcc/testsuite/g77.f-torture/noncompile/noncompile.exp
-2075770423b ./gcc/testsuite/gcc.c-torture/ChangeLog.0
-1091110310b ./gcc/testsuite/gcc.c-torture/compat/strct-layout.c
- 684784126b ./gcc/testsuite/gcc.c-torture/compat/struct-align.c
- 92980596b ./gcc/testsuite/gcc.c-torture/compat/struct-big.c
-2993970556b ./gcc/testsuite/gcc.c-torture/compat/struct-i.c
-1373131310b ./gcc/testsuite/gcc.c-torture/compat/struct-ic.c
- 367335173b ./gcc/testsuite/gcc.c-torture/compat/struct-ii.c
- 954170066b ./gcc/testsuite/gcc.c-torture/compat/struct-ret-1.c
- 452836178b ./gcc/testsuite/gcc.c-torture/compile/20000105-1.c
-1901634825b ./gcc/testsuite/gcc.c-torture/compile/20000105-2.c
-3139355726b ./gcc/testsuite/gcc.c-torture/compile/20000120-1.c
- 193146344b ./gcc/testsuite/gcc.c-torture/compile/20000120-2.c
-3770371830b ./gcc/testsuite/gcc.c-torture/compile/20000127-1.c
-1457334923b ./gcc/testsuite/gcc.c-torture/compile/20000211-1.c
-3072124491b ./gcc/testsuite/gcc.c-torture/compile/20000211-3.c
-2487027780b ./gcc/testsuite/gcc.c-torture/compile/20000224-1.c
- 976060843b ./gcc/testsuite/gcc.c-torture/compile/20000314-1.c
-2716819908b ./gcc/testsuite/gcc.c-torture/compile/20000314-2.c
-3323098889b ./gcc/testsuite/gcc.c-torture/compile/20000319-1.c
- 621983670b ./gcc/testsuite/gcc.c-torture/compile/20000326-1.c
- 362965832b ./gcc/testsuite/gcc.c-torture/compile/20000326-2.c
-1360671142b ./gcc/testsuite/gcc.c-torture/compile/20000329-1.c
-1376990121b ./gcc/testsuite/gcc.c-torture/compile/20000403-1.c
-1295018105b ./gcc/testsuite/gcc.c-torture/compile/20000403-2.c
-2994009121b ./gcc/testsuite/gcc.c-torture/compile/20000405-1.c
-1202553741b ./gcc/testsuite/gcc.c-torture/compile/20000405-2.c
-1972736685b ./gcc/testsuite/gcc.c-torture/compile/20000405-3.c
-4185438508b ./gcc/testsuite/gcc.c-torture/compile/20000412-1.c
-1020690516b ./gcc/testsuite/gcc.c-torture/compile/20000412-2.c
- 606471227b ./gcc/testsuite/gcc.c-torture/compile/20000420-1.c
-3618930753b ./gcc/testsuite/gcc.c-torture/compile/20000420-2.c
-1513651895b ./gcc/testsuite/gcc.c-torture/compile/20000427-1.c
-1253394561b ./gcc/testsuite/gcc.c-torture/compile/20000502-1.c
-2301846307b ./gcc/testsuite/gcc.c-torture/compile/20000504-1.c
-4216707490b ./gcc/testsuite/gcc.c-torture/compile/20000511-1.c
- 160078686b ./gcc/testsuite/gcc.c-torture/compile/20000517-1.c
- 138460064b ./gcc/testsuite/gcc.c-torture/compile/20000518-1.c
-4277321614b ./gcc/testsuite/gcc.c-torture/compile/20000523-1.c
-2889990236b ./gcc/testsuite/gcc.c-torture/compile/20000605-1.c
-1801476756b ./gcc/testsuite/gcc.c-torture/compile/20000606-1.c
-3807623957b ./gcc/testsuite/gcc.c-torture/compile/20000609-1.c
-3889196710b ./gcc/testsuite/gcc.c-torture/compile/20000629-1.c
-2019168881b ./gcc/testsuite/gcc.c-torture/compile/20000701-1.c
- 23561090b ./gcc/testsuite/gcc.c-torture/compile/20000717-1.c
-1282603692b ./gcc/testsuite/gcc.c-torture/compile/20000718.c
-1628213540b ./gcc/testsuite/gcc.c-torture/compile/20000728-1.c
-1312817714b ./gcc/testsuite/gcc.c-torture/compile/20000802-1.c
- 726930164b ./gcc/testsuite/gcc.c-torture/compile/20000803-1.c
- 221685889b ./gcc/testsuite/gcc.c-torture/compile/20000804-1.c
- 365799149b ./gcc/testsuite/gcc.c-torture/compile/20000804-1.x
- 14592370b ./gcc/testsuite/gcc.c-torture/compile/20000818-1.c
-3951998464b ./gcc/testsuite/gcc.c-torture/compile/20000825-1.c
- 568900271b ./gcc/testsuite/gcc.c-torture/compile/20000827-1.c
-1702972966b ./gcc/testsuite/gcc.c-torture/compile/20000922-1.c
-1072305501b ./gcc/testsuite/gcc.c-torture/compile/20000923-1.c
-3797844565b ./gcc/testsuite/gcc.c-torture/compile/20001018-1.c
-1683967360b ./gcc/testsuite/gcc.c-torture/compile/20001024-1.c
-2747210984b ./gcc/testsuite/gcc.c-torture/compile/20001109-1.c
-1480527842b ./gcc/testsuite/gcc.c-torture/compile/20001109-2.c
-1361242877b ./gcc/testsuite/gcc.c-torture/compile/20001116-1.c
-3966980994b ./gcc/testsuite/gcc.c-torture/compile/20001121-1.c
- 599106867b ./gcc/testsuite/gcc.c-torture/compile/20001123-1.c
- 533599449b ./gcc/testsuite/gcc.c-torture/compile/20001123-2.c
-3673931755b ./gcc/testsuite/gcc.c-torture/compile/20001205-1.c
-4124637154b ./gcc/testsuite/gcc.c-torture/compile/20001205-1.x
-1735535039b ./gcc/testsuite/gcc.c-torture/compile/20001212-1.c
-2993397009b ./gcc/testsuite/gcc.c-torture/compile/20001221-1.c
-2331416953b ./gcc/testsuite/gcc.c-torture/compile/20001222-1.c
-1872827667b ./gcc/testsuite/gcc.c-torture/compile/20001226-1.c
-1799289877b ./gcc/testsuite/gcc.c-torture/compile/20001226-1.x
-4099141482b ./gcc/testsuite/gcc.c-torture/compile/20010102-1.c
-2413955943b ./gcc/testsuite/gcc.c-torture/compile/20010107-1.c
-1898226085b ./gcc/testsuite/gcc.c-torture/compile/20010112-1.c
-2489493145b ./gcc/testsuite/gcc.c-torture/compile/20010113-1.c
- 297170965b ./gcc/testsuite/gcc.c-torture/compile/20010114-1.c
- 419921862b ./gcc/testsuite/gcc.c-torture/compile/20010114-2.c
-1452007589b ./gcc/testsuite/gcc.c-torture/compile/20010117-1.c
- 704576096b ./gcc/testsuite/gcc.c-torture/compile/20010117-2.c
-3392519430b ./gcc/testsuite/gcc.c-torture/compile/20010118-1.c
-3355150280b ./gcc/testsuite/gcc.c-torture/compile/20010124-1.c
-1731094577b ./gcc/testsuite/gcc.c-torture/compile/20010202-1.c
- 459778149b ./gcc/testsuite/gcc.c-torture/compile/20010209-1.c
- 620156961b ./gcc/testsuite/gcc.c-torture/compile/20010226-1.c
- 501795051b ./gcc/testsuite/gcc.c-torture/compile/20010227-1.c
-1832317029b ./gcc/testsuite/gcc.c-torture/compile/20010313-1.c
-2854417844b ./gcc/testsuite/gcc.c-torture/compile/20010320-1.c
-3271306723b ./gcc/testsuite/gcc.c-torture/compile/20010326-1.c
-2222955049b ./gcc/testsuite/gcc.c-torture/compile/20010327-1.c
-3399421780b ./gcc/testsuite/gcc.c-torture/compile/20010328-1.c
-3356008690b ./gcc/testsuite/gcc.c-torture/compile/20010329-1.c
-4152637354b ./gcc/testsuite/gcc.c-torture/compile/20010404-1.c
-1548469760b ./gcc/testsuite/gcc.c-torture/compile/20010408-1.c
-3063630520b ./gcc/testsuite/gcc.c-torture/compile/20010421-1.c
-3134579946b ./gcc/testsuite/gcc.c-torture/compile/20010423-1.c
-2289909284b ./gcc/testsuite/gcc.c-torture/compile/20010426-1.c
-2357536931b ./gcc/testsuite/gcc.c-torture/compile/20010503-1.c
-1212631565b ./gcc/testsuite/gcc.c-torture/compile/20010510-1.c
-1882079811b ./gcc/testsuite/gcc.c-torture/compile/20010516-1.c
-3166989448b ./gcc/testsuite/gcc.c-torture/compile/20010518-1.c
-3017611134b ./gcc/testsuite/gcc.c-torture/compile/20010518-2.c
- 85616231b ./gcc/testsuite/gcc.c-torture/compile/20010518-2.x
-3272357537b ./gcc/testsuite/gcc.c-torture/compile/20010525-1.c
- 475581102b ./gcc/testsuite/gcc.c-torture/compile/20010605-1.c
-2936945185b ./gcc/testsuite/gcc.c-torture/compile/20010605-2.c
-1294346331b ./gcc/testsuite/gcc.c-torture/compile/20010605-3.c
-1636067950b ./gcc/testsuite/gcc.c-torture/compile/20010610-1.c
-3077114319b ./gcc/testsuite/gcc.c-torture/compile/20010611-1.c
-2584744929b ./gcc/testsuite/gcc.c-torture/compile/20010701-1.c
-3815198051b ./gcc/testsuite/gcc.c-torture/compile/20010706-1.c
-2713093522b ./gcc/testsuite/gcc.c-torture/compile/20010711-1.c
-2299173088b ./gcc/testsuite/gcc.c-torture/compile/20010711-2.c
-2571658330b ./gcc/testsuite/gcc.c-torture/compile/20010714-1.c
-3287379546b ./gcc/testsuite/gcc.c-torture/compile/20010824-1.c
- 246682254b ./gcc/testsuite/gcc.c-torture/compile/20010903-1.c
-2923439609b ./gcc/testsuite/gcc.c-torture/compile/20010903-2.c
-4222197564b ./gcc/testsuite/gcc.c-torture/compile/20010911-1.c
-1179192833b ./gcc/testsuite/gcc.c-torture/compile/20011010-1.c
-3994663975b ./gcc/testsuite/gcc.c-torture/compile/20011023-1.c
-1413783183b ./gcc/testsuite/gcc.c-torture/compile/20011029-1.c
-2871784009b ./gcc/testsuite/gcc.c-torture/compile/20011106-1.c
-3630952349b ./gcc/testsuite/gcc.c-torture/compile/20011106-2.c
- 259957404b ./gcc/testsuite/gcc.c-torture/compile/20011109-1.c
-2924929463b ./gcc/testsuite/gcc.c-torture/compile/20011114-1.c
-3434496008b ./gcc/testsuite/gcc.c-torture/compile/20011114-2.c
-2760161415b ./gcc/testsuite/gcc.c-torture/compile/20011114-3.c
-3547339064b ./gcc/testsuite/gcc.c-torture/compile/20011114-4.c
-3653343012b ./gcc/testsuite/gcc.c-torture/compile/20011119-1.c
-2885054257b ./gcc/testsuite/gcc.c-torture/compile/20011119-2.c
- 174415171b ./gcc/testsuite/gcc.c-torture/compile/20011130-1.c
-1745547919b ./gcc/testsuite/gcc.c-torture/compile/20011130-2.c
-3987052556b ./gcc/testsuite/gcc.c-torture/compile/20011205-1.c
-1179199950b ./gcc/testsuite/gcc.c-torture/compile/20011217-1.c
- 315452475b ./gcc/testsuite/gcc.c-torture/compile/20011217-2.c
-3416537061b ./gcc/testsuite/gcc.c-torture/compile/20011218-1.c
-2149414673b ./gcc/testsuite/gcc.c-torture/compile/20011219-1.c
-1484609615b ./gcc/testsuite/gcc.c-torture/compile/20011219-2.c
-3590162726b ./gcc/testsuite/gcc.c-torture/compile/20011229-1.c
-1849951092b ./gcc/testsuite/gcc.c-torture/compile/20011229-2.c
-3637150343b ./gcc/testsuite/gcc.c-torture/compile/20020103-1.c
-3505269843b ./gcc/testsuite/gcc.c-torture/compile/20020106-1.c
-3398919425b ./gcc/testsuite/gcc.c-torture/compile/20020109-1.c
-2348431150b ./gcc/testsuite/gcc.c-torture/compile/20020109-2.c
-4197667212b ./gcc/testsuite/gcc.c-torture/compile/20020110.c
- 208428249b ./gcc/testsuite/gcc.c-torture/compile/20020116-1.c
- 966527433b ./gcc/testsuite/gcc.c-torture/compile/20020120-1.c
-3002186865b ./gcc/testsuite/gcc.c-torture/compile/20020121-1.c
-2862264485b ./gcc/testsuite/gcc.c-torture/compile/20020206-1.c
-1009994283b ./gcc/testsuite/gcc.c-torture/compile/20020210-1.c
-1683706700b ./gcc/testsuite/gcc.c-torture/compile/20020304-1.c
-3186842248b ./gcc/testsuite/gcc.c-torture/compile/20020304-2.c
-1366050512b ./gcc/testsuite/gcc.c-torture/compile/20020309-1.c
-1174986914b ./gcc/testsuite/gcc.c-torture/compile/20020309-2.c
-1727441689b ./gcc/testsuite/gcc.c-torture/compile/20020312-1.c
-2378124589b ./gcc/testsuite/gcc.c-torture/compile/20020315-1.c
-4029159547b ./gcc/testsuite/gcc.c-torture/compile/20020318-1.c
-2837722984b ./gcc/testsuite/gcc.c-torture/compile/20020320-1.c
-1380106070b ./gcc/testsuite/gcc.c-torture/compile/20020323-1.c
- 392286369b ./gcc/testsuite/gcc.c-torture/compile/20020330-1.c
-4289507025b ./gcc/testsuite/gcc.c-torture/compile/20020409-1.c
-3246888365b ./gcc/testsuite/gcc.c-torture/compile/20020418-1.c
-1318297601b ./gcc/testsuite/gcc.c-torture/compile/20020530-1.c
- 909926902b ./gcc/testsuite/gcc.c-torture/compile/20020605-1.c
- 168620187b ./gcc/testsuite/gcc.c-torture/compile/20020701-1.c
-1564612166b ./gcc/testsuite/gcc.c-torture/compile/20020710-1.c
- 737897185b ./gcc/testsuite/gcc.c-torture/compile/20020715-1.c
-4042098602b ./gcc/testsuite/gcc.c-torture/compile/20020926-1.c
- 337401938b ./gcc/testsuite/gcc.c-torture/compile/20020927-1.c
-1009786556b ./gcc/testsuite/gcc.c-torture/compile/20021007-1.c
- 778329230b ./gcc/testsuite/gcc.c-torture/compile/20021015-1.c
- 25981859b ./gcc/testsuite/gcc.c-torture/compile/20021015-2.c
- 375311401b ./gcc/testsuite/gcc.c-torture/compile/900116-1.c
-4181931788b ./gcc/testsuite/gcc.c-torture/compile/900216-1.c
- 426860692b ./gcc/testsuite/gcc.c-torture/compile/900313-1.c
- 221307575b ./gcc/testsuite/gcc.c-torture/compile/900407-1.c
- 197356982b ./gcc/testsuite/gcc.c-torture/compile/900516-1.c
-1548983744b ./gcc/testsuite/gcc.c-torture/compile/920301-1.c
-4282140702b ./gcc/testsuite/gcc.c-torture/compile/920409-1.c
-1778084656b ./gcc/testsuite/gcc.c-torture/compile/920409-2.c
- 213155575b ./gcc/testsuite/gcc.c-torture/compile/920410-1.c
- 645991439b ./gcc/testsuite/gcc.c-torture/compile/920410-2.c
-3957037518b ./gcc/testsuite/gcc.c-torture/compile/920411-2.c
-2334498932b ./gcc/testsuite/gcc.c-torture/compile/920413-1.c
- 962899604b ./gcc/testsuite/gcc.c-torture/compile/920415-1.c
-2539976202b ./gcc/testsuite/gcc.c-torture/compile/920428-1.c
-1013934609b ./gcc/testsuite/gcc.c-torture/compile/920428-2.c
- 788296187b ./gcc/testsuite/gcc.c-torture/compile/920428-3.c
- 972355256b ./gcc/testsuite/gcc.c-torture/compile/920428-4.c
-2850012644b ./gcc/testsuite/gcc.c-torture/compile/920428-5.c
-3327240012b ./gcc/testsuite/gcc.c-torture/compile/920428-6.c
-1997719687b ./gcc/testsuite/gcc.c-torture/compile/920428-7.c
-2992320179b ./gcc/testsuite/gcc.c-torture/compile/920501-10.c
-2609541759b ./gcc/testsuite/gcc.c-torture/compile/920501-11.c
- 46877596b ./gcc/testsuite/gcc.c-torture/compile/920501-12.c
- 432031083b ./gcc/testsuite/gcc.c-torture/compile/920501-13.c
-3986866565b ./gcc/testsuite/gcc.c-torture/compile/920501-15.c
-2140301132b ./gcc/testsuite/gcc.c-torture/compile/920501-16.c
-2776840158b ./gcc/testsuite/gcc.c-torture/compile/920501-17.c
-2935229477b ./gcc/testsuite/gcc.c-torture/compile/920501-18.c
-2462018157b ./gcc/testsuite/gcc.c-torture/compile/920501-19.c
-3673935883b ./gcc/testsuite/gcc.c-torture/compile/920501-1.c
-3480599006b ./gcc/testsuite/gcc.c-torture/compile/920501-20.c
-1689258794b ./gcc/testsuite/gcc.c-torture/compile/920501-21.c
- 693947540b ./gcc/testsuite/gcc.c-torture/compile/920501-22.c
- 195826579b ./gcc/testsuite/gcc.c-torture/compile/920501-23.c
- 825734676b ./gcc/testsuite/gcc.c-torture/compile/920501-2.c
-2815077449b ./gcc/testsuite/gcc.c-torture/compile/920501-3.c
-3150704176b ./gcc/testsuite/gcc.c-torture/compile/920501-4.c
-3936438856b ./gcc/testsuite/gcc.c-torture/compile/920501-6.c
-2978363162b ./gcc/testsuite/gcc.c-torture/compile/920501-7.c
-3178366367b ./gcc/testsuite/gcc.c-torture/compile/920501-8.c
-3988773566b ./gcc/testsuite/gcc.c-torture/compile/920501-9.c
-4273234272b ./gcc/testsuite/gcc.c-torture/compile/920502-1.c
- 451473472b ./gcc/testsuite/gcc.c-torture/compile/920502-2.c
-1332166500b ./gcc/testsuite/gcc.c-torture/compile/920520-1.c
-3357986992b ./gcc/testsuite/gcc.c-torture/compile/920520-1.x
- 901366109b ./gcc/testsuite/gcc.c-torture/compile/920521-1.c
- 85616231b ./gcc/testsuite/gcc.c-torture/compile/920521-1.x
-1216353647b ./gcc/testsuite/gcc.c-torture/compile/920529-1.c
- 619512296b ./gcc/testsuite/gcc.c-torture/compile/920608-1.c
-2459147095b ./gcc/testsuite/gcc.c-torture/compile/920611-2.c
-2108915266b ./gcc/testsuite/gcc.c-torture/compile/920615-1.c
-1738386639b ./gcc/testsuite/gcc.c-torture/compile/920617-1.c
-1497386838b ./gcc/testsuite/gcc.c-torture/compile/920617-2.c
- 15254500b ./gcc/testsuite/gcc.c-torture/compile/920623-1.c
-1775235688b ./gcc/testsuite/gcc.c-torture/compile/920624-1.c
-3157795265b ./gcc/testsuite/gcc.c-torture/compile/920625-1.c
-2188778612b ./gcc/testsuite/gcc.c-torture/compile/920625-1.x
- 832571494b ./gcc/testsuite/gcc.c-torture/compile/920625-2.c
-1209301541b ./gcc/testsuite/gcc.c-torture/compile/920626-1.c
-1071302436b ./gcc/testsuite/gcc.c-torture/compile/920701-1.c
-2769689708b ./gcc/testsuite/gcc.c-torture/compile/920702-1.c
-2699685766b ./gcc/testsuite/gcc.c-torture/compile/920706-1.c
-2611774952b ./gcc/testsuite/gcc.c-torture/compile/920710-2.c
-3175710753b ./gcc/testsuite/gcc.c-torture/compile/920711-1.c
-1838641399b ./gcc/testsuite/gcc.c-torture/compile/920721-1.c
-1730574618b ./gcc/testsuite/gcc.c-torture/compile/920723-1.c
-2728140867b ./gcc/testsuite/gcc.c-torture/compile/920729-1.c
-3543134222b ./gcc/testsuite/gcc.c-torture/compile/920806-1.c
- 301898459b ./gcc/testsuite/gcc.c-torture/compile/920808-1.c
-4286663396b ./gcc/testsuite/gcc.c-torture/compile/920809-1.c
-1519893227b ./gcc/testsuite/gcc.c-torture/compile/920817-1.c
-1506959740b ./gcc/testsuite/gcc.c-torture/compile/920820-1.c
-2009298978b ./gcc/testsuite/gcc.c-torture/compile/920821-1.c
- 153303695b ./gcc/testsuite/gcc.c-torture/compile/920821-2.c
-1035421587b ./gcc/testsuite/gcc.c-torture/compile/920825-1.c
-1883204896b ./gcc/testsuite/gcc.c-torture/compile/920825-2.c
- 378919939b ./gcc/testsuite/gcc.c-torture/compile/920826-1.c
- 324445241b ./gcc/testsuite/gcc.c-torture/compile/920828-1.c
-2512376601b ./gcc/testsuite/gcc.c-torture/compile/920829-1.c
-1175894768b ./gcc/testsuite/gcc.c-torture/compile/920831-1.c
-3615669663b ./gcc/testsuite/gcc.c-torture/compile/920902-1.c
-3213642392b ./gcc/testsuite/gcc.c-torture/compile/920909-1.c
- 923773306b ./gcc/testsuite/gcc.c-torture/compile/920917-1.c
- 313805874b ./gcc/testsuite/gcc.c-torture/compile/920928-1.c
-3576009210b ./gcc/testsuite/gcc.c-torture/compile/920928-2.c
-2038558878b ./gcc/testsuite/gcc.c-torture/compile/920928-3.c
-2544344324b ./gcc/testsuite/gcc.c-torture/compile/920928-4.c
- 934086546b ./gcc/testsuite/gcc.c-torture/compile/920928-5.c
- 6106016b ./gcc/testsuite/gcc.c-torture/compile/920928-6.c
- 735506239b ./gcc/testsuite/gcc.c-torture/compile/921004-1.c
-3888639831b ./gcc/testsuite/gcc.c-torture/compile/921011-1.c
-3956087084b ./gcc/testsuite/gcc.c-torture/compile/921011-2.c
-1370935236b ./gcc/testsuite/gcc.c-torture/compile/921012-1.c
-2304808730b ./gcc/testsuite/gcc.c-torture/compile/921012-2.c
-3157047871b ./gcc/testsuite/gcc.c-torture/compile/921013-1.c
-3740334758b ./gcc/testsuite/gcc.c-torture/compile/921019-1.c
-2811091388b ./gcc/testsuite/gcc.c-torture/compile/921021-1.c
-3551171868b ./gcc/testsuite/gcc.c-torture/compile/921024-1.c
-3924542394b ./gcc/testsuite/gcc.c-torture/compile/921026-1.c
-1165569278b ./gcc/testsuite/gcc.c-torture/compile/921103-1.c
-1243246144b ./gcc/testsuite/gcc.c-torture/compile/921109-1.c
-2203220429b ./gcc/testsuite/gcc.c-torture/compile/921111-1.c
-1990624597b ./gcc/testsuite/gcc.c-torture/compile/921116-2.c
- 517704894b ./gcc/testsuite/gcc.c-torture/compile/921118-1.c
-3811420781b ./gcc/testsuite/gcc.c-torture/compile/921126-1.c
-3727547715b ./gcc/testsuite/gcc.c-torture/compile/921202-1.c
- 568945264b ./gcc/testsuite/gcc.c-torture/compile/921202-2.c
-2130176572b ./gcc/testsuite/gcc.c-torture/compile/921203-1.c
- 492266852b ./gcc/testsuite/gcc.c-torture/compile/921203-2.c
- 855574805b ./gcc/testsuite/gcc.c-torture/compile/921206-1.c
-2014683974b ./gcc/testsuite/gcc.c-torture/compile/921227-1.c
- 96957459b ./gcc/testsuite/gcc.c-torture/compile/930109-1.c
-1189423329b ./gcc/testsuite/gcc.c-torture/compile/930109-2.c
-1543922161b ./gcc/testsuite/gcc.c-torture/compile/930111-1.c
-1357888911b ./gcc/testsuite/gcc.c-torture/compile/930117-1.c
-2068061905b ./gcc/testsuite/gcc.c-torture/compile/930118-1.c
-2900924058b ./gcc/testsuite/gcc.c-torture/compile/930120-1.c
-4121817111b ./gcc/testsuite/gcc.c-torture/compile/930126-1.c
-1532460815b ./gcc/testsuite/gcc.c-torture/compile/930210-1.c
-3625302497b ./gcc/testsuite/gcc.c-torture/compile/930217-1.c
-3938239975b ./gcc/testsuite/gcc.c-torture/compile/930222-1.c
-1557388855b ./gcc/testsuite/gcc.c-torture/compile/930325-1.c
-3378061921b ./gcc/testsuite/gcc.c-torture/compile/930326-1.c
-3007351406b ./gcc/testsuite/gcc.c-torture/compile/930326-1.x
-2931382100b ./gcc/testsuite/gcc.c-torture/compile/930411-1.c
-3578370973b ./gcc/testsuite/gcc.c-torture/compile/930421-1.c
-3734830625b ./gcc/testsuite/gcc.c-torture/compile/930427-2.c
-3885379756b ./gcc/testsuite/gcc.c-torture/compile/930503-1.c
- 959725141b ./gcc/testsuite/gcc.c-torture/compile/930503-2.c
- 140786434b ./gcc/testsuite/gcc.c-torture/compile/930506-1.c
-3305652641b ./gcc/testsuite/gcc.c-torture/compile/930506-2.c
-1442644232b ./gcc/testsuite/gcc.c-torture/compile/930510-1.c
-3993332569b ./gcc/testsuite/gcc.c-torture/compile/930513-1.c
-2006581046b ./gcc/testsuite/gcc.c-torture/compile/930513-2.c
-2698332239b ./gcc/testsuite/gcc.c-torture/compile/930513-3.c
- 90110464b ./gcc/testsuite/gcc.c-torture/compile/930523-1.c
-2548234910b ./gcc/testsuite/gcc.c-torture/compile/930525-1.c
- 422873186b ./gcc/testsuite/gcc.c-torture/compile/930527-1.c
- 784172570b ./gcc/testsuite/gcc.c-torture/compile/930529-1.c
-3569132715b ./gcc/testsuite/gcc.c-torture/compile/930530-1.c
-3200160962b ./gcc/testsuite/gcc.c-torture/compile/930602-1.c
-3142735794b ./gcc/testsuite/gcc.c-torture/compile/930603-1.c
-1973176638b ./gcc/testsuite/gcc.c-torture/compile/930607-1.c
- 208901999b ./gcc/testsuite/gcc.c-torture/compile/930611-1.c
-3976001091b ./gcc/testsuite/gcc.c-torture/compile/930618-1.c
- 583248042b ./gcc/testsuite/gcc.c-torture/compile/930621-1.c
-3751666180b ./gcc/testsuite/gcc.c-torture/compile/930623-1.c
-3714994986b ./gcc/testsuite/gcc.c-torture/compile/930702-1.c
-3138367793b ./gcc/testsuite/gcc.c-torture/compile/930926-1.c
- 126934282b ./gcc/testsuite/gcc.c-torture/compile/930927-1.c
-2046421038b ./gcc/testsuite/gcc.c-torture/compile/931003-1.c
-2795307593b ./gcc/testsuite/gcc.c-torture/compile/931004-1.c
-2248992767b ./gcc/testsuite/gcc.c-torture/compile/931013-1.c
- 554284027b ./gcc/testsuite/gcc.c-torture/compile/931013-2.c
-1170847752b ./gcc/testsuite/gcc.c-torture/compile/931013-3.c
- 752631056b ./gcc/testsuite/gcc.c-torture/compile/931018-1.c
-4120231716b ./gcc/testsuite/gcc.c-torture/compile/931031-1.c
-2466554678b ./gcc/testsuite/gcc.c-torture/compile/931102-1.c
-4193170992b ./gcc/testsuite/gcc.c-torture/compile/931102-2.c
-3312404691b ./gcc/testsuite/gcc.c-torture/compile/931203-1.c
-2144495581b ./gcc/testsuite/gcc.c-torture/compile/940611-1.c
-2217967256b ./gcc/testsuite/gcc.c-torture/compile/940712-1.c
- 43398345b ./gcc/testsuite/gcc.c-torture/compile/940718-1.c
-2813422857b ./gcc/testsuite/gcc.c-torture/compile/941014-1.c
- 714535983b ./gcc/testsuite/gcc.c-torture/compile/941014-2.c
- 236968493b ./gcc/testsuite/gcc.c-torture/compile/941014-3.c
- 772624016b ./gcc/testsuite/gcc.c-torture/compile/941014-4.c
-2255123649b ./gcc/testsuite/gcc.c-torture/compile/941019-1.c
-3482340577b ./gcc/testsuite/gcc.c-torture/compile/941111-1.c
-4138121525b ./gcc/testsuite/gcc.c-torture/compile/941113-1.c
- 938329066b ./gcc/testsuite/gcc.c-torture/compile/950122-1.c
-4155644724b ./gcc/testsuite/gcc.c-torture/compile/950124-1.c
-3810294661b ./gcc/testsuite/gcc.c-torture/compile/950221-1.c
-3460610209b ./gcc/testsuite/gcc.c-torture/compile/950329-1.c
-3474584992b ./gcc/testsuite/gcc.c-torture/compile/950512-1.c
-3344132126b ./gcc/testsuite/gcc.c-torture/compile/950530-1.c
-1876592424b ./gcc/testsuite/gcc.c-torture/compile/950607-1.c
-1023117358b ./gcc/testsuite/gcc.c-torture/compile/950610-1.c
-2634556580b ./gcc/testsuite/gcc.c-torture/compile/950612-1.c
-1196693335b ./gcc/testsuite/gcc.c-torture/compile/950613-1.c
- 447206228b ./gcc/testsuite/gcc.c-torture/compile/950618-1.c
- 267255638b ./gcc/testsuite/gcc.c-torture/compile/950719-1.c
-3590503950b ./gcc/testsuite/gcc.c-torture/compile/950729-1.c
-3836055170b ./gcc/testsuite/gcc.c-torture/compile/950816-1.c
-2188937099b ./gcc/testsuite/gcc.c-torture/compile/950816-2.c
-2634731147b ./gcc/testsuite/gcc.c-torture/compile/950816-3.c
-2650686602b ./gcc/testsuite/gcc.c-torture/compile/950910-1.c
-2979160187b ./gcc/testsuite/gcc.c-torture/compile/950919-1.c
-3635621359b ./gcc/testsuite/gcc.c-torture/compile/950921-1.c
-3500911374b ./gcc/testsuite/gcc.c-torture/compile/950922-1.c
-2220749535b ./gcc/testsuite/gcc.c-torture/compile/951004-1.c
-1578339532b ./gcc/testsuite/gcc.c-torture/compile/951106-1.c
- 459531698b ./gcc/testsuite/gcc.c-torture/compile/951116-1.c
-2236702069b ./gcc/testsuite/gcc.c-torture/compile/951128-1.c
- 559124320b ./gcc/testsuite/gcc.c-torture/compile/951220-1.c
-2931610069b ./gcc/testsuite/gcc.c-torture/compile/951222-1.c
- 834462352b ./gcc/testsuite/gcc.c-torture/compile/960106-1.c
-2810957446b ./gcc/testsuite/gcc.c-torture/compile/960130-1.c
-3942840130b ./gcc/testsuite/gcc.c-torture/compile/960201-1.c
-1531419420b ./gcc/testsuite/gcc.c-torture/compile/960218-1.c
-1748987127b ./gcc/testsuite/gcc.c-torture/compile/960220-1.c
-4272797008b ./gcc/testsuite/gcc.c-torture/compile/960221-1.c
-2932166589b ./gcc/testsuite/gcc.c-torture/compile/960319-1.c
-1856173622b ./gcc/testsuite/gcc.c-torture/compile/960514-1.c
-3435740171b ./gcc/testsuite/gcc.c-torture/compile/960704-1.c
-2939040127b ./gcc/testsuite/gcc.c-torture/compile/960829-1.c
- 497475088b ./gcc/testsuite/gcc.c-torture/compile/961004-1.c
-1946932829b ./gcc/testsuite/gcc.c-torture/compile/961010-1.c
- 304816181b ./gcc/testsuite/gcc.c-torture/compile/961019-1.c
-2048507537b ./gcc/testsuite/gcc.c-torture/compile/961031-1.c
-3079865887b ./gcc/testsuite/gcc.c-torture/compile/961126-1.c
-1672232168b ./gcc/testsuite/gcc.c-torture/compile/961203-1.c
-4037616572b ./gcc/testsuite/gcc.c-torture/compile/961203-1.x
-3759439975b ./gcc/testsuite/gcc.c-torture/compile/970206-1.c
-1182708149b ./gcc/testsuite/gcc.c-torture/compile/970214-1.c
-3593522245b ./gcc/testsuite/gcc.c-torture/compile/980329-1.c
-3672497829b ./gcc/testsuite/gcc.c-torture/compile/980408-1.c
-2062728359b ./gcc/testsuite/gcc.c-torture/compile/980504-1.c
-4232017618b ./gcc/testsuite/gcc.c-torture/compile/980506-1.c
-4075622106b ./gcc/testsuite/gcc.c-torture/compile/980506-1.x
- 32528983b ./gcc/testsuite/gcc.c-torture/compile/980506-2.c
-4270541716b ./gcc/testsuite/gcc.c-torture/compile/980511-1.c
-3713274322b ./gcc/testsuite/gcc.c-torture/compile/980701-1.c
- 777674549b ./gcc/testsuite/gcc.c-torture/compile/980706-1.c
- 610537079b ./gcc/testsuite/gcc.c-torture/compile/980726-1.c
-3564634914b ./gcc/testsuite/gcc.c-torture/compile/980729-1.c
-1437208592b ./gcc/testsuite/gcc.c-torture/compile/980816-1.c
-4262061714b ./gcc/testsuite/gcc.c-torture/compile/980821-1.c
- 411994094b ./gcc/testsuite/gcc.c-torture/compile/980825-1.c
- 84987168b ./gcc/testsuite/gcc.c-torture/compile/981001-1.c
-3572428069b ./gcc/testsuite/gcc.c-torture/compile/981001-2.c
- 668832071b ./gcc/testsuite/gcc.c-torture/compile/981001-3.c
-2581029790b ./gcc/testsuite/gcc.c-torture/compile/981001-4.c
-2455813842b ./gcc/testsuite/gcc.c-torture/compile/981006-1.c
- 303831411b ./gcc/testsuite/gcc.c-torture/compile/981006-1.x
- 436023456b ./gcc/testsuite/gcc.c-torture/compile/981007-1.c
-3644509388b ./gcc/testsuite/gcc.c-torture/compile/981022-1.c
-2402428546b ./gcc/testsuite/gcc.c-torture/compile/981022-1.x
-2312981402b ./gcc/testsuite/gcc.c-torture/compile/981107-1.c
-1534948383b ./gcc/testsuite/gcc.c-torture/compile/981223-1.c
-2200568070b ./gcc/testsuite/gcc.c-torture/compile/981223-1.x
-4068323857b ./gcc/testsuite/gcc.c-torture/compile/990107-1.c
-2146948130b ./gcc/testsuite/gcc.c-torture/compile/990117-1.c
- 569996007b ./gcc/testsuite/gcc.c-torture/compile/990203-1.c
- 415305492b ./gcc/testsuite/gcc.c-torture/compile/990517-1.c
-3394640266b ./gcc/testsuite/gcc.c-torture/compile/990519-1.c
-2791783349b ./gcc/testsuite/gcc.c-torture/compile/990523-1.c
-3000844764b ./gcc/testsuite/gcc.c-torture/compile/990527-1.c
- 582106274b ./gcc/testsuite/gcc.c-torture/compile/990617-1.c
-2322013805b ./gcc/testsuite/gcc.c-torture/compile/990617-1.x
- 492504629b ./gcc/testsuite/gcc.c-torture/compile/990625-1.c
- 884965957b ./gcc/testsuite/gcc.c-torture/compile/990625-2.c
-4084131388b ./gcc/testsuite/gcc.c-torture/compile/990801-1.c
-2266581816b ./gcc/testsuite/gcc.c-torture/compile/990801-2.c
-3317513113b ./gcc/testsuite/gcc.c-torture/compile/990829-1.c
-3956045070b ./gcc/testsuite/gcc.c-torture/compile/990913-1.c
-3319682501b ./gcc/testsuite/gcc.c-torture/compile/990928-1.c
-3933777529b ./gcc/testsuite/gcc.c-torture/compile/991008-1.c
-2673675627b ./gcc/testsuite/gcc.c-torture/compile/991026-1.c
-1674528994b ./gcc/testsuite/gcc.c-torture/compile/991026-2.c
-4044514395b ./gcc/testsuite/gcc.c-torture/compile/991127-1.c
-4090550720b ./gcc/testsuite/gcc.c-torture/compile/991202-1.c
-2790904959b ./gcc/testsuite/gcc.c-torture/compile/991208-1.c
-3320607847b ./gcc/testsuite/gcc.c-torture/compile/991213-1.c
- 337781771b ./gcc/testsuite/gcc.c-torture/compile/991213-2.c
-2183919411b ./gcc/testsuite/gcc.c-torture/compile/991213-3.c
-2401949194b ./gcc/testsuite/gcc.c-torture/compile/991214-1.c
- 490622457b ./gcc/testsuite/gcc.c-torture/compile/991214-2.c
-4103871327b ./gcc/testsuite/gcc.c-torture/compile/991229-1.c
-3992734927b ./gcc/testsuite/gcc.c-torture/compile/991229-2.c
-4256185088b ./gcc/testsuite/gcc.c-torture/compile/991229-3.c
-1572386559b ./gcc/testsuite/gcc.c-torture/compile/calls.c
-2432910359b ./gcc/testsuite/gcc.c-torture/compile/cmpdi-1.c
- 614750703b ./gcc/testsuite/gcc.c-torture/compile/combine-hang.c
-1983287936b ./gcc/testsuite/gcc.c-torture/compile/compile.exp
-1794942657b ./gcc/testsuite/gcc.c-torture/compile/cpp-1.c
- 970559481b ./gcc/testsuite/gcc.c-torture/compile/cpp-2.c
-1931627759b ./gcc/testsuite/gcc.c-torture/compile/dll.c
-3830564423b ./gcc/testsuite/gcc.c-torture/compile/dll.x
-3452765233b ./gcc/testsuite/gcc.c-torture/compile/funcptr-1.c
-1935315878b ./gcc/testsuite/gcc.c-torture/compile/goto-1.c
-1601988128b ./gcc/testsuite/gcc.c-torture/compile/iftrap-1.c
- 335811326b ./gcc/testsuite/gcc.c-torture/compile/iftrap-2.c
-4225667120b ./gcc/testsuite/gcc.c-torture/compile/init-1.c
-2861967846b ./gcc/testsuite/gcc.c-torture/compile/init-2.c
-2669634792b ./gcc/testsuite/gcc.c-torture/compile/init-3.c
-4126878501b ./gcc/testsuite/gcc.c-torture/compile/labels-1.c
-2067585207b ./gcc/testsuite/gcc.c-torture/compile/labels-2.c
-3607951474b ./gcc/testsuite/gcc.c-torture/compile/labels-3.c
- 709334018b ./gcc/testsuite/gcc.c-torture/compile/labels-3.x
-1060389673b ./gcc/testsuite/gcc.c-torture/compile/packed-1.c
- 69389766b ./gcc/testsuite/gcc.c-torture/compile/structs.c
-2677779184b ./gcc/testsuite/gcc.c-torture/compile/trunctfdf.c
-3723113555b ./gcc/testsuite/gcc.c-torture/compile/widechar-1.c
-2985433108b ./gcc/testsuite/gcc.c-torture/compile/zero-strct-1.c
-1530761060b ./gcc/testsuite/gcc.c-torture/execute/20000112-1.c
-2481066019b ./gcc/testsuite/gcc.c-torture/execute/20000113-1.c
-1162771092b ./gcc/testsuite/gcc.c-torture/execute/20000121-1.c
-2528273823b ./gcc/testsuite/gcc.c-torture/execute/20000205-1.c
-1308437308b ./gcc/testsuite/gcc.c-torture/execute/20000217-1.c
- 778222354b ./gcc/testsuite/gcc.c-torture/execute/20000223-1.c
-2810936145b ./gcc/testsuite/gcc.c-torture/execute/20000224-1.c
-2859303587b ./gcc/testsuite/gcc.c-torture/execute/20000225-1.c
-2200813341b ./gcc/testsuite/gcc.c-torture/execute/20000227-1.c
-1085530082b ./gcc/testsuite/gcc.c-torture/execute/20000313-1.c
-1558819196b ./gcc/testsuite/gcc.c-torture/execute/20000314-1.c
-1363719296b ./gcc/testsuite/gcc.c-torture/execute/20000314-2.c
-1833012317b ./gcc/testsuite/gcc.c-torture/execute/20000314-3.c
-3834437988b ./gcc/testsuite/gcc.c-torture/execute/20000402-1.c
-4060238122b ./gcc/testsuite/gcc.c-torture/execute/20000403-1.c
-3672378029b ./gcc/testsuite/gcc.c-torture/execute/20000412-1.c
-2857396630b ./gcc/testsuite/gcc.c-torture/execute/20000412-2.c
-3640032771b ./gcc/testsuite/gcc.c-torture/execute/20000412-3.c
-4233239850b ./gcc/testsuite/gcc.c-torture/execute/20000412-4.c
-3642307617b ./gcc/testsuite/gcc.c-torture/execute/20000412-5.c
- 122352684b ./gcc/testsuite/gcc.c-torture/execute/20000412-6.c
- 939777600b ./gcc/testsuite/gcc.c-torture/execute/20000419-1.c
-1445008654b ./gcc/testsuite/gcc.c-torture/execute/20000422-1.c
- 677800698b ./gcc/testsuite/gcc.c-torture/execute/20000503-1.c
- 531516808b ./gcc/testsuite/gcc.c-torture/execute/20000511-1.c
- 301599840b ./gcc/testsuite/gcc.c-torture/execute/20000519-1.c
-2363078014b ./gcc/testsuite/gcc.c-torture/execute/20000519-2.c
-2387696776b ./gcc/testsuite/gcc.c-torture/execute/20000523-1.c
- 185622639b ./gcc/testsuite/gcc.c-torture/execute/20000528-1.c
-3522437520b ./gcc/testsuite/gcc.c-torture/execute/20000603-1.c
-1679879990b ./gcc/testsuite/gcc.c-torture/execute/20000605-1.c
-2664922764b ./gcc/testsuite/gcc.c-torture/execute/20000605-2.c
-3650927220b ./gcc/testsuite/gcc.c-torture/execute/20000605-3.c
-3450155788b ./gcc/testsuite/gcc.c-torture/execute/20000622-1.c
-1183204743b ./gcc/testsuite/gcc.c-torture/execute/20000703-1.c
-2031552411b ./gcc/testsuite/gcc.c-torture/execute/20000706-1.c
- 425477806b ./gcc/testsuite/gcc.c-torture/execute/20000706-2.c
- 690409016b ./gcc/testsuite/gcc.c-torture/execute/20000706-3.c
- 388840900b ./gcc/testsuite/gcc.c-torture/execute/20000706-4.c
-3881852138b ./gcc/testsuite/gcc.c-torture/execute/20000706-5.c
-4202259059b ./gcc/testsuite/gcc.c-torture/execute/20000707-1.c
- 444353142b ./gcc/testsuite/gcc.c-torture/execute/20000715-1.c
-1455669777b ./gcc/testsuite/gcc.c-torture/execute/20000715-2.c
-1355649270b ./gcc/testsuite/gcc.c-torture/execute/20000717-1.c
-2506273608b ./gcc/testsuite/gcc.c-torture/execute/20000717-2.c
-3729674446b ./gcc/testsuite/gcc.c-torture/execute/20000717-3.c
- 843831990b ./gcc/testsuite/gcc.c-torture/execute/20000717-4.c
-3868604235b ./gcc/testsuite/gcc.c-torture/execute/20000717-5.c
-3718377161b ./gcc/testsuite/gcc.c-torture/execute/20000722-1.c
-1809610528b ./gcc/testsuite/gcc.c-torture/execute/20000726-1.c
-3447416803b ./gcc/testsuite/gcc.c-torture/execute/20000731-1.c
-1979644625b ./gcc/testsuite/gcc.c-torture/execute/20000731-2.c
- 622038460b ./gcc/testsuite/gcc.c-torture/execute/20000801-1.c
- 379050989b ./gcc/testsuite/gcc.c-torture/execute/20000801-2.c
-1541984007b ./gcc/testsuite/gcc.c-torture/execute/20000801-3.c
-2632039733b ./gcc/testsuite/gcc.c-torture/execute/20000801-4.c
-3273221977b ./gcc/testsuite/gcc.c-torture/execute/20000808-1.c
-3715226001b ./gcc/testsuite/gcc.c-torture/execute/20000815-1.c
-2910084298b ./gcc/testsuite/gcc.c-torture/execute/20000818-1.c
-3982907773b ./gcc/testsuite/gcc.c-torture/execute/20000819-1.c
- 806186932b ./gcc/testsuite/gcc.c-torture/execute/20000822-1.c
-1842039169b ./gcc/testsuite/gcc.c-torture/execute/20000910-1.c
- 187331803b ./gcc/testsuite/gcc.c-torture/execute/20000910-2.c
-2672323622b ./gcc/testsuite/gcc.c-torture/execute/20000914-1.c
-3900394210b ./gcc/testsuite/gcc.c-torture/execute/20000917-1.c
-3471632940b ./gcc/testsuite/gcc.c-torture/execute/20001009-1.c
-1469841059b ./gcc/testsuite/gcc.c-torture/execute/20001009-2.c
-1399364540b ./gcc/testsuite/gcc.c-torture/execute/20001011-1.c
-1742992606b ./gcc/testsuite/gcc.c-torture/execute/20001013-1.c
-4079653839b ./gcc/testsuite/gcc.c-torture/execute/20001017-1.c
- 915214225b ./gcc/testsuite/gcc.c-torture/execute/20001017-2.c
- 411820211b ./gcc/testsuite/gcc.c-torture/execute/20001024-1.c
-4210982727b ./gcc/testsuite/gcc.c-torture/execute/20001026-1.c
-2907247602b ./gcc/testsuite/gcc.c-torture/execute/20001027-1.c
- 731083799b ./gcc/testsuite/gcc.c-torture/execute/20001031-1.c
- 123108566b ./gcc/testsuite/gcc.c-torture/execute/20001101.c
-3554851734b ./gcc/testsuite/gcc.c-torture/execute/20001108-1.c
- 696351685b ./gcc/testsuite/gcc.c-torture/execute/20001111-1.c
-1813795050b ./gcc/testsuite/gcc.c-torture/execute/20001112-1.c
-3234051961b ./gcc/testsuite/gcc.c-torture/execute/20001121-1.c
-2035849840b ./gcc/testsuite/gcc.c-torture/execute/20001124-1.c
- 378727792b ./gcc/testsuite/gcc.c-torture/execute/20001130-1.c
-1876645280b ./gcc/testsuite/gcc.c-torture/execute/20001130-2.c
-3253069371b ./gcc/testsuite/gcc.c-torture/execute/20001203-1.c
-2873524021b ./gcc/testsuite/gcc.c-torture/execute/20001203-2.c
- 315046176b ./gcc/testsuite/gcc.c-torture/execute/20001221-1.c
-3430334061b ./gcc/testsuite/gcc.c-torture/execute/20001228-1.c
-4145547631b ./gcc/testsuite/gcc.c-torture/execute/20001229-1.c
-2867964338b ./gcc/testsuite/gcc.c-torture/execute/20010106-1.c
-4104575350b ./gcc/testsuite/gcc.c-torture/execute/20010114-1.c
-4274826155b ./gcc/testsuite/gcc.c-torture/execute/20010116-1.c
-1853154998b ./gcc/testsuite/gcc.c-torture/execute/20010118-1.c
-1273676691b ./gcc/testsuite/gcc.c-torture/execute/20010119-1.c
- 367104834b ./gcc/testsuite/gcc.c-torture/execute/20010122-1.c
-2189672298b ./gcc/testsuite/gcc.c-torture/execute/20010122-1.x
-2126355226b ./gcc/testsuite/gcc.c-torture/execute/20010123-1.c
-2748204733b ./gcc/testsuite/gcc.c-torture/execute/20010124-1.c
- 962969845b ./gcc/testsuite/gcc.c-torture/execute/20010129-1.c
-3261363423b ./gcc/testsuite/gcc.c-torture/execute/20010129-1.x
-3208398809b ./gcc/testsuite/gcc.c-torture/execute/20010206-1.c
-1778342214b ./gcc/testsuite/gcc.c-torture/execute/20010209-1.c
-3579334795b ./gcc/testsuite/gcc.c-torture/execute/20010221-1.c
-2457134781b ./gcc/testsuite/gcc.c-torture/execute/20010222-1.c
-3606901851b ./gcc/testsuite/gcc.c-torture/execute/20010224-1.c
-1780176502b ./gcc/testsuite/gcc.c-torture/execute/20010325-1.c
- 111828245b ./gcc/testsuite/gcc.c-torture/execute/20010329-1.c
-4181677122b ./gcc/testsuite/gcc.c-torture/execute/20010403-1.c
-1255405665b ./gcc/testsuite/gcc.c-torture/execute/20010409-1.c
-2948781834b ./gcc/testsuite/gcc.c-torture/execute/20010422-1.c
-3990119664b ./gcc/testsuite/gcc.c-torture/execute/20010518-1.c
-3221966760b ./gcc/testsuite/gcc.c-torture/execute/20010518-2.c
-4150058335b ./gcc/testsuite/gcc.c-torture/execute/20010520-1.c
-3398306936b ./gcc/testsuite/gcc.c-torture/execute/20010604-1.c
-1597970944b ./gcc/testsuite/gcc.c-torture/execute/20010605-1.c
-2151082111b ./gcc/testsuite/gcc.c-torture/execute/20010605-2.c
-2682131177b ./gcc/testsuite/gcc.c-torture/execute/20010711-1.c
- 873772836b ./gcc/testsuite/gcc.c-torture/execute/20010717-1.c
-2673367189b ./gcc/testsuite/gcc.c-torture/execute/20010723-1.c
-3978892519b ./gcc/testsuite/gcc.c-torture/execute/20010724-1.c
-1723617799b ./gcc/testsuite/gcc.c-torture/execute/20010724-1.x
- 731866148b ./gcc/testsuite/gcc.c-torture/execute/20010904-1.c
- 731377342b ./gcc/testsuite/gcc.c-torture/execute/20010904-2.c
-2522784842b ./gcc/testsuite/gcc.c-torture/execute/20010910-1.c
-1182047103b ./gcc/testsuite/gcc.c-torture/execute/20010915-1.c
-3737091006b ./gcc/testsuite/gcc.c-torture/execute/20010924-1.c
- 260325577b ./gcc/testsuite/gcc.c-torture/execute/20010925-1.c
-4188355089b ./gcc/testsuite/gcc.c-torture/execute/20011008-3.c
-2281713299b ./gcc/testsuite/gcc.c-torture/execute/20011019-1.c
-2655569315b ./gcc/testsuite/gcc.c-torture/execute/20011024-1.c
-1814584846b ./gcc/testsuite/gcc.c-torture/execute/20011109-1.c
-1662612200b ./gcc/testsuite/gcc.c-torture/execute/20011109-2.c
-2550685908b ./gcc/testsuite/gcc.c-torture/execute/20011113-1.c
- 172432599b ./gcc/testsuite/gcc.c-torture/execute/20011114-1.c
- 809814896b ./gcc/testsuite/gcc.c-torture/execute/20011115-1.c
- 4092518b ./gcc/testsuite/gcc.c-torture/execute/20011121-1.c
-3502448934b ./gcc/testsuite/gcc.c-torture/execute/20011126-1.c
-2732339842b ./gcc/testsuite/gcc.c-torture/execute/20011126-2.c
- 815133002b ./gcc/testsuite/gcc.c-torture/execute/20011128-1.c
- 241656074b ./gcc/testsuite/gcc.c-torture/execute/20011217-1.c
-2277704872b ./gcc/testsuite/gcc.c-torture/execute/20011219-1.c
-2006770303b ./gcc/testsuite/gcc.c-torture/execute/20011223-1.c
-4135985164b ./gcc/testsuite/gcc.c-torture/execute/20020103-1.c
-2284569670b ./gcc/testsuite/gcc.c-torture/execute/20020107-1.c
-2382854982b ./gcc/testsuite/gcc.c-torture/execute/20020108-1.c
-2848042033b ./gcc/testsuite/gcc.c-torture/execute/20020118-1.c
-2653510244b ./gcc/testsuite/gcc.c-torture/execute/20020127-1.c
-1739097481b ./gcc/testsuite/gcc.c-torture/execute/20020129-1.c
-1264770028b ./gcc/testsuite/gcc.c-torture/execute/20020201-1.c
- 502375258b ./gcc/testsuite/gcc.c-torture/execute/20020206-1.c
-3691690701b ./gcc/testsuite/gcc.c-torture/execute/20020206-2.c
-4078405558b ./gcc/testsuite/gcc.c-torture/execute/20020213-1.c
- 125431111b ./gcc/testsuite/gcc.c-torture/execute/20020215-1.c
-1599210871b ./gcc/testsuite/gcc.c-torture/execute/20020216-1.c
-1360698555b ./gcc/testsuite/gcc.c-torture/execute/20020219-1.c
-1656358954b ./gcc/testsuite/gcc.c-torture/execute/20020225-1.c
- 127051635b ./gcc/testsuite/gcc.c-torture/execute/20020227-1.c
-2757105756b ./gcc/testsuite/gcc.c-torture/execute/20020227-1.x
-1982547595b ./gcc/testsuite/gcc.c-torture/execute/20020307-1.c
-1497258578b ./gcc/testsuite/gcc.c-torture/execute/20020307-2.c
-2236973257b ./gcc/testsuite/gcc.c-torture/execute/20020314-1.c
-3091941732b ./gcc/testsuite/gcc.c-torture/execute/20020320-1.c
-3564527352b ./gcc/testsuite/gcc.c-torture/execute/20020321-1.c
- 577542360b ./gcc/testsuite/gcc.c-torture/execute/20020402-1.c
-3290123747b ./gcc/testsuite/gcc.c-torture/execute/20020402-2.c
-2122778375b ./gcc/testsuite/gcc.c-torture/execute/20020402-3.c
-2806949247b ./gcc/testsuite/gcc.c-torture/execute/20020404-1.c
- 658725271b ./gcc/testsuite/gcc.c-torture/execute/20020406-1.c
-1900879256b ./gcc/testsuite/gcc.c-torture/execute/20020411-1.c
-2788774617b ./gcc/testsuite/gcc.c-torture/execute/20020413-1.c
-2439380096b ./gcc/testsuite/gcc.c-torture/execute/20020418-1.c
- 49470659b ./gcc/testsuite/gcc.c-torture/execute/20020423-1.c
- 484359727b ./gcc/testsuite/gcc.c-torture/execute/20020503-1.c
-1286592631b ./gcc/testsuite/gcc.c-torture/execute/20020529-1.c
-2563139669b ./gcc/testsuite/gcc.c-torture/execute/20020611-1.c
-2588225457b ./gcc/testsuite/gcc.c-torture/execute/20020614-1.c
-2304661446b ./gcc/testsuite/gcc.c-torture/execute/20020615-1.c
-1625459055b ./gcc/testsuite/gcc.c-torture/execute/20020619-1.c
-2876236122b ./gcc/testsuite/gcc.c-torture/execute/20020716-1.c
- 492121497b ./gcc/testsuite/gcc.c-torture/execute/20020904-1.c
-1275043517b ./gcc/testsuite/gcc.c-torture/execute/20021015-1.c
-2849369814b ./gcc/testsuite/gcc.c-torture/execute/20021024-1.c
-3361882342b ./gcc/testsuite/gcc.c-torture/execute/20021111-1.c
- 37158978b ./gcc/testsuite/gcc.c-torture/execute/900409-1.c
-1241514475b ./gcc/testsuite/gcc.c-torture/execute/920202-1.c
- 651529975b ./gcc/testsuite/gcc.c-torture/execute/920302-1.c
-2196801137b ./gcc/testsuite/gcc.c-torture/execute/920409-1.c
-1816933206b ./gcc/testsuite/gcc.c-torture/execute/920410-1.c
-1957456510b ./gcc/testsuite/gcc.c-torture/execute/920411-1.c
-1749111501b ./gcc/testsuite/gcc.c-torture/execute/920415-1.c
- 508706990b ./gcc/testsuite/gcc.c-torture/execute/920428-1.c
-3878413130b ./gcc/testsuite/gcc.c-torture/execute/920428-2.c
-4127832878b ./gcc/testsuite/gcc.c-torture/execute/920428-2.x
- 158200597b ./gcc/testsuite/gcc.c-torture/execute/920429-1.c
-1826863267b ./gcc/testsuite/gcc.c-torture/execute/920501-1.c
-4177429300b ./gcc/testsuite/gcc.c-torture/execute/920501-2.c
-1351528020b ./gcc/testsuite/gcc.c-torture/execute/920501-3.c
- 700639089b ./gcc/testsuite/gcc.c-torture/execute/920501-4.c
- 798860387b ./gcc/testsuite/gcc.c-torture/execute/920501-5.c
-4199344202b ./gcc/testsuite/gcc.c-torture/execute/920501-6.c
-2006299034b ./gcc/testsuite/gcc.c-torture/execute/920501-7.c
-4127832878b ./gcc/testsuite/gcc.c-torture/execute/920501-7.x
-1420615555b ./gcc/testsuite/gcc.c-torture/execute/920501-8.c
-1273235575b ./gcc/testsuite/gcc.c-torture/execute/920501-8.x
-2227123057b ./gcc/testsuite/gcc.c-torture/execute/920501-9.c
-3928484317b ./gcc/testsuite/gcc.c-torture/execute/920506-1.c
-3897601778b ./gcc/testsuite/gcc.c-torture/execute/920520-1.c
-4049662034b ./gcc/testsuite/gcc.c-torture/execute/920603-1.c
-2593769598b ./gcc/testsuite/gcc.c-torture/execute/920604-1.c
-2294544032b ./gcc/testsuite/gcc.c-torture/execute/920612-1.c
- 102881897b ./gcc/testsuite/gcc.c-torture/execute/920612-2.c
- 484477154b ./gcc/testsuite/gcc.c-torture/execute/920618-1.c
- 937300795b ./gcc/testsuite/gcc.c-torture/execute/920625-1.c
-3030586241b ./gcc/testsuite/gcc.c-torture/execute/920710-1.c
-3876529175b ./gcc/testsuite/gcc.c-torture/execute/920711-1.c
- 818049019b ./gcc/testsuite/gcc.c-torture/execute/920721-1.c
-3191124720b ./gcc/testsuite/gcc.c-torture/execute/920721-2.c
-3879255001b ./gcc/testsuite/gcc.c-torture/execute/920721-3.c
-2852120360b ./gcc/testsuite/gcc.c-torture/execute/920721-4.c
- 792790044b ./gcc/testsuite/gcc.c-torture/execute/920726-1.c
-2154603996b ./gcc/testsuite/gcc.c-torture/execute/920728-1.c
- 917858221b ./gcc/testsuite/gcc.c-torture/execute/920730-1.c
-1400910240b ./gcc/testsuite/gcc.c-torture/execute/920730-1t.c
-3331598307b ./gcc/testsuite/gcc.c-torture/execute/920730-1t.x
-3574659813b ./gcc/testsuite/gcc.c-torture/execute/920731-1.c
-1308229799b ./gcc/testsuite/gcc.c-torture/execute/920810-1.c
- 950989321b ./gcc/testsuite/gcc.c-torture/execute/920812-1.c
-4187598456b ./gcc/testsuite/gcc.c-torture/execute/920829-1.c
- 559637020b ./gcc/testsuite/gcc.c-torture/execute/920908-1.c
-2513627586b ./gcc/testsuite/gcc.c-torture/execute/920908-2.c
-2499750871b ./gcc/testsuite/gcc.c-torture/execute/920909-1.c
- 714100171b ./gcc/testsuite/gcc.c-torture/execute/920922-1.c
-2279537940b ./gcc/testsuite/gcc.c-torture/execute/920929-1.c
- 70714742b ./gcc/testsuite/gcc.c-torture/execute/921006-1.c
- 137444921b ./gcc/testsuite/gcc.c-torture/execute/921007-1.c
-2897219149b ./gcc/testsuite/gcc.c-torture/execute/921013-1.c
-1296914634b ./gcc/testsuite/gcc.c-torture/execute/921016-1.c
-1596244093b ./gcc/testsuite/gcc.c-torture/execute/921017-1.c
-4199584647b ./gcc/testsuite/gcc.c-torture/execute/921019-1.c
-2431715965b ./gcc/testsuite/gcc.c-torture/execute/921019-2.c
-3170380362b ./gcc/testsuite/gcc.c-torture/execute/921029-1.c
- 487195362b ./gcc/testsuite/gcc.c-torture/execute/921104-1.c
-2352124020b ./gcc/testsuite/gcc.c-torture/execute/921110-1.c
- 207021478b ./gcc/testsuite/gcc.c-torture/execute/921112-1.c
- 283175496b ./gcc/testsuite/gcc.c-torture/execute/921113-1.c
-2879836698b ./gcc/testsuite/gcc.c-torture/execute/921117-1.c
- 201436377b ./gcc/testsuite/gcc.c-torture/execute/921123-1.c
-4236695419b ./gcc/testsuite/gcc.c-torture/execute/921123-2.c
- 316909011b ./gcc/testsuite/gcc.c-torture/execute/921124-1.c
-3328444406b ./gcc/testsuite/gcc.c-torture/execute/921202-1.c
-2280032251b ./gcc/testsuite/gcc.c-torture/execute/921202-2.c
-1311000952b ./gcc/testsuite/gcc.c-torture/execute/921204-1.c
-2949408934b ./gcc/testsuite/gcc.c-torture/execute/921207-1.c
- 870865911b ./gcc/testsuite/gcc.c-torture/execute/921208-1.c
-2032495193b ./gcc/testsuite/gcc.c-torture/execute/921208-2.c
- 283353483b ./gcc/testsuite/gcc.c-torture/execute/921215-1.c
- 130096086b ./gcc/testsuite/gcc.c-torture/execute/921218-1.c
-2115073235b ./gcc/testsuite/gcc.c-torture/execute/921218-2.c
-3561999462b ./gcc/testsuite/gcc.c-torture/execute/930106-1.c
-3160736499b ./gcc/testsuite/gcc.c-torture/execute/930111-1.c
-4162371994b ./gcc/testsuite/gcc.c-torture/execute/930123-1.c
-3265874780b ./gcc/testsuite/gcc.c-torture/execute/930126-1.c
-2299871172b ./gcc/testsuite/gcc.c-torture/execute/930208-1.c
-3144873997b ./gcc/testsuite/gcc.c-torture/execute/930406-1.c
-3189774734b ./gcc/testsuite/gcc.c-torture/execute/930408-1.c
-3400489427b ./gcc/testsuite/gcc.c-torture/execute/930429-1.c
-2948158283b ./gcc/testsuite/gcc.c-torture/execute/930429-2.c
-3905354169b ./gcc/testsuite/gcc.c-torture/execute/930513-1.c
-1273235575b ./gcc/testsuite/gcc.c-torture/execute/930513-1.x
-2524183853b ./gcc/testsuite/gcc.c-torture/execute/930513-2.c
-2391753101b ./gcc/testsuite/gcc.c-torture/execute/930518-1.c
- 576031745b ./gcc/testsuite/gcc.c-torture/execute/930526-1.c
- 956415563b ./gcc/testsuite/gcc.c-torture/execute/930527-1.c
-4026322841b ./gcc/testsuite/gcc.c-torture/execute/930529-1.c
-2050475769b ./gcc/testsuite/gcc.c-torture/execute/930529-1.x
- 310850888b ./gcc/testsuite/gcc.c-torture/execute/930603-1.c
- 572652809b ./gcc/testsuite/gcc.c-torture/execute/930603-2.c
-3452170691b ./gcc/testsuite/gcc.c-torture/execute/930603-3.c
- 352498879b ./gcc/testsuite/gcc.c-torture/execute/930608-1.c
-2318312710b ./gcc/testsuite/gcc.c-torture/execute/930614-1.c
- 307026414b ./gcc/testsuite/gcc.c-torture/execute/930614-2.c
- 380017129b ./gcc/testsuite/gcc.c-torture/execute/930621-1.c
- 852093434b ./gcc/testsuite/gcc.c-torture/execute/930622-1.c
-1010026580b ./gcc/testsuite/gcc.c-torture/execute/930622-2.c
-2381515578b ./gcc/testsuite/gcc.c-torture/execute/930628-1.c
-3968663339b ./gcc/testsuite/gcc.c-torture/execute/930630-1.c
-1360276333b ./gcc/testsuite/gcc.c-torture/execute/930702-1.c
-2690450552b ./gcc/testsuite/gcc.c-torture/execute/930713-1.c
-3621302381b ./gcc/testsuite/gcc.c-torture/execute/930718-1.c
-1853260970b ./gcc/testsuite/gcc.c-torture/execute/930719-1.c
-2257054643b ./gcc/testsuite/gcc.c-torture/execute/930725-1.c
-1877434408b ./gcc/testsuite/gcc.c-torture/execute/930818-1.c
-1262159860b ./gcc/testsuite/gcc.c-torture/execute/930916-1.c
-2667793229b ./gcc/testsuite/gcc.c-torture/execute/930921-1.c
-2351038398b ./gcc/testsuite/gcc.c-torture/execute/930929-1.c
-2863421839b ./gcc/testsuite/gcc.c-torture/execute/930930-1.c
- 557816592b ./gcc/testsuite/gcc.c-torture/execute/930930-2.c
-2101614510b ./gcc/testsuite/gcc.c-torture/execute/931002-1.c
-1700898376b ./gcc/testsuite/gcc.c-torture/execute/931004-10.c
- 962417771b ./gcc/testsuite/gcc.c-torture/execute/931004-11.c
-2700865821b ./gcc/testsuite/gcc.c-torture/execute/931004-12.c
-3436458492b ./gcc/testsuite/gcc.c-torture/execute/931004-13.c
-4127270352b ./gcc/testsuite/gcc.c-torture/execute/931004-14.c
-2742393702b ./gcc/testsuite/gcc.c-torture/execute/931004-1.c
- 346996272b ./gcc/testsuite/gcc.c-torture/execute/931004-2.c
-1206221721b ./gcc/testsuite/gcc.c-torture/execute/931004-3.c
-3166093368b ./gcc/testsuite/gcc.c-torture/execute/931004-4.c
-1452916171b ./gcc/testsuite/gcc.c-torture/execute/931004-5.c
-2022610295b ./gcc/testsuite/gcc.c-torture/execute/931004-6.c
-2036744892b ./gcc/testsuite/gcc.c-torture/execute/931004-7.c
-1586770276b ./gcc/testsuite/gcc.c-torture/execute/931004-8.c
-3369996669b ./gcc/testsuite/gcc.c-torture/execute/931004-9.c
-3731237663b ./gcc/testsuite/gcc.c-torture/execute/931005-1.c
-3432311031b ./gcc/testsuite/gcc.c-torture/execute/931009-1.c
-1834388885b ./gcc/testsuite/gcc.c-torture/execute/931012-1.c
-2534034619b ./gcc/testsuite/gcc.c-torture/execute/931017-1.c
-1949677962b ./gcc/testsuite/gcc.c-torture/execute/931018-1.c
-3825241545b ./gcc/testsuite/gcc.c-torture/execute/931031-1.c
-1877484625b ./gcc/testsuite/gcc.c-torture/execute/931102-1.c
-3927915289b ./gcc/testsuite/gcc.c-torture/execute/931102-2.c
- 480430370b ./gcc/testsuite/gcc.c-torture/execute/931110-1.c
-3822785940b ./gcc/testsuite/gcc.c-torture/execute/931110-2.c
- 967340546b ./gcc/testsuite/gcc.c-torture/execute/931208-1.c
-2682740818b ./gcc/testsuite/gcc.c-torture/execute/931228-1.c
-2017170797b ./gcc/testsuite/gcc.c-torture/execute/940115-1.c
- 82400069b ./gcc/testsuite/gcc.c-torture/execute/940122-1.c
-4235476365b ./gcc/testsuite/gcc.c-torture/execute/941014-1.c
- 645804174b ./gcc/testsuite/gcc.c-torture/execute/941014-1.x
-1977507646b ./gcc/testsuite/gcc.c-torture/execute/941014-2.c
- 310736147b ./gcc/testsuite/gcc.c-torture/execute/941015-1.c
-1318043175b ./gcc/testsuite/gcc.c-torture/execute/941021-1.c
-3185365004b ./gcc/testsuite/gcc.c-torture/execute/941025-1.c
- 678677907b ./gcc/testsuite/gcc.c-torture/execute/941031-1.c
-3905782643b ./gcc/testsuite/gcc.c-torture/execute/941101-1.c
-1810551831b ./gcc/testsuite/gcc.c-torture/execute/941110-1.c
-3428057334b ./gcc/testsuite/gcc.c-torture/execute/941202-1.c
-3908063718b ./gcc/testsuite/gcc.c-torture/execute/950221-1.c
-1873160895b ./gcc/testsuite/gcc.c-torture/execute/950322-1.c
-1672610716b ./gcc/testsuite/gcc.c-torture/execute/950426-1.c
-3465653006b ./gcc/testsuite/gcc.c-torture/execute/950426-2.c
-3696703975b ./gcc/testsuite/gcc.c-torture/execute/950503-1.c
-1556250294b ./gcc/testsuite/gcc.c-torture/execute/950511-1.c
-2857896870b ./gcc/testsuite/gcc.c-torture/execute/950512-1.c
- 114570668b ./gcc/testsuite/gcc.c-torture/execute/950605-1.c
-2991280268b ./gcc/testsuite/gcc.c-torture/execute/950607-1.c
- 437837801b ./gcc/testsuite/gcc.c-torture/execute/950607-2.c
-3950265298b ./gcc/testsuite/gcc.c-torture/execute/950612-1.c
-1778400537b ./gcc/testsuite/gcc.c-torture/execute/950621-1.c
-2070936302b ./gcc/testsuite/gcc.c-torture/execute/950628-1.c
-3165536281b ./gcc/testsuite/gcc.c-torture/execute/950704-1.c
-2486390814b ./gcc/testsuite/gcc.c-torture/execute/950706-1.c
-1322454782b ./gcc/testsuite/gcc.c-torture/execute/950710-1.c
-4241980915b ./gcc/testsuite/gcc.c-torture/execute/950714-1.c
-3308590304b ./gcc/testsuite/gcc.c-torture/execute/950809-1.c
-4154904713b ./gcc/testsuite/gcc.c-torture/execute/950906-1.c
-1101166652b ./gcc/testsuite/gcc.c-torture/execute/950915-1.c
- 24392721b ./gcc/testsuite/gcc.c-torture/execute/950929-1.c
-1234781098b ./gcc/testsuite/gcc.c-torture/execute/951003-1.c
-3737612481b ./gcc/testsuite/gcc.c-torture/execute/951115-1.c
-2658922424b ./gcc/testsuite/gcc.c-torture/execute/951204-1.c
-3956410619b ./gcc/testsuite/gcc.c-torture/execute/960116-1.c
-2093624467b ./gcc/testsuite/gcc.c-torture/execute/960117-1.c
-1694357534b ./gcc/testsuite/gcc.c-torture/execute/960209-1.c
-1952007331b ./gcc/testsuite/gcc.c-torture/execute/960215-1.c
- 60263952b ./gcc/testsuite/gcc.c-torture/execute/960218-1.c
-1161569283b ./gcc/testsuite/gcc.c-torture/execute/960219-1.c
-3429934900b ./gcc/testsuite/gcc.c-torture/execute/960301-1.c
- 160802950b ./gcc/testsuite/gcc.c-torture/execute/960302-1.c
-2772979130b ./gcc/testsuite/gcc.c-torture/execute/960311-1.c
-1259407124b ./gcc/testsuite/gcc.c-torture/execute/960311-2.c
-3608527152b ./gcc/testsuite/gcc.c-torture/execute/960311-3.c
-2087520542b ./gcc/testsuite/gcc.c-torture/execute/960312-1.c
-1208600766b ./gcc/testsuite/gcc.c-torture/execute/960317-1.c
-1889026562b ./gcc/testsuite/gcc.c-torture/execute/960321-1.c
- 271449701b ./gcc/testsuite/gcc.c-torture/execute/960326-1.c
-2449729039b ./gcc/testsuite/gcc.c-torture/execute/960327-1.c
-2463095434b ./gcc/testsuite/gcc.c-torture/execute/960402-1.c
-3079720318b ./gcc/testsuite/gcc.c-torture/execute/960405-1.c
-4251399269b ./gcc/testsuite/gcc.c-torture/execute/960416-1.c
-2615797380b ./gcc/testsuite/gcc.c-torture/execute/960416-1.x
-2014388579b ./gcc/testsuite/gcc.c-torture/execute/960419-1.c
- 235840907b ./gcc/testsuite/gcc.c-torture/execute/960419-2.c
-4266479970b ./gcc/testsuite/gcc.c-torture/execute/960512-1.c
-3785913788b ./gcc/testsuite/gcc.c-torture/execute/960513-1.c
- 488880971b ./gcc/testsuite/gcc.c-torture/execute/960521-1.c
-2321951599b ./gcc/testsuite/gcc.c-torture/execute/960608-1.c
-4052360482b ./gcc/testsuite/gcc.c-torture/execute/960801-1.c
-2655742085b ./gcc/testsuite/gcc.c-torture/execute/960802-1.c
- 135771086b ./gcc/testsuite/gcc.c-torture/execute/960830-1.c
-2582740546b ./gcc/testsuite/gcc.c-torture/execute/960909-1.c
-1944495033b ./gcc/testsuite/gcc.c-torture/execute/961004-1.c
- 658313774b ./gcc/testsuite/gcc.c-torture/execute/961017-1.c
- 785421501b ./gcc/testsuite/gcc.c-torture/execute/961017-2.c
-2852845535b ./gcc/testsuite/gcc.c-torture/execute/961026-1.c
-2375210094b ./gcc/testsuite/gcc.c-torture/execute/961112-1.c
-2553026408b ./gcc/testsuite/gcc.c-torture/execute/961122-1.c
-2422282222b ./gcc/testsuite/gcc.c-torture/execute/961122-2.c
-3575956796b ./gcc/testsuite/gcc.c-torture/execute/961125-1.c
- 577488172b ./gcc/testsuite/gcc.c-torture/execute/961206-1.c
-1182447544b ./gcc/testsuite/gcc.c-torture/execute/961213-1.c
-2704046666b ./gcc/testsuite/gcc.c-torture/execute/961223-1.c
-1973936950b ./gcc/testsuite/gcc.c-torture/execute/970214-1.c
-1571629264b ./gcc/testsuite/gcc.c-torture/execute/970214-2.c
- 167780433b ./gcc/testsuite/gcc.c-torture/execute/970217-1.c
-2343108590b ./gcc/testsuite/gcc.c-torture/execute/970923-1.c
-2894602056b ./gcc/testsuite/gcc.c-torture/execute/980205.c
-4265139835b ./gcc/testsuite/gcc.c-torture/execute/980223.c
-1143734080b ./gcc/testsuite/gcc.c-torture/execute/980424-1.c
-3704443102b ./gcc/testsuite/gcc.c-torture/execute/980505-1.c
-2419800133b ./gcc/testsuite/gcc.c-torture/execute/980505-2.c
-1955794056b ./gcc/testsuite/gcc.c-torture/execute/980506-1.c
-2173791379b ./gcc/testsuite/gcc.c-torture/execute/980506-2.c
- 492472793b ./gcc/testsuite/gcc.c-torture/execute/980506-3.c
-3939060245b ./gcc/testsuite/gcc.c-torture/execute/980526-1.c
-1183240780b ./gcc/testsuite/gcc.c-torture/execute/980526-2.c
- 798626284b ./gcc/testsuite/gcc.c-torture/execute/980526-3.c
- 686935511b ./gcc/testsuite/gcc.c-torture/execute/980602-1.c
- 148166585b ./gcc/testsuite/gcc.c-torture/execute/980602-2.c
-2555041864b ./gcc/testsuite/gcc.c-torture/execute/980604-1.c
-2921367481b ./gcc/testsuite/gcc.c-torture/execute/980605-1.c
- 327024946b ./gcc/testsuite/gcc.c-torture/execute/980608-1.c
- 636602589b ./gcc/testsuite/gcc.c-torture/execute/980612-1.c
-1796014237b ./gcc/testsuite/gcc.c-torture/execute/980617-1.c
-1416887007b ./gcc/testsuite/gcc.c-torture/execute/980618-1.c
-3252251770b ./gcc/testsuite/gcc.c-torture/execute/980701-1.c
-3843080992b ./gcc/testsuite/gcc.c-torture/execute/980707-1.c
-3327976229b ./gcc/testsuite/gcc.c-torture/execute/980709-1.c
-2346484511b ./gcc/testsuite/gcc.c-torture/execute/980709-1.x
-1464453071b ./gcc/testsuite/gcc.c-torture/execute/980716-1.c
-1144140014b ./gcc/testsuite/gcc.c-torture/execute/980929-1.c
-2567595595b ./gcc/testsuite/gcc.c-torture/execute/981001-1.c
-1496092063b ./gcc/testsuite/gcc.c-torture/execute/981019-1.c
-1493534646b ./gcc/testsuite/gcc.c-torture/execute/981130-1.c
- 296945303b ./gcc/testsuite/gcc.c-torture/execute/981130-1.x
-2098827021b ./gcc/testsuite/gcc.c-torture/execute/981206-1.c
- 785276758b ./gcc/testsuite/gcc.c-torture/execute/990106-1.c
-1458926953b ./gcc/testsuite/gcc.c-torture/execute/990106-2.c
-1443443587b ./gcc/testsuite/gcc.c-torture/execute/990117-1.c
- 98144727b ./gcc/testsuite/gcc.c-torture/execute/990127-1.c
-4206968879b ./gcc/testsuite/gcc.c-torture/execute/990127-2.c
-1805424399b ./gcc/testsuite/gcc.c-torture/execute/990128-1.c
-1406479809b ./gcc/testsuite/gcc.c-torture/execute/990130-1.c
-1075245403b ./gcc/testsuite/gcc.c-torture/execute/990208-1.c
-1370072006b ./gcc/testsuite/gcc.c-torture/execute/990208-1.x
-1910322968b ./gcc/testsuite/gcc.c-torture/execute/990211-1.c
-2520747136b ./gcc/testsuite/gcc.c-torture/execute/990222-1.c
-4167898413b ./gcc/testsuite/gcc.c-torture/execute/990324-1.c
-1316369295b ./gcc/testsuite/gcc.c-torture/execute/990326-1.c
-2237806705b ./gcc/testsuite/gcc.c-torture/execute/990404-1.c
-3506652867b ./gcc/testsuite/gcc.c-torture/execute/990413-2.c
-1028733236b ./gcc/testsuite/gcc.c-torture/execute/990413-2.x
- 533594278b ./gcc/testsuite/gcc.c-torture/execute/990513-1.c
-2242042026b ./gcc/testsuite/gcc.c-torture/execute/990524-1.c
-1608250007b ./gcc/testsuite/gcc.c-torture/execute/990525-1.c
-1043856586b ./gcc/testsuite/gcc.c-torture/execute/990525-2.c
-1233686917b ./gcc/testsuite/gcc.c-torture/execute/990527-1.c
-1220250784b ./gcc/testsuite/gcc.c-torture/execute/990531-1.c
-3289696997b ./gcc/testsuite/gcc.c-torture/execute/990604-1.c
- 80435005b ./gcc/testsuite/gcc.c-torture/execute/990628-1.c
-2064588039b ./gcc/testsuite/gcc.c-torture/execute/990804-1.c
-2063909199b ./gcc/testsuite/gcc.c-torture/execute/990811-1.c
-1435922216b ./gcc/testsuite/gcc.c-torture/execute/990826-0.c
-2369075067b ./gcc/testsuite/gcc.c-torture/execute/990826-0.x
-3894203537b ./gcc/testsuite/gcc.c-torture/execute/990827-1.c
-1924065387b ./gcc/testsuite/gcc.c-torture/execute/990829-1.c
-3657724130b ./gcc/testsuite/gcc.c-torture/execute/990923-1.c
-3037719587b ./gcc/testsuite/gcc.c-torture/execute/991014-1.c
- 340177342b ./gcc/testsuite/gcc.c-torture/execute/991016-1.c
-2236305082b ./gcc/testsuite/gcc.c-torture/execute/991019-1.c
-4202756321b ./gcc/testsuite/gcc.c-torture/execute/991023-1.c
-1824884313b ./gcc/testsuite/gcc.c-torture/execute/991030-1.c
-4138873239b ./gcc/testsuite/gcc.c-torture/execute/991112-1.c
-2109536582b ./gcc/testsuite/gcc.c-torture/execute/991118-1.c
-1316882767b ./gcc/testsuite/gcc.c-torture/execute/991201-1.c
-2220300988b ./gcc/testsuite/gcc.c-torture/execute/991202-1.c
-1285333003b ./gcc/testsuite/gcc.c-torture/execute/991202-2.c
-2329096948b ./gcc/testsuite/gcc.c-torture/execute/991202-3.c
-3117583172b ./gcc/testsuite/gcc.c-torture/execute/991216-1.c
-4234986278b ./gcc/testsuite/gcc.c-torture/execute/991216-2.c
- 631159512b ./gcc/testsuite/gcc.c-torture/execute/991216-3.c
-4137201305b ./gcc/testsuite/gcc.c-torture/execute/991216-4.c
- 882138391b ./gcc/testsuite/gcc.c-torture/execute/991221-1.c
-2854457808b ./gcc/testsuite/gcc.c-torture/execute/991227-1.c
-3688640862b ./gcc/testsuite/gcc.c-torture/execute/991228-1.c
-3793831392b ./gcc/testsuite/gcc.c-torture/execute/align-1.c
-4120792597b ./gcc/testsuite/gcc.c-torture/execute/align-2.c
-1274835551b ./gcc/testsuite/gcc.c-torture/execute/alloca-1.c
-3292072248b ./gcc/testsuite/gcc.c-torture/execute/anon-1.c
-1605923399b ./gcc/testsuite/gcc.c-torture/execute/arith-1.c
- 343449147b ./gcc/testsuite/gcc.c-torture/execute/arith-rand.c
- 312869222b ./gcc/testsuite/gcc.c-torture/execute/ashldi-1.c
-1327544364b ./gcc/testsuite/gcc.c-torture/execute/ashrdi-1.c
- 629391558b ./gcc/testsuite/gcc.c-torture/execute/bcp-1.c
- 323354359b ./gcc/testsuite/gcc.c-torture/execute/bf64-1.c
-3097986350b ./gcc/testsuite/gcc.c-torture/execute/bf64-1.x
-2311291194b ./gcc/testsuite/gcc.c-torture/execute/bf-layout-1.c
-2757361338b ./gcc/testsuite/gcc.c-torture/execute/bf-pack-1.c
-3543906045b ./gcc/testsuite/gcc.c-torture/execute/bf-sign-1.c
-1320697357b ./gcc/testsuite/gcc.c-torture/execute/bf-sign-2.c
-1331291117b ./gcc/testsuite/gcc.c-torture/execute/bitfld-1.c
-3644699221b ./gcc/testsuite/gcc.c-torture/execute/bitfld-1.x
-1684940093b ./gcc/testsuite/gcc.c-torture/execute/bitfld-2.c
-1673141587b ./gcc/testsuite/gcc.c-torture/execute/builtin-abs-1.c
-2056736695b ./gcc/testsuite/gcc.c-torture/execute/builtin-abs-2.c
-3097553545b ./gcc/testsuite/gcc.c-torture/execute/builtin-complex-1.c
-1581619700b ./gcc/testsuite/gcc.c-torture/execute/builtin-noret-1.c
- 329340471b ./gcc/testsuite/gcc.c-torture/execute/builtin-prefetch-1.c
- 397570715b ./gcc/testsuite/gcc.c-torture/execute/builtin-prefetch-2.c
-1484227202b ./gcc/testsuite/gcc.c-torture/execute/builtin-prefetch-3.c
-1934387710b ./gcc/testsuite/gcc.c-torture/execute/builtin-prefetch-4.c
-2627312111b ./gcc/testsuite/gcc.c-torture/execute/builtin-prefetch-5.c
-3741124173b ./gcc/testsuite/gcc.c-torture/execute/builtin-prefetch-6.c
-4012339802b ./gcc/testsuite/gcc.c-torture/execute/built-in-setjmp.c
-2250919883b ./gcc/testsuite/gcc.c-torture/execute/builtin-types-compatible-p.c
-2177138525b ./gcc/testsuite/gcc.c-torture/execute/cbrt.c
-2994579909b ./gcc/testsuite/gcc.c-torture/execute/cmpdi-1.c
-3257252249b ./gcc/testsuite/gcc.c-torture/execute/cmpsi-1.c
-3943123822b ./gcc/testsuite/gcc.c-torture/execute/comp-goto-1.c
-3449149566b ./gcc/testsuite/gcc.c-torture/execute/comp-goto-2.c
- 760972136b ./gcc/testsuite/gcc.c-torture/execute/complex-1.c
-3034158014b ./gcc/testsuite/gcc.c-torture/execute/complex-2.c
- 478689052b ./gcc/testsuite/gcc.c-torture/execute/complex-3.c
- 662396237b ./gcc/testsuite/gcc.c-torture/execute/complex-4.c
-1022468052b ./gcc/testsuite/gcc.c-torture/execute/complex-5.c
-3814081986b ./gcc/testsuite/gcc.c-torture/execute/complex-6.c
-1079537985b ./gcc/testsuite/gcc.c-torture/execute/compndlit-1.c
-4213843385b ./gcc/testsuite/gcc.c-torture/execute/conversion.c
-1362123497b ./gcc/testsuite/gcc.c-torture/execute/cvt-1.c
- 732726874b ./gcc/testsuite/gcc.c-torture/execute/cvt-1.x
-1037739064b ./gcc/testsuite/gcc.c-torture/execute/dbra-1.c
-3567725587b ./gcc/testsuite/gcc.c-torture/execute/divconst-1.c
-3321693440b ./gcc/testsuite/gcc.c-torture/execute/divconst-2.c
- 506840532b ./gcc/testsuite/gcc.c-torture/execute/divconst-3.c
-2615797380b ./gcc/testsuite/gcc.c-torture/execute/divconst-3.x
-2274689094b ./gcc/testsuite/gcc.c-torture/execute/divmod-1.c
-1808173474b ./gcc/testsuite/gcc.c-torture/execute/eeprof-1.c
-2216490291b ./gcc/testsuite/gcc.c-torture/execute/eeprof-1.x
-1886321368b ./gcc/testsuite/gcc.c-torture/execute/enum-1.c
-3916720934b ./gcc/testsuite/gcc.c-torture/execute/enum-2.c
-2211348141b ./gcc/testsuite/gcc.c-torture/execute/execute.exp
-1911697643b ./gcc/testsuite/gcc.c-torture/execute/extzvsi.c
- 155906334b ./gcc/testsuite/gcc.c-torture/execute/func-ptr-1.c
-1157816092b ./gcc/testsuite/gcc.c-torture/execute/gofast.c
-3099798770b ./gcc/testsuite/gcc.c-torture/execute/ieee/20000320-1.c
- 981656236b ./gcc/testsuite/gcc.c-torture/execute/ieee/20001122-1.c
-2602526611b ./gcc/testsuite/gcc.c-torture/execute/ieee/20010114-2.c
-3379104705b ./gcc/testsuite/gcc.c-torture/execute/ieee/20010226-1.c
- 372215662b ./gcc/testsuite/gcc.c-torture/execute/ieee/20011123-1.c
-2046772610b ./gcc/testsuite/gcc.c-torture/execute/ieee/920518-1.c
-3673851898b ./gcc/testsuite/gcc.c-torture/execute/ieee/920810-1.c
-1813910189b ./gcc/testsuite/gcc.c-torture/execute/ieee/930529-1.c
- 73602629b ./gcc/testsuite/gcc.c-torture/execute/ieee/980619-1.c
-1659512392b ./gcc/testsuite/gcc.c-torture/execute/ieee/980619-1.x
-1948647907b ./gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-1.c
-1935804586b ./gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-2.c
- 817625481b ./gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-3.c
-3452570198b ./gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-4.c
- 330892698b ./gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-5.c
-4125344101b ./gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.c
-1953413990b ./gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.x
-2299573411b ./gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
-4017678214b ./gcc/testsuite/gcc.c-torture/execute/ieee/minuszero.c
-3545392440b ./gcc/testsuite/gcc.c-torture/execute/ieee/mzero2.c
-2290856575b ./gcc/testsuite/gcc.c-torture/execute/ieee/mzero2.x
-3203549249b ./gcc/testsuite/gcc.c-torture/execute/ieee/mzero3.c
- 545426428b ./gcc/testsuite/gcc.c-torture/execute/ieee/rbug.c
-2631912054b ./gcc/testsuite/gcc.c-torture/execute/ieee/rbug.x
- 287394580b ./gcc/testsuite/gcc.c-torture/execute/index-1.c
-3728840213b ./gcc/testsuite/gcc.c-torture/execute/inst-check.c
-2015511278b ./gcc/testsuite/gcc.c-torture/execute/int-compare.c
-2503239574b ./gcc/testsuite/gcc.c-torture/execute/longlong.c
-3284814162b ./gcc/testsuite/gcc.c-torture/execute/loop-10.c
-2766603756b ./gcc/testsuite/gcc.c-torture/execute/loop-11.c
-3036735737b ./gcc/testsuite/gcc.c-torture/execute/loop-12.c
-2537268960b ./gcc/testsuite/gcc.c-torture/execute/loop-14.c
- 995264748b ./gcc/testsuite/gcc.c-torture/execute/loop-15.c
-2701191371b ./gcc/testsuite/gcc.c-torture/execute/loop-1.c
-3443893179b ./gcc/testsuite/gcc.c-torture/execute/loop-2b.c
- 869002341b ./gcc/testsuite/gcc.c-torture/execute/loop-2.c
- 153943550b ./gcc/testsuite/gcc.c-torture/execute/loop-2c.c
- 720145550b ./gcc/testsuite/gcc.c-torture/execute/loop-2d.c
-2058046897b ./gcc/testsuite/gcc.c-torture/execute/loop-2e.c
-2718531033b ./gcc/testsuite/gcc.c-torture/execute/loop-2e.x
-1291794748b ./gcc/testsuite/gcc.c-torture/execute/loop-2f.c
-3280299116b ./gcc/testsuite/gcc.c-torture/execute/loop-2f.x
- 661111306b ./gcc/testsuite/gcc.c-torture/execute/loop-2g.c
-3280299116b ./gcc/testsuite/gcc.c-torture/execute/loop-2g.x
-4068453712b ./gcc/testsuite/gcc.c-torture/execute/loop-3b.c
-3620613760b ./gcc/testsuite/gcc.c-torture/execute/loop-3.c
-2778041526b ./gcc/testsuite/gcc.c-torture/execute/loop-3c.c
-2249811917b ./gcc/testsuite/gcc.c-torture/execute/loop-3c.x
-1791416082b ./gcc/testsuite/gcc.c-torture/execute/loop-4b.c
-3316778727b ./gcc/testsuite/gcc.c-torture/execute/loop-4.c
-3541035036b ./gcc/testsuite/gcc.c-torture/execute/loop-5.c
-4217961697b ./gcc/testsuite/gcc.c-torture/execute/loop-6.c
-3649171232b ./gcc/testsuite/gcc.c-torture/execute/loop-7.c
-3999194364b ./gcc/testsuite/gcc.c-torture/execute/loop-8.c
- 239440461b ./gcc/testsuite/gcc.c-torture/execute/loop-9.c
-3308349321b ./gcc/testsuite/gcc.c-torture/execute/lshrdi-1.c
-1655048971b ./gcc/testsuite/gcc.c-torture/execute/memcpy-1.c
-1198957866b ./gcc/testsuite/gcc.c-torture/execute/memcpy-bi.c
-2259057543b ./gcc/testsuite/gcc.c-torture/execute/memset-3.c
-1146723390b ./gcc/testsuite/gcc.c-torture/execute/mod-1.c
- 843122257b ./gcc/testsuite/gcc.c-torture/execute/nestfunc-1.c
-2875393797b ./gcc/testsuite/gcc.c-torture/execute/nestfunc-2.c
-3451120516b ./gcc/testsuite/gcc.c-torture/execute/nestfunc-3.c
-1193207968b ./gcc/testsuite/gcc.c-torture/execute/nestfunc-4.c
- 462740811b ./gcc/testsuite/gcc.c-torture/execute/nest-stdar-1.c
-1347988605b ./gcc/testsuite/gcc.c-torture/execute/packed-1.c
-3662025483b ./gcc/testsuite/gcc.c-torture/execute/packed-2.c
- 781350511b ./gcc/testsuite/gcc.c-torture/execute/pending-4.c
-1246182987b ./gcc/testsuite/gcc.c-torture/execute/ptr-arith-1.c
- 146053249b ./gcc/testsuite/gcc.c-torture/execute/regstack-1.c
-1827676873b ./gcc/testsuite/gcc.c-torture/execute/scope-1.c
- 990025742b ./gcc/testsuite/gcc.c-torture/execute/scope-2.c
-3788353048b ./gcc/testsuite/gcc.c-torture/execute/shiftdi.c
- 75800580b ./gcc/testsuite/gcc.c-torture/execute/stdio-opt-1.c
-2726881848b ./gcc/testsuite/gcc.c-torture/execute/stdio-opt-2.c
-2215607685b ./gcc/testsuite/gcc.c-torture/execute/stdio-opt-3.c
-4127514660b ./gcc/testsuite/gcc.c-torture/execute/strct-pack-1.c
-2567091361b ./gcc/testsuite/gcc.c-torture/execute/strct-pack-2.c
-3788900866b ./gcc/testsuite/gcc.c-torture/execute/strct-pack-3.c
-3787465303b ./gcc/testsuite/gcc.c-torture/execute/strct-pack-4.c
-2204360040b ./gcc/testsuite/gcc.c-torture/execute/strct-stdarg-1.c
- 665194027b ./gcc/testsuite/gcc.c-torture/execute/strct-stdarg-1.x
-3638595647b ./gcc/testsuite/gcc.c-torture/execute/strct-varg-1.c
-2424749175b ./gcc/testsuite/gcc.c-torture/execute/strct-varg-1.x
-2004905304b ./gcc/testsuite/gcc.c-torture/execute/string-opt-10.c
-1757228388b ./gcc/testsuite/gcc.c-torture/execute/string-opt-11.c
-3269205009b ./gcc/testsuite/gcc.c-torture/execute/string-opt-12.c
-1302429529b ./gcc/testsuite/gcc.c-torture/execute/string-opt-13.c
-1984203373b ./gcc/testsuite/gcc.c-torture/execute/string-opt-14.c
- 206750096b ./gcc/testsuite/gcc.c-torture/execute/string-opt-15.c
- 2089995b ./gcc/testsuite/gcc.c-torture/execute/string-opt-16.c
-3389618360b ./gcc/testsuite/gcc.c-torture/execute/string-opt-1.c
-2499130848b ./gcc/testsuite/gcc.c-torture/execute/string-opt-2.c
- 307949358b ./gcc/testsuite/gcc.c-torture/execute/string-opt-3.c
-1473532603b ./gcc/testsuite/gcc.c-torture/execute/string-opt-4.c
-2202340101b ./gcc/testsuite/gcc.c-torture/execute/string-opt-5.c
- 196339167b ./gcc/testsuite/gcc.c-torture/execute/string-opt-6.c
-2437896034b ./gcc/testsuite/gcc.c-torture/execute/string-opt-7.c
- 524866461b ./gcc/testsuite/gcc.c-torture/execute/string-opt-8.c
-2299025367b ./gcc/testsuite/gcc.c-torture/execute/string-opt-9.c
-2234035225b ./gcc/testsuite/gcc.c-torture/execute/struct-ini-1.c
-1176467633b ./gcc/testsuite/gcc.c-torture/execute/struct-ini-2.c
-2162338370b ./gcc/testsuite/gcc.c-torture/execute/struct-ini-3.c
-3372312182b ./gcc/testsuite/gcc.c-torture/execute/struct-ini-4.c
-1924491577b ./gcc/testsuite/gcc.c-torture/execute/struct-ret-1.c
-2222062805b ./gcc/testsuite/gcc.c-torture/execute/struct-ret-2.c
-2658407134b ./gcc/testsuite/gcc.c-torture/execute/tstdi-1.c
-1760191623b ./gcc/testsuite/gcc.c-torture/execute/unroll-1.c
- 150011334b ./gcc/testsuite/gcc.c-torture/execute/va-arg-10.c
-1341755443b ./gcc/testsuite/gcc.c-torture/execute/va-arg-11.c
-3741851708b ./gcc/testsuite/gcc.c-torture/execute/va-arg-12.c
-2056576210b ./gcc/testsuite/gcc.c-torture/execute/va-arg-13.c
-1501818131b ./gcc/testsuite/gcc.c-torture/execute/va-arg-14.c
- 625024539b ./gcc/testsuite/gcc.c-torture/execute/va-arg-15.c
- 905618458b ./gcc/testsuite/gcc.c-torture/execute/va-arg-15.x
-1304294650b ./gcc/testsuite/gcc.c-torture/execute/va-arg-16.c
- 905618458b ./gcc/testsuite/gcc.c-torture/execute/va-arg-16.x
-3654734537b ./gcc/testsuite/gcc.c-torture/execute/va-arg-17.c
- 905618458b ./gcc/testsuite/gcc.c-torture/execute/va-arg-17.x
-2108289558b ./gcc/testsuite/gcc.c-torture/execute/va-arg-18.c
-2682407156b ./gcc/testsuite/gcc.c-torture/execute/va-arg-19.c
-4100317579b ./gcc/testsuite/gcc.c-torture/execute/va-arg-1.c
- 366376907b ./gcc/testsuite/gcc.c-torture/execute/va-arg-20.c
-3416533370b ./gcc/testsuite/gcc.c-torture/execute/va-arg-21.c
-1403664843b ./gcc/testsuite/gcc.c-torture/execute/va-arg-22.c
-3898927180b ./gcc/testsuite/gcc.c-torture/execute/va-arg-2.c
-3316575978b ./gcc/testsuite/gcc.c-torture/execute/va-arg-3.c
-2693536633b ./gcc/testsuite/gcc.c-torture/execute/va-arg-3.x
- 839866355b ./gcc/testsuite/gcc.c-torture/execute/va-arg-4.c
-1210036672b ./gcc/testsuite/gcc.c-torture/execute/va-arg-5.c
- 365894168b ./gcc/testsuite/gcc.c-torture/execute/va-arg-6.c
-3547378445b ./gcc/testsuite/gcc.c-torture/execute/va-arg-7.c
-3028804389b ./gcc/testsuite/gcc.c-torture/execute/va-arg-8.c
-2833151734b ./gcc/testsuite/gcc.c-torture/execute/va-arg-9.c
-1911372417b ./gcc/testsuite/gcc.c-torture/execute/wchar_t-1.c
- 529327846b ./gcc/testsuite/gcc.c-torture/execute/widechar-1.c
-1902127658b ./gcc/testsuite/gcc.c-torture/execute/widechar-2.c
-2556092488b ./gcc/testsuite/gcc.c-torture/execute/zerolen-1.c
-4066787379b ./gcc/testsuite/gcc.c-torture/execute/zerolen-2.c
- 634421910b ./gcc/testsuite/gcc.c-torture/unsorted/386.c
-2512826658b ./gcc/testsuite/gcc.c-torture/unsorted/86.c
-2687046562b ./gcc/testsuite/gcc.c-torture/unsorted/a1.c
-3122819825b ./gcc/testsuite/gcc.c-torture/unsorted/a3.c
-1905897475b ./gcc/testsuite/gcc.c-torture/unsorted/aaa.c
-1430858172b ./gcc/testsuite/gcc.c-torture/unsorted/aa.c
-2128951928b ./gcc/testsuite/gcc.c-torture/unsorted/abs.c
- 51945996b ./gcc/testsuite/gcc.c-torture/unsorted/a.c
-4087775597b ./gcc/testsuite/gcc.c-torture/unsorted/ac.c
-4108214922b ./gcc/testsuite/gcc.c-torture/unsorted/acc.c
- 178238083b ./gcc/testsuite/gcc.c-torture/unsorted/add386.c
-1561010997b ./gcc/testsuite/gcc.c-torture/unsorted/add.c
- 425148131b ./gcc/testsuite/gcc.c-torture/unsorted/addcc.c
-1010727230b ./gcc/testsuite/gcc.c-torture/unsorted/andm.c
-1804826393b ./gcc/testsuite/gcc.c-torture/unsorted/andmem.c
-1939054464b ./gcc/testsuite/gcc.c-torture/unsorted/andn.c
- 958534456b ./gcc/testsuite/gcc.c-torture/unsorted/andok.c
-4100679649b ./gcc/testsuite/gcc.c-torture/unsorted/andsi.c
-1812217387b ./gcc/testsuite/gcc.c-torture/unsorted/andsparc.c
-1261488553b ./gcc/testsuite/gcc.c-torture/unsorted/aos.c
-3358660284b ./gcc/testsuite/gcc.c-torture/unsorted/arr.c
- 529589500b ./gcc/testsuite/gcc.c-torture/unsorted/as.c
-2341774096b ./gcc/testsuite/gcc.c-torture/unsorted/ase.c
- 278197700b ./gcc/testsuite/gcc.c-torture/unsorted/b1.c
-1838022421b ./gcc/testsuite/gcc.c-torture/unsorted/b2.c
-1297638431b ./gcc/testsuite/gcc.c-torture/unsorted/b3.c
- 98906803b ./gcc/testsuite/gcc.c-torture/unsorted/b88.c
-4166624962b ./gcc/testsuite/gcc.c-torture/unsorted/bad.c
- 909355576b ./gcc/testsuite/gcc.c-torture/unsorted/band.c
- 782217635b ./gcc/testsuite/gcc.c-torture/unsorted/bb0.c
- 104727600b ./gcc/testsuite/gcc.c-torture/unsorted/bb1.c
-2113129899b ./gcc/testsuite/gcc.c-torture/unsorted/bbb.c
-3604241750b ./gcc/testsuite/gcc.c-torture/unsorted/b.c
-2670310529b ./gcc/testsuite/gcc.c-torture/unsorted/bc.c
-3090384483b ./gcc/testsuite/gcc.c-torture/unsorted/bcopy.c
-2685623920b ./gcc/testsuite/gcc.c-torture/unsorted/bf.c
-1825505370b ./gcc/testsuite/gcc.c-torture/unsorted/bfins.c
-3222678366b ./gcc/testsuite/gcc.c-torture/unsorted/bfx.c
-1818008243b ./gcc/testsuite/gcc.c-torture/unsorted/bge.c
-1169896684b ./gcc/testsuite/gcc.c-torture/unsorted/bit.c
-4267772046b ./gcc/testsuite/gcc.c-torture/unsorted/bitf.c
-1244917866b ./gcc/testsuite/gcc.c-torture/unsorted/bitw.c
-3205164461b ./gcc/testsuite/gcc.c-torture/unsorted/blk.c
-3930520391b ./gcc/testsuite/gcc.c-torture/unsorted/bt386.c
-3879987638b ./gcc/testsuite/gcc.c-torture/unsorted/bt.c
-2930337150b ./gcc/testsuite/gcc.c-torture/unsorted/BUG11.c
- 645328736b ./gcc/testsuite/gcc.c-torture/unsorted/BUG12.c
-3447791606b ./gcc/testsuite/gcc.c-torture/unsorted/BUG13.c
-1345083343b ./gcc/testsuite/gcc.c-torture/unsorted/BUG16.c
-2211699544b ./gcc/testsuite/gcc.c-torture/unsorted/BUG17.c
-3824994911b ./gcc/testsuite/gcc.c-torture/unsorted/BUG18.c
-1577087180b ./gcc/testsuite/gcc.c-torture/unsorted/BUG1.c
-2177082003b ./gcc/testsuite/gcc.c-torture/unsorted/BUG21.c
-1740665759b ./gcc/testsuite/gcc.c-torture/unsorted/BUG22.c
-4075155387b ./gcc/testsuite/gcc.c-torture/unsorted/BUG23.c
-3968893634b ./gcc/testsuite/gcc.c-torture/unsorted/BUG24.c
- 459689731b ./gcc/testsuite/gcc.c-torture/unsorted/BUG25.c
-3618943848b ./gcc/testsuite/gcc.c-torture/unsorted/BUG2.c
- 474328818b ./gcc/testsuite/gcc.c-torture/unsorted/BUG3.c
-1462112702b ./gcc/testsuite/gcc.c-torture/unsorted/BUG4.c
-3140531389b ./gcc/testsuite/gcc.c-torture/unsorted/BUG5.c
- 460917160b ./gcc/testsuite/gcc.c-torture/unsorted/BUG6.c
-2778832219b ./gcc/testsuite/gcc.c-torture/unsorted/bug.c
- 909529146b ./gcc/testsuite/gcc.c-torture/unsorted/bugc.c
-3859987766b ./gcc/testsuite/gcc.c-torture/unsorted/buns.c
-2981977682b ./gcc/testsuite/gcc.c-torture/unsorted/bx.c
-3824196498b ./gcc/testsuite/gcc.c-torture/unsorted/c1.c
-3656093116b ./gcc/testsuite/gcc.c-torture/unsorted/c2.c
-3745915003b ./gcc/testsuite/gcc.c-torture/unsorted/call386.c
-3818633964b ./gcc/testsuite/gcc.c-torture/unsorted/call.c
-3496796739b ./gcc/testsuite/gcc.c-torture/unsorted/callind.c
-3780608001b ./gcc/testsuite/gcc.c-torture/unsorted/c.c
- 162598922b ./gcc/testsuite/gcc.c-torture/unsorted/cc.c
-2143288465b ./gcc/testsuite/gcc.c-torture/unsorted/charmtst.c
-1855363258b ./gcc/testsuite/gcc.c-torture/unsorted/cmb.c
-1285046858b ./gcc/testsuite/gcc.c-torture/unsorted/cmp.c
-1423312127b ./gcc/testsuite/gcc.c-torture/unsorted/cmphi.c
-2318993881b ./gcc/testsuite/gcc.c-torture/unsorted/cmpsi386.c
-4235211728b ./gcc/testsuite/gcc.c-torture/unsorted/cmul.c
- 854170788b ./gcc/testsuite/gcc.c-torture/unsorted/cn1.c
- 935857365b ./gcc/testsuite/gcc.c-torture/unsorted/comb.c
-1810135123b ./gcc/testsuite/gcc.c-torture/unsorted/consec.c
- 181790131b ./gcc/testsuite/gcc.c-torture/unsorted/const.c
-2353636753b ./gcc/testsuite/gcc.c-torture/unsorted/conv.c
-3252387675b ./gcc/testsuite/gcc.c-torture/unsorted/conv_tst.c
-2280634062b ./gcc/testsuite/gcc.c-torture/unsorted/cp.c
-1738381851b ./gcc/testsuite/gcc.c-torture/unsorted/csebug.c
-1464956912b ./gcc/testsuite/gcc.c-torture/unsorted/cvt.c
- 606535868b ./gcc/testsuite/gcc.c-torture/unsorted/dblbug.c
-3851183583b ./gcc/testsuite/gcc.c-torture/unsorted/dbl_parm.c
-3440041653b ./gcc/testsuite/gcc.c-torture/unsorted/d.c
-2925438011b ./gcc/testsuite/gcc.c-torture/unsorted/ddd.c
-2791348449b ./gcc/testsuite/gcc.c-torture/unsorted/dead.c
- 609366019b ./gcc/testsuite/gcc.c-torture/unsorted/delay.c
- 305442480b ./gcc/testsuite/gcc.c-torture/unsorted/DFcmp.c
-3029371757b ./gcc/testsuite/gcc.c-torture/unsorted/di.c
- 420255576b ./gcc/testsuite/gcc.c-torture/unsorted/dic.c
- 716977667b ./gcc/testsuite/gcc.c-torture/unsorted/dilayout.c
-1071957355b ./gcc/testsuite/gcc.c-torture/unsorted/dimove.c
- 163894537b ./gcc/testsuite/gcc.c-torture/unsorted/dimul.c
-1962021495b ./gcc/testsuite/gcc.c-torture/unsorted/div.c
-1911882561b ./gcc/testsuite/gcc.c-torture/unsorted/divdf.c
-3643811739b ./gcc/testsuite/gcc.c-torture/unsorted/dm.c
-3366321383b ./gcc/testsuite/gcc.c-torture/unsorted/dshift.c
- 691935419b ./gcc/testsuite/gcc.c-torture/unsorted/e.c
-3422715387b ./gcc/testsuite/gcc.c-torture/unsorted/ex.c
-3295431583b ./gcc/testsuite/gcc.c-torture/unsorted/ext.c
-3418757365b ./gcc/testsuite/gcc.c-torture/unsorted/f1.c
-1799287010b ./gcc/testsuite/gcc.c-torture/unsorted/f2.c
- 742887905b ./gcc/testsuite/gcc.c-torture/unsorted/fdmul.c
-3396096931b ./gcc/testsuite/gcc.c-torture/unsorted/float.c
-2705424580b ./gcc/testsuite/gcc.c-torture/unsorted/flo.c
-1861286853b ./gcc/testsuite/gcc.c-torture/unsorted/flt_const.c
-1778808555b ./gcc/testsuite/gcc.c-torture/unsorted/fnul.c
- 837581993b ./gcc/testsuite/gcc.c-torture/unsorted/foo.c
-2603890884b ./gcc/testsuite/gcc.c-torture/unsorted/forgetcc.c
-1311942689b ./gcc/testsuite/gcc.c-torture/unsorted/fq.c
-2823794598b ./gcc/testsuite/gcc.c-torture/unsorted/g.c
-4182806672b ./gcc/testsuite/gcc.c-torture/unsorted/gen_tst.c
- 440386278b ./gcc/testsuite/gcc.c-torture/unsorted/glob.c
-2712797412b ./gcc/testsuite/gcc.c-torture/unsorted/gronk.c
-2912660272b ./gcc/testsuite/gcc.c-torture/unsorted/hibug.c
-2506280517b ./gcc/testsuite/gcc.c-torture/unsorted/hi.c
-4088813022b ./gcc/testsuite/gcc.c-torture/unsorted/HIcmp.c
-2060643608b ./gcc/testsuite/gcc.c-torture/unsorted/HIset.c
-1463391444b ./gcc/testsuite/gcc.c-torture/unsorted/i.c
-3171392500b ./gcc/testsuite/gcc.c-torture/unsorted/i++.c
-1222319492b ./gcc/testsuite/gcc.c-torture/unsorted/ic.c
-2244080969b ./gcc/testsuite/gcc.c-torture/unsorted/icmp.c
-3544970343b ./gcc/testsuite/gcc.c-torture/unsorted/ifreg.c
-1391595029b ./gcc/testsuite/gcc.c-torture/unsorted/imm.c
- 125065552b ./gcc/testsuite/gcc.c-torture/unsorted/isinf.c
-3010843181b ./gcc/testsuite/gcc.c-torture/unsorted/jmp.c
-2660706970b ./gcc/testsuite/gcc.c-torture/unsorted/jumptab.c
-2953050089b ./gcc/testsuite/gcc.c-torture/unsorted/layout.c
-3456840745b ./gcc/testsuite/gcc.c-torture/unsorted/lbug.c
-1238043529b ./gcc/testsuite/gcc.c-torture/unsorted/l.c
-2906412336b ./gcc/testsuite/gcc.c-torture/unsorted/ll1.c
-2085462310b ./gcc/testsuite/gcc.c-torture/unsorted/llbug.c
-1419215241b ./gcc/testsuite/gcc.c-torture/unsorted/lll.c
-3825978026b ./gcc/testsuite/gcc.c-torture/unsorted/load8.c
- 791778479b ./gcc/testsuite/gcc.c-torture/unsorted/loadhicc.c
- 439371726b ./gcc/testsuite/gcc.c-torture/unsorted/log2.c
- 418270073b ./gcc/testsuite/gcc.c-torture/unsorted/logic.c
- 388000712b ./gcc/testsuite/gcc.c-torture/unsorted/loop-1.c
-2317019693b ./gcc/testsuite/gcc.c-torture/unsorted/loop386.c
-3780249238b ./gcc/testsuite/gcc.c-torture/unsorted/lop.c
-3011092171b ./gcc/testsuite/gcc.c-torture/unsorted/m1.c
-1664237855b ./gcc/testsuite/gcc.c-torture/unsorted/m2.c
- 836486950b ./gcc/testsuite/gcc.c-torture/unsorted/m5.c
-1315431234b ./gcc/testsuite/gcc.c-torture/unsorted/m68.c
-1140567438b ./gcc/testsuite/gcc.c-torture/unsorted/mbyte.c
-1343630589b ./gcc/testsuite/gcc.c-torture/unsorted/mchar.c
-1971867771b ./gcc/testsuite/gcc.c-torture/unsorted/mcmp.c
-1050674918b ./gcc/testsuite/gcc.c-torture/unsorted/mdouble.c
-3545288402b ./gcc/testsuite/gcc.c-torture/unsorted/memtst.c
-1607208885b ./gcc/testsuite/gcc.c-torture/unsorted/miscomp.c
- 517599771b ./gcc/testsuite/gcc.c-torture/unsorted/mm.c
-3498200377b ./gcc/testsuite/gcc.c-torture/unsorted/mod.c
- 852673854b ./gcc/testsuite/gcc.c-torture/unsorted/modcc.c
-3290683845b ./gcc/testsuite/gcc.c-torture/unsorted/move.c
-2934241414b ./gcc/testsuite/gcc.c-torture/unsorted/move_qhi.c
-2156076426b ./gcc/testsuite/gcc.c-torture/unsorted/mregtst.c
-2833441830b ./gcc/testsuite/gcc.c-torture/unsorted/msp.c
-3686945259b ./gcc/testsuite/gcc.c-torture/unsorted/mtst.c
- 650788304b ./gcc/testsuite/gcc.c-torture/unsorted/mu.c
-3210222105b ./gcc/testsuite/gcc.c-torture/unsorted/mul.c
- 206884481b ./gcc/testsuite/gcc.c-torture/unsorted/mword1.c
-3114106310b ./gcc/testsuite/gcc.c-torture/unsorted/mword.c
-1193753806b ./gcc/testsuite/gcc.c-torture/unsorted/n1.c
-3021632957b ./gcc/testsuite/gcc.c-torture/unsorted/nand.c
-1942143253b ./gcc/testsuite/gcc.c-torture/unsorted/n.c
-1255157012b ./gcc/testsuite/gcc.c-torture/unsorted/neg.c
-2666891841b ./gcc/testsuite/gcc.c-torture/unsorted/o.c
-1641502386b ./gcc/testsuite/gcc.c-torture/unsorted/omit.c
-2947983429b ./gcc/testsuite/gcc.c-torture/unsorted/opout.c
-4144556375b ./gcc/testsuite/gcc.c-torture/unsorted/opt.c
-2570634505b ./gcc/testsuite/gcc.c-torture/unsorted/or386.c
-1221510857b ./gcc/testsuite/gcc.c-torture/unsorted/or.c
-3498239118b ./gcc/testsuite/gcc.c-torture/unsorted/parms.c
-4291861284b ./gcc/testsuite/gcc.c-torture/unsorted/pass.c
-3299772143b ./gcc/testsuite/gcc.c-torture/unsorted/p.c
-1371923458b ./gcc/testsuite/gcc.c-torture/unsorted/pmt.c
-2511249387b ./gcc/testsuite/gcc.c-torture/unsorted/poor.c
- 745326023b ./gcc/testsuite/gcc.c-torture/unsorted/pp.c
-1391345399b ./gcc/testsuite/gcc.c-torture/unsorted/pret-arg.c
-3407302768b ./gcc/testsuite/gcc.c-torture/unsorted/pyr2.c
-2603570420b ./gcc/testsuite/gcc.c-torture/unsorted/PYRBUG.c
- 697484600b ./gcc/testsuite/gcc.c-torture/unsorted/pyr.c
-1835488344b ./gcc/testsuite/gcc.c-torture/unsorted/q.c
- 839150718b ./gcc/testsuite/gcc.c-torture/unsorted/QIcmp.c
-2111121086b ./gcc/testsuite/gcc.c-torture/unsorted/QIset.c
-4283361995b ./gcc/testsuite/gcc.c-torture/unsorted/r1.c
-1427595492b ./gcc/testsuite/gcc.c-torture/unsorted/r.c
-4078624014b ./gcc/testsuite/gcc.c-torture/unsorted/rel.c
-3414105414b ./gcc/testsuite/gcc.c-torture/unsorted/rmsc.c
-1012332947b ./gcc/testsuite/gcc.c-torture/unsorted/round.c
-3178090569b ./gcc/testsuite/gcc.c-torture/unsorted/run.c
-3862968210b ./gcc/testsuite/gcc.c-torture/unsorted/sar.c
-1744325584b ./gcc/testsuite/gcc.c-torture/unsorted/s.c
-2416335748b ./gcc/testsuite/gcc.c-torture/unsorted/scal.c
-4292026279b ./gcc/testsuite/gcc.c-torture/unsorted/sc.c
-1669731371b ./gcc/testsuite/gcc.c-torture/unsorted/scc.c
-3073011184b ./gcc/testsuite/gcc.c-torture/unsorted/scond.c
-4127283390b ./gcc/testsuite/gcc.c-torture/unsorted/selfrec.c
- 772856379b ./gcc/testsuite/gcc.c-torture/unsorted/seq.c
-3595435741b ./gcc/testsuite/gcc.c-torture/unsorted/set386.c
- 772098437b ./gcc/testsuite/gcc.c-torture/unsorted/set88.c
-1791217871b ./gcc/testsuite/gcc.c-torture/unsorted/SFset.c
-2510322715b ./gcc/testsuite/gcc.c-torture/unsorted/shand.c
-1917728540b ./gcc/testsuite/gcc.c-torture/unsorted/sh.c
- 369189446b ./gcc/testsuite/gcc.c-torture/unsorted/shft.c
- 786362264b ./gcc/testsuite/gcc.c-torture/unsorted/shift.c
-1326810661b ./gcc/testsuite/gcc.c-torture/unsorted/shloop.c
-1731774655b ./gcc/testsuite/gcc.c-torture/unsorted/shm.c
-3855537843b ./gcc/testsuite/gcc.c-torture/unsorted/SIcmp.c
-3198420130b ./gcc/testsuite/gcc.c-torture/unsorted/signext2.c
-3333038544b ./gcc/testsuite/gcc.c-torture/unsorted/signext.c
-1627754274b ./gcc/testsuite/gcc.c-torture/unsorted/sim.c
- 380795934b ./gcc/testsuite/gcc.c-torture/unsorted/simple.c
-2010223878b ./gcc/testsuite/gcc.c-torture/unsorted/SIset.c
- 927966180b ./gcc/testsuite/gcc.c-torture/unsorted/sne.c
-1732276088b ./gcc/testsuite/gcc.c-torture/unsorted/sound.c
-1462108320b ./gcc/testsuite/gcc.c-torture/unsorted/sparcbug.c
- 680850660b ./gcc/testsuite/gcc.c-torture/unsorted/speed.c
-1459712797b ./gcc/testsuite/gcc.c-torture/unsorted/stor.c
-3521937419b ./gcc/testsuite/gcc.c-torture/unsorted/store0.c
- 429514643b ./gcc/testsuite/gcc.c-torture/unsorted/storecc.c
-2367209182b ./gcc/testsuite/gcc.c-torture/unsorted/str.c
-1212744014b ./gcc/testsuite/gcc.c-torture/unsorted/stru.c
-2936891454b ./gcc/testsuite/gcc.c-torture/unsorted/structret.c
-1723639277b ./gcc/testsuite/gcc.c-torture/unsorted/stuct.c
-3579655725b ./gcc/testsuite/gcc.c-torture/unsorted/sub32.c
-2225754564b ./gcc/testsuite/gcc.c-torture/unsorted/subcc.c
-1610852268b ./gcc/testsuite/gcc.c-torture/unsorted/subcse.c
-1291307272b ./gcc/testsuite/gcc.c-torture/unsorted/sym.c
- 319785041b ./gcc/testsuite/gcc.c-torture/unsorted/symconst.c
-1215688317b ./gcc/testsuite/gcc.c-torture/unsorted/t.c
-3564367767b ./gcc/testsuite/gcc.c-torture/unsorted/test.c
- 585245677b ./gcc/testsuite/gcc.c-torture/unsorted/test-flow.c
-1417505636b ./gcc/testsuite/gcc.c-torture/unsorted/test-loop.c
-1907124578b ./gcc/testsuite/gcc.c-torture/unsorted/time.c
- 316618822b ./gcc/testsuite/gcc.c-torture/unsorted/tmp.c
- 551299652b ./gcc/testsuite/gcc.c-torture/unsorted/trivial.c
- 54055479b ./gcc/testsuite/gcc.c-torture/unsorted/trunc.c
-1458206113b ./gcc/testsuite/gcc.c-torture/unsorted/u.c
- 620556027b ./gcc/testsuite/gcc.c-torture/unsorted/udconvert.c
-4030884798b ./gcc/testsuite/gcc.c-torture/unsorted/udivmod4.c
- 367886956b ./gcc/testsuite/gcc.c-torture/unsorted/UHIcmp.c
-2240659922b ./gcc/testsuite/gcc.c-torture/unsorted/uns.c
- 434767322b ./gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp
-4067751424b ./gcc/testsuite/gcc.c-torture/unsorted/uns_tst.c
-3380740291b ./gcc/testsuite/gcc.c-torture/unsorted/UQIcmp.c
-3065994513b ./gcc/testsuite/gcc.c-torture/unsorted/USIcmp.c
-3061572007b ./gcc/testsuite/gcc.c-torture/unsorted/uuarg.c
- 339227429b ./gcc/testsuite/gcc.c-torture/unsorted/v.c
- 97022866b ./gcc/testsuite/gcc.c-torture/unsorted/w.c
- 502682554b ./gcc/testsuite/gcc.c-torture/unsorted/ww.c
-1561412324b ./gcc/testsuite/gcc.c-torture/unsorted/xb.c
-3522679530b ./gcc/testsuite/gcc.c-torture/unsorted/xbg.c
-2143513908b ./gcc/testsuite/gcc.c-torture/unsorted/x.c
-2513066849b ./gcc/testsuite/gcc.c-torture/unsorted/xc.c
-3791802167b ./gcc/testsuite/gcc.c-torture/unsorted/xcsebug.c
- 753765877b ./gcc/testsuite/gcc.c-torture/unsorted/xdi.c
-2449229476b ./gcc/testsuite/gcc.c-torture/unsorted/xfoo.c
-1976729056b ./gcc/testsuite/gcc.c-torture/unsorted/xi.c
- 467677832b ./gcc/testsuite/gcc.c-torture/unsorted/xlop.c
-2772134709b ./gcc/testsuite/gcc.c-torture/unsorted/xmtst.c
-2887718336b ./gcc/testsuite/gcc.c-torture/unsorted/xneg.c
- 891585403b ./gcc/testsuite/gcc.c-torture/unsorted/xopt.c
-3158383083b ./gcc/testsuite/gcc.c-torture/unsorted/xor.c
-2275025612b ./gcc/testsuite/gcc.c-torture/unsorted/xorn.c
- 696616007b ./gcc/testsuite/gcc.c-torture/unsorted/xp.c
-3369544877b ./gcc/testsuite/gcc.c-torture/unsorted/xpp.c
- 687461532b ./gcc/testsuite/gcc.c-torture/unsorted/xs.c
-2453856793b ./gcc/testsuite/gcc.c-torture/unsorted/xsh.c
- 749676174b ./gcc/testsuite/gcc.c-torture/unsorted/xz.c
-3236233174b ./gcc/testsuite/gcc.c-torture/unsorted/xzz.c
-1020735670b ./gcc/testsuite/gcc.dg/20000108-1.c
- 289377156b ./gcc/testsuite/gcc.dg/20000111-1.c
- 441096099b ./gcc/testsuite/gcc.dg/20000609-1.c
- 843859427b ./gcc/testsuite/gcc.dg/20000614-1.c
- 984866335b ./gcc/testsuite/gcc.dg/20000614-2.c
-2687914259b ./gcc/testsuite/gcc.dg/20000623-1.c
-1697494088b ./gcc/testsuite/gcc.dg/20000629-1.c
-2411171658b ./gcc/testsuite/gcc.dg/20000707-1.c
-1242354775b ./gcc/testsuite/gcc.dg/20000715-1.c
-2414727429b ./gcc/testsuite/gcc.dg/20000720-1.c
-2628509241b ./gcc/testsuite/gcc.dg/20000724-1.c
- 855317863b ./gcc/testsuite/gcc.dg/20000807-1.c
-2282190390b ./gcc/testsuite/gcc.dg/20000904-1.c
-1205584698b ./gcc/testsuite/gcc.dg/20000906-1.c
-2401733773b ./gcc/testsuite/gcc.dg/20000926-1.c
- 912559247b ./gcc/testsuite/gcc.dg/20001009-1.c
-4235098888b ./gcc/testsuite/gcc.dg/20001012-1.c
-3084023965b ./gcc/testsuite/gcc.dg/20001012-2.c
-2504286200b ./gcc/testsuite/gcc.dg/20001013-1.c
- 989710521b ./gcc/testsuite/gcc.dg/20001023-1.c
-2648600842b ./gcc/testsuite/gcc.dg/20001101-1.c
- 452608955b ./gcc/testsuite/gcc.dg/20001102-1.c
-2644591049b ./gcc/testsuite/gcc.dg/20001108-1.c
-3796315325b ./gcc/testsuite/gcc.dg/20001116-1.c
- 280677441b ./gcc/testsuite/gcc.dg/20001117-1.c
- 752060605b ./gcc/testsuite/gcc.dg/20001127-1.c
-1243003570b ./gcc/testsuite/gcc.dg/20001201-1.c
-1646064105b ./gcc/testsuite/gcc.dg/20001228-1.c
-2498549558b ./gcc/testsuite/gcc.dg/20010202-1.c
-2616951355b ./gcc/testsuite/gcc.dg/20010405-1.c
-2545788691b ./gcc/testsuite/gcc.dg/20010423-1.c
-3041407018b ./gcc/testsuite/gcc.dg/20010520-1.c
-3520626317b ./gcc/testsuite/gcc.dg/20010622-1.c
-2877988798b ./gcc/testsuite/gcc.dg/20010822-1.c
-2149609410b ./gcc/testsuite/gcc.dg/20010912-1.c
-2349250184b ./gcc/testsuite/gcc.dg/20011008-1.c
-2932858639b ./gcc/testsuite/gcc.dg/20011008-2.c
-2130390160b ./gcc/testsuite/gcc.dg/20011009-1.c
-1094879191b ./gcc/testsuite/gcc.dg/20011015-1.c
-3257749642b ./gcc/testsuite/gcc.dg/20011018-1.c
-1920312928b ./gcc/testsuite/gcc.dg/20011021-1.c
- 707554340b ./gcc/testsuite/gcc.dg/20011029-2.c
-1124303586b ./gcc/testsuite/gcc.dg/20011107-1.c
-3977721072b ./gcc/testsuite/gcc.dg/20011113-1.c
- 43629702b ./gcc/testsuite/gcc.dg/20011119-1.c
-1970395659b ./gcc/testsuite/gcc.dg/20011127-1.c
- 640681704b ./gcc/testsuite/gcc.dg/20011130-1.c
- 715751053b ./gcc/testsuite/gcc.dg/20011214-1.c
-2394786434b ./gcc/testsuite/gcc.dg/20020103-1.c
-2180708198b ./gcc/testsuite/gcc.dg/20020104-1.c
- 98244853b ./gcc/testsuite/gcc.dg/20020108-1.c
- 951724852b ./gcc/testsuite/gcc.dg/20020115-1.c
- 785896302b ./gcc/testsuite/gcc.dg/20020116-1.c
-3842134030b ./gcc/testsuite/gcc.dg/20020116-2.c
-4113077329b ./gcc/testsuite/gcc.dg/20020118-1.c
-3751699275b ./gcc/testsuite/gcc.dg/20020122-1.c
- 150189901b ./gcc/testsuite/gcc.dg/20020122-2.c
- 57782331b ./gcc/testsuite/gcc.dg/20020122-3.c
-2367653115b ./gcc/testsuite/gcc.dg/20020122-4.c
-4139034769b ./gcc/testsuite/gcc.dg/20020201-1.c
- 205098899b ./gcc/testsuite/gcc.dg/20020201-2.c
- 821274050b ./gcc/testsuite/gcc.dg/20020201-3.c
-2936802890b ./gcc/testsuite/gcc.dg/20020201-4.c
-2531686627b ./gcc/testsuite/gcc.dg/20020206-1.c
- 756555090b ./gcc/testsuite/gcc.dg/20020210-1.c
-3546737192b ./gcc/testsuite/gcc.dg/20020218-1.c
-2855726391b ./gcc/testsuite/gcc.dg/20020219-1.c
- 794792782b ./gcc/testsuite/gcc.dg/20020220-1.c
-1662033181b ./gcc/testsuite/gcc.dg/20020220-2.c
-2954578455b ./gcc/testsuite/gcc.dg/20020222-1.c
-2546434352b ./gcc/testsuite/gcc.dg/20020224-1.c
- 627755992b ./gcc/testsuite/gcc.dg/20020304-1.c
-2738421039b ./gcc/testsuite/gcc.dg/20020310-1.c
- 767384458b ./gcc/testsuite/gcc.dg/20020312-1.c
-1632668533b ./gcc/testsuite/gcc.dg/20020312-2.c
-3842300935b ./gcc/testsuite/gcc.dg/20020313-1.c
- 663674028b ./gcc/testsuite/gcc.dg/20020319-1.c
-3802202669b ./gcc/testsuite/gcc.dg/20020326-1.c
- 926713919b ./gcc/testsuite/gcc.dg/20020411-1.c
-2767099233b ./gcc/testsuite/gcc.dg/20020415-1.c
-2427264054b ./gcc/testsuite/gcc.dg/20020416-1.c
-1785651312b ./gcc/testsuite/gcc.dg/20020418-1.c
-1527728757b ./gcc/testsuite/gcc.dg/20020418-2.c
-2088656022b ./gcc/testsuite/gcc.dg/20020426-1.c
-4234050901b ./gcc/testsuite/gcc.dg/20020426-2.c
- 464722125b ./gcc/testsuite/gcc.dg/20020430-1.c
-1745642748b ./gcc/testsuite/gcc.dg/20020503-1.c
-3667555097b ./gcc/testsuite/gcc.dg/20020517-1.c
- 536325431b ./gcc/testsuite/gcc.dg/20020523-1.c
-1463174796b ./gcc/testsuite/gcc.dg/20020527-1.c
-2086765142b ./gcc/testsuite/gcc.dg/20020530-1.c
-1518490714b ./gcc/testsuite/gcc.dg/20020616-1.c
- 344810811b ./gcc/testsuite/gcc.dg/20021014-1.c
-1577979025b ./gcc/testsuite/gcc.dg/920413-1.c
-2176221389b ./gcc/testsuite/gcc.dg/940409-1.c
-1567764883b ./gcc/testsuite/gcc.dg/940510-1.c
-1435563142b ./gcc/testsuite/gcc.dg/951130-1.c
-1414883796b ./gcc/testsuite/gcc.dg/980211-1.c
-1568764691b ./gcc/testsuite/gcc.dg/980217-1.c
- 474510323b ./gcc/testsuite/gcc.dg/980226-1.c
-2630738251b ./gcc/testsuite/gcc.dg/980312-1.c
-2097327868b ./gcc/testsuite/gcc.dg/980313-1.c
- 372605499b ./gcc/testsuite/gcc.dg/980414-1.c
-1500377530b ./gcc/testsuite/gcc.dg/980502-1.c
-1541851881b ./gcc/testsuite/gcc.dg/980520-1.c
-1113123204b ./gcc/testsuite/gcc.dg/980523-1.c
-2389539979b ./gcc/testsuite/gcc.dg/980526-1.c
- 384442948b ./gcc/testsuite/gcc.dg/980709-1.c
-1276688993b ./gcc/testsuite/gcc.dg/980816-1.c
-2659217655b ./gcc/testsuite/gcc.dg/980827-1.c
- 844249748b ./gcc/testsuite/gcc.dg/990117-1.c
-3592792935b ./gcc/testsuite/gcc.dg/990130-1.c
-2565768458b ./gcc/testsuite/gcc.dg/990213-1.c
-2125486048b ./gcc/testsuite/gcc.dg/990213-2.c
- 318703178b ./gcc/testsuite/gcc.dg/990214-1.c
-1614449588b ./gcc/testsuite/gcc.dg/990424-1.c
-1324715064b ./gcc/testsuite/gcc.dg/990506-0.c
- 714032148b ./gcc/testsuite/gcc.dg/990524-1.c
-3071468415b ./gcc/testsuite/gcc.dg/991129-1.c
- 156954019b ./gcc/testsuite/gcc.dg/991209-1.c
-1980057279b ./gcc/testsuite/gcc.dg/991214-1.c
-3370443605b ./gcc/testsuite/gcc.dg/991230-1.c
-3936329118b ./gcc/testsuite/gcc.dg/altivec-1.c
- 79724433b ./gcc/testsuite/gcc.dg/altivec-2.c
- 967922284b ./gcc/testsuite/gcc.dg/altivec-3.c
- 93905551b ./gcc/testsuite/gcc.dg/altivec-4.c
-1274871710b ./gcc/testsuite/gcc.dg/array-1.c
-3861156036b ./gcc/testsuite/gcc.dg/array-2.c
-1410330225b ./gcc/testsuite/gcc.dg/array-3.c
-2440308460b ./gcc/testsuite/gcc.dg/array-4.c
-2233987289b ./gcc/testsuite/gcc.dg/array-5.c
-3636290766b ./gcc/testsuite/gcc.dg/array-6.c
-2814093959b ./gcc/testsuite/gcc.dg/asm-1.c
-3024001214b ./gcc/testsuite/gcc.dg/asm-2.c
-2686162767b ./gcc/testsuite/gcc.dg/asm-3.c
- 339244874b ./gcc/testsuite/gcc.dg/asm-4.c
-2673255882b ./gcc/testsuite/gcc.dg/asm-5.c
-2560291160b ./gcc/testsuite/gcc.dg/asm-fs-1.c
-1287172903b ./gcc/testsuite/gcc.dg/asm-names.c
-2801105283b ./gcc/testsuite/gcc.dg/attr-alwaysinline.c
-1514674985b ./gcc/testsuite/gcc.dg/attr-invalid.c
-1915283314b ./gcc/testsuite/gcc.dg/attr-nest.c
-2689909602b ./gcc/testsuite/gcc.dg/attr-noinline.c
- 745375068b ./gcc/testsuite/gcc.dg/attr-used.c
-3155000092b ./gcc/testsuite/gcc.dg/bconstp-1.c
- 15751103b ./gcc/testsuite/gcc.dg/bf-spl1.c
-1274634279b ./gcc/testsuite/gcc.dg/bitfld-1.c
- 865608720b ./gcc/testsuite/gcc.dg/bitfld-2.c
-2003841110b ./gcc/testsuite/gcc.dg/bitfld-3.c
-1594168367b ./gcc/testsuite/gcc.dg/builtin-choose-expr.c
-2462561678b ./gcc/testsuite/gcc.dg/builtin-prefetch-1.c
-3153387113b ./gcc/testsuite/gcc.dg/c90-arraydecl-1.c
-2243816200b ./gcc/testsuite/gcc.dg/c90-array-lval-1.c
-2768106060b ./gcc/testsuite/gcc.dg/c90-array-lval-2.c
-4098525451b ./gcc/testsuite/gcc.dg/c90-array-lval-3.c
-3655088604b ./gcc/testsuite/gcc.dg/c90-array-lval-4.c
-1572913366b ./gcc/testsuite/gcc.dg/c90-array-lval-5.c
-4018159207b ./gcc/testsuite/gcc.dg/c90-complex-1.c
-3681535923b ./gcc/testsuite/gcc.dg/c90-complit-1.c
-1705314837b ./gcc/testsuite/gcc.dg/c90-const-expr-1.c
- 78994009b ./gcc/testsuite/gcc.dg/c90-const-expr-2.c
- 822031417b ./gcc/testsuite/gcc.dg/c90-const-expr-3.c
-4085555442b ./gcc/testsuite/gcc.dg/c90-digraph-1.c
-3599184840b ./gcc/testsuite/gcc.dg/c90-enum-comma-1.c
-2306764382b ./gcc/testsuite/gcc.dg/c90-float-1.c
- 566533628b ./gcc/testsuite/gcc.dg/c90-fordecl-1.c
-1928391037b ./gcc/testsuite/gcc.dg/c90-hexfloat-1.c
-4124256667b ./gcc/testsuite/gcc.dg/c90-hexfloat-2.c
-2581693818b ./gcc/testsuite/gcc.dg/c90-idem-qual-1.c
-1581289258b ./gcc/testsuite/gcc.dg/c90-impl-decl-1.c
- 440307834b ./gcc/testsuite/gcc.dg/c90-impl-int-1.c
-2344767678b ./gcc/testsuite/gcc.dg/c90-impl-int-2.c
- 970479166b ./gcc/testsuite/gcc.dg/c90-init-1.c
-2729946148b ./gcc/testsuite/gcc.dg/c90-intconst-1.c
-3559700294b ./gcc/testsuite/gcc.dg/c90-longlong-1.c
-3728641939b ./gcc/testsuite/gcc.dg/c90-mixdecl-1.c
- 211178091b ./gcc/testsuite/gcc.dg/c90-restrict-1.c
-3688680206b ./gcc/testsuite/gcc.dg/c90-return-1.c
-1775037086b ./gcc/testsuite/gcc.dg/c90-scope-1.c
-3958618876b ./gcc/testsuite/gcc.dg/c94-digraph-1.c
- 815267755b ./gcc/testsuite/gcc.dg/c99-arraydecl-1.c
-1553286096b ./gcc/testsuite/gcc.dg/c99-array-lval-1.c
- 695388665b ./gcc/testsuite/gcc.dg/c99-array-lval-2.c
- 533861407b ./gcc/testsuite/gcc.dg/c99-array-lval-3.c
-2215212813b ./gcc/testsuite/gcc.dg/c99-array-lval-4.c
-3070583409b ./gcc/testsuite/gcc.dg/c99-array-lval-5.c
-1817213908b ./gcc/testsuite/gcc.dg/c99-array-nonobj-1.c
-1951407439b ./gcc/testsuite/gcc.dg/c99-bool-1.c
-2269932988b ./gcc/testsuite/gcc.dg/c99-complex-1.c
- 820370146b ./gcc/testsuite/gcc.dg/c99-complex-2.c
-3348642281b ./gcc/testsuite/gcc.dg/c99-complit-1.c
-2252128544b ./gcc/testsuite/gcc.dg/c99-complit-2.c
-1355429032b ./gcc/testsuite/gcc.dg/c99-condexpr-1.c
-1666861367b ./gcc/testsuite/gcc.dg/c99-const-expr-1.c
-1567288443b ./gcc/testsuite/gcc.dg/c99-const-expr-2.c
-1530464516b ./gcc/testsuite/gcc.dg/c99-const-expr-3.c
-1067407398b ./gcc/testsuite/gcc.dg/c99-digraph-1.c
- 436400556b ./gcc/testsuite/gcc.dg/c99-enum-comma-1.c
-3680360076b ./gcc/testsuite/gcc.dg/c99-flex-array-1.c
-1133393573b ./gcc/testsuite/gcc.dg/c99-flex-array-2.c
-4185875504b ./gcc/testsuite/gcc.dg/c99-float-1.c
- 553627065b ./gcc/testsuite/gcc.dg/c99-fordecl-1.c
- 561068221b ./gcc/testsuite/gcc.dg/c99-fordecl-2.c
-2859208293b ./gcc/testsuite/gcc.dg/c99-func-1.c
-2626542091b ./gcc/testsuite/gcc.dg/c99-func-2.c
-2857481018b ./gcc/testsuite/gcc.dg/c99-func-3.c
-3824254533b ./gcc/testsuite/gcc.dg/c99-func-4.c
- 403500133b ./gcc/testsuite/gcc.dg/c99-hexfloat-1.c
- 442351990b ./gcc/testsuite/gcc.dg/c99-hexfloat-2.c
-1046797268b ./gcc/testsuite/gcc.dg/c99-idem-qual-1.c
-1293044648b ./gcc/testsuite/gcc.dg/c99-impl-decl-1.c
- 818104690b ./gcc/testsuite/gcc.dg/c99-impl-int-1.c
-2312236475b ./gcc/testsuite/gcc.dg/c99-impl-int-2.c
- 829207642b ./gcc/testsuite/gcc.dg/c99-init-1.c
- 938647013b ./gcc/testsuite/gcc.dg/c99-init-2.c
-3578360837b ./gcc/testsuite/gcc.dg/c99-intconst-1.c
- 336478880b ./gcc/testsuite/gcc.dg/c99-longlong-1.c
-2179124750b ./gcc/testsuite/gcc.dg/c99-main-1.c
-1603510892b ./gcc/testsuite/gcc.dg/c99-mixdecl-1.c
-2789813637b ./gcc/testsuite/gcc.dg/c99-restrict-1.c
-1090698500b ./gcc/testsuite/gcc.dg/c99-return-1.c
-1305485104b ./gcc/testsuite/gcc.dg/c99-scope-1.c
- 328628580b ./gcc/testsuite/gcc.dg/c99-scope-2.c
-1500087630b ./gcc/testsuite/gcc.dg/c99-tag-1.c
-3333661125b ./gcc/testsuite/gcc.dg/cast-qual-1.c
-1853040812b ./gcc/testsuite/gcc.dg/cast-qual-2.c
-3509657813b ./gcc/testsuite/gcc.dg/clobbers.c
-3796475762b ./gcc/testsuite/gcc.dg/compare1.c
- 280070085b ./gcc/testsuite/gcc.dg/compare2.c
-1929905505b ./gcc/testsuite/gcc.dg/compare3.c
-4172088563b ./gcc/testsuite/gcc.dg/compare4.c
-2873193357b ./gcc/testsuite/gcc.dg/compare5.c
-2818358019b ./gcc/testsuite/gcc.dg/complete-port.c
-2444556566b ./gcc/testsuite/gcc.dg/concat.c
- 872352985b ./gcc/testsuite/gcc.dg/conv-1.c
-2296607049b ./gcc/testsuite/gcc.dg/cpp/19921210-1.c
- 446012754b ./gcc/testsuite/gcc.dg/cpp/19930510-1.c
-1310331126b ./gcc/testsuite/gcc.dg/cpp/19940712-1a.h
-1255987496b ./gcc/testsuite/gcc.dg/cpp/19940712-1b.h
-3035400854b ./gcc/testsuite/gcc.dg/cpp/19940712-1.c
-3911462043b ./gcc/testsuite/gcc.dg/cpp/19940712-1.h
-3107147397b ./gcc/testsuite/gcc.dg/cpp/19951025-1.c
-1152006619b ./gcc/testsuite/gcc.dg/cpp/19951227-1.c
-3844252401b ./gcc/testsuite/gcc.dg/cpp/19960224-1.c
-2681484848b ./gcc/testsuite/gcc.dg/cpp/19990119-1.c
- 152529314b ./gcc/testsuite/gcc.dg/cpp/19990228-1.c
-2850976318b ./gcc/testsuite/gcc.dg/cpp/19990407-1.c
-1821165639b ./gcc/testsuite/gcc.dg/cpp/19990409-1.c
-2941995947b ./gcc/testsuite/gcc.dg/cpp/19990413-1.c
-3962958732b ./gcc/testsuite/gcc.dg/cpp/20000127-1.c
-2271984635b ./gcc/testsuite/gcc.dg/cpp/20000129-1.c
-2675766007b ./gcc/testsuite/gcc.dg/cpp/20000207-1.c
-4123239500b ./gcc/testsuite/gcc.dg/cpp/20000207-2.c
-4036437808b ./gcc/testsuite/gcc.dg/cpp/20000209-1.c
-1472416455b ./gcc/testsuite/gcc.dg/cpp/20000209-2.c
-2174334870b ./gcc/testsuite/gcc.dg/cpp/20000301-1.c
-1872528864b ./gcc/testsuite/gcc.dg/cpp/20000419-1.c
-2720098340b ./gcc/testsuite/gcc.dg/cpp/20000519-1.c
- 96666994b ./gcc/testsuite/gcc.dg/cpp/20000529-1.c
-1226501171b ./gcc/testsuite/gcc.dg/cpp/20000625-1.c
-2192746957b ./gcc/testsuite/gcc.dg/cpp/20000625-2.c
-3024473110b ./gcc/testsuite/gcc.dg/cpp/20000627-1.c
-1252878971b ./gcc/testsuite/gcc.dg/cpp/20000628-1a.h
-3176910360b ./gcc/testsuite/gcc.dg/cpp/20000628-1.c
- 302522843b ./gcc/testsuite/gcc.dg/cpp/20000628-1.h
-3939185973b ./gcc/testsuite/gcc.dg/cpp/20000725-1.c
-1092019739b ./gcc/testsuite/gcc.dg/cpp/20020927-1.c
-3918751425b ./gcc/testsuite/gcc.dg/cpp/assembl2.S
-2829543114b ./gcc/testsuite/gcc.dg/cpp/assembler.S
-2692554582b ./gcc/testsuite/gcc.dg/cpp/assert1.c
-3542126362b ./gcc/testsuite/gcc.dg/cpp/assert2.c
-1282180884b ./gcc/testsuite/gcc.dg/cpp/assert3.c
-2600163266b ./gcc/testsuite/gcc.dg/cpp/assert_trad1.c
-4025150262b ./gcc/testsuite/gcc.dg/cpp/assert_trad2.c
-1560406171b ./gcc/testsuite/gcc.dg/cpp/assert_trad3.c
-1134445732b ./gcc/testsuite/gcc.dg/cpp/avoidpaste1.c
-1804955265b ./gcc/testsuite/gcc.dg/cpp/avoidpaste2.c
-1837306227b ./gcc/testsuite/gcc.dg/cpp/backslash2.c
-2909138544b ./gcc/testsuite/gcc.dg/cpp/backslash.c
-1769035451b ./gcc/testsuite/gcc.dg/cpp/c89.c
-3749407486b ./gcc/testsuite/gcc.dg/cpp/c89-pedantic.c
- 925335145b ./gcc/testsuite/gcc.dg/cpp/c94.c
-1510840104b ./gcc/testsuite/gcc.dg/cpp/c94-pedantic.c
-1689064567b ./gcc/testsuite/gcc.dg/cpp/c++98.c
-2939353970b ./gcc/testsuite/gcc.dg/cpp/c++98-pedantic.c
-3857361837b ./gcc/testsuite/gcc.dg/cpp/c99.c
-3306050866b ./gcc/testsuite/gcc.dg/cpp/c99-pedantic.c
-3516322832b ./gcc/testsuite/gcc.dg/cpp/charconst-2.c
- 796483159b ./gcc/testsuite/gcc.dg/cpp/charconst.c
-1491584113b ./gcc/testsuite/gcc.dg/cpp/cmdlne-C2.c
-3355056256b ./gcc/testsuite/gcc.dg/cpp/cmdlne-C.c
-2496993356b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dD.c
- 609905807b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dD-dM.c
-1600174935b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dD-M.c
-3705836802b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dI-M.c
-3088209084b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dI-M.h
-1486055617b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dM.c
-1101687822b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dM-dD.c
- 932524367b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dM-M.c
- 553926808b ./gcc/testsuite/gcc.dg/cpp/cmdlne-dN-M.c
-2953736128b ./gcc/testsuite/gcc.dg/cpp/cmdlne-P.c
-2647411665b ./gcc/testsuite/gcc.dg/cpp/cpp.exp
-3494213157b ./gcc/testsuite/gcc.dg/cpp/cxxcom1.c
-3135164554b ./gcc/testsuite/gcc.dg/cpp/cxxcom2.c
-2496170433b ./gcc/testsuite/gcc.dg/cpp/defined.c
-3663773136b ./gcc/testsuite/gcc.dg/cpp/defined_trad.c
-1438288565b ./gcc/testsuite/gcc.dg/cpp/digraph1.c
-2968203420b ./gcc/testsuite/gcc.dg/cpp/digraph2.c
-2068680422b ./gcc/testsuite/gcc.dg/cpp/digraphs.c
-1984293489b ./gcc/testsuite/gcc.dg/cpp/direct2.c
-3678821918b ./gcc/testsuite/gcc.dg/cpp/direct2s.c
-3290053048b ./gcc/testsuite/gcc.dg/cpp/directiv.c
-3129493545b ./gcc/testsuite/gcc.dg/cpp/endif.c
-3479505545b ./gcc/testsuite/gcc.dg/cpp/endif.h
-2483248350b ./gcc/testsuite/gcc.dg/cpp/escape-1.c
-1730195871b ./gcc/testsuite/gcc.dg/cpp/escape-2.c
-3767981014b ./gcc/testsuite/gcc.dg/cpp/escape.c
-2697913940b ./gcc/testsuite/gcc.dg/cpp/extratokens.c
- 905736b ./gcc/testsuite/gcc.dg/cpp/fpreprocessed.c
-3280737784b ./gcc/testsuite/gcc.dg/cpp/gnuc89.c
- 836196340b ./gcc/testsuite/gcc.dg/cpp/gnuc89-pedantic.c
-1263189585b ./gcc/testsuite/gcc.dg/cpp/gnuc99.c
-1601787549b ./gcc/testsuite/gcc.dg/cpp/gnuc99-pedantic.c
-4214308249b ./gcc/testsuite/gcc.dg/cpp/hash1.c
-1903615326b ./gcc/testsuite/gcc.dg/cpp/hash2.c
-2366342564b ./gcc/testsuite/gcc.dg/cpp/ident.c
-1133669485b ./gcc/testsuite/gcc.dg/cpp/if-1.c
-3352628668b ./gcc/testsuite/gcc.dg/cpp/if-2.c
-1439970428b ./gcc/testsuite/gcc.dg/cpp/if-3.c
- 489101197b ./gcc/testsuite/gcc.dg/cpp/if-4.c
- 882715641b ./gcc/testsuite/gcc.dg/cpp/if-5.c
-3507076303b ./gcc/testsuite/gcc.dg/cpp/if-cexp.c
-2728498877b ./gcc/testsuite/gcc.dg/cpp/if-mop.c
-1281382817b ./gcc/testsuite/gcc.dg/cpp/if-mpar.c
-3079188871b ./gcc/testsuite/gcc.dg/cpp/if-oppr.c
-1490350403b ./gcc/testsuite/gcc.dg/cpp/if-paren.c
-3952218044b ./gcc/testsuite/gcc.dg/cpp/if-sc.c
-2598999845b ./gcc/testsuite/gcc.dg/cpp/if-shift.c
-3593199515b ./gcc/testsuite/gcc.dg/cpp/if-unary.c
-2159210260b ./gcc/testsuite/gcc.dg/cpp/include1.c
-2421188667b ./gcc/testsuite/gcc.dg/cpp/include2.c
- 104604027b ./gcc/testsuite/gcc.dg/cpp/lexident.c
-2395885746b ./gcc/testsuite/gcc.dg/cpp/lexnum.c
-3213919551b ./gcc/testsuite/gcc.dg/cpp/lexstrng.c
-3897829843b ./gcc/testsuite/gcc.dg/cpp/line1.c
- 100687188b ./gcc/testsuite/gcc.dg/cpp/line2.c
- 567370415b ./gcc/testsuite/gcc.dg/cpp/line3.c
-1626475943b ./gcc/testsuite/gcc.dg/cpp/line4.c
-4294705052b ./gcc/testsuite/gcc.dg/cpp/line5.c
-1379729851b ./gcc/testsuite/gcc.dg/cpp/macro10.c
-3340222164b ./gcc/testsuite/gcc.dg/cpp/macro11.c
- 271504116b ./gcc/testsuite/gcc.dg/cpp/macro1.c
-4270051746b ./gcc/testsuite/gcc.dg/cpp/macro2.c
-2969168869b ./gcc/testsuite/gcc.dg/cpp/macro3.c
-1188431715b ./gcc/testsuite/gcc.dg/cpp/macro4.c
-1628527586b ./gcc/testsuite/gcc.dg/cpp/macro5.c
-2368380713b ./gcc/testsuite/gcc.dg/cpp/macro6.c
-2072551274b ./gcc/testsuite/gcc.dg/cpp/macro7.c
- 613805223b ./gcc/testsuite/gcc.dg/cpp/macro8.c
-2926705982b ./gcc/testsuite/gcc.dg/cpp/macro9.c
- 5175037b ./gcc/testsuite/gcc.dg/cpp/macsyntx.c
-3610840456b ./gcc/testsuite/gcc.dg/cpp/mi1.c
-4261701187b ./gcc/testsuite/gcc.dg/cpp/mi1cc.h
- 419074706b ./gcc/testsuite/gcc.dg/cpp/mi1c.h
-3904566528b ./gcc/testsuite/gcc.dg/cpp/mi1nd.h
-3410643645b ./gcc/testsuite/gcc.dg/cpp/mi1ndp.h
-2792742846b ./gcc/testsuite/gcc.dg/cpp/mi1x.h
-2971656236b ./gcc/testsuite/gcc.dg/cpp/mi2a.h
-2249557715b ./gcc/testsuite/gcc.dg/cpp/mi2b.h
-2949078889b ./gcc/testsuite/gcc.dg/cpp/mi2.c
- 975601727b ./gcc/testsuite/gcc.dg/cpp/mi2c.h
-1340631459b ./gcc/testsuite/gcc.dg/cpp/mi3.c
-3410155219b ./gcc/testsuite/gcc.dg/cpp/mi3.def
-1784999780b ./gcc/testsuite/gcc.dg/cpp/mi3.h
-3722098684b ./gcc/testsuite/gcc.dg/cpp/mi4.c
-1150462829b ./gcc/testsuite/gcc.dg/cpp/mi5.c
-1358227252b ./gcc/testsuite/gcc.dg/cpp/mi6a.h
- 641332290b ./gcc/testsuite/gcc.dg/cpp/mi6b.h
-1142195235b ./gcc/testsuite/gcc.dg/cpp/mi6.c
-4070915278b ./gcc/testsuite/gcc.dg/cpp/mi6c.h
-1337479900b ./gcc/testsuite/gcc.dg/cpp/mi6d.h
- 509977090b ./gcc/testsuite/gcc.dg/cpp/mi6e.h
- 68499164b ./gcc/testsuite/gcc.dg/cpp/multiline.c
-2266859121b ./gcc/testsuite/gcc.dg/cpp/paste10.c
-4285709590b ./gcc/testsuite/gcc.dg/cpp/paste11.c
-3149837578b ./gcc/testsuite/gcc.dg/cpp/paste12.c
-3165908728b ./gcc/testsuite/gcc.dg/cpp/paste1.c
-1864172813b ./gcc/testsuite/gcc.dg/cpp/paste2.c
-3026273649b ./gcc/testsuite/gcc.dg/cpp/paste3.c
-3384566195b ./gcc/testsuite/gcc.dg/cpp/paste4.c
-4196513421b ./gcc/testsuite/gcc.dg/cpp/paste5.c
-3141633537b ./gcc/testsuite/gcc.dg/cpp/paste6.c
-2441365564b ./gcc/testsuite/gcc.dg/cpp/paste7.c
-1061671229b ./gcc/testsuite/gcc.dg/cpp/paste8.c
-2408632284b ./gcc/testsuite/gcc.dg/cpp/paste9.c
-1054364467b ./gcc/testsuite/gcc.dg/cpp/poison.c
- 858950276b ./gcc/testsuite/gcc.dg/cpp/pragma-1.c
-3534493797b ./gcc/testsuite/gcc.dg/cpp/_Pragma1.c
-2473416313b ./gcc/testsuite/gcc.dg/cpp/pragma-2.c
-4186091043b ./gcc/testsuite/gcc.dg/cpp/_Pragma2.c
-1230813557b ./gcc/testsuite/gcc.dg/cpp/_Pragma3.c
-3384939096b ./gcc/testsuite/gcc.dg/cpp/_Pragma4.c
-1107840471b ./gcc/testsuite/gcc.dg/cpp/redef1.c
-1601641321b ./gcc/testsuite/gcc.dg/cpp/redef2.c
-2020720031b ./gcc/testsuite/gcc.dg/cpp/skipping2.c
-3846911977b ./gcc/testsuite/gcc.dg/cpp/skipping.c
-3873271528b ./gcc/testsuite/gcc.dg/cpp/spacing1.c
-1299147601b ./gcc/testsuite/gcc.dg/cpp/spacing2.c
-3081823659b ./gcc/testsuite/gcc.dg/cpp/strify1.c
-3973832195b ./gcc/testsuite/gcc.dg/cpp/strify2.c
-2418211010b ./gcc/testsuite/gcc.dg/cpp/strify3.c
-2496189814b ./gcc/testsuite/gcc.dg/cpp/strp1.c
-3609546715b ./gcc/testsuite/gcc.dg/cpp/strp2.c
-3648062425b ./gcc/testsuite/gcc.dg/cpp/syshdr1.h
- 930452060b ./gcc/testsuite/gcc.dg/cpp/syshdr2.h
-2075703559b ./gcc/testsuite/gcc.dg/cpp/syshdr.c
-3898065321b ./gcc/testsuite/gcc.dg/cpp/syshdr.h
-3033820257b ./gcc/testsuite/gcc.dg/cpp/sysmac1.c
-2994610141b ./gcc/testsuite/gcc.dg/cpp/sysmac2.c
-3021818451b ./gcc/testsuite/gcc.dg/cpp/tr-define.c
- 298013196b ./gcc/testsuite/gcc.dg/cpp/tr-direct.c
- 580041869b ./gcc/testsuite/gcc.dg/cpp/trigraphs.c
-3954705973b ./gcc/testsuite/gcc.dg/cpp/tr-paste.c
- 56672469b ./gcc/testsuite/gcc.dg/cpp/tr-sign.c
-2430481737b ./gcc/testsuite/gcc.dg/cpp/tr-str.c
-2720640173b ./gcc/testsuite/gcc.dg/cpp/tr-warn1.c
-4214944447b ./gcc/testsuite/gcc.dg/cpp/tr-warn2.c
-3053015314b ./gcc/testsuite/gcc.dg/cpp/tr-warn3.c
-2634569795b ./gcc/testsuite/gcc.dg/cpp/tr-warn4.c
- 733328423b ./gcc/testsuite/gcc.dg/cpp/tr-warn5.c
- 880495829b ./gcc/testsuite/gcc.dg/cpp/tr-warn6.c
-2894747317b ./gcc/testsuite/gcc.dg/cpp/uchar-1.c
-1961440147b ./gcc/testsuite/gcc.dg/cpp/uchar-2.c
-2806339500b ./gcc/testsuite/gcc.dg/cpp/uchar-3.c
-3156619494b ./gcc/testsuite/gcc.dg/cpp/ucs.c
-1271068491b ./gcc/testsuite/gcc.dg/cpp/unc1.c
-2985690540b ./gcc/testsuite/gcc.dg/cpp/unc2.c
- 479621763b ./gcc/testsuite/gcc.dg/cpp/unc3.c
-1549705287b ./gcc/testsuite/gcc.dg/cpp/unc4.c
-3474810570b ./gcc/testsuite/gcc.dg/cpp/undef1.c
-1052162081b ./gcc/testsuite/gcc.dg/cpp/undef2.c
-1278828881b ./gcc/testsuite/gcc.dg/cpp/vararg1.c
- 270851301b ./gcc/testsuite/gcc.dg/cpp/vararg2.c
- 203701001b ./gcc/testsuite/gcc.dg/cpp/vararg3.c
-2222858341b ./gcc/testsuite/gcc.dg/cpp/vararg4.c
-3684840524b ./gcc/testsuite/gcc.dg/cpp/wchar-1.c
-2112571638b ./gcc/testsuite/gcc.dg/cpp/widestr1.c
-1685485063b ./gcc/testsuite/gcc.dg/cpp/Wtrigraphs.c
-2478073469b ./gcc/testsuite/gcc.dg/debug/20000503-1.c
-1850073884b ./gcc/testsuite/gcc.dg/debug/20010207-1.c
-2575589968b ./gcc/testsuite/gcc.dg/debug/20011223-1.c
-3480555031b ./gcc/testsuite/gcc.dg/debug/20020104-2.c
- 465470758b ./gcc/testsuite/gcc.dg/debug/20020220-1.c
- 38521003b ./gcc/testsuite/gcc.dg/debug/20020224-1.c
-1897254689b ./gcc/testsuite/gcc.dg/debug/20020327-1.c
-2095797855b ./gcc/testsuite/gcc.dg/debug/debug-1.c
- 936371752b ./gcc/testsuite/gcc.dg/debug/debug-2.c
-1466203416b ./gcc/testsuite/gcc.dg/debug/debug-3.c
- 591803753b ./gcc/testsuite/gcc.dg/debug/debug-4.c
- 524177325b ./gcc/testsuite/gcc.dg/debug/debug-5.c
-4017752601b ./gcc/testsuite/gcc.dg/debug/debug-6.c
-2820451029b ./gcc/testsuite/gcc.dg/debug/debug.exp
-3154398188b ./gcc/testsuite/gcc.dg/debug/dwarf2-1.c
-3551380716b ./gcc/testsuite/gcc.dg/debug/dwarf2-2.c
-1865154101b ./gcc/testsuite/gcc.dg/debug/trivial.c
-2108424497b ./gcc/testsuite/gcc.dg/decl-1.c
-2106699188b ./gcc/testsuite/gcc.dg/deprecated.c
- 462220244b ./gcc/testsuite/gcc.dg/dg.exp
-3005671194b ./gcc/testsuite/gcc.dg/divbyzero.c
-3732188130b ./gcc/testsuite/gcc.dg/dll-1.c
-2397785716b ./gcc/testsuite/gcc.dg/dll-2.c
-4107998098b ./gcc/testsuite/gcc.dg/dll-3.c
- 38849204b ./gcc/testsuite/gcc.dg/dll-4.c
-2135186629b ./gcc/testsuite/gcc.dg/enum1.c
-2635594155b ./gcc/testsuite/gcc.dg/ext-glob.c
-3222632325b ./gcc/testsuite/gcc.dg/format/array-1.c
-1862455428b ./gcc/testsuite/gcc.dg/format/attr-1.c
-3131101897b ./gcc/testsuite/gcc.dg/format/attr-2.c
- 884013987b ./gcc/testsuite/gcc.dg/format/attr-3.c
-1282524185b ./gcc/testsuite/gcc.dg/format/attr-4.c
-3309516915b ./gcc/testsuite/gcc.dg/format/attr-5.c
-1342273591b ./gcc/testsuite/gcc.dg/format/attr-6.c
-3314290167b ./gcc/testsuite/gcc.dg/format/attr-7.c
-2805119685b ./gcc/testsuite/gcc.dg/format/branch-1.c
- 753102824b ./gcc/testsuite/gcc.dg/format/builtin-1.c
-1458645895b ./gcc/testsuite/gcc.dg/format/c90-printf-1.c
-2152399739b ./gcc/testsuite/gcc.dg/format/c90-printf-2.c
- 576410250b ./gcc/testsuite/gcc.dg/format/c90-printf-3.c
-1600984968b ./gcc/testsuite/gcc.dg/format/c90-scanf-1.c
- 461393812b ./gcc/testsuite/gcc.dg/format/c90-scanf-2.c
-2607652439b ./gcc/testsuite/gcc.dg/format/c90-scanf-3.c
-2060901849b ./gcc/testsuite/gcc.dg/format/c90-scanf-4.c
-3830240101b ./gcc/testsuite/gcc.dg/format/c90-strftime-1.c
- 908665911b ./gcc/testsuite/gcc.dg/format/c90-strftime-2.c
-2447449665b ./gcc/testsuite/gcc.dg/format/c94-printf-1.c
-1772682986b ./gcc/testsuite/gcc.dg/format/c94-scanf-1.c
-2398886219b ./gcc/testsuite/gcc.dg/format/c99-printf-1.c
-1982196060b ./gcc/testsuite/gcc.dg/format/c99-printf-2.c
-3845709577b ./gcc/testsuite/gcc.dg/format/c99-printf-3.c
- 842927031b ./gcc/testsuite/gcc.dg/format/c99-scanf-1.c
-3735460767b ./gcc/testsuite/gcc.dg/format/c99-scanf-2.c
-3432916856b ./gcc/testsuite/gcc.dg/format/c99-scanf-3.c
-3177298628b ./gcc/testsuite/gcc.dg/format/c99-strftime-1.c
-2090637496b ./gcc/testsuite/gcc.dg/format/c99-strftime-2.c
-2345337374b ./gcc/testsuite/gcc.dg/format/diag-1.c
-1250738052b ./gcc/testsuite/gcc.dg/format/errmk-1.c
-1927556152b ./gcc/testsuite/gcc.dg/format/ext-1.c
- 230043853b ./gcc/testsuite/gcc.dg/format/ext-2.c
-3735744313b ./gcc/testsuite/gcc.dg/format/ext-3.c
-2712114535b ./gcc/testsuite/gcc.dg/format/ext-4.c
-3870005152b ./gcc/testsuite/gcc.dg/format/ext-5.c
-4154438977b ./gcc/testsuite/gcc.dg/format/ext-6.c
- 174407969b ./gcc/testsuite/gcc.dg/format/format.exp
-2650327793b ./gcc/testsuite/gcc.dg/format/format.h
-3030055438b ./gcc/testsuite/gcc.dg/format/miss-1.c
- 58040071b ./gcc/testsuite/gcc.dg/format/miss-2.c
-1680800961b ./gcc/testsuite/gcc.dg/format/multattr-1.c
-3511814217b ./gcc/testsuite/gcc.dg/format/multattr-2.c
-1621224881b ./gcc/testsuite/gcc.dg/format/multattr-3.c
-2482792163b ./gcc/testsuite/gcc.dg/format/no-exargs-1.c
-3432514252b ./gcc/testsuite/gcc.dg/format/no-exargs-2.c
-2335984266b ./gcc/testsuite/gcc.dg/format/nonlit-1.c
-3055177111b ./gcc/testsuite/gcc.dg/format/nonlit-2.c
- 449451912b ./gcc/testsuite/gcc.dg/format/nonlit-3.c
-4199776146b ./gcc/testsuite/gcc.dg/format/no-y2k-1.c
-3652642152b ./gcc/testsuite/gcc.dg/format/plus-1.c
-2673114039b ./gcc/testsuite/gcc.dg/format/sec-1.c
-1815893280b ./gcc/testsuite/gcc.dg/format/strfmon-1.c
- 821372176b ./gcc/testsuite/gcc.dg/format/va-1.c
- 358822374b ./gcc/testsuite/gcc.dg/format/warnll-1.c
-3962912739b ./gcc/testsuite/gcc.dg/format/xopen-1.c
- 73044124b ./gcc/testsuite/gcc.dg/format/z-1.c
- 745582715b ./gcc/testsuite/gcc.dg/gnu89-init-1.c
- 339065893b ./gcc/testsuite/gcc.dg/gnu89-init-2.c
-1770671475b ./gcc/testsuite/gcc.dg/gnu99-init-1.c
- 885923224b ./gcc/testsuite/gcc.dg/i386-387-1.c
-4204057333b ./gcc/testsuite/gcc.dg/i386-387-2.c
-3371905361b ./gcc/testsuite/gcc.dg/i386-bitfield1.c
-2049230625b ./gcc/testsuite/gcc.dg/i386-mmx-1.c
-3973906625b ./gcc/testsuite/gcc.dg/i386-mmx-2.c
-2923520039b ./gcc/testsuite/gcc.dg/i386-sse-1.c
-1935024742b ./gcc/testsuite/gcc.dg/i386-sse-2.c
-2407665653b ./gcc/testsuite/gcc.dg/i386-sse-3.c
- 646600080b ./gcc/testsuite/gcc.dg/ia64-asm-1.c
-2995485298b ./gcc/testsuite/gcc.dg/ia64-sync-1.c
- 72205644b ./gcc/testsuite/gcc.dg/ia64-sync-2.c
-1374850312b ./gcc/testsuite/gcc.dg/ifelse-1.c
-4085178572b ./gcc/testsuite/gcc.dg/iftrap-1.c
- 448418366b ./gcc/testsuite/gcc.dg/iftrap-2.c
-3685495880b ./gcc/testsuite/gcc.dg/inline-1.c
- 6005157b ./gcc/testsuite/gcc.dg/inline-2.c
- 247919548b ./gcc/testsuite/gcc.dg/loop-1.c
-2954420820b ./gcc/testsuite/gcc.dg/mmix-1.c
-2663557248b ./gcc/testsuite/gcc.dg/m-un-1.c
-2341407016b ./gcc/testsuite/gcc.dg/m-un-2.c
- 167742958b ./gcc/testsuite/gcc.dg/no-builtin-1.c
-2208318132b ./gcc/testsuite/gcc.dg/noncompile/20000901-1.c
-3562764821b ./gcc/testsuite/gcc.dg/noncompile/20001228-1.c
- 677199841b ./gcc/testsuite/gcc.dg/noncompile/20010425-1.c
- 100652056b ./gcc/testsuite/gcc.dg/noncompile/20010524-1.c
- 292530438b ./gcc/testsuite/gcc.dg/noncompile/20011025-1.c
-3164469142b ./gcc/testsuite/gcc.dg/noncompile/20020130-1.c
-3055182962b ./gcc/testsuite/gcc.dg/noncompile/20020207-1.c
-3889627347b ./gcc/testsuite/gcc.dg/noncompile/20020213-1.c
-1457569280b ./gcc/testsuite/gcc.dg/noncompile/20020220-1.c
-2964160251b ./gcc/testsuite/gcc.dg/noncompile/920507-1.c
-2161867266b ./gcc/testsuite/gcc.dg/noncompile/920616-2.c
-1449844754b ./gcc/testsuite/gcc.dg/noncompile/920721-2.c
-2834384944b ./gcc/testsuite/gcc.dg/noncompile/920824-1.c
-3955955814b ./gcc/testsuite/gcc.dg/noncompile/920923-1.c
-3162370830b ./gcc/testsuite/gcc.dg/noncompile/921102-1.c
-2258888666b ./gcc/testsuite/gcc.dg/noncompile/921116-1.c
-4097035630b ./gcc/testsuite/gcc.dg/noncompile/930301-1.c
- 840634782b ./gcc/testsuite/gcc.dg/noncompile/930622-1.c
-3660680341b ./gcc/testsuite/gcc.dg/noncompile/930622-2.c
- 181482966b ./gcc/testsuite/gcc.dg/noncompile/930714-1.c
-3515814095b ./gcc/testsuite/gcc.dg/noncompile/931203-1.c
-3543956028b ./gcc/testsuite/gcc.dg/noncompile/940112-1.c
-3064722803b ./gcc/testsuite/gcc.dg/noncompile/940227-1.c
- 667278578b ./gcc/testsuite/gcc.dg/noncompile/950825-1.c
- 759990906b ./gcc/testsuite/gcc.dg/noncompile/950921-1.c
-1191362120b ./gcc/testsuite/gcc.dg/noncompile/951123-1.c
-3560178109b ./gcc/testsuite/gcc.dg/noncompile/971104-1.c
-3188649114b ./gcc/testsuite/gcc.dg/noncompile/990416-1.c
-3596296296b ./gcc/testsuite/gcc.dg/noncompile/const-ll-1.c
-1128187562b ./gcc/testsuite/gcc.dg/noncompile/init-1.c
-2927938029b ./gcc/testsuite/gcc.dg/noncompile/init-2.c
-4011814030b ./gcc/testsuite/gcc.dg/noncompile/init-3.c
- 835046904b ./gcc/testsuite/gcc.dg/noncompile/invalid_asm.c
-3441206096b ./gcc/testsuite/gcc.dg/noncompile/label-lineno-1.c
- 348329041b ./gcc/testsuite/gcc.dg/noncompile/noncompile.exp
-3105423709b ./gcc/testsuite/gcc.dg/noncompile/redecl-1.c
-1781438824b ./gcc/testsuite/gcc.dg/noncompile/va-arg-1.c
-3381135030b ./gcc/testsuite/gcc.dg/noncompile/voidparam-1.c
-1329170478b ./gcc/testsuite/gcc.dg/noreturn-1.c
-2267400179b ./gcc/testsuite/gcc.dg/noreturn-2.c
-1222476594b ./gcc/testsuite/gcc.dg/noreturn-3.c
-4260549149b ./gcc/testsuite/gcc.dg/noreturn-4.c
-1662299957b ./gcc/testsuite/gcc.dg/pack-test-1.c
-2754082325b ./gcc/testsuite/gcc.dg/pack-test-1.h
-2875409621b ./gcc/testsuite/gcc.dg/pack-test-2.c
-3395691298b ./gcc/testsuite/gcc.dg/pragma-align.c
-2976918557b ./gcc/testsuite/gcc.dg/pragma-darwin.c
- 967979463b ./gcc/testsuite/gcc.dg/pragma-ep-1.c
- 689657683b ./gcc/testsuite/gcc.dg/pragma-ep-2.c
- 375277958b ./gcc/testsuite/gcc.dg/pragma-ep-3.c
- 18511022b ./gcc/testsuite/gcc.dg/pragma-re-1.c
-3911201539b ./gcc/testsuite/gcc.dg/pragma-re-2.c
-3011001240b ./gcc/testsuite/gcc.dg/qual-return-1.c
-4111880764b ./gcc/testsuite/gcc.dg/qual-return-2.c
-2426423235b ./gcc/testsuite/gcc.dg/README
-2127458656b ./gcc/testsuite/gcc.dg/return-type-1.c
-3519355790b ./gcc/testsuite/gcc.dg/return-type-2.c
-3862146754b ./gcc/testsuite/gcc.dg/sequence-pt-1.c
-3997091992b ./gcc/testsuite/gcc.dg/setjmp-1.c
- 802040009b ./gcc/testsuite/gcc.dg/sparc-ret.c
-1993113484b ./gcc/testsuite/gcc.dg/special/20000419-2.c
-3430419731b ./gcc/testsuite/gcc.dg/special/alias-1.c
- 7306739b ./gcc/testsuite/gcc.dg/special/alias-2.c
- 371725929b ./gcc/testsuite/gcc.dg/special/ecos.exp
-4212112354b ./gcc/testsuite/gcc.dg/special/gcsec-1.c
- 274062869b ./gcc/testsuite/gcc.dg/special/special.exp
-3422703148b ./gcc/testsuite/gcc.dg/special/weak-1a.c
-2943372070b ./gcc/testsuite/gcc.dg/special/weak-1.c
- 389288806b ./gcc/testsuite/gcc.dg/special/weak-2a.c
-3422703148b ./gcc/testsuite/gcc.dg/special/weak-2b.c
-3142421222b ./gcc/testsuite/gcc.dg/special/weak-2.c
-2222470584b ./gcc/testsuite/gcc.dg/special/wkali-1.c
- 206085145b ./gcc/testsuite/gcc.dg/special/wkali-2a.c
-2277202182b ./gcc/testsuite/gcc.dg/special/wkali-2b.c
-3142421222b ./gcc/testsuite/gcc.dg/special/wkali-2.c
-1648410279b ./gcc/testsuite/gcc.dg/splet-1.c
- 276809676b ./gcc/testsuite/gcc.dg/struct-alias-1.c
-2735438447b ./gcc/testsuite/gcc.dg/struct-by-value-1.c
- 935614314b ./gcc/testsuite/gcc.dg/struct-ret-1.c
-1932500816b ./gcc/testsuite/gcc.dg/struct-ret-2.c
- 548999932b ./gcc/testsuite/gcc.dg/switch-1.c
-1141366394b ./gcc/testsuite/gcc.dg/trunc-1.c
-1890682509b ./gcc/testsuite/gcc.dg/typedef-init.c
-1892637986b ./gcc/testsuite/gcc.dg/typeof-1.c
-4017319276b ./gcc/testsuite/gcc.dg/typeof-2.c
-1860858242b ./gcc/testsuite/gcc.dg/ultrasp1.c
- 789972216b ./gcc/testsuite/gcc.dg/ultrasp2.c
-2708772692b ./gcc/testsuite/gcc.dg/ultrasp3.c
-1890424464b ./gcc/testsuite/gcc.dg/ultrasp4.c
-2258658308b ./gcc/testsuite/gcc.dg/uninit-1.c
- 608086310b ./gcc/testsuite/gcc.dg/uninit-2.c
-2219873069b ./gcc/testsuite/gcc.dg/uninit-3.c
-3153724678b ./gcc/testsuite/gcc.dg/uninit-4.c
-2761916267b ./gcc/testsuite/gcc.dg/uninit-5.c
-4187609695b ./gcc/testsuite/gcc.dg/uninit-6.c
-3846997492b ./gcc/testsuite/gcc.dg/uninit-8.c
- 390912088b ./gcc/testsuite/gcc.dg/uninit-9.c
-4065754561b ./gcc/testsuite/gcc.dg/uninit-A.c
-3967573468b ./gcc/testsuite/gcc.dg/uninit-B.c
- 977726966b ./gcc/testsuite/gcc.dg/unused-1.c
-3484455791b ./gcc/testsuite/gcc.dg/unused-2.c
- 865910481b ./gcc/testsuite/gcc.dg/unused-3.c
-3706472995b ./gcc/testsuite/gcc.dg/va-arg-1.c
-2932877249b ./gcc/testsuite/gcc.dg/verbose-asm.c
-3017845162b ./gcc/testsuite/gcc.dg/vla-2.c
-2427295047b ./gcc/testsuite/gcc.dg/vla-init-1.c
-2228363679b ./gcc/testsuite/gcc.dg/wchar_t-1.c
- 943771070b ./gcc/testsuite/gcc.dg/Wconversion.c
-2603701000b ./gcc/testsuite/gcc.dg/weak-1.c
-2107795305b ./gcc/testsuite/gcc.dg/weak-2.c
-2916280352b ./gcc/testsuite/gcc.dg/weak-3.c
- 190723555b ./gcc/testsuite/gcc.dg/weak-4.c
- 176100891b ./gcc/testsuite/gcc.dg/weak-5.c
-1022686552b ./gcc/testsuite/gcc.dg/weak-6.c
- 789089149b ./gcc/testsuite/gcc.dg/weak-7.c
-2849791540b ./gcc/testsuite/gcc.dg/weak-9.c
- 455748560b ./gcc/testsuite/gcc.dg/wint_t-1.c
-3364645726b ./gcc/testsuite/gcc.dg/Wlarger-than.c
-3791055151b ./gcc/testsuite/gcc.dg/Wparentheses-1.c
-3316229121b ./gcc/testsuite/gcc.dg/Wreturn-type2.c
-2809247827b ./gcc/testsuite/gcc.dg/Wreturn-type.c
-3907876407b ./gcc/testsuite/gcc.dg/Wshadow-1.c
-3928913400b ./gcc/testsuite/gcc.dg/Wswitch-2.c
- 49151727b ./gcc/testsuite/gcc.dg/Wswitch.c
-1217899241b ./gcc/testsuite/gcc.dg/wtr-aggr-init-1.c
-3348015737b ./gcc/testsuite/gcc.dg/wtr-conversion-1.c
-3943648306b ./gcc/testsuite/gcc.dg/wtr-escape-1.c
-1258505090b ./gcc/testsuite/gcc.dg/wtr-int-type-1.c
-2927503050b ./gcc/testsuite/gcc.dg/wtr-label-1.c
-2138480914b ./gcc/testsuite/gcc.dg/wtr-static-1.c
-3063513729b ./gcc/testsuite/gcc.dg/wtr-strcat-1.c
-2559544004b ./gcc/testsuite/gcc.dg/wtr-suffix-1.c
-2920370985b ./gcc/testsuite/gcc.dg/wtr-switch-1.c
- 569838363b ./gcc/testsuite/gcc.dg/wtr-unary-plus-1.c
-1007453610b ./gcc/testsuite/gcc.dg/wtr-union-init-1.c
-1817815277b ./gcc/testsuite/gcc.dg/wtr-union-init-2.c
-3147738885b ./gcc/testsuite/gcc.dg/wtr-union-init-3.c
-2078992029b ./gcc/testsuite/gcc.dg/Wunknownprag.c
-1674197654b ./gcc/testsuite/gcc.dg/Wunreachable-1.c
-3581949676b ./gcc/testsuite/gcc.dg/Wunreachable-2.c
-1769759078b ./gcc/testsuite/gcc.misc-tests/acker1.c
-1443030966b ./gcc/testsuite/gcc.misc-tests/acker1.exp
- 278378178b ./gcc/testsuite/gcc.misc-tests/arm-isr.c
-1193019601b ./gcc/testsuite/gcc.misc-tests/arm-isr.exp
-2075376861b ./gcc/testsuite/gcc.misc-tests/bprob-1.c
-3293027214b ./gcc/testsuite/gcc.misc-tests/bprob-2.c
-2453911973b ./gcc/testsuite/gcc.misc-tests/bprob.exp
- 865542926b ./gcc/testsuite/gcc.misc-tests/dg-10.c
-2063159250b ./gcc/testsuite/gcc.misc-tests/dg-11.c
- 33043738b ./gcc/testsuite/gcc.misc-tests/dg-12.c
- 730919505b ./gcc/testsuite/gcc.misc-tests/dg-1.c
-3096773472b ./gcc/testsuite/gcc.misc-tests/dg-2.c
-3661115972b ./gcc/testsuite/gcc.misc-tests/dg-3.c
-3160178728b ./gcc/testsuite/gcc.misc-tests/dg-4.c
-2494962233b ./gcc/testsuite/gcc.misc-tests/dg-5.c
-2938473505b ./gcc/testsuite/gcc.misc-tests/dg-6.c
-3402935282b ./gcc/testsuite/gcc.misc-tests/dg-7.c
-1050718588b ./gcc/testsuite/gcc.misc-tests/dg-8.c
-1666656352b ./gcc/testsuite/gcc.misc-tests/dg-9.c
-1706908915b ./gcc/testsuite/gcc.misc-tests/dg-test.exp
-1483515495b ./gcc/testsuite/gcc.misc-tests/dhry.c
-1824463967b ./gcc/testsuite/gcc.misc-tests/dhry.exp
- 208907585b ./gcc/testsuite/gcc.misc-tests/dhry.h
- 779830061b ./gcc/testsuite/gcc.misc-tests/gcov-1.c
-3193043874b ./gcc/testsuite/gcc.misc-tests/gcov-2.c
-4211514085b ./gcc/testsuite/gcc.misc-tests/gcov-3.c
- 527032712b ./gcc/testsuite/gcc.misc-tests/gcov-4b.c
-3346981345b ./gcc/testsuite/gcc.misc-tests/gcov-4b.x
-3919110722b ./gcc/testsuite/gcc.misc-tests/gcov-4.c
- 695277662b ./gcc/testsuite/gcc.misc-tests/gcov-5b.c
-3346981345b ./gcc/testsuite/gcc.misc-tests/gcov-5b.x
- 790797496b ./gcc/testsuite/gcc.misc-tests/gcov-6.c
-2262587727b ./gcc/testsuite/gcc.misc-tests/gcov-6.x
-2647301947b ./gcc/testsuite/gcc.misc-tests/gcov-7.c
-2262587727b ./gcc/testsuite/gcc.misc-tests/gcov-7.x
- 283921131b ./gcc/testsuite/gcc.misc-tests/gcov.exp
-1258478426b ./gcc/testsuite/gcc.misc-tests/i386-pf-3dnow-1.c
-3346801828b ./gcc/testsuite/gcc.misc-tests/i386-pf-athlon-1.c
-2266643451b ./gcc/testsuite/gcc.misc-tests/i386-pf-none-1.c
-2697809529b ./gcc/testsuite/gcc.misc-tests/i386-pf-sse-1.c
-2256410310b ./gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
-1392461362b ./gcc/testsuite/gcc.misc-tests/linkage.exp
-2071381157b ./gcc/testsuite/gcc.misc-tests/linkage-x.c
-3975807378b ./gcc/testsuite/gcc.misc-tests/linkage-y.c
-2874350784b ./gcc/testsuite/gcc.misc-tests/matrix1.c
-1686589144b ./gcc/testsuite/gcc.misc-tests/matrix1.exp
-1813429392b ./gcc/testsuite/gcc.misc-tests/mg.c
-1868251641b ./gcc/testsuite/gcc.misc-tests/mg.exp
-1983153897b ./gcc/testsuite/gcc.misc-tests/sieve.c
-3220093576b ./gcc/testsuite/gcc.misc-tests/sieve.exp
-4235385594b ./gcc/testsuite/gcc.misc-tests/sort2.c
- 232815709b ./gcc/testsuite/gcc.misc-tests/sort2.exp
- 885716516b ./gcc/testsuite/g++.dg/abi/bitfield1.C
- 479436735b ./gcc/testsuite/g++.dg/abi/bitfield2.C
-3225280346b ./gcc/testsuite/g++.dg/abi/bitfield3.C
-1735502164b ./gcc/testsuite/g++.dg/abi/bitfield5.C
- 257517025b ./gcc/testsuite/g++.dg/abi/empty4.C
-2703592525b ./gcc/testsuite/g++.dg/abi/enum1.C
-3235702061b ./gcc/testsuite/g++.dg/abi/layout1.C
-4006829604b ./gcc/testsuite/g++.dg/abi/layout2.C
-2689331463b ./gcc/testsuite/g++.dg/abi/mangle11.C
- 356153643b ./gcc/testsuite/g++.dg/abi/mangle14.C
- 238964482b ./gcc/testsuite/g++.dg/abi/mangle17.C
-4166781498b ./gcc/testsuite/g++.dg/abi/mangle1.C
-4182318030b ./gcc/testsuite/g++.dg/abi/mangle2.C
-1755377648b ./gcc/testsuite/g++.dg/abi/mangle3.C
-3981957296b ./gcc/testsuite/g++.dg/abi/mangle4.C
-4052214936b ./gcc/testsuite/g++.dg/abi/mangle5.C
- 31392269b ./gcc/testsuite/g++.dg/abi/mangle6.C
-1724007624b ./gcc/testsuite/g++.dg/abi/mangle7.C
- 638258652b ./gcc/testsuite/g++.dg/abi/mangle8.C
-1969970486b ./gcc/testsuite/g++.dg/abi/offsetof.C
-2141080121b ./gcc/testsuite/g++.dg/abi/rtti1.C
-1053392201b ./gcc/testsuite/g++.dg/abi/vbase10.C
- 20126271b ./gcc/testsuite/g++.dg/abi/vbase1.C
-1286609512b ./gcc/testsuite/g++.dg/abi/vbase8-10.C
-3227029100b ./gcc/testsuite/g++.dg/abi/vbase8-21.C
-1921427599b ./gcc/testsuite/g++.dg/abi/vbase8-22.C
-3728366429b ./gcc/testsuite/g++.dg/abi/vbase8-4.C
-2997752155b ./gcc/testsuite/g++.dg/abi/vbase9.C
-4073115738b ./gcc/testsuite/g++.dg/abi/vthunk1.C
-1740237496b ./gcc/testsuite/g++.dg/debug/debug1.C
-1473360233b ./gcc/testsuite/g++.dg/debug/debug2.C
-4057306503b ./gcc/testsuite/g++.dg/debug/debug3.C
-4063448821b ./gcc/testsuite/g++.dg/debug/debug4.C
-2101587412b ./gcc/testsuite/g++.dg/debug/debug5.C
-2910185760b ./gcc/testsuite/g++.dg/debug/debug6.C
-2476891002b ./gcc/testsuite/g++.dg/debug/debug7.C
-1949293295b ./gcc/testsuite/g++.dg/debug/debug.exp
-1865154101b ./gcc/testsuite/g++.dg/debug/trivial.C
-2006018373b ./gcc/testsuite/g++.dg/dg.exp
- 65538524b ./gcc/testsuite/g++.dg/eh/ctor1.C
-3380022165b ./gcc/testsuite/g++.dg/eh/dead1.C
-2307599878b ./gcc/testsuite/g++.dg/eh/dtor1.C
-3289569863b ./gcc/testsuite/g++.dg/eh/filter1.C
-1460645953b ./gcc/testsuite/g++.dg/eh/filter2.C
- 507841710b ./gcc/testsuite/g++.dg/eh/loop1.C
-4035633334b ./gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
-1888049158b ./gcc/testsuite/g++.dg/eh/registers1.C
-2204781248b ./gcc/testsuite/g++.dg/eh/spec1.C
- 985744667b ./gcc/testsuite/g++.dg/eh/synth1.C
-2213107508b ./gcc/testsuite/g++.dg/eh/template1.C
-3379396295b ./gcc/testsuite/g++.dg/eh/template2.C
-1789254796b ./gcc/testsuite/g++.dg/eh/unexpected1.C
- 880147168b ./gcc/testsuite/g++.dg/expr/cond1.C
- 10818138b ./gcc/testsuite/g++.dg/ext/align1.C
-4214519942b ./gcc/testsuite/g++.dg/ext/attrib1.C
-2242814507b ./gcc/testsuite/g++.dg/ext/attrib2.C
-2606851845b ./gcc/testsuite/g++.dg/ext/attrib3.C
-3822844850b ./gcc/testsuite/g++.dg/ext/attrib4.C
- 783893625b ./gcc/testsuite/g++.dg/ext/attrib5.C
-2703749043b ./gcc/testsuite/g++.dg/ext/conv1.C
-4165742225b ./gcc/testsuite/g++.dg/ext/forscope1.C
-4019239529b ./gcc/testsuite/g++.dg/ext/forscope2.C
-2832497986b ./gcc/testsuite/g++.dg/ext/instantiate1.C
-1033795910b ./gcc/testsuite/g++.dg/ext/instantiate2.C
- 631460058b ./gcc/testsuite/g++.dg/ext/instantiate3.C
- 433892339b ./gcc/testsuite/g++.dg/ext/lvalue1.C
-1765466377b ./gcc/testsuite/g++.dg/ext/member-attr.C
- 714299152b ./gcc/testsuite/g++.dg/ext/typedef-init.C
-3028501104b ./gcc/testsuite/g++.dg/ext/typeof1.C
-2139267109b ./gcc/testsuite/g++.dg/ext/typeof2.C
-3384117993b ./gcc/testsuite/g++.dg/ext/vla1.C
-4261072225b ./gcc/testsuite/g++.dg/ext/vlm1.C
- 546216042b ./gcc/testsuite/g++.dg/ext/vlm2.C
-2576905511b ./gcc/testsuite/g++.dg/inherit/access1.C
-3833575012b ./gcc/testsuite/g++.dg/inherit/access2.C
-3439912284b ./gcc/testsuite/g++.dg/inherit/base1.C
-2309234518b ./gcc/testsuite/g++.dg/inherit/namespace-as-base.C
-4167951109b ./gcc/testsuite/g++.dg/inherit/null1.C
-3799679971b ./gcc/testsuite/g++.dg/inherit/using1.C
-2391219706b ./gcc/testsuite/g++.dg/inherit/using3.C
-3967911027b ./gcc/testsuite/g++.dg/init/array1.C
-3157994593b ./gcc/testsuite/g++.dg/init/array2.C
-2628461993b ./gcc/testsuite/g++.dg/init/array4.C
- 267149531b ./gcc/testsuite/g++.dg/init/array5.C
-3220934948b ./gcc/testsuite/g++.dg/init/array7.C
- 486682064b ./gcc/testsuite/g++.dg/init/copy1.C
-1741245578b ./gcc/testsuite/g++.dg/init/dtor1.C
- 356489409b ./gcc/testsuite/g++.dg/init/dtor2.C
- 486760656b ./gcc/testsuite/g++.dg/init/elide1.C
-2797496870b ./gcc/testsuite/g++.dg/init/empty1.C
-2640181867b ./gcc/testsuite/g++.dg/init/init-ref1.C
-3275947242b ./gcc/testsuite/g++.dg/init/init-ref2.C
-1678560039b ./gcc/testsuite/g++.dg/init/new1.C
-4033502091b ./gcc/testsuite/g++.dg/init/new2.C
-1385694165b ./gcc/testsuite/g++.dg/init/pm1.C
- 766167426b ./gcc/testsuite/g++.dg/lookup/pretty1.C
- 684033142b ./gcc/testsuite/g++.dg/lookup/struct1.C
-3358174935b ./gcc/testsuite/g++.dg/lookup/using2.C
-3384907788b ./gcc/testsuite/g++.dg/lookup/using.C
- 421486798b ./gcc/testsuite/g++.dg/opt/alias1.C
-3198583204b ./gcc/testsuite/g++.dg/opt/alias2.C
-1878509122b ./gcc/testsuite/g++.dg/opt/anonunion1.C
- 845836056b ./gcc/testsuite/g++.dg/opt/asm1.C
-1484527337b ./gcc/testsuite/g++.dg/opt/cleanup1.C
-3120356664b ./gcc/testsuite/g++.dg/opt/conj1.C
-4054451892b ./gcc/testsuite/g++.dg/opt/conj2.C
-2033783153b ./gcc/testsuite/g++.dg/opt/const1.C
- 975231214b ./gcc/testsuite/g++.dg/opt/const2.C
-2113737922b ./gcc/testsuite/g++.dg/opt/cse1.C
-1501006084b ./gcc/testsuite/g++.dg/opt/cse2.C
-1685294627b ./gcc/testsuite/g++.dg/opt/dtor1.C
-3770486737b ./gcc/testsuite/g++.dg/opt/inline1.C
-2869206713b ./gcc/testsuite/g++.dg/opt/inline2.C
-3194356521b ./gcc/testsuite/g++.dg/opt/inline3.C
- 373643534b ./gcc/testsuite/g++.dg/opt/local1.C
-3146403914b ./gcc/testsuite/g++.dg/opt/longbranch1.C
-2026702440b ./gcc/testsuite/g++.dg/opt/mmx1.C
-2857034604b ./gcc/testsuite/g++.dg/opt/nrv1.C
-2448700667b ./gcc/testsuite/g++.dg/opt/nrv2.C
- 442892442b ./gcc/testsuite/g++.dg/opt/preinc1.C
-1496969096b ./gcc/testsuite/g++.dg/opt/ptrintsum1.C
- 571185401b ./gcc/testsuite/g++.dg/opt/reg-stack.C
-1557651694b ./gcc/testsuite/g++.dg/opt/reload1.C
-1124740865b ./gcc/testsuite/g++.dg/opt/static1.C
- 684782459b ./gcc/testsuite/g++.dg/opt/static2.C
-4154721541b ./gcc/testsuite/g++.dg/opt/thunk1.C
-4029726050b ./gcc/testsuite/g++.dg/opt/vt1.C
- 135165742b ./gcc/testsuite/g++.dg/opt/vtgc1.C
- 686527483b ./gcc/testsuite/g++.dg/other/access1.C
-3285252373b ./gcc/testsuite/g++.dg/other/anon2.C
- 681497421b ./gcc/testsuite/g++.dg/other/anon-struct.C
-1585173858b ./gcc/testsuite/g++.dg/other/anon-union.C
-1233509973b ./gcc/testsuite/g++.dg/other/array1.C
-2359273471b ./gcc/testsuite/g++.dg/other/big-struct.C
-2708764484b ./gcc/testsuite/g++.dg/other/classkey1.C
- 867943500b ./gcc/testsuite/g++.dg/other/component1.C
-4045861590b ./gcc/testsuite/g++.dg/other/const1.C
- 109747091b ./gcc/testsuite/g++.dg/other/const2.C
-3254620469b ./gcc/testsuite/g++.dg/other/copy1.C
-4162972212b ./gcc/testsuite/g++.dg/other/cxa-atexit1.C
-1287592684b ./gcc/testsuite/g++.dg/other/deprecated.C
-1127806654b ./gcc/testsuite/g++.dg/other/enum1.C
-3062339491b ./gcc/testsuite/g++.dg/other/error1.C
-4222650217b ./gcc/testsuite/g++.dg/other/error2.C
- 490611048b ./gcc/testsuite/g++.dg/other/error3.C
-2120952916b ./gcc/testsuite/g++.dg/other/exception-specification.C
-1698581993b ./gcc/testsuite/g++.dg/other/forscope1.C
-2764746133b ./gcc/testsuite/g++.dg/other/friend1.C
-2377020172b ./gcc/testsuite/g++.dg/other/gc1.C
-2096815409b ./gcc/testsuite/g++.dg/other/init1.C
-2028368016b ./gcc/testsuite/g++.dg/other/init2.C
-2143945221b ./gcc/testsuite/g++.dg/other/linkage1.C
-2384288796b ./gcc/testsuite/g++.dg/other/pragma-ep-1.C
- 198088036b ./gcc/testsuite/g++.dg/other/pragma-re-1.C
-1453288357b ./gcc/testsuite/g++.dg/other/ptrmem1.C
- 392352692b ./gcc/testsuite/g++.dg/other/ptrmem2.C
- 522786262b ./gcc/testsuite/g++.dg/other/scope1.C
-3572380294b ./gcc/testsuite/g++.dg/other/stdarg1.C
- 873911472b ./gcc/testsuite/g++.dg/other/stdbool-if.C
- 492684594b ./gcc/testsuite/g++.dg/overload/builtin1.C
-3775778165b ./gcc/testsuite/g++.dg/overload/cond1.C
-1110519878b ./gcc/testsuite/g++.dg/overload/error1.C
-3780752279b ./gcc/testsuite/g++.dg/overload/member2.C
-3588815363b ./gcc/testsuite/g++.dg/overload/pmf1.C
-2166944080b ./gcc/testsuite/g++.dg/parse/angle-bracket.C
-3621016079b ./gcc/testsuite/g++.dg/parse/attr1.C
-2532827057b ./gcc/testsuite/g++.dg/parse/decl-specifier-1.C
-3454082090b ./gcc/testsuite/g++.dg/parse/friend1.C
- 849996881b ./gcc/testsuite/g++.dg/parse/inline1.C
-1601717576b ./gcc/testsuite/g++.dg/parse/named_ops.C
-4289007099b ./gcc/testsuite/g++.dg/parse/saved1.C
-1402579554b ./gcc/testsuite/g++.dg/parse/stmtexpr1.C
-2804352074b ./gcc/testsuite/g++.dg/parse/stmtexpr2.C
- 254645785b ./gcc/testsuite/g++.dg/parse/stmtexpr3.C
- 805014732b ./gcc/testsuite/g++.dg/parse/typedef1.C
- 739732730b ./gcc/testsuite/g++.dg/README
- 522523166b ./gcc/testsuite/g++.dg/ref1.C
- 438642550b ./gcc/testsuite/g++.dg/rtti/crash1.C
-1942107252b ./gcc/testsuite/g++.dg/sizeof1.C
- 370035332b ./gcc/testsuite/g++.dg/special/conpr-1.C
-1217683257b ./gcc/testsuite/g++.dg/special/conpr-2a.C
-1019201819b ./gcc/testsuite/g++.dg/special/conpr-2.C
-3756639268b ./gcc/testsuite/g++.dg/special/conpr-3a.C
-3436726377b ./gcc/testsuite/g++.dg/special/conpr-3b.C
-1019201819b ./gcc/testsuite/g++.dg/special/conpr-3.C
-4265992428b ./gcc/testsuite/g++.dg/special/ecos.exp
-1952533588b ./gcc/testsuite/g++.dg/special/initp1.C
-3059417569b ./gcc/testsuite/g++.dg/template/access1.C
- 826296459b ./gcc/testsuite/g++.dg/template/alignof1.C
- 783556741b ./gcc/testsuite/g++.dg/template/complit1.C
-2083292273b ./gcc/testsuite/g++.dg/template/copy1.C
-1072669517b ./gcc/testsuite/g++.dg/template/crash1.C
-3504290323b ./gcc/testsuite/g++.dg/template/ctor1.C
-1161800603b ./gcc/testsuite/g++.dg/template/explicit-instantiation.C
-3302501697b ./gcc/testsuite/g++.dg/template/friend3.C
- 587931705b ./gcc/testsuite/g++.dg/template/friend4.C
-3560434139b ./gcc/testsuite/g++.dg/template/friend5.C
- 590954347b ./gcc/testsuite/g++.dg/template/friend6.C
-3646815886b ./gcc/testsuite/g++.dg/template/friend7.C
-3595433718b ./gcc/testsuite/g++.dg/template/friend.C
- 438837461b ./gcc/testsuite/g++.dg/template/inherit.C
-2872339928b ./gcc/testsuite/g++.dg/template/init-list.C
-2182099475b ./gcc/testsuite/g++.dg/template/instantiate1.C
- 416617778b ./gcc/testsuite/g++.dg/template/local1.C
-1449269044b ./gcc/testsuite/g++.dg/template/member.C
-2815776671b ./gcc/testsuite/g++.dg/template/meminit1.C
-2073430043b ./gcc/testsuite/g++.dg/template/ntp1.C
- 188396250b ./gcc/testsuite/g++.dg/template/partial-specialization.C
- 601175114b ./gcc/testsuite/g++.dg/template/ptrmem1.C
-3748090308b ./gcc/testsuite/g++.dg/template/ptrmem2.C
-1117759327b ./gcc/testsuite/g++.dg/template/qual1.C
-4043559007b ./gcc/testsuite/g++.dg/template/qualttp10.C
- 265969049b ./gcc/testsuite/g++.dg/template/qualttp11.C
-3320116615b ./gcc/testsuite/g++.dg/template/qualttp12.C
-1886222588b ./gcc/testsuite/g++.dg/template/qualttp13.C
- 349133345b ./gcc/testsuite/g++.dg/template/qualttp14.C
-1405414284b ./gcc/testsuite/g++.dg/template/qualttp15.C
-1602753867b ./gcc/testsuite/g++.dg/template/qualttp16.C
- 730215493b ./gcc/testsuite/g++.dg/template/qualttp17.C
-2705854603b ./gcc/testsuite/g++.dg/template/qualttp18.C
-2340914395b ./gcc/testsuite/g++.dg/template/qualttp19.C
-3125902504b ./gcc/testsuite/g++.dg/template/qualttp1.C
-1471270599b ./gcc/testsuite/g++.dg/template/qualttp20.C
- 662492681b ./gcc/testsuite/g++.dg/template/qualttp2.C
-2704736755b ./gcc/testsuite/g++.dg/template/qualttp3.C
-2095971540b ./gcc/testsuite/g++.dg/template/qualttp4.C
-1142633939b ./gcc/testsuite/g++.dg/template/qualttp5.C
- 950873247b ./gcc/testsuite/g++.dg/template/qualttp6.C
- 433357978b ./gcc/testsuite/g++.dg/template/qualttp7.C
-1704860378b ./gcc/testsuite/g++.dg/template/qualttp8.C
- 700938418b ./gcc/testsuite/g++.dg/template/qualttp9.C
-4163290563b ./gcc/testsuite/g++.dg/template/recurse.C
-1960444878b ./gcc/testsuite/g++.dg/template/ref1.C
-1028564434b ./gcc/testsuite/g++.dg/template/sizeof1.C
-2914549620b ./gcc/testsuite/g++.dg/template/spec1.C
-2378483146b ./gcc/testsuite/g++.dg/template/spec2.C
-4241261648b ./gcc/testsuite/g++.dg/template/ttp1.C
-2877667245b ./gcc/testsuite/g++.dg/template/ttp2.C
- 764874225b ./gcc/testsuite/g++.dg/template/ttp3.C
- 212083769b ./gcc/testsuite/g++.dg/template/ttp4.C
-4098822025b ./gcc/testsuite/g++.dg/template/type1.C
-1430073082b ./gcc/testsuite/g++.dg/template/typedef1.C
-3583659165b ./gcc/testsuite/g++.dg/template/typename1.C
- 566916814b ./gcc/testsuite/g++.dg/template/typename2.C
- 471145990b ./gcc/testsuite/g++.dg/template/typename3.C
-1606799647b ./gcc/testsuite/g++.dg/template/typename4.C
-3595370582b ./gcc/testsuite/g++.dg/template/unify1.C
-3639225580b ./gcc/testsuite/g++.dg/template/unify2.C
-4266445185b ./gcc/testsuite/g++.dg/template/unify3.C
- 509779393b ./gcc/testsuite/g++.dg/template/union1.C
-3718685372b ./gcc/testsuite/g++.dg/template/vtable1.C
-2244072137b ./gcc/testsuite/g++.dg/warn/effc1.C
-1455133800b ./gcc/testsuite/g++.dg/warn/format1.C
- 886747822b ./gcc/testsuite/g++.dg/warn/format2.C
-2805519034b ./gcc/testsuite/g++.dg/warn/friend.C
-3402610409b ./gcc/testsuite/g++.dg/warn/oldcast1.C
-2394314287b ./gcc/testsuite/g++.dg/warn/return-reference.C
-3714230484b ./gcc/testsuite/g++.dg/warn/weak1.C
-1594659113b ./gcc/testsuite/g++.dg/warn/Wshadow-1.C
-3339416566b ./gcc/testsuite/g++.dg/warn/Wswitch-1.C
-3928913400b ./gcc/testsuite/g++.dg/warn/Wswitch-2.C
- 223408438b ./gcc/testsuite/g++.dg/warn/Wunused-1.C
-1014061570b ./gcc/testsuite/g++.old-deja/g++.abi/aggregates.C
-3074970655b ./gcc/testsuite/g++.old-deja/g++.abi/align.C
-1155806507b ./gcc/testsuite/g++.old-deja/g++.abi/arraynew.C
-3647855758b ./gcc/testsuite/g++.old-deja/g++.abi/bitfields.C
-2026386788b ./gcc/testsuite/g++.old-deja/g++.abi/crash1.C
-1147144784b ./gcc/testsuite/g++.old-deja/g++.abi/cxa_vec.C
-4096109742b ./gcc/testsuite/g++.old-deja/g++.abi/empty2.C
-1878628007b ./gcc/testsuite/g++.old-deja/g++.abi/empty3.C
-2936636767b ./gcc/testsuite/g++.old-deja/g++.abi/empty.C
- 239352654b ./gcc/testsuite/g++.old-deja/g++.abi/layout1.C
-3009318595b ./gcc/testsuite/g++.old-deja/g++.abi/mangle1.C
-2807005291b ./gcc/testsuite/g++.old-deja/g++.abi/primary2.C
-3282879605b ./gcc/testsuite/g++.old-deja/g++.abi/primary3.C
-1642224875b ./gcc/testsuite/g++.old-deja/g++.abi/primary4.C
- 758749582b ./gcc/testsuite/g++.old-deja/g++.abi/primary5.C
- 694100951b ./gcc/testsuite/g++.old-deja/g++.abi/primary.C
- 123432225b ./gcc/testsuite/g++.old-deja/g++.abi/ptrflags.C
-3967703303b ./gcc/testsuite/g++.old-deja/g++.abi/ptrmem.C
- 627664718b ./gcc/testsuite/g++.old-deja/g++.abi/vbase1.C
-1393433492b ./gcc/testsuite/g++.old-deja/g++.abi/vbase2.C
-1591406699b ./gcc/testsuite/g++.old-deja/g++.abi/vbase3.C
-2878658307b ./gcc/testsuite/g++.old-deja/g++.abi/vbase4.C
-2484396991b ./gcc/testsuite/g++.old-deja/g++.abi/vbase5.C
- 762829112b ./gcc/testsuite/g++.old-deja/g++.abi/vbase6.C
-2351342219b ./gcc/testsuite/g++.old-deja/g++.abi/vbase7.C
-3914589079b ./gcc/testsuite/g++.old-deja/g++.abi/vbase8-5.C
-3332397893b ./gcc/testsuite/g++.old-deja/g++.abi/vbase8-9.C
- 186405531b ./gcc/testsuite/g++.old-deja/g++.abi/vmihint.C
-1117843110b ./gcc/testsuite/g++.old-deja/g++.abi/vtable2.C
-3601882386b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3a.C
-1066819949b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3b.C
- 733573133b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3c.C
-2659325300b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3d.C
-2504154034b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3e.C
- 841363633b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3f.C
-1020377548b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3g.C
-3689828910b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3.h
-1675326614b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3h.C
-3323598815b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3i.C
-4291841254b ./gcc/testsuite/g++.old-deja/g++.abi/vtable3j.C
-2313706108b ./gcc/testsuite/g++.old-deja/g++.abi/vtable.C
-3645238009b ./gcc/testsuite/g++.old-deja/g++.benjamin/13478.C
-1290057507b ./gcc/testsuite/g++.old-deja/g++.benjamin/13523.C
-3226269269b ./gcc/testsuite/g++.old-deja/g++.benjamin/13908.C
-2784092938b ./gcc/testsuite/g++.old-deja/g++.benjamin/14139.C
-2423853762b ./gcc/testsuite/g++.old-deja/g++.benjamin/14664-1.C
-2212548175b ./gcc/testsuite/g++.old-deja/g++.benjamin/14664-2.C
-3677086750b ./gcc/testsuite/g++.old-deja/g++.benjamin/14687.C
-1586319624b ./gcc/testsuite/g++.old-deja/g++.benjamin/15054.C
-3684855646b ./gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
-1623288966b ./gcc/testsuite/g++.old-deja/g++.benjamin/15309-1.C
- 504940539b ./gcc/testsuite/g++.old-deja/g++.benjamin/15309-2.C
-3331129895b ./gcc/testsuite/g++.old-deja/g++.benjamin/15351-1.C
- 474009375b ./gcc/testsuite/g++.old-deja/g++.benjamin/15351-2.C
-2917600664b ./gcc/testsuite/g++.old-deja/g++.benjamin/15756-1.C
-2360709744b ./gcc/testsuite/g++.old-deja/g++.benjamin/15756-2.C
-2662607350b ./gcc/testsuite/g++.old-deja/g++.benjamin/15799.C
-2302070128b ./gcc/testsuite/g++.old-deja/g++.benjamin/15800-1.C
-1420401846b ./gcc/testsuite/g++.old-deja/g++.benjamin/15800-2.C
-3811260428b ./gcc/testsuite/g++.old-deja/g++.benjamin/15822.C
- 515618176b ./gcc/testsuite/g++.old-deja/g++.benjamin/16077.C
-1192292165b ./gcc/testsuite/g++.old-deja/g++.benjamin/16567.C
-3161986254b ./gcc/testsuite/g++.old-deja/g++.benjamin/17922.C
-3967012349b ./gcc/testsuite/g++.old-deja/g++.benjamin/17930.C
-1677939904b ./gcc/testsuite/g++.old-deja/g++.benjamin/18208.C
-3086868742b ./gcc/testsuite/g++.old-deja/g++.benjamin/bool01.C
-3598814632b ./gcc/testsuite/g++.old-deja/g++.benjamin/bool02.C
-3056861018b ./gcc/testsuite/g++.old-deja/g++.benjamin/.cvsignore
-1967242900b ./gcc/testsuite/g++.old-deja/g++.benjamin/friend01.C
-2225156638b ./gcc/testsuite/g++.old-deja/g++.benjamin/friend02.C
-3667301284b ./gcc/testsuite/g++.old-deja/g++.benjamin/p12475.C
-3256842151b ./gcc/testsuite/g++.old-deja/g++.benjamin/p13417.C
-1722427082b ./gcc/testsuite/g++.old-deja/g++.benjamin/p13721.C
-2217061296b ./gcc/testsuite/g++.old-deja/g++.benjamin/scope01.C
-2240065974b ./gcc/testsuite/g++.old-deja/g++.benjamin/scope02.C
-2951719986b ./gcc/testsuite/g++.old-deja/g++.benjamin/tem01.C
- 702039111b ./gcc/testsuite/g++.old-deja/g++.benjamin/tem02.C
- 923827380b ./gcc/testsuite/g++.old-deja/g++.benjamin/tem03.C
-3406491154b ./gcc/testsuite/g++.old-deja/g++.benjamin/tem04.C
-2664329213b ./gcc/testsuite/g++.old-deja/g++.benjamin/tem05.C
-3864493283b ./gcc/testsuite/g++.old-deja/g++.benjamin/tem06.C
-2084088837b ./gcc/testsuite/g++.old-deja/g++.benjamin/tem07.C
-1086694463b ./gcc/testsuite/g++.old-deja/g++.benjamin/typedef01.C
-3459483931b ./gcc/testsuite/g++.old-deja/g++.benjamin/typedef03.C
-2369679358b ./gcc/testsuite/g++.old-deja/g++.benjamin/typeid01.C
-3535655349b ./gcc/testsuite/g++.old-deja/g++.benjamin/warn01.C
-2610555481b ./gcc/testsuite/g++.old-deja/g++.benjamin/warn02.C
-2745105879b ./gcc/testsuite/g++.old-deja/g++.benjamin/warn03.C
-1949674339b ./gcc/testsuite/g++.old-deja/g++.benjamin/warn04.C
- 171203016b ./gcc/testsuite/g++.old-deja/g++.bob/array1.C
-2104392657b ./gcc/testsuite/g++.old-deja/g++.bob/array2.C
-3389809483b ./gcc/testsuite/g++.old-deja/g++.bob/case1.C
-2080938439b ./gcc/testsuite/g++.old-deja/g++.bob/cond1.C
-3873529664b ./gcc/testsuite/g++.old-deja/g++.bob/delete1.C
-2731071171b ./gcc/testsuite/g++.old-deja/g++.bob/extern_C.C
-3066265332b ./gcc/testsuite/g++.old-deja/g++.bob/friend1.C
- 128684785b ./gcc/testsuite/g++.old-deja/g++.bob/incomplete-cast1.C
-2721973759b ./gcc/testsuite/g++.old-deja/g++.bob/inherit1.C
-1103043835b ./gcc/testsuite/g++.old-deja/g++.bob/inherit2.C
-2833738657b ./gcc/testsuite/g++.old-deja/g++.bob/nested1.C
-3565275304b ./gcc/testsuite/g++.old-deja/g++.bob/packed1.C
-4197806151b ./gcc/testsuite/g++.old-deja/g++.bob/protected1.C
-4234249418b ./gcc/testsuite/g++.old-deja/g++.bob/static1.C
- 122187457b ./gcc/testsuite/g++.old-deja/g++.bob/template1.C
-1370912247b ./gcc/testsuite/g++.old-deja/g++.bob/template2.C
-2571452914b ./gcc/testsuite/g++.old-deja/g++.bob/template3.C
-2876511802b ./gcc/testsuite/g++.old-deja/g++.bob/template4.C
- 934227986b ./gcc/testsuite/g++.old-deja/g++.brendan/abstract1.C
-2431794017b ./gcc/testsuite/g++.old-deja/g++.brendan/access1.C
-2157723684b ./gcc/testsuite/g++.old-deja/g++.brendan/alignof.C
- 214451177b ./gcc/testsuite/g++.old-deja/g++.brendan/ambiguity1.C
-3629703719b ./gcc/testsuite/g++.old-deja/g++.brendan/anon-union1.C
-3428758154b ./gcc/testsuite/g++.old-deja/g++.brendan/arm1.C
-2574740314b ./gcc/testsuite/g++.old-deja/g++.brendan/arm2.C
-2227979686b ./gcc/testsuite/g++.old-deja/g++.brendan/arm3.C
-2917176441b ./gcc/testsuite/g++.old-deja/g++.brendan/array1.C
-1965428160b ./gcc/testsuite/g++.old-deja/g++.brendan/array-refs.C
-1940036338b ./gcc/testsuite/g++.old-deja/g++.brendan/asm-extn1.C
- 294912826b ./gcc/testsuite/g++.old-deja/g++.brendan/bit-fields1.C
-3253987007b ./gcc/testsuite/g++.old-deja/g++.brendan/bit-fields2.C
-2295880526b ./gcc/testsuite/g++.old-deja/g++.brendan/bool1.C
-4273223623b ./gcc/testsuite/g++.old-deja/g++.brendan/code-gen1.C
-1645524661b ./gcc/testsuite/g++.old-deja/g++.brendan/code-gen2.C
-3644865515b ./gcc/testsuite/g++.old-deja/g++.brendan/code-gen3.C
-2948051712b ./gcc/testsuite/g++.old-deja/g++.brendan/code-gen4.C
-1620487125b ./gcc/testsuite/g++.old-deja/g++.brendan/code-gen6.C
-1741291892b ./gcc/testsuite/g++.old-deja/g++.brendan/complex1.C
- 793374686b ./gcc/testsuite/g++.old-deja/g++.brendan/copy1.C
-3632592804b ./gcc/testsuite/g++.old-deja/g++.brendan/copy2.C
-2563077575b ./gcc/testsuite/g++.old-deja/g++.brendan/copy3.C
-2853493438b ./gcc/testsuite/g++.old-deja/g++.brendan/copy4.C
- 654573812b ./gcc/testsuite/g++.old-deja/g++.brendan/copy5.C
- 949668502b ./gcc/testsuite/g++.old-deja/g++.brendan/copy6.C
-1985077243b ./gcc/testsuite/g++.old-deja/g++.brendan/copy7.C
-2478516341b ./gcc/testsuite/g++.old-deja/g++.brendan/copy8.C
-4007430298b ./gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
-2509157689b ./gcc/testsuite/g++.old-deja/g++.brendan/crash10.C
-1585446941b ./gcc/testsuite/g++.old-deja/g++.brendan/crash11.C
-1430846464b ./gcc/testsuite/g++.old-deja/g++.brendan/crash12.C
- 162053895b ./gcc/testsuite/g++.old-deja/g++.brendan/crash13.C
-1549271196b ./gcc/testsuite/g++.old-deja/g++.brendan/crash14.C
-2286955722b ./gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
- 183613091b ./gcc/testsuite/g++.old-deja/g++.brendan/crash16.C
-3586612658b ./gcc/testsuite/g++.old-deja/g++.brendan/crash17.C
- 563583842b ./gcc/testsuite/g++.old-deja/g++.brendan/crash18.C
- 73005642b ./gcc/testsuite/g++.old-deja/g++.brendan/crash1.C
-4119104494b ./gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
- 927230476b ./gcc/testsuite/g++.old-deja/g++.brendan/crash22.C
- 547223421b ./gcc/testsuite/g++.old-deja/g++.brendan/crash23.C
-1835086247b ./gcc/testsuite/g++.old-deja/g++.brendan/crash24.C
-1526375664b ./gcc/testsuite/g++.old-deja/g++.brendan/crash25.C
-2644738903b ./gcc/testsuite/g++.old-deja/g++.brendan/crash26.C
-1537159422b ./gcc/testsuite/g++.old-deja/g++.brendan/crash27.C
-1095243311b ./gcc/testsuite/g++.old-deja/g++.brendan/crash28.C
- 899543906b ./gcc/testsuite/g++.old-deja/g++.brendan/crash29.C
-2936347090b ./gcc/testsuite/g++.old-deja/g++.brendan/crash2.C
- 454853598b ./gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
-3144780301b ./gcc/testsuite/g++.old-deja/g++.brendan/crash31.C
- 255295637b ./gcc/testsuite/g++.old-deja/g++.brendan/crash32.C
-1337786658b ./gcc/testsuite/g++.old-deja/g++.brendan/crash33.C
-2946805769b ./gcc/testsuite/g++.old-deja/g++.brendan/crash34.C
-1475644375b ./gcc/testsuite/g++.old-deja/g++.brendan/crash35.C
-1156826769b ./gcc/testsuite/g++.old-deja/g++.brendan/crash36.C
-4095821179b ./gcc/testsuite/g++.old-deja/g++.brendan/crash37.C
-3095994190b ./gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
-1186001658b ./gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
-1740428956b ./gcc/testsuite/g++.old-deja/g++.brendan/crash3.C
-2475994253b ./gcc/testsuite/g++.old-deja/g++.brendan/crash40.C
-4225248580b ./gcc/testsuite/g++.old-deja/g++.brendan/crash41.C
-2430128234b ./gcc/testsuite/g++.old-deja/g++.brendan/crash42.C
-2513849144b ./gcc/testsuite/g++.old-deja/g++.brendan/crash43.C
-4266258254b ./gcc/testsuite/g++.old-deja/g++.brendan/crash44.C
-2678379673b ./gcc/testsuite/g++.old-deja/g++.brendan/crash45.C
-2885801112b ./gcc/testsuite/g++.old-deja/g++.brendan/crash46.C
-3880129363b ./gcc/testsuite/g++.old-deja/g++.brendan/crash47.C
- 740147641b ./gcc/testsuite/g++.old-deja/g++.brendan/crash48.C
- 991257367b ./gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
-2075374404b ./gcc/testsuite/g++.old-deja/g++.brendan/crash4.C
-3106709406b ./gcc/testsuite/g++.old-deja/g++.brendan/crash50.C
-2259885687b ./gcc/testsuite/g++.old-deja/g++.brendan/crash51.C
-2036848605b ./gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
- 353501789b ./gcc/testsuite/g++.old-deja/g++.brendan/crash53.C
- 249063748b ./gcc/testsuite/g++.old-deja/g++.brendan/crash54.C
- 88615881b ./gcc/testsuite/g++.old-deja/g++.brendan/crash55.C
-1729790662b ./gcc/testsuite/g++.old-deja/g++.brendan/crash56.C
-2097488269b ./gcc/testsuite/g++.old-deja/g++.brendan/crash57.C
-1260831404b ./gcc/testsuite/g++.old-deja/g++.brendan/crash58.C
-1308193179b ./gcc/testsuite/g++.old-deja/g++.brendan/crash5.C
-3431262814b ./gcc/testsuite/g++.old-deja/g++.brendan/crash60.C
-3845483878b ./gcc/testsuite/g++.old-deja/g++.brendan/crash61.C
-2163074363b ./gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
-3068166302b ./gcc/testsuite/g++.old-deja/g++.brendan/crash63.C
-1926363821b ./gcc/testsuite/g++.old-deja/g++.brendan/crash64.C
-3191901754b ./gcc/testsuite/g++.old-deja/g++.brendan/crash65.C
-2970533101b ./gcc/testsuite/g++.old-deja/g++.brendan/crash66.C
-1982272158b ./gcc/testsuite/g++.old-deja/g++.brendan/crash67.C
-3682557717b ./gcc/testsuite/g++.old-deja/g++.brendan/crash68.C
-3392471730b ./gcc/testsuite/g++.old-deja/g++.brendan/crash6.C
- 345174202b ./gcc/testsuite/g++.old-deja/g++.brendan/crash7.C
-4188483267b ./gcc/testsuite/g++.old-deja/g++.brendan/crash8.C
-3802934826b ./gcc/testsuite/g++.old-deja/g++.brendan/crash9.C
- 906320343b ./gcc/testsuite/g++.old-deja/g++.brendan/ctors1.C
-2290504125b ./gcc/testsuite/g++.old-deja/g++.brendan/ctors2.C
- 398361887b ./gcc/testsuite/g++.old-deja/g++.brendan/ctors3.C
-3763220792b ./gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
- 419606832b ./gcc/testsuite/g++.old-deja/g++.brendan/cvt2.C
- 919133975b ./gcc/testsuite/g++.old-deja/g++.brendan/cvt3.C
-2031200997b ./gcc/testsuite/g++.old-deja/g++.brendan/cvt4.C
-2406274048b ./gcc/testsuite/g++.old-deja/g++.brendan/cvt5.C
- 316645702b ./gcc/testsuite/g++.old-deja/g++.brendan/def-args1.C
-1784724453b ./gcc/testsuite/g++.old-deja/g++.brendan/def-fns1.C
-1567398405b ./gcc/testsuite/g++.old-deja/g++.brendan/delete1.C
-3911201775b ./gcc/testsuite/g++.old-deja/g++.brendan/delete2.C
-2974300615b ./gcc/testsuite/g++.old-deja/g++.brendan/dtors1.C
-1270991957b ./gcc/testsuite/g++.old-deja/g++.brendan/dtors2.C
-1405617163b ./gcc/testsuite/g++.old-deja/g++.brendan/dtors3.C
- 50594595b ./gcc/testsuite/g++.old-deja/g++.brendan/eh1.C
-2154024297b ./gcc/testsuite/g++.old-deja/g++.brendan/enum10.C
-1012457759b ./gcc/testsuite/g++.old-deja/g++.brendan/enum11.C
-3613259052b ./gcc/testsuite/g++.old-deja/g++.brendan/enum12.C
-4062281691b ./gcc/testsuite/g++.old-deja/g++.brendan/enum13.C
-1026608225b ./gcc/testsuite/g++.old-deja/g++.brendan/enum14.C
-2752357079b ./gcc/testsuite/g++.old-deja/g++.brendan/enum1.C
-2495301458b ./gcc/testsuite/g++.old-deja/g++.brendan/enum2.C
- 857641714b ./gcc/testsuite/g++.old-deja/g++.brendan/enum3.C
-2436566654b ./gcc/testsuite/g++.old-deja/g++.brendan/enum4.C
-2794281986b ./gcc/testsuite/g++.old-deja/g++.brendan/enum5.C
-3270336565b ./gcc/testsuite/g++.old-deja/g++.brendan/enum6.C
-1144354186b ./gcc/testsuite/g++.old-deja/g++.brendan/enum7.C
-3721081721b ./gcc/testsuite/g++.old-deja/g++.brendan/enum8.C
-1284409256b ./gcc/testsuite/g++.old-deja/g++.brendan/enum9.C
-4113228927b ./gcc/testsuite/g++.old-deja/g++.brendan/enum-clash.C
-3510755439b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg10.C
-3189183114b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg11.C
-1104107183b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg12.C
-1658458603b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg1.C
-1956101213b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg2.C
- 139198600b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
-3762408786b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg4.C
-4113288075b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg5.C
-1901492381b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg6.C
- 851805023b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg7.C
- 721709084b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg8.C
- 420911498b ./gcc/testsuite/g++.old-deja/g++.brendan/err-msg9.C
-3557744186b ./gcc/testsuite/g++.old-deja/g++.brendan/explicit1.C
-3505755144b ./gcc/testsuite/g++.old-deja/g++.brendan/friend1.C
-1863938790b ./gcc/testsuite/g++.old-deja/g++.brendan/friend2.C
-2483886013b ./gcc/testsuite/g++.old-deja/g++.brendan/friend3.C
-3122834560b ./gcc/testsuite/g++.old-deja/g++.brendan/friend4.C
-1714830524b ./gcc/testsuite/g++.old-deja/g++.brendan/groff1.C
-2246409428b ./gcc/testsuite/g++.old-deja/g++.brendan/init10.C
-1901230214b ./gcc/testsuite/g++.old-deja/g++.brendan/init11.C
- 851254540b ./gcc/testsuite/g++.old-deja/g++.brendan/init12.C
-2224246807b ./gcc/testsuite/g++.old-deja/g++.brendan/init13.C
-3909689745b ./gcc/testsuite/g++.old-deja/g++.brendan/init1.C
-1726022047b ./gcc/testsuite/g++.old-deja/g++.brendan/init2.C
-2066877415b ./gcc/testsuite/g++.old-deja/g++.brendan/init3.C
-1439428404b ./gcc/testsuite/g++.old-deja/g++.brendan/init4.C
-4054847189b ./gcc/testsuite/g++.old-deja/g++.brendan/init5.C
- 248682492b ./gcc/testsuite/g++.old-deja/g++.brendan/init6.C
-3084232903b ./gcc/testsuite/g++.old-deja/g++.brendan/init7.C
-3733555155b ./gcc/testsuite/g++.old-deja/g++.brendan/init8.C
- 743854867b ./gcc/testsuite/g++.old-deja/g++.brendan/init9.C
-2492742855b ./gcc/testsuite/g++.old-deja/g++.brendan/label1.C
-2945125995b ./gcc/testsuite/g++.old-deja/g++.brendan/label2.C
-4243229627b ./gcc/testsuite/g++.old-deja/g++.brendan/line1.C
- 840292246b ./gcc/testsuite/g++.old-deja/g++.brendan/misc10.C
-3482838045b ./gcc/testsuite/g++.old-deja/g++.brendan/misc11.C
-2371682672b ./gcc/testsuite/g++.old-deja/g++.brendan/misc14.C
-4172246159b ./gcc/testsuite/g++.old-deja/g++.brendan/misc15.C
-1840031399b ./gcc/testsuite/g++.old-deja/g++.brendan/misc16.C
-4145144968b ./gcc/testsuite/g++.old-deja/g++.brendan/misc17.C
-3260792263b ./gcc/testsuite/g++.old-deja/g++.brendan/misc1.C
-1747247058b ./gcc/testsuite/g++.old-deja/g++.brendan/misc2.C
-1984879017b ./gcc/testsuite/g++.old-deja/g++.brendan/misc3.C
-3850320829b ./gcc/testsuite/g++.old-deja/g++.brendan/misc4.C
- 556499795b ./gcc/testsuite/g++.old-deja/g++.brendan/misc5.C
-2119421590b ./gcc/testsuite/g++.old-deja/g++.brendan/misc6.C
-3952284631b ./gcc/testsuite/g++.old-deja/g++.brendan/misc7.C
-4192698961b ./gcc/testsuite/g++.old-deja/g++.brendan/misc8.C
- 464358847b ./gcc/testsuite/g++.old-deja/g++.brendan/misc9.C
-4175086610b ./gcc/testsuite/g++.old-deja/g++.brendan/mutable1.C
-4218289945b ./gcc/testsuite/g++.old-deja/g++.brendan/nest10.C
-2376522411b ./gcc/testsuite/g++.old-deja/g++.brendan/nest11.C
-1975302793b ./gcc/testsuite/g++.old-deja/g++.brendan/nest12.C
-1958887360b ./gcc/testsuite/g++.old-deja/g++.brendan/nest13.C
- 29264456b ./gcc/testsuite/g++.old-deja/g++.brendan/nest15.C
-2705266460b ./gcc/testsuite/g++.old-deja/g++.brendan/nest16.C
-1548858648b ./gcc/testsuite/g++.old-deja/g++.brendan/nest17.C
-3262257927b ./gcc/testsuite/g++.old-deja/g++.brendan/nest18.C
-2348257545b ./gcc/testsuite/g++.old-deja/g++.brendan/nest19.C
-2880395837b ./gcc/testsuite/g++.old-deja/g++.brendan/nest1.C
-3266883735b ./gcc/testsuite/g++.old-deja/g++.brendan/nest20.C
- 269879871b ./gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
-3747210741b ./gcc/testsuite/g++.old-deja/g++.brendan/nest22.C
-3359473085b ./gcc/testsuite/g++.old-deja/g++.brendan/nest23.C
- 741780000b ./gcc/testsuite/g++.old-deja/g++.brendan/nest24.C
-4158798113b ./gcc/testsuite/g++.old-deja/g++.brendan/nest2.C
-3460040540b ./gcc/testsuite/g++.old-deja/g++.brendan/nest3.C
-3092321784b ./gcc/testsuite/g++.old-deja/g++.brendan/nest4.C
-3209968741b ./gcc/testsuite/g++.old-deja/g++.brendan/new1.C
- 560844122b ./gcc/testsuite/g++.old-deja/g++.brendan/new2.C
- 952562718b ./gcc/testsuite/g++.old-deja/g++.brendan/new3.C
- 611468654b ./gcc/testsuite/g++.old-deja/g++.brendan/new-array.C
- 864176391b ./gcc/testsuite/g++.old-deja/g++.brendan/ns1.C
-2649926624b ./gcc/testsuite/g++.old-deja/g++.brendan/operators1.C
-2592721748b ./gcc/testsuite/g++.old-deja/g++.brendan/operators2.C
-2129877497b ./gcc/testsuite/g++.old-deja/g++.brendan/operators3.C
-3437294529b ./gcc/testsuite/g++.old-deja/g++.brendan/operators4.C
-1333590464b ./gcc/testsuite/g++.old-deja/g++.brendan/operators5.C
-1939786411b ./gcc/testsuite/g++.old-deja/g++.brendan/operators6.C
-2774653307b ./gcc/testsuite/g++.old-deja/g++.brendan/operators7.C
-1264143080b ./gcc/testsuite/g++.old-deja/g++.brendan/operators8.C
-2183452204b ./gcc/testsuite/g++.old-deja/g++.brendan/overload10.C
-1188978134b ./gcc/testsuite/g++.old-deja/g++.brendan/overload11.C
- 785078285b ./gcc/testsuite/g++.old-deja/g++.brendan/overload1.C
-2745841756b ./gcc/testsuite/g++.old-deja/g++.brendan/overload2.C
-4234832416b ./gcc/testsuite/g++.old-deja/g++.brendan/overload3.C
-1846706050b ./gcc/testsuite/g++.old-deja/g++.brendan/overload4.C
-4113371844b ./gcc/testsuite/g++.old-deja/g++.brendan/overload5.C
- 401815179b ./gcc/testsuite/g++.old-deja/g++.brendan/overload6.C
-2944730687b ./gcc/testsuite/g++.old-deja/g++.brendan/overload7.C
-4047120274b ./gcc/testsuite/g++.old-deja/g++.brendan/overload8.C
-3089598546b ./gcc/testsuite/g++.old-deja/g++.brendan/overload9.C
-3352057260b ./gcc/testsuite/g++.old-deja/g++.brendan/parse1.C
-3784585361b ./gcc/testsuite/g++.old-deja/g++.brendan/parse2.C
-3312018900b ./gcc/testsuite/g++.old-deja/g++.brendan/parse3.C
-2326400572b ./gcc/testsuite/g++.old-deja/g++.brendan/parse4.C
-3249609747b ./gcc/testsuite/g++.old-deja/g++.brendan/parse5.C
-3147672451b ./gcc/testsuite/g++.old-deja/g++.brendan/parse6.C
-3126677669b ./gcc/testsuite/g++.old-deja/g++.brendan/prepost1.C
-2799625909b ./gcc/testsuite/g++.old-deja/g++.brendan/prepost2.C
- 870942291b ./gcc/testsuite/g++.old-deja/g++.brendan/prepost3.C
-1385259160b ./gcc/testsuite/g++.old-deja/g++.brendan/prepost4.C
-2200714766b ./gcc/testsuite/g++.old-deja/g++.brendan/ptolemy1.C
-2953958728b ./gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
- 38057973b ./gcc/testsuite/g++.old-deja/g++.brendan/ptrmem1.C
-4022822146b ./gcc/testsuite/g++.old-deja/g++.brendan/ptrmem2.C
- 619231948b ./gcc/testsuite/g++.old-deja/g++.brendan/ptrmem3.C
-2919120027b ./gcc/testsuite/g++.old-deja/g++.brendan/ptrmem4.C
-3336461445b ./gcc/testsuite/g++.old-deja/g++.brendan/README
-2442841220b ./gcc/testsuite/g++.old-deja/g++.brendan/recurse.C
-3187500629b ./gcc/testsuite/g++.old-deja/g++.brendan/redecl1.C
-3919299369b ./gcc/testsuite/g++.old-deja/g++.brendan/redecl2.C
-4124591660b ./gcc/testsuite/g++.old-deja/g++.brendan/redecl3.C
- 408503266b ./gcc/testsuite/g++.old-deja/g++.brendan/reference1.C
-2740944344b ./gcc/testsuite/g++.old-deja/g++.brendan/rtti1.C
-2296175777b ./gcc/testsuite/g++.old-deja/g++.brendan/scope1.C
-3174533815b ./gcc/testsuite/g++.old-deja/g++.brendan/scope2.C
- 984705374b ./gcc/testsuite/g++.old-deja/g++.brendan/scope3.C
- 530491368b ./gcc/testsuite/g++.old-deja/g++.brendan/scope4.C
-2958119224b ./gcc/testsuite/g++.old-deja/g++.brendan/scope5.C
-3517883150b ./gcc/testsuite/g++.old-deja/g++.brendan/shadow1.C
-1298625279b ./gcc/testsuite/g++.old-deja/g++.brendan/sizeof1.C
-1606736953b ./gcc/testsuite/g++.old-deja/g++.brendan/sizeof2.C
-1309373439b ./gcc/testsuite/g++.old-deja/g++.brendan/sizeof3.C
-2843507191b ./gcc/testsuite/g++.old-deja/g++.brendan/sizeof4.C
- 728696962b ./gcc/testsuite/g++.old-deja/g++.brendan/sizeof5.C
-4271892241b ./gcc/testsuite/g++.old-deja/g++.brendan/sorry1.C
-3244246119b ./gcc/testsuite/g++.old-deja/g++.brendan/static1.C
-3667553213b ./gcc/testsuite/g++.old-deja/g++.brendan/static2.C
-3518242349b ./gcc/testsuite/g++.old-deja/g++.brendan/static3.C
-1578126603b ./gcc/testsuite/g++.old-deja/g++.brendan/synth1.C
- 486716772b ./gcc/testsuite/g++.old-deja/g++.brendan/template11.C
- 675307124b ./gcc/testsuite/g++.old-deja/g++.brendan/template12.C
-4278394002b ./gcc/testsuite/g++.old-deja/g++.brendan/template13.C
-4135240635b ./gcc/testsuite/g++.old-deja/g++.brendan/template15.C
-3955771564b ./gcc/testsuite/g++.old-deja/g++.brendan/template16.C
-3118430115b ./gcc/testsuite/g++.old-deja/g++.brendan/template17.C
- 378060276b ./gcc/testsuite/g++.old-deja/g++.brendan/template18.C
-3959082203b ./gcc/testsuite/g++.old-deja/g++.brendan/template19.C
-2963427658b ./gcc/testsuite/g++.old-deja/g++.brendan/template1.C
-4030461184b ./gcc/testsuite/g++.old-deja/g++.brendan/template20.C
-1759284086b ./gcc/testsuite/g++.old-deja/g++.brendan/template21.C
-2020058736b ./gcc/testsuite/g++.old-deja/g++.brendan/template22.C
- 880621627b ./gcc/testsuite/g++.old-deja/g++.brendan/template23.C
-2295592255b ./gcc/testsuite/g++.old-deja/g++.brendan/template24.C
-1978252533b ./gcc/testsuite/g++.old-deja/g++.brendan/template25.C
- 730754006b ./gcc/testsuite/g++.old-deja/g++.brendan/template26.C
-1378450506b ./gcc/testsuite/g++.old-deja/g++.brendan/template27.C
-1797214646b ./gcc/testsuite/g++.old-deja/g++.brendan/template28.C
- 290486161b ./gcc/testsuite/g++.old-deja/g++.brendan/template29.C
-4292737843b ./gcc/testsuite/g++.old-deja/g++.brendan/template2.C
-3262101990b ./gcc/testsuite/g++.old-deja/g++.brendan/template30.C
-3508460272b ./gcc/testsuite/g++.old-deja/g++.brendan/template31.C
-1373002312b ./gcc/testsuite/g++.old-deja/g++.brendan/template3.C
-2599566194b ./gcc/testsuite/g++.old-deja/g++.brendan/template4.C
- 575580037b ./gcc/testsuite/g++.old-deja/g++.brendan/template5.C
- 534471494b ./gcc/testsuite/g++.old-deja/g++.brendan/template6.C
-1095287366b ./gcc/testsuite/g++.old-deja/g++.brendan/template7.C
- 517567456b ./gcc/testsuite/g++.old-deja/g++.brendan/template8.C
-1644370694b ./gcc/testsuite/g++.old-deja/g++.brendan/temporary1.C
-2369869850b ./gcc/testsuite/g++.old-deja/g++.brendan/typedef1.C
-2846047998b ./gcc/testsuite/g++.old-deja/g++.brendan/union1.C
- 823018336b ./gcc/testsuite/g++.old-deja/g++.brendan/union2.C
-2620564840b ./gcc/testsuite/g++.old-deja/g++.brendan/union3.C
-1914281947b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility10.C
-2922551156b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility1.C
-3793323471b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility2.C
- 399740001b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility3.C
-2097292018b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility4.C
- 574178981b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility5.C
-1490006646b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility6.C
-2737828036b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility7.C
-1186381819b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility8.C
- 350593631b ./gcc/testsuite/g++.old-deja/g++.brendan/visibility9.C
-1417363197b ./gcc/testsuite/g++.old-deja/g++.brendan/vtables1.C
-2127742392b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings10.C
-4011038443b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings1.C
- 752421094b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings2.C
-2267971773b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings3.C
- 60611814b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings4.C
-1620038153b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings5.C
- 601010719b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings6.C
-1529970043b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings7.C
-2592942829b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings8.C
-2410309597b ./gcc/testsuite/g++.old-deja/g++.brendan/warnings9.C
- 879793477b ./gcc/testsuite/g++.old-deja/g++.bugs/891229_02.C
- 995524953b ./gcc/testsuite/g++.old-deja/g++.bugs/891230_01.C
-3396939769b ./gcc/testsuite/g++.old-deja/g++.bugs/900107_01.C
-3168842964b ./gcc/testsuite/g++.old-deja/g++.bugs/900119_01.C
-3900455611b ./gcc/testsuite/g++.old-deja/g++.bugs/900121_01.C
-2146350614b ./gcc/testsuite/g++.old-deja/g++.bugs/900121_02.C
- 584636864b ./gcc/testsuite/g++.old-deja/g++.bugs/900121_05.C
-1991520903b ./gcc/testsuite/g++.old-deja/g++.bugs/900127_01.C
-2330321470b ./gcc/testsuite/g++.old-deja/g++.bugs/900127_02.C
-3489166192b ./gcc/testsuite/g++.old-deja/g++.bugs/900205_02.C
-3457661037b ./gcc/testsuite/g++.old-deja/g++.bugs/900205_03.C
-1813191232b ./gcc/testsuite/g++.old-deja/g++.bugs/900205_04.C
-2807062312b ./gcc/testsuite/g++.old-deja/g++.bugs/900207_03.C
-1397162767b ./gcc/testsuite/g++.old-deja/g++.bugs/900208_02.C
-2651120681b ./gcc/testsuite/g++.old-deja/g++.bugs/900208_03.C
-2171781580b ./gcc/testsuite/g++.old-deja/g++.bugs/900208_04.C
-3303782315b ./gcc/testsuite/g++.old-deja/g++.bugs/900209_01.C
- 780393726b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_01.C
- 6412645b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_02.C
-4275693472b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_03.C
-1292327254b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_05.C
-4037536992b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_06.C
-2622921904b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_07.C
- 690087876b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_08.C
-2026146424b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_09.C
-3600304327b ./gcc/testsuite/g++.old-deja/g++.bugs/900210_10.C
-1256707550b ./gcc/testsuite/g++.old-deja/g++.bugs/900211_01.C
-1084090140b ./gcc/testsuite/g++.old-deja/g++.bugs/900211_02.C
-3916124462b ./gcc/testsuite/g++.old-deja/g++.bugs/900211_03.C
- 241770712b ./gcc/testsuite/g++.old-deja/g++.bugs/900211_04.C
-1582696199b ./gcc/testsuite/g++.old-deja/g++.bugs/900212_01.C
-1974918899b ./gcc/testsuite/g++.old-deja/g++.bugs/900212_02.C
- 203635920b ./gcc/testsuite/g++.old-deja/g++.bugs/900212_03.C
-4232472999b ./gcc/testsuite/g++.old-deja/g++.bugs/900213_01.C
-1276348303b ./gcc/testsuite/g++.old-deja/g++.bugs/900213_02.C
-2887201610b ./gcc/testsuite/g++.old-deja/g++.bugs/900213_03.C
-1660260745b ./gcc/testsuite/g++.old-deja/g++.bugs/900214_01.C
-2447884275b ./gcc/testsuite/g++.old-deja/g++.bugs/900215_01.C
-1381602623b ./gcc/testsuite/g++.old-deja/g++.bugs/900215_02.C
- 994946835b ./gcc/testsuite/g++.old-deja/g++.bugs/900220_01.C
-3910347278b ./gcc/testsuite/g++.old-deja/g++.bugs/900220_02.C
-4252298896b ./gcc/testsuite/g++.old-deja/g++.bugs/900220_03.C
-1290432832b ./gcc/testsuite/g++.old-deja/g++.bugs/900221_01.C
-1900361967b ./gcc/testsuite/g++.old-deja/g++.bugs/900227_01.C
-1984786856b ./gcc/testsuite/g++.old-deja/g++.bugs/900321_01.C
-3263132139b ./gcc/testsuite/g++.old-deja/g++.bugs/900321_02.C
-3726833614b ./gcc/testsuite/g++.old-deja/g++.bugs/900321_04.C
-3208622461b ./gcc/testsuite/g++.old-deja/g++.bugs/900321_05.C
-2500096956b ./gcc/testsuite/g++.old-deja/g++.bugs/900322_01.C
- 681072542b ./gcc/testsuite/g++.old-deja/g++.bugs/900324_02.C
-2572761897b ./gcc/testsuite/g++.old-deja/g++.bugs/900324_03.C
-2694477972b ./gcc/testsuite/g++.old-deja/g++.bugs/900324_04.C
- 690195427b ./gcc/testsuite/g++.old-deja/g++.bugs/900324_05.C
- 317521719b ./gcc/testsuite/g++.old-deja/g++.bugs/900324_06.C
-3073385107b ./gcc/testsuite/g++.old-deja/g++.bugs/900325_01.C
-3117943928b ./gcc/testsuite/g++.old-deja/g++.bugs/900330_01.C
-3120423847b ./gcc/testsuite/g++.old-deja/g++.bugs/900330_02.C
-4248455686b ./gcc/testsuite/g++.old-deja/g++.bugs/900331_02.C
-3962158950b ./gcc/testsuite/g++.old-deja/g++.bugs/900331_03.C
-3297726587b ./gcc/testsuite/g++.old-deja/g++.bugs/900331_04.C
-1155342042b ./gcc/testsuite/g++.old-deja/g++.bugs/900401_01.C
-2499836717b ./gcc/testsuite/g++.old-deja/g++.bugs/900402_01.C
- 845652229b ./gcc/testsuite/g++.old-deja/g++.bugs/900402_02.C
-1163828267b ./gcc/testsuite/g++.old-deja/g++.bugs/900403_01.C
-4141739844b ./gcc/testsuite/g++.old-deja/g++.bugs/900403_04.C
-1907728591b ./gcc/testsuite/g++.old-deja/g++.bugs/900404_01.C
-2723342095b ./gcc/testsuite/g++.old-deja/g++.bugs/900404_02.C
-1026865843b ./gcc/testsuite/g++.old-deja/g++.bugs/900404_03.C
-1793308826b ./gcc/testsuite/g++.old-deja/g++.bugs/900404_04.C
-3075423771b ./gcc/testsuite/g++.old-deja/g++.bugs/900404_07.C
- 769125852b ./gcc/testsuite/g++.old-deja/g++.bugs/900405_01.C
- 527599451b ./gcc/testsuite/g++.old-deja/g++.bugs/900406_01.C
-1181207035b ./gcc/testsuite/g++.old-deja/g++.bugs/900406_02.C
- 467084117b ./gcc/testsuite/g++.old-deja/g++.bugs/900407_01.C
-1144474754b ./gcc/testsuite/g++.old-deja/g++.bugs/900428_01.C
-3966201362b ./gcc/testsuite/g++.old-deja/g++.bugs/900428_02.C
-2804257500b ./gcc/testsuite/g++.old-deja/g++.bugs/900428_03.C
-2638840723b ./gcc/testsuite/g++.old-deja/g++.bugs/900511_01.C
-1121452894b ./gcc/testsuite/g++.old-deja/g++.bugs/900511_02.C
-2969943864b ./gcc/testsuite/g++.old-deja/g++.bugs/900511_03.C
-3359430702b ./gcc/testsuite/g++.old-deja/g++.bugs/900514_03.C
-2924879685b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_01.C
-1121534730b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_02.C
-4018294577b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_03.C
- 39270680b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_04.C
- 786299821b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_05.C
-1520079302b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_06.C
-3679461455b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_07.C
-1493720581b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_09.C
-1369816343b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_12.C
-3378349206b ./gcc/testsuite/g++.old-deja/g++.bugs/900519_13.C
- 398333614b ./gcc/testsuite/g++.old-deja/g++.bugs/900520_02.C
- 592030193b ./gcc/testsuite/g++.old-deja/g++.bugs/900520_03.C
-3373505469b ./gcc/testsuite/g++.old-deja/g++.bugs/900520_04.C
-1381261051b ./gcc/testsuite/g++.old-deja/g++.bugs/900520_05.C
-3515041132b ./gcc/testsuite/g++.old-deja/g++.bugs/900520_06.C
-1287054743b ./gcc/testsuite/g++.old-deja/g++.eh/badalloc1.C
-3799957377b ./gcc/testsuite/g++.old-deja/g++.eh/catch10.C
-2291520496b ./gcc/testsuite/g++.old-deja/g++.eh/catch11.C
-3311967999b ./gcc/testsuite/g++.old-deja/g++.eh/catch12.C
-3320439198b ./gcc/testsuite/g++.old-deja/g++.eh/catch13.C
- 998245899b ./gcc/testsuite/g++.old-deja/g++.eh/catch14.C
- 669779261b ./gcc/testsuite/g++.old-deja/g++.eh/catch1.C
-2873880433b ./gcc/testsuite/g++.old-deja/g++.eh/catch2.C
-2886528606b ./gcc/testsuite/g++.old-deja/g++.eh/catch3.C
- 237405446b ./gcc/testsuite/g++.old-deja/g++.eh/catch3p.C
-2597913212b ./gcc/testsuite/g++.old-deja/g++.eh/catch4.C
-3784511797b ./gcc/testsuite/g++.old-deja/g++.eh/catch4p.C
-2773413264b ./gcc/testsuite/g++.old-deja/g++.eh/catch5.C
-1526932366b ./gcc/testsuite/g++.old-deja/g++.eh/catch5p.C
-4221257197b ./gcc/testsuite/g++.old-deja/g++.eh/catch6.C
-3963959238b ./gcc/testsuite/g++.old-deja/g++.eh/catch6p.C
-4294525621b ./gcc/testsuite/g++.old-deja/g++.eh/catch7.C
-2328109815b ./gcc/testsuite/g++.old-deja/g++.eh/catch7p.C
- 62947948b ./gcc/testsuite/g++.old-deja/g++.eh/catch8.C
-1196849462b ./gcc/testsuite/g++.old-deja/g++.eh/catch8p.C
-1548291979b ./gcc/testsuite/g++.old-deja/g++.eh/catch9.C
-2807268437b ./gcc/testsuite/g++.old-deja/g++.eh/catch9p.C
-1011765156b ./gcc/testsuite/g++.old-deja/g++.eh/catchptr1.C
-3391348266b ./gcc/testsuite/g++.old-deja/g++.eh/cleanup1.C
-2075767168b ./gcc/testsuite/g++.old-deja/g++.eh/cleanup2.C
-4233648694b ./gcc/testsuite/g++.old-deja/g++.eh/cond1.C
- 482630604b ./gcc/testsuite/g++.old-deja/g++.eh/crash1.C
-3487010399b ./gcc/testsuite/g++.old-deja/g++.eh/crash2.C
-3059731247b ./gcc/testsuite/g++.old-deja/g++.eh/crash3.C
-1684457203b ./gcc/testsuite/g++.old-deja/g++.eh/crash4.C
-3254817681b ./gcc/testsuite/g++.old-deja/g++.eh/crash5.C
-2429027833b ./gcc/testsuite/g++.old-deja/g++.eh/crash6.C
- 633960827b ./gcc/testsuite/g++.old-deja/g++.eh/ctor1.C
-2442750901b ./gcc/testsuite/g++.old-deja/g++.eh/flow1.C
- 735112314b ./gcc/testsuite/g++.old-deja/g++.eh/fntry1.C
-2322235726b ./gcc/testsuite/g++.old-deja/g++.eh/ia64-1.C
- 676523103b ./gcc/testsuite/g++.old-deja/g++.eh/inline1.C
-1365103519b ./gcc/testsuite/g++.old-deja/g++.eh/inline2.C
-3790493474b ./gcc/testsuite/g++.old-deja/g++.eh/new1.C
- 535130965b ./gcc/testsuite/g++.old-deja/g++.eh/new2.C
-3634137795b ./gcc/testsuite/g++.old-deja/g++.eh/pdel1.C
-2137801791b ./gcc/testsuite/g++.old-deja/g++.eh/pdel2.C
- 281186416b ./gcc/testsuite/g++.old-deja/g++.eh/ptr1.C
- 576857198b ./gcc/testsuite/g++.old-deja/g++.eh/ptrmem1.C
-1768169036b ./gcc/testsuite/g++.old-deja/g++.eh/rethrow1.C
-2742043120b ./gcc/testsuite/g++.old-deja/g++.eh/rethrow2.C
- 797701813b ./gcc/testsuite/g++.old-deja/g++.eh/rethrow3.C
-1092183660b ./gcc/testsuite/g++.old-deja/g++.eh/rethrow4.C
-1908139767b ./gcc/testsuite/g++.old-deja/g++.eh/rethrow5.C
-1673259087b ./gcc/testsuite/g++.old-deja/g++.eh/rethrow6.C
-3587234868b ./gcc/testsuite/g++.old-deja/g++.eh/spec1.C
- 575869724b ./gcc/testsuite/g++.old-deja/g++.eh/spec2.C
-3512769980b ./gcc/testsuite/g++.old-deja/g++.eh/spec3.C
- 733574694b ./gcc/testsuite/g++.old-deja/g++.eh/spec4.C
-3529701833b ./gcc/testsuite/g++.old-deja/g++.eh/spec5.C
-3545946102b ./gcc/testsuite/g++.old-deja/g++.eh/spec6.C
-3657524244b ./gcc/testsuite/g++.old-deja/g++.eh/spec7.C
-1957276023b ./gcc/testsuite/g++.old-deja/g++.eh/terminate1.C
-2882522407b ./gcc/testsuite/g++.old-deja/g++.eh/terminate2.C
- 2244717b ./gcc/testsuite/g++.old-deja/g++.eh/throw1.C
- 67637737b ./gcc/testsuite/g++.old-deja/g++.eh/throw2.C
-2714145986b ./gcc/testsuite/g++.old-deja/g++.eh/tmpl1.C
-3174750751b ./gcc/testsuite/g++.old-deja/g++.eh/tmpl2.C
-2148656642b ./gcc/testsuite/g++.old-deja/g++.eh/tmpl3.C
-2285781015b ./gcc/testsuite/g++.old-deja/g++.eh/tmpl4.C
-3757999789b ./gcc/testsuite/g++.old-deja/g++.eh/tmpl5.C
-2082523657b ./gcc/testsuite/g++.old-deja/g++.eh/tmpl6.C
-1395348093b ./gcc/testsuite/g++.old-deja/g++.eh/unwind1.C
-4087820734b ./gcc/testsuite/g++.old-deja/g++.eh/vbase1.C
- 7954090b ./gcc/testsuite/g++.old-deja/g++.eh/vbase2.C
- 597975959b ./gcc/testsuite/g++.old-deja/g++.eh/vbase3.C
-3027059078b ./gcc/testsuite/g++.old-deja/g++.eh/vbase4.C
-4199943262b ./gcc/testsuite/g++.old-deja/g++.ext/addrfunc1.C
- 159934505b ./gcc/testsuite/g++.old-deja/g++.ext/addrfunc2.C
- 585898936b ./gcc/testsuite/g++.old-deja/g++.ext/addrfunc3.C
-2984020525b ./gcc/testsuite/g++.old-deja/g++.ext/addrfunc4.C
-3380550287b ./gcc/testsuite/g++.old-deja/g++.ext/anon1.C
-1974705038b ./gcc/testsuite/g++.old-deja/g++.ext/anon2.C
- 813082081b ./gcc/testsuite/g++.old-deja/g++.ext/anon3.C
-4292815255b ./gcc/testsuite/g++.old-deja/g++.ext/array1.C
-2976027349b ./gcc/testsuite/g++.old-deja/g++.ext/array2.C
-3272522793b ./gcc/testsuite/g++.old-deja/g++.ext/array3.C
-3707624253b ./gcc/testsuite/g++.old-deja/g++.ext/array4.C
-2445582885b ./gcc/testsuite/g++.old-deja/g++.ext/arrnew2.C
-1417245570b ./gcc/testsuite/g++.old-deja/g++.ext/arrnew.C
-3682137158b ./gcc/testsuite/g++.old-deja/g++.ext/asmspec1.C
-4101102615b ./gcc/testsuite/g++.old-deja/g++.ext/attrib1.C
-3350275577b ./gcc/testsuite/g++.old-deja/g++.ext/attrib2.C
-1053733436b ./gcc/testsuite/g++.old-deja/g++.ext/attrib3.C
-1626467181b ./gcc/testsuite/g++.old-deja/g++.ext/attrib4.C
-3199258020b ./gcc/testsuite/g++.old-deja/g++.ext/attrib5.C
-1231673353b ./gcc/testsuite/g++.old-deja/g++.ext/attrib6.C
-1172027159b ./gcc/testsuite/g++.old-deja/g++.ext/bound1.C
-2395600799b ./gcc/testsuite/g++.old-deja/g++.ext/constructor.C
-2324105514b ./gcc/testsuite/g++.old-deja/g++.ext/default.C
-3043261002b ./gcc/testsuite/g++.old-deja/g++.ext/delvoid.C
-1220140779b ./gcc/testsuite/g++.old-deja/g++.ext/jump1.C
-3122237559b ./gcc/testsuite/g++.old-deja/g++.ext/label1.C
-1955233630b ./gcc/testsuite/g++.old-deja/g++.ext/label2.C
-1326698912b ./gcc/testsuite/g++.old-deja/g++.ext/memconst.C
-3051345065b ./gcc/testsuite/g++.old-deja/g++.ext/namedret1.C
-1721594512b ./gcc/testsuite/g++.old-deja/g++.ext/namedret2.C
-1693910821b ./gcc/testsuite/g++.old-deja/g++.ext/namedret3.C
-4236509390b ./gcc/testsuite/g++.old-deja/g++.ext/noweak1.C
-1485906792b ./gcc/testsuite/g++.old-deja/g++.ext/null1.C
-1534627522b ./gcc/testsuite/g++.old-deja/g++.ext/overload1.C
-2789279145b ./gcc/testsuite/g++.old-deja/g++.ext/pretty2.C
-1721106953b ./gcc/testsuite/g++.old-deja/g++.ext/pretty3.C
-2283773682b ./gcc/testsuite/g++.old-deja/g++.ext/pretty4.C
-2953041955b ./gcc/testsuite/g++.old-deja/g++.ext/pretty.C
-1326958568b ./gcc/testsuite/g++.old-deja/g++.ext/restrict1.C
-1853972109b ./gcc/testsuite/g++.old-deja/g++.ext/return1.C
- 463327965b ./gcc/testsuite/g++.old-deja/g++.ext/stmtexpr1.C
-3353267413b ./gcc/testsuite/g++.old-deja/g++.ext/syshdr1.C
-1434079824b ./gcc/testsuite/g++.old-deja/g++.ext/typename1.C
-3055500151b ./gcc/testsuite/g++.old-deja/g++.ext/typeof1.C
-3482525745b ./gcc/testsuite/g++.old-deja/g++.ext/typeof2.C
- 122985883b ./gcc/testsuite/g++.old-deja/g++.gb/README
-3834907847b ./gcc/testsuite/g++.old-deja/g++.gb/scope01.C
-2804649369b ./gcc/testsuite/g++.old-deja/g++.gb/scope02.C
- 435367782b ./gcc/testsuite/g++.old-deja/g++.gb/scope03.C
-4065080798b ./gcc/testsuite/g++.old-deja/g++.gb/scope04.C
-3804153482b ./gcc/testsuite/g++.old-deja/g++.gb/scope05.C
- 810866747b ./gcc/testsuite/g++.old-deja/g++.gb/scope06.C
-2470529748b ./gcc/testsuite/g++.old-deja/g++.gb/scope07.C
-3372453011b ./gcc/testsuite/g++.old-deja/g++.gb/scope08.C
-3802132245b ./gcc/testsuite/g++.old-deja/g++.gb/scope09.C
-1805528465b ./gcc/testsuite/g++.old-deja/g++.gb/scope10.C
-2330909859b ./gcc/testsuite/g++.old-deja/g++.gb/scope11.C
-3275516446b ./gcc/testsuite/g++.old-deja/g++.gb/scope12.C
- 732967750b ./gcc/testsuite/g++.old-deja/g++.gb/scope13.C
- 939161176b ./gcc/testsuite/g++.old-deja/g++.jason/2371.C
-3968774299b ./gcc/testsuite/g++.old-deja/g++.jason/3523.C
-1546884424b ./gcc/testsuite/g++.old-deja/g++.jason/access10.C
- 739404807b ./gcc/testsuite/g++.old-deja/g++.jason/access11.C
- 512908443b ./gcc/testsuite/g++.old-deja/g++.jason/access12.C
-2380497170b ./gcc/testsuite/g++.old-deja/g++.jason/access13.C
- 955814506b ./gcc/testsuite/g++.old-deja/g++.jason/access14.C
- 896691556b ./gcc/testsuite/g++.old-deja/g++.jason/access15.C
- 667302295b ./gcc/testsuite/g++.old-deja/g++.jason/access16.C
-2572582943b ./gcc/testsuite/g++.old-deja/g++.jason/access17.C
-2772251892b ./gcc/testsuite/g++.old-deja/g++.jason/access18.C
- 906409788b ./gcc/testsuite/g++.old-deja/g++.jason/access1.C
-2659493566b ./gcc/testsuite/g++.old-deja/g++.jason/access20.C
-2929579271b ./gcc/testsuite/g++.old-deja/g++.jason/access21.C
-3020128764b ./gcc/testsuite/g++.old-deja/g++.jason/access22.C
-2730640435b ./gcc/testsuite/g++.old-deja/g++.jason/access23.C
- 338921992b ./gcc/testsuite/g++.old-deja/g++.jason/access24.C
-3689044609b ./gcc/testsuite/g++.old-deja/g++.jason/access2.C
- 642011051b ./gcc/testsuite/g++.old-deja/g++.jason/access3.C
-3641897763b ./gcc/testsuite/g++.old-deja/g++.jason/access4.C
-3768207880b ./gcc/testsuite/g++.old-deja/g++.jason/access5.C
-1482167820b ./gcc/testsuite/g++.old-deja/g++.jason/access6.C
-2788333672b ./gcc/testsuite/g++.old-deja/g++.jason/access7.C
-3806038473b ./gcc/testsuite/g++.old-deja/g++.jason/access8.C
- 570522205b ./gcc/testsuite/g++.old-deja/g++.jason/access9.C
-2808067800b ./gcc/testsuite/g++.old-deja/g++.jason/aggregate.C
-3728379159b ./gcc/testsuite/g++.old-deja/g++.jason/ambig1.C
-2153743197b ./gcc/testsuite/g++.old-deja/g++.jason/ambig2.C
- 970394079b ./gcc/testsuite/g++.old-deja/g++.jason/ambig3.C
-3198278705b ./gcc/testsuite/g++.old-deja/g++.jason/anon2.C
- 221090634b ./gcc/testsuite/g++.old-deja/g++.jason/anon3.C
-1050500875b ./gcc/testsuite/g++.old-deja/g++.jason/anon4.C
-3828622053b ./gcc/testsuite/g++.old-deja/g++.jason/anon.C
-1263298999b ./gcc/testsuite/g++.old-deja/g++.jason/binding2.C
-2916172455b ./gcc/testsuite/g++.old-deja/g++.jason/binding3.C
-3877580602b ./gcc/testsuite/g++.old-deja/g++.jason/binding.C
- 406790293b ./gcc/testsuite/g++.old-deja/g++.jason/bool2.C
-4269822269b ./gcc/testsuite/g++.old-deja/g++.jason/bool3.C
-4291089432b ./gcc/testsuite/g++.old-deja/g++.jason/bool4.C
- 423379068b ./gcc/testsuite/g++.old-deja/g++.jason/bool5.C
-3708944851b ./gcc/testsuite/g++.old-deja/g++.jason/bool6.C
-2188617432b ./gcc/testsuite/g++.old-deja/g++.jason/bool7.C
- 876810594b ./gcc/testsuite/g++.old-deja/g++.jason/bool.C
- 910455504b ./gcc/testsuite/g++.old-deja/g++.jason/builtin2.C
-1992610065b ./gcc/testsuite/g++.old-deja/g++.jason/builtin.C
-3965054847b ./gcc/testsuite/g++.old-deja/g++.jason/byval2.C
-3007011667b ./gcc/testsuite/g++.old-deja/g++.jason/byval3.C
-2992950563b ./gcc/testsuite/g++.old-deja/g++.jason/byval.C
-4208843404b ./gcc/testsuite/g++.old-deja/g++.jason/cast1.C
- 864249402b ./gcc/testsuite/g++.old-deja/g++.jason/cast2.C
-3757749527b ./gcc/testsuite/g++.old-deja/g++.jason/cast3.C
-1840939242b ./gcc/testsuite/g++.old-deja/g++.jason/c-inline.C
-3337873852b ./gcc/testsuite/g++.old-deja/g++.jason/cleanup2.C
- 807930816b ./gcc/testsuite/g++.old-deja/g++.jason/cleanup.C
-4038763735b ./gcc/testsuite/g++.old-deja/g++.jason/complete1.C
-2828665920b ./gcc/testsuite/g++.old-deja/g++.jason/cond2.C
-4148991120b ./gcc/testsuite/g++.old-deja/g++.jason/cond.C
-3479274833b ./gcc/testsuite/g++.old-deja/g++.jason/condexp.C
-1286943233b ./gcc/testsuite/g++.old-deja/g++.jason/const2.C
-1359832484b ./gcc/testsuite/g++.old-deja/g++.jason/const3.C
- 217115665b ./gcc/testsuite/g++.old-deja/g++.jason/const4.C
- 455783151b ./gcc/testsuite/g++.old-deja/g++.jason/const.C
-2571490602b ./gcc/testsuite/g++.old-deja/g++.jason/context.C
-3177251757b ./gcc/testsuite/g++.old-deja/g++.jason/conversion10.C
- 79208780b ./gcc/testsuite/g++.old-deja/g++.jason/conversion11.C
- 960166000b ./gcc/testsuite/g++.old-deja/g++.jason/conversion2.C
-2252122787b ./gcc/testsuite/g++.old-deja/g++.jason/conversion3.C
-2550379102b ./gcc/testsuite/g++.old-deja/g++.jason/conversion4.C
-2689671676b ./gcc/testsuite/g++.old-deja/g++.jason/conversion5.C
- 495771780b ./gcc/testsuite/g++.old-deja/g++.jason/conversion6.C
- 537258674b ./gcc/testsuite/g++.old-deja/g++.jason/conversion7.C
- 972941297b ./gcc/testsuite/g++.old-deja/g++.jason/conversion8.C
-1301591055b ./gcc/testsuite/g++.old-deja/g++.jason/conversion9.C
- 390853410b ./gcc/testsuite/g++.old-deja/g++.jason/conversion.C
-3868623548b ./gcc/testsuite/g++.old-deja/g++.jason/crash10.C
- 672669842b ./gcc/testsuite/g++.old-deja/g++.jason/crash11.C
-2043944323b ./gcc/testsuite/g++.old-deja/g++.jason/crash12.C
-3761548571b ./gcc/testsuite/g++.old-deja/g++.jason/crash1.C
-2330655654b ./gcc/testsuite/g++.old-deja/g++.jason/crash3.C
- 631879164b ./gcc/testsuite/g++.old-deja/g++.jason/crash4.C
-1898220452b ./gcc/testsuite/g++.old-deja/g++.jason/crash5.C
-1438239883b ./gcc/testsuite/g++.old-deja/g++.jason/crash6.C
- 221060352b ./gcc/testsuite/g++.old-deja/g++.jason/crash7.C
-2108184879b ./gcc/testsuite/g++.old-deja/g++.jason/crash8.C
- 332002169b ./gcc/testsuite/g++.old-deja/g++.jason/crash9.C
-4104833271b ./gcc/testsuite/g++.old-deja/g++.jason/ctor1.C
-3353106178b ./gcc/testsuite/g++.old-deja/g++.jason/ctor2.C
- 832809616b ./gcc/testsuite/g++.old-deja/g++.jason/dcast1.C
-4007059639b ./gcc/testsuite/g++.old-deja/g++.jason/dcast2.C
-1042330916b ./gcc/testsuite/g++.old-deja/g++.jason/dcast3.C
-1151204277b ./gcc/testsuite/g++.old-deja/g++.jason/default1.C
- 480787751b ./gcc/testsuite/g++.old-deja/g++.jason/default2.C
-2355609557b ./gcc/testsuite/g++.old-deja/g++.jason/default3.C
-2216109544b ./gcc/testsuite/g++.old-deja/g++.jason/defctor.C
-3740171614b ./gcc/testsuite/g++.old-deja/g++.jason/delete1.C
-3574023328b ./gcc/testsuite/g++.old-deja/g++.jason/delete2.C
-2124825264b ./gcc/testsuite/g++.old-deja/g++.jason/delete3.C
-2782278746b ./gcc/testsuite/g++.old-deja/g++.jason/destruct2.C
-2184115717b ./gcc/testsuite/g++.old-deja/g++.jason/destruct3.C
-2354427725b ./gcc/testsuite/g++.old-deja/g++.jason/destruct4.C
-2111475973b ./gcc/testsuite/g++.old-deja/g++.jason/destruct.C
-1012609499b ./gcc/testsuite/g++.old-deja/g++.jason/dot.C
-2941621886b ./gcc/testsuite/g++.old-deja/g++.jason/dtor2.C
-2007513193b ./gcc/testsuite/g++.old-deja/g++.jason/dtor3.C
-4216434532b ./gcc/testsuite/g++.old-deja/g++.jason/dtor4.C
-2710770854b ./gcc/testsuite/g++.old-deja/g++.jason/dtor5.C
-2968837117b ./gcc/testsuite/g++.old-deja/g++.jason/dtor.C
-3290035079b ./gcc/testsuite/g++.old-deja/g++.jason/enum2.C
-2249058705b ./gcc/testsuite/g++.old-deja/g++.jason/enum3.C
-2986066562b ./gcc/testsuite/g++.old-deja/g++.jason/enum4.C
-3998200564b ./gcc/testsuite/g++.old-deja/g++.jason/enum5.C
-1384011452b ./gcc/testsuite/g++.old-deja/g++.jason/enum6.C
-1992437340b ./gcc/testsuite/g++.old-deja/g++.jason/enum7.C
- 301848339b ./gcc/testsuite/g++.old-deja/g++.jason/enum8.C
-1321613329b ./gcc/testsuite/g++.old-deja/g++.jason/enum.C
-4190940764b ./gcc/testsuite/g++.old-deja/g++.jason/explicit.C
-2873291254b ./gcc/testsuite/g++.old-deja/g++.jason/expr1.C
- 58017093b ./gcc/testsuite/g++.old-deja/g++.jason/friend2.C
- 547919805b ./gcc/testsuite/g++.old-deja/g++.jason/friend.C
-2216580894b ./gcc/testsuite/g++.old-deja/g++.jason/groff1.C
-2374680588b ./gcc/testsuite/g++.old-deja/g++.jason/hmc1.C
-4181972071b ./gcc/testsuite/g++.old-deja/g++.jason/incomplete1.C
-3516752956b ./gcc/testsuite/g++.old-deja/g++.jason/incomplete2.C
-1181670562b ./gcc/testsuite/g++.old-deja/g++.jason/init2.C
-1300989165b ./gcc/testsuite/g++.old-deja/g++.jason/init3.C
-1056655196b ./gcc/testsuite/g++.old-deja/g++.jason/init4.C
-3118714958b ./gcc/testsuite/g++.old-deja/g++.jason/init.C
-1350717964b ./gcc/testsuite/g++.old-deja/g++.jason/inline2.C
-3599001559b ./gcc/testsuite/g++.old-deja/g++.jason/inline3.C
-3360472142b ./gcc/testsuite/g++.old-deja/g++.jason/inline.C
-1197315088b ./gcc/testsuite/g++.old-deja/g++.jason/jump.C
-4143262839b ./gcc/testsuite/g++.old-deja/g++.jason/lex1.C
-3982979093b ./gcc/testsuite/g++.old-deja/g++.jason/lineno2.C
-1533566087b ./gcc/testsuite/g++.old-deja/g++.jason/lineno3.C
-3991632661b ./gcc/testsuite/g++.old-deja/g++.jason/lineno4.C
-2838970132b ./gcc/testsuite/g++.old-deja/g++.jason/lineno5.C
-4180318534b ./gcc/testsuite/g++.old-deja/g++.jason/lineno.C
-3655803253b ./gcc/testsuite/g++.old-deja/g++.jason/local.C
-1387367938b ./gcc/testsuite/g++.old-deja/g++.jason/lookup2.C
- 999889620b ./gcc/testsuite/g++.old-deja/g++.jason/lookup3.C
-1599936145b ./gcc/testsuite/g++.old-deja/g++.jason/lookup.C
- 568852262b ./gcc/testsuite/g++.old-deja/g++.jason/loverload3.C
-3199076242b ./gcc/testsuite/g++.old-deja/g++.jason/loverload4.C
-2443057294b ./gcc/testsuite/g++.old-deja/g++.jason/loverload.C
-1478776091b ./gcc/testsuite/g++.old-deja/g++.jason/lvalue2.C
-2486776920b ./gcc/testsuite/g++.old-deja/g++.jason/lvalue3.C
-2798615405b ./gcc/testsuite/g++.old-deja/g++.jason/lvalue4.C
-3786923619b ./gcc/testsuite/g++.old-deja/g++.jason/lvalue.C
-4250081538b ./gcc/testsuite/g++.old-deja/g++.jason/mangle1.C
-2194458585b ./gcc/testsuite/g++.old-deja/g++.jason/mangle2.C
-3647115525b ./gcc/testsuite/g++.old-deja/g++.jason/mangle3.C
-2894228846b ./gcc/testsuite/g++.old-deja/g++.jason/member.C
-1051601664b ./gcc/testsuite/g++.old-deja/g++.jason/method.C
-4260969442b ./gcc/testsuite/g++.old-deja/g++.jason/mi.C
-1705975415b ./gcc/testsuite/g++.old-deja/g++.jason/mutable1.C
-1037927762b ./gcc/testsuite/g++.old-deja/g++.jason/nested1.C
-2952138325b ./gcc/testsuite/g++.old-deja/g++.jason/nested2.C
-3141195955b ./gcc/testsuite/g++.old-deja/g++.jason/nested4.C
-1483140137b ./gcc/testsuite/g++.old-deja/g++.jason/nested5.C
- 626314633b ./gcc/testsuite/g++.old-deja/g++.jason/nested6.C
-1780563080b ./gcc/testsuite/g++.old-deja/g++.jason/nested7.C
- 496854853b ./gcc/testsuite/g++.old-deja/g++.jason/nested8.C
- 814313341b ./gcc/testsuite/g++.old-deja/g++.jason/net2.C
-2330092476b ./gcc/testsuite/g++.old-deja/g++.jason/net.C
-4108034998b ./gcc/testsuite/g++.old-deja/g++.jason/new2.C
-2192651651b ./gcc/testsuite/g++.old-deja/g++.jason/new3.C
-2568972186b ./gcc/testsuite/g++.old-deja/g++.jason/new4.C
-3405685275b ./gcc/testsuite/g++.old-deja/g++.jason/new5.C
- 761357985b ./gcc/testsuite/g++.old-deja/g++.jason/new.C
- 293878671b ./gcc/testsuite/g++.old-deja/g++.jason/offset1.C
-4268803500b ./gcc/testsuite/g++.old-deja/g++.jason/offset2.C
-3340471795b ./gcc/testsuite/g++.old-deja/g++.jason/offset3.C
- 832296383b ./gcc/testsuite/g++.old-deja/g++.jason/offset4.C
-1182090566b ./gcc/testsuite/g++.old-deja/g++.jason/opeq2.C
- 454853917b ./gcc/testsuite/g++.old-deja/g++.jason/opeq3.C
-2472414567b ./gcc/testsuite/g++.old-deja/g++.jason/opeq4.C
- 238172458b ./gcc/testsuite/g++.old-deja/g++.jason/opeq5.C
-4059740226b ./gcc/testsuite/g++.old-deja/g++.jason/opeq6.C
-1753231050b ./gcc/testsuite/g++.old-deja/g++.jason/opeq.C
- 688207169b ./gcc/testsuite/g++.old-deja/g++.jason/operator2.C
- 577328766b ./gcc/testsuite/g++.old-deja/g++.jason/operator.C
- 754653379b ./gcc/testsuite/g++.old-deja/g++.jason/opover.C
-2635243370b ./gcc/testsuite/g++.old-deja/g++.jason/optimize2.C
-1303452248b ./gcc/testsuite/g++.old-deja/g++.jason/optimize.C
- 836020261b ./gcc/testsuite/g++.old-deja/g++.jason/overload11.C
-3916743053b ./gcc/testsuite/g++.old-deja/g++.jason/overload12.C
-2565712491b ./gcc/testsuite/g++.old-deja/g++.jason/overload13.C
- 726365895b ./gcc/testsuite/g++.old-deja/g++.jason/overload14.C
-1696533816b ./gcc/testsuite/g++.old-deja/g++.jason/overload15.C
- 472911773b ./gcc/testsuite/g++.old-deja/g++.jason/overload16.C
- 996751401b ./gcc/testsuite/g++.old-deja/g++.jason/overload17.C
-3773007718b ./gcc/testsuite/g++.old-deja/g++.jason/overload18.C
-2041143457b ./gcc/testsuite/g++.old-deja/g++.jason/overload19.C
-3391930718b ./gcc/testsuite/g++.old-deja/g++.jason/overload1.C
-1992601156b ./gcc/testsuite/g++.old-deja/g++.jason/overload20.C
- 415714207b ./gcc/testsuite/g++.old-deja/g++.jason/overload21.C
- 109216083b ./gcc/testsuite/g++.old-deja/g++.jason/overload22.C
-2153494648b ./gcc/testsuite/g++.old-deja/g++.jason/overload23.C
-3487011657b ./gcc/testsuite/g++.old-deja/g++.jason/overload24.C
- 419380100b ./gcc/testsuite/g++.old-deja/g++.jason/overload26.C
-2193486232b ./gcc/testsuite/g++.old-deja/g++.jason/overload27.C
-2342247690b ./gcc/testsuite/g++.old-deja/g++.jason/overload28.C
-4082490103b ./gcc/testsuite/g++.old-deja/g++.jason/overload29.C
-1769317874b ./gcc/testsuite/g++.old-deja/g++.jason/overload2.C
-1565023156b ./gcc/testsuite/g++.old-deja/g++.jason/overload30.C
-1649077682b ./gcc/testsuite/g++.old-deja/g++.jason/overload31.C
-3667286916b ./gcc/testsuite/g++.old-deja/g++.jason/overload32.C
- 226155295b ./gcc/testsuite/g++.old-deja/g++.jason/overload33.C
-3641493497b ./gcc/testsuite/g++.old-deja/g++.jason/overload34.C
-3176325712b ./gcc/testsuite/g++.old-deja/g++.jason/overload35.C
-3976015069b ./gcc/testsuite/g++.old-deja/g++.jason/overload36.C
-1344900458b ./gcc/testsuite/g++.old-deja/g++.jason/overload3.C
-1743964910b ./gcc/testsuite/g++.old-deja/g++.jason/overload4.C
-2748549869b ./gcc/testsuite/g++.old-deja/g++.jason/overload5.C
-2771085460b ./gcc/testsuite/g++.old-deja/g++.jason/overload6.C
-4124673438b ./gcc/testsuite/g++.old-deja/g++.jason/overload7.C
-2918456708b ./gcc/testsuite/g++.old-deja/g++.jason/overload8.C
-2194408276b ./gcc/testsuite/g++.old-deja/g++.jason/overload9.C
-2991781301b ./gcc/testsuite/g++.old-deja/g++.jason/overload.C
- 947289597b ./gcc/testsuite/g++.old-deja/g++.jason/parse10.C
-3841541211b ./gcc/testsuite/g++.old-deja/g++.jason/parse11.C
-3217450619b ./gcc/testsuite/g++.old-deja/g++.jason/parse12.C
-1215499670b ./gcc/testsuite/g++.old-deja/g++.jason/parse13.C
-3456522595b ./gcc/testsuite/g++.old-deja/g++.jason/parse14.C
-4063544381b ./gcc/testsuite/g++.old-deja/g++.jason/parse1.C
-3921597478b ./gcc/testsuite/g++.old-deja/g++.jason/parse2.C
-2265325245b ./gcc/testsuite/g++.old-deja/g++.jason/parse3.C
-1946466186b ./gcc/testsuite/g++.old-deja/g++.jason/parse4.C
-2253877513b ./gcc/testsuite/g++.old-deja/g++.jason/parse5.C
-1310766643b ./gcc/testsuite/g++.old-deja/g++.jason/parse6.C
-1407239852b ./gcc/testsuite/g++.old-deja/g++.jason/parse7.C
-2608587867b ./gcc/testsuite/g++.old-deja/g++.jason/parse8.C
-2097676131b ./gcc/testsuite/g++.old-deja/g++.jason/parse9.C
-2869094375b ./gcc/testsuite/g++.old-deja/g++.jason/pmem2.C
- 515838035b ./gcc/testsuite/g++.old-deja/g++.jason/pmem3.C
- 882646803b ./gcc/testsuite/g++.old-deja/g++.jason/pmem4.C
-3300711445b ./gcc/testsuite/g++.old-deja/g++.jason/pmem.C
-2099557976b ./gcc/testsuite/g++.old-deja/g++.jason/pmf2.C
-2245415039b ./gcc/testsuite/g++.old-deja/g++.jason/pmf3.C
-2911197085b ./gcc/testsuite/g++.old-deja/g++.jason/pmf4.C
-3829985497b ./gcc/testsuite/g++.old-deja/g++.jason/pmf5.C
-2138251562b ./gcc/testsuite/g++.old-deja/g++.jason/pmf6.C
-2487032279b ./gcc/testsuite/g++.old-deja/g++.jason/pmf7.C
-2987146868b ./gcc/testsuite/g++.old-deja/g++.jason/pmf8.C
- 788166114b ./gcc/testsuite/g++.old-deja/g++.jason/pmf9.C
-2275329075b ./gcc/testsuite/g++.old-deja/g++.jason/pmf.C
-1423191415b ./gcc/testsuite/g++.old-deja/g++.jason/pmftemp.C
-2592898175b ./gcc/testsuite/g++.old-deja/g++.jason/precedence.C
-2132972863b ./gcc/testsuite/g++.old-deja/g++.jason/redecl1.C
-2423430425b ./gcc/testsuite/g++.old-deja/g++.jason/ref10.C
- 252373474b ./gcc/testsuite/g++.old-deja/g++.jason/ref11.C
-4220963029b ./gcc/testsuite/g++.old-deja/g++.jason/ref12.C
- 829230497b ./gcc/testsuite/g++.old-deja/g++.jason/ref1.C
-1138343018b ./gcc/testsuite/g++.old-deja/g++.jason/ref2.C
-4198332542b ./gcc/testsuite/g++.old-deja/g++.jason/ref3.C
-3108698233b ./gcc/testsuite/g++.old-deja/g++.jason/ref4.C
- 649579178b ./gcc/testsuite/g++.old-deja/g++.jason/ref5.C
-1504658699b ./gcc/testsuite/g++.old-deja/g++.jason/ref6.C
-3285486142b ./gcc/testsuite/g++.old-deja/g++.jason/ref7.C
-1357591997b ./gcc/testsuite/g++.old-deja/g++.jason/ref8.C
-1262470243b ./gcc/testsuite/g++.old-deja/g++.jason/ref9.C
-2679324150b ./gcc/testsuite/g++.old-deja/g++.jason/report.C
-1302488236b ./gcc/testsuite/g++.old-deja/g++.jason/return2.C
-1422012899b ./gcc/testsuite/g++.old-deja/g++.jason/return3.C
-2084961742b ./gcc/testsuite/g++.old-deja/g++.jason/return.C
- 364370005b ./gcc/testsuite/g++.old-deja/g++.jason/rfg10.C
-3958400971b ./gcc/testsuite/g++.old-deja/g++.jason/rfg11.C
- 288348052b ./gcc/testsuite/g++.old-deja/g++.jason/rfg12.C
-1796028566b ./gcc/testsuite/g++.old-deja/g++.jason/rfg13.C
-1386111440b ./gcc/testsuite/g++.old-deja/g++.jason/rfg14.C
-2961300206b ./gcc/testsuite/g++.old-deja/g++.jason/rfg16.C
-3703739742b ./gcc/testsuite/g++.old-deja/g++.jason/rfg17.C
-3495930194b ./gcc/testsuite/g++.old-deja/g++.jason/rfg18.C
-4282982182b ./gcc/testsuite/g++.old-deja/g++.jason/rfg1.C
-3118729702b ./gcc/testsuite/g++.old-deja/g++.jason/rfg20.C
- 258053642b ./gcc/testsuite/g++.old-deja/g++.jason/rfg21.C
-1272258763b ./gcc/testsuite/g++.old-deja/g++.jason/rfg22.C
-4108777186b ./gcc/testsuite/g++.old-deja/g++.jason/rfg23.C
-2848746038b ./gcc/testsuite/g++.old-deja/g++.jason/rfg24.C
- 641797911b ./gcc/testsuite/g++.old-deja/g++.jason/rfg25.C
-4125676781b ./gcc/testsuite/g++.old-deja/g++.jason/rfg26.C
-2764234637b ./gcc/testsuite/g++.old-deja/g++.jason/rfg27.C
- 838463016b ./gcc/testsuite/g++.old-deja/g++.jason/rfg28.C
-3117732826b ./gcc/testsuite/g++.old-deja/g++.jason/rfg2.C
- 148681664b ./gcc/testsuite/g++.old-deja/g++.jason/rfg3.C
-3129549671b ./gcc/testsuite/g++.old-deja/g++.jason/rfg4.C
- 295301056b ./gcc/testsuite/g++.old-deja/g++.jason/rfg5.C
- 133547703b ./gcc/testsuite/g++.old-deja/g++.jason/rfg6.C
-4261887891b ./gcc/testsuite/g++.old-deja/g++.jason/rfg7.C
-2396445002b ./gcc/testsuite/g++.old-deja/g++.jason/rfg8.C
-1855801091b ./gcc/testsuite/g++.old-deja/g++.jason/rfg9.C
-4260838706b ./gcc/testsuite/g++.old-deja/g++.jason/rvalue1.C
-2113044148b ./gcc/testsuite/g++.old-deja/g++.jason/rvalue2.C
-3051419482b ./gcc/testsuite/g++.old-deja/g++.jason/rvalue3.C
-3805792750b ./gcc/testsuite/g++.old-deja/g++.jason/scoping10.C
-3393161477b ./gcc/testsuite/g++.old-deja/g++.jason/scoping11.C
- 703500731b ./gcc/testsuite/g++.old-deja/g++.jason/scoping12.C
-1582373194b ./gcc/testsuite/g++.old-deja/g++.jason/scoping13.C
-2742637818b ./gcc/testsuite/g++.old-deja/g++.jason/scoping14.C
-2567200952b ./gcc/testsuite/g++.old-deja/g++.jason/scoping15.C
-3388918749b ./gcc/testsuite/g++.old-deja/g++.jason/scoping16.C
-2179647693b ./gcc/testsuite/g++.old-deja/g++.jason/scoping17.C
-1834126148b ./gcc/testsuite/g++.old-deja/g++.jason/scoping2.C
- 136403461b ./gcc/testsuite/g++.old-deja/g++.jason/scoping3.C
-1602656589b ./gcc/testsuite/g++.old-deja/g++.jason/scoping4.C
-3284836457b ./gcc/testsuite/g++.old-deja/g++.jason/scoping5.C
-1370340055b ./gcc/testsuite/g++.old-deja/g++.jason/scoping6.C
-3067776040b ./gcc/testsuite/g++.old-deja/g++.jason/scoping7.C
-2559597057b ./gcc/testsuite/g++.old-deja/g++.jason/scoping8.C
-3161523697b ./gcc/testsuite/g++.old-deja/g++.jason/scoping9.C
-2200136874b ./gcc/testsuite/g++.old-deja/g++.jason/scoping.C
-3886458318b ./gcc/testsuite/g++.old-deja/g++.jason/shadow1.C
-1823439671b ./gcc/testsuite/g++.old-deja/g++.jason/soverload.C
-2071551425b ./gcc/testsuite/g++.old-deja/g++.jason/special.C
-1986795528b ./gcc/testsuite/g++.old-deja/g++.jason/static1.C
- 298249268b ./gcc/testsuite/g++.old-deja/g++.jason/synth10.C
-2450156296b ./gcc/testsuite/g++.old-deja/g++.jason/synth2.C
- 160110469b ./gcc/testsuite/g++.old-deja/g++.jason/synth3.C
-1411162779b ./gcc/testsuite/g++.old-deja/g++.jason/synth4.C
- 79423264b ./gcc/testsuite/g++.old-deja/g++.jason/synth5.C
-2282657951b ./gcc/testsuite/g++.old-deja/g++.jason/synth6.C
- 192973807b ./gcc/testsuite/g++.old-deja/g++.jason/synth7.C
-1655213980b ./gcc/testsuite/g++.old-deja/g++.jason/synth8.C
-1526912645b ./gcc/testsuite/g++.old-deja/g++.jason/synth9.C
-3703096829b ./gcc/testsuite/g++.old-deja/g++.jason/synth.C
-1892722905b ./gcc/testsuite/g++.old-deja/g++.jason/tempargs.C
-2837214502b ./gcc/testsuite/g++.old-deja/g++.jason/tempcons.C
- 869843187b ./gcc/testsuite/g++.old-deja/g++.jason/tempdest.C
-2805267621b ./gcc/testsuite/g++.old-deja/g++.jason/tempinst1.C
-3406530265b ./gcc/testsuite/g++.old-deja/g++.jason/template10.C
-2580181076b ./gcc/testsuite/g++.old-deja/g++.jason/template11.C
-1678941454b ./gcc/testsuite/g++.old-deja/g++.jason/template12.C
-2871221872b ./gcc/testsuite/g++.old-deja/g++.jason/template14.C
-1159298863b ./gcc/testsuite/g++.old-deja/g++.jason/template15.C
-2954276864b ./gcc/testsuite/g++.old-deja/g++.jason/template16.C
-1681885743b ./gcc/testsuite/g++.old-deja/g++.jason/template17.C
- 885790390b ./gcc/testsuite/g++.old-deja/g++.jason/template18.C
-3406115895b ./gcc/testsuite/g++.old-deja/g++.jason/template19.C
-3635346741b ./gcc/testsuite/g++.old-deja/g++.jason/template1.C
-3294085147b ./gcc/testsuite/g++.old-deja/g++.jason/template20.C
-1417003889b ./gcc/testsuite/g++.old-deja/g++.jason/template21.C
-3311958351b ./gcc/testsuite/g++.old-deja/g++.jason/template22.C
-1503356994b ./gcc/testsuite/g++.old-deja/g++.jason/template23.C
-2025042004b ./gcc/testsuite/g++.old-deja/g++.jason/template24.C
- 406184991b ./gcc/testsuite/g++.old-deja/g++.jason/template25.C
-2223219564b ./gcc/testsuite/g++.old-deja/g++.jason/template26.C
- 407308284b ./gcc/testsuite/g++.old-deja/g++.jason/template27.C
-2630100527b ./gcc/testsuite/g++.old-deja/g++.jason/template28.C
-3438625432b ./gcc/testsuite/g++.old-deja/g++.jason/template29.C
- 43030923b ./gcc/testsuite/g++.old-deja/g++.jason/template2.C
-2310025160b ./gcc/testsuite/g++.old-deja/g++.jason/template30.C
-3335790712b ./gcc/testsuite/g++.old-deja/g++.jason/template31.C
- 987062964b ./gcc/testsuite/g++.old-deja/g++.jason/template32.C
-1904333349b ./gcc/testsuite/g++.old-deja/g++.jason/template33.C
-2135579206b ./gcc/testsuite/g++.old-deja/g++.jason/template34.C
-3189860272b ./gcc/testsuite/g++.old-deja/g++.jason/template35.C
- 805289702b ./gcc/testsuite/g++.old-deja/g++.jason/template36.C
-2952351972b ./gcc/testsuite/g++.old-deja/g++.jason/template37.C
-1653595335b ./gcc/testsuite/g++.old-deja/g++.jason/template39.C
-2243617030b ./gcc/testsuite/g++.old-deja/g++.jason/template3.C
- 856312588b ./gcc/testsuite/g++.old-deja/g++.jason/template40.C
-3809808817b ./gcc/testsuite/g++.old-deja/g++.jason/template41.C
-1916885555b ./gcc/testsuite/g++.old-deja/g++.jason/template42.C
-2401225387b ./gcc/testsuite/g++.old-deja/g++.jason/template43.C
- 702715140b ./gcc/testsuite/g++.old-deja/g++.jason/template44.C
-2458850401b ./gcc/testsuite/g++.old-deja/g++.jason/template4.C
-3543005329b ./gcc/testsuite/g++.old-deja/g++.jason/template5.C
- 769854245b ./gcc/testsuite/g++.old-deja/g++.jason/template6.C
-2079411687b ./gcc/testsuite/g++.old-deja/g++.jason/template7.C
- 700019405b ./gcc/testsuite/g++.old-deja/g++.jason/template8.C
-3077908891b ./gcc/testsuite/g++.old-deja/g++.jason/template9.C
-2081867311b ./gcc/testsuite/g++.old-deja/g++.jason/temporary2.C
-3434711731b ./gcc/testsuite/g++.old-deja/g++.jason/temporary3.C
-2488321595b ./gcc/testsuite/g++.old-deja/g++.jason/temporary4.C
-1042965294b ./gcc/testsuite/g++.old-deja/g++.jason/temporary5.C
-3514956217b ./gcc/testsuite/g++.old-deja/g++.jason/temporary6.C
-2628353068b ./gcc/testsuite/g++.old-deja/g++.jason/temporary7.C
-1522627554b ./gcc/testsuite/g++.old-deja/g++.jason/temporary8.C
-2460644105b ./gcc/testsuite/g++.old-deja/g++.jason/temporary.C
-3278590279b ./gcc/testsuite/g++.old-deja/g++.jason/tempover.C
-2151541644b ./gcc/testsuite/g++.old-deja/g++.jason/tempparse.C
-2779254633b ./gcc/testsuite/g++.old-deja/g++.jason/tempsub.C
- 853323087b ./gcc/testsuite/g++.old-deja/g++.jason/this.C
-4280002449b ./gcc/testsuite/g++.old-deja/g++.jason/thunk1.C
- 274835885b ./gcc/testsuite/g++.old-deja/g++.jason/thunk2.C
-1347779987b ./gcc/testsuite/g++.old-deja/g++.jason/thunk3.C
-2448025143b ./gcc/testsuite/g++.old-deja/g++.jason/tredecl2.C
-3072514699b ./gcc/testsuite/g++.old-deja/g++.jason/tredecl3.C
- 979924921b ./gcc/testsuite/g++.old-deja/g++.jason/tredecl4.C
-3711346877b ./gcc/testsuite/g++.old-deja/g++.jason/tredecl.C
- 569137935b ./gcc/testsuite/g++.old-deja/g++.jason/trivial.C
-2659060194b ./gcc/testsuite/g++.old-deja/g++.jason/typeck.C
-2723549891b ./gcc/testsuite/g++.old-deja/g++.jason/typedef2.C
-3743711814b ./gcc/testsuite/g++.old-deja/g++.jason/typedef3.C
- 299682196b ./gcc/testsuite/g++.old-deja/g++.jason/typedef.C
-3951989009b ./gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
- 999555960b ./gcc/testsuite/g++.old-deja/g++.jason/typeid2.C
- 281221996b ./gcc/testsuite/g++.old-deja/g++.jason/union.C
-4213241018b ./gcc/testsuite/g++.old-deja/g++.jason/vecdel.C
-1193567888b ./gcc/testsuite/g++.old-deja/g++.jason/virtual2.C
-3907710929b ./gcc/testsuite/g++.old-deja/g++.jason/virtual.C
- 628732210b ./gcc/testsuite/g++.old-deja/g++.jason/warning10.C
- 230540000b ./gcc/testsuite/g++.old-deja/g++.jason/warning1.C
-4258001283b ./gcc/testsuite/g++.old-deja/g++.jason/warning2.C
-1528338319b ./gcc/testsuite/g++.old-deja/g++.jason/warning3.C
-4233202460b ./gcc/testsuite/g++.old-deja/g++.jason/warning4.C
-2344004192b ./gcc/testsuite/g++.old-deja/g++.jason/warning5.C
-3616427734b ./gcc/testsuite/g++.old-deja/g++.jason/warning6.C
-1089399134b ./gcc/testsuite/g++.old-deja/g++.jason/warning7.C
-2423657184b ./gcc/testsuite/g++.old-deja/g++.jason/warning8.C
-2936679445b ./gcc/testsuite/g++.old-deja/g++.jason/warning9.C
-2476588872b ./gcc/testsuite/g++.old-deja/g++.law/access1.C
-1417723751b ./gcc/testsuite/g++.old-deja/g++.law/access2.C
-1986081483b ./gcc/testsuite/g++.old-deja/g++.law/access3.C
-2335314782b ./gcc/testsuite/g++.old-deja/g++.law/access4.C
-2106211778b ./gcc/testsuite/g++.old-deja/g++.law/access5.C
-2654444924b ./gcc/testsuite/g++.old-deja/g++.law/arg10.C
-3238389534b ./gcc/testsuite/g++.old-deja/g++.law/arg11.C
-4149004511b ./gcc/testsuite/g++.old-deja/g++.law/arg1.C
- 629763071b ./gcc/testsuite/g++.old-deja/g++.law/arg2.C
-3123919430b ./gcc/testsuite/g++.old-deja/g++.law/arg3.C
-2520473449b ./gcc/testsuite/g++.old-deja/g++.law/arg4.C
-2497627375b ./gcc/testsuite/g++.old-deja/g++.law/arg5.C
- 668182423b ./gcc/testsuite/g++.old-deja/g++.law/arg6.C
-4040623157b ./gcc/testsuite/g++.old-deja/g++.law/arg7.C
-3232506355b ./gcc/testsuite/g++.old-deja/g++.law/arg8.C
-1902710110b ./gcc/testsuite/g++.old-deja/g++.law/arg9.C
-2967336193b ./gcc/testsuite/g++.old-deja/g++.law/arm10.C
- 256975320b ./gcc/testsuite/g++.old-deja/g++.law/arm11.C
-2111564718b ./gcc/testsuite/g++.old-deja/g++.law/arm12.C
-1879426060b ./gcc/testsuite/g++.old-deja/g++.law/arm13.C
-1730130090b ./gcc/testsuite/g++.old-deja/g++.law/arm14.C
- 730443534b ./gcc/testsuite/g++.old-deja/g++.law/arm15.C
-2538202217b ./gcc/testsuite/g++.old-deja/g++.law/arm16.C
-1082355743b ./gcc/testsuite/g++.old-deja/g++.law/arm1.C
- 396475240b ./gcc/testsuite/g++.old-deja/g++.law/arm2.C
- 684470600b ./gcc/testsuite/g++.old-deja/g++.law/arm3.C
- 123832841b ./gcc/testsuite/g++.old-deja/g++.law/arm4.C
-1397196608b ./gcc/testsuite/g++.old-deja/g++.law/arm5.C
-1863539998b ./gcc/testsuite/g++.old-deja/g++.law/arm6.C
-1092943914b ./gcc/testsuite/g++.old-deja/g++.law/arm7.C
- 156062104b ./gcc/testsuite/g++.old-deja/g++.law/arm8.C
-3680909273b ./gcc/testsuite/g++.old-deja/g++.law/arm9.C
-3246271332b ./gcc/testsuite/g++.old-deja/g++.law/array1.C
-3109915032b ./gcc/testsuite/g++.old-deja/g++.law/array2.C
-4092916240b ./gcc/testsuite/g++.old-deja/g++.law/bad-error1.C
-3315748895b ./gcc/testsuite/g++.old-deja/g++.law/bad-error3.C
- 17463055b ./gcc/testsuite/g++.old-deja/g++.law/bad-error4.C
-3420787868b ./gcc/testsuite/g++.old-deja/g++.law/bad-error6.C
-3619362891b ./gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
-3180589913b ./gcc/testsuite/g++.old-deja/g++.law/bit-fields1.C
- 987706110b ./gcc/testsuite/g++.old-deja/g++.law/bit-fields2.C
-2693195990b ./gcc/testsuite/g++.old-deja/g++.law/bit-fields3.C
-2084814101b ./gcc/testsuite/g++.old-deja/g++.law/builtin1.C
- 282097136b ./gcc/testsuite/g++.old-deja/g++.law/casts1.C
- 992091015b ./gcc/testsuite/g++.old-deja/g++.law/casts2.C
-3081944627b ./gcc/testsuite/g++.old-deja/g++.law/casts3.C
-2365431738b ./gcc/testsuite/g++.old-deja/g++.law/code-gen1.C
-3963562220b ./gcc/testsuite/g++.old-deja/g++.law/code-gen2.C
- 642563506b ./gcc/testsuite/g++.old-deja/g++.law/code-gen4.C
-1581356732b ./gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
-3634037248b ./gcc/testsuite/g++.old-deja/g++.law/copy1.C
-1559838734b ./gcc/testsuite/g++.old-deja/g++.law/copy2.C
-2824193941b ./gcc/testsuite/g++.old-deja/g++.law/ctors10.C
-3669003858b ./gcc/testsuite/g++.old-deja/g++.law/ctors11.C
- 162342663b ./gcc/testsuite/g++.old-deja/g++.law/ctors12.C
-2682605352b ./gcc/testsuite/g++.old-deja/g++.law/ctors13.C
-2981100605b ./gcc/testsuite/g++.old-deja/g++.law/ctors14.C
-2355681221b ./gcc/testsuite/g++.old-deja/g++.law/ctors15.C
-2426347265b ./gcc/testsuite/g++.old-deja/g++.law/ctors16.C
-4195839953b ./gcc/testsuite/g++.old-deja/g++.law/ctors17.C
- 795806665b ./gcc/testsuite/g++.old-deja/g++.law/ctors18.C
- 669077619b ./gcc/testsuite/g++.old-deja/g++.law/ctors19.C
-1092557618b ./gcc/testsuite/g++.old-deja/g++.law/ctors1.C
-1400780598b ./gcc/testsuite/g++.old-deja/g++.law/ctors20.C
- 217884353b ./gcc/testsuite/g++.old-deja/g++.law/ctors21.C
- 487905434b ./gcc/testsuite/g++.old-deja/g++.law/ctors2.C
-1618360763b ./gcc/testsuite/g++.old-deja/g++.law/ctors3.C
-2740682745b ./gcc/testsuite/g++.old-deja/g++.law/ctors4.C
-4199368053b ./gcc/testsuite/g++.old-deja/g++.law/ctors5.C
-2129919082b ./gcc/testsuite/g++.old-deja/g++.law/ctors6.C
-1869709463b ./gcc/testsuite/g++.old-deja/g++.law/ctors7.C
- 526334519b ./gcc/testsuite/g++.old-deja/g++.law/ctors8.C
- 270958262b ./gcc/testsuite/g++.old-deja/g++.law/ctors9.C
-2152841651b ./gcc/testsuite/g++.old-deja/g++.law/cvt10.C
-3565079229b ./gcc/testsuite/g++.old-deja/g++.law/cvt11.C
-2546176762b ./gcc/testsuite/g++.old-deja/g++.law/cvt12.C
-3264317807b ./gcc/testsuite/g++.old-deja/g++.law/cvt13.C
- 421661935b ./gcc/testsuite/g++.old-deja/g++.law/cvt14.C
-2631308961b ./gcc/testsuite/g++.old-deja/g++.law/cvt15.C
-1587124897b ./gcc/testsuite/g++.old-deja/g++.law/cvt16.C
- 394815871b ./gcc/testsuite/g++.old-deja/g++.law/cvt17.C
-3549238781b ./gcc/testsuite/g++.old-deja/g++.law/cvt18.C
-3392944402b ./gcc/testsuite/g++.old-deja/g++.law/cvt19.C
-2381956011b ./gcc/testsuite/g++.old-deja/g++.law/cvt1.C
-2158455043b ./gcc/testsuite/g++.old-deja/g++.law/cvt20.C
- 836977921b ./gcc/testsuite/g++.old-deja/g++.law/cvt21.C
-2819411287b ./gcc/testsuite/g++.old-deja/g++.law/cvt22.C
-3913198799b ./gcc/testsuite/g++.old-deja/g++.law/cvt23.C
- 689250222b ./gcc/testsuite/g++.old-deja/g++.law/cvt2.C
-2951649907b ./gcc/testsuite/g++.old-deja/g++.law/cvt3.C
-1937028645b ./gcc/testsuite/g++.old-deja/g++.law/cvt4.C
-2149948272b ./gcc/testsuite/g++.old-deja/g++.law/cvt5.C
-1375863901b ./gcc/testsuite/g++.old-deja/g++.law/cvt6.C
-2338585473b ./gcc/testsuite/g++.old-deja/g++.law/cvt7.C
-4106332146b ./gcc/testsuite/g++.old-deja/g++.law/cvt8.C
-3074219571b ./gcc/testsuite/g++.old-deja/g++.law/cvt9.C
-3892359310b ./gcc/testsuite/g++.old-deja/g++.law/dossier1.C
-1852727691b ./gcc/testsuite/g++.old-deja/g++.law/dtors1.C
- 417330939b ./gcc/testsuite/g++.old-deja/g++.law/dtors2.C
- 937750634b ./gcc/testsuite/g++.old-deja/g++.law/dtors3.C
- 674694281b ./gcc/testsuite/g++.old-deja/g++.law/dtors4.C
- 148445216b ./gcc/testsuite/g++.old-deja/g++.law/dtors5.C
-3496311789b ./gcc/testsuite/g++.old-deja/g++.law/enum1.C
-2839303777b ./gcc/testsuite/g++.old-deja/g++.law/enum2.C
- 606148435b ./gcc/testsuite/g++.old-deja/g++.law/enum3.C
-1232585368b ./gcc/testsuite/g++.old-deja/g++.law/enum4.C
-3791083426b ./gcc/testsuite/g++.old-deja/g++.law/enum6.C
-3394503156b ./gcc/testsuite/g++.old-deja/g++.law/enum7.C
-1026608225b ./gcc/testsuite/g++.old-deja/g++.law/enum8.C
-4123082037b ./gcc/testsuite/g++.old-deja/g++.law/enum9.C
-2196184153b ./gcc/testsuite/g++.old-deja/g++.law/except1.C
-1409867857b ./gcc/testsuite/g++.old-deja/g++.law/except2.C
-4240738373b ./gcc/testsuite/g++.old-deja/g++.law/except3.C
-2625185129b ./gcc/testsuite/g++.old-deja/g++.law/except4.C
-4029601209b ./gcc/testsuite/g++.old-deja/g++.law/except5.C
-1616938742b ./gcc/testsuite/g++.old-deja/g++.law/except6.C
-1596582118b ./gcc/testsuite/g++.old-deja/g++.law/friend1.C
-3071269392b ./gcc/testsuite/g++.old-deja/g++.law/friend4.C
- 353712724b ./gcc/testsuite/g++.old-deja/g++.law/friend5.C
-2516415904b ./gcc/testsuite/g++.old-deja/g++.law/global-init1.C
-2935803087b ./gcc/testsuite/g++.old-deja/g++.law/incdec1.C
-3566036893b ./gcc/testsuite/g++.old-deja/g++.law/init10.C
-3857491837b ./gcc/testsuite/g++.old-deja/g++.law/init11.C
-4138152619b ./gcc/testsuite/g++.old-deja/g++.law/init13.C
-1266397199b ./gcc/testsuite/g++.old-deja/g++.law/init14.C
-1302059369b ./gcc/testsuite/g++.old-deja/g++.law/init1.C
-2233506301b ./gcc/testsuite/g++.old-deja/g++.law/init2.C
-2232979686b ./gcc/testsuite/g++.old-deja/g++.law/init3.C
-1022202873b ./gcc/testsuite/g++.old-deja/g++.law/init4.C
-3023067824b ./gcc/testsuite/g++.old-deja/g++.law/init5.C
-1140061940b ./gcc/testsuite/g++.old-deja/g++.law/init6.C
-2796925503b ./gcc/testsuite/g++.old-deja/g++.law/init7.C
-3753762488b ./gcc/testsuite/g++.old-deja/g++.law/init8.C
-2957670852b ./gcc/testsuite/g++.old-deja/g++.law/init9.C
-1705968800b ./gcc/testsuite/g++.old-deja/g++.law/inline4.C
-2020382912b ./gcc/testsuite/g++.old-deja/g++.law/inline6.C
-1885239478b ./gcc/testsuite/g++.old-deja/g++.law/inline7.C
-1019141845b ./gcc/testsuite/g++.old-deja/g++.law/memoized1.C
-1827735870b ./gcc/testsuite/g++.old-deja/g++.law/mentor1.C
-2244874817b ./gcc/testsuite/g++.old-deja/g++.law/missed-error1.C
-1475603256b ./gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
-4040030816b ./gcc/testsuite/g++.old-deja/g++.law/missed-error3.C
-3651573595b ./gcc/testsuite/g++.old-deja/g++.law/missing1.C
-4134785097b ./gcc/testsuite/g++.old-deja/g++.law/nest1.C
-2835730985b ./gcc/testsuite/g++.old-deja/g++.law/nest2.C
-2294472523b ./gcc/testsuite/g++.old-deja/g++.law/nest3.C
-2512749755b ./gcc/testsuite/g++.old-deja/g++.law/nest4.C
-1532872015b ./gcc/testsuite/g++.old-deja/g++.law/nest5.C
- 724141249b ./gcc/testsuite/g++.old-deja/g++.law/operators10.C
- 953903384b ./gcc/testsuite/g++.old-deja/g++.law/operators11.C
-1531795317b ./gcc/testsuite/g++.old-deja/g++.law/operators12.C
- 381569792b ./gcc/testsuite/g++.old-deja/g++.law/operators13.C
- 723011663b ./gcc/testsuite/g++.old-deja/g++.law/operators14.C
-3803866684b ./gcc/testsuite/g++.old-deja/g++.law/operators15.C
-2547646465b ./gcc/testsuite/g++.old-deja/g++.law/operators16.C
- 367329317b ./gcc/testsuite/g++.old-deja/g++.law/operators17.C
-1796063085b ./gcc/testsuite/g++.old-deja/g++.law/operators18.C
- 909424019b ./gcc/testsuite/g++.old-deja/g++.law/operators19.C
- 799876233b ./gcc/testsuite/g++.old-deja/g++.law/operators21.C
-2652758137b ./gcc/testsuite/g++.old-deja/g++.law/operators22.C
-1066444429b ./gcc/testsuite/g++.old-deja/g++.law/operators23.C
-3984151042b ./gcc/testsuite/g++.old-deja/g++.law/operators24.C
-3486772822b ./gcc/testsuite/g++.old-deja/g++.law/operators25.C
-1064475993b ./gcc/testsuite/g++.old-deja/g++.law/operators27.C
-1472827461b ./gcc/testsuite/g++.old-deja/g++.law/operators28.C
-3543940161b ./gcc/testsuite/g++.old-deja/g++.law/operators29.C
-3492185823b ./gcc/testsuite/g++.old-deja/g++.law/operators2.C
- 936276361b ./gcc/testsuite/g++.old-deja/g++.law/operators30.C
-1540784012b ./gcc/testsuite/g++.old-deja/g++.law/operators31.C
-1046500493b ./gcc/testsuite/g++.old-deja/g++.law/operators32.C
-1564136570b ./gcc/testsuite/g++.old-deja/g++.law/operators33.C
-2258128088b ./gcc/testsuite/g++.old-deja/g++.law/operators34.C
- 578739979b ./gcc/testsuite/g++.old-deja/g++.law/operators3.C
- 608812129b ./gcc/testsuite/g++.old-deja/g++.law/operators4.C
-1329892354b ./gcc/testsuite/g++.old-deja/g++.law/operators6.C
- 355314823b ./gcc/testsuite/g++.old-deja/g++.law/operators8.C
-1673377936b ./gcc/testsuite/g++.old-deja/g++.law/operators9.C
-3113604261b ./gcc/testsuite/g++.old-deja/g++.law/parsing10.C
-2567910598b ./gcc/testsuite/g++.old-deja/g++.law/parsing1.C
-1152481023b ./gcc/testsuite/g++.old-deja/g++.law/parsing2.C
-1999913694b ./gcc/testsuite/g++.old-deja/g++.law/parsing3.C
-2775279224b ./gcc/testsuite/g++.old-deja/g++.law/parsing4.C
- 945709973b ./gcc/testsuite/g++.old-deja/g++.law/parsing5.C
-3261275788b ./gcc/testsuite/g++.old-deja/g++.law/parsing6.C
-3164438769b ./gcc/testsuite/g++.old-deja/g++.law/parsing7.C
-3538222549b ./gcc/testsuite/g++.old-deja/g++.law/parsing8.C
-1385735776b ./gcc/testsuite/g++.old-deja/g++.law/parsing9.C
- 924440791b ./gcc/testsuite/g++.old-deja/g++.law/patches1.C
-1946496748b ./gcc/testsuite/g++.old-deja/g++.law/pic1.C
-3426894706b ./gcc/testsuite/g++.old-deja/g++.law/profile1.C
-2206977733b ./gcc/testsuite/g++.old-deja/g++.law/refs1.C
- 466403547b ./gcc/testsuite/g++.old-deja/g++.law/refs2.C
-2895961411b ./gcc/testsuite/g++.old-deja/g++.law/refs3.C
-1709521392b ./gcc/testsuite/g++.old-deja/g++.law/refs4.C
- 562827880b ./gcc/testsuite/g++.old-deja/g++.law/scope1.C
-1371353669b ./gcc/testsuite/g++.old-deja/g++.law/scope2.C
-1832191731b ./gcc/testsuite/g++.old-deja/g++.law/scope3.C
-3169914322b ./gcc/testsuite/g++.old-deja/g++.law/scope4.C
-4090034442b ./gcc/testsuite/g++.old-deja/g++.law/scope5.C
-4169140490b ./gcc/testsuite/g++.old-deja/g++.law/shadow1.C
- 553385792b ./gcc/testsuite/g++.old-deja/g++.law/shadow2.C
-1398083680b ./gcc/testsuite/g++.old-deja/g++.law/static-mem2.C
-2622216343b ./gcc/testsuite/g++.old-deja/g++.law/static-mem3.C
-2403834071b ./gcc/testsuite/g++.old-deja/g++.law/static-mem4.C
-4200938119b ./gcc/testsuite/g++.old-deja/g++.law/static-mem5.C
- 639091837b ./gcc/testsuite/g++.old-deja/g++.law/template1.C
- 375189935b ./gcc/testsuite/g++.old-deja/g++.law/template3.C
- 4284541b ./gcc/testsuite/g++.old-deja/g++.law/temps1.C
-1612155730b ./gcc/testsuite/g++.old-deja/g++.law/temps2.C
-1353434176b ./gcc/testsuite/g++.old-deja/g++.law/temps3.C
-3401895101b ./gcc/testsuite/g++.old-deja/g++.law/temps4.C
-4070589019b ./gcc/testsuite/g++.old-deja/g++.law/temps5.C
-3020683221b ./gcc/testsuite/g++.old-deja/g++.law/temps6.C
- 117460955b ./gcc/testsuite/g++.old-deja/g++.law/temps7.C
-2464264368b ./gcc/testsuite/g++.old-deja/g++.law/typeck1.C
-1916360322b ./gcc/testsuite/g++.old-deja/g++.law/typeck2.C
-3305279025b ./gcc/testsuite/g++.old-deja/g++.law/typeck3.C
-4132228740b ./gcc/testsuite/g++.old-deja/g++.law/typeck4.C
-2802123026b ./gcc/testsuite/g++.old-deja/g++.law/union1.C
-3824263681b ./gcc/testsuite/g++.old-deja/g++.law/union2.C
- 64483607b ./gcc/testsuite/g++.old-deja/g++.law/union3.C
- 865388513b ./gcc/testsuite/g++.old-deja/g++.law/union4.C
- 729275465b ./gcc/testsuite/g++.old-deja/g++.law/unsorted1.C
-1458104982b ./gcc/testsuite/g++.old-deja/g++.law/unsorted2.C
- 202333534b ./gcc/testsuite/g++.old-deja/g++.law/vbase1.C
-3288872398b ./gcc/testsuite/g++.old-deja/g++.law/virtual1.C
- 698640776b ./gcc/testsuite/g++.old-deja/g++.law/virtual2.C
-3868729894b ./gcc/testsuite/g++.old-deja/g++.law/virtual3.C
-3199255308b ./gcc/testsuite/g++.old-deja/g++.law/virtual4.C
-3314718848b ./gcc/testsuite/g++.old-deja/g++.law/visibility10.C
-3972415808b ./gcc/testsuite/g++.old-deja/g++.law/visibility11.C
-1008837063b ./gcc/testsuite/g++.old-deja/g++.law/visibility12.C
-4257392333b ./gcc/testsuite/g++.old-deja/g++.law/visibility13.C
-2184184428b ./gcc/testsuite/g++.old-deja/g++.law/visibility14.C
-3711813419b ./gcc/testsuite/g++.old-deja/g++.law/visibility15.C
-2324534234b ./gcc/testsuite/g++.old-deja/g++.law/visibility16.C
-1421043627b ./gcc/testsuite/g++.old-deja/g++.law/visibility17.C
-2757911294b ./gcc/testsuite/g++.old-deja/g++.law/visibility18.C
-1759487204b ./gcc/testsuite/g++.old-deja/g++.law/visibility19.C
- 62330698b ./gcc/testsuite/g++.old-deja/g++.law/visibility1.C
-1427247483b ./gcc/testsuite/g++.old-deja/g++.law/visibility20.C
-3793046825b ./gcc/testsuite/g++.old-deja/g++.law/visibility21.C
- 271235804b ./gcc/testsuite/g++.old-deja/g++.law/visibility22.C
- 797044341b ./gcc/testsuite/g++.old-deja/g++.law/visibility24.C
-3910738507b ./gcc/testsuite/g++.old-deja/g++.law/visibility25.C
- 322999725b ./gcc/testsuite/g++.old-deja/g++.law/visibility26.C
-4190347231b ./gcc/testsuite/g++.old-deja/g++.law/visibility27.C
-2911402499b ./gcc/testsuite/g++.old-deja/g++.law/visibility28.C
- 734410929b ./gcc/testsuite/g++.old-deja/g++.law/visibility2.C
-4290227694b ./gcc/testsuite/g++.old-deja/g++.law/visibility3.C
-4210487078b ./gcc/testsuite/g++.old-deja/g++.law/visibility4.C
-3907786275b ./gcc/testsuite/g++.old-deja/g++.law/visibility5.C
-1875984515b ./gcc/testsuite/g++.old-deja/g++.law/visibility6.C
-1405044481b ./gcc/testsuite/g++.old-deja/g++.law/visibility7.C
-1869720260b ./gcc/testsuite/g++.old-deja/g++.law/visibility8.C
-1999285628b ./gcc/testsuite/g++.old-deja/g++.law/visibility9.C
-1085746750b ./gcc/testsuite/g++.old-deja/g++.law/vtable1.C
-3660889277b ./gcc/testsuite/g++.old-deja/g++.law/vtable2.C
-4243784891b ./gcc/testsuite/g++.old-deja/g++.law/vtable3.C
- 143886912b ./gcc/testsuite/g++.old-deja/g++.law/weak.C
- 830532494b ./gcc/testsuite/g++.old-deja/g++.martin/access1.C
-1002906292b ./gcc/testsuite/g++.old-deja/g++.martin/ambig1.C
-3743350975b ./gcc/testsuite/g++.old-deja/g++.martin/bitset1.C
-3416204241b ./gcc/testsuite/g++.old-deja/g++.martin/conv1.C
- 825042238b ./gcc/testsuite/g++.old-deja/g++.martin/crash1.C
-2926428355b ./gcc/testsuite/g++.old-deja/g++.martin/eval1.C
- 317249347b ./gcc/testsuite/g++.old-deja/g++.martin/lookup1.C
-4131538183b ./gcc/testsuite/g++.old-deja/g++.martin/new1.C
- 405917420b ./gcc/testsuite/g++.old-deja/g++.martin/overload1.C
-3541772795b ./gcc/testsuite/g++.old-deja/g++.martin/pmf1.C
-2582334596b ./gcc/testsuite/g++.old-deja/g++.martin/pmf2.C
- 342889991b ./gcc/testsuite/g++.old-deja/g++.martin/pure1.C
-2187620834b ./gcc/testsuite/g++.old-deja/g++.martin/sts_conv.C
-2965838669b ./gcc/testsuite/g++.old-deja/g++.martin/sts_iarr.C
- 968074107b ./gcc/testsuite/g++.old-deja/g++.martin/sts_partial.C
-1222988217b ./gcc/testsuite/g++.old-deja/g++.martin/sts_vectini.C
-3722279134b ./gcc/testsuite/g++.old-deja/g++.martin/typedef1.C
-1998658156b ./gcc/testsuite/g++.old-deja/g++.martin/typedef2.C
-3366578564b ./gcc/testsuite/g++.old-deja/g++.mike/align1.C
-1357275564b ./gcc/testsuite/g++.old-deja/g++.mike/align2.C
-1852680562b ./gcc/testsuite/g++.old-deja/g++.mike/ambig1.C
-3007848512b ./gcc/testsuite/g++.old-deja/g++.mike/asm1.C
-1252651637b ./gcc/testsuite/g++.old-deja/g++.mike/asm2.C
-3511956480b ./gcc/testsuite/g++.old-deja/g++.mike/bool1.C
-1798037413b ./gcc/testsuite/g++.old-deja/g++.mike/bool2.C
-2574680481b ./gcc/testsuite/g++.old-deja/g++.mike/bool4.C
-2735658565b ./gcc/testsuite/g++.old-deja/g++.mike/conv1.C
-3056861018b ./gcc/testsuite/g++.old-deja/g++.mike/.cvsignore
-4048777742b ./gcc/testsuite/g++.old-deja/g++.mike/debug1.C
-4010324445b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast1.C
-3503712059b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast2.C
- 161009263b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast3.C
- 161214417b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast4.C
-4283652211b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast5.C
-3480128091b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast6.C
- 549691660b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
-2943523376b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast8.C
- 715384563b ./gcc/testsuite/g++.old-deja/g++.mike/dyncast9.C
-1898950024b ./gcc/testsuite/g++.old-deja/g++.mike/eh10.C
-1222256435b ./gcc/testsuite/g++.old-deja/g++.mike/eh11.C
-1447734306b ./gcc/testsuite/g++.old-deja/g++.mike/eh12.C
- 561534286b ./gcc/testsuite/g++.old-deja/g++.mike/eh13.C
-2951469127b ./gcc/testsuite/g++.old-deja/g++.mike/eh14.C
- 20718997b ./gcc/testsuite/g++.old-deja/g++.mike/eh15.C
-4209055786b ./gcc/testsuite/g++.old-deja/g++.mike/eh16.C
-3368269369b ./gcc/testsuite/g++.old-deja/g++.mike/eh17.C
-1954288096b ./gcc/testsuite/g++.old-deja/g++.mike/eh18.C
-1564767830b ./gcc/testsuite/g++.old-deja/g++.mike/eh19.C
-1479132794b ./gcc/testsuite/g++.old-deja/g++.mike/eh1.C
-2941675313b ./gcc/testsuite/g++.old-deja/g++.mike/eh20.C
-1220907911b ./gcc/testsuite/g++.old-deja/g++.mike/eh21.C
- 517637270b ./gcc/testsuite/g++.old-deja/g++.mike/eh23.C
- 333053405b ./gcc/testsuite/g++.old-deja/g++.mike/eh24.C
- 994888022b ./gcc/testsuite/g++.old-deja/g++.mike/eh25.C
-3348536359b ./gcc/testsuite/g++.old-deja/g++.mike/eh26.C
-2419761913b ./gcc/testsuite/g++.old-deja/g++.mike/eh27.C
-1187597651b ./gcc/testsuite/g++.old-deja/g++.mike/eh28.C
-1211663524b ./gcc/testsuite/g++.old-deja/g++.mike/eh29.C
- 925380975b ./gcc/testsuite/g++.old-deja/g++.mike/eh2.C
- 19764474b ./gcc/testsuite/g++.old-deja/g++.mike/eh30.C
-2656014861b ./gcc/testsuite/g++.old-deja/g++.mike/eh31.C
-3196832667b ./gcc/testsuite/g++.old-deja/g++.mike/eh32.C
- 66552972b ./gcc/testsuite/g++.old-deja/g++.mike/eh33.C
- 503529587b ./gcc/testsuite/g++.old-deja/g++.mike/eh34.C
-3352893098b ./gcc/testsuite/g++.old-deja/g++.mike/eh35.C
- 647929045b ./gcc/testsuite/g++.old-deja/g++.mike/eh36.C
-1379433802b ./gcc/testsuite/g++.old-deja/g++.mike/eh37.C
-2520417864b ./gcc/testsuite/g++.old-deja/g++.mike/eh38.C
-2239202212b ./gcc/testsuite/g++.old-deja/g++.mike/eh39.C
-3592708402b ./gcc/testsuite/g++.old-deja/g++.mike/eh3.C
- 812645089b ./gcc/testsuite/g++.old-deja/g++.mike/eh40.C
-2008000368b ./gcc/testsuite/g++.old-deja/g++.mike/eh41.C
- 396786327b ./gcc/testsuite/g++.old-deja/g++.mike/eh42.C
-2531873137b ./gcc/testsuite/g++.old-deja/g++.mike/eh44.C
-3669787943b ./gcc/testsuite/g++.old-deja/g++.mike/eh45.C
-3841647794b ./gcc/testsuite/g++.old-deja/g++.mike/eh46.C
-2543002191b ./gcc/testsuite/g++.old-deja/g++.mike/eh47.C
-3489458651b ./gcc/testsuite/g++.old-deja/g++.mike/eh48.C
- 836588330b ./gcc/testsuite/g++.old-deja/g++.mike/eh49.C
- 833195775b ./gcc/testsuite/g++.old-deja/g++.mike/eh4.C
-2022453553b ./gcc/testsuite/g++.old-deja/g++.mike/eh50.C
-2472994932b ./gcc/testsuite/g++.old-deja/g++.mike/eh51.C
- 359223272b ./gcc/testsuite/g++.old-deja/g++.mike/eh52.C
-4025472676b ./gcc/testsuite/g++.old-deja/g++.mike/eh53.C
-2118473425b ./gcc/testsuite/g++.old-deja/g++.mike/eh54.C
-3012652134b ./gcc/testsuite/g++.old-deja/g++.mike/eh55.C
-3093785743b ./gcc/testsuite/g++.old-deja/g++.mike/eh56.C
-4236094512b ./gcc/testsuite/g++.old-deja/g++.mike/eh57.C
-1057069707b ./gcc/testsuite/g++.old-deja/g++.mike/eh58.C
-3255147266b ./gcc/testsuite/g++.old-deja/g++.mike/eh59.C
-2616136317b ./gcc/testsuite/g++.old-deja/g++.mike/eh5.C
-1226767941b ./gcc/testsuite/g++.old-deja/g++.mike/eh6.C
- 42372650b ./gcc/testsuite/g++.old-deja/g++.mike/eh7.C
- 851372296b ./gcc/testsuite/g++.old-deja/g++.mike/eh8.C
-1319332410b ./gcc/testsuite/g++.old-deja/g++.mike/eh9.C
-2247541281b ./gcc/testsuite/g++.old-deja/g++.mike/enum1.C
-2068312285b ./gcc/testsuite/g++.old-deja/g++.mike/err1.C
-1927043546b ./gcc/testsuite/g++.old-deja/g++.mike/err2.C
-3135074705b ./gcc/testsuite/g++.old-deja/g++.mike/err3.C
-3586800574b ./gcc/testsuite/g++.old-deja/g++.mike/explicit1.C
-3536764934b ./gcc/testsuite/g++.old-deja/g++.mike/explicit2.C
-1026557390b ./gcc/testsuite/g++.old-deja/g++.mike/for1.C
-2974641653b ./gcc/testsuite/g++.old-deja/g++.mike/for2.C
-2702017140b ./gcc/testsuite/g++.old-deja/g++.mike/for3.C
-2404672898b ./gcc/testsuite/g++.old-deja/g++.mike/fresco1.C
-3102490391b ./gcc/testsuite/g++.old-deja/g++.mike/hog1.C
-2749462033b ./gcc/testsuite/g++.old-deja/g++.mike/init1.C
- 208643595b ./gcc/testsuite/g++.old-deja/g++.mike/init2.C
-4003638268b ./gcc/testsuite/g++.old-deja/g++.mike/leak1.C
- 232475713b ./gcc/testsuite/g++.old-deja/g++.mike/mangle1.C
-2886304989b ./gcc/testsuite/g++.old-deja/g++.mike/mangle2.C
-2130648103b ./gcc/testsuite/g++.old-deja/g++.mike/mangle3.C
-3720053646b ./gcc/testsuite/g++.old-deja/g++.mike/memoize1.C
- 227243000b ./gcc/testsuite/g++.old-deja/g++.mike/mi1.C
-4025070490b ./gcc/testsuite/g++.old-deja/g++.mike/mi2.C
-4041946331b ./gcc/testsuite/g++.old-deja/g++.mike/misc11.C
-3057947029b ./gcc/testsuite/g++.old-deja/g++.mike/misc12.C
- 430127070b ./gcc/testsuite/g++.old-deja/g++.mike/misc13.C
-2291534767b ./gcc/testsuite/g++.old-deja/g++.mike/misc14.C
- 693076493b ./gcc/testsuite/g++.old-deja/g++.mike/misc1.C
-2351659378b ./gcc/testsuite/g++.old-deja/g++.mike/misc2.C
- 48579344b ./gcc/testsuite/g++.old-deja/g++.mike/misc3.C
- 263841150b ./gcc/testsuite/g++.old-deja/g++.mike/misc5.C
-2015338154b ./gcc/testsuite/g++.old-deja/g++.mike/misc6.C
-3029506356b ./gcc/testsuite/g++.old-deja/g++.mike/misc7.C
-3400747232b ./gcc/testsuite/g++.old-deja/g++.mike/misc8.C
-2472705454b ./gcc/testsuite/g++.old-deja/g++.mike/misc9.C
-2347594484b ./gcc/testsuite/g++.old-deja/g++.mike/net10.C
-2264540476b ./gcc/testsuite/g++.old-deja/g++.mike/net11.C
-1619954363b ./gcc/testsuite/g++.old-deja/g++.mike/net12.C
-2744123724b ./gcc/testsuite/g++.old-deja/g++.mike/net13.C
-2330778782b ./gcc/testsuite/g++.old-deja/g++.mike/net14.C
-3750320204b ./gcc/testsuite/g++.old-deja/g++.mike/net15.C
- 324833536b ./gcc/testsuite/g++.old-deja/g++.mike/net16.C
-2790494835b ./gcc/testsuite/g++.old-deja/g++.mike/net17.C
- 128141995b ./gcc/testsuite/g++.old-deja/g++.mike/net18.C
- 948890721b ./gcc/testsuite/g++.old-deja/g++.mike/net19.C
-2700723029b ./gcc/testsuite/g++.old-deja/g++.mike/net1.C
-4292061310b ./gcc/testsuite/g++.old-deja/g++.mike/net20.C
- 226565812b ./gcc/testsuite/g++.old-deja/g++.mike/net21.C
-1728885921b ./gcc/testsuite/g++.old-deja/g++.mike/net22.C
-4024678725b ./gcc/testsuite/g++.old-deja/g++.mike/net23.C
-2009996072b ./gcc/testsuite/g++.old-deja/g++.mike/net24.C
-1310377974b ./gcc/testsuite/g++.old-deja/g++.mike/net25.C
- 193486024b ./gcc/testsuite/g++.old-deja/g++.mike/net26.C
- 94102590b ./gcc/testsuite/g++.old-deja/g++.mike/net27.C
-1622305952b ./gcc/testsuite/g++.old-deja/g++.mike/net28.C
-2635182781b ./gcc/testsuite/g++.old-deja/g++.mike/net29.C
-4151722351b ./gcc/testsuite/g++.old-deja/g++.mike/net2.C
- 623832663b ./gcc/testsuite/g++.old-deja/g++.mike/net30.C
-1863329456b ./gcc/testsuite/g++.old-deja/g++.mike/net31.C
-1380727967b ./gcc/testsuite/g++.old-deja/g++.mike/net32.C
- 643638364b ./gcc/testsuite/g++.old-deja/g++.mike/net34.C
-1703492289b ./gcc/testsuite/g++.old-deja/g++.mike/net35.C
-2640637763b ./gcc/testsuite/g++.old-deja/g++.mike/net36.C
- 404712047b ./gcc/testsuite/g++.old-deja/g++.mike/net37.C
- 373469883b ./gcc/testsuite/g++.old-deja/g++.mike/net38.C
-3771016947b ./gcc/testsuite/g++.old-deja/g++.mike/net39.C
-2896773743b ./gcc/testsuite/g++.old-deja/g++.mike/net3.C
-3117098407b ./gcc/testsuite/g++.old-deja/g++.mike/net40.C
-2329906223b ./gcc/testsuite/g++.old-deja/g++.mike/net41.C
- 257842077b ./gcc/testsuite/g++.old-deja/g++.mike/net42.C
- 273531074b ./gcc/testsuite/g++.old-deja/g++.mike/net43.C
-1013597348b ./gcc/testsuite/g++.old-deja/g++.mike/net44.C
- 533128132b ./gcc/testsuite/g++.old-deja/g++.mike/net45.C
-4252296965b ./gcc/testsuite/g++.old-deja/g++.mike/net46.C
-3377446225b ./gcc/testsuite/g++.old-deja/g++.mike/net47.C
-3175541105b ./gcc/testsuite/g++.old-deja/g++.mike/net48.C
-2596381910b ./gcc/testsuite/g++.old-deja/g++.mike/net4.C
- 557858870b ./gcc/testsuite/g++.old-deja/g++.mike/net6.C
-2207442407b ./gcc/testsuite/g++.old-deja/g++.mike/net7.C
-2718402760b ./gcc/testsuite/g++.old-deja/g++.mike/net8.C
-2353333727b ./gcc/testsuite/g++.old-deja/g++.mike/net9.C
- 567253957b ./gcc/testsuite/g++.old-deja/g++.mike/ns10.C
-2416554745b ./gcc/testsuite/g++.old-deja/g++.mike/ns11.C
- 533880824b ./gcc/testsuite/g++.old-deja/g++.mike/ns12.C
-1634894638b ./gcc/testsuite/g++.old-deja/g++.mike/ns13.C
- 133757607b ./gcc/testsuite/g++.old-deja/g++.mike/ns14.C
-2272679205b ./gcc/testsuite/g++.old-deja/g++.mike/ns15.C
- 452066686b ./gcc/testsuite/g++.old-deja/g++.mike/ns1.C
-3588362593b ./gcc/testsuite/g++.old-deja/g++.mike/ns2.C
-1013122739b ./gcc/testsuite/g++.old-deja/g++.mike/ns3.C
-1600942614b ./gcc/testsuite/g++.old-deja/g++.mike/ns4.C
-2720204670b ./gcc/testsuite/g++.old-deja/g++.mike/ns5.C
-2915175087b ./gcc/testsuite/g++.old-deja/g++.mike/ns6.C
- 411910103b ./gcc/testsuite/g++.old-deja/g++.mike/ns7.C
-2915175087b ./gcc/testsuite/g++.old-deja/g++.mike/ns8.C
-2464609892b ./gcc/testsuite/g++.old-deja/g++.mike/ns9.C
- 42776282b ./gcc/testsuite/g++.old-deja/g++.mike/offset1.C
-4011496147b ./gcc/testsuite/g++.old-deja/g++.mike/opr-as1.C
-1648867065b ./gcc/testsuite/g++.old-deja/g++.mike/opr-dot1.C
-3930590560b ./gcc/testsuite/g++.old-deja/g++.mike/p10148.C
-3568933834b ./gcc/testsuite/g++.old-deja/g++.mike/p10247.C
-3637822285b ./gcc/testsuite/g++.old-deja/g++.mike/p10416.C
-2277517536b ./gcc/testsuite/g++.old-deja/g++.mike/p10511.C
-2480212522b ./gcc/testsuite/g++.old-deja/g++.mike/p10769a.C
-3120977893b ./gcc/testsuite/g++.old-deja/g++.mike/p10769b.C
-2837914956b ./gcc/testsuite/g++.old-deja/g++.mike/p10849a.C
- 288448977b ./gcc/testsuite/g++.old-deja/g++.mike/p10951.C
- 885447599b ./gcc/testsuite/g++.old-deja/g++.mike/p11012.C
-3327529664b ./gcc/testsuite/g++.old-deja/g++.mike/p11110.C
-1723536064b ./gcc/testsuite/g++.old-deja/g++.mike/p11142.C
-2584300706b ./gcc/testsuite/g++.old-deja/g++.mike/p11144.C
-1612526821b ./gcc/testsuite/g++.old-deja/g++.mike/p11482.C
- 18099126b ./gcc/testsuite/g++.old-deja/g++.mike/p11667.C
- 783911097b ./gcc/testsuite/g++.old-deja/g++.mike/p12306a.C
-3634094361b ./gcc/testsuite/g++.old-deja/g++.mike/p12306.C
-3834401134b ./gcc/testsuite/g++.old-deja/g++.mike/p1248.C
-2006378635b ./gcc/testsuite/g++.old-deja/g++.mike/p1567.C
-3231801438b ./gcc/testsuite/g++.old-deja/g++.mike/p16146.C
-2589988330b ./gcc/testsuite/g++.old-deja/g++.mike/p1862.C
- 925204121b ./gcc/testsuite/g++.old-deja/g++.mike/p1989.C
-1780707146b ./gcc/testsuite/g++.old-deja/g++.mike/p2394.C
-3869537152b ./gcc/testsuite/g++.old-deja/g++.mike/p2431.C
-1198556431b ./gcc/testsuite/g++.old-deja/g++.mike/p2573.C
-2790074021b ./gcc/testsuite/g++.old-deja/g++.mike/p2736.C
-3189296082b ./gcc/testsuite/g++.old-deja/g++.mike/p2746.C
-2655922230b ./gcc/testsuite/g++.old-deja/g++.mike/p2793.C
-2222530613b ./gcc/testsuite/g++.old-deja/g++.mike/p2806.C
-3941688151b ./gcc/testsuite/g++.old-deja/g++.mike/p2846a.C
- 481437008b ./gcc/testsuite/g++.old-deja/g++.mike/p2846b.C
-1350283959b ./gcc/testsuite/g++.old-deja/g++.mike/p2846.C
- 231166541b ./gcc/testsuite/g++.old-deja/g++.mike/p2855.C
-1228637975b ./gcc/testsuite/g++.old-deja/g++.mike/p2960.C
- 172879720b ./gcc/testsuite/g++.old-deja/g++.mike/p3041.C
- 478907680b ./gcc/testsuite/g++.old-deja/g++.mike/p3060c.C
-2112233765b ./gcc/testsuite/g++.old-deja/g++.mike/p3060d.C
-3103033154b ./gcc/testsuite/g++.old-deja/g++.mike/p3068.C
- 598059428b ./gcc/testsuite/g++.old-deja/g++.mike/p3070.C
-2642893029b ./gcc/testsuite/g++.old-deja/g++.mike/p3139.C
- 270639587b ./gcc/testsuite/g++.old-deja/g++.mike/p3524a.C
-2843604235b ./gcc/testsuite/g++.old-deja/g++.mike/p3524b.C
-1750695024b ./gcc/testsuite/g++.old-deja/g++.mike/p3524c.C
-2033912183b ./gcc/testsuite/g++.old-deja/g++.mike/p3538a.C
-2629346869b ./gcc/testsuite/g++.old-deja/g++.mike/p3538b.C
-1918171545b ./gcc/testsuite/g++.old-deja/g++.mike/p3570.C
-2384869664b ./gcc/testsuite/g++.old-deja/g++.mike/p3579.C
-4049970058b ./gcc/testsuite/g++.old-deja/g++.mike/p3708a.C
-2170847074b ./gcc/testsuite/g++.old-deja/g++.mike/p3708b.C
-1307191770b ./gcc/testsuite/g++.old-deja/g++.mike/p3708.C
-3856504451b ./gcc/testsuite/g++.old-deja/g++.mike/p3764.C
-2579187029b ./gcc/testsuite/g++.old-deja/g++.mike/p3836.C
- 717100314b ./gcc/testsuite/g++.old-deja/g++.mike/p4068.C
-2802835745b ./gcc/testsuite/g++.old-deja/g++.mike/p4104.C
-3650578573b ./gcc/testsuite/g++.old-deja/g++.mike/p4173.C
-1273434326b ./gcc/testsuite/g++.old-deja/g++.mike/p418.C
-1819585103b ./gcc/testsuite/g++.old-deja/g++.mike/p4238.C
-4270040916b ./gcc/testsuite/g++.old-deja/g++.mike/p4246.C
-3157074609b ./gcc/testsuite/g++.old-deja/g++.mike/p4263.C
-4046363413b ./gcc/testsuite/g++.old-deja/g++.mike/p438.C
- 74576159b ./gcc/testsuite/g++.old-deja/g++.mike/p4484.C
-3721268143b ./gcc/testsuite/g++.old-deja/g++.mike/p4511.C
-2798533207b ./gcc/testsuite/g++.old-deja/g++.mike/p4619.C
- 876794667b ./gcc/testsuite/g++.old-deja/g++.mike/p4623.C
-3060461666b ./gcc/testsuite/g++.old-deja/g++.mike/p4667.C
-1693168022b ./gcc/testsuite/g++.old-deja/g++.mike/p4671.C
-2307560998b ./gcc/testsuite/g++.old-deja/g++.mike/p4677.C
-1172826827b ./gcc/testsuite/g++.old-deja/g++.mike/p4693.C
-2820686800b ./gcc/testsuite/g++.old-deja/g++.mike/p4736a.C
- 791627116b ./gcc/testsuite/g++.old-deja/g++.mike/p4736b.C
-3037713609b ./gcc/testsuite/g++.old-deja/g++.mike/p4736c.C
-3183066012b ./gcc/testsuite/g++.old-deja/g++.mike/p4750.C
-1643480270b ./gcc/testsuite/g++.old-deja/g++.mike/p5469a.C
-2783396832b ./gcc/testsuite/g++.old-deja/g++.mike/p5469.C
-1694086012b ./gcc/testsuite/g++.old-deja/g++.mike/p5571.C
-2030989669b ./gcc/testsuite/g++.old-deja/g++.mike/p5611.C
-3220562563b ./gcc/testsuite/g++.old-deja/g++.mike/p5673.C
-2367398371b ./gcc/testsuite/g++.old-deja/g++.mike/p5718.C
- 444505388b ./gcc/testsuite/g++.old-deja/g++.mike/p5793.C
-3682663456b ./gcc/testsuite/g++.old-deja/g++.mike/p5840.C
-3663869594b ./gcc/testsuite/g++.old-deja/g++.mike/p5958.C
-2532392225b ./gcc/testsuite/g++.old-deja/g++.mike/p6004.C
-2942988590b ./gcc/testsuite/g++.old-deja/g++.mike/p6058.C
-3283452059b ./gcc/testsuite/g++.old-deja/g++.mike/p6149.C
-2735139304b ./gcc/testsuite/g++.old-deja/g++.mike/p6311.C
-2969918780b ./gcc/testsuite/g++.old-deja/g++.mike/p646.C
-3736773751b ./gcc/testsuite/g++.old-deja/g++.mike/p6578.C
- 670197536b ./gcc/testsuite/g++.old-deja/g++.mike/p658.C
-4291654389b ./gcc/testsuite/g++.old-deja/g++.mike/p6610a.C
-3357719657b ./gcc/testsuite/g++.old-deja/g++.mike/p6610b.C
- 286526845b ./gcc/testsuite/g++.old-deja/g++.mike/p6611.C
-3897286393b ./gcc/testsuite/g++.old-deja/g++.mike/p6746.C
-2010877795b ./gcc/testsuite/g++.old-deja/g++.mike/p6901.C
-1810770013b ./gcc/testsuite/g++.old-deja/g++.mike/p6927.C
- 670062294b ./gcc/testsuite/g++.old-deja/g++.mike/p700.C
- 224810393b ./gcc/testsuite/g++.old-deja/g++.mike/p701.C
-2057788178b ./gcc/testsuite/g++.old-deja/g++.mike/p710.C
-1244723488b ./gcc/testsuite/g++.old-deja/g++.mike/p7180.C
-3521513511b ./gcc/testsuite/g++.old-deja/g++.mike/p7325.C
-3900843491b ./gcc/testsuite/g++.old-deja/g++.mike/p7476.C
-3394798100b ./gcc/testsuite/g++.old-deja/g++.mike/p755a.C
-2349738175b ./gcc/testsuite/g++.old-deja/g++.mike/p755.C
-1365378601b ./gcc/testsuite/g++.old-deja/g++.mike/p7626.C
-2818833306b ./gcc/testsuite/g++.old-deja/g++.mike/p7635.C
-2124571317b ./gcc/testsuite/g++.old-deja/g++.mike/p7651.C
-3247827104b ./gcc/testsuite/g++.old-deja/g++.mike/p783a.C
-3185815998b ./gcc/testsuite/g++.old-deja/g++.mike/p783b.C
- 298093700b ./gcc/testsuite/g++.old-deja/g++.mike/p783.C
-1112249731b ./gcc/testsuite/g++.old-deja/g++.mike/p784.C
-3281865096b ./gcc/testsuite/g++.old-deja/g++.mike/p7865.C
- 341429709b ./gcc/testsuite/g++.old-deja/g++.mike/p7868.C
-1887516335b ./gcc/testsuite/g++.old-deja/g++.mike/p786.C
- 973504582b ./gcc/testsuite/g++.old-deja/g++.mike/p789a.C
-1539916341b ./gcc/testsuite/g++.old-deja/g++.mike/p789.C
-2120486239b ./gcc/testsuite/g++.old-deja/g++.mike/p7912.C
-1656717793b ./gcc/testsuite/g++.old-deja/g++.mike/p8009.C
- 134774070b ./gcc/testsuite/g++.old-deja/g++.mike/p8018.C
-2662329366b ./gcc/testsuite/g++.old-deja/g++.mike/p8039.C
-3781414938b ./gcc/testsuite/g++.old-deja/g++.mike/p807a.C
-1398614996b ./gcc/testsuite/g++.old-deja/g++.mike/p807.C
-3344337430b ./gcc/testsuite/g++.old-deja/g++.mike/p811.C
-2698571232b ./gcc/testsuite/g++.old-deja/g++.mike/p8154.C
-3491611004b ./gcc/testsuite/g++.old-deja/g++.mike/p8155.C
-2633237714b ./gcc/testsuite/g++.old-deja/g++.mike/p8175.C
-2964779539b ./gcc/testsuite/g++.old-deja/g++.mike/p8269.C
-4289506060b ./gcc/testsuite/g++.old-deja/g++.mike/p8460.C
-2097683379b ./gcc/testsuite/g++.old-deja/g++.mike/p8483.C
-1218023303b ./gcc/testsuite/g++.old-deja/g++.mike/p8620.C
- 249128071b ./gcc/testsuite/g++.old-deja/g++.mike/p8786.C
- 771352385b ./gcc/testsuite/g++.old-deja/g++.mike/p8804.C
- 776812521b ./gcc/testsuite/g++.old-deja/g++.mike/p8825.C
-1371812496b ./gcc/testsuite/g++.old-deja/g++.mike/p9068.C
- 325691543b ./gcc/testsuite/g++.old-deja/g++.mike/p9129.C
-3342831000b ./gcc/testsuite/g++.old-deja/g++.mike/p9206.C
-2518851606b ./gcc/testsuite/g++.old-deja/g++.mike/p9506.C
-1690639952b ./gcc/testsuite/g++.old-deja/g++.mike/p9706.C
-3944011165b ./gcc/testsuite/g++.old-deja/g++.mike/p9732a.C
-3851742489b ./gcc/testsuite/g++.old-deja/g++.mike/p9732b.C
- 443576986b ./gcc/testsuite/g++.old-deja/g++.mike/p9732c.C
- 518416569b ./gcc/testsuite/g++.old-deja/g++.mike/p991.C
-2811267769b ./gcc/testsuite/g++.old-deja/g++.mike/parse1.C
-3910441412b ./gcc/testsuite/g++.old-deja/g++.mike/pmd1.C
-2358019327b ./gcc/testsuite/g++.old-deja/g++.mike/pmf1.C
- 745271252b ./gcc/testsuite/g++.old-deja/g++.mike/pmf2.C
-1703808507b ./gcc/testsuite/g++.old-deja/g++.mike/pmf3.C
- 869105864b ./gcc/testsuite/g++.old-deja/g++.mike/pmf4.C
-4282673891b ./gcc/testsuite/g++.old-deja/g++.mike/pmf6.C
- 395491161b ./gcc/testsuite/g++.old-deja/g++.mike/pmf7.C
-4282219054b ./gcc/testsuite/g++.old-deja/g++.mike/pmf8.C
-3714071418b ./gcc/testsuite/g++.old-deja/g++.mike/pmf9.C
-3325973629b ./gcc/testsuite/g++.old-deja/g++.mike/pt1.C
-2598621982b ./gcc/testsuite/g++.old-deja/g++.mike/pt2.C
-2307535900b ./gcc/testsuite/g++.old-deja/g++.mike/pt3.C
-3210931270b ./gcc/testsuite/g++.old-deja/g++.mike/pt4.C
-2439755306b ./gcc/testsuite/g++.old-deja/g++.mike/ref1.C
-3112607319b ./gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
-1881087162b ./gcc/testsuite/g++.old-deja/g++.mike/rtti2.C
-1138172928b ./gcc/testsuite/g++.old-deja/g++.mike/rtti3.C
-2936617600b ./gcc/testsuite/g++.old-deja/g++.mike/s24939.C
-1604548693b ./gcc/testsuite/g++.old-deja/g++.mike/s35520.C
- 786052027b ./gcc/testsuite/g++.old-deja/g++.mike/s9959.C
-2301275682b ./gcc/testsuite/g++.old-deja/g++.mike/scast1.C
-3863602884b ./gcc/testsuite/g++.old-deja/g++.mike/temp.C
-1016068831b ./gcc/testsuite/g++.old-deja/g++.mike/thunk1.C
-3905632919b ./gcc/testsuite/g++.old-deja/g++.mike/thunk2.C
- 630939157b ./gcc/testsuite/g++.old-deja/g++.mike/thunk3.C
-4259046108b ./gcc/testsuite/g++.old-deja/g++.mike/unroll1.C
-1164439917b ./gcc/testsuite/g++.old-deja/g++.mike/virt1.C
-2927817139b ./gcc/testsuite/g++.old-deja/g++.mike/virt2.C
-1772591600b ./gcc/testsuite/g++.old-deja/g++.mike/virt3.C
-2392194899b ./gcc/testsuite/g++.old-deja/g++.mike/virt4.C
-2478016121b ./gcc/testsuite/g++.old-deja/g++.mike/virt5.C
-3288371737b ./gcc/testsuite/g++.old-deja/g++.mike/virt6.C
-1193160491b ./gcc/testsuite/g++.old-deja/g++.mike/vtable1.C
-3226895086b ./gcc/testsuite/g++.old-deja/g++.mike/warn1.C
-3433176936b ./gcc/testsuite/g++.old-deja/g++.mike/warn2.C
-1152844660b ./gcc/testsuite/g++.old-deja/g++.mike/warn3.C
-3770397490b ./gcc/testsuite/g++.old-deja/g++.mike/warn4.C
-2345927769b ./gcc/testsuite/g++.old-deja/g++.mike/warn5.C
-2855656530b ./gcc/testsuite/g++.old-deja/g++.mike/warn6.C
-1810473850b ./gcc/testsuite/g++.old-deja/g++.mike/warn7.C
-1569186871b ./gcc/testsuite/g++.old-deja/g++.mike/warn8.C
-3056861018b ./gcc/testsuite/g++.old-deja/g++.niklas/.cvsignore
-4133635689b ./gcc/testsuite/g++.old-deja/g++.niklas/README
-1859900513b ./gcc/testsuite/g++.old-deja/g++.niklas/t113.C
-3921758020b ./gcc/testsuite/g++.old-deja/g++.niklas/t114.C
-1052990327b ./gcc/testsuite/g++.old-deja/g++.niklas/t115.C
-3219478044b ./gcc/testsuite/g++.old-deja/g++.niklas/t118.C
-2028104920b ./gcc/testsuite/g++.old-deja/g++.niklas/t119.C
-1112136284b ./gcc/testsuite/g++.old-deja/g++.niklas/t120.C
- 197310626b ./gcc/testsuite/g++.old-deja/g++.niklas/t121.C
-2209127602b ./gcc/testsuite/g++.old-deja/g++.niklas/t122.C
-1716591189b ./gcc/testsuite/g++.old-deja/g++.niklas/t123.C
- 709937017b ./gcc/testsuite/g++.old-deja/g++.niklas/t124.C
-4167170414b ./gcc/testsuite/g++.old-deja/g++.niklas/t125.C
-2724654772b ./gcc/testsuite/g++.old-deja/g++.niklas/t126.C
-3948659357b ./gcc/testsuite/g++.old-deja/g++.niklas/t127.C
-2264211915b ./gcc/testsuite/g++.old-deja/g++.niklas/t128.C
-1867008357b ./gcc/testsuite/g++.old-deja/g++.niklas/t129.C
-4093189884b ./gcc/testsuite/g++.old-deja/g++.niklas/t130.C
-1806737839b ./gcc/testsuite/g++.old-deja/g++.niklas/t131.C
-3992567271b ./gcc/testsuite/g++.old-deja/g++.niklas/t132.C
-1882324382b ./gcc/testsuite/g++.old-deja/g++.niklas/t133.C
-2007964316b ./gcc/testsuite/g++.old-deja/g++.niklas/t134.C
- 237693360b ./gcc/testsuite/g++.old-deja/g++.niklas/t135.C
-2498734643b ./gcc/testsuite/g++.old-deja/g++.niklas/t136.C
-2536115327b ./gcc/testsuite/g++.old-deja/g++.niklas/t137.C
-3458381060b ./gcc/testsuite/g++.old-deja/g++.niklas/t138.C
-2261506284b ./gcc/testsuite/g++.old-deja/g++.niklas/t139.C
-3432935085b ./gcc/testsuite/g++.old-deja/g++.niklas/t140.C
-3319986880b ./gcc/testsuite/g++.old-deja/g++.niklas/t141.C
-3609938502b ./gcc/testsuite/g++.old-deja/g++.ns/alias1.C
- 592778024b ./gcc/testsuite/g++.old-deja/g++.ns/alias2.C
-3196887127b ./gcc/testsuite/g++.old-deja/g++.ns/alias3.C
-1946359707b ./gcc/testsuite/g++.old-deja/g++.ns/alias4.C
-3609938502b ./gcc/testsuite/g++.old-deja/g++.ns/alias5.C
-3903958846b ./gcc/testsuite/g++.old-deja/g++.ns/alias6.C
-2870125746b ./gcc/testsuite/g++.old-deja/g++.ns/alias7.C
-3962486569b ./gcc/testsuite/g++.old-deja/g++.ns/anon1.C
-1234174045b ./gcc/testsuite/g++.old-deja/g++.ns/bogus1.C
- 887554997b ./gcc/testsuite/g++.old-deja/g++.ns/crash1.C
-2464744464b ./gcc/testsuite/g++.old-deja/g++.ns/crash2.C
-3702812747b ./gcc/testsuite/g++.old-deja/g++.ns/crash3.C
-1039024293b ./gcc/testsuite/g++.old-deja/g++.ns/crash4.C
- 291093904b ./gcc/testsuite/g++.old-deja/g++.ns/extern1.C
-1173492084b ./gcc/testsuite/g++.old-deja/g++.ns/friend1.C
-1868773204b ./gcc/testsuite/g++.old-deja/g++.ns/friend2.C
-3202138550b ./gcc/testsuite/g++.old-deja/g++.ns/invalid1.C
- 906902326b ./gcc/testsuite/g++.old-deja/g++.ns/koenig1.C
-1411633778b ./gcc/testsuite/g++.old-deja/g++.ns/koenig2.C
-2631367576b ./gcc/testsuite/g++.old-deja/g++.ns/koenig3.C
-3382825940b ./gcc/testsuite/g++.old-deja/g++.ns/koenig4.C
-1611992557b ./gcc/testsuite/g++.old-deja/g++.ns/koenig5.C
-1887390137b ./gcc/testsuite/g++.old-deja/g++.ns/koenig6.C
-1096451021b ./gcc/testsuite/g++.old-deja/g++.ns/koenig7.C
-1122271156b ./gcc/testsuite/g++.old-deja/g++.ns/koenig8.C
-1715624709b ./gcc/testsuite/g++.old-deja/g++.ns/koenig9.C
-3901434139b ./gcc/testsuite/g++.old-deja/g++.ns/lookup1.C
- 386799298b ./gcc/testsuite/g++.old-deja/g++.ns/lookup2.C
- 457208660b ./gcc/testsuite/g++.old-deja/g++.ns/lookup3.C
-1271629498b ./gcc/testsuite/g++.old-deja/g++.ns/lookup4.C
- 99097863b ./gcc/testsuite/g++.old-deja/g++.ns/lookup5.C
-2416418172b ./gcc/testsuite/g++.old-deja/g++.ns/main1.C
- 462860645b ./gcc/testsuite/g++.old-deja/g++.ns/new1.C
-2286495086b ./gcc/testsuite/g++.old-deja/g++.ns/ns10.C
-2018913859b ./gcc/testsuite/g++.old-deja/g++.ns/ns11.C
-1953910502b ./gcc/testsuite/g++.old-deja/g++.ns/ns12.C
-1783653783b ./gcc/testsuite/g++.old-deja/g++.ns/ns13.C
- 649484463b ./gcc/testsuite/g++.old-deja/g++.ns/ns14.C
-3477570937b ./gcc/testsuite/g++.old-deja/g++.ns/ns15.C
-3961933508b ./gcc/testsuite/g++.old-deja/g++.ns/ns16.C
-2083452456b ./gcc/testsuite/g++.old-deja/g++.ns/ns17.C
-1679880705b ./gcc/testsuite/g++.old-deja/g++.ns/ns18.C
-3180343024b ./gcc/testsuite/g++.old-deja/g++.ns/ns19.C
- 320140404b ./gcc/testsuite/g++.old-deja/g++.ns/ns1.C
-1879177898b ./gcc/testsuite/g++.old-deja/g++.ns/ns2.C
-1465385187b ./gcc/testsuite/g++.old-deja/g++.ns/ns3.C
-4084737299b ./gcc/testsuite/g++.old-deja/g++.ns/ns4.C
-3095284437b ./gcc/testsuite/g++.old-deja/g++.ns/ns5.C
-3082882966b ./gcc/testsuite/g++.old-deja/g++.ns/ns6.C
-1632020321b ./gcc/testsuite/g++.old-deja/g++.ns/ns7.C
- 983347709b ./gcc/testsuite/g++.old-deja/g++.ns/ns8.C
-3680884696b ./gcc/testsuite/g++.old-deja/g++.ns/ns9.C
- 600497628b ./gcc/testsuite/g++.old-deja/g++.ns/overload1.C
- 192977486b ./gcc/testsuite/g++.old-deja/g++.ns/overload2.C
-2134480176b ./gcc/testsuite/g++.old-deja/g++.ns/overload3.C
-3876905928b ./gcc/testsuite/g++.old-deja/g++.ns/overload4.C
-2260598962b ./gcc/testsuite/g++.old-deja/g++.ns/overload5.C
-4131178865b ./gcc/testsuite/g++.old-deja/g++.ns/scoped1.C
-1593366070b ./gcc/testsuite/g++.old-deja/g++.ns/template10.C
- 227548188b ./gcc/testsuite/g++.old-deja/g++.ns/template11.C
-3712349348b ./gcc/testsuite/g++.old-deja/g++.ns/template12.C
- 79283455b ./gcc/testsuite/g++.old-deja/g++.ns/template13.C
-1942781319b ./gcc/testsuite/g++.old-deja/g++.ns/template14.C
-4227768604b ./gcc/testsuite/g++.old-deja/g++.ns/template15.C
- 703552988b ./gcc/testsuite/g++.old-deja/g++.ns/template16.C
-3733063651b ./gcc/testsuite/g++.old-deja/g++.ns/template17.C
-1888321924b ./gcc/testsuite/g++.old-deja/g++.ns/template18.C
-1497628723b ./gcc/testsuite/g++.old-deja/g++.ns/template1.C
-2875853595b ./gcc/testsuite/g++.old-deja/g++.ns/template2.C
-1112300813b ./gcc/testsuite/g++.old-deja/g++.ns/template3.C
-2350177435b ./gcc/testsuite/g++.old-deja/g++.ns/template4.C
-2979487904b ./gcc/testsuite/g++.old-deja/g++.ns/template5.C
-4046950700b ./gcc/testsuite/g++.old-deja/g++.ns/template6.C
-1696916874b ./gcc/testsuite/g++.old-deja/g++.ns/template7.C
-4106967799b ./gcc/testsuite/g++.old-deja/g++.ns/template8.C
-2144693012b ./gcc/testsuite/g++.old-deja/g++.ns/template9.C
- 84089911b ./gcc/testsuite/g++.old-deja/g++.ns/type1.C
-3277562556b ./gcc/testsuite/g++.old-deja/g++.ns/type2.C
-1028524427b ./gcc/testsuite/g++.old-deja/g++.ns/undef1.C
-3481627695b ./gcc/testsuite/g++.old-deja/g++.ns/using10.C
-3329538563b ./gcc/testsuite/g++.old-deja/g++.ns/using11.C
-1085995099b ./gcc/testsuite/g++.old-deja/g++.ns/using12.C
- 883766752b ./gcc/testsuite/g++.old-deja/g++.ns/using13.C
- 35819294b ./gcc/testsuite/g++.old-deja/g++.ns/using14.C
-1496925944b ./gcc/testsuite/g++.old-deja/g++.ns/using1.C
- 549926689b ./gcc/testsuite/g++.old-deja/g++.ns/using2.C
-2238481400b ./gcc/testsuite/g++.old-deja/g++.ns/using3.C
-3304922930b ./gcc/testsuite/g++.old-deja/g++.ns/using4.C
-3313223306b ./gcc/testsuite/g++.old-deja/g++.ns/using5.C
-3070329898b ./gcc/testsuite/g++.old-deja/g++.ns/using6.C
-3099602163b ./gcc/testsuite/g++.old-deja/g++.ns/using7.C
- 396388537b ./gcc/testsuite/g++.old-deja/g++.ns/using8.C
- 536814910b ./gcc/testsuite/g++.old-deja/g++.ns/using9.C
- 33710489b ./gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog
-3728265872b ./gcc/testsuite/g++.old-deja/g++.oliva/ctor1.C
-3026414575b ./gcc/testsuite/g++.old-deja/g++.oliva/delete1.C
-3639944207b ./gcc/testsuite/g++.old-deja/g++.oliva/delete2.C
-2643297136b ./gcc/testsuite/g++.old-deja/g++.oliva/delete3.C
-2694375318b ./gcc/testsuite/g++.old-deja/g++.oliva/delete4.C
- 344447742b ./gcc/testsuite/g++.old-deja/g++.oliva/delete5.C
-2655620155b ./gcc/testsuite/g++.old-deja/g++.oliva/dwarf1.C
-2964032756b ./gcc/testsuite/g++.old-deja/g++.oliva/dwarf2.C
-1746999930b ./gcc/testsuite/g++.old-deja/g++.oliva/dwarf3.C
-3764858774b ./gcc/testsuite/g++.old-deja/g++.oliva/expr1.C
-3287636659b ./gcc/testsuite/g++.old-deja/g++.oliva/expr2.C
- 738813804b ./gcc/testsuite/g++.old-deja/g++.oliva/ext1.C
- 149147424b ./gcc/testsuite/g++.old-deja/g++.oliva/friend1.C
-3385010570b ./gcc/testsuite/g++.old-deja/g++.oliva/inline1.C
-2214033786b ./gcc/testsuite/g++.old-deja/g++.oliva/nameret1.C
-2703397514b ./gcc/testsuite/g++.old-deja/g++.oliva/nameret2.C
- 759830263b ./gcc/testsuite/g++.old-deja/g++.oliva/new1.C
- 695336951b ./gcc/testsuite/g++.old-deja/g++.oliva/ns1.C
-2491296653b ./gcc/testsuite/g++.old-deja/g++.oliva/ns2.C
-2727020577b ./gcc/testsuite/g++.old-deja/g++.oliva/ns3.C
- 55143343b ./gcc/testsuite/g++.old-deja/g++.oliva/overload1.C
-2278180057b ./gcc/testsuite/g++.old-deja/g++.oliva/partord1.C
-4276767902b ./gcc/testsuite/g++.old-deja/g++.oliva/partspec1.C
-2386630112b ./gcc/testsuite/g++.old-deja/g++.oliva/stkalign.C
-4240481284b ./gcc/testsuite/g++.old-deja/g++.oliva/template10.C
-1309552996b ./gcc/testsuite/g++.old-deja/g++.oliva/template1.C
- 894610317b ./gcc/testsuite/g++.old-deja/g++.oliva/template2.C
-4111994491b ./gcc/testsuite/g++.old-deja/g++.oliva/template3.C
-3380741154b ./gcc/testsuite/g++.old-deja/g++.oliva/template4.C
-2219239694b ./gcc/testsuite/g++.old-deja/g++.oliva/template5.C
- 648492939b ./gcc/testsuite/g++.old-deja/g++.oliva/template6.C
-3724691458b ./gcc/testsuite/g++.old-deja/g++.oliva/template7.C
-2923124652b ./gcc/testsuite/g++.old-deja/g++.oliva/template8.C
-1030363186b ./gcc/testsuite/g++.old-deja/g++.oliva/template9.C
-3126175465b ./gcc/testsuite/g++.old-deja/g++.oliva/thunk1.C
-2910311896b ./gcc/testsuite/g++.old-deja/g++.oliva/typename1.C
-3314243773b ./gcc/testsuite/g++.old-deja/g++.oliva/typename2.C
-3536726592b ./gcc/testsuite/g++.old-deja/g++.oliva/typeof1.C
-1057884755b ./gcc/testsuite/g++.old-deja/g++.other/900403_04.C
-3988635652b ./gcc/testsuite/g++.old-deja/g++.other/900519_12.C
-3191928166b ./gcc/testsuite/g++.old-deja/g++.other/access10.C
-2726240569b ./gcc/testsuite/g++.old-deja/g++.other/access11.C
-2645069492b ./gcc/testsuite/g++.old-deja/g++.other/access1.C
- 627859229b ./gcc/testsuite/g++.old-deja/g++.other/access2.C
-2495312369b ./gcc/testsuite/g++.old-deja/g++.other/access3.C
-2750828805b ./gcc/testsuite/g++.old-deja/g++.other/access4.C
-2421996265b ./gcc/testsuite/g++.old-deja/g++.other/access5.C
-3545934529b ./gcc/testsuite/g++.old-deja/g++.other/access6.C
-3047622025b ./gcc/testsuite/g++.old-deja/g++.other/access7.C
- 503834536b ./gcc/testsuite/g++.old-deja/g++.other/access8.C
-2834461355b ./gcc/testsuite/g++.old-deja/g++.other/access9.C
-2214832839b ./gcc/testsuite/g++.old-deja/g++.other/addrof1.C
-1563340634b ./gcc/testsuite/g++.old-deja/g++.other/align.C
-2784356656b ./gcc/testsuite/g++.old-deja/g++.other/ambig1.C
-2097579030b ./gcc/testsuite/g++.old-deja/g++.other/ambig2.C
-1537055798b ./gcc/testsuite/g++.old-deja/g++.other/ambig3.C
-1344999649b ./gcc/testsuite/g++.old-deja/g++.other/anon1.C
-2190312352b ./gcc/testsuite/g++.old-deja/g++.other/anon2.C
-3495970892b ./gcc/testsuite/g++.old-deja/g++.other/anon3.C
- 328785145b ./gcc/testsuite/g++.old-deja/g++.other/anon4.C
-2706988209b ./gcc/testsuite/g++.old-deja/g++.other/anon5.C
-2854182173b ./gcc/testsuite/g++.old-deja/g++.other/anon6.C
-3655281019b ./gcc/testsuite/g++.old-deja/g++.other/anon7.C
-2243818429b ./gcc/testsuite/g++.old-deja/g++.other/anon8.C
-2944422964b ./gcc/testsuite/g++.old-deja/g++.other/anon9.C
-3655425788b ./gcc/testsuite/g++.old-deja/g++.other/array1.C
-2041445169b ./gcc/testsuite/g++.old-deja/g++.other/array2.C
- 817672117b ./gcc/testsuite/g++.old-deja/g++.other/array3.C
-1236007435b ./gcc/testsuite/g++.old-deja/g++.other/array4.C
-4210498948b ./gcc/testsuite/g++.old-deja/g++.other/array5.C
-1839235782b ./gcc/testsuite/g++.old-deja/g++.other/array6.C
- 128237130b ./gcc/testsuite/g++.old-deja/g++.other/array9.C
- 775293500b ./gcc/testsuite/g++.old-deja/g++.other/asm1.C
-1087917488b ./gcc/testsuite/g++.old-deja/g++.other/asm2.C
-2120817147b ./gcc/testsuite/g++.old-deja/g++.other/asm3.C
-4169192453b ./gcc/testsuite/g++.old-deja/g++.other/badarrow.C
-1457616136b ./gcc/testsuite/g++.old-deja/g++.other/badopt1.C
- 578421507b ./gcc/testsuite/g++.old-deja/g++.other/base1.C
- 727834736b ./gcc/testsuite/g++.old-deja/g++.other/bitfld1.C
-4101624820b ./gcc/testsuite/g++.old-deja/g++.other/bitfld2.C
-2880959878b ./gcc/testsuite/g++.old-deja/g++.other/bitfld3.C
- 574179745b ./gcc/testsuite/g++.old-deja/g++.other/bitfld4.C
-2818363580b ./gcc/testsuite/g++.old-deja/g++.other/bitfld5.C
- 849916728b ./gcc/testsuite/g++.old-deja/g++.other/builtins1.C
-1119192045b ./gcc/testsuite/g++.old-deja/g++.other/builtins2.C
-1541855856b ./gcc/testsuite/g++.old-deja/g++.other/builtins3.C
-3612794982b ./gcc/testsuite/g++.old-deja/g++.other/builtins4.C
-2609921973b ./gcc/testsuite/g++.old-deja/g++.other/builtins5.C
-1770005594b ./gcc/testsuite/g++.old-deja/g++.other/builtins6.C
-2118815705b ./gcc/testsuite/g++.old-deja/g++.other/builtins7.C
-3786327583b ./gcc/testsuite/g++.old-deja/g++.other/builtins8.C
-3198258077b ./gcc/testsuite/g++.old-deja/g++.other/builtins9.C
-1856291545b ./gcc/testsuite/g++.old-deja/g++.other/call1.C
-1948526601b ./gcc/testsuite/g++.old-deja/g++.other/cast1.C
-2969373696b ./gcc/testsuite/g++.old-deja/g++.other/cast2.C
- 604190312b ./gcc/testsuite/g++.old-deja/g++.other/cast3.C
-2184311979b ./gcc/testsuite/g++.old-deja/g++.other/cast4.C
- 24055341b ./gcc/testsuite/g++.old-deja/g++.other/cast5.C
- 749894899b ./gcc/testsuite/g++.old-deja/g++.other/cast6.C
-1982308839b ./gcc/testsuite/g++.old-deja/g++.other/cast7.C
-2304816521b ./gcc/testsuite/g++.old-deja/g++.other/cleanup1.C
-3543693514b ./gcc/testsuite/g++.old-deja/g++.other/cleanup2.C
- 995095788b ./gcc/testsuite/g++.old-deja/g++.other/cleanup4.C
-3815448745b ./gcc/testsuite/g++.old-deja/g++.other/comdat1-aux.cc
-3620214006b ./gcc/testsuite/g++.old-deja/g++.other/comdat1.C
-2015497124b ./gcc/testsuite/g++.old-deja/g++.other/comdat2-aux.cc
-1235507024b ./gcc/testsuite/g++.old-deja/g++.other/comdat2.C
- 32346335b ./gcc/testsuite/g++.old-deja/g++.other/cond1.C
-2040886616b ./gcc/testsuite/g++.old-deja/g++.other/cond2.C
-1693754994b ./gcc/testsuite/g++.old-deja/g++.other/cond3.C
- 670388594b ./gcc/testsuite/g++.old-deja/g++.other/cond4.C
-1262376075b ./gcc/testsuite/g++.old-deja/g++.other/cond5.C
-2676026586b ./gcc/testsuite/g++.old-deja/g++.other/cond6.C
-1953534421b ./gcc/testsuite/g++.old-deja/g++.other/cond7.C
-2177760584b ./gcc/testsuite/g++.old-deja/g++.other/const1.C
- 815940719b ./gcc/testsuite/g++.old-deja/g++.other/const2.C
-3115773883b ./gcc/testsuite/g++.old-deja/g++.other/conv1.C
- 831200322b ./gcc/testsuite/g++.old-deja/g++.other/conv2.C
-1628602313b ./gcc/testsuite/g++.old-deja/g++.other/conv3.C
-4233772671b ./gcc/testsuite/g++.old-deja/g++.other/conv4.C
- 310726280b ./gcc/testsuite/g++.old-deja/g++.other/conv5.C
-4132208036b ./gcc/testsuite/g++.old-deja/g++.other/conv6.C
-3821789807b ./gcc/testsuite/g++.old-deja/g++.other/conv7.C
-2577806949b ./gcc/testsuite/g++.old-deja/g++.other/conv8.C
-1535970476b ./gcc/testsuite/g++.old-deja/g++.other/conv9.C
-3587605986b ./gcc/testsuite/g++.old-deja/g++.other/copy1.C
-3735054018b ./gcc/testsuite/g++.old-deja/g++.other/copy2.C
-4116304803b ./gcc/testsuite/g++.old-deja/g++.other/copy3.C
- 809878899b ./gcc/testsuite/g++.old-deja/g++.other/covar1.C
-2622243234b ./gcc/testsuite/g++.old-deja/g++.other/crash10.C
-1409785718b ./gcc/testsuite/g++.old-deja/g++.other/crash11.C
- 155389209b ./gcc/testsuite/g++.old-deja/g++.other/crash12.C
-3778901334b ./gcc/testsuite/g++.old-deja/g++.other/crash13.C
-3521221636b ./gcc/testsuite/g++.old-deja/g++.other/crash14.C
-3608968471b ./gcc/testsuite/g++.old-deja/g++.other/crash15.C
-1523769869b ./gcc/testsuite/g++.old-deja/g++.other/crash16.C
-2768038718b ./gcc/testsuite/g++.old-deja/g++.other/crash17.C
-1844482260b ./gcc/testsuite/g++.old-deja/g++.other/crash18.C
-4239879636b ./gcc/testsuite/g++.old-deja/g++.other/crash19.C
-1458918645b ./gcc/testsuite/g++.old-deja/g++.other/crash1.C
-2114923665b ./gcc/testsuite/g++.old-deja/g++.other/crash20.C
-2408483670b ./gcc/testsuite/g++.old-deja/g++.other/crash21.C
- 389951009b ./gcc/testsuite/g++.old-deja/g++.other/crash22.C
-3346026369b ./gcc/testsuite/g++.old-deja/g++.other/crash23.C
-3240226401b ./gcc/testsuite/g++.old-deja/g++.other/crash24.C
-1103500081b ./gcc/testsuite/g++.old-deja/g++.other/crash25.C
- 662847024b ./gcc/testsuite/g++.old-deja/g++.other/crash26.C
- 621631894b ./gcc/testsuite/g++.old-deja/g++.other/crash27.C
-1274918070b ./gcc/testsuite/g++.old-deja/g++.other/crash28.C
-3218325168b ./gcc/testsuite/g++.old-deja/g++.other/crash29.C
-2556139745b ./gcc/testsuite/g++.old-deja/g++.other/crash2.C
-3863621974b ./gcc/testsuite/g++.old-deja/g++.other/crash30.C
-1567414961b ./gcc/testsuite/g++.old-deja/g++.other/crash31.C
-2337764618b ./gcc/testsuite/g++.old-deja/g++.other/crash32.C
-3826660229b ./gcc/testsuite/g++.old-deja/g++.other/crash33.C
-1464877078b ./gcc/testsuite/g++.old-deja/g++.other/crash34.C
-1090618161b ./gcc/testsuite/g++.old-deja/g++.other/crash35.C
-1919242889b ./gcc/testsuite/g++.old-deja/g++.other/crash36.C
-3888381363b ./gcc/testsuite/g++.old-deja/g++.other/crash37.C
-3660059490b ./gcc/testsuite/g++.old-deja/g++.other/crash38.C
- 465327177b ./gcc/testsuite/g++.old-deja/g++.other/crash39.C
-1986207284b ./gcc/testsuite/g++.old-deja/g++.other/crash3.C
-2473163715b ./gcc/testsuite/g++.old-deja/g++.other/crash40.C
-2559623170b ./gcc/testsuite/g++.old-deja/g++.other/crash41.C
-2300001961b ./gcc/testsuite/g++.old-deja/g++.other/crash42.C
- 226105322b ./gcc/testsuite/g++.old-deja/g++.other/crash4.C
-1657789856b ./gcc/testsuite/g++.old-deja/g++.other/crash5.C
-2889210351b ./gcc/testsuite/g++.old-deja/g++.other/crash60.C
-3212679954b ./gcc/testsuite/g++.old-deja/g++.other/crash6.C
-3092570108b ./gcc/testsuite/g++.old-deja/g++.other/crash7.C
-1968632283b ./gcc/testsuite/g++.old-deja/g++.other/crash8.C
- 739803606b ./gcc/testsuite/g++.old-deja/g++.other/crash9.C
- 531388331b ./gcc/testsuite/g++.old-deja/g++.other/ctor1-aux.cc
-2641112841b ./gcc/testsuite/g++.old-deja/g++.other/ctor1.C
-3378789352b ./gcc/testsuite/g++.old-deja/g++.other/cvqual1.C
-3056861018b ./gcc/testsuite/g++.old-deja/g++.other/.cvsignore
- 727094743b ./gcc/testsuite/g++.old-deja/g++.other/cvt1.C
-3756464148b ./gcc/testsuite/g++.old-deja/g++.other/dcast1.C
-3517388262b ./gcc/testsuite/g++.old-deja/g++.other/dcast2.C
-3685654707b ./gcc/testsuite/g++.old-deja/g++.other/debug1.C
-2822990897b ./gcc/testsuite/g++.old-deja/g++.other/debug2.C
-1189835698b ./gcc/testsuite/g++.old-deja/g++.other/debug3.C
-2324897352b ./gcc/testsuite/g++.old-deja/g++.other/debug4.C
-2810308932b ./gcc/testsuite/g++.old-deja/g++.other/debug5.C
- 295818831b ./gcc/testsuite/g++.old-deja/g++.other/debug6.C
-3988487536b ./gcc/testsuite/g++.old-deja/g++.other/debug7.C
-1879227744b ./gcc/testsuite/g++.old-deja/g++.other/debug8.C
-3358773301b ./gcc/testsuite/g++.old-deja/g++.other/debug9.C
-3900152738b ./gcc/testsuite/g++.old-deja/g++.other/decl1.C
- 424334940b ./gcc/testsuite/g++.old-deja/g++.other/decl2.C
-3608003944b ./gcc/testsuite/g++.old-deja/g++.other/decl3.C
-1694963597b ./gcc/testsuite/g++.old-deja/g++.other/decl4.C
-1101755295b ./gcc/testsuite/g++.old-deja/g++.other/decl5.C
-1313195230b ./gcc/testsuite/g++.old-deja/g++.other/decl6.C
- 634053859b ./gcc/testsuite/g++.old-deja/g++.other/decl7.C
- 681270539b ./gcc/testsuite/g++.old-deja/g++.other/decl8.C
-2910519026b ./gcc/testsuite/g++.old-deja/g++.other/decl9.C
-2306726678b ./gcc/testsuite/g++.old-deja/g++.other/defarg1.C
-2242070909b ./gcc/testsuite/g++.old-deja/g++.other/defarg2.C
-1782517406b ./gcc/testsuite/g++.old-deja/g++.other/defarg3.C
-1949407113b ./gcc/testsuite/g++.old-deja/g++.other/defarg4.C
-1986404254b ./gcc/testsuite/g++.old-deja/g++.other/defarg5.C
-1691336913b ./gcc/testsuite/g++.old-deja/g++.other/defarg6.C
- 702065579b ./gcc/testsuite/g++.old-deja/g++.other/defarg7.C
- 300009654b ./gcc/testsuite/g++.old-deja/g++.other/defarg8.C
- 192024979b ./gcc/testsuite/g++.old-deja/g++.other/defarg9.C
-2802881760b ./gcc/testsuite/g++.old-deja/g++.other/delete1.C
- 276485906b ./gcc/testsuite/g++.old-deja/g++.other/delete2.C
- 904586144b ./gcc/testsuite/g++.old-deja/g++.other/delete3.C
-3432343895b ./gcc/testsuite/g++.old-deja/g++.other/delete4.C
-1951825413b ./gcc/testsuite/g++.old-deja/g++.other/delete5.C
-3466783310b ./gcc/testsuite/g++.old-deja/g++.other/delete6.C
- 509373967b ./gcc/testsuite/g++.old-deja/g++.other/delete7.C
-3153510006b ./gcc/testsuite/g++.old-deja/g++.other/delete8.C
-2943694185b ./gcc/testsuite/g++.old-deja/g++.other/deref1.C
-1585360804b ./gcc/testsuite/g++.old-deja/g++.other/dll-1.C
-1264525517b ./gcc/testsuite/g++.old-deja/g++.other/dll-2.C
-1013566499b ./gcc/testsuite/g++.old-deja/g++.other/dll-3.C
-4096635328b ./gcc/testsuite/g++.old-deja/g++.other/dll-4.C
-4188389053b ./gcc/testsuite/g++.old-deja/g++.other/dll-5.C
-2919979689b ./gcc/testsuite/g++.old-deja/g++.other/dll-6.C
- 18134551b ./gcc/testsuite/g++.old-deja/g++.other/dtor10.C
-1164270328b ./gcc/testsuite/g++.old-deja/g++.other/dtor11.C
-3251874725b ./gcc/testsuite/g++.old-deja/g++.other/dtor12.C
-2995412590b ./gcc/testsuite/g++.old-deja/g++.other/dtor13.C
-1284663345b ./gcc/testsuite/g++.old-deja/g++.other/dtor1.C
- 19912911b ./gcc/testsuite/g++.old-deja/g++.other/dtor2.C
-1972124996b ./gcc/testsuite/g++.old-deja/g++.other/dtor3.C
-3858298340b ./gcc/testsuite/g++.old-deja/g++.other/dtor4.C
- 876617359b ./gcc/testsuite/g++.old-deja/g++.other/dtor5.C
-2345375085b ./gcc/testsuite/g++.old-deja/g++.other/dtor6.C
-3115840152b ./gcc/testsuite/g++.old-deja/g++.other/dtor7.C
-1228765847b ./gcc/testsuite/g++.old-deja/g++.other/dtor8.C
- 837300122b ./gcc/testsuite/g++.old-deja/g++.other/dtor9.C
-4176649198b ./gcc/testsuite/g++.old-deja/g++.other/dyncast1.C
-2159394165b ./gcc/testsuite/g++.old-deja/g++.other/dyncast2.C
-1576362312b ./gcc/testsuite/g++.old-deja/g++.other/dyncast3.C
- 771042933b ./gcc/testsuite/g++.old-deja/g++.other/dyncast4.C
-3056485598b ./gcc/testsuite/g++.old-deja/g++.other/dyncast5.C
-1196348440b ./gcc/testsuite/g++.old-deja/g++.other/dyncast6.C
-3203327173b ./gcc/testsuite/g++.old-deja/g++.other/eh1.C
-4127184370b ./gcc/testsuite/g++.old-deja/g++.other/eh2.C
-3559396844b ./gcc/testsuite/g++.old-deja/g++.other/eh3.C
-3143843455b ./gcc/testsuite/g++.old-deja/g++.other/eh4.C
-1752543333b ./gcc/testsuite/g++.old-deja/g++.other/eh5.C
- 326457279b ./gcc/testsuite/g++.old-deja/g++.other/eh.C
-3053308594b ./gcc/testsuite/g++.old-deja/g++.other/elab1.C
-3888745390b ./gcc/testsuite/g++.old-deja/g++.other/empty1.C
-3170636835b ./gcc/testsuite/g++.old-deja/g++.other/empty2.C
- 845552508b ./gcc/testsuite/g++.old-deja/g++.other/enum1.C
-1384469113b ./gcc/testsuite/g++.old-deja/g++.other/enum2.C
- 556645706b ./gcc/testsuite/g++.old-deja/g++.other/enum3.C
-3409398862b ./gcc/testsuite/g++.old-deja/g++.other/enum4.C
-1750723822b ./gcc/testsuite/g++.old-deja/g++.other/enum5.C
-2843499248b ./gcc/testsuite/g++.old-deja/g++.other/explicit1.C
-1334454026b ./gcc/testsuite/g++.old-deja/g++.other/expr1.C
-4041831790b ./gcc/testsuite/g++.old-deja/g++.other/exprstmt1.C
-1049589711b ./gcc/testsuite/g++.old-deja/g++.other/externC1.C
- 106210432b ./gcc/testsuite/g++.old-deja/g++.other/externC2.C
- 763760707b ./gcc/testsuite/g++.old-deja/g++.other/externC3.C
-3610590692b ./gcc/testsuite/g++.old-deja/g++.other/externC4.C
-1052362663b ./gcc/testsuite/g++.old-deja/g++.other/externC5.C
- 778443229b ./gcc/testsuite/g++.old-deja/g++.other/field1.C
- 250200362b ./gcc/testsuite/g++.old-deja/g++.other/field2.C
-1648602614b ./gcc/testsuite/g++.old-deja/g++.other/fnname1.C
-2595576321b ./gcc/testsuite/g++.old-deja/g++.other/for1.C
-3948754017b ./gcc/testsuite/g++.old-deja/g++.other/for2.C
-1195751396b ./gcc/testsuite/g++.old-deja/g++.other/friend10.C
-3233024721b ./gcc/testsuite/g++.old-deja/g++.other/friend11.C
-3153977462b ./gcc/testsuite/g++.old-deja/g++.other/friend1.C
-1833376578b ./gcc/testsuite/g++.old-deja/g++.other/friend2.C
-1953203540b ./gcc/testsuite/g++.old-deja/g++.other/friend3.C
- 438287814b ./gcc/testsuite/g++.old-deja/g++.other/friend4.C
-1535994258b ./gcc/testsuite/g++.old-deja/g++.other/friend5.C
- 334915341b ./gcc/testsuite/g++.old-deja/g++.other/friend6.C
-2487555281b ./gcc/testsuite/g++.old-deja/g++.other/friend7.C
- 993901545b ./gcc/testsuite/g++.old-deja/g++.other/friend8.C
-1702616549b ./gcc/testsuite/g++.old-deja/g++.other/friend9.C
-1706782876b ./gcc/testsuite/g++.old-deja/g++.other/goto1.C
-1113635348b ./gcc/testsuite/g++.old-deja/g++.other/goto2.C
-3060246492b ./gcc/testsuite/g++.old-deja/g++.other/goto3.C
-2785798940b ./gcc/testsuite/g++.old-deja/g++.other/goto4.C
-2615587703b ./gcc/testsuite/g++.old-deja/g++.other/headers1.C
-1685869594b ./gcc/testsuite/g++.old-deja/g++.other/incomplete.C
-1598723950b ./gcc/testsuite/g++.old-deja/g++.other/init10.C
-1393596821b ./gcc/testsuite/g++.old-deja/g++.other/init11.C
-3918302157b ./gcc/testsuite/g++.old-deja/g++.other/init12.C
-2230863646b ./gcc/testsuite/g++.old-deja/g++.other/init13.C
-4165471595b ./gcc/testsuite/g++.old-deja/g++.other/init14.C
-2091624673b ./gcc/testsuite/g++.old-deja/g++.other/init15.C
-1512725790b ./gcc/testsuite/g++.old-deja/g++.other/init16.C
-1093306404b ./gcc/testsuite/g++.old-deja/g++.other/init17.C
- 927757255b ./gcc/testsuite/g++.old-deja/g++.other/init1.C
-2603599454b ./gcc/testsuite/g++.old-deja/g++.other/init2.C
- 60242679b ./gcc/testsuite/g++.old-deja/g++.other/init3.C
-1928831477b ./gcc/testsuite/g++.old-deja/g++.other/init4.C
-2302598719b ./gcc/testsuite/g++.old-deja/g++.other/init5.C
- 49415730b ./gcc/testsuite/g++.old-deja/g++.other/init6.C
-3569419722b ./gcc/testsuite/g++.old-deja/g++.other/init7.C
-1098289890b ./gcc/testsuite/g++.old-deja/g++.other/init8.C
- 557927133b ./gcc/testsuite/g++.old-deja/g++.other/init9.C
-1778823150b ./gcc/testsuite/g++.old-deja/g++.other/initstring.C
-1695544611b ./gcc/testsuite/g++.old-deja/g++.other/inline10.C
-3270512395b ./gcc/testsuite/g++.old-deja/g++.other/inline11.C
-1325890431b ./gcc/testsuite/g++.old-deja/g++.other/inline12.C
-3738207064b ./gcc/testsuite/g++.old-deja/g++.other/inline13.C
-4172873175b ./gcc/testsuite/g++.old-deja/g++.other/inline14.C
-3062613130b ./gcc/testsuite/g++.old-deja/g++.other/inline15.C
-3811673527b ./gcc/testsuite/g++.old-deja/g++.other/inline16.C
-1438985095b ./gcc/testsuite/g++.old-deja/g++.other/inline17.C
- 938935758b ./gcc/testsuite/g++.old-deja/g++.other/inline18.C
-3672842965b ./gcc/testsuite/g++.old-deja/g++.other/inline19.C
-2434780038b ./gcc/testsuite/g++.old-deja/g++.other/inline1.C
-1204135970b ./gcc/testsuite/g++.old-deja/g++.other/inline20.C
-3724397225b ./gcc/testsuite/g++.old-deja/g++.other/inline21.C
-3956374226b ./gcc/testsuite/g++.old-deja/g++.other/inline23.C
-2138039153b ./gcc/testsuite/g++.old-deja/g++.other/inline2.C
-1052546588b ./gcc/testsuite/g++.old-deja/g++.other/inline3.C
- 56787941b ./gcc/testsuite/g++.old-deja/g++.other/inline4.C
-3486429137b ./gcc/testsuite/g++.old-deja/g++.other/inline5.C
-1620558402b ./gcc/testsuite/g++.old-deja/g++.other/inline6.C
-3584081324b ./gcc/testsuite/g++.old-deja/g++.other/inline7.C
-2265199062b ./gcc/testsuite/g++.old-deja/g++.other/inline8.C
-4185876620b ./gcc/testsuite/g++.old-deja/g++.other/inline9.C
-3998338845b ./gcc/testsuite/g++.old-deja/g++.other/instan1.C
-4152836602b ./gcc/testsuite/g++.old-deja/g++.other/lex1.C
-3192143530b ./gcc/testsuite/g++.old-deja/g++.other/lineno1.C
- 448802586b ./gcc/testsuite/g++.old-deja/g++.other/lineno2.C
-1798112973b ./gcc/testsuite/g++.old-deja/g++.other/lineno3.C
-3724478549b ./gcc/testsuite/g++.old-deja/g++.other/lineno4.C
-3655515541b ./gcc/testsuite/g++.old-deja/g++.other/lineno5.C
-1356735834b ./gcc/testsuite/g++.old-deja/g++.other/linkage1.C
-2749431766b ./gcc/testsuite/g++.old-deja/g++.other/linkage2.C
-3893718025b ./gcc/testsuite/g++.old-deja/g++.other/linkage3.C
- 821605289b ./gcc/testsuite/g++.old-deja/g++.other/linkage4.C
- 617990355b ./gcc/testsuite/g++.old-deja/g++.other/linkage5.C
-3257516835b ./gcc/testsuite/g++.old-deja/g++.other/linkage6.C
-1235107285b ./gcc/testsuite/g++.old-deja/g++.other/linkage7.C
- 577632193b ./gcc/testsuite/g++.old-deja/g++.other/local1.C
- 88188461b ./gcc/testsuite/g++.old-deja/g++.other/local2.C
-2840919735b ./gcc/testsuite/g++.old-deja/g++.other/local3.C
-1540707900b ./gcc/testsuite/g++.old-deja/g++.other/local4.C
-3682661614b ./gcc/testsuite/g++.old-deja/g++.other/local-alloc1.C
-1737066412b ./gcc/testsuite/g++.old-deja/g++.other/lookup10.C
-1037102268b ./gcc/testsuite/g++.old-deja/g++.other/lookup11.C
- 245062181b ./gcc/testsuite/g++.old-deja/g++.other/lookup12.C
- 294960660b ./gcc/testsuite/g++.old-deja/g++.other/lookup13.C
-1052787057b ./gcc/testsuite/g++.old-deja/g++.other/lookup14.C
-3620167133b ./gcc/testsuite/g++.old-deja/g++.other/lookup15.C
-3544839285b ./gcc/testsuite/g++.old-deja/g++.other/lookup16.C
- 697721056b ./gcc/testsuite/g++.old-deja/g++.other/lookup17.C
- 815912902b ./gcc/testsuite/g++.old-deja/g++.other/lookup18.C
- 280785492b ./gcc/testsuite/g++.old-deja/g++.other/lookup19.C
-2269210126b ./gcc/testsuite/g++.old-deja/g++.other/lookup1.C
- 436406477b ./gcc/testsuite/g++.old-deja/g++.other/lookup20.C
-1209560984b ./gcc/testsuite/g++.old-deja/g++.other/lookup21.C
- 614093465b ./gcc/testsuite/g++.old-deja/g++.other/lookup22.C
-2433482316b ./gcc/testsuite/g++.old-deja/g++.other/lookup23.C
-3765524406b ./gcc/testsuite/g++.old-deja/g++.other/lookup2.C
-2344878047b ./gcc/testsuite/g++.old-deja/g++.other/lookup3.C
-1023689233b ./gcc/testsuite/g++.old-deja/g++.other/lookup4.C
-2548363938b ./gcc/testsuite/g++.old-deja/g++.other/lookup5.C
-3828630710b ./gcc/testsuite/g++.old-deja/g++.other/lookup6.C
-1518253932b ./gcc/testsuite/g++.old-deja/g++.other/lookup7.C
-2089412856b ./gcc/testsuite/g++.old-deja/g++.other/lookup8.C
-3925524217b ./gcc/testsuite/g++.old-deja/g++.other/lookup9.C
-2763882892b ./gcc/testsuite/g++.old-deja/g++.other/loop1.C
-3525634979b ./gcc/testsuite/g++.old-deja/g++.other/loop2.C
-3124866775b ./gcc/testsuite/g++.old-deja/g++.other/main1.C
-3887765310b ./gcc/testsuite/g++.old-deja/g++.other/main2.C
-1745830473b ./gcc/testsuite/g++.old-deja/g++.other/mangle10.C
-2766673663b ./gcc/testsuite/g++.old-deja/g++.other/mangle2.C
- 199984455b ./gcc/testsuite/g++.old-deja/g++.other/mangle3.C
-1065924618b ./gcc/testsuite/g++.old-deja/g++.other/mutable1.C
- 828612405b ./gcc/testsuite/g++.old-deja/g++.other/nested1.C
-4217851482b ./gcc/testsuite/g++.old-deja/g++.other/nested2.C
-2800890661b ./gcc/testsuite/g++.old-deja/g++.other/nested3.C
-3749047676b ./gcc/testsuite/g++.old-deja/g++.other/nested4.C
-2899415960b ./gcc/testsuite/g++.old-deja/g++.other/new2.C
-1176720819b ./gcc/testsuite/g++.old-deja/g++.other/new3.C
-2825689270b ./gcc/testsuite/g++.old-deja/g++.other/new4.C
- 850194097b ./gcc/testsuite/g++.old-deja/g++.other/new5.C
-2266969204b ./gcc/testsuite/g++.old-deja/g++.other/new6.C
-2661895613b ./gcc/testsuite/g++.old-deja/g++.other/new7.C
-2658114065b ./gcc/testsuite/g++.old-deja/g++.other/new.C
-4142273200b ./gcc/testsuite/g++.old-deja/g++.other/null1.C
-2086727759b ./gcc/testsuite/g++.old-deja/g++.other/null2.C
-2676296478b ./gcc/testsuite/g++.old-deja/g++.other/null3.C
- 952036012b ./gcc/testsuite/g++.old-deja/g++.other/op1.C
-1061118185b ./gcc/testsuite/g++.old-deja/g++.other/op2.C
-1297089819b ./gcc/testsuite/g++.old-deja/g++.other/op3.C
-2885764662b ./gcc/testsuite/g++.old-deja/g++.other/optimize1.C
-2096609897b ./gcc/testsuite/g++.old-deja/g++.other/optimize2.C
- 551298218b ./gcc/testsuite/g++.old-deja/g++.other/optimize3.C
-3940439065b ./gcc/testsuite/g++.old-deja/g++.other/optimize4.C
-3254521143b ./gcc/testsuite/g++.old-deja/g++.other/overcnv1.C
- 96458692b ./gcc/testsuite/g++.old-deja/g++.other/overcnv2.C
-2127838940b ./gcc/testsuite/g++.old-deja/g++.other/overload10.C
-3726065244b ./gcc/testsuite/g++.old-deja/g++.other/overload11.C
- 759039694b ./gcc/testsuite/g++.old-deja/g++.other/overload12.C
-3493214783b ./gcc/testsuite/g++.old-deja/g++.other/overload13.C
-2296515759b ./gcc/testsuite/g++.old-deja/g++.other/overload14.C
-2161968240b ./gcc/testsuite/g++.old-deja/g++.other/overload1.C
-1905644607b ./gcc/testsuite/g++.old-deja/g++.other/overload2.C
-3260262987b ./gcc/testsuite/g++.old-deja/g++.other/overload3.C
-2754535673b ./gcc/testsuite/g++.old-deja/g++.other/overload4.C
-2606215556b ./gcc/testsuite/g++.old-deja/g++.other/overload5.C
-3443457888b ./gcc/testsuite/g++.old-deja/g++.other/overload6.C
-2985034108b ./gcc/testsuite/g++.old-deja/g++.other/overload7.C
- 898570990b ./gcc/testsuite/g++.old-deja/g++.other/overload8.C
-4060052726b ./gcc/testsuite/g++.old-deja/g++.other/overload9.C
-1262277324b ./gcc/testsuite/g++.old-deja/g++.other/override1.C
-1380865006b ./gcc/testsuite/g++.old-deja/g++.other/override2.C
-1890760625b ./gcc/testsuite/g++.old-deja/g++.other/parse1.C
-1658949221b ./gcc/testsuite/g++.old-deja/g++.other/parse2.C
-3458348700b ./gcc/testsuite/g++.old-deja/g++.other/perf1.C
-2952431682b ./gcc/testsuite/g++.old-deja/g++.other/pmf1.C
-1231841331b ./gcc/testsuite/g++.old-deja/g++.other/pmf2.C
- 412065014b ./gcc/testsuite/g++.old-deja/g++.other/pmf3.C
-1714528435b ./gcc/testsuite/g++.old-deja/g++.other/pmf4.C
-3161683432b ./gcc/testsuite/g++.old-deja/g++.other/pmf5.C
-2300982957b ./gcc/testsuite/g++.old-deja/g++.other/pmf6.C
-2326771429b ./gcc/testsuite/g++.old-deja/g++.other/pmf7.C
-1021148727b ./gcc/testsuite/g++.old-deja/g++.other/pod1.C
-3266716729b ./gcc/testsuite/g++.old-deja/g++.other/printf1.C
-1700199637b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem10.C
-2987181013b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem1.C
-1412545442b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem2.C
- 104810161b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem3.C
- 516033591b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem4.C
-3693600549b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem5.C
- 725330086b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem6.C
- 308552023b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem7.C
-3160378056b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem8.C
- 963938985b ./gcc/testsuite/g++.old-deja/g++.other/ptrmem9.C
-3704604722b ./gcc/testsuite/g++.old-deja/g++.other/qual1.C
- 606859601b ./gcc/testsuite/g++.old-deja/g++.other/realloc.C
-2179956418b ./gcc/testsuite/g++.old-deja/g++.other/redecl1.C
- 245777050b ./gcc/testsuite/g++.old-deja/g++.other/redecl2.C
-1472350818b ./gcc/testsuite/g++.old-deja/g++.other/redecl3.C
- 660015452b ./gcc/testsuite/g++.old-deja/g++.other/redecl4.C
-3051484272b ./gcc/testsuite/g++.old-deja/g++.other/ref1.C
-3121199410b ./gcc/testsuite/g++.old-deja/g++.other/ref2.C
- 396683260b ./gcc/testsuite/g++.old-deja/g++.other/ref3.C
-1636029639b ./gcc/testsuite/g++.old-deja/g++.other/ref4.C
-3976024536b ./gcc/testsuite/g++.old-deja/g++.other/refinit1.C
- 690459633b ./gcc/testsuite/g++.old-deja/g++.other/refinit2.C
-1101055782b ./gcc/testsuite/g++.old-deja/g++.other/regstack.C
-1964301536b ./gcc/testsuite/g++.old-deja/g++.other/reload1.C
-1919174692b ./gcc/testsuite/g++.old-deja/g++.other/return1.C
-1404089609b ./gcc/testsuite/g++.old-deja/g++.other/rtti1.C
-1393937598b ./gcc/testsuite/g++.old-deja/g++.other/rtti2.C
- 69462645b ./gcc/testsuite/g++.old-deja/g++.other/rtti3.C
-1416727844b ./gcc/testsuite/g++.old-deja/g++.other/rtti4.C
- 768461128b ./gcc/testsuite/g++.old-deja/g++.other/rtti5.C
-3024046737b ./gcc/testsuite/g++.old-deja/g++.other/rttid2.C
-1185362893b ./gcc/testsuite/g++.old-deja/g++.other/rttid3.C
-3922125482b ./gcc/testsuite/g++.old-deja/g++.other/rttid4.C
-2715466455b ./gcc/testsuite/g++.old-deja/g++.other/sc1.C
-3818908597b ./gcc/testsuite/g++.old-deja/g++.other/scope1.C
-3543848546b ./gcc/testsuite/g++.old-deja/g++.other/shadow1.C
-3144403535b ./gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
-1879839494b ./gcc/testsuite/g++.old-deja/g++.other/sibcall2.C
-2236161814b ./gcc/testsuite/g++.old-deja/g++.other/signed.C
-3978933585b ./gcc/testsuite/g++.old-deja/g++.other/singleton.C
-2035612399b ./gcc/testsuite/g++.old-deja/g++.other/sizeof1.C
-3022356006b ./gcc/testsuite/g++.old-deja/g++.other/sizeof2.C
- 791384214b ./gcc/testsuite/g++.old-deja/g++.other/sizeof3.C
-3011566538b ./gcc/testsuite/g++.old-deja/g++.other/sizeof4.C
-2613402158b ./gcc/testsuite/g++.old-deja/g++.other/sizeof5.C
-3522079581b ./gcc/testsuite/g++.old-deja/g++.other/static10.C
-2480249422b ./gcc/testsuite/g++.old-deja/g++.other/static11.C
-1625548421b ./gcc/testsuite/g++.old-deja/g++.other/static12.C
-1054249965b ./gcc/testsuite/g++.old-deja/g++.other/static13.C
- 938771596b ./gcc/testsuite/g++.old-deja/g++.other/static14.C
-2968457282b ./gcc/testsuite/g++.old-deja/g++.other/static15.C
- 254220227b ./gcc/testsuite/g++.old-deja/g++.other/static16.C
- 730081105b ./gcc/testsuite/g++.old-deja/g++.other/static1.C
- 400806999b ./gcc/testsuite/g++.old-deja/g++.other/static20.C
-1208581965b ./gcc/testsuite/g++.old-deja/g++.other/static2.C
-1822341199b ./gcc/testsuite/g++.old-deja/g++.other/static3.C
-3669301779b ./gcc/testsuite/g++.old-deja/g++.other/static4.C
-4026472462b ./gcc/testsuite/g++.old-deja/g++.other/static5.C
-3148107112b ./gcc/testsuite/g++.old-deja/g++.other/static6.C
- 456365368b ./gcc/testsuite/g++.old-deja/g++.other/static7.C
-1409972884b ./gcc/testsuite/g++.old-deja/g++.other/static9.C
- 910948586b ./gcc/testsuite/g++.old-deja/g++.other/std1.C
- 574242123b ./gcc/testsuite/g++.old-deja/g++.other/stmtexpr1.C
- 198454248b ./gcc/testsuite/g++.old-deja/g++.other/stmtexpr2.C
-2323476072b ./gcc/testsuite/g++.old-deja/g++.other/store-expr1.C
- 106303641b ./gcc/testsuite/g++.old-deja/g++.other/store-expr2.C
-3308418318b ./gcc/testsuite/g++.old-deja/g++.other/string1.C
-3417212046b ./gcc/testsuite/g++.old-deja/g++.other/string2.C
- 262484701b ./gcc/testsuite/g++.old-deja/g++.other/struct1.C
-2810682616b ./gcc/testsuite/g++.old-deja/g++.other/syntax1.C
-1589137019b ./gcc/testsuite/g++.old-deja/g++.other/syntax2.C
-4037168828b ./gcc/testsuite/g++.old-deja/g++.other/syntax3.C
-1690127873b ./gcc/testsuite/g++.old-deja/g++.other/syntax4.C
-2359213061b ./gcc/testsuite/g++.old-deja/g++.other/syshdr1.C
-1230086448b ./gcc/testsuite/g++.old-deja/g++.other/temporary1.C
-2740237343b ./gcc/testsuite/g++.old-deja/g++.other/thunk1.C
-3664816265b ./gcc/testsuite/g++.old-deja/g++.other/type.C
- 216119427b ./gcc/testsuite/g++.old-deja/g++.other/typeck1.C
-1447088868b ./gcc/testsuite/g++.old-deja/g++.other/typedef1.C
-4156864811b ./gcc/testsuite/g++.old-deja/g++.other/typedef2.C
-1676790992b ./gcc/testsuite/g++.old-deja/g++.other/typedef3.C
-4214958782b ./gcc/testsuite/g++.old-deja/g++.other/typedef4.C
-1476338577b ./gcc/testsuite/g++.old-deja/g++.other/typedef5.C
- 453040140b ./gcc/testsuite/g++.old-deja/g++.other/typedef6.C
-3021107827b ./gcc/testsuite/g++.old-deja/g++.other/typedef7.C
- 330448653b ./gcc/testsuite/g++.old-deja/g++.other/typedef8.C
-2163665334b ./gcc/testsuite/g++.old-deja/g++.other/typeid1.C
-3380807260b ./gcc/testsuite/g++.old-deja/g++.other/typeinfo1.C
-2873064218b ./gcc/testsuite/g++.old-deja/g++.other/typename1.C
-2681453665b ./gcc/testsuite/g++.old-deja/g++.other/typename2.C
-2945224541b ./gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
-2207249090b ./gcc/testsuite/g++.old-deja/g++.other/union1.C
-1220663165b ./gcc/testsuite/g++.old-deja/g++.other/union2.C
- 100032111b ./gcc/testsuite/g++.old-deja/g++.other/union3.C
-1663425333b ./gcc/testsuite/g++.old-deja/g++.other/union4.C
-2304228302b ./gcc/testsuite/g++.old-deja/g++.other/using1.C
-3235316199b ./gcc/testsuite/g++.old-deja/g++.other/using2.C
-2385066250b ./gcc/testsuite/g++.old-deja/g++.other/using3.C
-1787652459b ./gcc/testsuite/g++.old-deja/g++.other/using4.C
- 129150023b ./gcc/testsuite/g++.old-deja/g++.other/using5.C
-3873577868b ./gcc/testsuite/g++.old-deja/g++.other/using6.C
-1034385045b ./gcc/testsuite/g++.old-deja/g++.other/using7.C
-1471419785b ./gcc/testsuite/g++.old-deja/g++.other/using8.C
- 118467765b ./gcc/testsuite/g++.old-deja/g++.other/using9.C
-1336382176b ./gcc/testsuite/g++.old-deja/g++.other/vaarg1.C
- 942920287b ./gcc/testsuite/g++.old-deja/g++.other/vaarg2.C
-3319728754b ./gcc/testsuite/g++.old-deja/g++.other/vaarg3.C
- 280934185b ./gcc/testsuite/g++.old-deja/g++.other/vaarg4.C
-1098377423b ./gcc/testsuite/g++.old-deja/g++.other/vbase1.C
-3043342729b ./gcc/testsuite/g++.old-deja/g++.other/vbase2.C
-1361331299b ./gcc/testsuite/g++.old-deja/g++.other/vbase3.C
-2014677415b ./gcc/testsuite/g++.old-deja/g++.other/vbase4.C
- 891656248b ./gcc/testsuite/g++.old-deja/g++.other/vbase5.C
-1779651648b ./gcc/testsuite/g++.old-deja/g++.other/virtual10.C
-3755735707b ./gcc/testsuite/g++.old-deja/g++.other/virtual11.C
-1164439917b ./gcc/testsuite/g++.old-deja/g++.other/virtual1.C
-1816448166b ./gcc/testsuite/g++.old-deja/g++.other/virtual2.C
-3809279113b ./gcc/testsuite/g++.old-deja/g++.other/virtual3.C
-2374162758b ./gcc/testsuite/g++.old-deja/g++.other/virtual4.C
-1265814562b ./gcc/testsuite/g++.old-deja/g++.other/virtual5.C
-3686177712b ./gcc/testsuite/g++.old-deja/g++.other/virtual6.C
- 781437038b ./gcc/testsuite/g++.old-deja/g++.other/virtual7.C
-3679318968b ./gcc/testsuite/g++.old-deja/g++.other/virtual8.C
-3002440999b ./gcc/testsuite/g++.old-deja/g++.other/virtual9.C
-2176048809b ./gcc/testsuite/g++.old-deja/g++.other/volatile1.C
-1033683047b ./gcc/testsuite/g++.old-deja/g++.other/vtbl1.C
-2778875490b ./gcc/testsuite/g++.old-deja/g++.other/vtbl2.C
-1043998333b ./gcc/testsuite/g++.old-deja/g++.other/warn01.C
-2909972662b ./gcc/testsuite/g++.old-deja/g++.other/warn3.C
-4244338706b ./gcc/testsuite/g++.old-deja/g++.other/warn4.C
-2302390400b ./gcc/testsuite/g++.old-deja/g++.other/warn5.C
-2728478279b ./gcc/testsuite/g++.old-deja/g++.other/warn6.C
-3510625807b ./gcc/testsuite/g++.old-deja/g++.other/warn7.C
-2270221256b ./gcc/testsuite/g++.old-deja/g++.pt/alignof.C
- 584428283b ./gcc/testsuite/g++.old-deja/g++.pt/array1.C
-3156510334b ./gcc/testsuite/g++.old-deja/g++.pt/array2.C
-3295805088b ./gcc/testsuite/g++.old-deja/g++.pt/array3.C
- 999256262b ./gcc/testsuite/g++.old-deja/g++.pt/array4.C
-2973690302b ./gcc/testsuite/g++.old-deja/g++.pt/array5.C
-3458314759b ./gcc/testsuite/g++.old-deja/g++.pt/array6.C
-4134234496b ./gcc/testsuite/g++.old-deja/g++.pt/array7.C
-2426888442b ./gcc/testsuite/g++.old-deja/g++.pt/asm1.C
- 811778129b ./gcc/testsuite/g++.old-deja/g++.pt/asm2.C
-1767746723b ./gcc/testsuite/g++.old-deja/g++.pt/assign1.C
-1101270203b ./gcc/testsuite/g++.old-deja/g++.pt/auto_ptr.C
- 981522879b ./gcc/testsuite/g++.old-deja/g++.pt/bad-type.C
-1894536795b ./gcc/testsuite/g++.old-deja/g++.pt/builtin.C
- 388121289b ./gcc/testsuite/g++.old-deja/g++.pt/call1.C
-4181983549b ./gcc/testsuite/g++.old-deja/g++.pt/call2.C
- 308746068b ./gcc/testsuite/g++.old-deja/g++.pt/cast1.C
-2859433933b ./gcc/testsuite/g++.old-deja/g++.pt/cast2.C
-3941530280b ./gcc/testsuite/g++.old-deja/g++.pt/codegen1.C
- 450876115b ./gcc/testsuite/g++.old-deja/g++.pt/cond2.C
-1459818674b ./gcc/testsuite/g++.old-deja/g++.pt/cond3.C
-1767031896b ./gcc/testsuite/g++.old-deja/g++.pt/const1.C
- 333453858b ./gcc/testsuite/g++.old-deja/g++.pt/const2.C
- 910218975b ./gcc/testsuite/g++.old-deja/g++.pt/conv1.C
- 177622420b ./gcc/testsuite/g++.old-deja/g++.pt/conv2.C
-2497086818b ./gcc/testsuite/g++.old-deja/g++.pt/conv3.C
- 971692590b ./gcc/testsuite/g++.old-deja/g++.pt/copy1.C
-3867481536b ./gcc/testsuite/g++.old-deja/g++.pt/crash10.C
-4238033897b ./gcc/testsuite/g++.old-deja/g++.pt/crash11.C
-1342559330b ./gcc/testsuite/g++.old-deja/g++.pt/crash12.C
-2103079352b ./gcc/testsuite/g++.old-deja/g++.pt/crash13.C
-4259627326b ./gcc/testsuite/g++.old-deja/g++.pt/crash14.C
-1891414246b ./gcc/testsuite/g++.old-deja/g++.pt/crash15.C
-2454938413b ./gcc/testsuite/g++.old-deja/g++.pt/crash16.C
-3806215227b ./gcc/testsuite/g++.old-deja/g++.pt/crash17.C
-2468320011b ./gcc/testsuite/g++.old-deja/g++.pt/crash18.C
-2448971391b ./gcc/testsuite/g++.old-deja/g++.pt/crash19.C
- 552860807b ./gcc/testsuite/g++.old-deja/g++.pt/crash1.C
-3999403848b ./gcc/testsuite/g++.old-deja/g++.pt/crash20.C
-2626609357b ./gcc/testsuite/g++.old-deja/g++.pt/crash21.C
-2675166712b ./gcc/testsuite/g++.old-deja/g++.pt/crash22.C
-1909438119b ./gcc/testsuite/g++.old-deja/g++.pt/crash23.C
- 791202803b ./gcc/testsuite/g++.old-deja/g++.pt/crash24.C
-2555319659b ./gcc/testsuite/g++.old-deja/g++.pt/crash25.C
-1722865703b ./gcc/testsuite/g++.old-deja/g++.pt/crash26.C
-3949680625b ./gcc/testsuite/g++.old-deja/g++.pt/crash27.C
-1024790123b ./gcc/testsuite/g++.old-deja/g++.pt/crash28.C
- 467456086b ./gcc/testsuite/g++.old-deja/g++.pt/crash29.C
-2796245436b ./gcc/testsuite/g++.old-deja/g++.pt/crash2.C
-2162500140b ./gcc/testsuite/g++.old-deja/g++.pt/crash30.C
- 802398069b ./gcc/testsuite/g++.old-deja/g++.pt/crash31.C
-3747058208b ./gcc/testsuite/g++.old-deja/g++.pt/crash32.C
-3806692544b ./gcc/testsuite/g++.old-deja/g++.pt/crash33.C
-3104137488b ./gcc/testsuite/g++.old-deja/g++.pt/crash34.C
-3290437470b ./gcc/testsuite/g++.old-deja/g++.pt/crash35.C
-1106982300b ./gcc/testsuite/g++.old-deja/g++.pt/crash36.C
-3084210338b ./gcc/testsuite/g++.old-deja/g++.pt/crash37.C
- 54189209b ./gcc/testsuite/g++.old-deja/g++.pt/crash38.C
- 322608397b ./gcc/testsuite/g++.old-deja/g++.pt/crash39.C
-2974624163b ./gcc/testsuite/g++.old-deja/g++.pt/crash3.C
-3347789237b ./gcc/testsuite/g++.old-deja/g++.pt/crash40.C
- 447454995b ./gcc/testsuite/g++.old-deja/g++.pt/crash41.C
-4041430549b ./gcc/testsuite/g++.old-deja/g++.pt/crash42.C
- 559732808b ./gcc/testsuite/g++.old-deja/g++.pt/crash43.C
- 301286397b ./gcc/testsuite/g++.old-deja/g++.pt/crash44.C
-2378352861b ./gcc/testsuite/g++.old-deja/g++.pt/crash45.C
-1798056576b ./gcc/testsuite/g++.old-deja/g++.pt/crash46.C
-3755777163b ./gcc/testsuite/g++.old-deja/g++.pt/crash47.C
-3545711527b ./gcc/testsuite/g++.old-deja/g++.pt/crash48.C
- 248168869b ./gcc/testsuite/g++.old-deja/g++.pt/crash49.C
-2620241700b ./gcc/testsuite/g++.old-deja/g++.pt/crash4.C
- 803889593b ./gcc/testsuite/g++.old-deja/g++.pt/crash50.C
-3389049910b ./gcc/testsuite/g++.old-deja/g++.pt/crash51.C
-4194603956b ./gcc/testsuite/g++.old-deja/g++.pt/crash52.C
- 491092947b ./gcc/testsuite/g++.old-deja/g++.pt/crash53.C
-3642813625b ./gcc/testsuite/g++.old-deja/g++.pt/crash54.C
-1749331796b ./gcc/testsuite/g++.old-deja/g++.pt/crash55.C
-1219038376b ./gcc/testsuite/g++.old-deja/g++.pt/crash56.C
-2303343499b ./gcc/testsuite/g++.old-deja/g++.pt/crash57.C
-4236801680b ./gcc/testsuite/g++.old-deja/g++.pt/crash58.C
-2789225927b ./gcc/testsuite/g++.old-deja/g++.pt/crash59.C
-2444045960b ./gcc/testsuite/g++.old-deja/g++.pt/crash5.C
-1374908702b ./gcc/testsuite/g++.old-deja/g++.pt/crash60.C
-3795952345b ./gcc/testsuite/g++.old-deja/g++.pt/crash61.C
-1665773703b ./gcc/testsuite/g++.old-deja/g++.pt/crash62.C
-3223409625b ./gcc/testsuite/g++.old-deja/g++.pt/crash63.C
-3150696822b ./gcc/testsuite/g++.old-deja/g++.pt/crash64.C
-3278220743b ./gcc/testsuite/g++.old-deja/g++.pt/crash65.C
-2950875437b ./gcc/testsuite/g++.old-deja/g++.pt/crash66.C
-1588727602b ./gcc/testsuite/g++.old-deja/g++.pt/crash67.C
-2591611103b ./gcc/testsuite/g++.old-deja/g++.pt/crash68.C
-2304216659b ./gcc/testsuite/g++.old-deja/g++.pt/crash6.C
-3887562144b ./gcc/testsuite/g++.old-deja/g++.pt/crash7.C
- 423406852b ./gcc/testsuite/g++.old-deja/g++.pt/crash8.C
-2256920146b ./gcc/testsuite/g++.old-deja/g++.pt/crash9.C
-1984841620b ./gcc/testsuite/g++.old-deja/g++.pt/ctor1.C
-1009070264b ./gcc/testsuite/g++.old-deja/g++.pt/ctor2.C
- 542513642b ./gcc/testsuite/g++.old-deja/g++.pt/debug1.C
-4104205907b ./gcc/testsuite/g++.old-deja/g++.pt/decl1.C
-3657390003b ./gcc/testsuite/g++.old-deja/g++.pt/decl2.C
-1112077051b ./gcc/testsuite/g++.old-deja/g++.pt/decl3.C
-1579795236b ./gcc/testsuite/g++.old-deja/g++.pt/decl4.C
-3073530878b ./gcc/testsuite/g++.old-deja/g++.pt/deduct1.C
- 536984424b ./gcc/testsuite/g++.old-deja/g++.pt/deduct2.C
-1102733199b ./gcc/testsuite/g++.old-deja/g++.pt/deduct3.C
-1268727238b ./gcc/testsuite/g++.old-deja/g++.pt/deduct4.C
-2614275894b ./gcc/testsuite/g++.old-deja/g++.pt/deduct5.C
- 606334760b ./gcc/testsuite/g++.old-deja/g++.pt/deduct6.C
- 340374206b ./gcc/testsuite/g++.old-deja/g++.pt/deduct7.C
- 940625563b ./gcc/testsuite/g++.old-deja/g++.pt/defarg10.C
-3439579652b ./gcc/testsuite/g++.old-deja/g++.pt/defarg11.C
-3231347060b ./gcc/testsuite/g++.old-deja/g++.pt/defarg12.C
-3348379576b ./gcc/testsuite/g++.old-deja/g++.pt/defarg13.C
-1334739447b ./gcc/testsuite/g++.old-deja/g++.pt/defarg14.C
- 975389866b ./gcc/testsuite/g++.old-deja/g++.pt/defarg2.C
-1340096939b ./gcc/testsuite/g++.old-deja/g++.pt/defarg3.C
-1845545956b ./gcc/testsuite/g++.old-deja/g++.pt/defarg4.C
-1388872661b ./gcc/testsuite/g++.old-deja/g++.pt/defarg5.C
-3143369839b ./gcc/testsuite/g++.old-deja/g++.pt/defarg6.C
-3989235169b ./gcc/testsuite/g++.old-deja/g++.pt/defarg7.C
-1989729882b ./gcc/testsuite/g++.old-deja/g++.pt/defarg8.C
-3350438012b ./gcc/testsuite/g++.old-deja/g++.pt/defarg9.C
-2858847781b ./gcc/testsuite/g++.old-deja/g++.pt/defarg.C
-1222848640b ./gcc/testsuite/g++.old-deja/g++.pt/derived1.C
-4047438471b ./gcc/testsuite/g++.old-deja/g++.pt/derived2.C
-1684757501b ./gcc/testsuite/g++.old-deja/g++.pt/derived3.C
-3987198593b ./gcc/testsuite/g++.old-deja/g++.pt/dynarray.C
-2287973117b ./gcc/testsuite/g++.old-deja/g++.pt/ehspec1.C
-2070134968b ./gcc/testsuite/g++.old-deja/g++.pt/eichin01a.C
-3522936035b ./gcc/testsuite/g++.old-deja/g++.pt/eichin01b.C
- 104775079b ./gcc/testsuite/g++.old-deja/g++.pt/eichin01.C
-3830592816b ./gcc/testsuite/g++.old-deja/g++.pt/enum10.C
-3760628339b ./gcc/testsuite/g++.old-deja/g++.pt/enum11.C
- 822927832b ./gcc/testsuite/g++.old-deja/g++.pt/enum12.C
-2126276433b ./gcc/testsuite/g++.old-deja/g++.pt/enum13.C
-2694702519b ./gcc/testsuite/g++.old-deja/g++.pt/enum14.C
-1703000742b ./gcc/testsuite/g++.old-deja/g++.pt/enum2.C
-1069794596b ./gcc/testsuite/g++.old-deja/g++.pt/enum3.C
-3714179200b ./gcc/testsuite/g++.old-deja/g++.pt/enum4.C
- 559765682b ./gcc/testsuite/g++.old-deja/g++.pt/enum5.C
-3886420157b ./gcc/testsuite/g++.old-deja/g++.pt/enum6.C
-1918437107b ./gcc/testsuite/g++.old-deja/g++.pt/enum7.C
-1945876041b ./gcc/testsuite/g++.old-deja/g++.pt/enum8.C
-3328823063b ./gcc/testsuite/g++.old-deja/g++.pt/enum9.C
-1760960609b ./gcc/testsuite/g++.old-deja/g++.pt/enum.C
- 861304912b ./gcc/testsuite/g++.old-deja/g++.pt/error1.C
-2760448470b ./gcc/testsuite/g++.old-deja/g++.pt/error2.C
-1691206603b ./gcc/testsuite/g++.old-deja/g++.pt/error3.C
- 273875566b ./gcc/testsuite/g++.old-deja/g++.pt/explarg1.C
-3406944984b ./gcc/testsuite/g++.old-deja/g++.pt/explicit10.C
-1528071887b ./gcc/testsuite/g++.old-deja/g++.pt/explicit11.C
-3195577006b ./gcc/testsuite/g++.old-deja/g++.pt/explicit12.C
-1609026860b ./gcc/testsuite/g++.old-deja/g++.pt/explicit13.C
-1478766534b ./gcc/testsuite/g++.old-deja/g++.pt/explicit14.C
- 634945390b ./gcc/testsuite/g++.old-deja/g++.pt/explicit15.C
-2415831941b ./gcc/testsuite/g++.old-deja/g++.pt/explicit16.C
-3929356898b ./gcc/testsuite/g++.old-deja/g++.pt/explicit17.C
-2998496732b ./gcc/testsuite/g++.old-deja/g++.pt/explicit18.C
- 114780192b ./gcc/testsuite/g++.old-deja/g++.pt/explicit19.C
-2454708693b ./gcc/testsuite/g++.old-deja/g++.pt/explicit1.C
- 238030727b ./gcc/testsuite/g++.old-deja/g++.pt/explicit20.C
-2757073081b ./gcc/testsuite/g++.old-deja/g++.pt/explicit21.C
-1964200215b ./gcc/testsuite/g++.old-deja/g++.pt/explicit22.C
-2616456294b ./gcc/testsuite/g++.old-deja/g++.pt/explicit23.C
-4221103889b ./gcc/testsuite/g++.old-deja/g++.pt/explicit24.C
-2544081870b ./gcc/testsuite/g++.old-deja/g++.pt/explicit25.C
- 867916531b ./gcc/testsuite/g++.old-deja/g++.pt/explicit26.C
- 460921353b ./gcc/testsuite/g++.old-deja/g++.pt/explicit27.C
- 854667679b ./gcc/testsuite/g++.old-deja/g++.pt/explicit28.C
-4066092212b ./gcc/testsuite/g++.old-deja/g++.pt/explicit29.C
-3142420592b ./gcc/testsuite/g++.old-deja/g++.pt/explicit2.C
- 470577039b ./gcc/testsuite/g++.old-deja/g++.pt/explicit30.C
-1628118551b ./gcc/testsuite/g++.old-deja/g++.pt/explicit31.C
-2552821833b ./gcc/testsuite/g++.old-deja/g++.pt/explicit32.C
-3115682920b ./gcc/testsuite/g++.old-deja/g++.pt/explicit33.C
-2475621970b ./gcc/testsuite/g++.old-deja/g++.pt/explicit34.C
-3600466241b ./gcc/testsuite/g++.old-deja/g++.pt/explicit35.C
-1709333173b ./gcc/testsuite/g++.old-deja/g++.pt/explicit36.C
-4009959133b ./gcc/testsuite/g++.old-deja/g++.pt/explicit37.C
-3750063865b ./gcc/testsuite/g++.old-deja/g++.pt/explicit38.C
- 921580635b ./gcc/testsuite/g++.old-deja/g++.pt/explicit39.C
-4211740392b ./gcc/testsuite/g++.old-deja/g++.pt/explicit3.C
- 492617767b ./gcc/testsuite/g++.old-deja/g++.pt/explicit40.C
-3845938453b ./gcc/testsuite/g++.old-deja/g++.pt/explicit41.C
-1186034051b ./gcc/testsuite/g++.old-deja/g++.pt/explicit42.C
-3636286206b ./gcc/testsuite/g++.old-deja/g++.pt/explicit43.C
-4095060524b ./gcc/testsuite/g++.old-deja/g++.pt/explicit4.C
- 598873974b ./gcc/testsuite/g++.old-deja/g++.pt/explicit50.C
- 442258121b ./gcc/testsuite/g++.old-deja/g++.pt/explicit51.C
-2381854829b ./gcc/testsuite/g++.old-deja/g++.pt/explicit52.C
- 354479270b ./gcc/testsuite/g++.old-deja/g++.pt/explicit53.C
-4090145222b ./gcc/testsuite/g++.old-deja/g++.pt/explicit54.C
-2150096294b ./gcc/testsuite/g++.old-deja/g++.pt/explicit55.C
- 754785630b ./gcc/testsuite/g++.old-deja/g++.pt/explicit56.C
-2105743169b ./gcc/testsuite/g++.old-deja/g++.pt/explicit57.C
- 138392149b ./gcc/testsuite/g++.old-deja/g++.pt/explicit58.C
-3072912940b ./gcc/testsuite/g++.old-deja/g++.pt/explicit59.C
-2944430939b ./gcc/testsuite/g++.old-deja/g++.pt/explicit5.C
-1115714633b ./gcc/testsuite/g++.old-deja/g++.pt/explicit60.C
-3490613258b ./gcc/testsuite/g++.old-deja/g++.pt/explicit61.C
-2630908446b ./gcc/testsuite/g++.old-deja/g++.pt/explicit62.C
-2423833745b ./gcc/testsuite/g++.old-deja/g++.pt/explicit63.C
- 96263826b ./gcc/testsuite/g++.old-deja/g++.pt/explicit64.C
-4264028437b ./gcc/testsuite/g++.old-deja/g++.pt/explicit65.C
-3986519624b ./gcc/testsuite/g++.old-deja/g++.pt/explicit66.C
-2017968194b ./gcc/testsuite/g++.old-deja/g++.pt/explicit67.C
-2468743553b ./gcc/testsuite/g++.old-deja/g++.pt/explicit68.C
- 232590105b ./gcc/testsuite/g++.old-deja/g++.pt/explicit69.C
-1140210865b ./gcc/testsuite/g++.old-deja/g++.pt/explicit6.C
- 598155740b ./gcc/testsuite/g++.old-deja/g++.pt/explicit70.C
- 734055097b ./gcc/testsuite/g++.old-deja/g++.pt/explicit71.C
-3681260211b ./gcc/testsuite/g++.old-deja/g++.pt/explicit72.C
-2315525758b ./gcc/testsuite/g++.old-deja/g++.pt/explicit73.C
-2355766697b ./gcc/testsuite/g++.old-deja/g++.pt/explicit74.C
-3523359053b ./gcc/testsuite/g++.old-deja/g++.pt/explicit75.C
-1571173014b ./gcc/testsuite/g++.old-deja/g++.pt/explicit76.C
- 2721209b ./gcc/testsuite/g++.old-deja/g++.pt/explicit77.C
-2546202913b ./gcc/testsuite/g++.old-deja/g++.pt/explicit78.C
-2960594790b ./gcc/testsuite/g++.old-deja/g++.pt/explicit79.C
-3985776178b ./gcc/testsuite/g++.old-deja/g++.pt/explicit80.C
-1821121835b ./gcc/testsuite/g++.old-deja/g++.pt/explicit81.C
-3301548077b ./gcc/testsuite/g++.old-deja/g++.pt/explicit82.C
-1885670533b ./gcc/testsuite/g++.old-deja/g++.pt/explicit83.C
-1495453328b ./gcc/testsuite/g++.old-deja/g++.pt/explicit8.C
-3419948260b ./gcc/testsuite/g++.old-deja/g++.pt/explicit9.C
- 662598850b ./gcc/testsuite/g++.old-deja/g++.pt/export1.C
-1515995682b ./gcc/testsuite/g++.old-deja/g++.pt/expr1.C
- 706426504b ./gcc/testsuite/g++.old-deja/g++.pt/expr2.C
- 36056637b ./gcc/testsuite/g++.old-deja/g++.pt/expr3.C
-3844712713b ./gcc/testsuite/g++.old-deja/g++.pt/expr5.C
-1457222697b ./gcc/testsuite/g++.old-deja/g++.pt/expr6.C
-1425159165b ./gcc/testsuite/g++.old-deja/g++.pt/expr7.C
- 161410515b ./gcc/testsuite/g++.old-deja/g++.pt/expr8.C
-1422905843b ./gcc/testsuite/g++.old-deja/g++.pt/extern1.C
-1069100821b ./gcc/testsuite/g++.old-deja/g++.pt/fntry1.C
-1287620498b ./gcc/testsuite/g++.old-deja/g++.pt/friend10.C
-1165640191b ./gcc/testsuite/g++.old-deja/g++.pt/friend11.C
-3100262252b ./gcc/testsuite/g++.old-deja/g++.pt/friend12.C
- 882221231b ./gcc/testsuite/g++.old-deja/g++.pt/friend13.C
-3966448375b ./gcc/testsuite/g++.old-deja/g++.pt/friend14.C
-1962167149b ./gcc/testsuite/g++.old-deja/g++.pt/friend15.C
- 869822534b ./gcc/testsuite/g++.old-deja/g++.pt/friend16.C
-4066339061b ./gcc/testsuite/g++.old-deja/g++.pt/friend17.C
-3286295955b ./gcc/testsuite/g++.old-deja/g++.pt/friend18.C
-4017972632b ./gcc/testsuite/g++.old-deja/g++.pt/friend1.C
-2120784153b ./gcc/testsuite/g++.old-deja/g++.pt/friend20.C
- 717575958b ./gcc/testsuite/g++.old-deja/g++.pt/friend21.C
- 416829101b ./gcc/testsuite/g++.old-deja/g++.pt/friend22.C
-4030871100b ./gcc/testsuite/g++.old-deja/g++.pt/friend23.C
-1465973595b ./gcc/testsuite/g++.old-deja/g++.pt/friend24.C
- 150282741b ./gcc/testsuite/g++.old-deja/g++.pt/friend25.C
- 680173221b ./gcc/testsuite/g++.old-deja/g++.pt/friend26.C
-3274309194b ./gcc/testsuite/g++.old-deja/g++.pt/friend27.C
-1284470831b ./gcc/testsuite/g++.old-deja/g++.pt/friend28.C
-3161078590b ./gcc/testsuite/g++.old-deja/g++.pt/friend29.C
-3765298518b ./gcc/testsuite/g++.old-deja/g++.pt/friend30.C
-2264286486b ./gcc/testsuite/g++.old-deja/g++.pt/friend31.C
-2346260162b ./gcc/testsuite/g++.old-deja/g++.pt/friend32.C
-3241993055b ./gcc/testsuite/g++.old-deja/g++.pt/friend33.C
- 981288052b ./gcc/testsuite/g++.old-deja/g++.pt/friend34.C
- 187381459b ./gcc/testsuite/g++.old-deja/g++.pt/friend35.C
-2755639815b ./gcc/testsuite/g++.old-deja/g++.pt/friend36.C
-3754374175b ./gcc/testsuite/g++.old-deja/g++.pt/friend37.C
-3281471741b ./gcc/testsuite/g++.old-deja/g++.pt/friend38.C
- 317013285b ./gcc/testsuite/g++.old-deja/g++.pt/friend39.C
-2144037049b ./gcc/testsuite/g++.old-deja/g++.pt/friend3.C
- 182204021b ./gcc/testsuite/g++.old-deja/g++.pt/friend40.C
- 345702925b ./gcc/testsuite/g++.old-deja/g++.pt/friend41.C
-2157387021b ./gcc/testsuite/g++.old-deja/g++.pt/friend42.C
-3945320523b ./gcc/testsuite/g++.old-deja/g++.pt/friend43.C
- 498165617b ./gcc/testsuite/g++.old-deja/g++.pt/friend44.C
-3282109340b ./gcc/testsuite/g++.old-deja/g++.pt/friend45.C
-1046954842b ./gcc/testsuite/g++.old-deja/g++.pt/friend46.C
-4284536748b ./gcc/testsuite/g++.old-deja/g++.pt/friend47.C
-1943593208b ./gcc/testsuite/g++.old-deja/g++.pt/friend48.C
-2460768791b ./gcc/testsuite/g++.old-deja/g++.pt/friend49.C
-1839433882b ./gcc/testsuite/g++.old-deja/g++.pt/friend4.C
- 704986118b ./gcc/testsuite/g++.old-deja/g++.pt/friend5.C
-1522663160b ./gcc/testsuite/g++.old-deja/g++.pt/friend6.C
-1156856345b ./gcc/testsuite/g++.old-deja/g++.pt/friend7.C
- 20638590b ./gcc/testsuite/g++.old-deja/g++.pt/friend8.C
-3274600020b ./gcc/testsuite/g++.old-deja/g++.pt/friend9.C
-2373771284b ./gcc/testsuite/g++.old-deja/g++.pt/goto2.C
-3949127698b ./gcc/testsuite/g++.old-deja/g++.pt/goto.C
-1470520127b ./gcc/testsuite/g++.old-deja/g++.pt/incomplete1.C
-2675563938b ./gcc/testsuite/g++.old-deja/g++.pt/infinite1.C
-2141463905b ./gcc/testsuite/g++.old-deja/g++.pt/inherit1.C
-3554938548b ./gcc/testsuite/g++.old-deja/g++.pt/inherit2.C
- 393856408b ./gcc/testsuite/g++.old-deja/g++.pt/inject1.C
-1666451974b ./gcc/testsuite/g++.old-deja/g++.pt/inject2.C
- 775587620b ./gcc/testsuite/g++.old-deja/g++.pt/inline1.C
-4143100873b ./gcc/testsuite/g++.old-deja/g++.pt/inline2.C
- 567219073b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate10.C
- 658392970b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate11.C
- 934055119b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate12.C
-3666215677b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate13.C
-2167918209b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate1.C
-2568581654b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate2.C
-3989382998b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate3.C
-3598960158b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate4.C
-1010945845b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate5.C
-2967623396b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate5.cc
-1230172281b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate5-main.cc
-4042450939b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate6.C
-2137469555b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate7.C
-2823240025b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate8.C
- 117766506b ./gcc/testsuite/g++.old-deja/g++.pt/instantiate9.C
- 5436695b ./gcc/testsuite/g++.old-deja/g++.pt/koenig1.C
-1578795652b ./gcc/testsuite/g++.old-deja/g++.pt/label1.C
-1296029425b ./gcc/testsuite/g++.old-deja/g++.pt/link1.C
-1686018921b ./gcc/testsuite/g++.old-deja/g++.pt/local1.C
-2821591107b ./gcc/testsuite/g++.old-deja/g++.pt/local2.C
-1599230460b ./gcc/testsuite/g++.old-deja/g++.pt/local3.C
-1561776108b ./gcc/testsuite/g++.old-deja/g++.pt/local4.C
-2354833145b ./gcc/testsuite/g++.old-deja/g++.pt/local5.C
-3330482290b ./gcc/testsuite/g++.old-deja/g++.pt/local6.C
-3591262298b ./gcc/testsuite/g++.old-deja/g++.pt/local7.C
-1618400382b ./gcc/testsuite/g++.old-deja/g++.pt/lookup10.C
-2198910890b ./gcc/testsuite/g++.old-deja/g++.pt/lookup1.C
-2928431480b ./gcc/testsuite/g++.old-deja/g++.pt/lookup2.C
-2326742548b ./gcc/testsuite/g++.old-deja/g++.pt/lookup3.C
- 58581562b ./gcc/testsuite/g++.old-deja/g++.pt/lookup4.C
- 387721159b ./gcc/testsuite/g++.old-deja/g++.pt/lookup5.C
- 563271996b ./gcc/testsuite/g++.old-deja/g++.pt/lookup6.C
- 592865389b ./gcc/testsuite/g++.old-deja/g++.pt/lookup7.C
-1893966844b ./gcc/testsuite/g++.old-deja/g++.pt/lookup8.C
- 615227368b ./gcc/testsuite/g++.old-deja/g++.pt/lookup9.C
-1535122111b ./gcc/testsuite/g++.old-deja/g++.pt/m1.C
-2943051241b ./gcc/testsuite/g++.old-deja/g++.pt/m2.C
-1702473953b ./gcc/testsuite/g++.old-deja/g++.pt/m3.C
-3549235723b ./gcc/testsuite/g++.old-deja/g++.pt/m4.C
-2705233403b ./gcc/testsuite/g++.old-deja/g++.pt/m5.C
-2792466666b ./gcc/testsuite/g++.old-deja/g++.pt/m6.C
-2010181237b ./gcc/testsuite/g++.old-deja/g++.pt/m7.C
- 181270594b ./gcc/testsuite/g++.old-deja/g++.pt/m8.C
- 454140677b ./gcc/testsuite/g++.old-deja/g++.pt/m9a.C
- 860513545b ./gcc/testsuite/g++.old-deja/g++.pt/m9.C
-4199939364b ./gcc/testsuite/g++.old-deja/g++.pt/mangle1.C
- 735244068b ./gcc/testsuite/g++.old-deja/g++.pt/mangle2.C
-3280522955b ./gcc/testsuite/g++.old-deja/g++.pt/memclass10.C
-3429032104b ./gcc/testsuite/g++.old-deja/g++.pt/memclass11.C
-2793864882b ./gcc/testsuite/g++.old-deja/g++.pt/memclass12.C
-3266247624b ./gcc/testsuite/g++.old-deja/g++.pt/memclass13.C
-2006537494b ./gcc/testsuite/g++.old-deja/g++.pt/memclass14.C
-1920450770b ./gcc/testsuite/g++.old-deja/g++.pt/memclass15.C
-2290855130b ./gcc/testsuite/g++.old-deja/g++.pt/memclass16.C
-1861858814b ./gcc/testsuite/g++.old-deja/g++.pt/memclass17.C
-2612688561b ./gcc/testsuite/g++.old-deja/g++.pt/memclass18.C
-2502022996b ./gcc/testsuite/g++.old-deja/g++.pt/memclass19.C
-2993433239b ./gcc/testsuite/g++.old-deja/g++.pt/memclass1.C
- 93385345b ./gcc/testsuite/g++.old-deja/g++.pt/memclass20.C
-3252022289b ./gcc/testsuite/g++.old-deja/g++.pt/memclass21.C
-2537802637b ./gcc/testsuite/g++.old-deja/g++.pt/memclass2.C
-1014036937b ./gcc/testsuite/g++.old-deja/g++.pt/memclass3.C
-1431379137b ./gcc/testsuite/g++.old-deja/g++.pt/memclass4.C
-1075497415b ./gcc/testsuite/g++.old-deja/g++.pt/memclass5.C
- 780898681b ./gcc/testsuite/g++.old-deja/g++.pt/memclass6.C
-2127284390b ./gcc/testsuite/g++.old-deja/g++.pt/memclass7.C
-1195266757b ./gcc/testsuite/g++.old-deja/g++.pt/memclass8.C
-1810826153b ./gcc/testsuite/g++.old-deja/g++.pt/memclass9.C
-4058618179b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
-2904180820b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp10.C
-2282254491b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp11.C
-1976328805b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp12.C
-1239088058b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp13.C
-2818816059b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp14.C
-1824536999b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp15.C
-3076640023b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp16.C
-1544280209b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp17.C
-2050660023b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp18.C
-2678511608b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp19.C
-1224975036b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp1.C
-1334964388b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp20.C
- 459239676b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C
-2533288060b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C
-2238876159b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C
-2468624091b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C
-2533288060b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp27.C
-1005751857b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp28.C
- 199305334b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp29.C
-1871764459b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp2.C
-1670170059b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp30.C
-2289485955b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp31.C
- 27098458b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp32.C
-1498388116b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp33.C
-3522955638b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp34.C
-1393717263b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp35.C
-2010910590b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp36.C
- 458681200b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp37.C
- 20442451b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp39.C
-1631129726b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp3.C
-3100522038b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp40.C
- 938647569b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp41.C
-1217004521b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp42.C
-4167810576b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp43.C
-2506084508b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp44.C
-3506472111b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp45.C
- 86095672b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp46.C
- 87150136b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp47.C
-2797911396b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp48.C
-3001846639b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp49.C
-1762838619b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp4.C
- 899239607b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp52.C
-1512186785b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp53.C
- 734020637b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp55.C
-1075898943b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp56.C
-1044391503b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp58.C
-2900869252b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp59.C
-1033026004b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp5.C
-1257470032b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp60.C
- 761783865b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp61.C
-1690671324b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp62.C
-3766969739b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp63.C
-3356487504b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp64.C
-2737484332b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp65.C
- 733179226b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp66.C
-1942260890b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp67.C
-3915762673b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp68.C
-3344118567b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp69.C
-3026038856b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp6.C
-2509660495b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp70.C
- 104374337b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp71.C
-1613408023b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp72.C
-2074863692b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp73.C
-1429396687b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp74.C
-4003812396b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp75.C
-3689181845b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp76.C
-1218672257b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp77.C
-3371462880b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp78.C
-4186537912b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp79.C
-1316217894b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp7.C
-4184361784b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp80.C
-2741487455b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp81.C
- 669240911b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp82.C
-1536069827b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp83.C
-2073825342b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp84.C
-2859456911b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp85.C
- 159076361b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp86.C
- 782720859b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp87.C
-3073633390b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp88.C
-3067920578b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp89.C
-2098916421b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp8.C
- 329208420b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp90.C
- 357390701b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp91.C
- 440251046b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp92.C
-1071465145b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp93.C
- 81542039b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp94.C
-3580334873b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp95.C
-4071744070b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp96.C
- 876225447b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp97.C
-3251366836b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp98.C
- 588126708b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp99.C
-1544636937b ./gcc/testsuite/g++.old-deja/g++.pt/memtemp9.C
-4151922476b ./gcc/testsuite/g++.old-deja/g++.pt/mi1.C
-3159596706b ./gcc/testsuite/g++.old-deja/g++.pt/nested1.C
- 752451121b ./gcc/testsuite/g++.old-deja/g++.pt/nested2.C
-3261242986b ./gcc/testsuite/g++.old-deja/g++.pt/niklas01a.C
-3338878252b ./gcc/testsuite/g++.old-deja/g++.pt/niklas01b.C
- 206427704b ./gcc/testsuite/g++.old-deja/g++.pt/niklas01.C
-3121397720b ./gcc/testsuite/g++.old-deja/g++.pt/niklas02.C
- 18744569b ./gcc/testsuite/g++.old-deja/g++.pt/niklas03.C
-4224711202b ./gcc/testsuite/g++.old-deja/g++.pt/nontype1.C
-2346801762b ./gcc/testsuite/g++.old-deja/g++.pt/nontype2.C
-2564631917b ./gcc/testsuite/g++.old-deja/g++.pt/nontype3.C
-4032766447b ./gcc/testsuite/g++.old-deja/g++.pt/nontype4.C
-1767300701b ./gcc/testsuite/g++.old-deja/g++.pt/nontype5.C
-2791152240b ./gcc/testsuite/g++.old-deja/g++.pt/nttp1.C
- 247002708b ./gcc/testsuite/g++.old-deja/g++.pt/nttp2.C
-1278541513b ./gcc/testsuite/g++.old-deja/g++.pt/operator1.C
- 700666863b ./gcc/testsuite/g++.old-deja/g++.pt/overload10.C
- 106266692b ./gcc/testsuite/g++.old-deja/g++.pt/overload11.C
-2233076058b ./gcc/testsuite/g++.old-deja/g++.pt/overload12.C
- 567369625b ./gcc/testsuite/g++.old-deja/g++.pt/overload13.C
- 43242814b ./gcc/testsuite/g++.old-deja/g++.pt/overload14.C
- 775259676b ./gcc/testsuite/g++.old-deja/g++.pt/overload15.C
-2435336654b ./gcc/testsuite/g++.old-deja/g++.pt/overload1.C
-1331381682b ./gcc/testsuite/g++.old-deja/g++.pt/overload2.C
-2609432689b ./gcc/testsuite/g++.old-deja/g++.pt/overload3.C
- 685890975b ./gcc/testsuite/g++.old-deja/g++.pt/overload4.C
-3432676392b ./gcc/testsuite/g++.old-deja/g++.pt/overload5.C
- 484989603b ./gcc/testsuite/g++.old-deja/g++.pt/overload6.C
- 68571783b ./gcc/testsuite/g++.old-deja/g++.pt/overload7.C
- 394549939b ./gcc/testsuite/g++.old-deja/g++.pt/overload8.C
-3983313304b ./gcc/testsuite/g++.old-deja/g++.pt/overload9.C
-4178337882b ./gcc/testsuite/g++.old-deja/g++.pt/parms1.C
-2241839525b ./gcc/testsuite/g++.old-deja/g++.pt/parms2.C
-3349553882b ./gcc/testsuite/g++.old-deja/g++.pt/parms3.C
-4079323944b ./gcc/testsuite/g++.old-deja/g++.pt/parse2.C
-4264977580b ./gcc/testsuite/g++.old-deja/g++.pt/partial1.C
- 177073069b ./gcc/testsuite/g++.old-deja/g++.pt/partial2.C
- 97690336b ./gcc/testsuite/g++.old-deja/g++.pt/partial3.C
-1029425030b ./gcc/testsuite/g++.old-deja/g++.pt/partial4.C
-4209924429b ./gcc/testsuite/g++.old-deja/g++.pt/partial5.C
-4183203582b ./gcc/testsuite/g++.old-deja/g++.pt/poi1.C
-1609222984b ./gcc/testsuite/g++.old-deja/g++.pt/pointer1.C
-2621744921b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem10.C
- 667276243b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem1.C
-1628163413b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem2.C
-3615617559b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem3.C
- 886281225b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem4.C
- 716987062b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem5.C
- 929278172b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem6.C
-3758586102b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem7.C
-2054039204b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem8.C
-3543585318b ./gcc/testsuite/g++.old-deja/g++.pt/ptrmem9.C
-2282560315b ./gcc/testsuite/g++.old-deja/g++.pt/recursion2.C
-1176769163b ./gcc/testsuite/g++.old-deja/g++.pt/recursion.C
-2783268127b ./gcc/testsuite/g++.old-deja/g++.pt/redecl1.C
- 273604436b ./gcc/testsuite/g++.old-deja/g++.pt/redecl2.C
- 594557972b ./gcc/testsuite/g++.old-deja/g++.pt/ref1.C
-1583044362b ./gcc/testsuite/g++.old-deja/g++.pt/ref2.C
- 483138928b ./gcc/testsuite/g++.old-deja/g++.pt/ref3.C
-2911957174b ./gcc/testsuite/g++.old-deja/g++.pt/ref4.C
-2200057845b ./gcc/testsuite/g++.old-deja/g++.pt/repo1.C
-3164700330b ./gcc/testsuite/g++.old-deja/g++.pt/repo2.C
-2290650834b ./gcc/testsuite/g++.old-deja/g++.pt/repo3.C
-1650768861b ./gcc/testsuite/g++.old-deja/g++.pt/repo4.C
- 842128020b ./gcc/testsuite/g++.old-deja/g++.pt/scope1.C
- 696905520b ./gcc/testsuite/g++.old-deja/g++.pt/shadow1.C
-3988722815b ./gcc/testsuite/g++.old-deja/g++.pt/shadow2.C
-3116942821b ./gcc/testsuite/g++.old-deja/g++.pt/sizeof2.C
-2876524265b ./gcc/testsuite/g++.old-deja/g++.pt/sizeof3.C
-4082900584b ./gcc/testsuite/g++.old-deja/g++.pt/sizeof.C
- 93654703b ./gcc/testsuite/g++.old-deja/g++.pt/spec10.C
-3527506444b ./gcc/testsuite/g++.old-deja/g++.pt/spec11.C
-3538641668b ./gcc/testsuite/g++.old-deja/g++.pt/spec12.C
-2966126822b ./gcc/testsuite/g++.old-deja/g++.pt/spec13.C
- 362548758b ./gcc/testsuite/g++.old-deja/g++.pt/spec14.C
- 395453400b ./gcc/testsuite/g++.old-deja/g++.pt/spec15.C
- 299326321b ./gcc/testsuite/g++.old-deja/g++.pt/spec16.C
- 411261988b ./gcc/testsuite/g++.old-deja/g++.pt/spec17.C
-4048825100b ./gcc/testsuite/g++.old-deja/g++.pt/spec18.C
-3497658316b ./gcc/testsuite/g++.old-deja/g++.pt/spec19.C
- 991382684b ./gcc/testsuite/g++.old-deja/g++.pt/spec1.C
-2791297069b ./gcc/testsuite/g++.old-deja/g++.pt/spec20.C
-3113620134b ./gcc/testsuite/g++.old-deja/g++.pt/spec21.C
-2983405950b ./gcc/testsuite/g++.old-deja/g++.pt/spec22.C
-1730105837b ./gcc/testsuite/g++.old-deja/g++.pt/spec23.C
-2952337617b ./gcc/testsuite/g++.old-deja/g++.pt/spec24.C
- 843333207b ./gcc/testsuite/g++.old-deja/g++.pt/spec25.C
-2342185227b ./gcc/testsuite/g++.old-deja/g++.pt/spec26.C
- 163389509b ./gcc/testsuite/g++.old-deja/g++.pt/spec27.C
-1709855616b ./gcc/testsuite/g++.old-deja/g++.pt/spec28.C
- 288771490b ./gcc/testsuite/g++.old-deja/g++.pt/spec29.C
-3880560938b ./gcc/testsuite/g++.old-deja/g++.pt/spec2.C
-3450541938b ./gcc/testsuite/g++.old-deja/g++.pt/spec30.C
-3771549807b ./gcc/testsuite/g++.old-deja/g++.pt/spec31.C
- 811045881b ./gcc/testsuite/g++.old-deja/g++.pt/spec32.C
- 754213781b ./gcc/testsuite/g++.old-deja/g++.pt/spec33.C
-3893454953b ./gcc/testsuite/g++.old-deja/g++.pt/spec34.C
- 157308695b ./gcc/testsuite/g++.old-deja/g++.pt/spec35.C
- 7630099b ./gcc/testsuite/g++.old-deja/g++.pt/spec36.C
-2893602715b ./gcc/testsuite/g++.old-deja/g++.pt/spec37.C
-1089795364b ./gcc/testsuite/g++.old-deja/g++.pt/spec38.C
-3573286877b ./gcc/testsuite/g++.old-deja/g++.pt/spec39.C
-2986435997b ./gcc/testsuite/g++.old-deja/g++.pt/spec3.C
- 263033306b ./gcc/testsuite/g++.old-deja/g++.pt/spec40.C
-4257539281b ./gcc/testsuite/g++.old-deja/g++.pt/spec41.C
-1203682774b ./gcc/testsuite/g++.old-deja/g++.pt/spec4.C
- 472020156b ./gcc/testsuite/g++.old-deja/g++.pt/spec5.C
-2997305150b ./gcc/testsuite/g++.old-deja/g++.pt/spec6.C
-4161522669b ./gcc/testsuite/g++.old-deja/g++.pt/spec7.C
-2956825769b ./gcc/testsuite/g++.old-deja/g++.pt/spec8.C
- 689217773b ./gcc/testsuite/g++.old-deja/g++.pt/spec9.C
-3499532117b ./gcc/testsuite/g++.old-deja/g++.pt/static10.C
-3672678643b ./gcc/testsuite/g++.old-deja/g++.pt/static11.C
-2178379561b ./gcc/testsuite/g++.old-deja/g++.pt/static1.C
-3095826275b ./gcc/testsuite/g++.old-deja/g++.pt/static2.C
-3043759182b ./gcc/testsuite/g++.old-deja/g++.pt/static3.C
-4121342217b ./gcc/testsuite/g++.old-deja/g++.pt/static4.C
- 637809399b ./gcc/testsuite/g++.old-deja/g++.pt/static5.C
-3443961587b ./gcc/testsuite/g++.old-deja/g++.pt/static6.C
-1808791646b ./gcc/testsuite/g++.old-deja/g++.pt/static7.C
-3987560353b ./gcc/testsuite/g++.old-deja/g++.pt/static8.C
-1860907942b ./gcc/testsuite/g++.old-deja/g++.pt/static9.C
-1680154606b ./gcc/testsuite/g++.old-deja/g++.pt/static_cast.C
-3432829463b ./gcc/testsuite/g++.old-deja/g++.pt/stmtexpr2.C
-2053761696b ./gcc/testsuite/g++.old-deja/g++.pt/stmtexpr.C
-2038345660b ./gcc/testsuite/g++.old-deja/g++.pt/switch1.C
-1321551276b ./gcc/testsuite/g++.old-deja/g++.pt/syntax1.C
- 769950811b ./gcc/testsuite/g++.old-deja/g++.pt/syntax2.C
- 388665305b ./gcc/testsuite/g++.old-deja/g++.pt/t00.C
-3036776145b ./gcc/testsuite/g++.old-deja/g++.pt/t01.C
-3769756941b ./gcc/testsuite/g++.old-deja/g++.pt/t03.C
- 68198193b ./gcc/testsuite/g++.old-deja/g++.pt/t04.C
-1347039071b ./gcc/testsuite/g++.old-deja/g++.pt/t05.C
-1025268501b ./gcc/testsuite/g++.old-deja/g++.pt/t06.C
-3864403887b ./gcc/testsuite/g++.old-deja/g++.pt/t07.C
-1220980648b ./gcc/testsuite/g++.old-deja/g++.pt/t08.C
- 54752251b ./gcc/testsuite/g++.old-deja/g++.pt/t09.C
-3939433080b ./gcc/testsuite/g++.old-deja/g++.pt/t10.C
-1989751964b ./gcc/testsuite/g++.old-deja/g++.pt/t11a.C
-3632072790b ./gcc/testsuite/g++.old-deja/g++.pt/t11.C
-2049763895b ./gcc/testsuite/g++.old-deja/g++.pt/t12a.C
-2249141950b ./gcc/testsuite/g++.old-deja/g++.pt/t12.C
-1228232084b ./gcc/testsuite/g++.old-deja/g++.pt/t13.C
-2705379238b ./gcc/testsuite/g++.old-deja/g++.pt/t14a.C
-2100897741b ./gcc/testsuite/g++.old-deja/g++.pt/t14.C
-1989199194b ./gcc/testsuite/g++.old-deja/g++.pt/t16.C
-3606509706b ./gcc/testsuite/g++.old-deja/g++.pt/t18.C
- 141625773b ./gcc/testsuite/g++.old-deja/g++.pt/t20.C
- 72255906b ./gcc/testsuite/g++.old-deja/g++.pt/t21.C
- 645040509b ./gcc/testsuite/g++.old-deja/g++.pt/t22.C
- 703955297b ./gcc/testsuite/g++.old-deja/g++.pt/t23.C
-3664873650b ./gcc/testsuite/g++.old-deja/g++.pt/t24.C
-3167743377b ./gcc/testsuite/g++.old-deja/g++.pt/t25.C
-2171757696b ./gcc/testsuite/g++.old-deja/g++.pt/t26.C
-1551035452b ./gcc/testsuite/g++.old-deja/g++.pt/t27.C
-4184306234b ./gcc/testsuite/g++.old-deja/g++.pt/t28.C
-1147556452b ./gcc/testsuite/g++.old-deja/g++.pt/t29.C
-3402602239b ./gcc/testsuite/g++.old-deja/g++.pt/t30.C
-1087482084b ./gcc/testsuite/g++.old-deja/g++.pt/t31.C
-1551618603b ./gcc/testsuite/g++.old-deja/g++.pt/t32a.C
-2623408289b ./gcc/testsuite/g++.old-deja/g++.pt/t32.C
- 163082280b ./gcc/testsuite/g++.old-deja/g++.pt/t34a.C
-4017416236b ./gcc/testsuite/g++.old-deja/g++.pt/t34.C
-3947322975b ./gcc/testsuite/g++.old-deja/g++.pt/t35a.C
-2585097382b ./gcc/testsuite/g++.old-deja/g++.pt/t35.C
-1516584548b ./gcc/testsuite/g++.old-deja/g++.pt/t36.C
- 420324441b ./gcc/testsuite/g++.old-deja/g++.pt/t37a.C
-1426987064b ./gcc/testsuite/g++.old-deja/g++.pt/t37.C
-2340198171b ./gcc/testsuite/g++.old-deja/g++.pt/t38.C
-3309470860b ./gcc/testsuite/g++.old-deja/g++.pt/t39.C
-1718444525b ./gcc/testsuite/g++.old-deja/g++.pt/t40.C
-3342686909b ./gcc/testsuite/g++.old-deja/g++.pt/t41.C
-3446795170b ./gcc/testsuite/g++.old-deja/g++.pt/t42.C
-2113862178b ./gcc/testsuite/g++.old-deja/g++.pt/test4.C
-2123290709b ./gcc/testsuite/g++.old-deja/g++.pt/test5.C
-1121503772b ./gcc/testsuite/g++.old-deja/g++.pt/tiemann1r.C
- 129425925b ./gcc/testsuite/g++.old-deja/g++.pt/tiemann2.C
-1767149933b ./gcc/testsuite/g++.old-deja/g++.pt/to2.C
- 611975575b ./gcc/testsuite/g++.old-deja/g++.pt/tt2.C
-1910189955b ./gcc/testsuite/g++.old-deja/g++.pt/tt.C
-2900382617b ./gcc/testsuite/g++.old-deja/g++.pt/ttp10.C
- 526371793b ./gcc/testsuite/g++.old-deja/g++.pt/ttp11.C
- 862146403b ./gcc/testsuite/g++.old-deja/g++.pt/ttp12.C
-1329933982b ./gcc/testsuite/g++.old-deja/g++.pt/ttp13.C
-3988780551b ./gcc/testsuite/g++.old-deja/g++.pt/ttp14.C
-3077999991b ./gcc/testsuite/g++.old-deja/g++.pt/ttp15.C
-2942251159b ./gcc/testsuite/g++.old-deja/g++.pt/ttp16.C
-2374108737b ./gcc/testsuite/g++.old-deja/g++.pt/ttp17.C
-2213336936b ./gcc/testsuite/g++.old-deja/g++.pt/ttp18.C
-1575203598b ./gcc/testsuite/g++.old-deja/g++.pt/ttp19.C
-2278374754b ./gcc/testsuite/g++.old-deja/g++.pt/ttp1.C
-1859285874b ./gcc/testsuite/g++.old-deja/g++.pt/ttp20.C
-1147993431b ./gcc/testsuite/g++.old-deja/g++.pt/ttp21.C
-1298886248b ./gcc/testsuite/g++.old-deja/g++.pt/ttp22.C
-2010705114b ./gcc/testsuite/g++.old-deja/g++.pt/ttp23.C
-3231810310b ./gcc/testsuite/g++.old-deja/g++.pt/ttp24.C
-2793275371b ./gcc/testsuite/g++.old-deja/g++.pt/ttp25.C
- 890756385b ./gcc/testsuite/g++.old-deja/g++.pt/ttp26.C
-4244916136b ./gcc/testsuite/g++.old-deja/g++.pt/ttp27.C
-3429685547b ./gcc/testsuite/g++.old-deja/g++.pt/ttp28.C
-3829242227b ./gcc/testsuite/g++.old-deja/g++.pt/ttp29.C
- 3553743b ./gcc/testsuite/g++.old-deja/g++.pt/ttp2.C
-2855054105b ./gcc/testsuite/g++.old-deja/g++.pt/ttp30.C
-4010195516b ./gcc/testsuite/g++.old-deja/g++.pt/ttp31.C
-3654116178b ./gcc/testsuite/g++.old-deja/g++.pt/ttp32.C
-2881195148b ./gcc/testsuite/g++.old-deja/g++.pt/ttp33.C
-3462726862b ./gcc/testsuite/g++.old-deja/g++.pt/ttp34.C
-3694220305b ./gcc/testsuite/g++.old-deja/g++.pt/ttp35.C
-1152799669b ./gcc/testsuite/g++.old-deja/g++.pt/ttp36.C
- 361840570b ./gcc/testsuite/g++.old-deja/g++.pt/ttp37.C
- 570115104b ./gcc/testsuite/g++.old-deja/g++.pt/ttp38.C
-2884076986b ./gcc/testsuite/g++.old-deja/g++.pt/ttp39.C
-2339659475b ./gcc/testsuite/g++.old-deja/g++.pt/ttp3.C
-3777404240b ./gcc/testsuite/g++.old-deja/g++.pt/ttp40.C
-1654832327b ./gcc/testsuite/g++.old-deja/g++.pt/ttp41.C
-1252557260b ./gcc/testsuite/g++.old-deja/g++.pt/ttp42.C
-2312035147b ./gcc/testsuite/g++.old-deja/g++.pt/ttp43.C
-2038494248b ./gcc/testsuite/g++.old-deja/g++.pt/ttp44.C
-4254070189b ./gcc/testsuite/g++.old-deja/g++.pt/ttp45.C
-4048264509b ./gcc/testsuite/g++.old-deja/g++.pt/ttp46.C
-1411925217b ./gcc/testsuite/g++.old-deja/g++.pt/ttp47.C
-3294346857b ./gcc/testsuite/g++.old-deja/g++.pt/ttp48.C
- 246280481b ./gcc/testsuite/g++.old-deja/g++.pt/ttp49.C
- 883851040b ./gcc/testsuite/g++.old-deja/g++.pt/ttp4.C
- 148311367b ./gcc/testsuite/g++.old-deja/g++.pt/ttp50.C
-1355737114b ./gcc/testsuite/g++.old-deja/g++.pt/ttp51.C
- 742860133b ./gcc/testsuite/g++.old-deja/g++.pt/ttp52.C
-4014956592b ./gcc/testsuite/g++.old-deja/g++.pt/ttp53.C
- 950933665b ./gcc/testsuite/g++.old-deja/g++.pt/ttp54.C
- 969371039b ./gcc/testsuite/g++.old-deja/g++.pt/ttp55.C
-1933937224b ./gcc/testsuite/g++.old-deja/g++.pt/ttp56.C
- 781548580b ./gcc/testsuite/g++.old-deja/g++.pt/ttp57.C
-3542091704b ./gcc/testsuite/g++.old-deja/g++.pt/ttp58.C
-1970694533b ./gcc/testsuite/g++.old-deja/g++.pt/ttp59.C
- 744920614b ./gcc/testsuite/g++.old-deja/g++.pt/ttp5.C
-1001403023b ./gcc/testsuite/g++.old-deja/g++.pt/ttp60.C
-3275558727b ./gcc/testsuite/g++.old-deja/g++.pt/ttp61.C
-1915032158b ./gcc/testsuite/g++.old-deja/g++.pt/ttp62.C
-3261657532b ./gcc/testsuite/g++.old-deja/g++.pt/ttp63.C
-1109524802b ./gcc/testsuite/g++.old-deja/g++.pt/ttp64.C
- 334468093b ./gcc/testsuite/g++.old-deja/g++.pt/ttp65.C
-1041079584b ./gcc/testsuite/g++.old-deja/g++.pt/ttp6.C
-2962993334b ./gcc/testsuite/g++.old-deja/g++.pt/ttp7.C
-1961268006b ./gcc/testsuite/g++.old-deja/g++.pt/ttp8.C
-3708749815b ./gcc/testsuite/g++.old-deja/g++.pt/ttp9.C
- 752890984b ./gcc/testsuite/g++.old-deja/g++.pt/typedef1.C
-2645715863b ./gcc/testsuite/g++.old-deja/g++.pt/typedef2.C
-1128115184b ./gcc/testsuite/g++.old-deja/g++.pt/typedef3.C
- 687887055b ./gcc/testsuite/g++.old-deja/g++.pt/typedef4.C
-3197185389b ./gcc/testsuite/g++.old-deja/g++.pt/typename10.C
- 11764674b ./gcc/testsuite/g++.old-deja/g++.pt/typename11.C
- 275086081b ./gcc/testsuite/g++.old-deja/g++.pt/typename12.C
-2524443126b ./gcc/testsuite/g++.old-deja/g++.pt/typename13.C
-1552645689b ./gcc/testsuite/g++.old-deja/g++.pt/typename14.C
-1039841774b ./gcc/testsuite/g++.old-deja/g++.pt/typename15.C
-2603845994b ./gcc/testsuite/g++.old-deja/g++.pt/typename16.C
-4165656026b ./gcc/testsuite/g++.old-deja/g++.pt/typename17.C
-2199791863b ./gcc/testsuite/g++.old-deja/g++.pt/typename18.C
-1657062514b ./gcc/testsuite/g++.old-deja/g++.pt/typename19.C
- 155924010b ./gcc/testsuite/g++.old-deja/g++.pt/typename1.C
-3251695233b ./gcc/testsuite/g++.old-deja/g++.pt/typename20.C
-4031896858b ./gcc/testsuite/g++.old-deja/g++.pt/typename21.C
-3346623174b ./gcc/testsuite/g++.old-deja/g++.pt/typename22.C
-1320658391b ./gcc/testsuite/g++.old-deja/g++.pt/typename23.C
-3911736485b ./gcc/testsuite/g++.old-deja/g++.pt/typename24.C
-2304897216b ./gcc/testsuite/g++.old-deja/g++.pt/typename25.C
-2707583962b ./gcc/testsuite/g++.old-deja/g++.pt/typename26.C
-1423713632b ./gcc/testsuite/g++.old-deja/g++.pt/typename27.C
-1479397024b ./gcc/testsuite/g++.old-deja/g++.pt/typename28.C
-1202424634b ./gcc/testsuite/g++.old-deja/g++.pt/typename2.C
- 671867998b ./gcc/testsuite/g++.old-deja/g++.pt/typename3.C
- 516047961b ./gcc/testsuite/g++.old-deja/g++.pt/typename4.C
-3990219214b ./gcc/testsuite/g++.old-deja/g++.pt/typename5.C
-1190749888b ./gcc/testsuite/g++.old-deja/g++.pt/typename6.C
-1106680146b ./gcc/testsuite/g++.old-deja/g++.pt/typename7.C
- 539346100b ./gcc/testsuite/g++.old-deja/g++.pt/typename8.C
-1531696057b ./gcc/testsuite/g++.old-deja/g++.pt/typename9.C
-2013928518b ./gcc/testsuite/g++.old-deja/g++.pt/unify1.C
- 291895099b ./gcc/testsuite/g++.old-deja/g++.pt/unify2.C
-4168274893b ./gcc/testsuite/g++.old-deja/g++.pt/unify3.C
- 616339966b ./gcc/testsuite/g++.old-deja/g++.pt/unify4.C
-1593711084b ./gcc/testsuite/g++.old-deja/g++.pt/unify6.C
-2805975955b ./gcc/testsuite/g++.old-deja/g++.pt/unify7.C
- 572096107b ./gcc/testsuite/g++.old-deja/g++.pt/unify8.C
-1740949226b ./gcc/testsuite/g++.old-deja/g++.pt/union1.C
-3325944931b ./gcc/testsuite/g++.old-deja/g++.pt/union2.C
-3304362700b ./gcc/testsuite/g++.old-deja/g++.pt/using1.C
-3289243465b ./gcc/testsuite/g++.old-deja/g++.pt/using2.C
-3460641357b ./gcc/testsuite/g++.old-deja/g++.pt/vaarg2.C
- 358497795b ./gcc/testsuite/g++.old-deja/g++.pt/vaarg3.C
- 886046502b ./gcc/testsuite/g++.old-deja/g++.pt/vaarg.C
- 663619266b ./gcc/testsuite/g++.old-deja/g++.pt/var1.C
-1421755768b ./gcc/testsuite/g++.old-deja/g++.pt/vbase1.C
-3353980626b ./gcc/testsuite/g++.old-deja/g++.pt/virtual1.C
-2579767623b ./gcc/testsuite/g++.old-deja/g++.pt/virtual2.C
-3153841756b ./gcc/testsuite/g++.old-deja/g++.pt/virtual3.C
-3045422609b ./gcc/testsuite/g++.old-deja/g++.pt/virtual4.C
-1462240574b ./gcc/testsuite/g++.old-deja/g++.pt/warn1.C
-1277079184b ./gcc/testsuite/g++.old-deja/g++.pt/warn2.C
-1415873556b ./gcc/testsuite/g++.old-deja/g++.rfg/00321_01-.C
-1112275657b ./gcc/testsuite/g++.old-deja/g++.rfg/00324_02-.C
-4001281008b ./gcc/testsuite/g++.old-deja/g++.robertl/980310-1.C
-3472844044b ./gcc/testsuite/g++.old-deja/g++.robertl/eb102.C
-2443648446b ./gcc/testsuite/g++.old-deja/g++.robertl/eb103.C
-2507881262b ./gcc/testsuite/g++.old-deja/g++.robertl/eb104.C
- 562781296b ./gcc/testsuite/g++.old-deja/g++.robertl/eb105.C
-2425940184b ./gcc/testsuite/g++.old-deja/g++.robertl/eb106.C
- 816702909b ./gcc/testsuite/g++.old-deja/g++.robertl/eb107.C
-1370397701b ./gcc/testsuite/g++.old-deja/g++.robertl/eb108.C
-2829681364b ./gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
-3648377352b ./gcc/testsuite/g++.old-deja/g++.robertl/eb10.C
-1181050923b ./gcc/testsuite/g++.old-deja/g++.robertl/eb110.C
-3893933499b ./gcc/testsuite/g++.old-deja/g++.robertl/eb111.C
-1958243707b ./gcc/testsuite/g++.old-deja/g++.robertl/eb112.C
-1947798881b ./gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
-3605730706b ./gcc/testsuite/g++.old-deja/g++.robertl/eb114.C
-1577168820b ./gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
- 882322806b ./gcc/testsuite/g++.old-deja/g++.robertl/eb116.C
-3652784132b ./gcc/testsuite/g++.old-deja/g++.robertl/eb118.C
-1321940613b ./gcc/testsuite/g++.old-deja/g++.robertl/eb119.C
-1227838581b ./gcc/testsuite/g++.old-deja/g++.robertl/eb11.C
- 784221952b ./gcc/testsuite/g++.old-deja/g++.robertl/eb120.C
-1281713077b ./gcc/testsuite/g++.old-deja/g++.robertl/eb121.C
-2148357158b ./gcc/testsuite/g++.old-deja/g++.robertl/eb122.C
- 340399175b ./gcc/testsuite/g++.old-deja/g++.robertl/eb123.C
-2311366193b ./gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
-3467340374b ./gcc/testsuite/g++.old-deja/g++.robertl/eb125.C
-1327581862b ./gcc/testsuite/g++.old-deja/g++.robertl/eb126.C
-3379073614b ./gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
-1650763244b ./gcc/testsuite/g++.old-deja/g++.robertl/eb128.C
-2811911547b ./gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
- 551639476b ./gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
- 158711949b ./gcc/testsuite/g++.old-deja/g++.robertl/eb12.C
-3610132478b ./gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
-2576744469b ./gcc/testsuite/g++.old-deja/g++.robertl/eb131.C
- 191646019b ./gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
-2212505012b ./gcc/testsuite/g++.old-deja/g++.robertl/eb133a.C
- 960695829b ./gcc/testsuite/g++.old-deja/g++.robertl/eb133b.C
- 960695829b ./gcc/testsuite/g++.old-deja/g++.robertl/eb133.C
- 630981722b ./gcc/testsuite/g++.old-deja/g++.robertl/eb13.C
-3851013524b ./gcc/testsuite/g++.old-deja/g++.robertl/eb14.C
- 8426984b ./gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
-2805277324b ./gcc/testsuite/g++.old-deja/g++.robertl/eb16.C
-1023058352b ./gcc/testsuite/g++.old-deja/g++.robertl/eb17.C
-2664767884b ./gcc/testsuite/g++.old-deja/g++.robertl/eb18.C
- 526517709b ./gcc/testsuite/g++.old-deja/g++.robertl/eb19.C
- 461969397b ./gcc/testsuite/g++.old-deja/g++.robertl/eb20.C
-2675256374b ./gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
- 917318256b ./gcc/testsuite/g++.old-deja/g++.robertl/eb22.C
- 430086508b ./gcc/testsuite/g++.old-deja/g++.robertl/eb23.C
-1945933799b ./gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
- 309172009b ./gcc/testsuite/g++.old-deja/g++.robertl/eb26.C
- 292107192b ./gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
-1890436003b ./gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
-3453020821b ./gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
-3780933159b ./gcc/testsuite/g++.old-deja/g++.robertl/eb2.C
- 563892057b ./gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
-3084203745b ./gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
-4187617186b ./gcc/testsuite/g++.old-deja/g++.robertl/eb32.C
- 220886230b ./gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
-2115586068b ./gcc/testsuite/g++.old-deja/g++.robertl/eb34.C
- 563300325b ./gcc/testsuite/g++.old-deja/g++.robertl/eb35.C
-3434413457b ./gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
-2564432607b ./gcc/testsuite/g++.old-deja/g++.robertl/eb37.C
-2426566316b ./gcc/testsuite/g++.old-deja/g++.robertl/eb38.C
- 528193552b ./gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
-2212669672b ./gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
- 507123073b ./gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
-3295582703b ./gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
-3397322273b ./gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
- 687602470b ./gcc/testsuite/g++.old-deja/g++.robertl/eb45.C
- 804543247b ./gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
- 753241876b ./gcc/testsuite/g++.old-deja/g++.robertl/eb48.C
-3504050873b ./gcc/testsuite/g++.old-deja/g++.robertl/eb49.C
- 291255111b ./gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
-4113309347b ./gcc/testsuite/g++.old-deja/g++.robertl/eb50.C
-1918037503b ./gcc/testsuite/g++.old-deja/g++.robertl/eb51.C
-3209054875b ./gcc/testsuite/g++.old-deja/g++.robertl/eb52.C
- 710220281b ./gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
-2958452317b ./gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
- 925139048b ./gcc/testsuite/g++.old-deja/g++.robertl/eb56.C
-1356497150b ./gcc/testsuite/g++.old-deja/g++.robertl/eb57.C
-3407397105b ./gcc/testsuite/g++.old-deja/g++.robertl/eb58.C
- 794738043b ./gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
-3128226785b ./gcc/testsuite/g++.old-deja/g++.robertl/eb5.C
-2498272255b ./gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
-1266761033b ./gcc/testsuite/g++.old-deja/g++.robertl/eb61.C
-2004022719b ./gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
-4040217083b ./gcc/testsuite/g++.old-deja/g++.robertl/eb63.C
-1956073784b ./gcc/testsuite/g++.old-deja/g++.robertl/eb64.C
-4008623056b ./gcc/testsuite/g++.old-deja/g++.robertl/eb65.C
- 980372542b ./gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
-3389307963b ./gcc/testsuite/g++.old-deja/g++.robertl/eb67.C
-4223737421b ./gcc/testsuite/g++.old-deja/g++.robertl/eb69.C
-1997456294b ./gcc/testsuite/g++.old-deja/g++.robertl/eb6.C
-2182473885b ./gcc/testsuite/g++.old-deja/g++.robertl/eb70.C
-3826058150b ./gcc/testsuite/g++.old-deja/g++.robertl/eb71.C
-3782517804b ./gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
-2471271135b ./gcc/testsuite/g++.old-deja/g++.robertl/eb74.C
- 355273621b ./gcc/testsuite/g++.old-deja/g++.robertl/eb75.C
-2546436998b ./gcc/testsuite/g++.old-deja/g++.robertl/eb76.C
-2308966043b ./gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
-3644883412b ./gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
- 718049317b ./gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
-1974141968b ./gcc/testsuite/g++.old-deja/g++.robertl/eb80.C
-3623034003b ./gcc/testsuite/g++.old-deja/g++.robertl/eb81.C
- 303859604b ./gcc/testsuite/g++.old-deja/g++.robertl/eb82.C
-1398794376b ./gcc/testsuite/g++.old-deja/g++.robertl/eb83.C
-1911496354b ./gcc/testsuite/g++.old-deja/g++.robertl/eb84.C
- 83084630b ./gcc/testsuite/g++.old-deja/g++.robertl/eb86.C
- 637629215b ./gcc/testsuite/g++.old-deja/g++.robertl/eb87.C
- 15844958b ./gcc/testsuite/g++.old-deja/g++.robertl/eb88.C
-3708449542b ./gcc/testsuite/g++.old-deja/g++.robertl/eb8.C
-1724324673b ./gcc/testsuite/g++.old-deja/g++.robertl/eb90.C
-2024296388b ./gcc/testsuite/g++.old-deja/g++.robertl/eb91.C
-2107259564b ./gcc/testsuite/g++.old-deja/g++.robertl/eb92.C
-2200177849b ./gcc/testsuite/g++.old-deja/g++.robertl/eb93.C
-2786021364b ./gcc/testsuite/g++.old-deja/g++.robertl/eb94.C
-3847299793b ./gcc/testsuite/g++.old-deja/g++.robertl/eb95.C
-2908163544b ./gcc/testsuite/g++.old-deja/g++.robertl/eb97.C
- 131102227b ./gcc/testsuite/g++.old-deja/g++.robertl/eb98.C
-2054173722b ./gcc/testsuite/g++.old-deja/g++.robertl/eb99.C
-3273280926b ./gcc/testsuite/g++.old-deja/g++.robertl/eb9.C
-3496760893b ./gcc/testsuite/g++.old-deja/g++.robertl/ebnull.C
-1294688249b ./gcc/testsuite/g++.old-deja/g++.robertl/ebnull-cast.C
-2390910991b ./gcc/testsuite/g++.old-deja/g++.robertl/ebnull-oldcast.C
-3321525464b ./gcc/testsuite/g++.old-deja/g++.robertl/eh990323-1.C
- 349170821b ./gcc/testsuite/g++.old-deja/g++.robertl/eh990323-2.C
-2742680950b ./gcc/testsuite/g++.old-deja/g++.robertl/eh990323-3.C
-1643595357b ./gcc/testsuite/g++.old-deja/g++.robertl/eh990323-4.C
- 756189085b ./gcc/testsuite/g++.old-deja/g++.robertl/eh990323-5.C
- 710689512b ./gcc/testsuite/g++.old-deja/g++.robertl/ice990323-1.C
-3704302140b ./gcc/testsuite/g++.old-deja/g++.robertl/ice990323-2.C
- 424851899b ./gcc/testsuite/g++.old-deja/g++.robertl/ice990323-3.C
-1966976843b ./gcc/testsuite/g++.old-deja/g++.robertl/ice990323-4.C
-2792305431b ./gcc/testsuite/g++.old-deja/g++.robertl/ice990323-5.C
-3593716546b ./gcc/testsuite/g++.old-deja/g++.robertl/README
-2167858031b ./gcc/testsuite/g++.old-deja/g++.warn/cast-align1.C
-2257841595b ./gcc/testsuite/g++.old-deja/g++.warn/compare1.C
- 478428580b ./gcc/testsuite/g++.old-deja/g++.warn/flow1.C
-1434994100b ./gcc/testsuite/g++.old-deja/g++.warn/impint2.C
- 228848226b ./gcc/testsuite/g++.old-deja/g++.warn/impint.C
- 308484502b ./gcc/testsuite/g++.old-deja/g++.warn/inline.C
-3053994732b ./gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
-3603456747b ./gcc/testsuite/g++.old-deja/g++.warn/virt1.C
-1241992731b ./gcc/testsuite/g++.old-deja/old-deja.exp
-1387283607b ./gcc/testsuite/lib/c-torture.exp
- 827216288b ./gcc/testsuite/lib/file-format.exp
- 246962046b ./gcc/testsuite/lib/f-torture.exp
-2197210451b ./gcc/testsuite/lib/g77-dg.exp
-4020741824b ./gcc/testsuite/lib/g77.exp
-3365202398b ./gcc/testsuite/lib/gcc-defs.exp
-3402161270b ./gcc/testsuite/lib/gcc-dg.exp
-3313214307b ./gcc/testsuite/lib/gcc.exp
-1748156049b ./gcc/testsuite/lib/gcov.exp
-1025717576b ./gcc/testsuite/lib/g++-dg.exp
- 590309199b ./gcc/testsuite/lib/g++.exp
-1785660070b ./gcc/testsuite/lib/mike-g77.exp
-3188273403b ./gcc/testsuite/lib/mike-gcc.exp
-2511438650b ./gcc/testsuite/lib/mike-g++.exp
- 576875699b ./gcc/testsuite/lib/objc-dg.exp
-2555356069b ./gcc/testsuite/lib/objc.exp
-3849564329b ./gcc/testsuite/lib/objc-torture.exp
-1673351574b ./gcc/testsuite/lib/old-dejagnu.exp
- 766192419b ./gcc/testsuite/lib/profopt.exp
-1029251629b ./gcc/testsuite/lib/prune.exp
-2428636490b ./gcc/testsuite/lib/scanasm.exp
-3463101165b ./gcc/testsuite/lib/target-supports.exp
-3665869615b ./gcc/testsuite/objc/compile/20011211-1.m
-1806367206b ./gcc/testsuite/objc/compile/compile.exp
-1369080733b ./gcc/testsuite/objc.dg/alias.m
-3316559321b ./gcc/testsuite/objc.dg/class-1.m
-3678679752b ./gcc/testsuite/objc.dg/class-2.m
-1411503086b ./gcc/testsuite/objc.dg/const-str-1.m
-3977573176b ./gcc/testsuite/objc.dg/const-str-2.m
-1541394849b ./gcc/testsuite/objc.dg/dg.exp
-1505392257b ./gcc/testsuite/objc.dg/fwd-proto-1.m
-2449513844b ./gcc/testsuite/objc.dg/id-1.m
-2495249432b ./gcc/testsuite/objc.dg/local-decl-1.m
-1667427564b ./gcc/testsuite/objc.dg/method-1.m
-2835356210b ./gcc/testsuite/objc.dg/method-2.m
-1830729571b ./gcc/testsuite/objc.dg/naming-1.m
- 250748297b ./gcc/testsuite/objc.dg/naming-2.m
-2785734223b ./gcc/testsuite/objc.dg/proto-hier-1.m
- 888349193b ./gcc/testsuite/objc.dg/special/special.exp
-3208621557b ./gcc/testsuite/objc.dg/special/unclaimed-category-1a.m
-3078900770b ./gcc/testsuite/objc.dg/special/unclaimed-category-1.h
-1931469026b ./gcc/testsuite/objc.dg/special/unclaimed-category-1.m
- 967308749b ./gcc/testsuite/objc.dg/super-class-1.m
-3837394038b ./gcc/testsuite/objc/execute/accessing_ivars.m
-2710215022b ./gcc/testsuite/objc/execute/bf-10.m
-2657298938b ./gcc/testsuite/objc/execute/bf-11.m
-2456637155b ./gcc/testsuite/objc/execute/bf-12.m
-2109396861b ./gcc/testsuite/objc/execute/bf-13.m
-2180168093b ./gcc/testsuite/objc/execute/bf-14.m
-2032295263b ./gcc/testsuite/objc/execute/bf-15.m
-3201695449b ./gcc/testsuite/objc/execute/bf-16.m
-4134365460b ./gcc/testsuite/objc/execute/bf-17.m
- 355990402b ./gcc/testsuite/objc/execute/bf-18.m
-3674443693b ./gcc/testsuite/objc/execute/bf-19.m
-1927175126b ./gcc/testsuite/objc/execute/bf-1.m
-2184610020b ./gcc/testsuite/objc/execute/bf-20.m
-2019969445b ./gcc/testsuite/objc/execute/bf-21.m
-3212450864b ./gcc/testsuite/objc/execute/bf-2.m
- 80833366b ./gcc/testsuite/objc/execute/bf-3.m
-1154895973b ./gcc/testsuite/objc/execute/bf-4.m
-2150643868b ./gcc/testsuite/objc/execute/bf-5.m
-2449368591b ./gcc/testsuite/objc/execute/bf-6.m
-2461635599b ./gcc/testsuite/objc/execute/bf-7.m
-2205665948b ./gcc/testsuite/objc/execute/bf-8.m
-1881717138b ./gcc/testsuite/objc/execute/bf-9.m
-3485125753b ./gcc/testsuite/objc/execute/bf-common.h
- 490840694b ./gcc/testsuite/objc/execute/bycopy-1.m
- 494931174b ./gcc/testsuite/objc/execute/bycopy-2.m
-1730034329b ./gcc/testsuite/objc/execute/bycopy-3.m
-3022811812b ./gcc/testsuite/objc/execute/class-10.m
-1808680681b ./gcc/testsuite/objc/execute/class-11.m
-3170467444b ./gcc/testsuite/objc/execute/class-12.m
-1450032037b ./gcc/testsuite/objc/execute/class-13.m
- 962298201b ./gcc/testsuite/objc/execute/class-14.m
- 15537293b ./gcc/testsuite/objc/execute/class-1.m
- 184341932b ./gcc/testsuite/objc/execute/class-2.m
-1192708745b ./gcc/testsuite/objc/execute/class-3.m
-1197020462b ./gcc/testsuite/objc/execute/class-4.m
-1142894955b ./gcc/testsuite/objc/execute/class-5.m
-1726324093b ./gcc/testsuite/objc/execute/class-6.m
-3834458842b ./gcc/testsuite/objc/execute/class-7.m
-3671287888b ./gcc/testsuite/objc/execute/class-8.m
-3384901465b ./gcc/testsuite/objc/execute/class-9.m
-4110777484b ./gcc/testsuite/objc/execute/class_self-1.m
-1951268392b ./gcc/testsuite/objc/execute/class_self-2.m
- 68195390b ./gcc/testsuite/objc/execute/class-tests-1.h
-1742460237b ./gcc/testsuite/objc/execute/class-tests-2.h
-1707819077b ./gcc/testsuite/objc/execute/_cmd.m
-2668180928b ./gcc/testsuite/objc/execute/compatibility_alias.m
-2525550462b ./gcc/testsuite/objc/execute/encode-1.m
-2615444748b ./gcc/testsuite/objc/execute/enumeration-1.m
- 594446998b ./gcc/testsuite/objc/execute/enumeration-2.m
-1013968222b ./gcc/testsuite/objc/execute/execute.exp
-2364697004b ./gcc/testsuite/objc/execute/fdecl.m
-2041731208b ./gcc/testsuite/objc/execute/formal_protocol-1.m
-1183019794b ./gcc/testsuite/objc/execute/formal_protocol-2.m
- 964580640b ./gcc/testsuite/objc/execute/formal_protocol-3.m
- 382692504b ./gcc/testsuite/objc/execute/formal_protocol-4.m
-3973735702b ./gcc/testsuite/objc/execute/formal_protocol-5.m
-2144981305b ./gcc/testsuite/objc/execute/formal_protocol-6.m
-3644699221b ./gcc/testsuite/objc/execute/formal_protocol-6.x
- 99644718b ./gcc/testsuite/objc/execute/formal_protocol-7.m
-2696823090b ./gcc/testsuite/objc/execute/IMP.m
-1013228926b ./gcc/testsuite/objc/execute/informal_protocol.m
-2858039597b ./gcc/testsuite/objc/execute/initialize.m
-4264400256b ./gcc/testsuite/objc/execute/load-2.m
-2230402406b ./gcc/testsuite/objc/execute/load-3.m
-2172522617b ./gcc/testsuite/objc/execute/load.m
-1396880793b ./gcc/testsuite/objc/execute/many_args_method.m
- 160833808b ./gcc/testsuite/objc/execute/nested-1.m
-3121484936b ./gcc/testsuite/objc/execute/nested-2.m
-1950177275b ./gcc/testsuite/objc/execute/nested-3.m
-3845787514b ./gcc/testsuite/objc/execute/no_clash.m
-3091877589b ./gcc/testsuite/objc/execute/np-1.m
- 837055144b ./gcc/testsuite/objc/execute/np-2.m
- 936059862b ./gcc/testsuite/objc/execute/object_is_class.m
-1811140144b ./gcc/testsuite/objc/execute/object_is_meta_class.m
-3444127895b ./gcc/testsuite/objc/execute/private.m
-1487670997b ./gcc/testsuite/objc/execute/protocol.m
-3592928955b ./gcc/testsuite/objc/execute/redefining_self.m
-1524125855b ./gcc/testsuite/objc/execute/root_methods.m
-1619707236b ./gcc/testsuite/objc/execute/selector-1.m
-2594938245b ./gcc/testsuite/objc/execute/static-1.m
- 639280843b ./gcc/testsuite/objc/execute/static-2.m
-1410428796b ./gcc/testsuite/objc/execute/string1.m
-2225521120b ./gcc/testsuite/objc/execute/string2.m
-2934965640b ./gcc/testsuite/objc/execute/string3.m
- 416130789b ./gcc/testsuite/objc/execute/string4.m
- 34483048b ./gcc/testsuite/objc/execute/va_method.m
- 986418331b ./gcc/testsuite/README
-4258789052b ./gcc/testsuite/README.g++
- 174183124b ./gcc/testsuite/README.gcc
- 214354681b ./gcc/timevar.c
-2559007517b ./gcc/timevar.def
-2115869626b ./gcc/timevar.h
-2335446483b ./gcc/tlink.c
- 163649448b ./gcc/toplev.c
-1100253771b ./gcc/toplev.h
-2851581967b ./gcc/tradcif.c
- 840149782b ./gcc/tradcif.y
- 585812029b ./gcc/tradcpp.c
- 133942480b ./gcc/tradcpp.h
-4051453607b ./gcc/tree.c
-1914541060b ./gcc/tree.def
-1565760610b ./gcc/tree-dump.c
- 177026127b ./gcc/tree-dump.h
-3581573816b ./gcc/tree.h
-1491742054b ./gcc/tree-inline.c
-2000795530b ./gcc/tree-inline.h
-2106315745b ./gcc/tsystem.h
-4139263293b ./gcc/typeclass.h
-2642343552b ./gcc/unroll.c
-3994883910b ./gcc/unwind-dw2.c
- 939184029b ./gcc/unwind-dw2-fde.c
-2451297709b ./gcc/unwind-dw2-fde-glibc.c
-2681777274b ./gcc/unwind-dw2-fde.h
-4110084340b ./gcc/unwind.h
-1788741054b ./gcc/unwind.inc
-1733200042b ./gcc/unwind-pe.h
-3015631845b ./gcc/unwind-sjlj.c
-1202449654b ./gcc/varasm.c
-1377429075b ./gcc/varray.c
- 251576980b ./gcc/varray.h
-3093622349b ./gcc/version.c
- 835289284b ./gcc/version.h
-1602668013b ./gcc/vmsdbg.h
-4159431942b ./gcc/vmsdbgout.c
-3414725237b ./gcc/xcoffout.c
- 241048359b ./gcc/xcoffout.h
- 259673838b ./GNATS
-3427622163b ./gnats.html
- 218913669b ./include/ansidecl.h
-3767303661b ./include/ChangeLog
-2171125041b ./include/COPYING
-3472518673b ./include/demangle.h
- 524172850b ./include/dyn-string.h
-3966992879b ./include/fibheap.h
-3882244111b ./include/floatformat.h
-1934715875b ./include/fnmatch.h
-1069433913b ./include/getopt.h
-3613614297b ./include/hashtab.h
-1889274764b ./include/libiberty.h
-2315750201b ./include/md5.h
-1017179691b ./include/objalloc.h
-2663239037b ./include/obstack.h
-1121284874b ./include/partition.h
- 618378141b ./include/safe-ctype.h
-1944369318b ./include/sort.h
-2658328396b ./include/splay-tree.h
-1653599470b ./include/symcat.h
-1386762946b ./include/ternary.h
-1261882580b ./include/xregex2.h
-1151436348b ./include/xregex.h
-1176932515b ./INSTALL/binaries.html
-1486978407b ./INSTALL/build.html
-1718198324b ./INSTALL/configure.html
-3350091909b ./INSTALL/download.html
-3420202342b ./INSTALL/finalinstall.html
-2848899000b ./INSTALL/gfdl.html
- 374079968b ./INSTALL/index.html
-3936331425b ./INSTALL/old.html
-2229468985b ./INSTALL/README
- 656627656b ./install-sh
-2979632843b ./INSTALL/specific.html
-2275412368b ./INSTALL/test.html
-1714952917b ./libf2c/aclocal.m4
-4143385168b ./libf2c/ChangeLog
-1973941211b ./libf2c/changes.netlib
-3975721411b ./libf2c/configure
-1477197116b ./libf2c/configure.in
-2487502900b ./libf2c/disclaimer.netlib
- 332556269b ./libf2c/f2cext.c
- 259100451b ./libf2c/f2c.h
-3266643335b ./libf2c/g2c.hin
-1304659322b ./libf2c/libF77/abort_.c
-2143735092b ./libf2c/libF77/c_abs.c
-3290078007b ./libf2c/libF77/cabs.c
-4102372920b ./libf2c/libF77/c_cos.c
-1754542093b ./libf2c/libF77/c_div.c
-3847115202b ./libf2c/libF77/c_exp.c
-2878052462b ./libf2c/libF77/c_log.c
- 871413835b ./libf2c/libF77/configure
- 937702981b ./libf2c/libF77/configure.in
-3389634672b ./libf2c/libF77/c_sin.c
-1183895118b ./libf2c/libF77/c_sqrt.c
-3030188690b ./libf2c/libF77/d_abs.c
-1507325734b ./libf2c/libF77/d_acos.c
-4159233847b ./libf2c/libF77/d_asin.c
-2427060621b ./libf2c/libF77/d_atan.c
-1296492558b ./libf2c/libF77/d_atn2.c
-3575888780b ./libf2c/libF77/d_cnjg.c
-4073305831b ./libf2c/libF77/d_cos.c
-3091338483b ./libf2c/libF77/d_cosh.c
- 810995689b ./libf2c/libF77/d_dim.c
-3392851220b ./libf2c/libF77/derf_.c
-1250156454b ./libf2c/libF77/derfc_.c
- 858325700b ./libf2c/libF77/d_exp.c
-2046018081b ./libf2c/libF77/d_imag.c
-3730554656b ./libf2c/libF77/d_int.c
-2573277355b ./libf2c/libF77/d_lg10.c
-2735602877b ./libf2c/libF77/d_log.c
-2463902440b ./libf2c/libF77/d_mod.c
-1315838709b ./libf2c/libF77/d_nint.c
- 865009317b ./libf2c/libF77/d_prod.c
- 93986231b ./libf2c/libF77/d_sign.c
-3550952375b ./libf2c/libF77/d_sin.c
-3529247529b ./libf2c/libF77/d_sinh.c
- 198362081b ./libf2c/libF77/d_sqrt.c
- 836556354b ./libf2c/libF77/d_tan.c
-4186903397b ./libf2c/libF77/d_tanh.c
-1412482988b ./libf2c/libF77/dtime_.c
-3387281619b ./libf2c/libF77/ef1asc_.c
- 49504728b ./libf2c/libF77/ef1cmc_.c
-2553568528b ./libf2c/libF77/erf_.c
-1439324285b ./libf2c/libF77/erfc_.c
-2682848958b ./libf2c/libF77/etime_.c
-2926211158b ./libf2c/libF77/exit_.c
-3294101487b ./libf2c/libF77/f2ch.add
- 317136894b ./libf2c/libF77/F77_aloc.c
- 262909947b ./libf2c/libF77/getarg_.c
-1053635766b ./libf2c/libF77/getenv_.c
-1464793891b ./libf2c/libF77/h_abs.c
-4172389826b ./libf2c/libF77/h_dim.c
-4004178848b ./libf2c/libF77/h_dnnt.c
-4111775146b ./libf2c/libF77/h_indx.c
-3370033031b ./libf2c/libF77/h_len.c
- 577774165b ./libf2c/libF77/hl_ge.c
-1370298730b ./libf2c/libF77/hl_gt.c
-1915814870b ./libf2c/libF77/hl_le.c
- 368944666b ./libf2c/libF77/hl_lt.c
-2764887666b ./libf2c/libF77/h_mod.c
-3401291699b ./libf2c/libF77/h_nint.c
-1347560191b ./libf2c/libF77/h_sign.c
-2473169636b ./libf2c/libF77/i_abs.c
-1210543358b ./libf2c/libF77/iargc_.c
-4060206463b ./libf2c/libF77/i_dim.c
-2964212421b ./libf2c/libF77/i_dnnt.c
-2958321828b ./libf2c/libF77/i_indx.c
-1478370784b ./libf2c/libF77/i_len.c
-1964370981b ./libf2c/libF77/i_mod.c
- 956761106b ./libf2c/libF77/i_nint.c
-3590616869b ./libf2c/libF77/i_sign.c
- 443393905b ./libf2c/libF77/lbitbits.c
-3575626916b ./libf2c/libF77/lbitshft.c
-4105379815b ./libf2c/libF77/l_ge.c
-4110886289b ./libf2c/libF77/l_gt.c
-1122360099b ./libf2c/libF77/l_le.c
-3320765614b ./libf2c/libF77/l_lt.c
-1531755714b ./libf2c/libF77/main.c
-2048561220b ./libf2c/libF77/Makefile.in
-1177519321b ./libf2c/libF77/makefile.netlib
-1384146782b ./libf2c/libF77/Notice
-3561723582b ./libf2c/libF77/pow_ci.c
- 80946260b ./libf2c/libF77/pow_dd.c
-1800535765b ./libf2c/libF77/pow_di.c
-3408442423b ./libf2c/libF77/pow_hh.c
-4238680779b ./libf2c/libF77/pow_ii.c
- 483795003b ./libf2c/libF77/pow_qq.c
-2828214001b ./libf2c/libF77/pow_ri.c
-1113537371b ./libf2c/libF77/pow_zi.c
-1192551031b ./libf2c/libF77/pow_zz.c
-1528868299b ./libf2c/libF77/qbitbits.c
-2508152427b ./libf2c/libF77/qbitshft.c
-3223994220b ./libf2c/libF77/r_abs.c
-3352864098b ./libf2c/libF77/r_acos.c
-3384723664b ./libf2c/libF77/r_asin.c
-1988008783b ./libf2c/libF77/r_atan.c
- 713014287b ./libf2c/libF77/r_atn2.c
- 823683848b ./libf2c/libF77/r_cnjg.c
- 186941398b ./libf2c/libF77/r_cos.c
-3322305540b ./libf2c/libF77/r_cosh.c
-3466251772b ./libf2c/libF77/r_dim.c
-3594711912b ./libf2c/libF77/README.netlib
-3655480343b ./libf2c/libF77/r_exp.c
- 457367872b ./libf2c/libF77/r_imag.c
-1964745019b ./libf2c/libF77/r_int.c
- 361396536b ./libf2c/libF77/r_lg10.c
-2577838016b ./libf2c/libF77/r_log.c
-3015829361b ./libf2c/libF77/r_mod.c
-1801353496b ./libf2c/libF77/r_nint.c
- 617376052b ./libf2c/libF77/r_sign.c
-1330225769b ./libf2c/libF77/r_sin.c
-3815237833b ./libf2c/libF77/r_sinh.c
-3405603649b ./libf2c/libF77/r_sqrt.c
- 948857700b ./libf2c/libF77/r_tan.c
-2204673615b ./libf2c/libF77/r_tanh.c
-2846091421b ./libf2c/libF77/s_cat.c
-1366254496b ./libf2c/libF77/s_cmp.c
-3500695330b ./libf2c/libF77/s_copy.c
-3467937994b ./libf2c/libF77/setarg.c
- 273280446b ./libf2c/libF77/setsig.c
- 199330663b ./libf2c/libF77/sig_die.c
-1302607324b ./libf2c/libF77/signal1.h
-3496496096b ./libf2c/libF77/signal1.h0
-4121880197b ./libf2c/libF77/signal_.c
-2017948720b ./libf2c/libF77/s_paus.c
-2593705873b ./libf2c/libF77/s_rnge.c
-3862265148b ./libf2c/libF77/s_stop.c
- 113341864b ./libf2c/libF77/system_.c
-2089507993b ./libf2c/libF77/Version.c
-1937893648b ./libf2c/libF77/z_abs.c
-2431309812b ./libf2c/libF77/z_cos.c
-4069203393b ./libf2c/libF77/z_div.c
- 654537628b ./libf2c/libF77/z_exp.c
- 391907002b ./libf2c/libF77/z_log.c
-2332417514b ./libf2c/libF77/z_sin.c
-4013824581b ./libf2c/libF77/z_sqrt.c
-1606913831b ./libf2c/libI77/backspace.c
-2398093876b ./libf2c/libI77/close.c
-3442307107b ./libf2c/libI77/config.h.in
-3559715528b ./libf2c/libI77/configure
- 511797131b ./libf2c/libI77/configure.in
-1434317732b ./libf2c/libI77/dfe.c
-1498544240b ./libf2c/libI77/dolio.c
-4138072081b ./libf2c/libI77/due.c
-2736903293b ./libf2c/libI77/endfile.c
- 690850192b ./libf2c/libI77/err.c
-3294101487b ./libf2c/libI77/f2ch.add
-1356134703b ./libf2c/libI77/fio.h
- 772866895b ./libf2c/libI77/fmt.c
-4101507712b ./libf2c/libI77/fmt.h
-3009804035b ./libf2c/libI77/fmtlib.c
-1409031309b ./libf2c/libI77/fp.h
-1512800910b ./libf2c/libI77/ftell_.c
-1917699485b ./libf2c/libI77/iio.c
-1458869538b ./libf2c/libI77/ilnw.c
-1005821588b ./libf2c/libI77/inquire.c
- 771509778b ./libf2c/libI77/lio.h
- 339145586b ./libf2c/libI77/lread.c
-2727021368b ./libf2c/libI77/lwrite.c
- 81211418b ./libf2c/libI77/Makefile.in
-2636902289b ./libf2c/libI77/makefile.netlib
-1384146782b ./libf2c/libI77/Notice
-1954564498b ./libf2c/libI77/open.c
-2450120238b ./libf2c/libI77/rdfmt.c
-3744878144b ./libf2c/libI77/README.netlib
-2149393700b ./libf2c/libI77/rewind.c
-3082421543b ./libf2c/libI77/rsfe.c
- 27319661b ./libf2c/libI77/rsli.c
- 673652988b ./libf2c/libI77/rsne.c
-2680457877b ./libf2c/libI77/sfe.c
- 216805921b ./libf2c/libI77/stamp-h.in
-4119833693b ./libf2c/libI77/sue.c
-4028809578b ./libf2c/libI77/typesize.c
-2487538082b ./libf2c/libI77/uio.c
-1670879675b ./libf2c/libI77/util.c
-3091360080b ./libf2c/libI77/Version.c
-3746777128b ./libf2c/libI77/wref.c
-1966568786b ./libf2c/libI77/wrtfmt.c
-3540661106b ./libf2c/libI77/wsfe.c
- 869896149b ./libf2c/libI77/wsle.c
-3647229305b ./libf2c/libI77/wsne.c
-2958634571b ./libf2c/libI77/xwsne.c
-1842933802b ./libf2c/libU77/access_.c
-4214861580b ./libf2c/libU77/acconfig.h
-2301261828b ./libf2c/libU77/aclocal.m4
-3260157535b ./libf2c/libU77/alarm_.c
- 481185218b ./libf2c/libU77/bes.c
-3531718858b ./libf2c/libU77/chdir_.c
-3571215248b ./libf2c/libU77/chmod_.c
-1954724291b ./libf2c/libU77/config.hin
-2271415334b ./libf2c/libU77/configure
-4081950488b ./libf2c/libU77/configure.in
- 508743035b ./libf2c/libU77/COPYING.LIB
-3577720310b ./libf2c/libU77/ctime_.c
-2890960351b ./libf2c/libU77/date_.c
-2503989765b ./libf2c/libU77/datetime_.c
-1344682531b ./libf2c/libU77/dbes.c
- 969611891b ./libf2c/libU77/dtime_.c
-2796364082b ./libf2c/libU77/etime_.c
-3739002369b ./libf2c/libU77/fdate_.c
-2936845924b ./libf2c/libU77/fgetc_.c
-1262136923b ./libf2c/libU77/flush1_.c
- 55475392b ./libf2c/libU77/fnum_.c
-1786809239b ./libf2c/libU77/fputc_.c
-3903452909b ./libf2c/libU77/fstat_.c
-3782463129b ./libf2c/libU77/gerror_.c
-1443084591b ./libf2c/libU77/getcwd_.c
-2258536089b ./libf2c/libU77/getgid_.c
-2010909588b ./libf2c/libU77/getlog_.c
-3431059629b ./libf2c/libU77/getpid_.c
- 72289587b ./libf2c/libU77/getuid_.c
- 827784876b ./libf2c/libU77/gmtime_.c
-2490508241b ./libf2c/libU77/hostnm_.c
-1547236336b ./libf2c/libU77/idate_.c
-1177948837b ./libf2c/libU77/ierrno_.c
-2294075352b ./libf2c/libU77/irand_.c
-1142470864b ./libf2c/libU77/isatty_.c
-2802178091b ./libf2c/libU77/itime_.c
-3704802748b ./libf2c/libU77/kill_.c
- 910885406b ./libf2c/libU77/link_.c
-1995276793b ./libf2c/libU77/lnblnk_.c
-3149128167b ./libf2c/libU77/lstat_.c
-1763071373b ./libf2c/libU77/ltime_.c
-2717291481b ./libf2c/libU77/Makefile.in
-2455391013b ./libf2c/libU77/mclock_.c
-4183902576b ./libf2c/libU77/perror_.c
- 572996563b ./libf2c/libU77/PROJECTS
-3798879256b ./libf2c/libU77/rand_.c
-2980229902b ./libf2c/libU77/README
-2297401196b ./libf2c/libU77/rename_.c
- 91467825b ./libf2c/libU77/secnds_.c
-3426498280b ./libf2c/libU77/second_.c
-1721102323b ./libf2c/libU77/sleep_.c
- 366913838b ./libf2c/libU77/srand_.c
- 216805921b ./libf2c/libU77/stamp-h.in
-1858264400b ./libf2c/libU77/stat_.c
- 398713372b ./libf2c/libU77/symlnk_.c
-1023580093b ./libf2c/libU77/sys_clock_.c
-4060599200b ./libf2c/libU77/time_.c
-4222211870b ./libf2c/libU77/ttynam_.c
- 791266987b ./libf2c/libU77/u77-test.f
- 387772730b ./libf2c/libU77/umask_.c
-1230596654b ./libf2c/libU77/unlink_.c
-4065977549b ./libf2c/libU77/Version.c
-2702299573b ./libf2c/libU77/vxtidate_.c
-3987376609b ./libf2c/libU77/vxttime_.c
-3277779159b ./libf2c/Makefile.in
-1384146782b ./libf2c/permission.netlib
-3111321221b ./libf2c/README
-3513813969b ./libf2c/readme.netlib
- 308226469b ./libf2c/TODO
-1812706554b ./libffi/acconfig.h
-2067133813b ./libffi/acinclude.m4
- 724319761b ./libffi/aclocal.m4
-1801242156b ./libffi/ChangeLog
-2412263940b ./libffi/ChangeLog.libgcj
-1481682558b ./libffi/ChangeLog.v1
-3495452477b ./libffi/configure
-2032651767b ./libffi/configure.in
-1158949320b ./libffi/fficonfig.h.in
-3309556484b ./libffi/include/ffi_common.h
-2313143056b ./libffi/include/ffi.h.in
-2321044801b ./libffi/include/ffi_mips.h
-1175058075b ./libffi/include/Makefile.am
-3624063070b ./libffi/include/Makefile.in
-2593181117b ./libffi/LICENSE
-1657741728b ./libffi/Makefile.am
-3338553004b ./libffi/Makefile.in
-3508322383b ./libffi/README
-3852747706b ./libffi/src/alpha/ffi.c
-2032396460b ./libffi/src/alpha/osf.S
-4293371769b ./libffi/src/arm/ffi.c
- 591152992b ./libffi/src/arm/sysv.S
-2669027491b ./libffi/src/debug.c
- 269618381b ./libffi/src/ffitest.c
-2435449601b ./libffi/src/ia64/ffi.c
-1956966073b ./libffi/src/ia64/ia64_flags.h
-2886414800b ./libffi/src/ia64/unix.S
-2946352717b ./libffi/src/java_raw_api.c
-4236219331b ./libffi/src/m68k/ffi.c
-1684090594b ./libffi/src/m68k/sysv.S
-1785558758b ./libffi/src/mips/ffi.c
- 176940890b ./libffi/src/mips/n32.S
-3634355650b ./libffi/src/mips/o32.S
-2356375417b ./libffi/src/powerpc/aix_closure.S
-1342850260b ./libffi/src/powerpc/aix.S
- 257105690b ./libffi/src/powerpc/asm.h
-1992059182b ./libffi/src/powerpc/darwin_closure.S
- 91989017b ./libffi/src/powerpc/darwin.S
-1107349205b ./libffi/src/powerpc/ffi.c
- 342545621b ./libffi/src/powerpc/ffi_darwin.c
-2353704113b ./libffi/src/powerpc/ppc_closure.S
-1185461672b ./libffi/src/powerpc/sysv.S
-1962807490b ./libffi/src/prep_cif.c
-2419197691b ./libffi/src/raw_api.c
-1719114531b ./libffi/src/sparc/ffi.c
-1526185028b ./libffi/src/sparc/v8.S
-2310583994b ./libffi/src/sparc/v9.S
- 518804215b ./libffi/src/types.c
- 788399349b ./libffi/src/x86/ffi.c
- 760488121b ./libffi/src/x86/sysv.S
- 478025840b ./libffi/src/x86/win32.S
- 216805921b ./libffi/stamp-h.in
- 640604299b ./libiberty/aclocal.m4
-4169173798b ./libiberty/alloca.c
- 122203256b ./libiberty/argv.c
- 751194285b ./libiberty/asprintf.c
-3613577770b ./libiberty/atexit.c
- 412337659b ./libiberty/basename.c
-2877771686b ./libiberty/bcmp.c
-3653876397b ./libiberty/bcopy.c
-1033916047b ./libiberty/bsearch.c
-2389959529b ./libiberty/bzero.c
-1591293922b ./libiberty/calloc.c
-1121801877b ./libiberty/ChangeLog
-2264262326b ./libiberty/choose-temp.c
-2557767520b ./libiberty/clock.c
-3170582338b ./libiberty/concat.c
-1987387424b ./libiberty/config.h-vms
-2319815417b ./libiberty/config.in
-3500529335b ./libiberty/config/mh-aix
-3476234501b ./libiberty/config/mh-cxux7
-1235651640b ./libiberty/config/mh-fbsd21
-2904567379b ./libiberty/config/mh-openedition
-2131807358b ./libiberty/config/mh-windows
-4294237366b ./libiberty/config.table
-4091270154b ./libiberty/configure
-1024440091b ./libiberty/configure.in
- 508743035b ./libiberty/COPYING.LIB
-2478885430b ./libiberty/copying-lib.texi
-3329761531b ./libiberty/copysign.c
-2979121734b ./libiberty/cp-demangle.c
-2109007668b ./libiberty/cplus-dem.c
- 602306638b ./libiberty/_doprnt.c
-3785501494b ./libiberty/dyn-string.c
-1492855576b ./libiberty/fdmatch.c
-3977780801b ./libiberty/ffs.c
-2257696761b ./libiberty/fibheap.c
-2495949053b ./libiberty/floatformat.c
-1510070689b ./libiberty/fnmatch.c
-1078076716b ./libiberty/fnmatch.txh
- 85493406b ./libiberty/functions.texi
-3789905598b ./libiberty/gather-docs
-2046253791b ./libiberty/getcwd.c
-2320609345b ./libiberty/getopt1.c
-3944018229b ./libiberty/getopt.c
-3996466380b ./libiberty/getpagesize.c
-2690816019b ./libiberty/getpwd.c
-3425858883b ./libiberty/getruntime.c
-1214210640b ./libiberty/hashtab.c
-1870214410b ./libiberty/hex.c
-3335497459b ./libiberty/index.c
-3255705408b ./libiberty/insque.c
-1676968368b ./libiberty/lbasename.c
-1958824006b ./libiberty/libiberty.texi
-3183084918b ./libiberty/maint-tool
- 661006252b ./libiberty/Makefile.in
-3226217883b ./libiberty/makefile.vms
-2495473509b ./libiberty/make-temp-file.c
-3176875729b ./libiberty/md5.c
-1640952211b ./libiberty/memchr.c
-2120544197b ./libiberty/memcmp.c
- 998344495b ./libiberty/memcpy.c
-1685999989b ./libiberty/memmove.c
- 781584880b ./libiberty/memset.c
-1326635668b ./libiberty/mkstemps.c
-3930704547b ./libiberty/mpw.c
-2010995764b ./libiberty/mpw-config.in
-1580171809b ./libiberty/mpw-make.sed
-2503648631b ./libiberty/msdos.c
- 196373918b ./libiberty/objalloc.c
- 317557207b ./libiberty/obstack.c
-3821010694b ./libiberty/obstacks.texi
-1735078044b ./libiberty/partition.c
-2798791758b ./libiberty/pexecute.c
-3819346820b ./libiberty/putenv.c
-4197438328b ./libiberty/random.c
-4016047250b ./libiberty/README
-4045358849b ./libiberty/regex.c
-1175910896b ./libiberty/rename.c
-2903758838b ./libiberty/rindex.c
-2149284318b ./libiberty/safe-ctype.c
- 779495612b ./libiberty/setenv.c
-1334646884b ./libiberty/sigsetmask.c
- 532242404b ./libiberty/sort.c
-4103476962b ./libiberty/spaces.c
- 656918725b ./libiberty/splay-tree.c
-2341714522b ./libiberty/strcasecmp.c
-4233130047b ./libiberty/strchr.c
- 18952980b ./libiberty/strdup.c
-2389170415b ./libiberty/strerror.c
- 169676915b ./libiberty/strncasecmp.c
-1464675486b ./libiberty/strncmp.c
-1805839887b ./libiberty/strrchr.c
-3254160712b ./libiberty/strsignal.c
-2303974130b ./libiberty/strstr.c
-2399125104b ./libiberty/strtod.c
-2287814393b ./libiberty/strtol.c
-1828706574b ./libiberty/strtoul.c
-3268886825b ./libiberty/ternary.c
-3508543088b ./libiberty/testsuite/demangle-expected
-2389145348b ./libiberty/testsuite/Makefile.in
-2944174175b ./libiberty/testsuite/regress-demangle
-3862028978b ./libiberty/tmpnam.c
-3018358591b ./libiberty/vasprintf.c
-3875192457b ./libiberty/vfork.c
-3556593952b ./libiberty/vfprintf.c
-2773716443b ./libiberty/vmsbuild.com
-3899232273b ./libiberty/vprintf.c
-3719865817b ./libiberty/vsprintf.c
- 192504561b ./libiberty/waitpid.c
-3482083725b ./libiberty/xatexit.c
- 805686844b ./libiberty/xexit.c
-3313408860b ./libiberty/xmalloc.c
-1302531664b ./libiberty/xmemdup.c
- 991611298b ./libiberty/xstrdup.c
- 387398324b ./libiberty/xstrerror.c
- 426063533b ./libjava/acconfig.h
-3221815868b ./libjava/acinclude.m4
-3506621156b ./libjava/aclocal.m4
-3784840223b ./libjava/addr2name.awk
-2317653915b ./libjava/boehm.cc
- 38702888b ./libjava/ChangeLog
-3473562392b ./libjava/ChangeLog-1999
-2385951174b ./libjava/ChangeLog-2001
-2118024035b ./libjava/configure
-2328290871b ./libjava/configure.host
-3463448501b ./libjava/configure.in
-2171125041b ./libjava/COPYING
-3097747965b ./libjava/defineclass.cc
- 535801509b ./libjava/doc/cni.sgml
-1183730379b ./libjava/exception.cc
-3591403769b ./libjava/gcj/array.h
-1281724033b ./libjava/gcj/cni.h
- 227606957b ./libjava/gcj/field.h
-1774648773b ./libjava/gcj/javaprims.h
-1775313853b ./libjava/gcj/libgcj-config.h.in
-1011701793b ./libjava/gcj/Makefile.am
-3428145469b ./libjava/gcj/Makefile.in
-1073488355b ./libjava/gcj/method.h
-1055027936b ./libjava/gij.cc
-1596689297b ./libjava/gnu/awt/gtk/GtkButtonPeer.java
- 922026864b ./libjava/gnu/awt/gtk/gtkcommon.cc
-3699017559b ./libjava/gnu/awt/gtk/gtkcommon.h
-3410609778b ./libjava/gnu/awt/gtk/GtkComponentPeer.java
-2912275709b ./libjava/gnu/awt/gtk/GtkContainerPeer.java
-1877686985b ./libjava/gnu/awt/gtk/GtkFramePeer.java
- 34229675b ./libjava/gnu/awt/gtk/GtkLabelPeer.java
-3368349978b ./libjava/gnu/awt/gtk/GtkMainThread.java
-2212086115b ./libjava/gnu/awt/gtk/GtkToolkit.java
- 466557738b ./libjava/gnu/awt/gtk/GtkWindowPeer.java
-3416961245b ./libjava/gnu/awt/gtk/natGtkButtonPeer.cc
-2501282912b ./libjava/gnu/awt/gtk/natGtkComponentPeer.cc
- 861082488b ./libjava/gnu/awt/gtk/natGtkContainerPeer.cc
- 244230297b ./libjava/gnu/awt/gtk/natGtkFramePeer.cc
-3238461975b ./libjava/gnu/awt/gtk/natGtkLabelPeer.cc
-2820009429b ./libjava/gnu/awt/gtk/natGtkMainThread.cc
- 968113131b ./libjava/gnu/awt/gtk/natGtkToolkit.cc
-2864147854b ./libjava/gnu/awt/gtk/natGtkWindowPeer.cc
-2742774547b ./libjava/gnu/awt/j2d/AbstractGraphicsState.java
- 298830684b ./libjava/gnu/awt/j2d/DirectRasterGraphics.java
-1783524857b ./libjava/gnu/awt/j2d/Graphics2DImpl.java
-2946615030b ./libjava/gnu/awt/j2d/IntegerGraphicsState.java
- 823126662b ./libjava/gnu/awt/j2d/MappedRaster.java
-2535888045b ./libjava/gnu/awt/LightweightRedirector.java
-4203439929b ./libjava/gnu/awt/xlib/XCanvasPeer.java
-3055110597b ./libjava/gnu/awt/xlib/XEventLoop.java
-2886723915b ./libjava/gnu/awt/xlib/XEventQueue.java
-1386185884b ./libjava/gnu/awt/xlib/XFontMetrics.java
-1240842045b ./libjava/gnu/awt/xlib/XFramePeer.java
-1292730399b ./libjava/gnu/awt/xlib/XGraphicsConfiguration.java
-1394253720b ./libjava/gnu/awt/xlib/XGraphics.java
-4211424512b ./libjava/gnu/awt/xlib/XPanelPeer.java
-2089387515b ./libjava/gnu/awt/xlib/XToolkit.java
-3357000131b ./libjava/gnu/classpath/Configuration.java.in
-2926627917b ./libjava/gnu/gcj/convert/Blocks-3.txt
- 958965717b ./libjava/gnu/gcj/convert/BytesToUnicode.java
-3687721297b ./libjava/gnu/gcj/convert/Convert.java
-2990675168b ./libjava/gnu/gcj/convert/gen-from-JIS.c
- 624954174b ./libjava/gnu/gcj/convert/Input_8859_1.java
-1230020474b ./libjava/gnu/gcj/convert/Input_ASCII.java
- 271098151b ./libjava/gnu/gcj/convert/Input_EUCJIS.java
-1595200171b ./libjava/gnu/gcj/convert/Input_iconv.java
-2185755288b ./libjava/gnu/gcj/convert/Input_JavaSrc.java
-2110225778b ./libjava/gnu/gcj/convert/Input_SJIS.java
-1513325785b ./libjava/gnu/gcj/convert/Input_UTF8.java
-1955248518b ./libjava/gnu/gcj/convert/IOConverter.java
-3459137842b ./libjava/gnu/gcj/convert/JIS0201.h
-2049723314b ./libjava/gnu/gcj/convert/JIS0208.h
-4153637973b ./libjava/gnu/gcj/convert/JIS0208_to_Unicode.cc
-1075531862b ./libjava/gnu/gcj/convert/JIS0212.h
-2320550799b ./libjava/gnu/gcj/convert/JIS0212_to_Unicode.cc
-3112494990b ./libjava/gnu/gcj/convert/make-trie.c
-2305784698b ./libjava/gnu/gcj/convert/natIconv.cc
-3409212961b ./libjava/gnu/gcj/convert/natInput_EUCJIS.cc
-2514359574b ./libjava/gnu/gcj/convert/natInput_SJIS.cc
- 784829283b ./libjava/gnu/gcj/convert/natOutput_EUCJIS.cc
-4119160238b ./libjava/gnu/gcj/convert/natOutput_SJIS.cc
-2034070368b ./libjava/gnu/gcj/convert/Output_8859_1.java
-4217873292b ./libjava/gnu/gcj/convert/Output_ASCII.java
- 842766967b ./libjava/gnu/gcj/convert/Output_EUCJIS.java
- 58644124b ./libjava/gnu/gcj/convert/Output_iconv.java
-3127943909b ./libjava/gnu/gcj/convert/Output_JavaSrc.java
-3336489456b ./libjava/gnu/gcj/convert/Output_SJIS.java
-1644529420b ./libjava/gnu/gcj/convert/Output_UTF8.java
-2459634193b ./libjava/gnu/gcj/convert/UnicodeCharacterDatabase-3.0.0.html
-2507096442b ./libjava/gnu/gcj/convert/UnicodeData-3.0.0.txt
-4262149961b ./libjava/gnu/gcj/convert/UnicodeToBytes.java
-2676798711b ./libjava/gnu/gcj/convert/Unicode_to_JIS.cc
-2882288660b ./libjava/gnu/gcj/Core.java
-3580885543b ./libjava/gnu/gcj/io/DefaultMimeTypes.java
-1393439370b ./libjava/gnu/gcj/io/MimeTypes.java
-1645841998b ./libjava/gnu/gcj/io/natSimpleSHSStream.cc
- 88411881b ./libjava/gnu/gcj/io/shs.cc
-3951902308b ./libjava/gnu/gcj/io/shs.h
- 595453629b ./libjava/gnu/gcj/io/SimpleSHSStream.java
- 19196032b ./libjava/gnu/gcj/natCore.cc
-3713902803b ./libjava/gnu/gcj/protocol/core/Connection.java
-1924151198b ./libjava/gnu/gcj/protocol/core/CoreInputStream.java
-2886826729b ./libjava/gnu/gcj/protocol/core/Handler.java
-3112605791b ./libjava/gnu/gcj/protocol/core/natCoreInputStream.cc
- 640992483b ./libjava/gnu/gcj/protocol/file/Connection.java
-3103931425b ./libjava/gnu/gcj/protocol/file/Handler.java
- 635772836b ./libjava/gnu/gcj/protocol/http/Connection.java
- 132815256b ./libjava/gnu/gcj/protocol/http/Handler.java
-2878492435b ./libjava/gnu/gcj/protocol/jar/Connection.java
-1743208466b ./libjava/gnu/gcj/protocol/jar/Handler.java
-2282503099b ./libjava/gnu/gcj/RawData.java
- 501773112b ./libjava/gnu/gcj/runtime/FileDeleter.java
-1535802220b ./libjava/gnu/gcj/runtime/FinalizerThread.java
-1105934296b ./libjava/gnu/gcj/runtime/FirstThread.java
-4204305482b ./libjava/gnu/gcj/runtime/JNIWeakRef.java
-1025799273b ./libjava/gnu/gcj/runtime/natFinalizerThread.cc
-1558736281b ./libjava/gnu/gcj/runtime/natFirstThread.cc
-2521984623b ./libjava/gnu/gcj/runtime/natSharedLibLoader.cc
-2150610459b ./libjava/gnu/gcj/runtime/natStringBuffer.cc
-2135835481b ./libjava/gnu/gcj/runtime/SharedLibLoader.java
-3369847265b ./libjava/gnu/gcj/runtime/StringBuffer.java
-3662016298b ./libjava/gnu/gcj/runtime/VMClassLoader.java
- 66527498b ./libjava/gnu/gcj/xlib/Clip.java
-2501208995b ./libjava/gnu/gcj/xlib/Colormap.java
-4007691160b ./libjava/gnu/gcj/xlib/Display.java
- 334010163b ./libjava/gnu/gcj/xlib/Drawable.java
-3794271918b ./libjava/gnu/gcj/xlib/Font.java
-2207398681b ./libjava/gnu/gcj/xlib/GC.java
-2721622585b ./libjava/gnu/gcj/xlib/natClip.cc
- 313845725b ./libjava/gnu/gcj/xlib/natColormap.cc
-4037646551b ./libjava/gnu/gcj/xlib/natDisplay.cc
- 639031309b ./libjava/gnu/gcj/xlib/natDrawable.cc
-1648177432b ./libjava/gnu/gcj/xlib/natFont.cc
- 61045074b ./libjava/gnu/gcj/xlib/natGC.cc
-2441230090b ./libjava/gnu/gcj/xlib/natPixmap.cc
-1112468906b ./libjava/gnu/gcj/xlib/natScreen.cc
-3505240565b ./libjava/gnu/gcj/xlib/natVisual.cc
- 49610297b ./libjava/gnu/gcj/xlib/natWindowAttributes.cc
-3715533436b ./libjava/gnu/gcj/xlib/natWindow.cc
-2728656554b ./libjava/gnu/gcj/xlib/natWMSizeHints.cc
-2928451851b ./libjava/gnu/gcj/xlib/natXAnyEvent.cc
-1448210768b ./libjava/gnu/gcj/xlib/natXButtonEvent.cc
-1690231537b ./libjava/gnu/gcj/xlib/natXColor.cc
-2465747567b ./libjava/gnu/gcj/xlib/natXConfigureEvent.cc
-1372643816b ./libjava/gnu/gcj/xlib/natXException.cc
-1109730421b ./libjava/gnu/gcj/xlib/natXExposeEvent.cc
-2724939209b ./libjava/gnu/gcj/xlib/natXImage.cc
-2947736072b ./libjava/gnu/gcj/xlib/natXUnmapEvent.cc
-3285825579b ./libjava/gnu/gcj/xlib/Pixmap.java
-3350074944b ./libjava/gnu/gcj/xlib/Screen.java
- 442092378b ./libjava/gnu/gcj/xlib/Visual.java
-2703412405b ./libjava/gnu/gcj/xlib/WindowAttributes.java
-2300472805b ./libjava/gnu/gcj/xlib/Window.java
- 540355668b ./libjava/gnu/gcj/xlib/WMSizeHints.java
- 735616079b ./libjava/gnu/gcj/xlib/XAnyEvent.java
-2053093871b ./libjava/gnu/gcj/xlib/XButtonEvent.java
-1193490335b ./libjava/gnu/gcj/xlib/XColor.java
-3412915905b ./libjava/gnu/gcj/xlib/XConfigureEvent.java
-3680444774b ./libjava/gnu/gcj/xlib/XConnectException.java
-3758585380b ./libjava/gnu/gcj/xlib/XEvent.java
-2109559056b ./libjava/gnu/gcj/xlib/XException.java
-3813405109b ./libjava/gnu/gcj/xlib/XExposeEvent.java
-1394364288b ./libjava/gnu/gcj/xlib/XID.java
-2651203935b ./libjava/gnu/gcj/xlib/XImage.java
- 623452528b ./libjava/gnu/gcj/xlib/XUnmapEvent.java
- 251988486b ./libjava/gnu/java/awt/BitMaskExtent.java
-2959084409b ./libjava/gnu/java/awt/Buffers.java
-3864124155b ./libjava/gnu/java/awt/ComponentDataBlitOp.java
- 76001054b ./libjava/gnu/java/awt/GLightweightPeer.java
-4175984299b ./libjava/gnu/java/beans/BeanInfoEmbryo.java
-1186439895b ./libjava/gnu/java/beans/editors/ColorEditor.java
-1824068032b ./libjava/gnu/java/beans/editors/FontEditor.java
-1141912550b ./libjava/gnu/java/beans/editors/NativeBooleanEditor.java
-3464614661b ./libjava/gnu/java/beans/editors/NativeByteEditor.java
-2154821458b ./libjava/gnu/java/beans/editors/NativeDoubleEditor.java
- 956044404b ./libjava/gnu/java/beans/editors/NativeFloatEditor.java
-1106992351b ./libjava/gnu/java/beans/editors/NativeIntEditor.java
-3649786395b ./libjava/gnu/java/beans/editors/NativeLongEditor.java
-2388248931b ./libjava/gnu/java/beans/editors/NativeShortEditor.java
- 84373625b ./libjava/gnu/java/beans/editors/StringEditor.java
-1050980841b ./libjava/gnu/java/beans/EmptyBeanInfo.java
-4274204668b ./libjava/gnu/java/beans/ExplicitBeanInfo.java
-3309737548b ./libjava/gnu/java/beans/info/ComponentBeanInfo.java
-2859546207b ./libjava/gnu/java/beans/IntrospectionIncubator.java
-1517826185b ./libjava/gnu/java/io/ClassLoaderObjectInputStream.java
- 185400995b ./libjava/gnu/java/io/NullOutputStream.java
- 337775204b ./libjava/gnu/java/io/ObjectIdentityWrapper.java
- 412146955b ./libjava/gnu/java/lang/ArrayHelper.java
-1957385229b ./libjava/gnu/java/lang/CharData.java
-1294839044b ./libjava/gnu/java/lang/ClassHelper.java
- 375881807b ./libjava/gnu/java/lang/reflect/TypeSignature.java
-3366025795b ./libjava/gnu/java/locale/Calendar_de.java
-3838960820b ./libjava/gnu/java/locale/Calendar_en.java
-3367817123b ./libjava/gnu/java/locale/Calendar.java
-2827383186b ./libjava/gnu/java/locale/Calendar_nl.java
- 853990452b ./libjava/gnu/java/locale/LocaleInformation_af_ZA.java
-3574665519b ./libjava/gnu/java/locale/LocaleInformation_ar_AE.java
-1313953526b ./libjava/gnu/java/locale/LocaleInformation_ar_BH.java
-1063099118b ./libjava/gnu/java/locale/LocaleInformation_ar_DZ.java
-2661355701b ./libjava/gnu/java/locale/LocaleInformation_ar_EG.java
- 792384655b ./libjava/gnu/java/locale/LocaleInformation_ar_IN.java
-2984374613b ./libjava/gnu/java/locale/LocaleInformation_ar_IQ.java
- 149108303b ./libjava/gnu/java/locale/LocaleInformation_ar_JO.java
-3524478720b ./libjava/gnu/java/locale/LocaleInformation_ar_KW.java
- 83370893b ./libjava/gnu/java/locale/LocaleInformation_ar_LB.java
-3602937944b ./libjava/gnu/java/locale/LocaleInformation_ar_LY.java
-4151428411b ./libjava/gnu/java/locale/LocaleInformation_ar_MA.java
-4074629453b ./libjava/gnu/java/locale/LocaleInformation_ar_OM.java
-4155901603b ./libjava/gnu/java/locale/LocaleInformation_ar_QA.java
-2390802667b ./libjava/gnu/java/locale/LocaleInformation_ar_SD.java
- 658870558b ./libjava/gnu/java/locale/LocaleInformation_ar_SY.java
- 633628430b ./libjava/gnu/java/locale/LocaleInformation_ar_TN.java
-3417988329b ./libjava/gnu/java/locale/LocaleInformation_ar_YE.java
- 16694947b ./libjava/gnu/java/locale/LocaleInformation_be_BY.java
-2893823739b ./libjava/gnu/java/locale/LocaleInformation_bn_IN.java
-3473497973b ./libjava/gnu/java/locale/LocaleInformation_br_FR.java
-2011654773b ./libjava/gnu/java/locale/LocaleInformation_bs_BA.java
- 703208961b ./libjava/gnu/java/locale/LocaleInformation_ca_ES.java
-3606272911b ./libjava/gnu/java/locale/LocaleInformation_cs_CZ.java
-3029808974b ./libjava/gnu/java/locale/LocaleInformation_cy_GB.java
-3138806717b ./libjava/gnu/java/locale/LocaleInformation_da_DK.java
- 660397810b ./libjava/gnu/java/locale/LocaleInformation_de_AT.java
-2697869622b ./libjava/gnu/java/locale/LocaleInformation_de_BE.java
-1184133602b ./libjava/gnu/java/locale/LocaleInformation_de_CH.java
-2039543804b ./libjava/gnu/java/locale/LocaleInformation_de_DE.java
-1896252461b ./libjava/gnu/java/locale/LocaleInformation_de.java
-1754963126b ./libjava/gnu/java/locale/LocaleInformation_de_LU.java
-1950789713b ./libjava/gnu/java/locale/LocaleInformation_el_GR.java
-3105733407b ./libjava/gnu/java/locale/LocaleInformation_en_AU.java
-1645688637b ./libjava/gnu/java/locale/LocaleInformation_en_BW.java
-1552823020b ./libjava/gnu/java/locale/LocaleInformation_en_CA.java
-1224627615b ./libjava/gnu/java/locale/LocaleInformation_en_DK.java
-1660785124b ./libjava/gnu/java/locale/LocaleInformation_en_GB.java
-3654129156b ./libjava/gnu/java/locale/LocaleInformation_en_HK.java
-1423793734b ./libjava/gnu/java/locale/LocaleInformation_en_IE.java
-3034389835b ./libjava/gnu/java/locale/LocaleInformation_en_IN.java
-1639156831b ./libjava/gnu/java/locale/LocaleInformation_en.java
-4146466217b ./libjava/gnu/java/locale/LocaleInformation_en_NZ.java
-2700111700b ./libjava/gnu/java/locale/LocaleInformation_en_PH.java
-1734741103b ./libjava/gnu/java/locale/LocaleInformation_en_SG.java
-3123474486b ./libjava/gnu/java/locale/LocaleInformation_en_US.java
-1439333667b ./libjava/gnu/java/locale/LocaleInformation_en_ZA.java
- 835156286b ./libjava/gnu/java/locale/LocaleInformation_en_ZW.java
-3007131568b ./libjava/gnu/java/locale/LocaleInformation_es_AR.java
-3464689606b ./libjava/gnu/java/locale/LocaleInformation_es_BO.java
-2989224997b ./libjava/gnu/java/locale/LocaleInformation_es_CL.java
- 308487454b ./libjava/gnu/java/locale/LocaleInformation_es_CO.java
-1200270410b ./libjava/gnu/java/locale/LocaleInformation_es_CR.java
-1068207106b ./libjava/gnu/java/locale/LocaleInformation_es_DO.java
- 14677377b ./libjava/gnu/java/locale/LocaleInformation_es_EC.java
-3508510841b ./libjava/gnu/java/locale/LocaleInformation_es_ES.java
- 649064556b ./libjava/gnu/java/locale/LocaleInformation_es_GT.java
-3444054086b ./libjava/gnu/java/locale/LocaleInformation_es_HN.java
-3555909696b ./libjava/gnu/java/locale/LocaleInformation_es_MX.java
-2833308305b ./libjava/gnu/java/locale/LocaleInformation_es_NI.java
-4174396920b ./libjava/gnu/java/locale/LocaleInformation_es_PA.java
- 838660172b ./libjava/gnu/java/locale/LocaleInformation_es_PE.java
-3589446087b ./libjava/gnu/java/locale/LocaleInformation_es_PR.java
-4075678248b ./libjava/gnu/java/locale/LocaleInformation_es_PY.java
-2329208913b ./libjava/gnu/java/locale/LocaleInformation_es_SV.java
-2413424051b ./libjava/gnu/java/locale/LocaleInformation_es_US.java
-2571158522b ./libjava/gnu/java/locale/LocaleInformation_es_UY.java
-3961724338b ./libjava/gnu/java/locale/LocaleInformation_es_VE.java
-1652877014b ./libjava/gnu/java/locale/LocaleInformation_et_EE.java
-1998932970b ./libjava/gnu/java/locale/LocaleInformation_eu_ES.java
-1225517253b ./libjava/gnu/java/locale/LocaleInformation_fa_IR.java
-4095933109b ./libjava/gnu/java/locale/LocaleInformation_fi_FI.java
-4260527638b ./libjava/gnu/java/locale/LocaleInformation_fo_FO.java
- 313030804b ./libjava/gnu/java/locale/LocaleInformation_fr_BE.java
- 929726634b ./libjava/gnu/java/locale/LocaleInformation_fr_CA.java
-3560295796b ./libjava/gnu/java/locale/LocaleInformation_fr_CH.java
-1651927254b ./libjava/gnu/java/locale/LocaleInformation_fr_FR.java
-1770965918b ./libjava/gnu/java/locale/LocaleInformation_fr_LU.java
-2930632457b ./libjava/gnu/java/locale/LocaleInformation_ga_IE.java
-3764917948b ./libjava/gnu/java/locale/LocaleInformation_gd_GB.java
- 184397736b ./libjava/gnu/java/locale/LocaleInformation_gl_ES.java
-4075108403b ./libjava/gnu/java/locale/LocaleInformation_gv_GB.java
-3671687849b ./libjava/gnu/java/locale/LocaleInformation_he_IL.java
-1551837931b ./libjava/gnu/java/locale/LocaleInformation_hi_IN.java
-2876691276b ./libjava/gnu/java/locale/LocaleInformation_hr_HR.java
-2174207126b ./libjava/gnu/java/locale/LocaleInformation_hu_HU.java
-2936636022b ./libjava/gnu/java/locale/LocaleInformation_id_ID.java
- 679304833b ./libjava/gnu/java/locale/LocaleInformation_it_CH.java
-2288758679b ./libjava/gnu/java/locale/LocaleInformation_it_IT.java
-1670529133b ./libjava/gnu/java/locale/LocaleInformation_iw_IL.java
-4285275820b ./libjava/gnu/java/locale/LocaleInformation_ja_JP.java
- 88782889b ./libjava/gnu/java/locale/LocaleInformation.java
- 305209674b ./libjava/gnu/java/locale/LocaleInformation_ka_GE.java
- 289636212b ./libjava/gnu/java/locale/LocaleInformation_kl_GL.java
-3381743821b ./libjava/gnu/java/locale/LocaleInformation_ko_KR.java
-1243496183b ./libjava/gnu/java/locale/LocaleInformation_kw_GB.java
- 808874315b ./libjava/gnu/java/locale/LocaleInformation_lt_LT.java
-3825187332b ./libjava/gnu/java/locale/LocaleInformation_lv_LV.java
-3084880379b ./libjava/gnu/java/locale/LocaleInformation_mi_NZ.java
-1118828067b ./libjava/gnu/java/locale/LocaleInformation_mk_MK.java
-3470919889b ./libjava/gnu/java/locale/LocaleInformation_mr_IN.java
-3011395902b ./libjava/gnu/java/locale/LocaleInformation_mt_MT.java
-3941557872b ./libjava/gnu/java/locale/LocaleInformation_nl_BE.java
- 803932216b ./libjava/gnu/java/locale/LocaleInformation_nl.java
-2192944115b ./libjava/gnu/java/locale/LocaleInformation_nl_NL.java
- 171051379b ./libjava/gnu/java/locale/LocaleInformation_nn_NO.java
-1581832797b ./libjava/gnu/java/locale/LocaleInformation_no_NO.java
-1219732943b ./libjava/gnu/java/locale/LocaleInformation_oc_FR.java
-2114116519b ./libjava/gnu/java/locale/LocaleInformation_pl_PL.java
-1296721389b ./libjava/gnu/java/locale/LocaleInformation_pt_BR.java
- 532295687b ./libjava/gnu/java/locale/LocaleInformation_pt_PT.java
-3905012288b ./libjava/gnu/java/locale/LocaleInformation_ro_RO.java
-2891469302b ./libjava/gnu/java/locale/LocaleInformation_ru_RU.java
-2211921262b ./libjava/gnu/java/locale/LocaleInformation_ru_UA.java
-2154597673b ./libjava/gnu/java/locale/LocaleInformation_se_NO.java
-1657728755b ./libjava/gnu/java/locale/LocaleInformation_sk_SK.java
-4026231879b ./libjava/gnu/java/locale/LocaleInformation_sl_SI.java
-2922727788b ./libjava/gnu/java/locale/LocaleInformation_sq_AL.java
-3806137820b ./libjava/gnu/java/locale/LocaleInformation_sr_YU.java
-1835499757b ./libjava/gnu/java/locale/LocaleInformation_sv_FI.java
-1350098382b ./libjava/gnu/java/locale/LocaleInformation_sv_SE.java
- 189094633b ./libjava/gnu/java/locale/LocaleInformation_ta_IN.java
-2178333634b ./libjava/gnu/java/locale/LocaleInformation_te_IN.java
-2564074117b ./libjava/gnu/java/locale/LocaleInformation_tg_TJ.java
-1155895744b ./libjava/gnu/java/locale/LocaleInformation_tl_PH.java
-2362053980b ./libjava/gnu/java/locale/LocaleInformation_tr_TR.java
-1718823447b ./libjava/gnu/java/locale/LocaleInformation_uk_UA.java
-3861809213b ./libjava/gnu/java/locale/LocaleInformation_ur_PK.java
- 3380107b ./libjava/gnu/java/locale/LocaleInformation_uz_UZ.java
-1701278586b ./libjava/gnu/java/locale/LocaleInformation_vi_VN.java
-1606209787b ./libjava/gnu/java/locale/LocaleInformation_yi_US.java
-2421213319b ./libjava/gnu/java/locale/LocaleInformation_zh_CN.java
- 183615398b ./libjava/gnu/java/locale/LocaleInformation_zh_HK.java
-1075516168b ./libjava/gnu/java/locale/LocaleInformation_zh_SG.java
-3357709537b ./libjava/gnu/java/locale/LocaleInformation_zh_TW.java
-3391912438b ./libjava/gnu/java/math/MPN.java
-4169108228b ./libjava/gnu/java/rmi/dgc/DGCImpl.java
-4171280577b ./libjava/gnu/java/rmi/dgc/DGCImpl_Skel.java
-1424132902b ./libjava/gnu/java/rmi/dgc/DGCImpl_Stub.java
-1371885502b ./libjava/gnu/java/rmi/registry/RegistryImpl.java
- 583279947b ./libjava/gnu/java/rmi/registry/RegistryImpl_Skel.java
- 44985979b ./libjava/gnu/java/rmi/registry/RegistryImpl_Stub.java
-3466229248b ./libjava/gnu/java/rmi/rmic/Compile_gcj.java
-2495154954b ./libjava/gnu/java/rmi/rmic/Compiler.java
-2850269889b ./libjava/gnu/java/rmi/rmic/CompilerProcess.java
-4019537723b ./libjava/gnu/java/rmi/rmic/RMIC.java
- 634294081b ./libjava/gnu/java/rmi/rmic/TabbedWriter.java
-2494884681b ./libjava/gnu/java/rmi/server/ProtocolConstants.java
-1676680003b ./libjava/gnu/java/rmi/server/RMIDefaultSocketFactory.java
-2333110819b ./libjava/gnu/java/rmi/server/RMIHashes.java
- 742398258b ./libjava/gnu/java/rmi/server/RMIObjectInputStream.java
-1754833006b ./libjava/gnu/java/rmi/server/RMIObjectOutputStream.java
-3598051261b ./libjava/gnu/java/rmi/server/UnicastConnection.java
-2756896208b ./libjava/gnu/java/rmi/server/UnicastConnectionManager.java
-1237410073b ./libjava/gnu/java/rmi/server/UnicastRef.java
- 764069575b ./libjava/gnu/java/rmi/server/UnicastRemoteCall.java
-2008823240b ./libjava/gnu/java/rmi/server/UnicastRemoteStub.java
-2722838441b ./libjava/gnu/java/rmi/server/UnicastServer.java
-3552747973b ./libjava/gnu/java/rmi/server/UnicastServerRef.java
- 841643156b ./libjava/gnu/java/security/provider/DefaultPolicy.java
- 663745795b ./libjava/gnu/java/security/provider/Gnu.java
-1021717986b ./libjava/gnu/java/security/provider/SHA1PRNG.java
-2413849314b ./libjava/gnu/java/security/provider/SHA.java
-1289725769b ./libjava/gnu/java/text/BaseBreakIterator.java
-3390709828b ./libjava/gnu/java/text/CharacterBreakIterator.java
-1407853328b ./libjava/gnu/java/text/LineBreakIterator.java
-2384000550b ./libjava/gnu/java/text/SentenceBreakIterator.java
-1103805396b ./libjava/gnu/java/text/WordBreakIterator.java
-3820369931b ./libjava/gnu/java/util/DoubleEnumeration.java
-1487334009b ./libjava/HACKING
- 264180982b ./libjava/include/boehm-gc.h
-2986199884b ./libjava/include/config.h.in
-1108817619b ./libjava/include/default-signal.h
- 833024369b ./libjava/include/dwarf2-signal.h
-1283777735b ./libjava/include/i386-signal.h
- 590982531b ./libjava/include/java-assert.h
- 890969256b ./libjava/include/java-chardecomp.h
-3721703006b ./libjava/include/java-chartables.h
- 11772111b ./libjava/include/java-cpool.h
-2197729359b ./libjava/include/java-insns.h
-1956488254b ./libjava/include/java-interp.h
- 770850052b ./libjava/include/java-props.h
-4043128117b ./libjava/include/jni.h
-1917986290b ./libjava/include/jvm.h
-1398877611b ./libjava/include/jvmpi.h
-2049405362b ./libjava/include/Makefile.am
-2861273894b ./libjava/include/Makefile.in
-1055189824b ./libjava/include/name-finder.h
- 528567171b ./libjava/include/no-gc.h
-2243083888b ./libjava/include/no-threads.h
-1563983297b ./libjava/include/posix.h
-2807487107b ./libjava/include/posix-threads.h
-1012702888b ./libjava/include/sparc-signal.h
- 216805921b ./libjava/include/stamp-h.in
- 976467848b ./libjava/include/win32.h
-2649356437b ./libjava/include/win32-signal.h
-2413743549b ./libjava/include/win32-threads.h
-3593727190b ./libjava/interpret.cc
-1953201146b ./libjava/java/applet/AppletContext.java
-2958027378b ./libjava/java/applet/Applet.java
-2731140101b ./libjava/java/applet/AppletStub.java
-3593095746b ./libjava/java/applet/AudioClip.java
- 160993819b ./libjava/java/awt/ActiveEvent.java
-3526070699b ./libjava/java/awt/Adjustable.java
-1157609128b ./libjava/java/awt/AWTError.java
- 111816746b ./libjava/java/awt/AWTEvent.java
-4165999385b ./libjava/java/awt/AWTEventMulticaster.java
- 825557229b ./libjava/java/awt/AWTException.java
- 285605791b ./libjava/java/awt/AWTPermission.java
-3534694635b ./libjava/java/awt/BorderLayout.java
-1398395335b ./libjava/java/awt/Button.java
-3153758342b ./libjava/java/awt/Canvas.java
-2092554577b ./libjava/java/awt/CardLayout.java
-2084690368b ./libjava/java/awt/CheckboxGroup.java
-2248202942b ./libjava/java/awt/Checkbox.java
-1349721036b ./libjava/java/awt/CheckboxMenuItem.java
-1888831652b ./libjava/java/awt/Choice.java
-1282085816b ./libjava/java/awt/color/ColorSpace.java
-2276155610b ./libjava/java/awt/color/ICC_ColorSpace.java
-4017444258b ./libjava/java/awt/color/ICC_Profile.java
-1705431914b ./libjava/java/awt/Color.java
-1148661590b ./libjava/java/awt/Component.java
- 361324264b ./libjava/java/awt/ComponentOrientation.java
-2162499700b ./libjava/java/awt/Container.java
-4143803538b ./libjava/java/awt/Cursor.java
- 275075726b ./libjava/java/awt/datatransfer/Clipboard.java
-4070519256b ./libjava/java/awt/datatransfer/ClipboardOwner.java
- 61459584b ./libjava/java/awt/datatransfer/DataFlavor.java
- 783509723b ./libjava/java/awt/datatransfer/FlavorMap.java
- 579142958b ./libjava/java/awt/datatransfer/MimeTypeParseException.java
- 253155729b ./libjava/java/awt/datatransfer/StringSelection.java
- 219256387b ./libjava/java/awt/datatransfer/SystemFlavorMap.java
-1647430043b ./libjava/java/awt/datatransfer/Transferable.java
-1851200747b ./libjava/java/awt/datatransfer/UnsupportedFlavorException.java
-3031261269b ./libjava/java/awt/Dialog.java
-2683530461b ./libjava/java/awt/Dimension.java
- 722690297b ./libjava/java/awt/event/ActionEvent.java
-1915593531b ./libjava/java/awt/event/ActionListener.java
-3892890048b ./libjava/java/awt/event/AdjustmentEvent.java
- 463745915b ./libjava/java/awt/event/AdjustmentListener.java
-3809396958b ./libjava/java/awt/event/AWTEventListener.java
-2557579579b ./libjava/java/awt/event/ComponentAdapter.java
-3039204703b ./libjava/java/awt/event/ComponentEvent.java
- 360564300b ./libjava/java/awt/event/ComponentListener.java
- 810761210b ./libjava/java/awt/event/ContainerAdapter.java
-2468937091b ./libjava/java/awt/event/ContainerEvent.java
- 95255207b ./libjava/java/awt/event/ContainerListener.java
- 483492170b ./libjava/java/awt/EventDispatchThread.java
-1865939252b ./libjava/java/awt/event/FocusAdapter.java
- 934630871b ./libjava/java/awt/event/FocusEvent.java
-4001635571b ./libjava/java/awt/event/FocusListener.java
-4282322346b ./libjava/java/awt/event/HierarchyBoundsAdapter.java
-2758355953b ./libjava/java/awt/event/HierarchyBoundsListener.java
-2116272606b ./libjava/java/awt/event/HierarchyEvent.java
-2771680955b ./libjava/java/awt/event/HierarchyListener.java
- 702145522b ./libjava/java/awt/event/InputEvent.java
- 726380493b ./libjava/java/awt/event/InputMethodEvent.java
-4033049562b ./libjava/java/awt/event/InputMethodListener.java
-1843469307b ./libjava/java/awt/event/InvocationEvent.java
-3611652050b ./libjava/java/awt/event/ItemEvent.java
-3300913656b ./libjava/java/awt/event/ItemListener.java
-1493568122b ./libjava/java/awt/Event.java
-1564566587b ./libjava/java/awt/event/KeyAdapter.java
-3711723317b ./libjava/java/awt/event/KeyEvent.java
-1381805491b ./libjava/java/awt/event/KeyListener.java
-2313273360b ./libjava/java/awt/event/MouseAdapter.java
-2126050085b ./libjava/java/awt/event/MouseEvent.java
-1649544172b ./libjava/java/awt/event/MouseListener.java
-1060229023b ./libjava/java/awt/event/MouseMotionAdapter.java
-1773953094b ./libjava/java/awt/event/MouseMotionListener.java
- 560349420b ./libjava/java/awt/event/PaintEvent.java
- 651462567b ./libjava/java/awt/EventQueue.java
-3023928876b ./libjava/java/awt/event/TextEvent.java
-2239555241b ./libjava/java/awt/event/TextListener.java
-2939336909b ./libjava/java/awt/event/WindowAdapter.java
-3033208050b ./libjava/java/awt/event/WindowEvent.java
-1930937502b ./libjava/java/awt/event/WindowListener.java
-1194915480b ./libjava/java/awt/FileDialog.java
-3367824178b ./libjava/java/awt/FlowLayout.java
-1157240010b ./libjava/java/awt/Font.java
- 484873117b ./libjava/java/awt/FontMetrics.java
-1144124992b ./libjava/java/awt/Frame.java
-2545826257b ./libjava/java/awt/geom/AffineTransform.java
-4013428113b ./libjava/java/awt/geom/Dimension2D.java
-4073501358b ./libjava/java/awt/geom/Ellipse2D.java
-2790798005b ./libjava/java/awt/geom/IllegalPathStateException.java
- 400349421b ./libjava/java/awt/geom/Line2D.java
-1253586302b ./libjava/java/awt/geom/NoninvertibleTransformException.java
-1513833568b ./libjava/java/awt/geom/PathIterator.java
-3208068889b ./libjava/java/awt/geom/Point2D.java
-1401543311b ./libjava/java/awt/geom/Rectangle2D.java
-1140671299b ./libjava/java/awt/geom/RectangularShape.java
-3886036733b ./libjava/java/awt/geom/RoundRectangle2D.java
-3811561912b ./libjava/java/awt/Graphics2D.java
- 986514240b ./libjava/java/awt/GraphicsConfiguration.java
-2012998318b ./libjava/java/awt/Graphics.java
-2629743040b ./libjava/java/awt/GridBagConstraints.java
-2079310366b ./libjava/java/awt/GridLayout.java
- 681353006b ./libjava/java/awt/IllegalComponentStateException.java
-2039150620b ./libjava/java/awt/image/AreaAveragingScaleFilter.java
- 47278745b ./libjava/java/awt/image/BufferedImage.java
- 897500197b ./libjava/java/awt/image/ColorModel.java
- 109440071b ./libjava/java/awt/image/ComponentColorModel.java
-1906201349b ./libjava/java/awt/image/ComponentSampleModel.java
-3384911687b ./libjava/java/awt/image/CropImageFilter.java
-3465530846b ./libjava/java/awt/image/DataBufferByte.java
-4075525464b ./libjava/java/awt/image/DataBufferInt.java
- 634855604b ./libjava/java/awt/image/DataBuffer.java
-3095543468b ./libjava/java/awt/image/DataBufferUShort.java
-1806419668b ./libjava/java/awt/image/DirectColorModel.java
-3631042426b ./libjava/java/awt/image/FilteredImageSource.java
-2890896341b ./libjava/java/awt/image/ImageConsumer.java
-1624439520b ./libjava/java/awt/image/ImageFilter.java
-4043851738b ./libjava/java/awt/image/ImageObserver.java
-3411264349b ./libjava/java/awt/image/ImageProducer.java
-2968747135b ./libjava/java/awt/image/IndexColorModel.java
-4141700730b ./libjava/java/awt/Image.java
-1393501117b ./libjava/java/awt/image/MemoryImageSource.java
-1585332925b ./libjava/java/awt/image/PackedColorModel.java
-1331801894b ./libjava/java/awt/image/PixelGrabber.java
-1883441019b ./libjava/java/awt/image/Raster.java
- 869369986b ./libjava/java/awt/image/RasterOp.java
-3510533440b ./libjava/java/awt/image/ReplicateScaleFilter.java
-4052348878b ./libjava/java/awt/image/RGBImageFilter.java
-1652657911b ./libjava/java/awt/image/SampleModel.java
-2512892899b ./libjava/java/awt/image/SinglePixelPackedSampleModel.java
- 4567438b ./libjava/java/awt/image/WritableRaster.java
- 4084426b ./libjava/java/awt/Insets.java
-3129189005b ./libjava/java/awt/ItemSelectable.java
-1439045277b ./libjava/java/awt/Label.java
-3544278012b ./libjava/java/awt/LayoutManager2.java
-2458754937b ./libjava/java/awt/LayoutManager.java
-2578681493b ./libjava/java/awt/List.java
-4032096533b ./libjava/java/awt/MediaTracker.java
-3704860539b ./libjava/java/awt/MenuBar.java
-1793267135b ./libjava/java/awt/MenuComponent.java
-3297700167b ./libjava/java/awt/MenuContainer.java
- 641743542b ./libjava/java/awt/MenuItem.java
-2620146298b ./libjava/java/awt/Menu.java
-2408918380b ./libjava/java/awt/MenuShortcut.java
-3861110754b ./libjava/java/awt/PaintContext.java
-2127085069b ./libjava/java/awt/Paint.java
-3663039317b ./libjava/java/awt/Panel.java
-1611158274b ./libjava/java/awt/peer/ButtonPeer.java
-1171238008b ./libjava/java/awt/peer/CanvasPeer.java
- 483129233b ./libjava/java/awt/peer/CheckboxMenuItemPeer.java
-1055872542b ./libjava/java/awt/peer/CheckboxPeer.java
-2176941064b ./libjava/java/awt/peer/ChoicePeer.java
-1485974642b ./libjava/java/awt/peer/ComponentPeer.java
- 385477645b ./libjava/java/awt/peer/ContainerPeer.java
-1630111979b ./libjava/java/awt/peer/DialogPeer.java
-3476723069b ./libjava/java/awt/peer/FileDialogPeer.java
-1821313126b ./libjava/java/awt/peer/FontPeer.java
-2885509310b ./libjava/java/awt/peer/FramePeer.java
-1219267739b ./libjava/java/awt/peer/LabelPeer.java
- 542666273b ./libjava/java/awt/peer/LightweightPeer.java
-2680629684b ./libjava/java/awt/peer/ListPeer.java
- 721644029b ./libjava/java/awt/peer/MenuBarPeer.java
-1694400788b ./libjava/java/awt/peer/MenuComponentPeer.java
-2412205583b ./libjava/java/awt/peer/MenuItemPeer.java
-2144114987b ./libjava/java/awt/peer/MenuPeer.java
-3010921620b ./libjava/java/awt/peer/PanelPeer.java
-3378714445b ./libjava/java/awt/peer/PopupMenuPeer.java
-2932476036b ./libjava/java/awt/peer/ScrollbarPeer.java
- 921008058b ./libjava/java/awt/peer/ScrollPanePeer.java
-4184845888b ./libjava/java/awt/peer/TextAreaPeer.java
-1984969162b ./libjava/java/awt/peer/TextComponentPeer.java
-3129312744b ./libjava/java/awt/peer/TextFieldPeer.java
-2230435871b ./libjava/java/awt/peer/WindowPeer.java
-2267781966b ./libjava/java/awt/Point.java
-2495677833b ./libjava/java/awt/Polygon.java
- 931171809b ./libjava/java/awt/PopupMenu.java
-2031272343b ./libjava/java/awt/PrintGraphics.java
-2842009822b ./libjava/java/awt/PrintJob.java
-1514649029b ./libjava/java/awt/Rectangle.java
-3814610113b ./libjava/java/awt/RenderingHints.java
-1642159056b ./libjava/java/awt/Scrollbar.java
-3117778311b ./libjava/java/awt/ScrollPane.java
-2074345175b ./libjava/java/awt/Shape.java
-1158345737b ./libjava/java/awt/SystemColor.java
-3469060179b ./libjava/java/awt/TextArea.java
- 725438430b ./libjava/java/awt/TextComponent.java
-4163002735b ./libjava/java/awt/TextField.java
-1661689740b ./libjava/java/awt/Toolkit.java
-3337245196b ./libjava/java/awt/Transparency.java
-2530618234b ./libjava/java/awt/Window.java
-1515366999b ./libjava/java/beans/AppletInitializer.java
-2669908550b ./libjava/java/beans/beancontext/BeanContextChildComponentProxy.java
-1680972619b ./libjava/java/beans/beancontext/BeanContextChild.java
-1680093002b ./libjava/java/beans/beancontext/BeanContextChildSupport.java
-1094587434b ./libjava/java/beans/beancontext/BeanContextContainerProxy.java
-1135449293b ./libjava/java/beans/beancontext/BeanContextEvent.java
-2767542609b ./libjava/java/beans/beancontext/BeanContext.java
- 242862210b ./libjava/java/beans/beancontext/BeanContextMembershipEvent.java
-2481552408b ./libjava/java/beans/beancontext/BeanContextMembershipListener.java
-2023778890b ./libjava/java/beans/beancontext/BeanContextProxy.java
-3567375214b ./libjava/java/beans/beancontext/BeanContextServiceAvailableEvent.java
-1524483334b ./libjava/java/beans/beancontext/BeanContextServiceProviderBeanInfo.java
-2290646255b ./libjava/java/beans/beancontext/BeanContextServiceProvider.java
-3486010592b ./libjava/java/beans/beancontext/BeanContextServiceRevokedEvent.java
-1792611913b ./libjava/java/beans/beancontext/BeanContextServiceRevokedListener.java
- 172300183b ./libjava/java/beans/beancontext/BeanContextServices.java
- 649450665b ./libjava/java/beans/beancontext/BeanContextServicesListener.java
-1833441000b ./libjava/java/beans/BeanDescriptor.java
-1195953294b ./libjava/java/beans/BeanInfo.java
- 744629114b ./libjava/java/beans/Beans.java
-2117723836b ./libjava/java/beans/Customizer.java
-1994194050b ./libjava/java/beans/DesignMode.java
-3820662012b ./libjava/java/beans/EventSetDescriptor.java
-4125494981b ./libjava/java/beans/FeatureDescriptor.java
-1047826036b ./libjava/java/beans/IndexedPropertyDescriptor.java
-2875985243b ./libjava/java/beans/IntrospectionException.java
-1848432301b ./libjava/java/beans/Introspector.java
- 649392727b ./libjava/java/beans/MethodDescriptor.java
-3829002128b ./libjava/java/beans/ParameterDescriptor.java
-1516690242b ./libjava/java/beans/PropertyChangeEvent.java
- 469117173b ./libjava/java/beans/PropertyChangeListener.java
- 703973953b ./libjava/java/beans/PropertyChangeSupport.java
-2757753208b ./libjava/java/beans/PropertyDescriptor.java
- 199700315b ./libjava/java/beans/PropertyEditor.java
-1782408506b ./libjava/java/beans/PropertyEditorManager.java
-1820268780b ./libjava/java/beans/PropertyEditorSupport.java
-4007301740b ./libjava/java/beans/PropertyVetoException.java
-2552578115b ./libjava/java/beans/SimpleBeanInfo.java
-1050530153b ./libjava/java/beans/VetoableChangeListener.java
- 292324922b ./libjava/java/beans/VetoableChangeSupport.java
-1473289197b ./libjava/java/beans/Visibility.java
- 200470800b ./libjava/java/io/BufferedInputStream.java
- 369879890b ./libjava/java/io/BufferedOutputStream.java
-2577191356b ./libjava/java/io/BufferedReader.java
-1491845880b ./libjava/java/io/BufferedWriter.java
-3804278996b ./libjava/java/io/ByteArrayInputStream.java
- 200503157b ./libjava/java/io/ByteArrayOutputStream.java
-1595495810b ./libjava/java/io/CharArrayReader.java
- 926602239b ./libjava/java/io/CharArrayWriter.java
-2789582151b ./libjava/java/io/CharConversionException.java
- 833277233b ./libjava/java/io/DataInput.java
- 634383556b ./libjava/java/io/DataInputStream.java
-2779752650b ./libjava/java/io/DataOutput.java
-2879044799b ./libjava/java/io/DataOutputStream.java
-3063714856b ./libjava/java/io/EOFException.java
-1517492329b ./libjava/java/io/Externalizable.java
-3546628049b ./libjava/java/io/FileDescriptor.java
-3092690903b ./libjava/java/io/FileFilter.java
-3304954915b ./libjava/java/io/FileInputStream.java
-3923475116b ./libjava/java/io/File.java
- 57206385b ./libjava/java/io/FilenameFilter.java
-1122350410b ./libjava/java/io/FileNotFoundException.java
- 493183800b ./libjava/java/io/FileOutputStream.java
-4203170751b ./libjava/java/io/FilePermission.java
- 480136026b ./libjava/java/io/FileReader.java
-3272147344b ./libjava/java/io/FileWriter.java
- 491642459b ./libjava/java/io/FilterInputStream.java
-3572067476b ./libjava/java/io/FilterOutputStream.java
- 834480594b ./libjava/java/io/FilterReader.java
- 805331833b ./libjava/java/io/FilterWriter.java
-1021426083b ./libjava/java/io/InputStream.java
- 529146689b ./libjava/java/io/InputStreamReader.java
-2158134143b ./libjava/java/io/InterruptedIOException.java
-2959384144b ./libjava/java/io/InvalidClassException.java
-2711688958b ./libjava/java/io/InvalidObjectException.java
-1797218177b ./libjava/java/io/IOException.java
-2297659773b ./libjava/java/io/LineNumberInputStream.java
-1977393201b ./libjava/java/io/LineNumberReader.java
-1763600901b ./libjava/java/io/natFileDescriptorEcos.cc
- 50298342b ./libjava/java/io/natFileDescriptorPosix.cc
- 645547190b ./libjava/java/io/natFileDescriptorWin32.cc
- 438765382b ./libjava/java/io/natFilePosix.cc
-4215574494b ./libjava/java/io/natFileWin32.cc
-2701462559b ./libjava/java/io/natObjectInputStream.cc
-4239505089b ./libjava/java/io/natObjectOutputStream.cc
- 356981144b ./libjava/java/io/NotActiveException.java
- 296825781b ./libjava/java/io/NotSerializableException.java
-3695857432b ./libjava/java/io/ObjectInput.java
-2999285723b ./libjava/java/io/ObjectInputStream.java
-1835600781b ./libjava/java/io/ObjectInputValidation.java
- 601064657b ./libjava/java/io/ObjectOutput.java
- 839357625b ./libjava/java/io/ObjectOutputStream.java
- 758370469b ./libjava/java/io/ObjectStreamClass.java
-3828010025b ./libjava/java/io/ObjectStreamConstants.java
-1279521507b ./libjava/java/io/ObjectStreamException.java
-3088927270b ./libjava/java/io/ObjectStreamField.java
-2743734189b ./libjava/java/io/OptionalDataException.java
-3053819886b ./libjava/java/io/OutputStream.java
-1432753727b ./libjava/java/io/OutputStreamWriter.java
-3611790327b ./libjava/java/io/PipedInputStream.java
-2982069551b ./libjava/java/io/PipedOutputStream.java
-3065379959b ./libjava/java/io/PipedReader.java
-4173881044b ./libjava/java/io/PipedWriter.java
-1146852699b ./libjava/java/io/PrintStream.java
- 569978908b ./libjava/java/io/PrintWriter.java
-1369338935b ./libjava/java/io/PushbackInputStream.java
-2210002535b ./libjava/java/io/PushbackReader.java
-3411632522b ./libjava/java/io/RandomAccessFile.java
-3147885412b ./libjava/java/io/Reader.java
- 978743808b ./libjava/java/io/SequenceInputStream.java
-1322946837b ./libjava/java/io/Serializable.java
- 745751528b ./libjava/java/io/SerializablePermission.java
- 750070673b ./libjava/java/io/StreamCorruptedException.java
- 949081819b ./libjava/java/io/StreamTokenizer.java
-1180454189b ./libjava/java/io/StringBufferInputStream.java
-3179611106b ./libjava/java/io/StringReader.java
-2031479671b ./libjava/java/io/StringWriter.java
-1480215451b ./libjava/java/io/SyncFailedException.java
- 616805431b ./libjava/java/io/UnsupportedEncodingException.java
-2698018036b ./libjava/java/io/UTFDataFormatException.java
-2719928003b ./libjava/java/io/WriteAbortedException.java
-3470521880b ./libjava/java/io/Writer.java
-4090106463b ./libjava/java/lang/AbstractMethodError.java
-3425188680b ./libjava/java/lang/ArithmeticException.java
-3115671720b ./libjava/java/lang/ArrayIndexOutOfBoundsException.java
-1373410447b ./libjava/java/lang/ArrayStoreException.java
-2983258460b ./libjava/java/lang/Boolean.java
-4251066809b ./libjava/java/lang/Byte.java
-3322445246b ./libjava/java/lang/Character.java
-3632753519b ./libjava/java/lang/CharSequence.java
-3914593902b ./libjava/java/lang/ClassCastException.java
-2018649547b ./libjava/java/lang/ClassCircularityError.java
-1262342693b ./libjava/java/lang/ClassFormatError.java
- 553573251b ./libjava/java/lang/Class.h
-3641057162b ./libjava/java/lang/Class.java
-2745405805b ./libjava/java/lang/ClassLoader.java
- 863405399b ./libjava/java/lang/ClassNotFoundException.java
- 524108559b ./libjava/java/lang/Cloneable.java
-1163791317b ./libjava/java/lang/CloneNotSupportedException.java
-2017623600b ./libjava/java/lang/Comparable.java
-4154726046b ./libjava/java/lang/Compiler.java
-4246954832b ./libjava/java/lang/Double.java
-1435754341b ./libjava/java/lang/dtoa.c
- 994774164b ./libjava/java/lang/e_acos.c
-4273053537b ./libjava/java/lang/e_asin.c
-1280734317b ./libjava/java/lang/e_atan2.c
- 315782992b ./libjava/java/lang/EcosProcess.java
-2698793341b ./libjava/java/lang/e_exp.c
-3934619985b ./libjava/java/lang/e_fmod.c
-3710448655b ./libjava/java/lang/e_log.c
- 876585599b ./libjava/java/lang/e_pow.c
-3495227073b ./libjava/java/lang/e_remainder.c
-3827866584b ./libjava/java/lang/e_rem_pio2.c
- 674629591b ./libjava/java/lang/Error.java
- 351649389b ./libjava/java/lang/e_scalb.c
-4172761909b ./libjava/java/lang/e_sqrt.c
- 479874825b ./libjava/java/lang/ExceptionInInitializerError.java
-2224382764b ./libjava/java/lang/Exception.java
- 773177573b ./libjava/java/lang/fdlibm.h
-1399651516b ./libjava/java/lang/Float.java
- 969459924b ./libjava/java/lang/ieeefp.h
-1546884627b ./libjava/java/lang/IllegalAccessError.java
-2739492776b ./libjava/java/lang/IllegalAccessException.java
-1557093291b ./libjava/java/lang/IllegalArgumentException.java
-4220991068b ./libjava/java/lang/IllegalMonitorStateException.java
- 172855953b ./libjava/java/lang/IllegalStateException.java
-1303108506b ./libjava/java/lang/IllegalThreadStateException.java
- 153906896b ./libjava/java/lang/IncompatibleClassChangeError.java
- 166061792b ./libjava/java/lang/IndexOutOfBoundsException.java
-2772342819b ./libjava/java/lang/InheritableThreadLocal.java
-1458836935b ./libjava/java/lang/InstantiationError.java
- 650328562b ./libjava/java/lang/InstantiationException.java
-4120577335b ./libjava/java/lang/Integer.java
-1716407270b ./libjava/java/lang/InternalError.java
-3005393186b ./libjava/java/lang/InterruptedException.java
-2140439599b ./libjava/java/lang/k_cos.c
-2521991737b ./libjava/java/lang/k_rem_pio2.c
-1794170989b ./libjava/java/lang/k_sin.c
-2812209061b ./libjava/java/lang/k_tan.c
-1031814374b ./libjava/java/lang/LinkageError.java
-1043365864b ./libjava/java/lang/Long.java
-3228990355b ./libjava/java/lang/Math.java
-3525801158b ./libjava/java/lang/mprec.c
- 338852744b ./libjava/java/lang/mprec.h
-2041042935b ./libjava/java/lang/natCharacter.cc
-1760287660b ./libjava/java/lang/natClass.cc
-3980285264b ./libjava/java/lang/natClassLoader.cc
-3519010570b ./libjava/java/lang/natDouble.cc
-2312870767b ./libjava/java/lang/natEcosProcess.cc
- 91234316b ./libjava/java/lang/natFloat.cc
-3510482433b ./libjava/java/lang/natMath.cc
- 76124715b ./libjava/java/lang/natObject.cc
-1982998394b ./libjava/java/lang/natPosixProcess.cc
-3985207471b ./libjava/java/lang/natRuntime.cc
- 209062817b ./libjava/java/lang/natStringBuffer.cc
-4255324328b ./libjava/java/lang/natString.cc
-1182371633b ./libjava/java/lang/natSystem.cc
-1391213516b ./libjava/java/lang/natThread.cc
-1137947649b ./libjava/java/lang/natThrowable.cc
-4294967295b ./libjava/java/lang/natWin32Process.cc
- 480489940b ./libjava/java/lang/NegativeArraySizeException.java
-1147004568b ./libjava/java/lang/NoClassDefFoundError.java
-2828263392b ./libjava/java/lang/NoSuchFieldError.java
-2392659469b ./libjava/java/lang/NoSuchFieldException.java
-1339035495b ./libjava/java/lang/NoSuchMethodError.java
- 615266877b ./libjava/java/lang/NoSuchMethodException.java
-1556435959b ./libjava/java/lang/NullPointerException.java
- 899274464b ./libjava/java/lang/NumberFormatException.java
-1334794302b ./libjava/java/lang/Number.java
-3421547735b ./libjava/java/lang/Object.h
-3641470251b ./libjava/java/lang/Object.java
- 344219618b ./libjava/java/lang/OutOfMemoryError.java
-2281685049b ./libjava/java/lang/Package.java
-2357238508b ./libjava/java/lang/PosixProcess.java
-3622530025b ./libjava/java/lang/Process.java
-1863148120b ./libjava/java/lang/reflect/AccessibleObject.java
-1772289084b ./libjava/java/lang/reflect/Array.java
-1042641503b ./libjava/java/lang/reflect/Constructor.java
-2343995282b ./libjava/java/lang/reflect/Field.java
-4276731407b ./libjava/java/lang/reflect/InvocationTargetException.java
-2195316717b ./libjava/java/lang/reflect/Member.java
-3154056039b ./libjava/java/lang/reflect/Method.java
- 737811330b ./libjava/java/lang/reflect/Modifier.java
- 467850593b ./libjava/java/lang/reflect/natArray.cc
- 848571325b ./libjava/java/lang/reflect/natConstructor.cc
-2897267786b ./libjava/java/lang/reflect/natField.cc
-3433405242b ./libjava/java/lang/reflect/natMethod.cc
-3286982797b ./libjava/java/lang/reflect/ReflectPermission.java
-4262082056b ./libjava/java/lang/ref/natReference.cc
-1460247144b ./libjava/java/lang/ref/PhantomReference.java
- 704062708b ./libjava/java/lang/ref/Reference.java
- 65399149b ./libjava/java/lang/ref/ReferenceQueue.java
-3675082054b ./libjava/java/lang/ref/SoftReference.java
-4137952990b ./libjava/java/lang/ref/WeakReference.java
-3010960818b ./libjava/java/lang/Runnable.java
-1799896457b ./libjava/java/lang/RuntimeException.java
-1498739702b ./libjava/java/lang/Runtime.java
-3735977458b ./libjava/java/lang/RuntimePermission.java
-4211007333b ./libjava/java/lang/s_atan.c
-1992861509b ./libjava/java/lang/s_ceil.c
-2560516823b ./libjava/java/lang/s_copysign.c
- 138245783b ./libjava/java/lang/s_cos.c
-3082173393b ./libjava/java/lang/SecurityException.java
- 788295818b ./libjava/java/lang/SecurityManager.java
-2696927637b ./libjava/java/lang/s_fabs.c
-2861859787b ./libjava/java/lang/sf_fabs.c
-1587392745b ./libjava/java/lang/s_floor.c
-3733918551b ./libjava/java/lang/sf_rint.c
- 987059562b ./libjava/java/lang/Short.java
- 781279555b ./libjava/java/lang/s_rint.c
-1543063550b ./libjava/java/lang/s_scalbn.c
- 683141039b ./libjava/java/lang/s_sin.c
-3968168506b ./libjava/java/lang/StackOverflowError.java
-2604631654b ./libjava/java/lang/s_tan.c
-2934755101b ./libjava/java/lang/StrictMath.java
-2480138781b ./libjava/java/lang/StringBuffer.java
-4119807874b ./libjava/java/lang/StringIndexOutOfBoundsException.java
-1328413402b ./libjava/java/lang/String.java
-2159586687b ./libjava/java/lang/strtod.c
-2990987309b ./libjava/java/lang/System.java
-3910182705b ./libjava/java/lang/ThreadDeath.java
- 176223137b ./libjava/java/lang/ThreadGroup.java
-3073946400b ./libjava/java/lang/Thread.java
-2901552173b ./libjava/java/lang/ThreadLocal.java
-2728582923b ./libjava/java/lang/Throwable.java
- 402341795b ./libjava/java/lang/UnknownError.java
- 964603433b ./libjava/java/lang/UnsatisfiedLinkError.java
-1966641471b ./libjava/java/lang/UnsupportedClassVersionError.java
-3152130847b ./libjava/java/lang/UnsupportedOperationException.java
-4139089776b ./libjava/java/lang/VerifyError.java
-3680335112b ./libjava/java/lang/VirtualMachineError.java
-1734917059b ./libjava/java/lang/VMClassLoader.java
-3002073692b ./libjava/java/lang/VMSecurityManager.java
-3929414917b ./libjava/java/lang/Void.java
-2208706716b ./libjava/java/lang/w_acos.c
-2509257289b ./libjava/java/lang/w_asin.c
- 129756780b ./libjava/java/lang/w_atan2.c
-3101537020b ./libjava/java/lang/w_exp.c
-4251570485b ./libjava/java/lang/w_fmod.c
-3209764157b ./libjava/java/lang/Win32Process.java
-2517288589b ./libjava/java/lang/w_log.c
-2200179114b ./libjava/java/lang/w_pow.c
-3127225850b ./libjava/java/lang/w_remainder.c
-3084712253b ./libjava/java/lang/w_sqrt.c
- 647790385b ./libjava/java/math/BigDecimal.java
-1413640672b ./libjava/java/math/BigInteger.java
-2740663451b ./libjava/java/net/Authenticator.java
-1892964846b ./libjava/java/net/BindException.java
- 465134141b ./libjava/java/net/ConnectException.java
-2451709496b ./libjava/java/net/ContentHandlerFactory.java
-2009481994b ./libjava/java/net/ContentHandler.java
-2799450041b ./libjava/java/net/DatagramPacket.java
-1684404099b ./libjava/java/net/DatagramSocketImpl.java
-2186623986b ./libjava/java/net/DatagramSocket.java
-3221371229b ./libjava/java/net/FileNameMap.java
- 905107405b ./libjava/java/net/HttpURLConnection.java
-2016211119b ./libjava/java/net/InetAddress.java
-3267095408b ./libjava/java/net/JarURLConnection.java
-2855708971b ./libjava/java/net/MalformedURLException.java
-2301622401b ./libjava/java/net/MulticastSocket.java
-4045295019b ./libjava/java/net/natInetAddress.cc
- 743824210b ./libjava/java/net/natPlainDatagramSocketImpl.cc
-2983285886b ./libjava/java/net/natPlainSocketImpl.cc
-1682337997b ./libjava/java/net/NetPermission.java
- 219229722b ./libjava/java/net/NoRouteToHostException.java
- 833606891b ./libjava/java/net/PasswordAuthentication.java
-4105261490b ./libjava/java/net/PlainDatagramSocketImpl.java
-2335349056b ./libjava/java/net/PlainSocketImpl.java
-1942565398b ./libjava/java/net/ProtocolException.java
-3938255056b ./libjava/java/net/ServerSocket.java
-3016170839b ./libjava/java/net/SocketException.java
-2277031455b ./libjava/java/net/SocketImplFactory.java
-1289495366b ./libjava/java/net/SocketImpl.java
-1934542585b ./libjava/java/net/Socket.java
-2567328645b ./libjava/java/net/SocketOptions.java
-1657196367b ./libjava/java/net/SocketPermission.java
-1041327798b ./libjava/java/net/UnknownHostException.java
-2623632799b ./libjava/java/net/UnknownServiceException.java
- 194604118b ./libjava/java/net/URLClassLoader.java
-2961889722b ./libjava/java/net/URLConnection.java
-2772681802b ./libjava/java/net/URLDecoder.java
-4220867118b ./libjava/java/net/URLEncoder.java
-1440065038b ./libjava/java/net/URL.java
-2216267556b ./libjava/java/net/URLStreamHandlerFactory.java
-3036638609b ./libjava/java/net/URLStreamHandler.java
-2345713982b ./libjava/java/rmi/AccessException.java
-1531149925b ./libjava/java/rmi/activation/Activatable.java
- 202413195b ./libjava/java/rmi/activation/ActivateFailedException.java
-3435388540b ./libjava/java/rmi/activation/ActivationDesc.java
-2977173158b ./libjava/java/rmi/activation/ActivationException.java
-3932453163b ./libjava/java/rmi/activation/ActivationGroupDesc.java
-3794676101b ./libjava/java/rmi/activation/ActivationGroupID.java
- 443589476b ./libjava/java/rmi/activation/ActivationGroup.java
-1660066253b ./libjava/java/rmi/activation/ActivationID.java
-3314676255b ./libjava/java/rmi/activation/ActivationInstantiator.java
- 331032778b ./libjava/java/rmi/activation/ActivationMonitor.java
-3527811786b ./libjava/java/rmi/activation/ActivationSystem.java
- 38902488b ./libjava/java/rmi/activation/Activator.java
-3932075613b ./libjava/java/rmi/activation/UnknownGroupException.java
-2859838111b ./libjava/java/rmi/activation/UnknownObjectException.java
- 638523787b ./libjava/java/rmi/AlreadyBoundException.java
-3168686766b ./libjava/java/rmi/ConnectException.java
- 108680455b ./libjava/java/rmi/ConnectIOException.java
- 1240298b ./libjava/java/rmi/dgc/DGC.java
-3040253205b ./libjava/java/rmi/dgc/Lease.java
-4206440135b ./libjava/java/rmi/dgc/VMID.java
-2315456896b ./libjava/java/rmi/MarshalException.java
-1559402097b ./libjava/java/rmi/MarshalledObject.java
-2730841917b ./libjava/java/rmi/Naming.java
-2964967266b ./libjava/java/rmi/NoSuchObjectException.java
-2207159994b ./libjava/java/rmi/NotBoundException.java
-2660899207b ./libjava/java/rmi/registry/LocateRegistry.java
-1399983578b ./libjava/java/rmi/registry/RegistryHandler.java
-3447606163b ./libjava/java/rmi/registry/Registry.java
-2722897537b ./libjava/java/rmi/RemoteException.java
-3977817460b ./libjava/java/rmi/Remote.java
-1880593648b ./libjava/java/rmi/RMISecurityException.java
-1668944357b ./libjava/java/rmi/RMISecurityManager.java
-2063315085b ./libjava/java/rmi/ServerError.java
-3013999798b ./libjava/java/rmi/ServerException.java
-3139440594b ./libjava/java/rmi/server/ExportException.java
-1080320338b ./libjava/java/rmi/server/LoaderHandler.java
-3453671358b ./libjava/java/rmi/server/LogStream.java
-3627631958b ./libjava/java/rmi/server/ObjID.java
-1620681979b ./libjava/java/rmi/server/Operation.java
-3007384076b ./libjava/java/rmi/server/RemoteCall.java
- 646982205b ./libjava/java/rmi/server/RemoteObject.java
-1057967745b ./libjava/java/rmi/server/RemoteRef.java
-3980074697b ./libjava/java/rmi/server/RemoteServer.java
-2379911685b ./libjava/java/rmi/server/RemoteStub.java
- 766223293b ./libjava/java/rmi/server/RMIClassLoader.java
-1381387676b ./libjava/java/rmi/server/RMIClientSocketFactory.java
-1355495784b ./libjava/java/rmi/server/RMIFailureHandler.java
- 637510001b ./libjava/java/rmi/server/RMIServerSocketFactory.java
- 491843230b ./libjava/java/rmi/server/RMISocketFactory.java
- 991417645b ./libjava/java/rmi/ServerRuntimeException.java
-2405566142b ./libjava/java/rmi/server/ServerCloneException.java
- 970903487b ./libjava/java/rmi/server/ServerNotActiveException.java
-3269103800b ./libjava/java/rmi/server/ServerRef.java
-1284557277b ./libjava/java/rmi/server/Skeleton.java
-1298691040b ./libjava/java/rmi/server/SkeletonMismatchException.java
- 301272094b ./libjava/java/rmi/server/SkeletonNotFoundException.java
-2163278585b ./libjava/java/rmi/server/SocketSecurityException.java
- 946423957b ./libjava/java/rmi/server/UID.java
-3436591463b ./libjava/java/rmi/server/UnicastRemoteObject.java
-3786643443b ./libjava/java/rmi/server/Unreferenced.java
- 158040251b ./libjava/java/rmi/StubNotFoundException.java
- 981089142b ./libjava/java/rmi/UnexpectedException.java
-3267495332b ./libjava/java/rmi/UnknownHostException.java
-3831786123b ./libjava/java/rmi/UnmarshalException.java
-3377565930b ./libjava/java/security/AccessControlContext.java
-2503008464b ./libjava/java/security/AccessControlException.java
- 961049396b ./libjava/java/security/AccessController.java
-1107973997b ./libjava/java/security/acl/AclEntry.java
- 208951186b ./libjava/java/security/acl/Acl.java
- 470826478b ./libjava/java/security/acl/AclNotFoundException.java
-1196419206b ./libjava/java/security/acl/Group.java
-2213283367b ./libjava/java/security/acl/LastOwnerException.java
-3397637888b ./libjava/java/security/acl/NotOwnerException.java
- 689449683b ./libjava/java/security/acl/Owner.java
-3427961043b ./libjava/java/security/acl/Permission.java
-2206881746b ./libjava/java/security/AlgorithmParameterGenerator.java
-3955879194b ./libjava/java/security/AlgorithmParameterGeneratorSpi.java
-1605717160b ./libjava/java/security/AlgorithmParameters.java
-2891548705b ./libjava/java/security/AlgorithmParametersSpi.java
- 445477635b ./libjava/java/security/AllPermission.java
-3690509591b ./libjava/java/security/BasicPermission.java
- 962908602b ./libjava/java/security/cert/CertificateEncodingException.java
-3422220568b ./libjava/java/security/cert/CertificateException.java
- 392043989b ./libjava/java/security/cert/CertificateExpiredException.java
-1893973660b ./libjava/java/security/cert/CertificateFactory.java
-1773373825b ./libjava/java/security/cert/CertificateFactorySpi.java
- 233269914b ./libjava/java/security/cert/Certificate.java
-2007231431b ./libjava/java/security/cert/CertificateNotYetValidException.java
- 944611608b ./libjava/java/security/cert/CertificateParsingException.java
- 938503207b ./libjava/java/security/cert/CRLException.java
- 275997395b ./libjava/java/security/cert/CRL.java
-3914599195b ./libjava/java/security/Certificate.java
-3595656724b ./libjava/java/security/cert/X509Certificate.java
- 379566121b ./libjava/java/security/cert/X509CRLEntry.java
- 838800704b ./libjava/java/security/cert/X509CRL.java
-1496043464b ./libjava/java/security/cert/X509Extension.java
-2128346166b ./libjava/java/security/classpath.security
-1245295455b ./libjava/java/security/CodeSource.java
-1011061724b ./libjava/java/security/DigestException.java
-3484233527b ./libjava/java/security/DigestInputStream.java
-1273872520b ./libjava/java/security/DigestOutputStream.java
-3131452143b ./libjava/java/security/DomainCombiner.java
-2064440254b ./libjava/java/security/DummyKeyPairGenerator.java
-1205011236b ./libjava/java/security/DummyMessageDigest.java
-3244660822b ./libjava/java/security/DummySignature.java
-3754360724b ./libjava/java/security/GeneralSecurityException.java
-1546088936b ./libjava/java/security/GuardedObject.java
-1223151028b ./libjava/java/security/Guard.java
-2534219749b ./libjava/java/security/Identity.java
-3669588150b ./libjava/java/security/IdentityScope.java
-1502191052b ./libjava/java/security/interfaces/DSAKey.java
- 931326038b ./libjava/java/security/interfaces/DSAKeyPairGenerator.java
-3412106065b ./libjava/java/security/interfaces/DSAParams.java
-2946643846b ./libjava/java/security/interfaces/DSAPrivateKey.java
- 348049866b ./libjava/java/security/interfaces/DSAPublicKey.java
-3186115353b ./libjava/java/security/interfaces/RSAKey.java
-1654913905b ./libjava/java/security/interfaces/RSAPrivateCrtKey.java
-2692733678b ./libjava/java/security/interfaces/RSAPrivateKey.java
-1233397848b ./libjava/java/security/interfaces/RSAPublicKey.java
-1258878052b ./libjava/java/security/InvalidAlgorithmParameterException.java
- 729426758b ./libjava/java/security/InvalidKeyException.java
-4278354519b ./libjava/java/security/InvalidParameterException.java
- 508303117b ./libjava/java/security/KeyException.java
-3556171286b ./libjava/java/security/KeyFactory.java
-1081989305b ./libjava/java/security/KeyFactorySpi.java
- 323696554b ./libjava/java/security/Key.java
-3220074237b ./libjava/java/security/KeyManagementException.java
-1445793144b ./libjava/java/security/KeyPairGenerator.java
-3630224179b ./libjava/java/security/KeyPairGeneratorSpi.java
-1450975497b ./libjava/java/security/KeyPair.java
-2462887043b ./libjava/java/security/KeyStoreException.java
-2818591760b ./libjava/java/security/KeyStore.java
- 803045781b ./libjava/java/security/KeyStoreSpi.java
- 464741950b ./libjava/java/security/libgcj.security
-4235721395b ./libjava/java/security/MessageDigest.java
-3540748562b ./libjava/java/security/MessageDigestSpi.java
-1866536196b ./libjava/java/security/NoSuchAlgorithmException.java
- 492706813b ./libjava/java/security/NoSuchProviderException.java
-4053507376b ./libjava/java/security/PermissionCollection.java
- 528332829b ./libjava/java/security/Permission.java
-3401846776b ./libjava/java/security/Permissions.java
-1801865567b ./libjava/java/security/Policy.java
-3369614815b ./libjava/java/security/Principal.java
- 985381771b ./libjava/java/security/PrivateKey.java
-2559441309b ./libjava/java/security/PrivilegedActionException.java
-1519374483b ./libjava/java/security/PrivilegedAction.java
-1001728643b ./libjava/java/security/PrivilegedExceptionAction.java
- 368821109b ./libjava/java/security/ProtectionDomain.java
-3835680906b ./libjava/java/security/ProviderException.java
-2340776264b ./libjava/java/security/Provider.java
-1224382933b ./libjava/java/security/PublicKey.java
- 120707443b ./libjava/java/security/SecureClassLoader.java
- 494331022b ./libjava/java/security/SecureRandom.java
-2053869154b ./libjava/java/security/SecureRandomSpi.java
-3229850841b ./libjava/java/security/Security.java
-3637925183b ./libjava/java/security/SecurityPermission.java
- 498383671b ./libjava/java/security/SignatureException.java
-4213110400b ./libjava/java/security/Signature.java
-2850222648b ./libjava/java/security/SignatureSpi.java
- 366295954b ./libjava/java/security/SignedObject.java
-3719230281b ./libjava/java/security/Signer.java
- 822101390b ./libjava/java/security/spec/AlgorithmParameterSpec.java
-3120841125b ./libjava/java/security/spec/DSAParameterSpec.java
-2299637832b ./libjava/java/security/spec/DSAPrivateKeySpec.java
- 681202330b ./libjava/java/security/spec/DSAPublicKeySpec.java
-1352408709b ./libjava/java/security/spec/EncodedKeySpec.java
-4009180494b ./libjava/java/security/spec/InvalidKeySpecException.java
- 965497815b ./libjava/java/security/spec/InvalidParameterSpecException.java
-3101037976b ./libjava/java/security/spec/KeySpec.java
-2816023539b ./libjava/java/security/spec/PKCS8EncodedKeySpec.java
-1120858009b ./libjava/java/security/spec/RSAKeyGenParameterSpec.java
-4250337880b ./libjava/java/security/spec/RSAPrivateCrtKeySpec.java
-2927717266b ./libjava/java/security/spec/RSAPrivateKeySpec.java
- 379229426b ./libjava/java/security/spec/RSAPublicKeySpec.java
-2631607563b ./libjava/java/security/spec/X509EncodedKeySpec.java
-2654502080b ./libjava/java/security/UnrecoverableKeyException.java
-3042679945b ./libjava/java/security/UnresolvedPermission.java
-2530986689b ./libjava/java/sql/Array.java
- 732307642b ./libjava/java/sql/BatchUpdateException.java
- 374178764b ./libjava/java/sql/Blob.java
-1076961675b ./libjava/java/sql/CallableStatement.java
-3989040128b ./libjava/java/sql/Clob.java
-2277896489b ./libjava/java/sql/Connection.java
-3263074261b ./libjava/java/sql/DatabaseMetaData.java
-3465346954b ./libjava/java/sql/DataTruncation.java
-3146941939b ./libjava/java/sql/Date.java
-2513314582b ./libjava/java/sql/Driver.java
-3274581597b ./libjava/java/sql/DriverManager.java
- 824112165b ./libjava/java/sql/DriverPropertyInfo.java
- 650191309b ./libjava/java/sql/PreparedStatement.java
-3735265522b ./libjava/java/sql/Ref.java
-1340870361b ./libjava/java/sql/ResultSet.java
- 303434648b ./libjava/java/sql/ResultSetMetaData.java
-2203730199b ./libjava/java/sql/SQLData.java
-2087528963b ./libjava/java/sql/SQLException.java
-4204919565b ./libjava/java/sql/SQLInput.java
- 497830475b ./libjava/java/sql/SQLOutput.java
-2690669161b ./libjava/java/sql/SQLWarning.java
-2118176561b ./libjava/java/sql/Statement.java
-1941352982b ./libjava/java/sql/Struct.java
-1822095083b ./libjava/java/sql/Time.java
-3582484656b ./libjava/java/sql/Timestamp.java
-2990213411b ./libjava/java/sql/Types.java
-2231202473b ./libjava/java/text/Annotation.java
- 459822626b ./libjava/java/text/AttributedCharacterIterator.java
-1193044303b ./libjava/java/text/AttributedStringIterator.java
-1309664747b ./libjava/java/text/AttributedString.java
-2390211842b ./libjava/java/text/BreakIterator.java
- 558207429b ./libjava/java/text/CharacterIterator.java
-2434956617b ./libjava/java/text/ChoiceFormat.java
-3293929777b ./libjava/java/text/CollationElementIterator.java
- 285476728b ./libjava/java/text/CollationKey.java
- 376903872b ./libjava/java/text/Collator.java
- 178017360b ./libjava/java/text/DateFormat.java
-1553614803b ./libjava/java/text/DateFormatSymbols.java
-3087605867b ./libjava/java/text/DecimalFormat.java
- 934140472b ./libjava/java/text/DecimalFormatSymbols.java
-2519664708b ./libjava/java/text/FieldPosition.java
-1527062930b ./libjava/java/text/Format.java
-3209075256b ./libjava/java/text/MessageFormat.java
-1224532863b ./libjava/java/text/natCollator.cc
-2380468989b ./libjava/java/text/NumberFormat.java
-2701315364b ./libjava/java/text/ParseException.java
- 807650843b ./libjava/java/text/ParsePosition.java
-2113083680b ./libjava/java/text/RuleBasedCollator.java
-1428855839b ./libjava/java/text/SimpleDateFormat.java
- 253040983b ./libjava/java/text/StringCharacterIterator.java
-2532876071b ./libjava/java/util/AbstractCollection.java
-2029909984b ./libjava/java/util/AbstractList.java
- 744897810b ./libjava/java/util/AbstractMap.java
-4033710468b ./libjava/java/util/AbstractSequentialList.java
-2512678519b ./libjava/java/util/AbstractSet.java
-3703107479b ./libjava/java/util/ArrayList.java
-1381887354b ./libjava/java/util/Arrays.java
-3524843230b ./libjava/java/util/BasicMapEntry.java
- 282804152b ./libjava/java/util/BitSet.java
-2660147876b ./libjava/java/util/Calendar.java
-1341887661b ./libjava/java/util/Collection.java
-2871372597b ./libjava/java/util/Collections.java
-3016313098b ./libjava/java/util/Comparator.java
-2908271472b ./libjava/java/util/ConcurrentModificationException.java
- 710778165b ./libjava/java/util/Date.java
- 328149423b ./libjava/java/util/Dictionary.java
- 393960426b ./libjava/java/util/EmptyStackException.java
- 358368463b ./libjava/java/util/Enumeration.java
-2421153851b ./libjava/java/util/EventListener.java
-3090423014b ./libjava/java/util/EventObject.java
-3092311908b ./libjava/java/util/GregorianCalendar.java
-1559136349b ./libjava/java/util/HashMap.java
-3919942898b ./libjava/java/util/HashSet.java
- 804852857b ./libjava/java/util/Hashtable.java
-4293305226b ./libjava/java/util/IdentityHashMap.java
-4026479457b ./libjava/java/util/Iterator.java
-3778884769b ./libjava/java/util/jar/Attributes.java
-3242774103b ./libjava/java/util/jar/JarEntry.java
-1439364136b ./libjava/java/util/jar/JarException.java
-3579491279b ./libjava/java/util/jar/JarFile.java
-3108700190b ./libjava/java/util/jar/JarInputStream.java
-3060414122b ./libjava/java/util/jar/JarOutputStream.java
-1259280694b ./libjava/java/util/jar/Manifest.java
- 832329135b ./libjava/java/util/LinkedHashMap.java
-1624117899b ./libjava/java/util/LinkedHashSet.java
- 627526944b ./libjava/java/util/LinkedList.java
- 751985718b ./libjava/java/util/ListIterator.java
-3068429576b ./libjava/java/util/List.java
-2456450061b ./libjava/java/util/ListResourceBundle.java
- 667725203b ./libjava/java/util/Locale.java
- 484359853b ./libjava/java/util/Map.java
-2250155039b ./libjava/java/util/MissingResourceException.java
-1572696779b ./libjava/java/util/NoSuchElementException.java
-1271533381b ./libjava/java/util/Observable.java
-4174427959b ./libjava/java/util/Observer.java
-2595158547b ./libjava/java/util/Properties.java
-2604596284b ./libjava/java/util/PropertyPermission.java
-1495521984b ./libjava/java/util/PropertyResourceBundle.java
-2707837116b ./libjava/java/util/RandomAccess.java
-1741060266b ./libjava/java/util/Random.java
- 604399175b ./libjava/java/util/ResourceBundle.java
-2326466944b ./libjava/java/util/Set.java
-2701923146b ./libjava/java/util/SimpleTimeZone.java
-1991994937b ./libjava/java/util/SortedMap.java
-2357787438b ./libjava/java/util/SortedSet.java
-1274465736b ./libjava/java/util/Stack.java
-3200298650b ./libjava/java/util/StringTokenizer.java
-3482719698b ./libjava/java/util/Timer.java
-2154207616b ./libjava/java/util/TimerTask.java
-2511347434b ./libjava/java/util/TimeZone.java
-4294130868b ./libjava/java/util/TooManyListenersException.java
-3728869390b ./libjava/java/util/TreeMap.java
-3277604160b ./libjava/java/util/TreeSet.java
-3512853982b ./libjava/java/util/Vector.java
-1610986963b ./libjava/java/util/WeakHashMap.java
-2655847765b ./libjava/java/util/zip/Adler32.java
-4095201247b ./libjava/java/util/zip/CheckedInputStream.java
-1148292706b ./libjava/java/util/zip/CheckedOutputStream.java
-2267421579b ./libjava/java/util/zip/Checksum.java
-2436561403b ./libjava/java/util/zip/CRC32.java
-3657795573b ./libjava/java/util/zip/DataFormatException.java
- 199330457b ./libjava/java/util/zip/Deflater.java
-3336807235b ./libjava/java/util/zip/DeflaterOutputStream.java
-4059428363b ./libjava/java/util/zip/GZIPInputStream.java
- 371303032b ./libjava/java/util/zip/GZIPOutputStream.java
-3396470608b ./libjava/java/util/zip/InflaterInputStream.java
-2396996601b ./libjava/java/util/zip/Inflater.java
-1224162092b ./libjava/java/util/zip/natDeflater.cc
-3063634192b ./libjava/java/util/zip/natInflater.cc
-1145913690b ./libjava/java/util/zip/ZipConstants.java
- 65566596b ./libjava/java/util/zip/ZipEntry.java
- 96030578b ./libjava/java/util/zip/ZipException.java
-2814843272b ./libjava/java/util/zip/ZipFile.java
-2069419618b ./libjava/java/util/zip/ZipInputStream.java
-3710262911b ./libjava/java/util/zip/ZipOutputStream.java
- 145274057b ./libjava/javax/naming/AuthenticationException.java
-1613568553b ./libjava/javax/naming/AuthenticationNotSupportedException.java
-3018524827b ./libjava/javax/naming/BinaryRefAddr.java
-2950522979b ./libjava/javax/naming/Binding.java
- 495208868b ./libjava/javax/naming/CannotProceedException.java
-1696161213b ./libjava/javax/naming/CommunicationException.java
-1020365512b ./libjava/javax/naming/CompositeName.java
-3091243262b ./libjava/javax/naming/CompoundName.java
-2106105768b ./libjava/javax/naming/ConfigurationException.java
-2355024605b ./libjava/javax/naming/Context.java
-3253591271b ./libjava/javax/naming/ContextNotEmptyException.java
-1403862831b ./libjava/javax/naming/directory/AttributeInUseException.java
-3287107224b ./libjava/javax/naming/directory/Attribute.java
-1937491808b ./libjava/javax/naming/directory/AttributeModificationException.java
-2124855085b ./libjava/javax/naming/directory/Attributes.java
-4218631907b ./libjava/javax/naming/directory/BasicAttribute.java
-1340187773b ./libjava/javax/naming/directory/BasicAttributes.java
- 525649657b ./libjava/javax/naming/directory/DirContext.java
-3780905669b ./libjava/javax/naming/directory/InitialDirContext.java
-1070098408b ./libjava/javax/naming/directory/InvalidAttributeIdentifierException.java
-2130227696b ./libjava/javax/naming/directory/InvalidAttributesException.java
-2448051700b ./libjava/javax/naming/directory/InvalidAttributeValueException.java
-3317095745b ./libjava/javax/naming/directory/InvalidSearchControlsException.java
-2677951745b ./libjava/javax/naming/directory/InvalidSearchFilterException.java
- 297375529b ./libjava/javax/naming/directory/ModificationItem.java
-1218016472b ./libjava/javax/naming/directory/NoSuchAttributeException.java
-3800798223b ./libjava/javax/naming/directory/SchemaViolationException.java
-2280737329b ./libjava/javax/naming/directory/SearchControls.java
-2833305555b ./libjava/javax/naming/directory/SearchResult.java
- 632548719b ./libjava/javax/naming/event/EventContext.java
-1104789568b ./libjava/javax/naming/event/EventDirContext.java
-1079821505b ./libjava/javax/naming/event/NamespaceChangeListener.java
-1238809356b ./libjava/javax/naming/event/NamingEvent.java
-3831078506b ./libjava/javax/naming/event/NamingExceptionEvent.java
-1293039497b ./libjava/javax/naming/event/NamingListener.java
-1847110909b ./libjava/javax/naming/event/ObjectChangeListener.java
-1739543939b ./libjava/javax/naming/InitialContext.java
- 38212245b ./libjava/javax/naming/InsufficientResourcesException.java
-2296688963b ./libjava/javax/naming/InterruptedNamingException.java
-4165253207b ./libjava/javax/naming/InvalidNameException.java
-4178007180b ./libjava/javax/naming/ldap/ControlFactory.java
-1181684484b ./libjava/javax/naming/ldap/Control.java
-1350269098b ./libjava/javax/naming/ldap/ExtendedRequest.java
- 738885701b ./libjava/javax/naming/ldap/ExtendedResponse.java
-4143032207b ./libjava/javax/naming/ldap/HasControls.java
- 992304517b ./libjava/javax/naming/ldap/InitialLdapContext.java
-1094699680b ./libjava/javax/naming/ldap/LdapContext.java
-3377633528b ./libjava/javax/naming/ldap/LdapReferralException.java
-2717074673b ./libjava/javax/naming/ldap/UnsolicitedNotificationEvent.java
- 391691341b ./libjava/javax/naming/ldap/UnsolicitedNotification.java
-4115295275b ./libjava/javax/naming/ldap/UnsolicitedNotificationListener.java
-3467011523b ./libjava/javax/naming/LimitExceededException.java
-2945536555b ./libjava/javax/naming/LinkException.java
-3280765719b ./libjava/javax/naming/LinkLoopException.java
-4232859152b ./libjava/javax/naming/LinkRef.java
-1528609025b ./libjava/javax/naming/MalformedLinkException.java
-2798268023b ./libjava/javax/naming/NameAlreadyBoundException.java
-4202297725b ./libjava/javax/naming/NameClassPair.java
-2645610340b ./libjava/javax/naming/Name.java
- 230282723b ./libjava/javax/naming/NameNotFoundException.java
-2454523681b ./libjava/javax/naming/NameParser.java
-3641625296b ./libjava/javax/naming/NamingEnumeration.java
- 949888078b ./libjava/javax/naming/NamingException.java
-1081898018b ./libjava/javax/naming/NamingSecurityException.java
-3355150544b ./libjava/javax/naming/NoInitialContextException.java
-3148663544b ./libjava/javax/naming/NoPermissionException.java
-1051745286b ./libjava/javax/naming/NotContextException.java
-1197235786b ./libjava/javax/naming/OperationNotSupportedException.java
-2758830928b ./libjava/javax/naming/PartialResultException.java
-3291792639b ./libjava/javax/naming/RefAddr.java
-1496952630b ./libjava/javax/naming/Referenceable.java
-3197721219b ./libjava/javax/naming/Reference.java
-2706204834b ./libjava/javax/naming/ReferralException.java
- 740355282b ./libjava/javax/naming/ServiceUnavailableException.java
-2175690233b ./libjava/javax/naming/SizeLimitExceededException.java
- 940282333b ./libjava/javax/naming/spi/DirectoryManager.java
-1671315693b ./libjava/javax/naming/spi/DirObjectFactory.java
-2654197748b ./libjava/javax/naming/spi/DirStateFactory.java
-2067382225b ./libjava/javax/naming/spi/InitialContextFactoryBuilder.java
-1751323528b ./libjava/javax/naming/spi/InitialContextFactory.java
-4282133359b ./libjava/javax/naming/spi/NamingManager.java
-2834439335b ./libjava/javax/naming/spi/ObjectFactoryBuilder.java
- 162979435b ./libjava/javax/naming/spi/ObjectFactory.java
-3604649919b ./libjava/javax/naming/spi/ResolveResult.java
- 324774529b ./libjava/javax/naming/spi/Resolver.java
-2596286413b ./libjava/javax/naming/spi/StateFactory.java
- 255272768b ./libjava/javax/naming/StringRefAddr.java
- 668991294b ./libjava/javax/naming/TimeLimitExceededException.java
-1100799981b ./libjava/javax/transaction/HeuristicCommitException.java
-3468030488b ./libjava/javax/transaction/HeuristicMixedException.java
-3612916446b ./libjava/javax/transaction/HeuristicRollbackException.java
-3063033259b ./libjava/javax/transaction/InvalidTransactionException.java
-3066010541b ./libjava/javax/transaction/NotSupportedException.java
-2654654450b ./libjava/javax/transaction/RollbackException.java
-1778487585b ./libjava/javax/transaction/Status.java
- 314435753b ./libjava/javax/transaction/Synchronization.java
-2247680091b ./libjava/javax/transaction/SystemException.java
-3332683111b ./libjava/javax/transaction/Transaction.java
-1322333630b ./libjava/javax/transaction/TransactionManager.java
-1540883701b ./libjava/javax/transaction/TransactionRequiredException.java
- 149347685b ./libjava/javax/transaction/TransactionRolledbackException.java
-1599652796b ./libjava/javax/transaction/UserTransaction.java
- 91616559b ./libjava/javax/transaction/xa/XAException.java
- 151022467b ./libjava/javax/transaction/xa/XAResource.java
-2545015127b ./libjava/javax/transaction/xa/Xid.java
-2987342447b ./libjava/jni.cc
-1362543266b ./libjava/LIBGCJ_LICENSE
- 799924566b ./libjava/libgcj.spec.in
-3263845190b ./libjava/libgcj-test.spec.in
- 464053222b ./libjava/libltdl/acconfig.h
-1486261890b ./libjava/libltdl/acinclude.m4
-2748542911b ./libjava/libltdl/aclocal.m4
-1982405743b ./libjava/libltdl/ChangeLog
-3229611250b ./libjava/libltdl/config.h.in
-3663840013b ./libjava/libltdl/configure
- 586017012b ./libjava/libltdl/configure.in
-1530919786b ./libjava/libltdl/COPYING.LIB
-3885054737b ./libjava/libltdl/.cvsignore
-1708336280b ./libjava/libltdl/ltdl.c
-3122579166b ./libjava/libltdl/ltdl.h
-3589765398b ./libjava/libltdl/Makefile.am
-2495909158b ./libjava/libltdl/Makefile.in
-1322928877b ./libjava/libltdl/README
- 216805921b ./libjava/libltdl/stamp-h.in
-4225681790b ./libjava/libtool-version
-1949592651b ./libjava/Makefile.am
-3462890813b ./libjava/Makefile.in
-1775785992b ./libjava/mauve-libgcj
-3598737829b ./libjava/name-finder.cc
-4049677327b ./libjava/NEWS
-3395710497b ./libjava/nogc.cc
- 529282886b ./libjava/no-threads.cc
-2042069291b ./libjava/org/w3c/dom/Attr.java
- 722169044b ./libjava/org/w3c/dom/CDATASection.java
-2065721992b ./libjava/org/w3c/dom/CharacterData.java
-2143127567b ./libjava/org/w3c/dom/Comment.java
- 862763522b ./libjava/org/w3c/dom/DocumentFragment.java
-1900680333b ./libjava/org/w3c/dom/Document.java
-2426412549b ./libjava/org/w3c/dom/DocumentType.java
- 488476586b ./libjava/org/w3c/dom/DOMException.java
-4211570251b ./libjava/org/w3c/dom/DOMImplementation.java
-4250415570b ./libjava/org/w3c/dom/Element.java
-4046624265b ./libjava/org/w3c/dom/Entity.java
-2262342958b ./libjava/org/w3c/dom/EntityReference.java
- 855632112b ./libjava/org/w3c/dom/NamedNodeMap.java
-2986347584b ./libjava/org/w3c/dom/Node.java
-1228842303b ./libjava/org/w3c/dom/NodeList.java
-3739671112b ./libjava/org/w3c/dom/Notation.java
- 358325944b ./libjava/org/w3c/dom/ProcessingInstruction.java
-2318984118b ./libjava/org/w3c/dom/ranges/DocumentRange.java
- 575095803b ./libjava/org/w3c/dom/ranges/RangeException.java
-1265227100b ./libjava/org/w3c/dom/ranges/Range.java
-1690022844b ./libjava/org/w3c/dom/Text.java
-4050517071b ./libjava/org/w3c/dom/traversal/DocumentTraversal.java
-2226386849b ./libjava/org/w3c/dom/traversal/NodeFilter.java
-3652245705b ./libjava/org/w3c/dom/traversal/NodeIterator.java
- 819381088b ./libjava/org/w3c/dom/traversal/TreeWalker.java
-1845225689b ./libjava/org/xml/sax/AttributeList.java
- 34783101b ./libjava/org/xml/sax/Attributes.java
-2393098782b ./libjava/org/xml/sax/ContentHandler.java
-2167265032b ./libjava/org/xml/sax/DocumentHandler.java
-2487190850b ./libjava/org/xml/sax/DTDHandler.java
-3192023668b ./libjava/org/xml/sax/EntityResolver.java
-2389406127b ./libjava/org/xml/sax/ErrorHandler.java
-3779605388b ./libjava/org/xml/sax/ext/DeclHandler.java
-3015426944b ./libjava/org/xml/sax/ext/LexicalHandler.java
-3331884369b ./libjava/org/xml/sax/HandlerBase.java
-2006841075b ./libjava/org/xml/sax/helpers/AttributeListImpl.java
-1981118939b ./libjava/org/xml/sax/helpers/AttributesImpl.java
-3683787168b ./libjava/org/xml/sax/helpers/DefaultHandler.java
-3791965905b ./libjava/org/xml/sax/helpers/LocatorImpl.java
-1401784461b ./libjava/org/xml/sax/helpers/NamespaceSupport.java
-3459248108b ./libjava/org/xml/sax/helpers/ParserAdapter.java
-1216147324b ./libjava/org/xml/sax/helpers/ParserFactory.java
- 774083139b ./libjava/org/xml/sax/helpers/XMLFilterImpl.java
-3667288069b ./libjava/org/xml/sax/helpers/XMLReaderAdapter.java
-1058624631b ./libjava/org/xml/sax/helpers/XMLReaderFactory.java
-3525958518b ./libjava/org/xml/sax/InputSource.java
-1358247595b ./libjava/org/xml/sax/Locator.java
- 570431615b ./libjava/org/xml/sax/Parser.java
-1627938146b ./libjava/org/xml/sax/SAXException.java
-4028320752b ./libjava/org/xml/sax/SAXNotRecognizedException.java
- 800153920b ./libjava/org/xml/sax/SAXNotSupportedException.java
- 24590437b ./libjava/org/xml/sax/SAXParseException.java
-2665273964b ./libjava/org/xml/sax/XMLFilter.java
- 557624139b ./libjava/org/xml/sax/XMLReader.java
- 268319164b ./libjava/posix.cc
-4218036894b ./libjava/posix-threads.cc
-1057670606b ./libjava/prims.cc
-3199155412b ./libjava/README
-3315476665b ./libjava/resolve.cc
-2710913388b ./libjava/scripts/classes.pl
-2322272636b ./libjava/scripts/encodings.pl
-2639955246b ./libjava/scripts/MakeCharTables.java
- 211751055b ./libjava/scripts/MakeDefaultMimeTypes.java
- 415147073b ./libjava/scripts/mime.types
-1359447378b ./libjava/scripts/showval.java
-2309086205b ./libjava/scripts/TexinfoDoclet.java
- 2507783b ./libjava/scripts/unicode-blocks.pl
-2554188738b ./libjava/scripts/unicode-decomp.pl
-3460612990b ./libjava/scripts/unicode-muncher.pl
- 810390237b ./libjava/sysdep/alpha/locks.h
-2948369561b ./libjava/sysdep/generic/locks.h
- 255022282b ./libjava/sysdep/i386/locks.h
-4255020929b ./libjava/sysdep/ia64.c
-3969226176b ./libjava/sysdep/ia64-frame.h
-2487590179b ./libjava/sysdep/ia64/locks.h
-3446737173b ./libjava/sysdep/powerpc/locks.h
-2903495760b ./libjava/sysdep/sparc/locks.h
-2428761261b ./libjava/testsuite/ChangeLog
-1230501773b ./libjava/testsuite/config/default.exp
-3718926011b ./libjava/testsuite/libjava.compile/abstr.java
-2888415448b ./libjava/testsuite/libjava.compile/abstr.xfail
-2597392402b ./libjava/testsuite/libjava.compile/ArrayClass.java
-2510342235b ./libjava/testsuite/libjava.compile/assignment_2.java
- 113533645b ./libjava/testsuite/libjava.compile/assignment.java
- 226856759b ./libjava/testsuite/libjava.compile/block.java
-1927457704b ./libjava/testsuite/libjava.compile/block.xfail
-2001362839b ./libjava/testsuite/libjava.compile/Case.java
-1280659122b ./libjava/testsuite/libjava.compile/comment.java
-1877199736b ./libjava/testsuite/libjava.compile/compile.exp
-3242282126b ./libjava/testsuite/libjava.compile/final_assignment_check.java
-1927457704b ./libjava/testsuite/libjava.compile/final_assignment_check.xfail
-2489230363b ./libjava/testsuite/libjava.compile/final_initialization_in_ctor.java
-2700872724b ./libjava/testsuite/libjava.compile/final_local_switch.java
-1402474633b ./libjava/testsuite/libjava.compile/G19990210_1.java
-3600660956b ./libjava/testsuite/libjava.compile/G19990210_2.java
-2466381413b ./libjava/testsuite/libjava.compile/G19990210_3.java
-3421295656b ./libjava/testsuite/libjava.compile/G19990217_01.java
-3096844209b ./libjava/testsuite/libjava.compile/G19990217_02.java
- 290547391b ./libjava/testsuite/libjava.compile/G19990217_02.no-link
-2679863284b ./libjava/testsuite/libjava.compile/G19990225_01.java
-2268267866b ./libjava/testsuite/libjava.compile/iface.java
-3867761903b ./libjava/testsuite/libjava.compile/inner_1.java
- 20838332b ./libjava/testsuite/libjava.compile/inner_1.xfail
-2923236037b ./libjava/testsuite/libjava.compile/inner_data.java
-1142481695b ./libjava/testsuite/libjava.compile/inner_inherit.java
-2576661865b ./libjava/testsuite/libjava.compile/inner_priv.java
-1329801431b ./libjava/testsuite/libjava.compile/inner_pub.java
- 988747335b ./libjava/testsuite/libjava.compile/invokeinterface/A.java
-1237730563b ./libjava/testsuite/libjava.compile/invokeinterface/B.java
- 887835602b ./libjava/testsuite/libjava.compile/invokeinterface/Test.java
-3848284330b ./libjava/testsuite/libjava.compile/MethodFailure4.java
-1927457704b ./libjava/testsuite/libjava.compile/MethodFailure4.xfail
-1373164997b ./libjava/testsuite/libjava.compile/N19990310_01.java
-2764881773b ./libjava/testsuite/libjava.compile/N19990317.java
-1478470590b ./libjava/testsuite/libjava.compile/not_a_redef.java
-2802394982b ./libjava/testsuite/libjava.compile/not_a_redef.xfail
-2730053140b ./libjava/testsuite/libjava.compile/OperatorBenchmark.java
-1193669757b ./libjava/testsuite/libjava.compile/perc.java
-4184523558b ./libjava/testsuite/libjava.compile/plusplus.java
- 285536381b ./libjava/testsuite/libjava.compile/PR124.java
-1927457704b ./libjava/testsuite/libjava.compile/PR124.xfail
-2852406997b ./libjava/testsuite/libjava.compile/PR127.java
-1927457704b ./libjava/testsuite/libjava.compile/PR127.xfail
- 804684683b ./libjava/testsuite/libjava.compile/PR129_B.java
- 290547391b ./libjava/testsuite/libjava.compile/PR129_B.no-link
-3146715453b ./libjava/testsuite/libjava.compile/PR140.java
-1927457704b ./libjava/testsuite/libjava.compile/PR140.xfail
-4285258758b ./libjava/testsuite/libjava.compile/PR163.java
-1927457704b ./libjava/testsuite/libjava.compile/PR163.xfail
-2290833112b ./libjava/testsuite/libjava.compile/PR164.java
-1927457704b ./libjava/testsuite/libjava.compile/PR164.xfail
- 127683262b ./libjava/testsuite/libjava.compile/pr172.java
-3745463245b ./libjava/testsuite/libjava.compile/pr174.java
-2787957046b ./libjava/testsuite/libjava.compile/pr176.java
- 895496907b ./libjava/testsuite/libjava.compile/PR206.java
- 973849712b ./libjava/testsuite/libjava.compile/PR207.java
-2802394982b ./libjava/testsuite/libjava.compile/PR207.xfail
-3360966851b ./libjava/testsuite/libjava.compile/PR208.java
-2802394982b ./libjava/testsuite/libjava.compile/PR208.xfail
-1822717569b ./libjava/testsuite/libjava.compile/PR209.java
- 779507036b ./libjava/testsuite/libjava.compile/PR224.java
-1927457704b ./libjava/testsuite/libjava.compile/PR224.xfail
-2627046019b ./libjava/testsuite/libjava.compile/PR232B.java
-2989158759b ./libjava/testsuite/libjava.compile/PR232.java
-3778326371b ./libjava/testsuite/libjava.compile/PR234.java
- 842896942b ./libjava/testsuite/libjava.compile/PR235.java
-2668948381b ./libjava/testsuite/libjava.compile/PR238.java
-2802394982b ./libjava/testsuite/libjava.compile/PR238.xfail
-1408787751b ./libjava/testsuite/libjava.compile/PR295.java
-1630321289b ./libjava/testsuite/libjava.compile/PR310.java
-1927457704b ./libjava/testsuite/libjava.compile/PR310.xfail
-3891302784b ./libjava/testsuite/libjava.compile/PR3417.java
-1927457704b ./libjava/testsuite/libjava.compile/PR3417.xfail
-1207363773b ./libjava/testsuite/libjava.compile/PR374.java
-1864561249b ./libjava/testsuite/libjava.compile/PR375.java
-2378882884b ./libjava/testsuite/libjava.compile/PR4766.java
- 277297044b ./libjava/testsuite/libjava.compile/PR5641.java
-2888415448b ./libjava/testsuite/libjava.compile/PR5641.xfail
-2775990221b ./libjava/testsuite/libjava.compile/PR5848.java
-2802394982b ./libjava/testsuite/libjava.compile/PR5848.xfail
-3877718833b ./libjava/testsuite/libjava.compile/PR5902.java
-3468040591b ./libjava/testsuite/libjava.compile/PR5913.java
- 588631470b ./libjava/testsuite/libjava.compile/PR5913.xfail
-3689218637b ./libjava/testsuite/libjava.compile/PR6026.java
-1123122376b ./libjava/testsuite/libjava.compile/redef1.java
-1927457704b ./libjava/testsuite/libjava.compile/redef1.xfail
-1933159159b ./libjava/testsuite/libjava.compile/redef2.java
-1927457704b ./libjava/testsuite/libjava.compile/redef2.xfail
-3363725257b ./libjava/testsuite/libjava.compile/redef3.java
-1927457704b ./libjava/testsuite/libjava.compile/redef3.xfail
- 967702590b ./libjava/testsuite/libjava.compile/redef4.java
-1927457704b ./libjava/testsuite/libjava.compile/redef4.xfail
- 91895527b ./libjava/testsuite/libjava.compile/redef5.java
-1927457704b ./libjava/testsuite/libjava.compile/redef5.xfail
- 301913850b ./libjava/testsuite/libjava.compile/redef6.java
-1927457704b ./libjava/testsuite/libjava.compile/redef6.xfail
-1601820268b ./libjava/testsuite/libjava.compile/Semi.java
-1151358467b ./libjava/testsuite/libjava.compile/static_1.java
-1927457704b ./libjava/testsuite/libjava.compile/static_1.xfail
-3508774254b ./libjava/testsuite/libjava.compile/static_2.java
-2802394982b ./libjava/testsuite/libjava.compile/static_2.xfail
-2883944369b ./libjava/testsuite/libjava.compile/static_3.java
-2802394982b ./libjava/testsuite/libjava.compile/static_3.xfail
-1286489290b ./libjava/testsuite/libjava.compile/static_init2.java
-1851980739b ./libjava/testsuite/libjava.compile/static_init.java
-1927457704b ./libjava/testsuite/libjava.compile/static_init.xfail
-2134939631b ./libjava/testsuite/libjava.compile/static_inner.java
-1283240173b ./libjava/testsuite/libjava.compile/Statics.java
-2919174619b ./libjava/testsuite/libjava.compile/SuperConstr.java
-3221090904b ./libjava/testsuite/libjava.compile/support/Case.java
-1796854903b ./libjava/testsuite/libjava.compile/support/PR129_A.java
-4294110747b ./libjava/testsuite/libjava.compile/support/PR206_A.java
-3604033893b ./libjava/testsuite/libjava.compile/support/PR207_A.java
-3847332882b ./libjava/testsuite/libjava.compile/support/Waldo.java
-4243896875b ./libjava/testsuite/libjava.compile/Twice.java
-1618780916b ./libjava/testsuite/libjava.compile/uesc.java
-1927457704b ./libjava/testsuite/libjava.compile/uesc.xfail
- 650583552b ./libjava/testsuite/libjava.compile/weirddecl.java
-2802394982b ./libjava/testsuite/libjava.compile/weirddecl.xfail
- 328754321b ./libjava/testsuite/libjava.compile/Where.java
- 20838332b ./libjava/testsuite/libjava.compile/Where.xfail
-4003272220b ./libjava/testsuite/libjava.compile/XercesBug.java
-2406961399b ./libjava/testsuite/libjava.jni/calls.c
- 570497497b ./libjava/testsuite/libjava.jni/calls.java
-2319994314b ./libjava/testsuite/libjava.jni/calls.out
-3258253370b ./libjava/testsuite/libjava.jni/cxxtest.cc
-3556355428b ./libjava/testsuite/libjava.jni/cxxtest.java
-1591540413b ./libjava/testsuite/libjava.jni/cxxtest.out
-3827106409b ./libjava/testsuite/libjava.jni/field.c
-2827280571b ./libjava/testsuite/libjava.jni/field.java
-1591540413b ./libjava/testsuite/libjava.jni/field.out
-2542861742b ./libjava/testsuite/libjava.jni/final_method.c
- 744642976b ./libjava/testsuite/libjava.jni/final_method.java
-4113024295b ./libjava/testsuite/libjava.jni/final_method.out
-2096366722b ./libjava/testsuite/libjava.jni/findclass.c
-1104414750b ./libjava/testsuite/libjava.jni/findclass.java
-2209130481b ./libjava/testsuite/libjava.jni/findclass.out
-3064158603b ./libjava/testsuite/libjava.jni/invoke.c
- 259614484b ./libjava/testsuite/libjava.jni/invoke.java
-2175620992b ./libjava/testsuite/libjava.jni/invoke.out
-2564626451b ./libjava/testsuite/libjava.jni/jni.exp
-4181163842b ./libjava/testsuite/libjava.jni/martin.c
-1311631215b ./libjava/testsuite/libjava.jni/martin.java
-3887683434b ./libjava/testsuite/libjava.jni/martin.out
-2791696369b ./libjava/testsuite/libjava.jni/noclass.c
- 32928721b ./libjava/testsuite/libjava.jni/noclass.java
- 497334114b ./libjava/testsuite/libjava.jni/noclass.out
-1963806613b ./libjava/testsuite/libjava.jni/overload.c
- 961228127b ./libjava/testsuite/libjava.jni/overload.java
-2399516383b ./libjava/testsuite/libjava.jni/overload.out
-1369103910b ./libjava/testsuite/libjava.jni/register.c
-4203322028b ./libjava/testsuite/libjava.jni/register.java
- 871340861b ./libjava/testsuite/libjava.jni/register.out
-4271669831b ./libjava/testsuite/libjava.jni/simple_int.c
- 555115153b ./libjava/testsuite/libjava.jni/simple_int.java
-1242895306b ./libjava/testsuite/libjava.jni/simple_int.out
-1996443135b ./libjava/testsuite/libjava.jni/throwit.c
-2321406220b ./libjava/testsuite/libjava.jni/throwit.java
-3149777050b ./libjava/testsuite/libjava.jni/throwit.out
-4001436975b ./libjava/testsuite/libjava.jni/virtual.c
-1112271683b ./libjava/testsuite/libjava.jni/virtual.java
-3956933800b ./libjava/testsuite/libjava.jni/virtual.out
- 68731963b ./libjava/testsuite/libjava.lang/anfi.java
-1280347506b ./libjava/testsuite/libjava.lang/anfi.out
-3232612065b ./libjava/testsuite/libjava.lang/anon2.java
- 119345088b ./libjava/testsuite/libjava.lang/anon2.out
-1843983227b ./libjava/testsuite/libjava.lang/anon3.java
-4270138359b ./libjava/testsuite/libjava.lang/anon3.out
- 507421585b ./libjava/testsuite/libjava.lang/anon4.java
-1106138275b ./libjava/testsuite/libjava.lang/anon4.out
-3443545975b ./libjava/testsuite/libjava.lang/anonarray2.java
-2382672912b ./libjava/testsuite/libjava.lang/anonarray2.out
-3491730776b ./libjava/testsuite/libjava.lang/anonarray3.java
-1685542540b ./libjava/testsuite/libjava.lang/anonarray3.out
-1808791407b ./libjava/testsuite/libjava.lang/anonarray.java
-2382672912b ./libjava/testsuite/libjava.lang/anonarray.out
- 112674158b ./libjava/testsuite/libjava.lang/anon_ctor_itf_arg.java
-3114021423b ./libjava/testsuite/libjava.lang/anon_ctor_itf_arg.out
-4123776590b ./libjava/testsuite/libjava.lang/anon.java
-2668540913b ./libjava/testsuite/libjava.lang/anon.out
- 861880957b ./libjava/testsuite/libjava.lang/Array_1.java
- 882278996b ./libjava/testsuite/libjava.lang/Array_1.out
-1251637952b ./libjava/testsuite/libjava.lang/Array_2.java
- 684357305b ./libjava/testsuite/libjava.lang/Array_2.out
- 938556093b ./libjava/testsuite/libjava.lang/Array_3.java
-4294967295b ./libjava/testsuite/libjava.lang/Array_3.out
-4266220724b ./libjava/testsuite/libjava.lang/ArrayStore2.java
-2092431633b ./libjava/testsuite/libjava.lang/ArrayStore2.out
-4156356334b ./libjava/testsuite/libjava.lang/ArrayStore2.xfail
-2027810547b ./libjava/testsuite/libjava.lang/ArrayStore.java
-1436845427b ./libjava/testsuite/libjava.lang/ArrayStore.out
- 300949552b ./libjava/testsuite/libjava.lang/ArrayStore.xfail
-3857779796b ./libjava/testsuite/libjava.lang/Class_1.java
-2350753667b ./libjava/testsuite/libjava.lang/Class_1.out
-2546101232b ./libjava/testsuite/libjava.lang/direct_read.java
-2764570783b ./libjava/testsuite/libjava.lang/direct_read.out
- 941796535b ./libjava/testsuite/libjava.lang/direct_write.java
- 975119945b ./libjava/testsuite/libjava.lang/direct_write.out
- 101283440b ./libjava/testsuite/libjava.lang/Divide_1.java
-1217781165b ./libjava/testsuite/libjava.lang/Divide_1.out
- 215085604b ./libjava/testsuite/libjava.lang/err10.java
-2283836352b ./libjava/testsuite/libjava.lang/err10.out
-1346535668b ./libjava/testsuite/libjava.lang/err11.java
-2283836352b ./libjava/testsuite/libjava.lang/err11.out
- 967139972b ./libjava/testsuite/libjava.lang/err12.java
-2283836352b ./libjava/testsuite/libjava.lang/err12.out
-1986676622b ./libjava/testsuite/libjava.lang/err13.java
-2283836352b ./libjava/testsuite/libjava.lang/err13.out
-4201705759b ./libjava/testsuite/libjava.lang/err1.java
-2283836352b ./libjava/testsuite/libjava.lang/err1.out
- 616366908b ./libjava/testsuite/libjava.lang/err2.java
-2283836352b ./libjava/testsuite/libjava.lang/err2.out
- 826646394b ./libjava/testsuite/libjava.lang/err3.java
- 468159192b ./libjava/testsuite/libjava.lang/err3.out
- 429966672b ./libjava/testsuite/libjava.lang/err4.java
- 818600219b ./libjava/testsuite/libjava.lang/err4.out
- 622843866b ./libjava/testsuite/libjava.lang/err5.java
-2283836352b ./libjava/testsuite/libjava.lang/err5.out
-2716447628b ./libjava/testsuite/libjava.lang/err6.java
-2283836352b ./libjava/testsuite/libjava.lang/err6.out
-1873356782b ./libjava/testsuite/libjava.lang/err7.java
-2283836352b ./libjava/testsuite/libjava.lang/err7.out
-1622039882b ./libjava/testsuite/libjava.lang/err8.java
-2283836352b ./libjava/testsuite/libjava.lang/err8.out
-1031956187b ./libjava/testsuite/libjava.lang/err9.java
-2283836352b ./libjava/testsuite/libjava.lang/err9.out
-3723805515b ./libjava/testsuite/libjava.lang/FileHandleGcTest.java
-4294967295b ./libjava/testsuite/libjava.lang/FileHandleGcTest.out
- 595443392b ./libjava/testsuite/libjava.lang/final_inner.java
- 269314928b ./libjava/testsuite/libjava.lang/final_inner.out
-2193071619b ./libjava/testsuite/libjava.lang/final_int.java
- 238725689b ./libjava/testsuite/libjava.lang/final_int.out
-1007761145b ./libjava/testsuite/libjava.lang/Final.java
-1431193732b ./libjava/testsuite/libjava.lang/Final.out
-3093949935b ./libjava/testsuite/libjava.lang/final_static_and_friend.java
-3219318744b ./libjava/testsuite/libjava.lang/final_static_and_friend.out
-4214563461b ./libjava/testsuite/libjava.lang/Float_1.java
- 151908695b ./libjava/testsuite/libjava.lang/Float_1.out
-4211438566b ./libjava/testsuite/libjava.lang/G19990301_01.java
- 461683115b ./libjava/testsuite/libjava.lang/G19990301_01.out
- 33515568b ./libjava/testsuite/libjava.lang/G19990302_02.java
-4126570333b ./libjava/testsuite/libjava.lang/G19990302_02.out
-1577075294b ./libjava/testsuite/libjava.lang/G19990303_01.java
-3694902336b ./libjava/testsuite/libjava.lang/G19990303_01.out
-3568552442b ./libjava/testsuite/libjava.lang/G19990303_02.java
-3718849348b ./libjava/testsuite/libjava.lang/G19990303_02.out
- 690728310b ./libjava/testsuite/libjava.lang/G19990304_01.java
-2163223985b ./libjava/testsuite/libjava.lang/G19990304_01.out
- 309057909b ./libjava/testsuite/libjava.lang/G19990310_01.java
-3818873941b ./libjava/testsuite/libjava.lang/G19990310_01.out
-3927692588b ./libjava/testsuite/libjava.lang/II.java
- 324202418b ./libjava/testsuite/libjava.lang/II.out
-2525179149b ./libjava/testsuite/libjava.lang/indirect.java
- 904878278b ./libjava/testsuite/libjava.lang/indirect.out
-2201837161b ./libjava/testsuite/libjava.lang/indirect_read.java
-3331949298b ./libjava/testsuite/libjava.lang/indirect_read.out
-3857018296b ./libjava/testsuite/libjava.lang/indirect_write.java
-1875502579b ./libjava/testsuite/libjava.lang/indirect_write.out
-1492610043b ./libjava/testsuite/libjava.lang/inner1.java
-3510182188b ./libjava/testsuite/libjava.lang/inner1.out
- 952566991b ./libjava/testsuite/libjava.lang/inner2.java
-3321962646b ./libjava/testsuite/libjava.lang/inner2.out
-4104675529b ./libjava/testsuite/libjava.lang/inner3.java
- 184321760b ./libjava/testsuite/libjava.lang/inner3.out
-3987559852b ./libjava/testsuite/libjava.lang/inner4.java
-3193066764b ./libjava/testsuite/libjava.lang/inner4.out
- 838539234b ./libjava/testsuite/libjava.lang/inner_array.java
-1272026125b ./libjava/testsuite/libjava.lang/inner_array.out
-1797808062b ./libjava/testsuite/libjava.lang/inner_interface.java
-1716749990b ./libjava/testsuite/libjava.lang/inner_interface.out
-1867695741b ./libjava/testsuite/libjava.lang/instance.java
-1690435817b ./libjava/testsuite/libjava.lang/instance.out
- 260121539b ./libjava/testsuite/libjava.lang/instinit2.java
-2177795989b ./libjava/testsuite/libjava.lang/instinit2.out
-1279201771b ./libjava/testsuite/libjava.lang/instinit.java
-2984417841b ./libjava/testsuite/libjava.lang/instinit.out
-2590078423b ./libjava/testsuite/libjava.lang/InterfaceDispatch.java
-3002596040b ./libjava/testsuite/libjava.lang/InterfaceDispatch.out
-2975542902b ./libjava/testsuite/libjava.lang/Invoke_1.java
- 636088706b ./libjava/testsuite/libjava.lang/Invoke_1.out
- 482546829b ./libjava/testsuite/libjava.lang/Invoke_2.java
-1406708247b ./libjava/testsuite/libjava.lang/Invoke_2.out
-4259046923b ./libjava/testsuite/libjava.lang/invoke_from_inner.java
- 297330900b ./libjava/testsuite/libjava.lang/invoke_from_inner.out
-1233424497b ./libjava/testsuite/libjava.lang/InvokeReturn.java
-1505249822b ./libjava/testsuite/libjava.lang/InvokeReturn.out
-4188659518b ./libjava/testsuite/libjava.lang/invokethrow.java
- 191230813b ./libjava/testsuite/libjava.lang/invokethrow.out
- 897141912b ./libjava/testsuite/libjava.lang/KeepInline.java
-3068566825b ./libjava/testsuite/libjava.lang/KeepInline.out
-1729910187b ./libjava/testsuite/libjava.lang/klass.java
-1591540413b ./libjava/testsuite/libjava.lang/klass.out
-2546673117b ./libjava/testsuite/libjava.lang/lang.exp
-1339868029b ./libjava/testsuite/libjava.lang/Matrix4f.java
-2870485448b ./libjava/testsuite/libjava.lang/Matrix4f.out
-2891997855b ./libjava/testsuite/libjava.lang/multiple_finit.java
-3652598231b ./libjava/testsuite/libjava.lang/multiple_finit.out
-3824357332b ./libjava/testsuite/libjava.lang/N19990310_02.java
-2283836352b ./libjava/testsuite/libjava.lang/N19990310_02.out
- 792408510b ./libjava/testsuite/libjava.lang/N19990310_3.java
-2283836352b ./libjava/testsuite/libjava.lang/N19990310_3.out
-1646449121b ./libjava/testsuite/libjava.lang/N19990310_4.java
-2283836352b ./libjava/testsuite/libjava.lang/N19990310_4.out
-1522131980b ./libjava/testsuite/libjava.lang/N19990310_5.java
-2283836352b ./libjava/testsuite/libjava.lang/N19990310_5.out
-1347891809b ./libjava/testsuite/libjava.lang/negzero.java
-2849607288b ./libjava/testsuite/libjava.lang/negzero.out
-1199013303b ./libjava/testsuite/libjava.lang/nested_with_ctor.java
-4279847335b ./libjava/testsuite/libjava.lang/nested_with_ctor.out
-3956035919b ./libjava/testsuite/libjava.lang/pr100.java
- 706901580b ./libjava/testsuite/libjava.lang/pr100.xpo
- 424134208b ./libjava/testsuite/libjava.lang/pr109.java
-4059478477b ./libjava/testsuite/libjava.lang/pr109.out
-1039260224b ./libjava/testsuite/libjava.lang/pr133.java
-3434991606b ./libjava/testsuite/libjava.lang/pr133.out
-4106708340b ./libjava/testsuite/libjava.lang/PR141.java
- 417890381b ./libjava/testsuite/libjava.lang/PR141.out
- 924969358b ./libjava/testsuite/libjava.lang/PR160.java
- 636088706b ./libjava/testsuite/libjava.lang/PR160.out
- 710573971b ./libjava/testsuite/libjava.lang/PR162.java
-3491850227b ./libjava/testsuite/libjava.lang/PR162.out
-3102718266b ./libjava/testsuite/libjava.lang/pr179.java
-3022277835b ./libjava/testsuite/libjava.lang/pr179.out
-2924279369b ./libjava/testsuite/libjava.lang/pr184.java
-4039517750b ./libjava/testsuite/libjava.lang/pr184.out
-4227723795b ./libjava/testsuite/libjava.lang/PR218.java
-4039517750b ./libjava/testsuite/libjava.lang/PR218.out
-1329261743b ./libjava/testsuite/libjava.lang/PR242.java
-1147234566b ./libjava/testsuite/libjava.lang/PR242.out
- 526707998b ./libjava/testsuite/libjava.lang/PR260.java
-3569591772b ./libjava/testsuite/libjava.lang/PR260.out
- 14665884b ./libjava/testsuite/libjava.lang/PR3096.java
-2259565565b ./libjava/testsuite/libjava.lang/PR3096.out
-2985138501b ./libjava/testsuite/libjava.lang/PR3731.java
-3956933800b ./libjava/testsuite/libjava.lang/PR3731.out
-2570001649b ./libjava/testsuite/libjava.lang/PR5057_2.java
- 742353047b ./libjava/testsuite/libjava.lang/PR5057_2.out
-2537530668b ./libjava/testsuite/libjava.lang/PR5057.java
- 742353047b ./libjava/testsuite/libjava.lang/PR5057.out
-1438756381b ./libjava/testsuite/libjava.lang/PR55.java
-1201518198b ./libjava/testsuite/libjava.lang/PR55.out
-1733338993b ./libjava/testsuite/libjava.lang/PR56.java
-4294967295b ./libjava/testsuite/libjava.lang/PR56.out
- 832973302b ./libjava/testsuite/libjava.lang/pr83.java
- 987139956b ./libjava/testsuite/libjava.lang/pr83.out
-1555339199b ./libjava/testsuite/libjava.lang/private_direct_read.java
-2096756880b ./libjava/testsuite/libjava.lang/private_direct_read.out
- 901884110b ./libjava/testsuite/libjava.lang/private_direct_write.java
-2184429421b ./libjava/testsuite/libjava.lang/private_indirect_read.java
- 523758111b ./libjava/testsuite/libjava.lang/private_indirect_write.java
-1147328248b ./libjava/testsuite/libjava.lang/search_outer.java
-3994336194b ./libjava/testsuite/libjava.lang/search_outer.out
- 230260077b ./libjava/testsuite/libjava.lang/Shazam.java
-2140426616b ./libjava/testsuite/libjava.lang/Shazam.out
-3112946038b ./libjava/testsuite/libjava.lang/StringBuffer_1.java
-2481391305b ./libjava/testsuite/libjava.lang/StringBuffer_1.out
-1823338028b ./libjava/testsuite/libjava.lang/stringconst2.java
-2835043487b ./libjava/testsuite/libjava.lang/stringconst2.out
-1863083995b ./libjava/testsuite/libjava.lang/stringconst.java
-2835043487b ./libjava/testsuite/libjava.lang/stringconst.out
-4156356334b ./libjava/testsuite/libjava.lang/stringconst.xfail
-2261096902b ./libjava/testsuite/libjava.lang/stub.java
-3886998802b ./libjava/testsuite/libjava.lang/stub.out
-3629333030b ./libjava/testsuite/libjava.lang/Synch.java
- 497334114b ./libjava/testsuite/libjava.lang/Synch.out
-2731334240b ./libjava/testsuite/libjava.lang/SyncTest.java
- 636088706b ./libjava/testsuite/libjava.lang/SyncTest.out
-2443605665b ./libjava/testsuite/libjava.lang/SyncTest.xfail
-1655763772b ./libjava/testsuite/libjava.lang/test_long.java
-3533371317b ./libjava/testsuite/libjava.lang/test_long.out
- 523427206b ./libjava/testsuite/libjava.lang/Thread_Alive.java
-3591103454b ./libjava/testsuite/libjava.lang/Thread_Alive.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Alive.xfail
-1125974645b ./libjava/testsuite/libjava.lang/Thread_Interrupt.java
-2320601405b ./libjava/testsuite/libjava.lang/Thread_Interrupt.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Interrupt.xfail
-2682118636b ./libjava/testsuite/libjava.lang/Thread_Join.java
-2884008640b ./libjava/testsuite/libjava.lang/Thread_Join.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Join.xfail
-3992399686b ./libjava/testsuite/libjava.lang/Thread_Monitor.java
- 636088706b ./libjava/testsuite/libjava.lang/Thread_Monitor.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Monitor.xfail
-3015472066b ./libjava/testsuite/libjava.lang/Thread_Sleep.java
-1299320686b ./libjava/testsuite/libjava.lang/Thread_Sleep.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Sleep.xfail
-2785867945b ./libjava/testsuite/libjava.lang/Thread_Wait_2.java
-3278714705b ./libjava/testsuite/libjava.lang/Thread_Wait_2.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Wait_2.xfail
-3412514508b ./libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.java
-3606244218b ./libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Wait_Interrupt.xfail
-3820325918b ./libjava/testsuite/libjava.lang/Thread_Wait.java
-3866441409b ./libjava/testsuite/libjava.lang/Thread_Wait.out
-2443605665b ./libjava/testsuite/libjava.lang/Thread_Wait.xfail
-1046451808b ./libjava/testsuite/libjava.lang/Throw_1.java
-4294967295b ./libjava/testsuite/libjava.lang/Throw_1.out
-1749384831b ./libjava/testsuite/libjava.lang/Throw_2.java
-4294967295b ./libjava/testsuite/libjava.lang/Throw_2.out
-1571608298b ./libjava/testsuite/libjava.lang/TLtest.java
-2677880801b ./libjava/testsuite/libjava.lang/TLtest.out
-2443605665b ./libjava/testsuite/libjava.lang/TLtest.xfail
-1531499305b ./libjava/testsuite/libjava.lang/tmi.java
-1798035647b ./libjava/testsuite/libjava.lang/tmi.out
-4123810669b ./libjava/testsuite/libjava.lang/tp.java
-1040445301b ./libjava/testsuite/libjava.lang/tp.out
-3674020949b ./libjava/testsuite/libjava.lang/update_outer.java
-1947112134b ./libjava/testsuite/libjava.lang/update_outer.out
-4013205125b ./libjava/testsuite/libjava.mauve/DejaGNUTestHarness.java
-1740456441b ./libjava/testsuite/libjava.mauve/mauve.exp
-2293687712b ./libjava/testsuite/libjava.mauve/xfails
-2598210176b ./libjava/testsuite/lib/libjava.exp
-3806425466b ./libjava/testsuite/Makefile.am
-1096421437b ./libjava/testsuite/Makefile.in
-3410290178b ./libjava/THANKS
-3417667916b ./libjava/verify.cc
- 916359044b ./libjava/win32.cc
-3459150705b ./libjava/win32-threads.cc
- 202134358b ./libobjc/aclocal.m4
- 605856870b ./libobjc/archive.c
-3939154891b ./libobjc/ChangeLog
-3477231866b ./libobjc/class.c
-1748737547b ./libobjc/config.h.in
-3049756062b ./libobjc/configure
-3168606688b ./libobjc/configure.in
- 506544385b ./libobjc/encoding.c
- 726164266b ./libobjc/gc.c
-1761713542b ./libobjc/hash.c
-1287123563b ./libobjc/init.c
- 489398123b ./libobjc/libobjc.def
-4072125181b ./libobjc/libobjc_entry.c
-4260228535b ./libobjc/linking.m
-2398517524b ./libobjc/makefile.dos
-3980241111b ./libobjc/Makefile.in
- 687879051b ./libobjc/misc.c
-1752870170b ./libobjc/nil_method.c
- 638422313b ./libobjc/NXConstStr.m
-1692177559b ./libobjc/objc/encoding.h
- 597415090b ./libobjc/objc/hash.h
-1937854528b ./libobjc/objc/NXConstStr.h
-1908906592b ./libobjc/objc/objc-api.h
-2946018502b ./libobjc/objc/objc.h
-1569406371b ./libobjc/objc/objc-list.h
-1680445531b ./libobjc/objc/Object.h
- 226797930b ./libobjc/objc/Protocol.h
-1775267864b ./libobjc/objc/runtime.h
-1609667340b ./libobjc/objc/sarray.h
-2440049860b ./libobjc/objc/thr.h
-2746948162b ./libobjc/objc/typedstream.h
-3285287551b ./libobjc/Object.m
-2760949240b ./libobjc/objects.c
-3962273975b ./libobjc/Protocol.m
-3823063152b ./libobjc/README
- 749035591b ./libobjc/README.threads
-1415022174b ./libobjc/sarray.c
- 791617547b ./libobjc/selector.c
-3257296953b ./libobjc/sendmsg.c
-3239202263b ./libobjc/thr.c
-3414327023b ./libobjc/thr-dce.c
-2193934747b ./libobjc/thr-decosf1.c
- 519687216b ./libobjc/THREADS
-4055902911b ./libobjc/THREADS.MACH
- 570456722b ./libobjc/thr-irix.c
-1715842563b ./libobjc/thr-mach.c
-1626852001b ./libobjc/thr-objc.c
-2841374444b ./libobjc/thr-os2.c
-1966484436b ./libobjc/thr-posix.c
- 938980526b ./libobjc/thr-pthreads.c
- 718257247b ./libobjc/thr-rtems.c
-2005277748b ./libobjc/thr-single.c
- 60531382b ./libobjc/thr-solaris.c
-2005277748b ./libobjc/thr-vxworks.c
-2963027857b ./libobjc/thr-win32.c
-3752097356b ./libstdc++-v3/acconfig.h
-4198718896b ./libstdc++-v3/acinclude.m4
-1909196152b ./libstdc++-v3/aclocal.m4
-3127052377b ./libstdc++-v3/ChangeLog
-1996982572b ./libstdc++-v3/ChangeLog-2000
-3665233589b ./libstdc++-v3/ChangeLog-2001
-4214408479b ./libstdc++-v3/config/abi/alphaev67-unknown-linux-gnu/baseline_symbols.txt
-1077465800b ./libstdc++-v3/config/abi/extract_symvers
-1049799838b ./libstdc++-v3/config/abi/i686-pc-linux-gnu/baseline_symbols.txt
-3479696688b ./libstdc++-v3/config/abi/ia64-unknown-linux-gnu/baseline_symbols.txt
-3799164404b ./libstdc++-v3/config/cpu/alpha/bits/atomicity.h
-2657854614b ./libstdc++-v3/config/cpu/alpha/bits/cpu_limits.h
-2453414067b ./libstdc++-v3/config/cpu/arm/bits/atomicity.h
-1636456412b ./libstdc++-v3/config/cpu/cris/bits/atomicity.h
-2029688870b ./libstdc++-v3/config/cpu/cris/bits/cpu_limits.h
-3812954815b ./libstdc++-v3/config/cpu/generic/bits/atomicity.h
-1315378737b ./libstdc++-v3/config/cpu/generic/bits/cpu_limits.h
-1670735336b ./libstdc++-v3/config/cpu/generic/bits/limits.h
-2485610863b ./libstdc++-v3/config/cpu/i386/bits/atomicity.h
- 593957722b ./libstdc++-v3/config/cpu/i386/bits/cpu_limits.h
- 623210587b ./libstdc++-v3/config/cpu/i486/bits/atomicity.h
- 193432505b ./libstdc++-v3/config/cpu/ia64/bits/atomicity.h
-1770651251b ./libstdc++-v3/config/cpu/ia64/bits/cpu_limits.h
-1265572143b ./libstdc++-v3/config/cpu/m68k/bits/atomicity.h
-3967527574b ./libstdc++-v3/config/cpu/m68k/bits/cpu_limits.h
-1806424498b ./libstdc++-v3/config/cpu/mips/bits/atomicity.h
- 736712600b ./libstdc++-v3/config/cpu/mmix/bits/cpu_limits.h
-1062517327b ./libstdc++-v3/config/cpu/powerpc/bits/atomicity.h
-1958944292b ./libstdc++-v3/config/cpu/powerpc/bits/cpu_limits.h
-3930061484b ./libstdc++-v3/config/cpu/s390/bits/atomicity.h
-2029688870b ./libstdc++-v3/config/cpu/s390/bits/cpu_limits.h
-1984909614b ./libstdc++-v3/config/cpu/sparc/bits/atomicity.h
- 785222978b ./libstdc++-v3/config/cpu/x86-64/bits/atomicity.h
-4180289496b ./libstdc++-v3/config/cpu/x86-64/bits/cpu_limits.h
- 618996063b ./libstdc++-v3/config.h.in
-1453199454b ./libstdc++-v3/config/io/basic_file_libio.cc
-3157152478b ./libstdc++-v3/config/io/basic_file_libio.h
-3725479456b ./libstdc++-v3/config/io/basic_file_stdio.cc
-2615133940b ./libstdc++-v3/config/io/basic_file_stdio.h
- 714808428b ./libstdc++-v3/config/io/c_io_libio_codecvt.c
-1754405198b ./libstdc++-v3/config/io/c_io_libio.h
-3948747720b ./libstdc++-v3/config/io/c_io_stdio.h
-1615839786b ./libstdc++-v3/config/linker-map.dummy
-2896868371b ./libstdc++-v3/config/linker-map.gnu
-1866975602b ./libstdc++-v3/config/locale/generic/c_locale.cc
-1871355918b ./libstdc++-v3/config/locale/generic/c_locale.h
-3981697735b ./libstdc++-v3/config/locale/generic/c++locale_internal.h
-3717051883b ./libstdc++-v3/config/locale/generic/codecvt_members.cc
-2005861251b ./libstdc++-v3/config/locale/generic/codecvt_specializations.h
-4228611347b ./libstdc++-v3/config/locale/generic/collate_members.cc
-1221593163b ./libstdc++-v3/config/locale/generic/ctype_members.cc
- 474184383b ./libstdc++-v3/config/locale/generic/messages_members.cc
-2682213266b ./libstdc++-v3/config/locale/generic/messages_members.h
- 45184175b ./libstdc++-v3/config/locale/generic/monetary_members.cc
- 650933917b ./libstdc++-v3/config/locale/generic/numeric_members.cc
-3011916115b ./libstdc++-v3/config/locale/generic/time_members.cc
-1345884901b ./libstdc++-v3/config/locale/gnu/c_locale.cc
- 543017678b ./libstdc++-v3/config/locale/gnu/c_locale.h
- 490906006b ./libstdc++-v3/config/locale/gnu/c++locale_internal.h
-2228791650b ./libstdc++-v3/config/locale/gnu/codecvt_members.cc
-3958263092b ./libstdc++-v3/config/locale/gnu/collate_members.cc
-1102464431b ./libstdc++-v3/config/locale/gnu/ctype_members.cc
-4087381875b ./libstdc++-v3/config/locale/gnu/messages_members.cc
-4050802736b ./libstdc++-v3/config/locale/gnu/messages_members.h
-3100021465b ./libstdc++-v3/config/locale/gnu/monetary_members.cc
- 630744503b ./libstdc++-v3/config/locale/gnu/numeric_members.cc
-2183208255b ./libstdc++-v3/config/locale/gnu/time_members.cc
-3232379868b ./libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.cc
-3136594064b ./libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.h
-3256263647b ./libstdc++-v3/config/locale/ieee_1003.1-2001/codecvt_specializations.h
-3823275112b ./libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.cc
- 488667815b ./libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.h
-4256387970b ./libstdc++-v3/config/os/aix/bits/atomicity.h
-2669974896b ./libstdc++-v3/config/os/aix/bits/ctype_base.h
-3165823414b ./libstdc++-v3/config/os/aix/bits/ctype_inline.h
-3499623117b ./libstdc++-v3/config/os/aix/bits/ctype_noninline.h
-1501649315b ./libstdc++-v3/config/os/aix/bits/os_defines.h
- 537966674b ./libstdc++-v3/config/os/bsd/freebsd/bits/ctype_base.h
-2331573625b ./libstdc++-v3/config/os/bsd/freebsd/bits/ctype_inline.h
-1778189959b ./libstdc++-v3/config/os/bsd/freebsd/bits/ctype_noninline.h
-4188452209b ./libstdc++-v3/config/os/bsd/freebsd/bits/os_defines.h
-1041874990b ./libstdc++-v3/config/os/bsd/netbsd/bits/ctype_base.h
- 361863904b ./libstdc++-v3/config/os/bsd/netbsd/bits/ctype_inline.h
-3997726502b ./libstdc++-v3/config/os/bsd/netbsd/bits/ctype_noninline.h
-1602795831b ./libstdc++-v3/config/os/bsd/netbsd/bits/os_defines.h
-3950885908b ./libstdc++-v3/config/os/djgpp/bits/ctype_base.h
-4050668400b ./libstdc++-v3/config/os/djgpp/bits/ctype_inline.h
-2200168434b ./libstdc++-v3/config/os/djgpp/bits/ctype_noninline.h
-1128798661b ./libstdc++-v3/config/os/djgpp/bits/os_defines.h
-1770894154b ./libstdc++-v3/config/os/generic/bits/ctype_base.h
- 913781161b ./libstdc++-v3/config/os/generic/bits/ctype_inline.h
-2814302307b ./libstdc++-v3/config/os/generic/bits/ctype_noninline.h
-2662031339b ./libstdc++-v3/config/os/generic/bits/os_defines.h
- 585502053b ./libstdc++-v3/config/os/gnu-linux/bits/ctype_base.h
- 577770049b ./libstdc++-v3/config/os/gnu-linux/bits/ctype_inline.h
- 382466980b ./libstdc++-v3/config/os/gnu-linux/bits/ctype_noninline.h
-1115301117b ./libstdc++-v3/config/os/gnu-linux/bits/os_defines.h
-1503897878b ./libstdc++-v3/config/os/hpux/bits/cpu_limits.h
-2727448261b ./libstdc++-v3/config/os/hpux/bits/ctype_base.h
- 521899911b ./libstdc++-v3/config/os/hpux/bits/ctype_inline.h
-1287488501b ./libstdc++-v3/config/os/hpux/bits/ctype_noninline.h
-4256303940b ./libstdc++-v3/config/os/hpux/bits/os_defines.h
- 805235121b ./libstdc++-v3/config/os/irix/irix5.2/bits/atomicity.h
- 734403019b ./libstdc++-v3/config/os/irix/irix5.2/bits/ctype_base.h
-2703839638b ./libstdc++-v3/config/os/irix/irix5.2/bits/ctype_inline.h
-3142167642b ./libstdc++-v3/config/os/irix/irix5.2/bits/ctype_noninline.h
-3024037761b ./libstdc++-v3/config/os/irix/irix5.2/bits/os_defines.h
-1437354439b ./libstdc++-v3/config/os/irix/irix6.5/bits/atomicity.h
-1682275129b ./libstdc++-v3/config/os/irix/irix6.5/bits/ctype_base.h
-4093669771b ./libstdc++-v3/config/os/irix/irix6.5/bits/ctype_inline.h
-1925322031b ./libstdc++-v3/config/os/irix/irix6.5/bits/ctype_noninline.h
-4040974915b ./libstdc++-v3/config/os/irix/irix6.5/bits/os_defines.h
-2513027003b ./libstdc++-v3/config/os/mingw32/bits/ctype_base.h
-2249364639b ./libstdc++-v3/config/os/mingw32/bits/ctype_inline.h
-4236896349b ./libstdc++-v3/config/os/mingw32/bits/ctype_noninline.h
-3217385665b ./libstdc++-v3/config/os/mingw32/bits/os_defines.h
-1435551091b ./libstdc++-v3/config/os/newlib/bits/ctype_base.h
-4265751979b ./libstdc++-v3/config/os/newlib/bits/ctype_inline.h
-3780859290b ./libstdc++-v3/config/os/newlib/bits/ctype_noninline.h
-1247228618b ./libstdc++-v3/config/os/newlib/bits/os_defines.h
- 269230749b ./libstdc++-v3/config/os/osf/osf5.0/bits/cpu_limits.h
-1980991936b ./libstdc++-v3/config/os/qnx/qnx6.1/bits/ctype_base.h
- 418495046b ./libstdc++-v3/config/os/qnx/qnx6.1/bits/ctype_inline.h
- 545913221b ./libstdc++-v3/config/os/qnx/qnx6.1/bits/ctype_noninline.h
- 263975258b ./libstdc++-v3/config/os/qnx/qnx6.1/bits/os_defines.h
-4257366577b ./libstdc++-v3/config/os/solaris/solaris2.5/bits/ctype_base.h
- 967249986b ./libstdc++-v3/config/os/solaris/solaris2.5/bits/ctype_inline.h
-2955367373b ./libstdc++-v3/config/os/solaris/solaris2.5/bits/ctype_noninline.h
- 167493702b ./libstdc++-v3/config/os/solaris/solaris2.5/bits/os_defines.h
-1305011444b ./libstdc++-v3/config/os/solaris/solaris2.6/bits/ctype_base.h
- 404061893b ./libstdc++-v3/config/os/solaris/solaris2.6/bits/ctype_inline.h
-3814698223b ./libstdc++-v3/config/os/solaris/solaris2.6/bits/ctype_noninline.h
-1062247100b ./libstdc++-v3/config/os/solaris/solaris2.6/bits/os_defines.h
-2023078243b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_base.h
- 577770049b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_inline.h
- 399834321b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/ctype_noninline.h
- 157883947b ./libstdc++-v3/config/os/solaris/solaris2.7/bits/os_defines.h
-3959422938b ./libstdc++-v3/configure
-3116040814b ./libstdc++-v3/configure.host
- 247346621b ./libstdc++-v3/configure.in
- 282761406b ./libstdc++-v3/configure.target
-1779001880b ./libstdc++-v3/docs/doxygen/doxygroups.cc
-1637481960b ./libstdc++-v3/docs/doxygen/Intro.3
- 748681152b ./libstdc++-v3/docs/doxygen/mainpage.html
- 712715143b ./libstdc++-v3/docs/doxygen/run_doxygen
- 668865588b ./libstdc++-v3/docs/doxygen/stdheader.cc
-2931788874b ./libstdc++-v3/docs/doxygen/style.css
-2943242387b ./libstdc++-v3/docs/doxygen/tables.html
-4021129076b ./libstdc++-v3/docs/doxygen/TODO
-1481189007b ./libstdc++-v3/docs/doxygen/user.cfg.in
-4001239912b ./libstdc++-v3/docs/html/17_intro/BADNAMES
- 985890621b ./libstdc++-v3/docs/html/17_intro/BUGS
-2881598729b ./libstdc++-v3/docs/html/17_intro/CHECKLIST
-3997884874b ./libstdc++-v3/docs/html/17_intro/concept_check.diff
-2558571248b ./libstdc++-v3/docs/html/17_intro/contribute.html
-2171125041b ./libstdc++-v3/docs/html/17_intro/COPYING
-3922222294b ./libstdc++-v3/docs/html/17_intro/COPYING.DOC
-3201164177b ./libstdc++-v3/docs/html/17_intro/C++STYLE
-3222542515b ./libstdc++-v3/docs/html/17_intro/DESIGN
-1363011462b ./libstdc++-v3/docs/html/17_intro/HEADER_POLICY
-3461116413b ./libstdc++-v3/docs/html/17_intro/headers_cc.txt
-2481329262b ./libstdc++-v3/docs/html/17_intro/howto.html
-3565645043b ./libstdc++-v3/docs/html/17_intro/libstdc++-assign.txt
- 666334248b ./libstdc++-v3/docs/html/17_intro/license.html
- 982764901b ./libstdc++-v3/docs/html/17_intro/organization
-1322295551b ./libstdc++-v3/docs/html/17_intro/porting-howto.html
- 405521978b ./libstdc++-v3/docs/html/17_intro/porting-howto.xml
-2381176791b ./libstdc++-v3/docs/html/17_intro/porting.html
-2408767440b ./libstdc++-v3/docs/html/17_intro/porting.texi
- 12001592b ./libstdc++-v3/docs/html/17_intro/PROBLEMS
-2519365120b ./libstdc++-v3/docs/html/17_intro/RELEASE-NOTES
-1434629529b ./libstdc++-v3/docs/html/17_intro/TODO
-2819713781b ./libstdc++-v3/docs/html/18_support/howto.html
-2508850192b ./libstdc++-v3/docs/html/19_diagnostics/howto.html
-2830656893b ./libstdc++-v3/docs/html/20_util/howto.html
-2326263830b ./libstdc++-v3/docs/html/21_strings/gotw29a.txt
- 547290487b ./libstdc++-v3/docs/html/21_strings/howto.html
-3590781787b ./libstdc++-v3/docs/html/21_strings/stringtok_h.txt
-3437467499b ./libstdc++-v3/docs/html/21_strings/stringtok_std_h.txt
-1023569015b ./libstdc++-v3/docs/html/22_locale/codecvt.html
-1194040038b ./libstdc++-v3/docs/html/22_locale/ctype.html
-2274046295b ./libstdc++-v3/docs/html/22_locale/howto.html
- 908518604b ./libstdc++-v3/docs/html/22_locale/locale.html
-2156680698b ./libstdc++-v3/docs/html/22_locale/messages.html
-3162616357b ./libstdc++-v3/docs/html/23_containers/howto.html
-3458392326b ./libstdc++-v3/docs/html/23_containers/wrappers_h.txt
- 453248579b ./libstdc++-v3/docs/html/24_iterators/howto.html
-2290789124b ./libstdc++-v3/docs/html/25_algorithms/howto.html
-3773351147b ./libstdc++-v3/docs/html/26_numerics/howto.html
-2452165260b ./libstdc++-v3/docs/html/27_io/binary_iostreams_kanze.txt
-3249620502b ./libstdc++-v3/docs/html/27_io/binary_iostreams_kuehl.txt
-1136841501b ./libstdc++-v3/docs/html/27_io/howto.html
-3224577239b ./libstdc++-v3/docs/html/abi.txt
- 552573454b ./libstdc++-v3/docs/html/configopts.html
- 714859455b ./libstdc++-v3/docs/html/documentation.html
-1281947731b ./libstdc++-v3/docs/html/explanations.html
-2578738010b ./libstdc++-v3/docs/html/ext/howto.html
-1604238359b ./libstdc++-v3/docs/html/ext/lwg-active.html
- 323640830b ./libstdc++-v3/docs/html/ext/lwg-defects.html
-2613919530b ./libstdc++-v3/docs/html/ext/sgiexts.html
-3573437034b ./libstdc++-v3/docs/html/faq/index.html
-1977830783b ./libstdc++-v3/docs/html/faq/index.txt
-1032487062b ./libstdc++-v3/docs/html/install.html
-2049389478b ./libstdc++-v3/docs/html/lib3styles.css
-1757651676b ./libstdc++-v3/docs/html/makedoc.awk
-3528340567b ./libstdc++-v3/docs/html/Makefile
-2473605692b ./libstdc++-v3/include/backward/algobase.h
-2730818532b ./libstdc++-v3/include/backward/algo.h
-1509057550b ./libstdc++-v3/include/backward/alloc.h
-2505680659b ./libstdc++-v3/include/backward/backward_warning.h
-1252063761b ./libstdc++-v3/include/backward/bvector.h
-3485743051b ./libstdc++-v3/include/backward/complex.h
- 397779689b ./libstdc++-v3/include/backward/defalloc.h
-3218873508b ./libstdc++-v3/include/backward/deque.h
-3713719075b ./libstdc++-v3/include/backward/fstream.h
-3758866193b ./libstdc++-v3/include/backward/function.h
-3633365455b ./libstdc++-v3/include/backward/hash_map.h
-2468519049b ./libstdc++-v3/include/backward/hash_set.h
-3191638109b ./libstdc++-v3/include/backward/hashtable.h
-3255441651b ./libstdc++-v3/include/backward/heap.h
-3979460244b ./libstdc++-v3/include/backward/iomanip.h
-1508058162b ./libstdc++-v3/include/backward/iostream.h
-1766778751b ./libstdc++-v3/include/backward/istream.h
-3559514326b ./libstdc++-v3/include/backward/iterator.h
- 477791767b ./libstdc++-v3/include/backward/list.h
-2194603711b ./libstdc++-v3/include/backward/map.h
-3046068041b ./libstdc++-v3/include/backward/multimap.h
-3924474284b ./libstdc++-v3/include/backward/multiset.h
-1959434229b ./libstdc++-v3/include/backward/new.h
-3127480935b ./libstdc++-v3/include/backward/ostream.h
-1702071145b ./libstdc++-v3/include/backward/pair.h
-1947043927b ./libstdc++-v3/include/backward/queue.h
-3061027826b ./libstdc++-v3/include/backward/rope.h
-2568486625b ./libstdc++-v3/include/backward/set.h
-2372197114b ./libstdc++-v3/include/backward/slist.h
- 374939843b ./libstdc++-v3/include/backward/stack.h
-3825989730b ./libstdc++-v3/include/backward/streambuf.h
-2367779603b ./libstdc++-v3/include/backward/stream.h
-4047744617b ./libstdc++-v3/include/backward/strstream
-3139222786b ./libstdc++-v3/include/backward/strstream.h
-2999216474b ./libstdc++-v3/include/backward/tempbuf.h
-1420771511b ./libstdc++-v3/include/backward/tree.h
-3803139445b ./libstdc++-v3/include/backward/vector.h
-4104762506b ./libstdc++-v3/include/bits/basic_ios.h
- 613772707b ./libstdc++-v3/include/bits/basic_ios.tcc
-1196444434b ./libstdc++-v3/include/bits/basic_string.h
-3004074520b ./libstdc++-v3/include/bits/basic_string.tcc
- 179433314b ./libstdc++-v3/include/bits/boost_concept_check.h
-2084732240b ./libstdc++-v3/include/bits/c++config
-3498736544b ./libstdc++-v3/include/bits/char_traits.h
-3672868066b ./libstdc++-v3/include/bits/codecvt.h
-2442194789b ./libstdc++-v3/include/bits/concept_check.h
- 329719722b ./libstdc++-v3/include/bits/cpp_type_traits.h
-1176672394b ./libstdc++-v3/include/bits/fpos.h
- 986176051b ./libstdc++-v3/include/bits/fstream.tcc
-3886600201b ./libstdc++-v3/include/bits/functexcept.h
-3055891139b ./libstdc++-v3/include/bits/generic_shadow.h
-3512731163b ./libstdc++-v3/include/bits/gslice_array.h
-1117238130b ./libstdc++-v3/include/bits/gslice.h
-3450716320b ./libstdc++-v3/include/bits/indirect_array.h
-4268468129b ./libstdc++-v3/include/bits/ios_base.h
- 43945125b ./libstdc++-v3/include/bits/istream.tcc
-1947395633b ./libstdc++-v3/include/bits/locale_facets.h
-1104096949b ./libstdc++-v3/include/bits/locale_facets.tcc
-3189614545b ./libstdc++-v3/include/bits/localefwd.h
-1519677165b ./libstdc++-v3/include/bits/mask_array.h
-2822101373b ./libstdc++-v3/include/bits/ostream.tcc
-3592433582b ./libstdc++-v3/include/bits/pthread_allocimpl.h
-2670647629b ./libstdc++-v3/include/bits/slice_array.h
-3194205835b ./libstdc++-v3/include/bits/slice.h
-3555571522b ./libstdc++-v3/include/bits/sstream.tcc
-3316800061b ./libstdc++-v3/include/bits/stl_algobase.h
-1569010907b ./libstdc++-v3/include/bits/stl_algo.h
-2270226903b ./libstdc++-v3/include/bits/stl_alloc.h
-2801261805b ./libstdc++-v3/include/bits/stl_bvector.h
-3302543196b ./libstdc++-v3/include/bits/stl_construct.h
-1156806073b ./libstdc++-v3/include/bits/stl_deque.h
- 297399515b ./libstdc++-v3/include/bits/stl_function.h
-2464389940b ./libstdc++-v3/include/bits/stl_heap.h
-2116609667b ./libstdc++-v3/include/bits/stl_iterator_base_funcs.h
-2132265867b ./libstdc++-v3/include/bits/stl_iterator_base_types.h
-2136979193b ./libstdc++-v3/include/bits/stl_iterator.h
- 684063649b ./libstdc++-v3/include/bits/stl_list.h
- 883579033b ./libstdc++-v3/include/bits/stl_map.h
- 567466793b ./libstdc++-v3/include/bits/stl_multimap.h
-2343171452b ./libstdc++-v3/include/bits/stl_multiset.h
-1738941440b ./libstdc++-v3/include/bits/stl_numeric.h
-4071317909b ./libstdc++-v3/include/bits/stl_pair.h
- 369962606b ./libstdc++-v3/include/bits/stl_pthread_alloc.h
-2900628572b ./libstdc++-v3/include/bits/stl_queue.h
-2150554874b ./libstdc++-v3/include/bits/stl_raw_storage_iter.h
-2630067228b ./libstdc++-v3/include/bits/stl_relops.h
- 114789971b ./libstdc++-v3/include/bits/stl_set.h
- 256518146b ./libstdc++-v3/include/bits/stl_stack.h
- 745396233b ./libstdc++-v3/include/bits/stl_tempbuf.h
-3393061403b ./libstdc++-v3/include/bits/stl_threads.h
-1753867163b ./libstdc++-v3/include/bits/stl_tree.h
-1954571679b ./libstdc++-v3/include/bits/stl_uninitialized.h
-1635426571b ./libstdc++-v3/include/bits/stl_vector.h
- 466836896b ./libstdc++-v3/include/bits/streambuf_iterator.h
-4072322448b ./libstdc++-v3/include/bits/streambuf.tcc
- 99981565b ./libstdc++-v3/include/bits/stream_iterator.h
-1373192946b ./libstdc++-v3/include/bits/stringfwd.h
-1571290449b ./libstdc++-v3/include/bits/type_traits.h
-3358963606b ./libstdc++-v3/include/bits/valarray_array.h
- 780098702b ./libstdc++-v3/include/bits/valarray_array.tcc
- 63020838b ./libstdc++-v3/include/bits/valarray_meta.h
- 174717104b ./libstdc++-v3/include/c_compatibility/assert.h
- 157601073b ./libstdc++-v3/include/c_compatibility/ctype.h
-1205462529b ./libstdc++-v3/include/c_compatibility/errno.h
-3028482587b ./libstdc++-v3/include/c_compatibility/float.h
- 15792131b ./libstdc++-v3/include/c_compatibility/iso646.h
-3045744301b ./libstdc++-v3/include/c_compatibility/limits.h
- 649450224b ./libstdc++-v3/include/c_compatibility/locale.h
-3825039242b ./libstdc++-v3/include/c_compatibility/math.h
- 864531648b ./libstdc++-v3/include/c_compatibility/setjmp.h
- 149073637b ./libstdc++-v3/include/c_compatibility/signal.h
- 394111825b ./libstdc++-v3/include/c_compatibility/stdarg.h
- 784117356b ./libstdc++-v3/include/c_compatibility/stddef.h
- 236080617b ./libstdc++-v3/include/c_compatibility/stdio.h
-4053629341b ./libstdc++-v3/include/c_compatibility/stdlib.h
- 603589083b ./libstdc++-v3/include/c_compatibility/string.h
-1640882917b ./libstdc++-v3/include/c_compatibility/time.h
- 242317554b ./libstdc++-v3/include/c_compatibility/wchar.h
- 264438164b ./libstdc++-v3/include/c_compatibility/wctype.h
- 54766345b ./libstdc++-v3/include/c_shadow/assert.h
- 408320858b ./libstdc++-v3/include/c_shadow/bits/std_cassert.h
- 560228963b ./libstdc++-v3/include/c_shadow/bits/std_cctype.h
-4211213130b ./libstdc++-v3/include/c_shadow/bits/std_cerrno.h
-2068961496b ./libstdc++-v3/include/c_shadow/bits/std_cfloat.h
-1221980595b ./libstdc++-v3/include/c_shadow/bits/std_climits.h
-2373554238b ./libstdc++-v3/include/c_shadow/bits/std_clocale.h
-2922108560b ./libstdc++-v3/include/c_shadow/bits/std_cmath.h
-3399111523b ./libstdc++-v3/include/c_shadow/bits/std_csetjmp.h
-2811346449b ./libstdc++-v3/include/c_shadow/bits/std_csignal.h
-1849023164b ./libstdc++-v3/include/c_shadow/bits/std_cstdarg.h
-1416432536b ./libstdc++-v3/include/c_shadow/bits/std_cstddef.h
- 603206410b ./libstdc++-v3/include/c_shadow/bits/std_cstdio.h
- 362076186b ./libstdc++-v3/include/c_shadow/bits/std_cstdlib.h
-3229568541b ./libstdc++-v3/include/c_shadow/bits/std_cstring.h
-3422048856b ./libstdc++-v3/include/c_shadow/bits/std_ctime.h
- 536419890b ./libstdc++-v3/include/c_shadow/bits/std_cwchar.h
-1653117625b ./libstdc++-v3/include/c_shadow/bits/std_cwctype.h
- 329322306b ./libstdc++-v3/include/c_shadow/bits/wrap_fcntl.h
- 627501306b ./libstdc++-v3/include/c_shadow/bits/wrap_features.h
-2049971348b ./libstdc++-v3/include/c_shadow/bits/wrap_iconv.h
-3382563118b ./libstdc++-v3/include/c_shadow/bits/wrap_iolibio.h
-2864679755b ./libstdc++-v3/include/c_shadow/bits/wrap_langinfo.h
-2532894743b ./libstdc++-v3/include/c_shadow/bits/wrap_libio.h
-2741006858b ./libstdc++-v3/include/c_shadow/bits/wrap_libioP.h
-3095110387b ./libstdc++-v3/include/c_shadow/bits/wrap_pthread.h
-3334462167b ./libstdc++-v3/include/c_shadow/bits/wrap_unistd.h
- 150067418b ./libstdc++-v3/include/c_shadow/ctype.h
-3907725087b ./libstdc++-v3/include/c_shadow/errno.h
-3350312907b ./libstdc++-v3/include/c_shadow/fcntl.h
-2000598911b ./libstdc++-v3/include/c_shadow/features.h
-3613357385b ./libstdc++-v3/include/c_shadow/float.h
-2229010711b ./libstdc++-v3/include/c_shadow/iconv.h
- 587788318b ./libstdc++-v3/include/c_shadow/iolibio.h
-1158236952b ./libstdc++-v3/include/c_shadow/langinfo.h
-2010863678b ./libstdc++-v3/include/c_shadow/libio.h
- 34314066b ./libstdc++-v3/include/c_shadow/libioP.h
-3248894685b ./libstdc++-v3/include/c_shadow/limits.h
-2383653384b ./libstdc++-v3/include/c_shadow/locale.h
-1611791486b ./libstdc++-v3/include/c_shadow/math.h
-2578093016b ./libstdc++-v3/include/c_shadow/pthread.h
-3850164351b ./libstdc++-v3/include/c_shadow/setjmp.h
-4096900936b ./libstdc++-v3/include/c_shadow/signal.h
-3742613068b ./libstdc++-v3/include/c_shadow/stdarg.h
-1746566969b ./libstdc++-v3/include/c_shadow/stddef.h
-3938753534b ./libstdc++-v3/include/c_shadow/stdio.h
-4232198514b ./libstdc++-v3/include/c_shadow/stdlib.h
- 105073828b ./libstdc++-v3/include/c_shadow/string.h
-2629001503b ./libstdc++-v3/include/c_shadow/sys/cdefs.h
-3221974189b ./libstdc++-v3/include/c_shadow/time.h
-3696004291b ./libstdc++-v3/include/c_shadow/unistd.h
-3189910958b ./libstdc++-v3/include/c_shadow/wchar.h
- 887325795b ./libstdc++-v3/include/c_shadow/wctype.h
-4098574322b ./libstdc++-v3/include/c/std_cassert.h
-1243273805b ./libstdc++-v3/include/c/std_cctype.h
-4253759613b ./libstdc++-v3/include/c/std_cerrno.h
-4090686127b ./libstdc++-v3/include/c/std_cfloat.h
-1108468159b ./libstdc++-v3/include/c/std_ciso646.h
-1957729161b ./libstdc++-v3/include/c/std_climits.h
-2616677270b ./libstdc++-v3/include/c/std_clocale.h
-3373490872b ./libstdc++-v3/include/c/std_cmath.h
-4087026299b ./libstdc++-v3/include/c_std/cmath.tcc
-2198093326b ./libstdc++-v3/include/c/std_csetjmp.h
-3312976087b ./libstdc++-v3/include/c/std_csignal.h
-1491351151b ./libstdc++-v3/include/c/std_cstdarg.h
- 969673189b ./libstdc++-v3/include/c/std_cstddef.h
-3498882442b ./libstdc++-v3/include/c/std_cstdio.h
-2143638095b ./libstdc++-v3/include/c/std_cstdlib.h
- 948151623b ./libstdc++-v3/include/c/std_cstring.h
- 641399722b ./libstdc++-v3/include/c/std_ctime.h
-1161763336b ./libstdc++-v3/include/c/std_cwchar.h
- 446614233b ./libstdc++-v3/include/c/std_cwctype.h
-1055988818b ./libstdc++-v3/include/c_std/std_cassert.h
- 513093939b ./libstdc++-v3/include/c_std/std_cctype.h
-2752122999b ./libstdc++-v3/include/c_std/std_cerrno.h
-3553306451b ./libstdc++-v3/include/c_std/std_cfloat.h
-1108468159b ./libstdc++-v3/include/c_std/std_ciso646.h
-3552340376b ./libstdc++-v3/include/c_std/std_climits.h
-3610469005b ./libstdc++-v3/include/c_std/std_clocale.h
- 298849884b ./libstdc++-v3/include/c_std/std_cmath.h
- 664446368b ./libstdc++-v3/include/c_std/std_csetjmp.h
-1548436805b ./libstdc++-v3/include/c_std/std_csignal.h
-2409940084b ./libstdc++-v3/include/c_std/std_cstdarg.h
-2943077263b ./libstdc++-v3/include/c_std/std_cstddef.h
-2516759904b ./libstdc++-v3/include/c_std/std_cstdio.h
-1778106626b ./libstdc++-v3/include/c_std/std_cstdlib.h
-3597700667b ./libstdc++-v3/include/c_std/std_cstring.h
-1833374328b ./libstdc++-v3/include/c_std/std_ctime.h
- 855540198b ./libstdc++-v3/include/c_std/std_cwchar.h
-3941323151b ./libstdc++-v3/include/c_std/std_cwctype.h
-3317328074b ./libstdc++-v3/include/ext/algorithm
-1641495854b ./libstdc++-v3/include/ext/enc_filebuf.h
-3444585981b ./libstdc++-v3/include/ext/functional
-1263241564b ./libstdc++-v3/include/ext/hash_map
-1556994010b ./libstdc++-v3/include/ext/hash_set
-1006064723b ./libstdc++-v3/include/ext/iterator
-1166159156b ./libstdc++-v3/include/ext/memory
-2161063846b ./libstdc++-v3/include/ext/numeric
-2970646087b ./libstdc++-v3/include/ext/rb_tree
- 177834210b ./libstdc++-v3/include/ext/rope
- 836293130b ./libstdc++-v3/include/ext/ropeimpl.h
-4160164241b ./libstdc++-v3/include/ext/slist
- 580180377b ./libstdc++-v3/include/ext/stdio_filebuf.h
-2805137138b ./libstdc++-v3/include/ext/stl_hash_fun.h
-1833363198b ./libstdc++-v3/include/ext/stl_hashtable.h
- 984888269b ./libstdc++-v3/include/ext/stl_rope.h
-3797873942b ./libstdc++-v3/include/Makefile.am
-2227334710b ./libstdc++-v3/include/Makefile.in
-4064711400b ./libstdc++-v3/include/std/std_algorithm.h
-1636885247b ./libstdc++-v3/include/std/std_bitset.h
-3412647990b ./libstdc++-v3/include/std/std_complex.h
-1730455182b ./libstdc++-v3/include/std/std_deque.h
-3370784176b ./libstdc++-v3/include/std/std_fstream.h
-3174050204b ./libstdc++-v3/include/std/std_functional.h
-2010625027b ./libstdc++-v3/include/std/std_iomanip.h
-1134808427b ./libstdc++-v3/include/std/std_iosfwd.h
-2056599714b ./libstdc++-v3/include/std/std_ios.h
-2007291560b ./libstdc++-v3/include/std/std_iostream.h
- 270752150b ./libstdc++-v3/include/std/std_istream.h
-3826418885b ./libstdc++-v3/include/std/std_iterator.h
-2456685888b ./libstdc++-v3/include/std/std_limits.h
-1509281666b ./libstdc++-v3/include/std/std_list.h
- 918488326b ./libstdc++-v3/include/std/std_locale.h
-2375471353b ./libstdc++-v3/include/std/std_map.h
- 458060559b ./libstdc++-v3/include/std/std_memory.h
-2200880623b ./libstdc++-v3/include/std/std_numeric.h
-3467401292b ./libstdc++-v3/include/std/std_ostream.h
-1570707417b ./libstdc++-v3/include/std/std_queue.h
-2180214858b ./libstdc++-v3/include/std/std_set.h
-2149174599b ./libstdc++-v3/include/std/std_sstream.h
-1037640383b ./libstdc++-v3/include/std/std_stack.h
-3429471837b ./libstdc++-v3/include/std/std_stdexcept.h
- 136978800b ./libstdc++-v3/include/std/std_streambuf.h
-1365091273b ./libstdc++-v3/include/std/std_string.h
-4158492065b ./libstdc++-v3/include/std/std_utility.h
- 362016596b ./libstdc++-v3/include/std/std_valarray.h
- 125145631b ./libstdc++-v3/include/std/std_vector.h
- 357326461b ./libstdc++-v3/libio/ChangeLog
-2122576197b ./libstdc++-v3/libio/filedoalloc.c
-3590060213b ./libstdc++-v3/libio/fileops.c
- 314955067b ./libstdc++-v3/libio/_G_config.h
-1488981607b ./libstdc++-v3/libio/genops.c
-1308598865b ./libstdc++-v3/libio/iofclose.c
- 932932445b ./libstdc++-v3/libio/iofopen.c
-2284824626b ./libstdc++-v3/libio/iofwide.c
-3964237465b ./libstdc++-v3/libio/iolibio.h
-4269898080b ./libstdc++-v3/libio/libio.h
- 276542374b ./libstdc++-v3/libio/libioP.h
- 226381804b ./libstdc++-v3/libio/Makefile.am
-2999083951b ./libstdc++-v3/libio/Makefile.in
- 13280908b ./libstdc++-v3/libio/stdfiles.c
-2344987226b ./libstdc++-v3/libio/stdio.c
- 688559115b ./libstdc++-v3/libio/wfiledoalloc.c
- 871695306b ./libstdc++-v3/libio/wfileops.c
-2568419733b ./libstdc++-v3/libio/wgenops.c
-4088285812b ./libstdc++-v3/libmath/copysignf.c
-3368788614b ./libstdc++-v3/libmath/Makefile.am
-3495106153b ./libstdc++-v3/libmath/Makefile.in
- 346371220b ./libstdc++-v3/libmath/mathconf.h
-1759197966b ./libstdc++-v3/libmath/nan.c
-1774241233b ./libstdc++-v3/libmath/signbit.c
-3226432156b ./libstdc++-v3/libmath/signbitf.c
- 706230946b ./libstdc++-v3/libmath/signbitl.c
- 940829383b ./libstdc++-v3/libmath/stubs.c
-2871090365b ./libstdc++-v3/libsupc++/cxxabi.h
-3887473586b ./libstdc++-v3/libsupc++/del_op.cc
-2108254126b ./libstdc++-v3/libsupc++/del_opnt.cc
- 998297127b ./libstdc++-v3/libsupc++/del_opv.cc
- 958055369b ./libstdc++-v3/libsupc++/del_opvnt.cc
- 256210637b ./libstdc++-v3/libsupc++/eh_alloc.cc
-1594858350b ./libstdc++-v3/libsupc++/eh_aux_runtime.cc
- 152242761b ./libstdc++-v3/libsupc++/eh_catch.cc
-4215496070b ./libstdc++-v3/libsupc++/eh_exception.cc
-1852005316b ./libstdc++-v3/libsupc++/eh_globals.cc
-1601550960b ./libstdc++-v3/libsupc++/eh_personality.cc
- 192927225b ./libstdc++-v3/libsupc++/eh_terminate.cc
-3767983751b ./libstdc++-v3/libsupc++/eh_throw.cc
-3381460574b ./libstdc++-v3/libsupc++/eh_type.cc
-1338501219b ./libstdc++-v3/libsupc++/exception
-3453419455b ./libstdc++-v3/libsupc++/exception_defines.h
-2343038402b ./libstdc++-v3/libsupc++/Makefile.am
-4070714309b ./libstdc++-v3/libsupc++/Makefile.in
-4225132204b ./libstdc++-v3/libsupc++/new
-2545598190b ./libstdc++-v3/libsupc++/new_handler.cc
-2558289852b ./libstdc++-v3/libsupc++/new_op.cc
-1924050083b ./libstdc++-v3/libsupc++/new_opnt.cc
-4286163592b ./libstdc++-v3/libsupc++/new_opv.cc
-1153125428b ./libstdc++-v3/libsupc++/new_opvnt.cc
-2851101423b ./libstdc++-v3/libsupc++/pure.cc
-4266179473b ./libstdc++-v3/libsupc++/tinfo2.cc
-1062337084b ./libstdc++-v3/libsupc++/tinfo.cc
-1192700122b ./libstdc++-v3/libsupc++/tinfo.h
-2283435214b ./libstdc++-v3/libsupc++/typeinfo
- 875479559b ./libstdc++-v3/libsupc++/unwind-cxx.h
- 712738859b ./libstdc++-v3/libsupc++/vec.cc
- 726823839b ./libstdc++-v3/Makefile.am
-2114270009b ./libstdc++-v3/Makefile.in
-2396933860b ./libstdc++-v3/mkcheck.in
-3790569303b ./libstdc++-v3/mkcshadow
- 805804711b ./libstdc++-v3/mkinclosure
-1252249648b ./libstdc++-v3/po/de.po
-4161545945b ./libstdc++-v3/po/fr.po
- 571561184b ./libstdc++-v3/po/libstdc++.pot
-2710223631b ./libstdc++-v3/po/Makefile.am
- 768491719b ./libstdc++-v3/po/Makefile.in
-2014452913b ./libstdc++-v3/po/POTFILES.in
-1352447199b ./libstdc++-v3/po/string_literals.cc
- 201474883b ./libstdc++-v3/README
-2225403332b ./libstdc++-v3/src/bitset.cc
- 710998349b ./libstdc++-v3/src/codecvt.cc
- 252828227b ./libstdc++-v3/src/complex_io.cc
- 730767358b ./libstdc++-v3/src/concept-inst.cc
-1573161063b ./libstdc++-v3/src/ctype.cc
- 78911046b ./libstdc++-v3/src/ext-inst.cc
-2915333764b ./libstdc++-v3/src/fstream.cc
-3501232323b ./libstdc++-v3/src/fstream-inst.cc
-3677721072b ./libstdc++-v3/src/functexcept.cc
-4248290172b ./libstdc++-v3/src/globals.cc
- 62109486b ./libstdc++-v3/src/io-inst.cc
-2685787750b ./libstdc++-v3/src/ios.cc
-3318878382b ./libstdc++-v3/src/istream-inst.cc
-2798828124b ./libstdc++-v3/src/limits.cc
-3890365762b ./libstdc++-v3/src/locale.cc
-2887946202b ./libstdc++-v3/src/locale-inst.cc
-2847860049b ./libstdc++-v3/src/localename.cc
-2372986634b ./libstdc++-v3/src/Makefile.am
-1241013874b ./libstdc++-v3/src/Makefile.in
- 46061667b ./libstdc++-v3/src/misc-inst.cc
-1456313812b ./libstdc++-v3/src/ostream-inst.cc
-1968902758b ./libstdc++-v3/src/sstream-inst.cc
-3634270088b ./libstdc++-v3/src/stdexcept.cc
-1621643001b ./libstdc++-v3/src/stl-inst.cc
- 294577884b ./libstdc++-v3/src/streambuf-inst.cc
-1002021259b ./libstdc++-v3/src/string-inst.cc
- 102324994b ./libstdc++-v3/src/strstream.cc
-3557593608b ./libstdc++-v3/src/valarray-inst.cc
-2601290630b ./libstdc++-v3/src/vterminate.cc
-1651008667b ./libstdc++-v3/src/wstring-inst.cc
-3407177850b ./libstdc++-v3/testsuite/17_intro/header_cassert.cc
- 718483329b ./libstdc++-v3/testsuite/17_intro/header_cerrno.cc
- 292833921b ./libstdc++-v3/testsuite/17_intro/header_ciso646.cc
-2740614555b ./libstdc++-v3/testsuite/17_intro/header_csetjmp.cc
-4187004662b ./libstdc++-v3/testsuite/17_intro/header_cstdarg.cc
-1187341165b ./libstdc++-v3/testsuite/17_intro/header_cstddef.cc
-3112061327b ./libstdc++-v3/testsuite/17_intro/header_cstdio.cc
- 433436146b ./libstdc++-v3/testsuite/17_intro/header_cstdlib.cc
-4184074218b ./libstdc++-v3/testsuite/17_intro/header_cstring.cc
- 446409895b ./libstdc++-v3/testsuite/17_intro/header_ctime.cc
-2460401861b ./libstdc++-v3/testsuite/17_intro/header_cwchar.cc
- 234720762b ./libstdc++-v3/testsuite/17_intro/header_cwctype.cc
-4050243083b ./libstdc++-v3/testsuite/17_intro/header_fstream.cc
- 31531867b ./libstdc++-v3/testsuite/17_intro/header_iomanip.cc
-1385850299b ./libstdc++-v3/testsuite/17_intro/header_ios.cc
-2774643098b ./libstdc++-v3/testsuite/17_intro/header_iosfwd.cc
-1794666783b ./libstdc++-v3/testsuite/17_intro/header_iostream.cc
-1280776215b ./libstdc++-v3/testsuite/17_intro/header_istream.cc
-3671158117b ./libstdc++-v3/testsuite/17_intro/header_ostream.cc
-3461116413b ./libstdc++-v3/testsuite/17_intro/headers.cc
-3404318748b ./libstdc++-v3/testsuite/17_intro/headers_c.cc
-2076357409b ./libstdc++-v3/testsuite/17_intro/headers_c++.cc
- 161485874b ./libstdc++-v3/testsuite/17_intro/header_sstream.cc
- 553109088b ./libstdc++-v3/testsuite/17_intro/header_streambuf.cc
-2977766596b ./libstdc++-v3/testsuite/18_support/new_delete_placement.cc
-2714224389b ./libstdc++-v3/testsuite/18_support/numeric_limits.cc
-3977893255b ./libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc
-1972393936b ./libstdc++-v3/testsuite/20_util/allocator_members.cc
-4062528466b ./libstdc++-v3/testsuite/20_util/auto_ptr.cc
-4006660250b ./libstdc++-v3/testsuite/20_util/binders.cc
-1043517205b ./libstdc++-v3/testsuite/20_util/comparisons.cc
-1073181186b ./libstdc++-v3/testsuite/20_util/pairs.cc
-2591691225b ./libstdc++-v3/testsuite/20_util/raw_storage_iterator.cc
-2339280423b ./libstdc++-v3/testsuite/20_util/temporary_buffer.cc
-2620430532b ./libstdc++-v3/testsuite/21_strings/append.cc
-1749237095b ./libstdc++-v3/testsuite/21_strings/assign.cc
-4278196910b ./libstdc++-v3/testsuite/21_strings/capacity.cc
-2635888646b ./libstdc++-v3/testsuite/21_strings/char_traits_requirements.cc
-4052621376b ./libstdc++-v3/testsuite/21_strings/char_traits_typedefs.cc
-2742086522b ./libstdc++-v3/testsuite/21_strings/compare.cc
-1828225934b ./libstdc++-v3/testsuite/21_strings/c_strings.cc
- 747384429b ./libstdc++-v3/testsuite/21_strings/ctor_copy_dtor.cc
-2926478704b ./libstdc++-v3/testsuite/21_strings/element_access.cc
-2204151867b ./libstdc++-v3/testsuite/21_strings/find.cc
-1722926940b ./libstdc++-v3/testsuite/21_strings/insert.cc
-1426636344b ./libstdc++-v3/testsuite/21_strings/inserters_extractors.cc
-2168000074b ./libstdc++-v3/testsuite/21_strings/invariants.cc
- 593155147b ./libstdc++-v3/testsuite/21_strings/nonmember.cc
-1709617082b ./libstdc++-v3/testsuite/21_strings/operations.cc
-3864027067b ./libstdc++-v3/testsuite/21_strings/replace.cc
-2718476092b ./libstdc++-v3/testsuite/21_strings/rfind.cc
-1483165749b ./libstdc++-v3/testsuite/21_strings/substr.cc
- 387593609b ./libstdc++-v3/testsuite/22_locale/codecvt.cc
- 512064027b ./libstdc++-v3/testsuite/22_locale/codecvt_members_char_char.cc
-1168972362b ./libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_char.cc
- 56961166b ./libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_wchar_t.cc
-4100654250b ./libstdc++-v3/testsuite/22_locale/codecvt_members_wchar_t_char.cc
- 378719965b ./libstdc++-v3/testsuite/22_locale/collate_byname.cc
-4219192012b ./libstdc++-v3/testsuite/22_locale/collate.cc
-1671297459b ./libstdc++-v3/testsuite/22_locale/collate_members_char.cc
-2271354246b ./libstdc++-v3/testsuite/22_locale/collate_members_wchar_t.cc
-3591030064b ./libstdc++-v3/testsuite/22_locale/ctor_copy_dtor.cc
-2708515186b ./libstdc++-v3/testsuite/22_locale/ctype.cc
- 249444744b ./libstdc++-v3/testsuite/22_locale/ctype_is_char.cc
- 547279960b ./libstdc++-v3/testsuite/22_locale/ctype_is_wchar_t.cc
-3696162713b ./libstdc++-v3/testsuite/22_locale/ctype_members_char.cc
-3964508813b ./libstdc++-v3/testsuite/22_locale/ctype_members_wchar_t.cc
-2753261538b ./libstdc++-v3/testsuite/22_locale/ctype_narrow_char.cc
-1501677695b ./libstdc++-v3/testsuite/22_locale/ctype_narrow_wchar_t.cc
-3197301377b ./libstdc++-v3/testsuite/22_locale/ctype_scan_char.cc
-4211906035b ./libstdc++-v3/testsuite/22_locale/ctype_scan_wchar_t.cc
-2527015272b ./libstdc++-v3/testsuite/22_locale/ctype_to_char.cc
-4182256884b ./libstdc++-v3/testsuite/22_locale/ctype_to_wchar_t.cc
-3510804403b ./libstdc++-v3/testsuite/22_locale/ctype_widen_char.cc
- 93317595b ./libstdc++-v3/testsuite/22_locale/ctype_widen_wchar_t.cc
-3849986858b ./libstdc++-v3/testsuite/22_locale/facet.cc
-3496730433b ./libstdc++-v3/testsuite/22_locale/global_templates.cc
-1723684426b ./libstdc++-v3/testsuite/22_locale/members.cc
-1401094326b ./libstdc++-v3/testsuite/22_locale/messages_byname.cc
-3196187062b ./libstdc++-v3/testsuite/22_locale/messages.cc
-1970700053b ./libstdc++-v3/testsuite/22_locale/messages_members_char.cc
-2495817416b ./libstdc++-v3/testsuite/22_locale/money_get.cc
-1766255762b ./libstdc++-v3/testsuite/22_locale/money_get_members_char.cc
- 138738715b ./libstdc++-v3/testsuite/22_locale/money_get_members_wchar_t.cc
- 396525641b ./libstdc++-v3/testsuite/22_locale/moneypunct_byname.cc
-1298769732b ./libstdc++-v3/testsuite/22_locale/moneypunct.cc
-1486946696b ./libstdc++-v3/testsuite/22_locale/moneypunct_members_char.cc
-2302401224b ./libstdc++-v3/testsuite/22_locale/moneypunct_members_wchar_t.cc
-2714963439b ./libstdc++-v3/testsuite/22_locale/money_put.cc
- 545615219b ./libstdc++-v3/testsuite/22_locale/money_put_members_char.cc
- 299189870b ./libstdc++-v3/testsuite/22_locale/money_put_members_wchar_t.cc
-3806757668b ./libstdc++-v3/testsuite/22_locale/num_get.cc
- 942400636b ./libstdc++-v3/testsuite/22_locale/num_get_members_char.cc
-3952754596b ./libstdc++-v3/testsuite/22_locale/num_get_members_wchar_t.cc
-3109277057b ./libstdc++-v3/testsuite/22_locale/numpunct_byname.cc
- 481449220b ./libstdc++-v3/testsuite/22_locale/numpunct.cc
-1180876674b ./libstdc++-v3/testsuite/22_locale/numpunct_members_char.cc
-3139380707b ./libstdc++-v3/testsuite/22_locale/numpunct_members_wchar_t.cc
-2013396522b ./libstdc++-v3/testsuite/22_locale/num_put.cc
-2410491259b ./libstdc++-v3/testsuite/22_locale/num_put_members_char.cc
- 547290714b ./libstdc++-v3/testsuite/22_locale/num_put_members_wchar_t.cc
-2592583186b ./libstdc++-v3/testsuite/22_locale/operators.cc
- 786606213b ./libstdc++-v3/testsuite/22_locale/static_members.cc
-3529549306b ./libstdc++-v3/testsuite/22_locale/time_get.cc
-3923101724b ./libstdc++-v3/testsuite/22_locale/time_get_members_char.cc
-2180594183b ./libstdc++-v3/testsuite/22_locale/time_get_members_wchar_t.cc
-4249879313b ./libstdc++-v3/testsuite/22_locale/time_put.cc
-2625268284b ./libstdc++-v3/testsuite/22_locale/time_put_members_char.cc
-1365876592b ./libstdc++-v3/testsuite/22_locale/time_put_members_wchar_t.cc
-1594601537b ./libstdc++-v3/testsuite/23_containers/bitset_ctor.cc
-4248533082b ./libstdc++-v3/testsuite/23_containers/bitset_members.cc
- 897013241b ./libstdc++-v3/testsuite/23_containers/bitset_shift.cc
- 298271417b ./libstdc++-v3/testsuite/23_containers/deque_ctor.cc
-3599034057b ./libstdc++-v3/testsuite/23_containers/deque_operators.cc
- 205784061b ./libstdc++-v3/testsuite/23_containers/list_capacity.cc
- 326983922b ./libstdc++-v3/testsuite/23_containers/list_ctor.cc
- 599293253b ./libstdc++-v3/testsuite/23_containers/list_modifiers.cc
-4244756936b ./libstdc++-v3/testsuite/23_containers/list_operators.cc
- 307316045b ./libstdc++-v3/testsuite/23_containers/map_insert.cc
-1772243688b ./libstdc++-v3/testsuite/23_containers/map_operators.cc
-3789154851b ./libstdc++-v3/testsuite/23_containers/multiset.cc
-4102929314b ./libstdc++-v3/testsuite/23_containers/set_operators.cc
-3617128880b ./libstdc++-v3/testsuite/23_containers/vector_bool.cc
-2845787844b ./libstdc++-v3/testsuite/23_containers/vector_capacity.cc
-2149604858b ./libstdc++-v3/testsuite/23_containers/vector_ctor.cc
-3683155594b ./libstdc++-v3/testsuite/23_containers/vector_element_access.cc
-4203207973b ./libstdc++-v3/testsuite/23_containers/vector_modifiers.cc
-3679802360b ./libstdc++-v3/testsuite/24_iterators/back_insert_iterator.cc
-2736134729b ./libstdc++-v3/testsuite/24_iterators/front_insert_iterator.cc
-1154183743b ./libstdc++-v3/testsuite/24_iterators/insert_iterator.cc
- 714376333b ./libstdc++-v3/testsuite/24_iterators/istreambuf_iterator.cc
-3795589628b ./libstdc++-v3/testsuite/24_iterators/istream_iterator.cc
-2873994073b ./libstdc++-v3/testsuite/24_iterators/iterator.cc
-1144199940b ./libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator.cc
-3195646624b ./libstdc++-v3/testsuite/24_iterators/ostream_iterator.cc
-1944522737b ./libstdc++-v3/testsuite/24_iterators/rel_ops.cc
-2512302022b ./libstdc++-v3/testsuite/24_iterators/reverse_iterator.cc
-1024863451b ./libstdc++-v3/testsuite/25_algorithms/binary_search.cc
-3359092851b ./libstdc++-v3/testsuite/25_algorithms/copy.cc
- 499887025b ./libstdc++-v3/testsuite/25_algorithms/equal.cc
-2307649178b ./libstdc++-v3/testsuite/25_algorithms/heap.cc
-3229510528b ./libstdc++-v3/testsuite/25_algorithms/lower_bound.cc
-4253988362b ./libstdc++-v3/testsuite/25_algorithms/min_max.cc
- 737927184b ./libstdc++-v3/testsuite/25_algorithms/partition.cc
-2077920331b ./libstdc++-v3/testsuite/25_algorithms/rotate.cc
-2843376967b ./libstdc++-v3/testsuite/25_algorithms/sort.cc
-3487714017b ./libstdc++-v3/testsuite/25_algorithms/unique.cc
- 825452073b ./libstdc++-v3/testsuite/26_numerics/binary_closure.cc
-4174117585b ./libstdc++-v3/testsuite/26_numerics/buggy_complex.cc
-3446031285b ./libstdc++-v3/testsuite/26_numerics/c99_classification_macros_c.cc
- 477083436b ./libstdc++-v3/testsuite/26_numerics/c99_classification_macros_c++.cc
- 162388279b ./libstdc++-v3/testsuite/26_numerics/c_math.cc
-3345793307b ./libstdc++-v3/testsuite/26_numerics/complex_inserters_extractors.cc
-4028172023b ./libstdc++-v3/testsuite/26_numerics/complex_value.cc
-1538489744b ./libstdc++-v3/testsuite/26_numerics/fabs_inline.cc
-2007868264b ./libstdc++-v3/testsuite/26_numerics/slice_array_assignment.cc
-2493789332b ./libstdc++-v3/testsuite/26_numerics/sum_diff.cc
-2203801309b ./libstdc++-v3/testsuite/26_numerics/valarray.cc
-2289035929b ./libstdc++-v3/testsuite/26_numerics/valarray_const_bracket.cc
-1162163080b ./libstdc++-v3/testsuite/27_io/filebuf.cc
-4294967295b ./libstdc++-v3/testsuite/27_io/filebuf_members-1.tst
-4294967295b ./libstdc++-v3/testsuite/27_io/filebuf_members-1.txt
-3299934909b ./libstdc++-v3/testsuite/27_io/filebuf_members.cc
-4204648704b ./libstdc++-v3/testsuite/27_io/filebuf_virtuals-1.tst
-4204648704b ./libstdc++-v3/testsuite/27_io/filebuf_virtuals-1.txt
- 655821823b ./libstdc++-v3/testsuite/27_io/filebuf_virtuals-2.tst
-1896106013b ./libstdc++-v3/testsuite/27_io/filebuf_virtuals-3.tst
-3500020998b ./libstdc++-v3/testsuite/27_io/filebuf_virtuals.cc
-1987901042b ./libstdc++-v3/testsuite/27_io/fpos.cc
-2165147103b ./libstdc++-v3/testsuite/27_io/fstream.cc
- 358840366b ./libstdc++-v3/testsuite/27_io/fstream_members.cc
-4052401030b ./libstdc++-v3/testsuite/27_io/ifstream.cc
-4294967295b ./libstdc++-v3/testsuite/27_io/ifstream_members-1.tst
-4294967295b ./libstdc++-v3/testsuite/27_io/ifstream_members-1.txt
-2885752721b ./libstdc++-v3/testsuite/27_io/ifstream_members.cc
-2822576026b ./libstdc++-v3/testsuite/27_io/instantiations.cc
-1158981090b ./libstdc++-v3/testsuite/27_io/ios_base_callbacks.cc
-3079502096b ./libstdc++-v3/testsuite/27_io/ios_base_members_static-1.tst
-2904656871b ./libstdc++-v3/testsuite/27_io/ios_base_members_static.cc
- 446281776b ./libstdc++-v3/testsuite/27_io/ios_base_storage.cc
-1912639991b ./libstdc++-v3/testsuite/27_io/ios_base_type.cc
- 236727293b ./libstdc++-v3/testsuite/27_io/ios.cc
-3028704293b ./libstdc++-v3/testsuite/27_io/ios_ctor.cc
-3931163797b ./libstdc++-v3/testsuite/27_io/ios_init.cc
-1589179378b ./libstdc++-v3/testsuite/27_io/ios_manip_basefield.cc
-2543133138b ./libstdc++-v3/testsuite/27_io/ios_manip_fmtflags.cc
- 402291869b ./libstdc++-v3/testsuite/27_io/ios_members.cc
-3395187832b ./libstdc++-v3/testsuite/27_io/iostream.cc
-2441613414b ./libstdc++-v3/testsuite/27_io/iostream_members.cc
- 403539923b ./libstdc++-v3/testsuite/27_io/istream.cc
-1371858986b ./libstdc++-v3/testsuite/27_io/istream_extractor_arith.cc
- 262004209b ./libstdc++-v3/testsuite/27_io/istream_extractor_char.cc
-1013375821b ./libstdc++-v3/testsuite/27_io/istream_extractor_other-1.tst
-1013375821b ./libstdc++-v3/testsuite/27_io/istream_extractor_other-1.txt
-1013375821b ./libstdc++-v3/testsuite/27_io/istream_extractor_other-2.tst
-4009952868b ./libstdc++-v3/testsuite/27_io/istream_extractor_other.cc
-3525724471b ./libstdc++-v3/testsuite/27_io/istream_manip.cc
-3951789237b ./libstdc++-v3/testsuite/27_io/istream_seeks-1.tst
-3951789237b ./libstdc++-v3/testsuite/27_io/istream_seeks-1.txt
-4294967295b ./libstdc++-v3/testsuite/27_io/istream_seeks-2.tst
-2129191219b ./libstdc++-v3/testsuite/27_io/istream_seeks-3.tst
-1422426115b ./libstdc++-v3/testsuite/27_io/istream_seeks.cc
- 466639813b ./libstdc++-v3/testsuite/27_io/istream_sentry.cc
- 38986799b ./libstdc++-v3/testsuite/27_io/istream_unformatted-1.tst
- 38986799b ./libstdc++-v3/testsuite/27_io/istream_unformatted-1.txt
-3117431722b ./libstdc++-v3/testsuite/27_io/istream_unformatted.cc
- 351004607b ./libstdc++-v3/testsuite/27_io/istringstream.cc
-2607021483b ./libstdc++-v3/testsuite/27_io/istringstream_members.cc
-3768461150b ./libstdc++-v3/testsuite/27_io/narrow_stream_objects.cc
- 190325385b ./libstdc++-v3/testsuite/27_io/ofstream.cc
-4294967295b ./libstdc++-v3/testsuite/27_io/ofstream_members-1.tst
-2333857258b ./libstdc++-v3/testsuite/27_io/ofstream_members.cc
-3562911149b ./libstdc++-v3/testsuite/27_io/ostream.cc
-4258844886b ./libstdc++-v3/testsuite/27_io/ostream_inserter_arith.cc
-1556078817b ./libstdc++-v3/testsuite/27_io/ostream_inserter_char-1.tst
-1556078817b ./libstdc++-v3/testsuite/27_io/ostream_inserter_char-1.txt
-4127328437b ./libstdc++-v3/testsuite/27_io/ostream_inserter_char.cc
-4204648704b ./libstdc++-v3/testsuite/27_io/ostream_inserter_other-1.tst
-4204648704b ./libstdc++-v3/testsuite/27_io/ostream_inserter_other-2.tst
-1839784195b ./libstdc++-v3/testsuite/27_io/ostream_inserter_other.cc
-1438625590b ./libstdc++-v3/testsuite/27_io/ostream_manip.cc
-4294967295b ./libstdc++-v3/testsuite/27_io/ostream_seeks-1.tst
- 169443827b ./libstdc++-v3/testsuite/27_io/ostream_seeks.cc
-4124709644b ./libstdc++-v3/testsuite/27_io/ostream_unformatted.cc
-4123639841b ./libstdc++-v3/testsuite/27_io/ostringstream.cc
-1267238271b ./libstdc++-v3/testsuite/27_io/ostringstream_members.cc
- 989576790b ./libstdc++-v3/testsuite/27_io/standard_manipulators.cc
- 252515735b ./libstdc++-v3/testsuite/27_io/streambuf.cc
-2336603373b ./libstdc++-v3/testsuite/27_io/streambuf_members.cc
- 939421885b ./libstdc++-v3/testsuite/27_io/stringbuf.cc
-1939814633b ./libstdc++-v3/testsuite/27_io/stringbuf_members.cc
- 826108650b ./libstdc++-v3/testsuite/27_io/stringbuf_virtuals.cc
-4012426009b ./libstdc++-v3/testsuite/27_io/stringstream.cc
-2617118873b ./libstdc++-v3/testsuite/27_io/stringstream_members.cc
- 365205754b ./libstdc++-v3/testsuite/27_io/wide_stream_objects.cc
-1480987785b ./libstdc++-v3/testsuite/abi_check.cc
-3762370376b ./libstdc++-v3/testsuite/backward/header_deque_h.cc
- 651880874b ./libstdc++-v3/testsuite/backward/header_hash_map_h.cc
-2293472298b ./libstdc++-v3/testsuite/backward/header_hash_set_h.cc
-1063503519b ./libstdc++-v3/testsuite/backward/header_hashtable_h.cc
-1384531088b ./libstdc++-v3/testsuite/backward/header_iterator_h.cc
-1470125519b ./libstdc++-v3/testsuite/backward/header_rope_h.cc
-4158324753b ./libstdc++-v3/testsuite/backward/header_slist_h.cc
-4284948430b ./libstdc++-v3/testsuite/backward/header_tempbuf_h.cc
-2753031700b ./libstdc++-v3/testsuite/backward/strstream_members.cc
- 872857903b ./libstdc++-v3/testsuite/config/default.exp
-3323103327b ./libstdc++-v3/testsuite/ext/allocators.cc
-1828531587b ./libstdc++-v3/testsuite/ext/concept_checks.cc
-1683071968b ./libstdc++-v3/testsuite/ext/hash_map.cc
-2382325141b ./libstdc++-v3/testsuite/ext/hash_set.cc
-2849413443b ./libstdc++-v3/testsuite/ext/headers.cc
-2661012354b ./libstdc++-v3/testsuite/ext/rope.cc
-1165386526b ./libstdc++-v3/testsuite_flags.in
-2466180569b ./libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp
-3712176129b ./libstdc++-v3/testsuite/lib/prune.exp
-2361428628b ./libstdc++-v3/testsuite/libstdc++-v3.dg/dg.exp
- 530685480b ./libstdc++-v3/testsuite/Makefile.am
-1266369902b ./libstdc++-v3/testsuite/Makefile.in
-1352817621b ./libstdc++-v3/testsuite/printnow.c
- 443433597b ./libstdc++-v3/testsuite/README
-3725824881b ./libstdc++-v3/testsuite/testsuite_hooks.h
- 156463796b ./libstdc++-v3/testsuite/thread/pthread1.cc
-1550931445b ./libstdc++-v3/testsuite/thread/pthread2.cc
-1829037829b ./libstdc++-v3/testsuite/thread/pthread3.cc
-3999709480b ./libstdc++-v3/testsuite/thread/pthread4.cc
-3966130685b ./libstdc++-v3/testsuite/thread/pthread5.cc
-2701150431b ./libstdc++-v3/testsuite/thread/pthread6.cc
-4084702431b ./libtool.m4
-2081401147b ./ltcf-c.sh
- 534669854b ./ltcf-cxx.sh
-3594421631b ./ltcf-gcj.sh
- 30175378b ./ltconfig
-2369122487b ./ltmain.sh
-4287295648b ./MAINTAINERS
-1302059430b ./maintainer-scripts/ChangeLog
-1905552954b ./maintainer-scripts/crontab
-4171969357b ./maintainer-scripts/doc_exclude
-3945756456b ./maintainer-scripts/gcc_release
-3126840705b ./maintainer-scripts/README
-4169093075b ./maintainer-scripts/snapshot-index.html
-1797615493b ./maintainer-scripts/snapshot-README
-3359505648b ./maintainer-scripts/update_version
- 612565256b ./maintainer-scripts/update_web_docs
-2568232642b ./maintainer-scripts/update_web_docs_libstdcxx
-1719002991b ./maintainer-scripts/update_web_docs_old
-2643081116b ./Makefile.in
- 990942143b ./missing
-2656466409b ./mkdep
-4236112450b ./mkinstalldirs
- 902556840b ./move-if-change
-3697693037b ./README
-1077958069b ./symlink-tree
-1370970362b ./ylwrap
-1221785251b ./zlib/acinclude.m4
- 63064805b ./zlib/aclocal.m4
-1297198925b ./zlib/adler32.c
-2360440520b ./zlib/algorithm.txt
-1537725969b ./zlib/amiga/Makefile.pup
-3919607569b ./zlib/amiga/Makefile.sas
-1002100577b ./zlib/ChangeLog
-3062272324b ./zlib/ChangeLog.gcj
- 720988996b ./zlib/compress.c
-1404772722b ./zlib/configure
-1923259853b ./zlib/configure.in
- 215845136b ./zlib/contrib/asm386/gvmat32.asm
-4143184108b ./zlib/contrib/asm386/gvmat32c.c
-2920733537b ./zlib/contrib/asm386/mkgvmt32.bat
-3675080833b ./zlib/contrib/asm386/zlibvc.def
-2499069487b ./zlib/contrib/asm386/zlibvc.dsp
- 993885909b ./zlib/contrib/asm386/zlibvc.dsw
- 793867511b ./zlib/contrib/asm586/match.S
-1760950630b ./zlib/contrib/asm586/README.586
-3445355807b ./zlib/contrib/asm686/match.S
-3564267527b ./zlib/contrib/asm686/README.686
-3962801576b ./zlib/contrib/delphi2/d_zlib.bpr
-3205278976b ./zlib/contrib/delphi2/d_zlib.cpp
-3618554340b ./zlib/contrib/delphi2/readme.txt
- 812510417b ./zlib/contrib/delphi2/zlib32.bpr
-2671802940b ./zlib/contrib/delphi2/zlib32.cpp
-1448048189b ./zlib/contrib/delphi2/zlib.bpg
-1970984078b ./zlib/contrib/delphi2/zlib.bpr
-2460992656b ./zlib/contrib/delphi2/zlib.cpp
-2183495051b ./zlib/contrib/delphi2/zlib.pas
- 26085236b ./zlib/contrib/delphi/zlibdef.pas
-1981000180b ./zlib/contrib/delphi/zlib.mak
-2533136546b ./zlib/contrib/iostream2/zstream.h
-3297987584b ./zlib/contrib/iostream2/zstream_test.cpp
- 339148404b ./zlib/contrib/iostream/test.cpp
-1960805227b ./zlib/contrib/iostream/zfstream.cpp
- 933409408b ./zlib/contrib/iostream/zfstream.h
-2533758279b ./zlib/contrib/minizip/ChangeLogUnzip
-2310837728b ./zlib/contrib/minizip/Makefile
-4259570427b ./zlib/contrib/minizip/miniunz.c
-3026675082b ./zlib/contrib/minizip/minizip.c
-3515615353b ./zlib/contrib/minizip/readme.txt
- 179160536b ./zlib/contrib/minizip/unzip.c
- 167508053b ./zlib/contrib/minizip/unzip.def
-3849720148b ./zlib/contrib/minizip/unzip.h
-1806581538b ./zlib/contrib/minizip/zip.c
-2300422090b ./zlib/contrib/minizip/zip.def
-3071990388b ./zlib/contrib/minizip/zip.h
-3675080833b ./zlib/contrib/minizip/zlibvc.def
-2499069487b ./zlib/contrib/minizip/zlibvc.dsp
- 993885909b ./zlib/contrib/minizip/zlibvc.dsw
-3769239525b ./zlib/contrib/README.contrib
-4061615005b ./zlib/contrib/untgz/Makefile
-1408736380b ./zlib/contrib/untgz/makefile.w32
-1384858048b ./zlib/contrib/untgz/untgz.c
-2352798505b ./zlib/contrib/visual-basic.txt
-4189021895b ./zlib/crc32.c
-1822942177b ./zlib/deflate.c
-1789868741b ./zlib/deflate.h
-1690938184b ./zlib/descrip.mms
-2345539147b ./zlib/example.c
-1790959550b ./zlib/FAQ
- 703718503b ./zlib/gzio.c
- 467711448b ./zlib/INDEX
-3009787290b ./zlib/infblock.c
- 34847356b ./zlib/infblock.h
- 763710488b ./zlib/infcodes.c
-3334929562b ./zlib/infcodes.h
-1206037810b ./zlib/inffast.c
-3339512059b ./zlib/inffast.h
- 490193883b ./zlib/inffixed.h
-2412593958b ./zlib/inflate.c
-3025160042b ./zlib/inftrees.c
-2634414216b ./zlib/inftrees.h
- 788977750b ./zlib/infutil.c
-2297950969b ./zlib/infutil.h
-3729200713b ./zlib/Makefile.am
-1429364934b ./zlib/Makefile.in
-3707467235b ./zlib/Makefile.riscos
- 196153738b ./zlib/maketree.c
-3901505907b ./zlib/Make_vms.com
- 229496420b ./zlib/minigzip.c
- 955312409b ./zlib/msdos/Makefile.b32
-3122518693b ./zlib/msdos/Makefile.bor
- 73399342b ./zlib/msdos/Makefile.dj2
- 269847616b ./zlib/msdos/Makefile.emx
-2865241702b ./zlib/msdos/Makefile.msc
- 88126218b ./zlib/msdos/Makefile.tc
-1109774061b ./zlib/msdos/Makefile.w32
- 458881763b ./zlib/msdos/Makefile.wat
- 705831339b ./zlib/msdos/zlib.def
- 3235401b ./zlib/msdos/zlib.rc
-3559516957b ./zlib/nt/Makefile.emx
-1068633629b ./zlib/nt/Makefile.gcc
-3209851797b ./zlib/nt/Makefile.nt
-3298347746b ./zlib/nt/zlib.dnt
-2605576410b ./zlib/os2/Makefile.os2
- 99579017b ./zlib/os2/zlib.def
-2343974137b ./zlib/README
-2789763235b ./zlib/trees.c
- 10665304b ./zlib/trees.h
-1566688640b ./zlib/uncompr.c
-2035162903b ./zlib/zconf.h
-3626005175b ./zlib/zlib.3
-3609968891b ./zlib/zlib.h
- 191319815b ./zlib/zlib.html
- 957671919b ./zlib/zutil.c
-4163685086b ./zlib/zutil.h
diff --git a/contrib/gcc/.cvsignore b/contrib/gcc/.cvsignore
deleted file mode 100644
index 2852f92..0000000
--- a/contrib/gcc/.cvsignore
+++ /dev/null
@@ -1,32 +0,0 @@
-*-all
-*-co
-*-dirs
-*-done
-*-install-info
-*-src
-*-stamp-*
-*-tagged
-blockit
-cfg-paper.info
-config.status
-configure.aux
-configure.cp
-configure.cps
-configure.dvi
-configure.fn
-configure.fns
-configure.ky
-configure.kys
-configure.log
-configure.pg
-configure.pgs
-configure.toc
-configure.tp
-configure.tps
-configure.vr
-configure.vrs
-Makefile
-dir.info
-lost+found
-update.out
-LAST_UPDATED
diff --git a/contrib/gcc/BUGS b/contrib/gcc/BUGS
deleted file mode 100644
index d58a229..0000000
--- a/contrib/gcc/BUGS
+++ /dev/null
@@ -1,594 +0,0 @@
-
- GCC Bugs
-
- The latest version of this document is always available at
- [1]http://www.gnu.org/software/gcc/bugs.html.
- _________________________________________________________________
-
-Table of Contents
-
- * [2]Reporting Bugs
- + [3]What we need
- + [4]What we DON'T want
- + [5]Where to post it
- + [6]Detailed bug reporting instructions
- + [7]Detailed bug reporting instructions for GNAT
- * [8]Managing Bugs (GNATS and the test-suite)
- * [9]Frequently Reported Bugs in GCC
- + [10]General
- + [11]Fortran
- + [12]C
- + [13]C++
- o [14]Common problems updating from G++ 2.95 to G++ 3.0
- o [15]Non-bugs
- o [16]Missing features
- o [17]Parse errors for "simple" code
- o [18]Optimization at -O3 takes a very long time
- _________________________________________________________________
-
- Reporting Bugs
-
- Our preferred way of receiving bugs is via the [19]GCC GNATS bug
- reporting system.
-
- Before you report a bug, please check the [20]list of well-known bugs
- and, if possible in any way, try a current development snapshot. If
- you want to report a bug with versions of GCC before 3.1 we strongly
- recommend upgrading to the current release first.
-
- Before reporting that GCC compiles your code incorrectly, please
- compile it with gcc -Wall and see whether this shows anything wrong
- with your code that could be the cause instead of a bug in GCC.
-
-Summarized bug reporting instructions
-
- After this summary, you'll find detailed bug reporting instructions,
- that explain how to obtain some of the information requested in this
- summary.
-
- What we need
-
- Please include in your bug report all of the following items, the
- first three of which can be obtained from the output of gcc -v:
- * the exact version of GCC;
- * the system type;
- * the options given when GCC was configured/built;
- * the complete command line that triggers the bug;
- * the compiler output (error messages, warnings, etc.); and
- * the preprocessed file (*.i*) that triggers the bug, generated by
- adding -save-temps to the complete compilation command, or, in the
- case of a bug report for the GNAT front end, a complete set of
- source files (see below).
-
- What we do not want
-
- * A source file that #includes header files that are left out of the
- bug report (see above)
- * That source file and a collection of header files.
- * An attached archive (tar, zip, shar, whatever) containing all (or
- some :-) of the above.
- * A code snippet that won't cause the compiler to produce the exact
- output mentioned in the bug report (e.g., a snippet with just a
- few lines around the one that apparently triggers the bug, with
- some pieces replaced with ellipses or comments for extra
- obfuscation :-)
- * The location (URL) of the package that failed to build (we won't
- download it, anyway, since you've already given us what we need to
- duplicate the bug, haven't you? :-)
- * An error that occurs only some of the times a certain file is
- compiled, such that retrying a sufficient number of times results
- in a successful compilation; this is a symptom of a hardware
- problem, not of a compiler bug (sorry)
- * E-mail messages that complement previous, incomplete bug reports.
- Post a new, self-contained, full bug report instead, if possible
- as a follow-up to the original bug report
- * Assembly files (*.s) produced by the compiler, or any binary
- files, such as object files, executables or core files
- * Duplicate bug reports, or reports of bugs already fixed in the
- development tree, especially those that have already been reported
- as fixed last week :-)
- * Bugs in the assembler, the linker or the C library. These are
- separate projects, with separate mailing lists and different bug
- reporting procedures
- * Bugs in releases or snapshots of GCC not issued by the GNU
- Project. Report them to whoever provided you with the release
- * Questions about the correctness or the expected behavior of
- certain constructs that are not GCC extensions. Ask them in forums
- dedicated to the discussion of the programming language
-
- Where to post it
-
- Please submit your bug report directly to the [21]GCC GNATS bug
- database. Only if this is not possible, mail all information to
- [22]bug-gcc@gnu.org or [23]gcc-bugs@gcc.gnu.org.
-
- The GCC lists have message size limits (200 kbytes) and bug reports
- over those limits will currently be bounced. If your bug is larger
- than that, please post it using the [24]GCC GNATS bug database.
-
-Detailed bug reporting instructions
-
- Please refer to the [25]next section when reporting bugs in GNAT, the
- Ada compiler.
-
- In general, all the information we need can be obtained by collecting
- the command line below, as well as its output and the preprocessed
- file it generates.
-
- gcc -v -save-temps all-your-options source-file
-
- Typically the preprocessed file (extension .i for C or .ii for C++)
- will be large, so please compress the resulting file with one of the
- popular compression programs such as bzip2, gzip, zip or compress (in
- decreasing order of preference). Use maximum compression (-9) if
- available. Please include the compressed preprocessor output in your
- bug report, even if the source code is freely available elsewhere; it
- makes the job of our volunteer testers much easier.
-
- The only excuses to not send us the preprocessed sources are (i) if
- you've found a bug in the preprocessor, or (ii) if you've reduced the
- testcase to a small file that doesn't include any other file. If you
- can't post the preprocessed sources because they're proprietary code,
- then try to create a small file that triggers the same problem.
-
- Since we're supposed to be able to re-create the assembly output
- (extension .s), you usually should not include it in the bug report,
- although you may want to post parts of it to point out assembly code
- you consider to be wrong.
-
- Whether to use MIME attachments or uuencode is up to you. In any case,
- make sure the compiler command line, version and error output are in
- plain text, so that we don't have to decode the bug report in order to
- tell who should take care of it. A meaningful subject indicating
- language and platform also helps.
-
- Please avoid posting an archive (.tar, .shar or .zip); we generally
- need just a single file to reproduce the bug (the .i/.ii preprocessed
- file), and, by storing it in an archive, you're just making our
- volunteers' jobs harder. Only when your bug report requires multiple
- source files to be reproduced should you use an archive. In any case,
- make sure the compiler version, error message, etc, are included in
- the body of your bug report as plain text, even if needlessly
- duplicated as part of an archive.
-
- If you fail to supply enough information for a bug report to be
- reproduced, someone will probably ask you to post additional
- information (or just ignore your bug report, if they're in a bad day,
- so try to get it right on the first posting :-). In this case, please
- post the additional information to the bug reporting mailing list, not
- just to the person who requested it, unless explicitly told so. If
- possible, please include in this follow-up all the information you had
- supplied in the incomplete bug report (including the preprocessor
- output), so that the new bug report is self-contained.
-
-Detailed bug reporting instructions for GNAT
-
- See the [26]previous section for bug reporting instructions for GCC
- language implementations other than Ada.
-
- Bug reports have to contain at least the following information in
- order to be useful:
- * the exact version of GCC, as shown by "gcc -v";
- * the system type;
- * the options when GCC was configured/built;
- * the exact command line passed to the gcc program triggering the
- bug (not just the flags passed to gnatmake, but gnatmake prints
- the parameters it passed to gcc)
- * a collection of source files for reproducing the bug, preferably a
- minimal set (see below);
- * a description of the expected behavior;
- * a description of actual behavior.
-
- If your code depends on additional source files (usually package
- specifications), submit the source code for these compilation units in
- a single file that is acceptable input to gnatchop, i.e. contains no
- non-Ada text. If the compilation terminated normally, you can usually
- obtain a list of dependencies using the "gnatls -d main_unit" command,
- where main_unit is the file name of the main compilation unit (which
- is also passed to gcc).
-
- If you report a bug which causes the compiler to print a bug box,
- include that bug box in your report, and do not forget to send all the
- source files listed after the bug box along with your report.
-
- If you use gnatprep, be sure to send in preprocessed sources (unless
- you have to report a bug in gnatprep).
-
- When you have checked that your report meets these criteria, please
- submit it accoding to our [27]generic instructions. (If you use a
- mailing list for reporting, please include an "[Ada]" tag in the
- subject.)
-
- Managing Bugs (GNATS and the test-suite)
-
- This section contains information mostly intended for GCC
- contributors.
-
- If you find a bug, but you are not fixing it (yet):
- 1. Create a (minimal) test-case.
- 2. Add the test-case to our test-suite, marking it as XFAIL unless
- the bug is a regression.
- 3. Add a bug report referencing the test-case to GNATS.
-
- If you fix a bug for which there is already a GNATS entry:
- 1. Remove the XFAIL on the test-case.
- 2. Close the bug report in GNATS.
-
- If you find a bug, and you are fixing it right then:
- 1. Create a (minimal) test-case.
- 2. Add the test-case to our test-suite, marking it as PASS.
- 3. Check in your fixes.
- _________________________________________________________________
-
- Frequently Reported Bugs in GCC
-
-Fortran
-
- Fortran bugs are documented in the G77 manual rather than explicitly
- listed here. Please see [28]Known Causes of Trouble with GNU Fortran
- in the G77 manual.
- _________________________________________________________________
-
-C
-
- The following are not bugs in the C compiler, but are reported often
- enough to warrant a mention here.
-
- Cannot initialize a static variable with stdin.
- This has nothing to do with GCC, but people ask us about it a
- lot. Code like this:
-
-#include <stdio.h>
-
-FILE *yyin = stdin;
-
- will not compile with GNU libc (GNU/Linux libc6), because stdin
- is not a constant. This was done deliberately, to make it
- easier to maintain binary compatibility when the type FILE
- needs to be changed. It is surprising for people used to
- traditional Unix C libraries, but it is permitted by the C
- standard.
-
- This construct commonly occurs in code generated by old
- versions of lex or yacc. We suggest you try regenerating the
- parser with a current version of flex or bison, respectively.
- In your own code, the appropriate fix is to move the
- initialization to the beginning of main.
-
- There is a common misconception that the GCC developers are
- responsible for GNU libc. These are in fact two entirely
- separate projects; please check the [29]GNU libc web pages for
- details.
-
- Cannot use preprocessor directive in macro arguments.
- Let me guess... you wrote code that looks something like this:
-
- memcpy(dest, src,
-#ifdef PLATFORM1
- 12
-#else
- 24
-#endif
- );
-
- and you got a whole pile of error messages:
-
- test.c:11: warning: preprocessing directive not recognized within
- macro arg
- test.c:11: warning: preprocessing directive not recognized within
- macro arg
- test.c:11: warning: preprocessing directive not recognized within
- macro arg
- test.c: In function `foo':
- test.c:6: undefined or invalid # directive
- test.c:8: undefined or invalid # directive
- test.c:9: parse error before `24'
- test.c:10: undefined or invalid # directive
- test.c:11: parse error before `#'
-
- Update: As of GCC 3.2 this kind of construct is always accepted
- and CPP will probably do what you expect, but see the manual
- for detailed semantics.
-
- However, versions of GCC prior to 3.2 did not allow you to put
- #ifdef (or any other directive) inside the arguments of a
- macro. Your C library's <string.h> happens to define memcpy as
- a macro - this is perfectly legitimate. The code therefore
- would not compile.
-
- This kind of code is not portable. It is "undefined behavior"
- according to the C standard; that means different compilers
- will do different things with it. It is always possible to
- rewrite code which uses conditionals inside macros so that it
- doesn't. You could write the above example
-
-#ifdef PLATFORM1
- memcpy(dest, src, 12);
-#else
- memcpy(dest, src, 24);
-#endif
-
- This is a bit more typing, but I personally think it's better
- style in addition to being more portable.
-
- In recent versions of glibc, printf is among the functions
- which are implemented as macros.
- _________________________________________________________________
-
-C++
-
- This is the list of bugs (and non-bugs) in g++ (aka GNU C++) that are
- reported very often, but not yet fixed. While it is certainly better
- to fix bugs instead of documenting them, this document might save
- people the effort of writing a bug report when the bug is already
- well-known. [30]How to report bugs tells you how to report a bug.
-
- There are many reasons why reported bugs don't get fixed. It might be
- difficult to fix, or fixing it might break compatibility. Often,
- reports get a low priority when there is a simple work-around. In
- particular, bugs caused by invalid C++ code have a simple work-around,
- fix the code. Now that there is an agreed ISO/ANSI standard for C++,
- the compiler has a definitive document to adhere to. Earlier versions
- might have accepted source code that is no longer C++. This means that
- code which might have `worked' in a previous version, is now rejected.
- You should update your code to be C++.
-
- You should try to use the latest stable release of the GNU C++
- compiler.
-
- Common problems updating from G++ 2.95 to G++ 3.0
-
- G++ 3.0 conforms much closer to the ISO C++ standard (available at
- [31]http://www.ncits.org/cplusplus.htm).
-
- We have also implemented some of the core and library defect reports
- (available at
- [32]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html &
- [33]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html
- respectively).
- * The ABI has changed. This means that both class layout and name
- mangling is different. You must recompile all c++ libraries (if
- you don't you will get link errors).
- * The standard library is much more conformant, and uses the std::
- namespace.
- * std:: is now a real namespace, not an alias for ::.
- * The standard header files for the c library don't end with .h, but
- begin with c (i.e. <cstdlib> rather than <stdlib.h>). The .h names
- are still available, but are deprecated.
- * <strstream> is deprecated, use <sstream> instead.
- * streambuf::seekoff & streambuf::seekpos are private, instead use
- streambuf::pubseekoff & streambuf::pubseekpos respectively.
- * If std::operator << (std::ostream &, long long) doesn't exist, you
- need to recompile libstdc++ with --enable-long-long.
-
- This means you may get lots of errors about things like strcmp not
- being found. You've most likely forgotton to tell the compiler to look
- in the std:: namespace. There are several ways to do this,
- * Say, std::strcmp at the call. This is the most explicit way of
- saying what you mean.
- * Say, using std::strcmp; somewhere before the call. You will need
- to do this for each function or type you wish to use from the
- standard library.
- * Say, using namespace std; somewhere before the call. This is the
- quick-but-dirty fix. This brings the whole of the std:: namespace
- into scope. Never do this in a header file, as you will be forcing
- users of your header file to do the same.
-
- ABI bugs
-
- 3.0 had a new ABI, which affected class layout, function mangling and
- calling conventions. We had intended it to be complete, unfortunately
- some issues came to light, too late to fix in the 3.0 series. The ABI
- should not change in dot releases, so we addressed most issues in GCC
- 3.1.
-
- Covariant return types
- We do not implement non-trivial covariant returns. We also
- generate incorrect virtual function tables for trivial
- covariance. Although trivial covariance will work, it is
- incompatible with the ABI. GNATS PR 3706 tracks this problem.
-
- Non-bugs
-
- Here are some features that have been reported as bugs, but are not.
-
- Nested classes can access private types of the containing class.
- G++ now implements type access control on member types. Defect
- report 45 clarifies that nested classes are members of the
- class they are nested in, and so are granted access to private
- members of that class.
-
- Classes in exception specifiers must be complete types.
- [15.4]/1 tells you that you cannot have an incomplete type, or
- pointer to incomplete (other than cv void *) in an exception
- specification.
-
- G++ emits two copies of constructors and destructors.
- In general there are three types of constructors (and
- destructors).
-
- 1. The complete object constructor/destructor.
- 2. The base object constructor/destructor.
- 3. The allocating destructor/deallocating destructor.
-
- The first two are different, when virtual base classes are
- involved. In some cases we can do better, and this is logged in
- GNATS.
-
- Exceptions don't work in multithreaded applications.
- You need to rebuild g++ and libstdc++ with --enable-threads.
- Remember, c++ exceptions are not like hardware interrupts. You
- cannot throw an exception in one thread and catch it in
- another. You cannot throw an exception from a signal handler,
- and catch it in the main thread.
-
- Global destructors are not run in the correct order.
- Global destructors should be run in the reverse order of their
- constructors completing. In most cases this is the same as the
- reverse order of constructors starting, but sometimes it is
- different, and that is important. You need to compile and link
- your programs with --use-cxa-atexit. We have not turned this
- switch on by default, as it requires a cxa aware runtime
- library (libc, glibc, or equivalent).
-
- Problems with floating point computations.
- In a number of cases, GCC appears to perform floating point
- computations incorrectly. For example, the program
-
- #include <iostream>
- int main() {
- double min = 0.0;
- double max = 0.5;
- double width = 0.01;
- std::cout << (int)(((max - min) / width) - 1) << std::endl;
- }
-
- might print 50 on some systems and optimization levels, and 51
- on others.
-
- The is the result of rounding: The computer cannot represent
- all real numbers exactly, so it has to use approximations. When
- computing with approximation, the computer needs to round to
- the nearest representable number.
-
- This is not a bug in the compiler, but an inherent limitation
- of the float and double types. Please study [34]this paper for
- more information.
-
- Templates, scoping, and digraphs.
- If you have a class in global namespace, say named X, and want
- to give it as a template argument to some other class, say
- std::vector, then this here fails with a parser error:
- std::vector<::X>.
-
- The reason is that the standard mandates that the sequence <:
- is treated as if it were the token [, and the parser then
- reports a parse error before the character : (by which it means
- the second colon). There are several such combinations of
- characters, and they are called digraphs.
-
- The simplest way to avoid this is to write std::vector< ::X>,
- i.e. place a space between the opening angle bracket and the
- scope operator.
-
- Missing features
-
- We know some things are missing from G++.
-
- The export keyword is not implemented.
- Most C++ compilers (G++ included) do not yet implement export,
- which is necessary for separate compilation of template
- declarations and definitions. Without export, a template
- definition must be in scope to be used. The obvious workaround
- is simply to place all definitions in the header itself.
- Alternatively, the compilation unit containing template
- definitions may be included from the header.
-
- Two stage lookup in templates is not implemented.
- [14.6] specifies how names are looked up inside a template. G++
- does not do this correctly, but for most templates this will
- not be noticeable.
-
- Parse errors for "simple" code
-
- Up to and including GCC 3.0, the compiler will give "parse error" for
- seemingly simple code, such as
-struct A{
- A();
- A(int);
- void func();
-};
-
-struct B{
- B(A);
- B(A,A);
- void func();
-};
-
-void foo(){
- B b(A(),A(1)); //Variable b, initialized with two temporaries
- B(A(2)).func(); //B temporary, initialized with A temporary
-}
-
- The problem is that GCC starts to parse the declaration of b as a
- function b returning B, taking a function returning A as an argument.
- When it sees the 1, it is too late. The work-around in these cases is
- to add additional parentheses around the expressions that are mistaken
- as declarations:
- (B(A(2))).func();
-
- Sometimes, even that is not enough; to show the compiler that this
- should be really an expression, a comma operator with a dummy argument
- can be used:
- B b((0,A()),A(1));
-
- Another example is the parse error for the return statement in
-struct A{};
-
-struct B{
- A a;
- A f1(bool);
-};
-
-A B::f1(bool b)
-{
- if (b)
- return (A());
- return a;
-}
-
- The problem is that the compiler interprets A() as a function (taking
- no arguments, returning A), and (A()) as a cast - with a missing
- expression, hence the parse error. The work-around is to omit the
- parentheses:
- if (b)
- return A();
-
- This problem occurs in a number of variants; in throw statements,
- people also frequently put the object in parentheses. The exact error
- also somewhat varies with the compiler version. The work-arounds
- proposed do not change the semantics of the program at all; they make
- them perhaps less readable.
-
- Optimization at -O3 takes a very long time
-
- At -O3, all functions are candidates for inlining. The heuristic used
- has some deficiencies which show up when allowed such freedom. This is
- g++ specific, as it has an earlier inliner than gcc.
-
-References
-
- 1. http://www.gnu.org/software/gcc/bugs.html
- 2. http://gcc.gnu.org/bugs.html#report
- 3. http://gcc.gnu.org/bugs.html#need
- 4. http://gcc.gnu.org/bugs.html#dontwant
- 5. http://gcc.gnu.org/bugs.html#where
- 6. http://gcc.gnu.org/bugs.html#detailed
- 7. http://gcc.gnu.org/bugs.html#gnat
- 8. http://gcc.gnu.org/bugs.html#manage
- 9. http://gcc.gnu.org/bugs.html#known
- 10. http://gcc.gnu.org/bugs.html#general
- 11. http://gcc.gnu.org/bugs.html#fortran
- 12. http://gcc.gnu.org/bugs.html#c
- 13. http://gcc.gnu.org/bugs.html#cplusplus
- 14. http://gcc.gnu.org/bugs.html#updating
- 15. http://gcc.gnu.org/bugs.html#nonbugs
- 16. http://gcc.gnu.org/bugs.html#missing
- 17. http://gcc.gnu.org/bugs.html#parsing
- 18. http://gcc.gnu.org/bugs.html#-O3
- 19. http://gcc.gnu.org/gnats.html
- 20. http://gcc.gnu.org/bugs.html#known
- 21. http://gcc.gnu.org/gnats.html
- 22. mailto:bug-gcc@gnu.org
- 23. mailto:gcc-bugs@gcc.gnu.org
- 24. http://gcc.gnu.org/gnats.html
- 25. http://gcc.gnu.org/bugs.html#gnat
- 26. http://gcc.gnu.org/bugs.html#detailed
- 27. http://gcc.gnu.org/bugs.html#where
- 28. http://gcc.gnu.org/onlinedocs/g77/Trouble.html
- 29. http://www.gnu.org/software/glibc/
- 30. http://gcc.gnu.org/bugs.html#report
- 31. http://www.ncits.org/cplusplus.htm
- 32. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html
- 33. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html
- 34. http://www.validlab.com/goldberg/paper.ps
diff --git a/contrib/gcc/NEWS b/contrib/gcc/NEWS
deleted file mode 100644
index 3c7aeeb..0000000
--- a/contrib/gcc/NEWS
+++ /dev/null
@@ -1,2446 +0,0 @@
-This file contains information about GCC releases which has been generated
-automatically from the online release notes. It covers releases of GCC
-(and the former EGCS project) since EGCS 1.0, on the line of development
-that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
-see ONEWS.
-
-======================================================================
-http://gcc.gnu.org/gcc-3.2/index.html
-
- GCC 3.2
-
- November 19, 2002
-
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.2.1.
-
- The links below still apply to GCC 3.2.1.
-
- August 14, 2002
-
- The [2]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.2.
-
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
-
- A list of [3]successful builds is updated as new information becomes
- available.
-
- The GCC developers would like to thank the numerous people that have
- contributed [4]new features, improvements, bug fixes, and other
- changes as well as test results to GCC. This [5]amazing group of
- volunteers is what makes GCC successful.
-
- For additional information about GCC please refer to the [6]GCC
- project web site or contact the [7]GCC development mailing list.
-
- To obtain GCC please use [8]our mirror sites, one of the [9]GNU mirror
- sites, or [10]our CVS server.
- _________________________________________________________________
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [11]gnu@gnu.org. There
- are also [12]other ways to contact the FSF.
-
- These pages are maintained by [13]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [14]gcc@gnu.org or [15]gcc@gcc.gnu.org, send other
- questions to [16]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-18 [17]Valid XHTML 1.0
-
-References
-
- 1. http://www.gnu.org/
- 2. http://www.gnu.org/
- 3. http://gcc.gnu.org/gcc-3.2/buildstat.html
- 4. http://gcc.gnu.org/gcc-3.2/changes.html
- 5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 6. http://gcc.gnu.org/index.html
- 7. mailto:gcc@gcc.gnu.org
- 8. http://gcc.gnu.org/mirrors.html
- 9. http://www.gnu.org/order/ftp.html
- 10. http://gcc.gnu.org/cvs.html
- 11. mailto:gnu@gnu.org
- 12. http://www.gnu.org/home.html#ContactInfo
- 13. http://gcc.gnu.org/about.html
- 14. mailto:gcc@gnu.org
- 15. mailto:gcc@gcc.gnu.org
- 16. mailto:gnu@gnu.org
- 17. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.2/changes.html
-
- Changes in GCC 3.2.1
-
-C/C++/Objective-C
-
- * The method of constructing the list of directories to be searched
- for header files has been revised. If a directory named by a -I
- option is a standard system include directory, the option is
- ignored to ensure that the default search order for system
- directories and the special treatment of system header files are
- not defeated.
- * The C and Objective-C compilers no longer accept the "Naming
- Types" extension (typedef foo = bar); it was already unavailable
- in C++. Code which uses it will need to be changed to use the
- "typeof" extension instead: typedef typeof(bar) foo. (We have
- removed this extension without a period of deprecation because it
- has caused the compiler to crash since version 3.0 and no one
- noticed until very recently. Thus we conclude it is not in
- widespread use.)
-
-New Targets and Target Specific Improvements
-
- IA-32
-
- * Fixed a number of bugs in SSE and MMX intrinsics.
- * Fixed common compiler crashes with SSE instruction set enabled
- (implied by -march=pentium3, pentium4, athlon-xp)
- * __m128 and __m128i is not 128bit aligned when used in structures.
-
- x86-64
-
- * A bug whereby the compiler could generate bad code for bzero has
- been fixed.
- * ABI fixes (implying ABI incompatibilities with previous version in
- some corner cases)
- * Fixed prefetch code generation
-
-Bug Fixes
-
- See [1]this message for a list of bugs fixed in this release.
-
- Changes in GCC 3.2
-
-Bug Fixes
-
- See [2]this message for a list of bugs fixed in this release.
-
-Caveats
-
- * The C++ compiler does not correctly zero-initialize
- pointers-to-data members. You must explicitly initialize them. For
- example:
- int S::*m(0);
-
- will work, but depending on default-initialization to zero will
- not work. This bug cannot be fixed in GCC 3.2 without inducing
- unacceptable risks. It will be fixed in GCC 3.3.
- * This GCC release is based on the GCC 3.1 sourcebase, and thus has
- all the [3]changes in the GCC 3.1 series. In addition, GCC 3.2 has
- a number of C++ ABI fixes which make its C++ compiler generate
- binary code which is incompatible with the C++ compilers found in
- earlier GCC releases, including GCC 3.1 and GCC 3.1.1.
-
-New Languages and Language specific improvements
-
- C++
-
- * There are now no known differences between the C++ ABI implemented
- in GCC and the multi-vendor standard. We believe that the ABI for
- the C++ standard library is now stable and will not change in
- future versions of the compiler. However, hard experience has
- taught us to be cautious; it is possible that more problems will
- be found. It is our intention to make changes to the ABI only if
- they are necessary for correct compilation of C++, as opposed to
- conformance to the ABI documents.
- * For details on how to build an ABI compliant compiler for
- GNU/Linux systems, check the [4]common C++ ABI page.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [5]gnu@gnu.org. There
- are also [6]other ways to contact the FSF.
-
- These pages are maintained by [7]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [8]gcc@gnu.org or [9]gcc@gcc.gnu.org, send other
- questions to [10]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-18 [11]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/ml/gcc/2002-11/msg00445.html
- 2. http://gcc.gnu.org/ml/gcc/2002-08/msg00405.html
- 3. http://gcc.gnu.org/gcc-3.1/changes.html
- 4. http://gcc.gnu.org/gcc-3.2/c++-abi.html
- 5. mailto:gnu@gnu.org
- 6. http://www.gnu.org/home.html#ContactInfo
- 7. http://gcc.gnu.org/about.html
- 8. mailto:gcc@gnu.org
- 9. mailto:gcc@gcc.gnu.org
- 10. mailto:gnu@gnu.org
- 11. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.1/index.html
-
- GCC 3.1
-
- July 27, 2002
-
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.1.1.
-
- The links below still apply to GCC 3.1.1.
-
- May 15, 2002
-
- The [2]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.1.
-
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
-
- A list of [3]successful builds is updated as new information becomes
- available.
-
- The GCC developers would like to thank the numerous people that have
- contributed [4]new features, improvements, bug fixes, and other
- changes as well as test results to GCC. This [5]amazing group of
- volunteers is what makes GCC successful.
-
- For additional information about GCC please refer to the [6]GCC
- project web site or contact the [7]GCC development mailing list.
-
- To obtain GCC please use [8]our mirror sites, one of the [9]GNU mirror
- sites, or [10]our CVS server.
- _________________________________________________________________
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [11]gnu@gnu.org. There
- are also [12]other ways to contact the FSF.
-
- These pages are maintained by [13]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [14]gcc@gnu.org or [15]gcc@gcc.gnu.org, send other
- questions to [16]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [17]Valid XHTML 1.0
-
-References
-
- 1. http://www.gnu.org/
- 2. http://www.gnu.org/
- 3. http://gcc.gnu.org/gcc-3.1/buildstat.html
- 4. http://gcc.gnu.org/gcc-3.1/changes.html
- 5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 6. http://gcc.gnu.org/index.html
- 7. mailto:gcc@gcc.gnu.org
- 8. http://gcc.gnu.org/mirrors.html
- 9. http://www.gnu.org/order/ftp.html
- 10. http://gcc.gnu.org/cvs.html
- 11. mailto:gnu@gnu.org
- 12. http://www.gnu.org/home.html#ContactInfo
- 13. http://gcc.gnu.org/about.html
- 14. mailto:gcc@gnu.org
- 15. mailto:gcc@gcc.gnu.org
- 16. mailto:gnu@gnu.org
- 17. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.1/changes.html
-
- GCC 3.1 Changes, New Features, and Fixes
-
-Additional changes in GCC 3.1.1
-
- * A bug related to how structures and unions are returned has been
- fixed for powerpc-*-netbsd*.
- * An important bug in the implementation of -fprefetch-loop-arrays
- has been fixed. Previously the optimization prefetched random
- blocks of memory for most targets except for i386.
- * The Java compiler now compiles Java programs much faster and also
- works with parallel make.
- * Nested functions have been fixed for mips*-*-netbsd*.
- * Some missing floating point support routines have beed added for
- mips*-*-netbsd*.
- * This [1]message gives additional information about the bugs fixed
- in this release.
-
-Caveats
-
- * The -traditional C compiler option has been deprecated and will be
- removed in GCC 3.3. (It remains possible to preprocess non-C code
- with the traditional preprocessor.)
- * The default debugging format for most ELF platforms (including
- GNU/Linux and FreeBSD; notable exception is Solaris) has changed
- from stabs to DWARF2. This requires GDB 5.1.1 or later.
-
-General Optimizer Improvements
-
- * Jan Hubicka, SuSE Labs, together with Richard Henderson, Red Hat,
- and Andreas Jaeger, SuSE Labs, has contributed [2]infrastructure
- for profile driven optimizations.
- Options -fprofile-arcs and -fbranch-probabilities can now be used
- to improve speed of the generated code by profiling the actual
- program behaviour on typical runs. In the absence of profile info
- the compiler attempts to guess the profile statically.
- * [3]SPEC2000 and [4]SPEC95 benchmark suites are now used daily to
- monitor performance of the generated code.
- According to the SPECInt2000 results on an AMD Athlon CPU, the
- code generated by GCC 3.1 is 6% faster on the average (8.2% faster
- with profile feedback) compared to GCC 3.0. The code produced by
- GCC 3.0 is about 2.1% faster compared to 2.95.3. Tests were done
- using the -O2 -march=athlon command-line options.
- * Alexandre Oliva, of [5]Red Hat, has generalized the tree inlining
- infrastructure developed by [6]CodeSourcery, LLC for the C++ front
- end, so that it is now used in the C front end too. Inlining
- functions as trees exposes them earlier to the compiler, giving it
- more opportunities for optimization.
- * Support for data prefetching instructions has been added to the
- GCC back end and several targets. A new __builtin_prefetch
- intrinsic is available to explicitly insert prefetch instructions
- and experimental support for loop array prefetching has been added
- (see -fprefetch-loop-array documentation).
- * Support for emitting debugging information for macros has been
- added for DWARF2. It is activated using -g3.
-
-New Languages and Language specific improvements
-
- C/C++
-
- * A few more [7]ISO C99 features.
- * The preprocessor is 10-50% faster than the preprocessor in GCC
- 3.0.
- * The preprocessor's symbol table has been merged with the symbol
- table of the C, C++ and Objective-C front ends.
- * The preprocessor consumes less memory than the preprocessor in GCC
- 3.0, often significantly so. On normal input files, it typically
- consumes less memory than pre-3.0 cccp-based GCC, too.
-
- C++
-
- * -fhonor-std and -fno-honor-std have been removed. -fno-honor-std
- was a workaround to allow std compliant code to work with the
- non-std compliant libstdc++-v2. libstdc++-v3 is std compliant.
- * The C++ ABI has been fixed so that void (A::*)() const is mangled
- as "M1AKFvvE", rather than "MK1AFvvE" as before. This change only
- affects pointer to cv-qualified member function types.
- * The C++ ABI has been changed to correctly handle this code:
- struct A {
- void operator delete[] (void *, size_t);
- };
-
- struct B : public A {
- };
-
- new B[10];
-
- The amount of storage allocated for the array will be greater than
- it was in 3.0, in order to store the number of elements in the
- array, so that the correct size can be passed to operator delete[]
- when the array is deleted. Previously, the value passed to
- operator delete[] was unpredictable.
- This change will only affect code that declares a two-argument
- operator delete[] with a second parameter of type size_t in a base
- class, and does not override that definition in a derived class.
- * The C++ ABI has been changed so that:
- struct A {
- void operator delete[] (void *, size_t);
- void operator delete[] (void *);
- };
-
- does not cause unnecessary storage to be allocated when an array
- of A objects is allocated.
- This change will only affect code that declares both of these
- forms of operator delete[], and declared the two-argument form
- before the one-argument form.
- * The C++ ABI has been changed so that when a parameter is passed by
- value, any cleanup for that parameter is performed in the caller,
- as specified by the ia64 C++ ABI, rather than the called function
- as before. As a result, classes with a non-trivial destructor but
- a trivial copy constructor will be passed and returned by
- invisible reference, rather than by bitwise copy as before.
- * G++ now supports the "named return value optimization": for code
- like
- A f () {
- A a;
- ...
- return a;
- }
-
- G++ will allocate a in the return value slot, so that the return
- becomes a no-op. For this to work, all return statements in the
- function must return the same variable.
- * Improvements to the C++ library are listed in [8]the libstdc++-v3
- FAQ.
-
- Objective-C
-
- * Annoying linker warnings (due to incorrect code being generated)
- have been fixed.
- * If a class method cannot be found, the compiler no longer issues a
- warning if a corresponding instance method exists in the root
- class.
- * Forward @protocol declarations have been fixed.
- * Loading of categories has been fixed in certain situations (GNU
- run time only).
- * The class lookup in the run-time library has been rewritten so
- that class method dispatch is more than twice as fast as it used
- to be (GNU run time only).
-
- Java
-
- * libgcj now includes RMI, java.lang.ref.*, javax.naming, and
- javax.transaction.
- * Property files and other system resources can be compiled into
- executables which use libgcj using the new gcj --resource feature.
- * libgcj has been ported to more platforms. In particular there is
- now a mostly-functional mingw32 (Windows) target port.
- * JNI and CNI invocation interfaces were implemented, so
- gcj-compiled Java code can now be called from a C/C++ application.
- * gcj can now use builtin functions for certain known methods, for
- instance Math.cos.
- * gcj can now automatically remove redundant array-store checks in
- some common cases.
- * The --no-store-checks optimization option was added. This can be
- used to omit runtime store checks for code which is known not to
- throw ArrayStoreException
- * The following third party interface standards were added to
- libgcj: org.w3c.dom and org.xml.sax.
- * java.security has been merged with GNU Classpath. The new package
- is now JDK 1.2 compliant, and much more complete.
- * A bytecode verifier was added to the libgcj interpreter.
- * java.lang.Character was rewritten to comply with the Unicode 3.0
- standard, and improve performance.
- * Partial support for many more locales was added to libgcj.
- * Socket timeouts have been implemented.
- * libgcj has been merged into a single shared library. There are no
- longer separate shared libraries for the garbage collector and
- zlib.
- * Several performance improvements were made to gcj and libgcj:
- + Hash synchronization (thin locks)
- + A special allocation path for finalizer-free objects
- + Thread-local allocation
- + Parallel GC, and other GC tweaks
-
- Fortran
-
- Fortran improvements are listed in [9]the Fortran documentation.
-
- Ada
-
- [10]Ada Core Technologies, Inc, has contributed its GNAT Ada 95 front
- end and associated tools. The GNAT compiler fully implements the Ada
- language as defined by the ISO/IEC 8652 standard.
-
- Please note that the integration of the Ada front end is still work in
- progress.
-
-New Targets and Target Specific Improvements
-
- * Hans-Peter Nilsson has contributed a port to [11]MMIX, the CPU
- architecture used in new editions of Donald E. Knuth's The Art of
- Computer Programming.
- * [12]Axis Communications has contributed its port to the CRIS CPU
- architecture, used in the ETRAX system-on-a-chip series. See
- [13]Axis' developer site for technical information.
- * Alexandre Oliva, of [14]Red Hat, has contributed a port to the
- [15]SuperH SH5 64-bit RISC microprocessor architecture, extending
- the existing SH port.
- * UltraSPARC is fully supported in 64-bit mode. The option -m64
- enables it.
- * For compatibility with the Sun compiler #pragma redefine_extname
- has been implemented on Solaris.
- * The x86 back end has had some noticeable work done to it.
- + [16]SuSE Labs developers Jan Hubicka, Bo Thorsen and Andreas
- Jaeger have contributed a port to the AMD x86-64
- architecture. For more information on x86-64 see
- [17]http://www.x86-64.org.
- + The compiler now supports MMX, 3DNow!, SSE, and SSE2
- instructions. Options -mmmx, -m3dnow, -msse, and -msse2 will
- enable the respective instruction sets. Intel C++ compatible
- MMX/3DNow!/SSE intrinsics are implemented. SSE2 intrinsics
- will be added in next major release.
- + Following those improvements, targets for Pentium MMX, K6-2,
- K6-3, Pentium III, Pentium 4, and Athlon 4 Mobile/XP/MP were
- added. Refer to the documentation on -march= and -mcpu=
- options for details.
- + For those targets that support it, -mfpmath=sse will cause
- the compiler to generate SSE/SSE2 instructions for floating
- point math instead of x87 instructions. Usually, this will
- lead to quicker code -- especially on the Pentium 4. Note
- that only scalar floating point instructions are used and GCC
- does not exploit SIMD features yet.
- + Prefetch support has been added to the Pentium III, Pentium
- 4, K6-2, K6-3, and Athlon series.
- + Code generated for floating point to integer converisons has
- been improved leading to better performance of many 3D
- applications.
- * The PowerPC back end has added 64-bit PowerPC GNU/Linux support.
- * C++ support for AIX has been improved.
- * Aldy Hernandez, of [18]Red Hat, Inc has contributed extensions to
- the PowerPC port supporting the AltiVec programming model (SIMD).
- The support, though presently useful, is experimental and is
- expected to stabilize for 3.2. The support is written to conform
- to Motorola's AltiVec specs. See -maltivec.
-
-Obsolete Systems
-
- Support for a number of older systems has been declared obsolete in
- GCC 3.1. Unless there is activity to revive them, the next release of
- GCC will have their sources permanently removed.
-
- All configurations of the following processor architectures have been
- declared obsolete:
- * MIL-STD-1750A, 1750a-*-*
- * AMD A29k, a29k-*-*
- * Convex, c*-convex-*
- * Clipper, clipper-*-*
- * Elxsi, elxsi-*-*
- * Intel i860, i860-*-*
- * Sun picoJava, pj-*-* and pjl-*-*
- * Western Electric 32000, we32k-*-*
-
- Most configurations of the following processor architectures have been
- declared obsolete, but we are preserving a few systems which may have
- active developers. It is unlikely that the remaining systems will
- survive much longer unless we see definite signs of port activity.
- * Motorola 88000 except
- + Generic a.out, m88k-*-aout*
- + Generic SVR4, m88k-*-sysv4
- + OpenBSD, m88k-*-openbsd*
- * NS32k except
- + NetBSD, ns32k-*-netbsd*
- + OpenBSD, ns32k-*-openbsd*.
- * ROMP except
- + OpenBSD, romp-*-openbsd*.
-
- Finally, only some configurations of these processor architectures are
- being obsoleted.
- * Alpha:
- + OSF/1, alpha*-*-osf[123]*. (Digital Unix and Tru64 Unix, aka
- alpha*-*-osf[45], are still supported.)
- * ARM:
- + RISCiX, arm-*-riscix*.
- * i386:
- + 386BSD, i?86-*-bsd*
- + Chorus, i?86-*-chorusos*
- + DG/UX, i?86-*-dgux*
- + FreeBSD 1.x, i?86-*-freebsd1.*
- + IBM AIX, i?86-*-aix*
- + ISC UNIX, i?86-*-isc*
- + Linux with pre-BFD linker, i?86-*-linux*oldld*
- + NEXTstep, i?86-next-*
- + OSF UNIX, i?86-*-osf1* and i?86-*-osfrose*
- + RTEMS/coff, i?86-*-rtemscoff*
- + RTEMS/go32, i?86-go32-rtems*
- + Sequent/BSD, i?86-sequent-bsd*
- + Sequent/ptx before version 3, i?86-sequent-ptx[12]* and
- i?86-sequent-sysv3*
- + SunOS, i?86-*-sunos*
- * Motorola 68000:
- + Altos, m68[k0]*-altos-*
- + Apollo, m68[k0]*-apollo-*
- + Apple A/UX, m68[k0]*-apple-*
- + Bull, m68[k0]*-bull-*
- + Convergent, m68[k0]*-convergent-*
- + Generic SVR3, m68[k0]*-*-sysv3*
- + ISI, m68[k0]*-isi-*
- + LynxOS, m68[k0]*-*-lynxos*
- + NEXT, m68[k0]*-next-*
- + RTEMS/coff, m68[k0]*-*-rtemscoff*
- + Sony, m68[k0]*-sony-*
- * MIPS:
- + DEC Ultrix, mips-*-ultrix* and mips-dec-*
- + Generic BSD, mips-*-bsd*
- + Generic System V, mips-*-sysv*
- + IRIX before version 5, mips-sgi-irix[1234]*
- + RiscOS, mips-*-riscos*
- + Sony, mips-sony-*
- + Tandem, mips-tandem-*
- * SPARC:
- + RTEMS/a.out, sparc-*-rtemsaout*.
-
-Documentation improvements
-
- * The old manual ("Using and Porting the GNU Compiler Collection")
- has been replaced by a users manual ("Using the GNU Compiler
- Collection") and a separate internals reference manual ("GNU
- Compiler Collection Internals").
- * More complete and much improved documentation about GCC's internal
- representation used by the C and C++ front ends.
- * Many cleanups and improvements in general.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [19]gnu@gnu.org. There
- are also [20]other ways to contact the FSF.
-
- These pages are maintained by [21]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [22]gcc@gnu.org or [23]gcc@gcc.gnu.org, send other
- questions to [24]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [25]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/ml/gcc/2002-07/msg01208.html
- 2. http://gcc.gnu.org/news/profiledriven.html
- 3. http://www.suse.de/~aj/SPEC/
- 4. http://people.redhat.com/dnovillo/SPEC/
- 5. http://www.redhat.com/
- 6. http://www.codesourcery.com/
- 7. http://gcc.gnu.org/gcc-3.1/c99status.html
- 8. http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#4_1
- 9. http://gcc.gnu.org/onlinedocs/g77/News.html
- 10. http://www.gnat.com/
- 11. http://www-cs-faculty.stanford.edu/~knuth/mmix.html
- 12. http://www.axis.com/
- 13. http://developer.axis.com/
- 14. http://www.redhat.com/
- 15. http://www.superh.com/
- 16. http://www.suse.com/
- 17. http://www.x86-64.org/
- 18. http://www.redhat.com/
- 19. mailto:gnu@gnu.org
- 20. http://www.gnu.org/home.html#ContactInfo
- 21. http://gcc.gnu.org/about.html
- 22. mailto:gcc@gnu.org
- 23. mailto:gcc@gcc.gnu.org
- 24. mailto:gnu@gnu.org
- 25. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.0/gcc-3.0.html
-
- GCC 3.0.4
-
- February 20, 2002
-
- The [1]GNU project and the GCC developers are pleased to announce the
- release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0
- series.
-
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
-
- GCC 3.0.x has several new optimizations, new targets, new languages
- and many other new features, relative to GCC 2.95.x. See the [2]new
- features page for a more complete list.
-
- A list of [3]successful builds is updated as new information becomes
- available.
-
- The GCC developers would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc to GCC. This
- [4]amazing group of volunteers is what makes GCC successful.
-
- And finally, we can't in good conscience fail to mention some
- [5]caveats to using GCC 3.0.x.
-
- For additional information about GCC please refer to the [6]GCC
- project web site or contact the [7]GCC development mailing list.
-
- To obtain GCC please use [8]our mirror sites, one of the [9]GNU mirror
- sites, or [10]our CVS server.
- _________________________________________________________________
-
-Previous 3.0.x Releases
-
- December 20, 2001: GCC 3.0.3 has been released.
- October 25, 2001: GCC 3.0.2 has been released.
- August 20, 2001: GCC 3.0.1 has been released.
- June 18, 2001: GCC 3.0 has been released.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [11]gnu@gnu.org. There
- are also [12]other ways to contact the FSF.
-
- These pages are maintained by [13]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [14]gcc@gnu.org or [15]gcc@gcc.gnu.org, send other
- questions to [16]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [17]Valid XHTML 1.0
-
-References
-
- 1. http://www.gnu.org/
- 2. http://gcc.gnu.org/gcc-3.0/features.html
- 3. http://gcc.gnu.org/gcc-3.0/buildstat.html
- 4. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 5. http://gcc.gnu.org/gcc-3.0/caveats.html
- 6. http://gcc.gnu.org/index.html
- 7. mailto:gcc@gcc.gnu.org
- 8. http://gcc.gnu.org/mirrors.html
- 9. http://www.gnu.org/order/ftp.html
- 10. http://gcc.gnu.org/cvs.html
- 11. mailto:gnu@gnu.org
- 12. http://www.gnu.org/home.html#ContactInfo
- 13. http://gcc.gnu.org/about.html
- 14. mailto:gcc@gnu.org
- 15. mailto:gcc@gcc.gnu.org
- 16. mailto:gnu@gnu.org
- 17. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.0/features.html
-
- GCC 3.0 New Features
-
-Additional changes in GCC 3.0.4
-
- * GCC 3.0 now supports newer versions of the [1]NetBSD operating
- system, which use the ELF object file format, on x86 processors.
- * Correct debugging information is generated from functions that
- have lines from multiple files (e.g. yacc output).
- * A fix for whitespace handling in the -traditional preprocessor,
- which can affect Fortran.
- * Fixes to the exception handling runtime.
- * More fixes for bad code generation in C++.
- * A fix for shared library generation under AIX 4.3.
- * Documentation updates.
- * Port of GCC to Tensilica's Xtensa processor contributed.
- * A fix for compiling the PPC Linux kernel (FAT fs wouldn't link).
-
-Additional changes in GCC 3.0.3
-
- * A fix to correct an accidental change to the PowerPC ABI.
- * Fixes for bad code generation on a variety of architectures.
- * Improvements to the debugging information generated for C++
- classes.
- * Fixes for bad code generation in C++.
- * A fix to avoid crashes in the C++ demangler.
- * A fix to the C++ standard library to avoid buffer overflows.
- * Miscellaneous improvements for a variety of architectures.
-
-Additional changes in GCC 3.0.2
-
- * Fixes for bad code generation during loop unrolling.
- * Fixes for bad code generation by the sibling call optimization.
- * Minor improvements to x86 code generation.
- * Implemenation of function descriptors in C++ vtables for IA64.
- * Numerous minor bug-fixes.
-
-Additional changes in GCC 3.0.1
-
- * C++ fixes for incorrect code-generation.
- * Improved cross-compiling support for the C++ standard library.
- * Fixes for some embedded targets that worked in GCC 2.95.3, but not
- in GCC 3.0.
- * Fixes for various exception-handling bugs.
- * A port to the S/390 architecture.
-
-General Optimizer Improvements
-
- * [2]Basic block reordering pass.
- * New if-conversion pass with support for conditional (predicated)
- execution.
- * New tail call and sibling call elimination optimizations.
- * New register renaming pass.
- * New (experimental) [3]static single assignment (SSA)
- representation support.
- * New dead-code elimination pass implemented using the SSA
- representation.
- * [4]Global null pointer test elimination.
- * [5]Global code hoisting/unification.
- * More builtins and optimizations for stdio.h, string.h and old BSD
- functions, as well as for ISO C99 functions.
- * New builtin __builtin_expect for giving hints to the branch
- predictor.
-
-New Languages and Language specific improvements
-
- * The GNU Compiler for the Java(TM) language (GCJ) is now integrated
- and supported, including the run-time library containing most
- common non-GUI Java classes, a bytecode interpreter, and the Boehm
- conservative garbage collector. Many bugs have been fixed. GCJ can
- compile Java source or Java bytecodes to either native code or
- Java class files, and supports native methods written in either
- the standard JNI or the more efficient and convenient CNI.
- * Here is a [6]partial list of C++ improvements, both new features
- and those no longer supported.
- * New C++ ABI. On the IA-64 platform GCC is capable of
- inter-operating with other IA-64 compilers.
- * The new ABI also significantly reduces the size of symbol and
- debug information.
- * New [7]C++ support library and many C++ bug fixes, vastly
- improving our conformance to the ISO C++ standard.
- * New [8]inliner for C++.
- * Rewritten C preprocessor, integrated into the C, C++ and Objective
- C compilers, with very many improvements including ISO C99 support
- and [9]improvements to dependency generation.
- * Support for more [10]ISO C99 features.
- * Many improvements to support for checking calls to format
- functions such as printf and scanf, including support for ISO C99
- format features, extensions from the Single Unix Specification and
- GNU libc 2.2, checking of strfmon formats and features to assist
- in auditing for format string security bugs.
- * New warnings for C code that may have undefined semantics because
- of violations of sequence point rules in the C standard (such as a
- = a++;, a[n] = b[n++]; and a[i++] = i;), included in -Wall.
- * Additional warning option -Wfloat-equal.
- * Improvements to -Wtraditional.
- * Fortran improvements are listed in [11]the Fortran documentation.
-
-New Targets and Target Specific Improvements
-
- * New x86 back-end, generating much improved code.
- * Support for a generic i386-elf target contributed.
- * New option to emit x86 assembly code using Intel style syntax
- (-mintel-syntax).
- * HPUX 11 support contributed.
- * Improved PowerPC code generation, including scheduled prologue and
- epilogue.
- * Port of GCC to Intel's IA-64 processor contributed.
- * Port of GCC to Motorola's MCore 210 and 340 contributed.
- * New unified back-end for Arm, Thumb and StrongArm contributed.
- * Port of GCC to Intel's XScale processor contributed.
- * Port of GCC to Atmel's AVR microcontrollers contributed.
- * Port of GCC to Mitsubishi's D30V processor contributed.
- * Port of GCC to Matsushita's AM33 processor (a member of the
- MN10300 processor family) contributed.
- * Port of GCC to Fujitsu's FR30 processor contributed.
- * Port of GCC to Motorola's 68HC11 and 68HC12 processors
- contributed.
- * Port of GCC to Sun's picoJava processor core contributed.
-
-Documentation improvements
-
- * Substantially rewritten and improved C preprocessor manual.
- * Many improvements to other documentation.
- * Manpages for gcc, cpp and gcov are now generated automatically
- from the master Texinfo manual, eliminating the problem of
- manpages being out of date. (The generated manpages are only
- extracts from the full manual, which is provided in Texinfo form,
- from which info, HTML, other formats and a printed manual can be
- generated.)
- * Generated info files are included in the release tarballs
- alongside their Texinfo sources, avoiding problems on some
- platforms with building makeinfo as part of the GCC distribution.
-
-Other significant improvements
-
- * Garbage collection used internally by the compiler for most memory
- allocation instead of obstacks.
- * Lengauer and Tarjan algorithm used for computing dominators in the
- CFG. This algorithm can be significantly faster and more space
- efficient than our older algorithm.
- * gccbug script provided to assist in submitting bug reports to the
- GCC GNATS bug tracking database. (Bug reports previously submitted
- directly to the GCC mailing lists, for which no GNATS bug tracking
- number has been received, should be submitted again to the bug
- tracking database using gccbug if you can reproduce the problem
- with GCC 3.0.)
- * The internal libgcc library is [12]built as a shared library on
- systems that support it.
- * Extensive testsuite included with GCC, with many new tests. In
- addition to tests for GCC bugs that have been fixed, many tests
- have been added for language features, compiler warnings and
- builtin functions.
- * Additional language-independent warning options -Wpacked,
- -Wpadded, -Wunreachable-code and -Wdisabled-optimization.
- * Target-independent options -falign-functions, -falign-loops and
- -falign-jumps.
-
- Plus a great many bugfixes and almost all the [13]features found in
- GCC 2.95.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [14]gnu@gnu.org. There
- are also [15]other ways to contact the FSF.
-
- These pages are maintained by [16]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [17]gcc@gnu.org or [18]gcc@gcc.gnu.org, send other
- questions to [19]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [20]Valid XHTML 1.0
-
-References
-
- 1. http://www.netbsd.org/
- 2. http://gcc.gnu.org/news/reorder.html
- 3. http://gcc.gnu.org/news/ssa.html
- 4. http://gcc.gnu.org/news/null.html
- 5. http://gcc.gnu.org/news/unify.html
- 6. http://gcc.gnu.org/gcc-3.0/c++features.html
- 7. http://gcc.gnu.org/libstdc++/
- 8. http://gcc.gnu.org/news/inlining.html
- 9. http://gcc.gnu.org/news/dependencies.html
- 10. http://gcc.gnu.org/gcc-3.0/c99status.html
- 11. http://gcc.gnu.org/onlinedocs/g77/News.html
- 12. http://gcc.gnu.org/gcc-3.0/libgcc.html
- 13. http://gcc.gnu.org/gcc-2.95/features.html
- 14. mailto:gnu@gnu.org
- 15. http://www.gnu.org/home.html#ContactInfo
- 16. http://gcc.gnu.org/about.html
- 17. mailto:gcc@gnu.org
- 18. mailto:gcc@gcc.gnu.org
- 19. mailto:gnu@gnu.org
- 20. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-3.0/caveats.html
-
- GCC 3.0 Caveats
-
- * -fstrict-aliasing is now part of -O2 and higher optimization
- levels. This allows the compiler to assume the strictest aliasing
- rules applicable to the language being compiled. For C and C++,
- this activates optimizations based on the type of expressions.
- This optimization may thus break old, non-compliant code.
- * Enumerations are now properly promoted to int in function
- parameters and function returns. Normally this change is not
- visible, but when using -fshort-enums this is an ABI change.
- * The undocumented extension that allowed C programs to have a label
- at the end of a compound statement has been deprecated and may be
- removed in a future version. Programs that now generate a warning
- about this may be fixed by adding a null statement (a single
- semicolon) after the label.
- * The poorly documented extension that allowed string constants in
- C, C++ and Objective C to contain unescaped newlines has been
- deprecated and may be removed in a future version. Programs using
- this extension may be fixed in several ways: the bare newline may
- be replaced by \n, or preceded by \n\, or string concatenation may
- be used with the bare newline preceded by \n" and " placed at the
- start of the next line.
- * The Chill compiler is not included in GCC 3.0, because of the lack
- of a volunteer to convert it to use garbage collection.
- * Certain non-standard iostream methods from earlier versions of
- libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach,
- ostream::form, and istream::gets. Here are workaround hints for:
- [1]ostream::form, [2]filebuf::attach.
- * The new C++ ABI is not yet fully supported by current (as of
- 2001-07-01) releases and development versions of GDB, or any
- earlier versions. There is a problem setting breakpoints by line
- number, and other related issues that have been fixed in GCC 3.0
- but not yet handled in GDB:
- [3]http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [4]gnu@gnu.org. There
- are also [5]other ways to contact the FSF.
-
- These pages are maintained by [6]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [7]gcc@gnu.org or [8]gcc@gcc.gnu.org, send other
- questions to [9]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [10]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/onlinedocs/libstdc++/21_strings/howto.html
- 2. http://gcc.gnu.org/onlinedocs/libstdc++/ext/howto.html
- 3. http://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
- 4. mailto:gnu@gnu.org
- 5. http://www.gnu.org/home.html#ContactInfo
- 6. http://gcc.gnu.org/about.html
- 7. mailto:gcc@gnu.org
- 8. mailto:gcc@gcc.gnu.org
- 9. mailto:gnu@gnu.org
- 10. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-2.95/index.html
-
- GCC 2.95
-
- July 31, 1999: The GNU project and the GCC/EGCS developers are pleased
- to announce the release of GCC version 2.95. This is the first release
- of GCC since the April 1999 GCC/EGCS reunification and includes nearly
- a year's worth of new development and bugfixes.
-
- August 19, 1999: GCC version 2.95.1 has been released.
-
- October 27, 1999: GCC version 2.95.2 has been released.
-
- March 16, 2001: GCC version 2.95.3 has been released.
-
- GCC used to stand for the GNU C Compiler, but since the compiler
- supports several other languages aside from C, it now stands for the
- GNU Compiler Collection.
-
- The whole suite has been extensively [1]regression tested and
- [2]package tested. It should be reliable and suitable for widespread
- use.
-
- The compiler has several new optimizations, new targets, new languages
- and other new features. See the [3]new features page for a more
- complete list of new features found in the GCC 2.95 releases.
-
- The sources include installation instructions in both HTML and
- plaintext forms in the install directory in the distribution. However,
- the most up to date [4]installation instructions and [5]build/test
- status are on the web pages. We will update those pages as new
- information becomes available.
-
- The GCC developers would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc to GCC. This
- [6]amazing group of volunteers is what makes GCC successful.
-
- And finally, we can't in good conscience fail to mention some
- [7]caveats to using GCC 2.95.
-
- Download GCC 2.95 from the [8]GNU FTP server (ftp://ftp.gnu.org)
- [9]Find a GNU mirror site
- [10]Find a GCC mirror site
-
- For additional information about GCC please see the [11]GCC project
- web server or contact the [12]GCC development mailing list.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [13]gnu@gnu.org. There
- are also [14]other ways to contact the FSF.
-
- These pages are maintained by [15]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [16]gcc@gnu.org or [17]gcc@gcc.gnu.org, send other
- questions to [18]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [19]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/gcc-2.95/regress.html
- 2. http://gcc.gnu.org/gcc-2.95/othertest.html
- 3. http://gcc.gnu.org/gcc-2.95/features.html
- 4. http://gcc.gnu.org/install/
- 5. http://gcc.gnu.org/gcc-2.95/buildstat.html
- 6. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 7. http://gcc.gnu.org/gcc-2.95/caveats.html
- 8. ftp://ftp.gnu.org/pub/gnu/gcc/
- 9. http://www.gnu.org/order/ftp.html
- 10. http://gcc.gnu.org/mirrors.html
- 11. http://gcc.gnu.org/index.html
- 12. mailto:gcc@gcc.gnu.org
- 13. mailto:gnu@gnu.org
- 14. http://www.gnu.org/home.html#ContactInfo
- 15. http://gcc.gnu.org/about.html
- 16. mailto:gcc@gnu.org
- 17. mailto:gcc@gcc.gnu.org
- 18. mailto:gnu@gnu.org
- 19. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-2.95/features.html
-
- GCC 2.95 New Features
-
- * General Optimizer Improvements:
- + [1]Localized register spilling to improve speed and code
- density especially on small register class machines.
- + [2]Global CSE using lazy code motion algorithms.
- + [3]Improved global constant/copy propagation.
- + [4]Improved control flow graph analysis and manipulation.
- + [5]Local dead store elimination.
- + [6]Memory Load hoisting/store sinking in loops.
- + [7]Type based alias analysis is enabled by default. Note this
- feature will expose bugs in the Linux kernel. Please refer to
- the [8]FAQ for additional information on this issue.
- + Major revamp of GIV detection, combination and simplification
- to improve loop performance.
- + Major improvements to register allocation and reloading.
- * New Languages and Language specific improvements
- + [9]Many C++ improvements.
- + [10]Many Fortran improvements.
- + [11]Java front-end has been integrated. [12]runtime library
- is available separately.
- + [13]ISO C99 support
- + [14]Chill front-end and runtime has been integrated.
- + Boehm garbage collector support in libobjc.
- + More support for various pragmas which appear in vendor
- include files
- * New Targets and Target Specific Improvements
- + [15]Sparc backend rewrite.
- + -mschedule=8000 will optimize code for PA8000 class
- processors; -mpa-risc-2-0 will generate code for PA2.0
- processors
- + Various micro-optimizations for the ia32 port. K6
- optimizations
- + Compiler will attempt to align doubles in the stack on the
- ia32 port
- + Alpha EV6 support
- + PowerPC 750
- + RS6000/PowerPC: -mcpu=401 was added as an alias for
- -mcpu=403. -mcpu=e603e was added to do -mcpu=603e and
- -msoft-float.
- + c3x, c4x
- + HyperSparc
- + SparcLite86x
- + sh4
- + Support for new systems (OpenBSD, FreeBSD, UWIN, Interix,
- arm-linux)
- + vxWorks targets include support for vxWorks threads
- + StrongARM 110 and ARM9 support added. ARM Scheduling
- parameters rewritten.
- + Various changes to the MIPS port to avoid assembler macros,
- which in turn improves performance
- + Various performance improvements to the i960 port.
- + Major rewrite of ns32k port
- * Other significant improvements
- + [16]Ability to dump cfg information and display it using vcg.
- + The new faster scheme for fixing vendor header files is
- enabled by default.
- + Experimental internationalization support.
- + multibyte character support
- + Some compile-time speedups for pathological problems
- + Better support for complex types
- * Plus the usual mountain of bugfixes
- * Core compiler is based on the gcc2 development tree from Sept 30,
- 1998, so we have all of the [17]features found in GCC 2.8.
-
-Additional Changes in GCC 2.95.1
-
- * Generic bugfixes and improvements
- + Various documentation fixes related to the GCC/EGCS merger.
- + Fix memory management bug which could lead to spurious
- aborts, core dumps or random parsing errors in the compiler.
- + Fix a couple bugs in the dwarf1 and dwarf2 debug record
- support.
- + Fix infinite loop in the CSE optimizer.
- + Avoid undefined behavior in compiler FP emulation code
- + Fix install problem when prefix is overridden on the make
- install command.
- + Fix problem with unwanted installation of assert.h on some
- systems.
- + Fix problem with finding the wrong assembler in a single tree
- build.
- + Avoid increasing the known alignment of a register that is
- already known to be a pointer.
- * Platform specific bugfixes and improvements
- + Codegen bugfix for prologue/epilogue for cpu32 target.
- + Fix long long code generation bug for the Coldfire target.
- + Fix various aborts in the SH compiler.
- + Fix bugs in libgcc support library for the SH.
- + Fix alpha ev6 code generation bug.
- + Fix problems with EXIT_SUCCESS/EXIT_FAILURE redefinitions on
- AIX platforms.
- + Fix -fpic code generation bug for rs6000/ppc svr4 targets.
- + Fix varargs/stdarg code generation bug for rs6000/ppc svr4
- targets.
- + Fix weak symbol handling for rs6000/ppc svr4 targets.
- + Fix various problems with 64bit code generation for the
- rs6000/ppc port.
- + Fix codegen bug which caused tetex to be mis-compiled on the
- x86.
- + Fix compiler abort in new cfg code exposed by x86 port.
- + Fix out of range array reference in code convert flat
- registers to the x87 stacked FP register file.
- + Fix minor vxworks configuration bug.
- + Fix return type of bsearch for SunOS 4.x.
- * Language & Runtime specific fixes.
- + The G++ signature extension has been deprecated. It will be
- removed in the next major release of G++. Use of signatures
- will result in a warning from the compiler.
- + Several bugs relating to templates and namespaces were fixed.
- + A bug that caused crashes when combining templates with -g on
- DWARF1 platforms was fixed.
- + Pointers-to-members, virtual functions, and multiple
- inheritance should now work together correctly.
- + Some code-generation bugs relating to function try blocks
- were fixed.
- + G++ is a little bit more lenient with certain archaic
- constructs than in GCC 2.95.
- + Fix to prevent shared library version #s from bring truncated
- to 1 digit
- + Fix missing std:: in the libstdc++ library.
- + Fix stream locking problems in libio.
- + Fix problem in java compiler driver.
-
-Additional Changes in GCC 2.95.2
-
- The -fstrict-aliasing is not enabled by default for GCC 2.95.2. While
- the optimizations performed by -fstrict-aliasing are valid according
- to the C and C++ standards, the optimization have caused some
- problems, particularly with old non-conforming code.
-
- The GCC developers are experimenting with ways to warn users about
- code which violates the C/C++ standards, but those warnings are not
- ready for widespread use at this time. Rather than wait for those
- warnings the GCC developers have chosen to disable -fstrict-aliasing
- by default for the GCC 2.95.2 release.
-
- We strongly encourage developers to find and fix code which violates
- the C/C++ standards as -fstrict-aliasing may be enabled by default in
- future releases. Use the option -fstrict-aliasing to re-enable these
- optimizations.
- * Generic bugfixes and improvements
- + Fix incorrectly optimized memory reference in global common
- subexpression elimination (GCSE) optimization pass.
- + Fix code generation bug in regmove.c in which it could
- incorrectly change a "const" value.
- + Fix bug in optimization of conditionals involving volatile
- memory references.
- + Avoid over-allocation of stack space for some procedures.
- + Fixed bug in the compiler which caused incorrect optimization
- of an obscure series of bit manipulations, shifts and
- arithmetic.
- + Fixed register allocator bug which caused teTeX to be
- mis-compiled on Sparc targets.
- + Avoid incorrect optimization of degenerate case statements
- for certain targets such as the ARM.
- + Fix out of range memory reference in the jump optimizer.
- + Avoid dereferencing null pointer in fix-header.
- + Fix test for GCC specific features so that it is possible to
- bootstrap with gcc-2.6.2 and older versions of GCC.
- + Fix typo in scheduler which could potentially cause out of
- range memory accesses.
- + Avoid incorrect loop reversal which caused incorrect code for
- certain loops on PowerPC targets.
- + Avoid incorrect optimization of switch statements on certain
- targets (for example the ARM).
- * Platform specific bugfixes and improvements
- + Work around bug in Sun V5.0 compilers which caused bootstrap
- comparison failures on Sparc targets.
- + Fix Sparc backend bug which caused aborts in final.c.
- + Fix sparc-hal-solaris2* configuration fragments.
- + Fix bug in sparc block profiling.
- + Fix obscure code generation bug for the PARISC targets.
- + Define __STDC_EXT__ for HPUX configurations.
- + Various POWERPC64 code generation bugfixes.
- + Fix abort for PPC targets using ELF (ex GNU/Linux).
- + Fix collect2 problems for AIX targets.
- + Correct handling of .file directive for PPC targets.
- + Fix bug in fix_trunc x86 patterns.
- + Fix x86 port to correctly pop the FP stack for functions that
- return structures in memory.
- + Fix minor bug in strlen x86 pattern.
- + Use stabs debugging instead of dwarf1 for x86-solaris
- targets.
- + Fix template repository code to handle leading underscore in
- mangled names.
- + Fix weak/weak alias support for OpenBSD.
- + GNU/Linux for the ARM has C++ compatible include files.
- * Language & Runtime specific fixes.
- + Fix handling of constructor attribute in the C front-end
- which caused problems building the Chill runtime library on
- some targets.
- + Fix minor problem merging type qualifiers in the C front-end.
- + Fix aliasing bug for pointers and references (C/C++).
- + Fix incorrect "non-constant initializer bug" when
- -traditional or -fwritable-strings is enabled.
- + Fix build error for Chill front-end on SunOS.
- + Do not complain about duplicate instantiations when using
- -frepo (C++).
- + Fix array bounds handling in C++ front-end which caused
- problems with dwarf debugging information in some
- circumstances.
- + Fix minor namespace problem.
- + Fix problem linking java programs.
-
-Additional Changes in GCC 2.95.3
-
- * Generic bugfixes and improvements
- + Fix numerous problems that caused incorrect optimization in
- the register reloading code.
- + Fix numerous problems that caused incorrect optimization in
- the loop optimizer.
- + Fix aborts in the functions build_insn_chain and scan_loops
- under some circumstances.
- + Fix an alias analysis bug.
- + Fix an infinite compilation bug in the combiner.
- + A few problems with complex number support have been fixed.
- + It is no longer possible for gcc to act as a fork bomb when
- installed incorrectly.
- + The -fpack-struct option should be recognized now.
- + Fixed a bug that caused incorrect code to be generated due to
- a lost stack adjustment.
- * Platform specific bugfixes and improvements
- + Support building ARM toolchains hosted on Windows.
- + Fix attribute calculations in ARM toolchains.
- + arm-linux support has been improved.
- + Fix a PIC failure on sparc targets.
- + On ix86 targets, the regparm attribute should now work
- reliably.
- + Several updates for the h8300 port.
- + Fix problem building libio with glibc 2.2.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [18]gnu@gnu.org. There
- are also [19]other ways to contact the FSF.
-
- These pages are maintained by [20]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [21]gcc@gnu.org or [22]gcc@gcc.gnu.org, send other
- questions to [23]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [24]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/news/spill.html
- 2. http://gcc.gnu.org/news/lcm.html
- 3. http://gcc.gnu.org/news/cprop.html
- 4. http://gcc.gnu.org/news/cfg.html
- 5. http://gcc.gnu.org/news/dse.html
- 6. http://gcc.gnu.org/news/hoist.html
- 7. http://gcc.gnu.org/news/alias.html
- 8. http://gcc.gnu.org/fom_serv/cache/24.html
- 9. http://gcc.gnu.org/gcc-2.95/c++features.html
- 10. http://gcc.gnu.org/onlinedocs/g77/News.html
- 11. http://gcc.gnu.org/java/gcj-announce.txt
- 12. http://gcc.gnu.org/news/javaannounce.html
- 13. http://gcc.gnu.org/c99status.html
- 14. http://gcc.gnu.org/news/chill.html
- 15. http://gcc.gnu.org/news/sparc.html
- 16. http://gcc.gnu.org/news/egcs-vcg.html
- 17. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 18. mailto:gnu@gnu.org
- 19. http://www.gnu.org/home.html#ContactInfo
- 20. http://gcc.gnu.org/about.html
- 21. mailto:gcc@gnu.org
- 22. mailto:gcc@gcc.gnu.org
- 23. mailto:gnu@gnu.org
- 24. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/gcc-2.95/caveats.html
-
- GCC 2.95 Caveats
-
- * GCC 2.95 will issue an error for invalid asm statements that had
- been silently accepted by earlier versions of the compiler. This
- is particularly noticeable when compiling older versions of the
- Linux kernel (2.0.xx). Please refer to the [1]FAQ for more
- information on this issue.
- * GCC 2.95 implements type based alias analysis to disambiguate
- memory references. Some programs, particularly the Linux kernel
- violate ANSI/ISO aliasing rules and therefore may not operate
- correctly when compiled with GCC 2.95. Please refer to the [2]FAQ
- for more information on this issue.
- * GCC 2.95 has a known bug in its handling of complex variables for
- 64bit targets. Instead of silently generating incorrect code, GCC
- 2.95 will issue a fatal error for situations it can not handle.
- This primarily affects the Fortran community as Fortran makes more
- use of complex variables than C or C++.
- * GCC 2.95 has an integrated libstdc++, but does not have an
- integrated libg++. Furthermore old libg++ releases will not work
- with GCC 2.95. You can retrieve a recent copy of libg++ from the
- [3]GCC ftp server.
- Note most C++ programs only need libstdc++.
- * Exception handling may not work with shared libraries,
- particularly on alphas, hppas, rs6000/powerpc and mips based
- platforms. Exception handling is known to work on x86 GNU/Linux
- platforms with shared libraries.
- * In general, GCC 2.95 is more rigorous about rejecting invalid C++
- code or deprecated C++ constructs than G++ 2.7, G++ 2.8, EGCS 1.0,
- or EGCS 1.1. As a result it may be necessary to fix C++ code
- before it will compile with GCC 2.95.
- * G++ is also converting toward the ISO C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of g++) may no longer be accepted.
- The flag -fpermissive may allow some non-conforming code to
- compile with GCC 2.95.
- * GCC 2.95 compiled C++ code is not binary compatible with EGCS
- 1.1.x, EGCS 1.0.x or GCC 2.8.x.
- * GCC 2.95 does not have changes from the GCC 2.8 tree that were
- made between Sept 30, 1998 and April 30, 1999 (the official end of
- the GCC 2.8 project). Future GCC releases will include all the
- changes from the defunct GCC 2.8 sources.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [4]gnu@gnu.org. There
- are also [5]other ways to contact the FSF.
-
- These pages are maintained by [6]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [7]gcc@gnu.org or [8]gcc@gcc.gnu.org, send other
- questions to [9]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [10]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/faq.html#asmclobber
- 2. http://gcc.gnu.org/fom_serv/cache/24.html
- 3. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz
- 4. mailto:gnu@gnu.org
- 5. http://www.gnu.org/home.html#ContactInfo
- 6. http://gcc.gnu.org/about.html
- 7. mailto:gcc@gnu.org
- 8. mailto:gcc@gcc.gnu.org
- 9. mailto:gnu@gnu.org
- 10. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.1/index.html
-
- EGCS 1.1
-
- September 3, 1998: We are pleased to announce the release of EGCS 1.1.
- December 1, 1998: We are pleased to announce the release of EGCS
- 1.1.1.
- March 15, 1999: We are pleased to announce the release of EGCS 1.1.2.
-
- EGCS is a free software project to further the development of the GNU
- compilers using an open development environment.
-
- EGCS 1.1 is a major new release of the EGCS compiler system. It has
- been [1]extensively tested and is believed to be stable and suitable
- for widespread use.
-
- EGCS 1.1 is based on an June 6, 1998 snapshot of the GCC 2.8
- development sources; it contains all of the new features found in GCC
- 2.8.1 as well as all new development from GCC up to June 6, 1998.
-
- EGCS 1.1 also contains many improvements and features not found in GCC
- or in older versions of EGCS:
- * Global common subexpression elimination and global constant/copy
- propagation (aka [2]gcse)
- * Ongoing improvements to the [3]alias analysis support to allow for
- better optimizations throughout the compiler.
- * Vastly improved [4]C++ compiler and integrated C++ runtime
- libraries.
- * Fixes for the /tmp symlink race security problems.
- * New targets including mips16, arm-thumb and 64 bit PowerPC.
- * Improvements to GNU Fortran (g77) compiler and runtime library
- made since g77 version 0.5.23.
-
- See the [5]new features page for a more complete list of new features
- found in EGCS 1.1 releases.
-
- EGCS 1.1.1 is a minor update to fix several serious problems in EGCS
- 1.1:
- * General improvements and fixes
- + Avoid some stack overflows when compiling large functions.
- + Avoid incorrect loop invariant code motions.
- + Fix some core dumps on Linux kernel code.
- + Bring back the imake -Di386 and friends fix from EGCS 1.0.2.
- + Fix code generation problem in gcse.
- + Various documentation related fixes.
- * g++/libstdc++ improvements and fixes
- + MT safe EH fix for setjmp/longjmp based exception handling.
- + Fix a few bad interactions between optimization and exception
- handling.
- + Fixes for demangling of template names starting with "__".
- + Fix a bug that would fail to run destructors in some cases
- with -O2.
- + Fix 'new' of classes with virtual bases.
- + Fix crash building Qt on the Alpha.
- + Fix failure compiling WIFEXITED macro on GNU/Linux.
- + Fix some -frepo failures.
- * g77 and libf2c improvements and fixes
- + Various documentation fixes.
- + Avoid compiler crash on RAND intrinsic.
- + Fix minor bugs in makefiles exposed by BSD make programs.
- + Define _XOPEN_SOURCE for libI77 build to avoid potential
- problems on some 64-bit systems.
- + Fix problem with implicit endfile on rewind.
- + Fix spurious recursive I/O errors.
- * platform specific improvements and fixes
- + Match all versions of UnixWare7.
- + Do not assume x86 SVR4 or UnixWare targets can handle stabs.
- + Fix PPC/RS6000 LEGITIMIZE_ADDRESS macro and bug in conversion
- from unsigned ints to double precision floats.
- + Fix ARM ABI issue with NetBSD.
- + Fix a few arm code generation bugs.
- + Fixincludes will fix additional broken SCO OpenServer header
- files.
- + Fix a m68k backend bug which caused invalid offsets in reg+d
- addresses.
- + Fix problems with 64bit AIX 4.3 support.
- + Fix handling of long longs for varargs/stdarg functions on
- the ppc.
- + Minor fixes to CPP predefines for Windows.
- + Fix code generation problems with gpr<->fpr copies for 64bit
- ppc.
- + Fix a few coldfire code generation bugs.
- + Fix some more header file problems on SunOS 4.x.
- + Fix assert.h handling for RTEMS.
- + Fix Windows handling of TREE_SYMBOL_REFERENCED.
- + Fix x86 compiler abort in reg-stack pass.
- + Fix cygwin/windows problem with section attributes.
- + Fix Alpha code generation problem exposed by SMP Linux
- kernels.
- + Fix typo in m68k 32->64bit integer conversion.
- + Make sure target libraries build with -fPIC for PPC & Alpha
- targets.
-
- EGCS 1.1.2 is a minor update to fix several serious problems in EGCS
- 1.1.1:
- * General improvements and fixes
- + Fix bug in loop optimizer which caused the SPARC (and
- potentially other) ports to segfault.
- + Fix infinite recursion in alias analysis and combiner code.
- + Fix bug in regclass preferencing.
- + Fix incorrect loop reversal which caused incorrect code to be
- generated for several targets.
- + Fix return value for builtin memcpy.
- + Reduce compile time for certain loops which exposed quadratic
- behavior in the loop optimizer.
- + Fix bug which caused volatile memory to be written multiple
- times when only one write was needed/desired.
- + Fix compiler abort in caller-save.c
- + Fix combiner bug which caused incorrect code generation for
- certain division by constant operations.
- + Fix incorrect code generation due to a bug in range check
- optimizations.
- + Fix incorrect code generation due to mis-handling of
- clobbered values in CSE.
- + Fix compiler abort/segfault due to incorrect register
- splitting when unrolling loops.
- + Fix code generation involving autoincremented addresses with
- ternary operators.
- + Work around bug in the scheduler which caused qt to be
- mis-compiled on some platforms.
- + Fix code generation problems with -fshort-enums.
- + Tighten security for temporary files.
- + Improve compile time for codes which make heavy use of
- overloaded functions.
- + Fix multiply defined constructor/destructor symbol problems.
- + Avoid setting bogus RPATH environemnt variable during
- bootstrap.
- + Avoid GNU-make dependencies in the texinfo subdir.
- + Install CPP wrapper script in $(prefix)/bin if --enable-cpp.
- --enable-cpp=<dirname> can be used to specify an additional
- install directory for the cpp wrapper script.
- + Fix CSE bug which caused incorrect label-label refs to appear
- on some platforms.
- + Avoid linking in EH routines from libgcc if they are not
- needed.
- + Avoid obscure bug in aliasing code.
- + Fix bug in weak symbol handling.
- * Platform-specific improvements and fixes
- + Fix detection of PPro/PII on Unixware 7.
- + Fix compiler segfault when building spec99 and other programs
- for SPARC targets.
- + Fix code-generation bugs for integer and floating point
- conditional move instructions on the PPro/PII.
- + Use fixincludes to fix byteorder problems on i?86-*-sysv.
- + Fix build failure for the arc port.
- + Fix floating point format configuration for i?86-gnu port.
- + Fix problems with hppa1.0-hp-hpux10.20 configuration when
- threads are enabled.
- + Fix coldfire code generation bugs.
- + Fix "unrecognized insn" problems for Alpha and PPC ports.
- + Fix h8/300 code generation problem with floating point values
- in memory.
- + Fix unrecognized insn problems for the m68k port.
- + Fix namespace-pollution problem for the x86 port.
- + Fix problems with old assembler on x86 NeXT systems.
- + Fix PIC code-generation problems for the SPARC port.
- + Fix minor bug with LONG_CALLS in PowerPC SVR4 support.
- + Fix minor ISO namespace violation in Alpha varargs/stdarg
- support.
- + Fix incorrect "braf" instruction usage for the SH port.
- + Fix minor bug in va-sh which prevented its use with -ansi.
- + Fix problems recognizing and supporting FreeBSD.
- + Handle OpenBSD systems correctly.
- + Minor fixincludes fix for Digital UNIX 4.0B.
- + Fix problems with ctors/dtors in SCO shared libraries.
- + Abort instead of generating incorrect code for PPro/PII
- floating point conditional moves.
- + Avoid multiply defined symbols on Linux/GNU systems using
- libc-5.4.xx.
- + Fix abort in alpha compiler.
- * Fortran-specific fixes
- + Fix the IDate intrinsic (VXT) (in libg2c) so the returned
- year is in the documented, non-Y2K-compliant range of 0-99,
- instead of being returned as 100 in the year 2000.
- + Fix the `Date_and_Time' intrinsic (in libg2c) to return the
- milliseconds value properly in Values(8).
- + Fix the `LStat' intrinsic (in libg2c) to return device-ID
- information properly in SArray(7).
-
- Each release includes installation instructions in both HTML and
- plaintext forms (see the INSTALL directory in the toplevel directory
- of the distribution). However, we also keep the most up to date
- [6]installation instructions and [7]build/test status on our web page.
- We will update those pages as new information becomes available.
-
- The EGCS project would like to thank the numerous people that have
- contributed new features, test results, bugfixes, etc. This [8]amazing
- group of volunteers is what makes EGCS successful.
-
- And finally, we can't in good conscience fail to mention some
- [9]caveats to using EGCS 1.1.
-
- Download EGCS from egcs.cygnus.com (USA California).
-
- The EGCS 1.1 release is also available on many mirror sites.
- [10]Goto mirror list to find a closer site.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [11]gnu@gnu.org. There
- are also [12]other ways to contact the FSF.
-
- These pages are maintained by [13]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [14]gcc@gnu.org or [15]gcc@gcc.gnu.org, send other
- questions to [16]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [17]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.1/egcs-1.1-test.html
- 2. http://gcc.gnu.org/news/gcse.html
- 3. http://gcc.gnu.org/news/alias.html
- 4. http://gcc.gnu.org/egcs-1.1/c++features.html
- 5. http://gcc.gnu.org/egcs-1.1/features.html
- 6. http://gcc.gnu.org/install/
- 7. http://gcc.gnu.org/egcs-1.1/buildstat.html
- 8. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
- 9. http://gcc.gnu.org/egcs-1.1/caveats.html
- 10. http://gcc.gnu.org/mirrors.html
- 11. mailto:gnu@gnu.org
- 12. http://www.gnu.org/home.html#ContactInfo
- 13. http://gcc.gnu.org/about.html
- 14. mailto:gcc@gnu.org
- 15. mailto:gcc@gcc.gnu.org
- 16. mailto:gnu@gnu.org
- 17. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.1/features.html
-
- EGCS 1.1 new features
-
- * Integrated GNU Fortran (g77) compiler and runtime library with
- improvements, based on [1]g77 version 0.5.23.
- * Vast improvements in the C++ compiler; so many they have [2]page
- of their own!
- * Compiler implements [3]global common subexpression elimination and
- global copy/constant propagation.
- * More major improvements in the [4]alias analysis code.
- * More major improvements in the exception handling code to improve
- performance, lower static overhead and provide the infrastructure
- for future improvements.
- * The infamous /tmp symlink race security problems have been fixed.
- * The regmove optimization pass has been nearly completely rewritten
- to improve performance of generated code.
- * The compiler now recomputes register usage information before
- local register allocation. By providing more accurate information
- to the priority based allocator, we get better register
- allocation.
- * The register reloading phase of the compiler optimizes spill code
- much better than in previous releases.
- * Some bad interactions between the register allocator and
- instruction scheduler have been fixed, resulting in much better
- code for certain programs. Additionally, we have tuned the
- scheduler in various ways to improve performance of generated code
- for some architectures.
- * The compiler's branch shortening algorithms have been
- significantly improved to work better on targets which align jump
- targets.
- * The compiler now supports -Os to prefer optimizing for code space
- over optimizing for code speed.
- * The compiler will now totally eliminate library calls which
- compute constant values. This primarily helps targets with no
- integer div/mul support and targets without floating point
- support.
- * The compiler now supports an extensive "--help" option.
- * cpplib has been greatly improved and may be suitable for limited
- use.
- * Memory footprint for the compiler has been significantly reduced
- for some pathological cases.
- * The time to build EGCS has been improved for certain targets
- (particularly the alpha and mips platforms).
- * Many infrastructure improvements throughout the compiler, plus the
- usual mountain of bugfixes and minor improvements.
- * Target dependent improvements:
- + SPARC port now includes V8 plus and V9 support as well as
- performance tuning for Ultra class machines. The SPARC port
- now uses the Haifa scheduler.
- + Alpha port has been tuned for the EV6 processor and has an
- optimized expansion of memcpy/bzero. The Alpha port now uses
- the Haifa scheduler.
- + RS6000/PowerPC: EGCS 1.1 includes support for the Power64
- architecture and aix4.3 support. The RS6000/PowerPC port now
- uses the Haifa scheduler.
- + x86: Alignment of static store data and jump targets is per
- Intel recommendations now. Various improvements throughout
- the x86 port to improve performance on Pentium processors.
- Conditional move support has been fixed and enabled for PPro
- processors. The x86 port also better supports 64bit
- operations now.
- + MIPS has improved multiply/multiply-add support and now
- includes mips16 ISA support.
- + M68k has many micro-optimizations and Coldfire fixes.
- * Core compiler is based on the GCC development tree from June 9,
- 1998, so we have all of the [5]features found in GCC 2.8.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
- questions to [11]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [12]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/onlinedocs/g77/News.html
- 2. http://gcc.gnu.org/egcs-1.1/c++features.html
- 3. http://gcc.gnu.org/news/gcse.html
- 4. http://gcc.gnu.org/news/alias.html
- 5. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. mailto:gcc@gnu.org
- 10. mailto:gcc@gcc.gnu.org
- 11. mailto:gnu@gnu.org
- 12. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.1/caveats.html
-
- EGCS 1.1 Caveats
-
- * EGCS has an integrated libstdc++, but does not have an integrated
- libg++. Furthermore old libg++ releases will not work with EGCS;
- HJ Lu has made a libg++-2.8.1.2 snapshot available which may work
- with EGCS.
- Note most C++ programs only need libstdc++.
- * Exception handling may not work with shared libraries,
- particularly on alphas, hppas, rs6000/powerpc and mips based
- platforms. Exception handling is known to work on x86-linux
- platforms with shared libraries.
- * Some versions of the Linux kernel have bugs which prevent them
- from being compiled or from running when compiled by EGCS. See
- [1]the FAQ for additional information.
- * In general, EGCS is more rigorous about rejecting invalid C++ code
- or deprecated C++ constructs than g++-2.7, g++-2.8 or EGCS 1.0. As
- a result it may be necessary to fix C++ code before it will
- compile with EGCS.
- * G++ is also converting toward the ISO C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of g++) may no longer be accepted.
- * EGCS 1.1 compiled C++ code is not binary compatible with EGCS
- 1.0.x or GCC 2.8.x due to changes necessary to support thread safe
- exception handling.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [2]gnu@gnu.org. There
- are also [3]other ways to contact the FSF.
-
- These pages are maintained by [4]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [5]gcc@gnu.org or [6]gcc@gcc.gnu.org, send other
- questions to [7]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [8]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/fom_serv/cache/24.html
- 2. mailto:gnu@gnu.org
- 3. http://www.gnu.org/home.html#ContactInfo
- 4. http://gcc.gnu.org/about.html
- 5. mailto:gcc@gnu.org
- 6. mailto:gcc@gcc.gnu.org
- 7. mailto:gnu@gnu.org
- 8. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.3.html
-
- EGCS 1.0.3
-
- May 15, 1998
-
- We are pleased to announce the release of EGCS 1.0.3.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- EGCS 1.0.3 is a minor update to the EGCS 1.0.2 compiler to fix a few
- problems reported by Red Hat for builds of Red Hat 5.1.
- * Generic bugfixes:
- + Fix a typo in the libio library which resulted in incorrect
- behavior of istream::get.
- + Fix the Fortran negative array index problem.
- + Fix a major problem with the ObjC runtime thread support
- exposed by glibc2.
- + Reduce memory consumption of the Haifa scheduler.
- * Target specific bugfixes:
- + Fix one x86 floating point code generation bug exposed by
- glibc2 builds.
- + Fix one x86 internal compiler error exposed by glibc2 builds.
- + Fix profiling bugs on the Alpha.
- + Fix ImageMagick & emacs 20.2 build problems on the Alpha.
- + Fix rs6000/ppc bug when converting values from integer types
- to floating point types.
-
- An important goal of EGCS is to allow wide scale testing of new
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0.3 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS also contains many improvements and features not found in GCC 2.7
- or GCC 2.8.
- * Integrated C++ runtime libraries, including support for most major
- GNU/Linux systems!
- * The integrated libstdc++ library includes a verbatim copy of SGI's
- STL release instead of a modified copy.
- * Integrated GNU Fortran compiler.
- * New instruction scheduler.
- * New alias analysis code.
-
- See the [1]new features page for a more complete list of new features
- found in EGCS 1.0.x releases.
-
- The EGCS 1.0.3 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0.3 distribution). However, we also keep the
- most up to date [2]installation instructions and [3]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [4]caveats to
- using EGCS.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
- (USA California -- High speed link provided by Stanford).
-
- The EGCS 1.0.3 release is also available on many mirror sites.
- [5]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
- questions to [11]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [12]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features.html
- 2. http://gcc.gnu.org/install/
- 3. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 4. http://gcc.gnu.org/egcs-1.0/caveats.html
- 5. http://gcc.gnu.org/mirrors.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. mailto:gcc@gnu.org
- 10. mailto:gcc@gcc.gnu.org
- 11. mailto:gnu@gnu.org
- 12. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.2.html
-
- EGCS 1.0.2
-
- March 16, 1998
-
- We are pleased to announce the release of EGCS 1.0.2.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- EGCS 1.0.2 is a minor update to the EGCS 1.0.1 compiler to fix several
- serious problems in EGCS 1.0.1.
- * General improvements and fixes
- + Memory consumption significantly reduced, especially for
- templates and inline functions.
- + Fix various problems with glibc2.1.
- + Fix loop optimization bug exposed by rs6000/ppc port.
- + Fix to avoid potential code generation problems in jump.c.
- + Fix some undefined symbol problems in dwarf1 debug support.
- * g++/libstdc++ improvements and fixes
- + libstdc++ in the EGCS release has been updated and should be
- link compatible with libstdc++-2.8.
- + Various fixes in libio/libstdc++ to work better on Linux
- systems.
- + Fix problems with duplicate symbols on systems that do not
- support weak symbols.
- + Memory corruption bug and undefined symbols in bastring have
- been fixed.
- + Various exception handling fixes.
- + Fix compiler abort for very long thunk names.
- * g77 improvements and fixes
- + Fix compiler crash for omitted bound in Fortran CASE
- statement.
- + Add missing entries to g77 lang-options.
- + Fix problem with -fpedantic in the g77 compiler.
- + Fix "backspace" problem with g77 on alphas.
- + Fix x86 backend problem with Fortran literals and -fpic.
- + Fix some of the problems with negative subscripts for g77 on
- alphas.
- + Fixes for Fortran builds on cygwin32/mingw32.
- * platform specific improvements and fixes
- + Fix long double problems on x86 (exposed by glibc).
- + x86 ports define i386 again to keep imake happy.
- + Fix exception handling support on NetBSD ports.
- + Several changes to collect2 to fix many problems with AIX.
- + Define __ELF__ for rs6000/linux.
- + Fix -mcall-linux problem on rs6000/linux.
- + Fix stdarg/vararg problem for rs6000/linux.
- + Allow autoconf to select a proper install problem on AIX 3.1.
- + m68k port support includes -mcpu32 option as well as cpu32
- multilibs.
- + Fix stdarg bug for irix6.
- + Allow EGCS to build on irix5 without the gnu assembler.
- + Fix problem with static linking on sco5.
- + Fix bootstrap on sco5 with native compiler.
- + Fix for abort building newlib on H8 target.
- + Fix fixincludes handling of math.h on SunOS.
- + Minor fix for motorola 3300 m68k systems.
-
- An important goal of EGCS is to allow wide scale testing of new
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0.2 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS also contains many improvements and features not found in GCC 2.7
- or GCC 2.8.
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * The integrated libstdc++ library includes a verbatim copy of SGI's
- STL release.
- * Integrated GNU Fortran compiler.
- * New instruction scheduler.
- * New alias analysis code.
-
- See the [1]new features page for a more complete list of new features
- found in EGCS 1.0.x releases.
-
- The EGCS 1.0.2 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0.2 distribution). However, we also keep the
- most up to date [2]installation instructions and [3]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [4]caveats to
- using EGCS.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
- (USA California -- High speed link provided by Stanford).
-
- The EGCS 1.0.2 release is also available on many mirror sites.
- [5]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
- questions to [11]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [12]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features.html
- 2. http://gcc.gnu.org/install/index.html
- 3. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 4. http://gcc.gnu.org/egcs-1.0/caveats.html
- 5. http://gcc.gnu.org/mirrors.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. mailto:gcc@gnu.org
- 10. mailto:gcc@gcc.gnu.org
- 11. mailto:gnu@gnu.org
- 12. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.1.html
-
- EGCS 1.0.1
-
- January 6, 1998
-
- We are pleased to announce the release of EGCS 1.0.1.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- EGCS 1.0.1 is a minor update to the EGCS 1.0 compiler to fix a few
- critical bugs and add support for Red Hat 5.0 Linux. Changes since the
- EGCS 1.0 release:
- * Add support for Red Hat 5.0 Linux and better support for Linux
- systems using glibc2.
- Many programs failed to link when compiled with EGCS 1.0 on Red
- Hat 5.0 or on systems with newer versions of glibc2. EGCS 1.0.1
- should fix these problems.
- * Compatibility with both EGCS 1.0 and GCC 2.8 libgcc exception
- handling interfaces.
- To avoid future compatibility problems, we strongly urge anyone
- who is planning on distributing shared libraries that contain C++
- code to upgrade to EGCS 1.0.1 first.
- Soon after EGCS 1.0 was released, the GCC developers made some
- incompatible changes in libgcc's exception handling interfaces.
- These changes were needed to solve problems on some platforms.
- This means that GCC 2.8.0, when released, will not be seamlessly
- compatible with shared libraries built by EGCS 1.0. The reason is
- that the libgcc.a in GCC 2.8.0 will not contain a function needed
- by the old interface.
- The result of this is that there may be compatibility problems
- with shared libraries built by EGCS 1.0 when used with GCC 2.8.0.
- With EGCS 1.0.1, generated code uses the new (GCC 2.8.0)
- interface, and libgcc.a has the support routines for both the old
- and the new interfaces (so EGCS 1.0.1 and EGCS 1.0 code can be
- freely mixed, and EGCS 1.0.1 and GCC 2.8.0 code can be freely
- mixed).
- The maintainers of GCC 2.x have decided against including seamless
- support for the old interface in 2.8.0, since it was never
- "official", so to avoid future compatibility problems we recommend
- against distributing any shared libraries built by EGCS 1.0 that
- contain C++ code (upgrade to 1.0.1 and use that).
- * Various bugfixes in the x86, hppa, mips, and rs6000/ppc backends.
- The x86 changes fix code generation errors exposed when building
- glibc2 and the Linux dynamic linker (ld.so).
- The hppa change fixes a compiler abort when configured for use
- with RTEMS.
- The MIPS changes fix problems with the definition of LONG_MAX on
- newer systems, allow for command line selection of the target ABI,
- and fix one code generation problem.
- The rs6000/ppc change fixes some problems with passing structures
- to varargs/stdarg functions.
- * A few machine independent bugfixes, mostly to fix code generation
- errors when building Linux kernels or glibc.
- * Fix a few critical exception handling and template bugs in the C++
- compiler.
- * Fix Fortran namelist bug on alphas.
- * Fix build problems on x86-solaris systems.
-
- An important goal of EGCS is to allow wide scale testing of new
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0.1 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS also contains many improvements and features not found in GCC 2.7
- and even the soon to be released GCC 2.8 compilers.
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * The integrated libstdc++ library includes a verbatim copy of SGI's
- STL release.
- * Integrated GNU Fortran compiler
- * New instruction scheduler
- * New alias analysis code
-
- See the [1]new features page for a more complete list of new features
- found in EGCS 1.0.x releases.
-
- The EGCS 1.0.1 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0.1 distribution). However, we also keep the
- most up to date [2]installation instructions and [3]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [4]caveats to
- using EGCS.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
- (USA California -- High speed link provided by Stanford).
-
- The EGCS 1.0.1 release is also available on many mirror sites.
- [5]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
- questions to [11]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [12]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features.html
- 2. http://gcc.gnu.org/install/index.html
- 3. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 4. http://gcc.gnu.org/egcs-1.0/caveats.html
- 5. http://gcc.gnu.org/mirrors.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. mailto:gcc@gnu.org
- 10. mailto:gcc@gcc.gnu.org
- 11. mailto:gnu@gnu.org
- 12. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/egcs-1.0.html
-
- EGCS 1.0
-
- December 3, 1997
-
- We are pleased to announce the release of EGCS 1.0.
-
- EGCS is a collaborative effort involving several groups of hackers
- using an open development model to accelerate development and testing
- of GNU compilers and runtime libraries.
-
- An important goal of EGCS is to allow wide scale testing of
- experimental features and optimizations; therefore, EGCS contains some
- features and optimizations which are still under development. However,
- EGCS has been carefully tested and should be comparable in quality to
- most GCC releases.
-
- EGCS 1.0 is based on an August 2, 1997 snapshot of the GCC 2.8
- development sources; it contains nearly all of the new features found
- in GCC 2.8.
-
- EGCS 1.0 also contains many improvements and features not found in GCC
- 2.7 and even the soon to be released GCC 2.8 compilers.
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * The integrated libstdc++ library includes a verbatim copy of SGI's
- STL release.
- * Integrated GNU Fortran compiler.
- * New instruction scheduler.
- * New alias analysis code.
-
- See the [1]new features page for a more complete list of new features.
-
- The EGCS 1.0 release includes installation instructions in both HTML
- and plaintext forms (see the INSTALL directory in the toplevel
- directory of the EGCS 1.0 distribution). However, we also keep the
- most up to date [2]installation instructions and [3]build/test status
- on our web page. We will update those pages as new information becomes
- available.
-
- And, we can't in good conscience fail to mention some [4]caveats to
- using EGCS.
-
- Update: The T1 into our main California offices has been 100%
- saturated since shortly after the release. We've added an EGCS 1.0
- mirror at our Massachusetts office to help share the load. We also
- encourage folks to use the many mirrors available throughout the
- world.
-
- Update: Big thanks to Stanford for providing a high speed link for
- downloading EGCS (go.cygnus.com)!
-
- Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
- (USA California -- High speed link provided by Stanford).
-
- The EGCS 1.0 release should be available on most mirror sites by now.
- [5]Goto mirror list to find a closer site
-
- We'd like to thank the numerous people that have contributed new
- features, test results, bugfixes, etc. Unfortunately, they're far too
- numerous to mention by name.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [6]gnu@gnu.org. There
- are also [7]other ways to contact the FSF.
-
- These pages are maintained by [8]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [9]gcc@gnu.org or [10]gcc@gcc.gnu.org, send other
- questions to [11]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [12]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features.html
- 2. http://gcc.gnu.org/install/index.html
- 3. http://gcc.gnu.org/egcs-1.0/buildstat.html
- 4. http://gcc.gnu.org/egcs-1.0/caveats.html
- 5. http://gcc.gnu.org/mirrors.html
- 6. mailto:gnu@gnu.org
- 7. http://www.gnu.org/home.html#ContactInfo
- 8. http://gcc.gnu.org/about.html
- 9. mailto:gcc@gnu.org
- 10. mailto:gcc@gcc.gnu.org
- 11. mailto:gnu@gnu.org
- 12. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/features.html
-
- EGCS 1.0 features
-
- * Core compiler is based on the gcc2 development tree from Aug 2,
- 1997, so we have most of the [1]features found in GCC 2.8.
- * Integrated GNU Fortran compiler based on g77-0.5.22-19970929.
- * Vast improvements in the C++ compiler; so many they have [2]page
- of their own!
- * Integrated C++ runtime libraries, including support for most major
- linux systems!
- * New instruction scheduler from IBM Haifa which includes support
- for function wide instruction scheduling as well as superscalar
- scheduling.
- * Significantly improved alias analysis code.
- * Improved register allocation for two address machines.
- * Significant code generation improvements for Fortran code on
- Alphas.
- * Various optimizations from the g77 project as well as improved
- loop optimizations.
- * Dwarf2 debug format support for some targets.
- * egcs libstdc++ includes the SGI STL implementation without
- changes.
- * As a result of these and other changes, egcs libstc++ is not
- binary compatible with previous releases of libstdc++.
- * Various new ports -- UltraSPARC, Irix6.2 & Irix6.3 support, The
- SCO Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0
- and 1.1), Support for RTEMS on several embedded targets, Support
- for arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and
- MN103, NEC V850, Sparclet, Solaris & Linux on PowerPCs, etc.
- * Integrated testsuites for gcc, g++, g77, libstdc++ and libio.
- * RS6000/PowerPC ports generate code which can run on all
- RS6000/PowerPC variants by default.
- * -mcpu= and -march= switches for the x86 port to allow better
- control over how the x86 port generates code.
- * Includes the template repository patch (aka repo patch); note the
- new template code makes repo obsolete for ELF systems using gnu-ld
- such as Linux.
- * Plus the usual assortment of bugfixes and improvements.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [3]gnu@gnu.org. There
- are also [4]other ways to contact the FSF.
-
- These pages are maintained by [5]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [6]gcc@gnu.org or [7]gcc@gcc.gnu.org, send other
- questions to [8]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [9]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/egcs-1.0/features-2.8.html
- 2. http://gcc.gnu.org/egcs-1.0/c++features.html
- 3. mailto:gnu@gnu.org
- 4. http://www.gnu.org/home.html#ContactInfo
- 5. http://gcc.gnu.org/about.html
- 6. mailto:gcc@gnu.org
- 7. mailto:gcc@gcc.gnu.org
- 8. mailto:gnu@gnu.org
- 9. http://validator.w3.org/check/referer
-======================================================================
-http://gcc.gnu.org/egcs-1.0/caveats.html
-
- EGCS 1.0 Caveats
-
- * EGCS has an integrated libstdc++, but does not have an integrated
- libg++. Furthermore old libg++ releases will not work with egc; HJ
- Lu has made a libg++-2.8.1.2 available which may work with EGCS.
- Note most C++ programs only need libstdc++.
- * Note that using -pedantic or -Wreturn-type can cause an explosion
- in the amount of memory needed for template-heavy C++ code, such
- as code that uses STL. Also note that -Wall includes
- -Wreturn-type, so if you use -Wall you will need to specify
- -Wno-return-type to turn it off.
- * Exception handling may not work with shared libraries,
- particularly on alphas, hppas, and mips based platforms. Exception
- handling is known to work on x86-linux platforms with shared
- libraries.
- * Some versions of the Linux kernel have bugs which prevent them
- from being compiled or from running when compiled by EGCS. See
- [1]the FAQ for additional information.
- * In general, EGCS is more rigorous about rejecting invalid C++ code
- or deprecated C++ constructs than G++ 2.7. As a result it may be
- necessary to fix C++ code before it will compile with EGCS.
- * G++ is also aggressively tracking the C++ standard; as a result
- code which was previously valid (and thus accepted by other
- compilers and older versions of G++) may no longer be accepted.
- * EGCS 1.0 may not work with Red Hat Linux 5.0 on all targets. EGCS
- 1.0.x and later releases should work with Red Hat Linux 5.0.
- _________________________________________________________________
-
- Please send FSF & GNU inquiries & questions to [2]gnu@gnu.org. There
- are also [3]other ways to contact the FSF.
-
- These pages are maintained by [4]The GCC team.
-
-
- Please send comments on these web pages and GCC to our public
- mailing list at [5]gcc@gnu.org or [6]gcc@gcc.gnu.org, send other
- questions to [7]gnu@gnu.org.
-
- Copyright (C) Free Software Foundation, Inc., 59 Temple Place - Suite
- 330, Boston, MA 02111, USA.
-
- Verbatim copying and distribution of this entire article is permitted
- in any medium, provided this notice is preserved.
-
- Last modified 2002-11-11 [8]Valid XHTML 1.0
-
-References
-
- 1. http://gcc.gnu.org/fom_serv/cache/24.html
- 2. mailto:gnu@gnu.org
- 3. http://www.gnu.org/home.html#ContactInfo
- 4. http://gcc.gnu.org/about.html
- 5. mailto:gcc@gnu.org
- 6. mailto:gcc@gcc.gnu.org
- 7. mailto:gnu@gnu.org
- 8. http://validator.w3.org/check/referer
-======================================================================
diff --git a/contrib/gcc/README b/contrib/gcc/README
deleted file mode 100644
index 3a49513..0000000
--- a/contrib/gcc/README
+++ /dev/null
@@ -1,17 +0,0 @@
-This directory contains the GNU Compiler Collection (GCC).
-
-The GNU Compiler Collection is free software. See the file COPYING
-for copying permission. The manuals, and some of the runtime
-libraries, are under different terms; see the individual source files
-for details.
-
-The directory INSTALL contains copies of the installation information
-as HTML and plain text. The source of this information is
-gcc/doc/install.texi. The installation information includes details
-of what is included in the GCC sources and what files GCC installs.
-
-See the file gcc/doc/gcc.texi (together with other files that it
-includes) for usage and porting information. An online readable
-version of the manual is in the files gcc/doc/gcc.info*.
-
-See http://gcc.gnu.org/bugs.html for how to report bugs usefully.
diff --git a/contrib/gcc/acconfig.h b/contrib/gcc/acconfig.h
deleted file mode 100644
index 6367cf1..0000000
--- a/contrib/gcc/acconfig.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Define to 1 if NLS is requested. */
-#undef ENABLE_NLS
-
-/* Define as 1 if you have catgets and don't want to use GNU gettext. */
-#undef HAVE_CATGETS
-
-/* Define as 1 if you have gettext and don't want to use GNU gettext. */
-#undef HAVE_GETTEXT
-
-/* Define if your locale.h file contains LC_MESSAGES. */
-#undef HAVE_LC_MESSAGES
-
-/* Define as 1 if you have the stpcpy function. */
-#undef HAVE_STPCPY
-
-/* Define if your assembler supports specifying the maximum number
- of bytes to skip when using the GAS .p2align command. */
-#undef HAVE_GAS_MAX_SKIP_P2ALIGN
-
-/* Define if your assembler supports .balign and .p2align. */
-#undef HAVE_GAS_BALIGN_AND_P2ALIGN
-
-/* Define if your assembler uses the old HImode fild and fist notation. */
-#undef HAVE_GAS_FILDS_FISTS
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef ssize_t
-
-/* Define if cpp should also search $prefix/include. */
-#undef PREFIX_INCLUDE_DIR
-
-@BOTTOM@
-
-/* Bison unconditionally undefines `const' if neither `__STDC__' nor
- __cplusplus are defined. That's a problem since we use `const' in
- the GCC headers, and the resulting bison code is therefore type
- unsafe. Thus, we must match the bison behavior here. */
-
-#ifndef __STDC__
-#ifndef __cplusplus
-#undef const
-#define const
-#endif
-#endif
diff --git a/contrib/gcc/cccp.1 b/contrib/gcc/cccp.1
deleted file mode 100644
index 84eb19e..0000000
--- a/contrib/gcc/cccp.1
+++ /dev/null
@@ -1,674 +0,0 @@
-.\" Copyright (c) 1991, 1992, 1993 Free Software Foundation \-*-Text-*-
-.\" See section COPYING for conditions for redistribution
-.TH cpp 1 "30apr1993" "GNU Tools" "GNU Tools"
-.SH NAME
-cccp, cpp \- The GNU C-Compatible Compiler Preprocessor.
-.SH SYNOPSIS
-.hy 0
-.na
-.TP
-.B cccp
-.RB "[\|" \-$ "\|]"
-.RB "[\|" \-A \c
-.I predicate\c
-.RB [ (\c
-.I value\c
-.BR ) ]\|]
-.RB "[\|" \-C "\|]"
-.RB "[\|" \-D \c
-.I name\c
-.RB [ =\c
-.I definition\c
-\&]\|]
-.RB "[\|" \-dD "\|]"
-.RB "[\|" \-dM "\|]"
-.RB "[\|" "\-I\ "\c
-.I directory\c
-\&\|]
-.RB "[\|" \-H "\|]"
-.RB "[\|" \-I\- "\|]"
-.RB "[\|" "\-imacros\ "\c
-.I file\c
-\&\|]
-.RB "[\|" "\-include\ "\c
-.I file\c
-\&\|]
-.RB "[\|" "\-idirafter\ "\c
-.I dir\c
-\&\|]
-.RB "[\|" "\-iprefix\ "\c
-.I prefix\c
-\&\|]
-.RB "[\|" "\-iwithprefix\ "\c
-.I dir\c
-\&\|]
-.RB "[\|" \-lang\-c "\|]"
-.RB "[\|" \-lang\-c++ "\|]"
-.RB "[\|" \-lang\-objc "\|]"
-.RB "[\|" \-lang\-objc++ "\|]"
-.RB "[\|" \-lint "\|]"
-.RB "[\|" \-M\ [ \-MG "\|]]"
-.RB "[\|" \-MM\ [ \-MG "\|]]"
-.RB "[\|" \-MD\ \c
-.I file\ \c
-\&\|]
-.RB "[\|" \-MMD\ \c
-.I file\ \c
-\&\|]
-.RB "[\|" \-nostdinc "\|]"
-.RB "[\|" \-nostdinc++ "\|]"
-.RB "[\|" \-P "\|]"
-.RB "[\|" \-pedantic "\|]"
-.RB "[\|" \-pedantic\-errors "\|]"
-.RB "[\|" \-traditional "\|]"
-.RB "[\|" \-trigraphs "\|]"
-.RB "[\|" \-U \c
-.I name\c
-\&\|]
-.RB "[\|" \-undef "\|]"
-.RB "[\|" \-Wtrigraphs "\|]"
-.RB "[\|" \-Wcomment "\|]"
-.RB "[\|" \-Wall "\|]"
-.RB "[\|" \-Wtraditional "\|]"
-.br
-.RB "[\|" \c
-.I infile\c
-.RB | \- "\|]"
-.RB "[\|" \c
-.I outfile\c
-.RB | \- "\|]"
-.ad b
-.hy 1
-.SH DESCRIPTION
-The C preprocessor is a \c
-.I macro processor\c
-\& that is used automatically by
-the C compiler to transform your program before actual compilation. It is
-called a macro processor because it allows you to define \c
-.I macros\c
-\&,
-which are brief abbreviations for longer constructs.
-
-The C preprocessor provides four separate facilities that you can use as
-you see fit:
-.TP
-\(bu
-Inclusion of header files. These are files of declarations that can be
-substituted into your program.
-.TP
-\(bu
-Macro expansion. You can define \c
-.I macros\c
-\&, which are abbreviations
-for arbitrary fragments of C code, and then the C preprocessor will
-replace the macros with their definitions throughout the program.
-.TP
-\(bu
-Conditional compilation. Using special preprocessing directives, you
-can include or exclude parts of the program according to various
-conditions.
-.TP
-\(bu
-Line control. If you use a program to combine or rearrange source files into
-an intermediate file which is then compiled, you can use line control
-to inform the compiler of where each source line originally came from.
-.PP
-C preprocessors vary in some details. For a full explanation of the
-GNU C preprocessor, see the
-.B info
-file `\|\c
-.B cpp.info\c
-\&\|', or the manual
-.I The C Preprocessor\c
-\&. Both of these are built from the same documentation source file, `\|\c
-.B cpp.texinfo\c
-\&\|'. The GNU C
-preprocessor provides a superset of the features of ANSI Standard C.
-
-ANSI Standard C requires the rejection of many harmless constructs commonly
-used by today's C programs. Such incompatibility would be inconvenient for
-users, so the GNU C preprocessor is configured to accept these constructs
-by default. Strictly speaking, to get ANSI Standard C, you must use the
-options `\|\c
-.B \-trigraphs\c
-\&\|', `\|\c
-.B \-undef\c
-\&\|' and `\|\c
-.B \-pedantic\c
-\&\|', but in
-practice the consequences of having strict ANSI Standard C make it
-undesirable to do this.
-
-Most often when you use the C preprocessor you will not have to invoke it
-explicitly: the C compiler will do so automatically. However, the
-preprocessor is sometimes useful individually.
-
-When you call the preprocessor individually, either name
-(\c
-.B cpp\c
-\& or \c
-.B cccp\c
-\&) will do\(em\&they are completely synonymous.
-
-The C preprocessor expects two file names as arguments, \c
-.I infile\c
-\& and
-\c
-.I outfile\c
-\&. The preprocessor reads \c
-.I infile\c
-\& together with any other
-files it specifies with `\|\c
-.B #include\c
-\&\|'. All the output generated by the
-combined input files is written in \c
-.I outfile\c
-\&.
-
-Either \c
-.I infile\c
-\& or \c
-.I outfile\c
-\& may be `\|\c
-.B \-\c
-\&\|', which as \c
-.I infile\c
-\&
-means to read from standard input and as \c
-.I outfile\c
-\& means to write to
-standard output. Also, if \c
-.I outfile\c
-\& or both file names are omitted,
-the standard output and standard input are used for the omitted file names.
-.SH OPTIONS
-Here is a table of command options accepted by the C preprocessor.
-These options can also be given when compiling a C program; they are
-passed along automatically to the preprocessor when it is invoked by
-the compiler.
-.TP
-.B \-P
-Inhibit generation of `\|\c
-.B #\c
-\&\|'-lines with line-number information in
-the output from the preprocessor. This might be
-useful when running the preprocessor on something that is not C code
-and will be sent to a program which might be confused by the
-`\|\c
-.B #\c
-\&\|'-lines.
-.TP
-.B \-C
-Do not discard comments: pass them through to the output file.
-Comments appearing in arguments of a macro call will be copied to the
-output before the expansion of the macro call.
-.TP
-.B \-traditional
-Try to imitate the behavior of old-fashioned C, as opposed to ANSI C.
-.TP
-.B \-trigraphs
-Process ANSI standard trigraph sequences. These are three-character
-sequences, all starting with `\|\c
-.B ??\c
-\&\|', that are defined by ANSI C to
-stand for single characters. For example, `\|\c
-.B ??/\c
-\&\|' stands for
-`\|\c
-.BR "\e" "\|',"
-so `\|\c
-.B '??/n'\c
-\&\|' is a character constant for a newline.
-Strictly speaking, the GNU C preprocessor does not support all
-programs in ANSI Standard C unless `\|\c
-.B \-trigraphs\c
-\&\|' is used, but if
-you ever notice the difference it will be with relief.
-
-You don't want to know any more about trigraphs.
-.TP
-.B \-pedantic
-Issue warnings required by the ANSI C standard in certain cases such
-as when text other than a comment follows `\|\c
-.B #else\c
-\&\|' or `\|\c
-.B #endif\c
-\&\|'.
-.TP
-.B \-pedantic\-errors
-Like `\|\c
-.B \-pedantic\c
-\&\|', except that errors are produced rather than
-warnings.
-.TP
-.B \-Wtrigraphs
-Warn if any trigraphs are encountered (assuming they are enabled).
-.TP
-.B \-Wcomment
-.TP
-.B \-Wcomments
-Warn whenever a comment-start sequence `\|\c
-.B /*\c
-\&\|' appears in a comment.
-(Both forms have the same effect).
-.TP
-.B \-Wall
-Requests both `\|\c
-.B \-Wtrigraphs\c
-\&\|' and `\|\c
-.B \-Wcomment\c
-\&\|' (but not
-`\|\c
-.B \-Wtraditional\c
-\&\|').
-.TP
-.B \-Wtraditional
-Warn about certain constructs that behave differently in traditional and
-ANSI C.
-.TP
-.BI "\-I " directory\c
-\&
-Add the directory \c
-.I directory\c
-\& to the end of the list of
-directories to be searched for header files.
-This can be used to override a system header file, substituting your
-own version, since these directories are searched before the system
-header file directories. If you use more than one `\|\c
-.B \-I\c
-\&\|' option,
-the directories are scanned in left-to-right order; the standard
-system directories come after.
-.TP
-.B \-I\-
-Any directories specified with `\|\c
-.B \-I\c
-\&\|' options before the `\|\c
-.B \-I\-\c
-\&\|'
-option are searched only for the case of `\|\c
-.B #include "\c
-.I file\c
-\&"\c
-\&\|';
-they are not searched for `\|\c
-.B #include <\c
-.I file\c
-\&>\c
-\&\|'.
-
-If additional directories are specified with `\|\c
-.B \-I\c
-\&\|' options after
-the `\|\c
-.B \-I\-\c
-\&\|', these directories are searched for all `\|\c
-.B #include\c
-\&\|'
-directives.
-
-In addition, the `\|\c
-.B \-I\-\c
-\&\|' option inhibits the use of the current
-directory as the first search directory for `\|\c
-.B #include "\c
-.I file\c
-\&"\c
-\&\|'.
-Therefore, the current directory is searched only if it is requested
-explicitly with `\|\c
-.B \-I.\c
-\&\|'. Specifying both `\|\c
-.B \-I\-\c
-\&\|' and `\|\c
-.B \-I.\c
-\&\|'
-allows you to control precisely which directories are searched before
-the current one and which are searched after.
-.TP
-.B \-nostdinc
-Do not search the standard system directories for header files.
-Only the directories you have specified with `\|\c
-.B \-I\c
-\&\|' options
-(and the current directory, if appropriate) are searched.
-.TP
-.B \-nostdinc++
-Do not search for header files in the C++ specific standard
-directories, but do still search the other standard directories.
-(This option is used when building libg++.)
-.TP
-.BI "\-D " "name"\c
-\&
-Predefine \c
-.I name\c
-\& as a macro, with definition `\|\c
-.B 1\c
-\&\|'.
-.TP
-.BI "\-D " "name" = definition
-\&
-Predefine \c
-.I name\c
-\& as a macro, with definition \c
-.I definition\c
-\&.
-There are no restrictions on the contents of \c
-.I definition\c
-\&, but if
-you are invoking the preprocessor from a shell or shell-like program
-you may need to use the shell's quoting syntax to protect characters
-such as spaces that have a meaning in the shell syntax. If you use more than
-one `\|\c
-.B \-D\c
-\&\|' for the same
-.I name\c
-\&, the rightmost definition takes effect.
-.TP
-.BI "\-U " "name"\c
-\&
-Do not predefine \c
-.I name\c
-\&. If both `\|\c
-.B \-U\c
-\&\|' and `\|\c
-.B \-D\c
-\&\|' are
-specified for one name, the `\|\c
-.B \-U\c
-\&\|' beats the `\|\c
-.B \-D\c
-\&\|' and the name
-is not predefined.
-.TP
-.B \-undef
-Do not predefine any nonstandard macros.
-.TP
-.BI "\-A " "name(" value )
-Assert (in the same way as the \c
-.B #assert\c
-\& directive)
-the predicate \c
-.I name\c
-\& with tokenlist \c
-.I value\c
-\&. Remember to escape or quote the parentheses on
-shell command lines.
-
-You can use `\|\c
-.B \-A-\c
-\&\|' to disable all predefined assertions; it also
-undefines all predefined macros.
-.TP
-.B \-dM
-Instead of outputting the result of preprocessing, output a list of
-`\|\c
-.B #define\c
-\&\|' directives for all the macros defined during the
-execution of the preprocessor, including predefined macros. This gives
-you a way of finding out what is predefined in your version of the
-preprocessor; assuming you have no file `\|\c
-.B foo.h\c
-\&\|', the command
-.sp
-.br
-touch\ foo.h;\ cpp\ \-dM\ foo.h
-.br
-.sp
-will show the values of any predefined macros.
-.TP
-.B \-dD
-Like `\|\c
-.B \-dM\c
-\&\|' except in two respects: it does \c
-.I not\c
-\& include the
-predefined macros, and it outputs \c
-.I both\c
-\& the `\|\c
-.B #define\c
-\&\|'
-directives and the result of preprocessing. Both kinds of output go to
-the standard output file.
-.PP
-.TP
-.BR \-M\ [ \-MG ]
-Instead of outputting the result of preprocessing, output a rule
-suitable for \c
-.B make\c
-\& describing the dependencies of the main
-source file. The preprocessor outputs one \c
-.B make\c
-\& rule containing
-the object file name for that source file, a colon, and the names of
-all the included files. If there are many included files then the
-rule is split into several lines using `\|\c
-.B \\\\\c
-\&\|'-newline.
-
-`\|\c
-.B \-MG\c
-\&\|' says to treat missing header files as generated files and assume \c
-they live in the same directory as the source file. It must be specified \c
-in addition to `\|\c
-.B \-M\c
-\&\|'.
-
-This feature is used in automatic updating of makefiles.
-.TP
-.BR \-MM\ [ \-MG ]
-Like `\|\c
-.B \-M\c
-\&\|' but mention only the files included with `\|\c
-.B #include
-"\c
-.I file\c
-\&"\c
-\&\|'. System header files included with `\|\c
-.B #include
-<\c
-.I file\c
-\&>\c
-\&\|' are omitted.
-.TP
-.BI \-MD\ file
-Like `\|\c
-.B \-M\c
-\&\|' but the dependency information is written to `\|\c
-.I file\c
-\&\|'. This is in addition to compiling the file as
-specified\(em\&`\|\c
-.B \-MD\c
-\&\|' does not inhibit ordinary compilation the way
-`\|\c
-.B \-M\c
-\&\|' does.
-
-When invoking gcc, do not specify the `\|\c
-.I file\c
-\&\|' argument. Gcc will create file names made by replacing `\|\c
-.B .c\c
-\&\|' with `\|\c
-.B .d\c
-\&\|' at the end of the input file names.
-
-In Mach, you can use the utility \c
-.B md\c
-\& to merge multiple files
-into a single dependency file suitable for using with the `\|\c
-.B make\c
-\&\|'
-command.
-.TP
-.BI \-MMD\ file
-Like `\|\c
-.B \-MD\c
-\&\|' except mention only user header files, not system
-header files.
-.TP
-.B \-H
-Print the name of each header file used, in addition to other normal
-activities.
-.TP
-.BI "\-imacros " "file"\c
-\&
-Process \c
-.I file\c
-\& as input, discarding the resulting output, before
-processing the regular input file. Because the output generated from
-\c
-.I file\c
-\& is discarded, the only effect of `\|\c
-.B \-imacros \c
-.I file\c
-\&\c
-\&\|' is to
-make the macros defined in \c
-.I file\c
-\& available for use in the main
-input. The preprocessor evaluates any `\|\c
-.B \-D\c
-\&\|' and `\|\c
-.B \-U\c
-\&\|' options
-on the command line before processing `\|\c
-.B \-imacros \c
-.I file\c
-\&\|' \c
-\&.
-.TP
-.BI "\-include " "file"
-Process
-.I file
-as input, and include all the resulting output,
-before processing the regular input file.
-.TP
-.BI "-idirafter " "dir"\c
-\&
-Add the directory \c
-.I dir\c
-\& to the second include path. The directories
-on the second include path are searched when a header file is not found
-in any of the directories in the main include path (the one that
-`\|\c
-.B \-I\c
-\&\|' adds to).
-.TP
-.BI "-iprefix " "prefix"\c
-\&
-Specify \c
-.I prefix\c
-\& as the prefix for subsequent `\|\c
-.B \-iwithprefix\c
-\&\|'
-options.
-.TP
-.BI "-iwithprefix " "dir"\c
-\&
-Add a directory to the second include path. The directory's name is
-made by concatenating \c
-.I prefix\c
-\& and \c
-.I dir\c
-\&, where \c
-.I prefix\c
-\&
-was specified previously with `\|\c
-.B \-iprefix\c
-\&\|'.
-.TP
-.B \-lang-c
-.TP
-.B \-lang-c++
-.TP
-.B \-lang-objc
-.TP
-.B \-lang-objc++
-Specify the source language. `\|\c
-.B \-lang-c++\c
-\&\|' makes the preprocessor
-handle C++ comment syntax, and includes extra default include
-directories for C++, and `\|\c
-.B \-lang-objc\c
-\&\|' enables the Objective C
-`\|\c
-.B #import\c
-\&\|' directive. `\|\c
-.B \-lang-c\c
-\&\|' explicitly turns off both of
-these extensions, and `\|\c
-.B \-lang-objc++\c
-\&\|' enables both.
-
-These options are generated by the compiler driver \c
-.B gcc\c
-\&, but not
-passed from the `\|\c
-.B gcc\c
-\&\|' command line.
-.TP
-.B \-lint
-Look for commands to the program checker \c
-.B lint\c
-\& embedded in
-comments, and emit them preceded by `\|\c
-.B #pragma lint\c
-\&\|'. For example,
-the comment `\|\c
-.B /* NOTREACHED */\c
-\&\|' becomes `\|\c
-.B #pragma lint
-NOTREACHED\c
-\&\|'.
-
-This option is available only when you call \c
-.B cpp\c
-\& directly;
-\c
-.B gcc\c
-\& will not pass it from its command line.
-.TP
-.B \-$
-Forbid the use of `\|\c
-.B $\c
-\&\|' in identifiers. This was formerly required for strict conformance
-to the C Standard before the standard was corrected. \c
-
-This option is available only when you call \c
-.B cpp\c
-\& directly;
-.B gcc\c
-\& will not pass it from its command line.
-.SH "SEE ALSO"
-.RB "`\|" Cpp "\|'"
-entry in
-.B info\c
-\&;
-.I The C Preprocessor\c
-, Richard M. Stallman.
-.br
-.BR gcc "(" 1 ");"
-.RB "`\|" Gcc "\|'"
-entry in
-.B info\c
-\&;
-.I
-Using and Porting GNU CC (for version 2.0)\c
-, Richard M. Stallman.
-.SH COPYING
-Copyright (c) 1991, 1992, 1993 Free Software Foundation, Inc.
-.PP
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-.PP
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
diff --git a/contrib/gcc/config.guess b/contrib/gcc/config.guess
deleted file mode 100755
index fd7602d..0000000
--- a/contrib/gcc/config.guess
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-# Use the top-level config.guess so that we don't have two of them.
-guesssys=`echo $0 | sed 's|config.guess|../config.guess|'`
-exec ${guesssys} "$@"
diff --git a/contrib/gcc/config/alpha/alpha-interix.h b/contrib/gcc/config/alpha/alpha-interix.h
deleted file mode 100644
index 3f1580d..0000000
--- a/contrib/gcc/config/alpha/alpha-interix.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/* Definitions of target machine for GNU compiler, for DEC Alpha
- running Windows/NT.
- Copyright (C) 1995, 1996, 1999, 2000, 2002 Free Software Foundation, Inc.
-
- Donn Terry, Softway Systems, Inc.
- From code
- Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* cpp handles __STDC__ */
-/* The three "Alpha" defines on the first such line are from the CLAXP spec */
-#define TARGET_OS_CPP_BUILTINS() \
- do { \
- builtin_define ("__INTERIX"); \
- builtin_define ("__OPENNT"); \
- builtin_define ("__Alpha_AXP"); \
- builtin_define ("_M_ALPHA"); \
- builtin_define ("_ALPHA_"); \
- builtin_define ("__stdcall="); \
- builtin_define ("__cdecl="); \
- builtin_assert ("system=unix"); \
- builtin_assert ("system=interix"); \
- } while (0)
-
-#undef CPP_SUBTARGET_SPEC
-#define CPP_SUBTARGET_SPEC "\
--remap \
-%{posix:-D_POSIX_SOURCE} \
--isystem %$INTERIX_ROOT/usr/include"
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (alpha Interix)");
-
-/* alpha.h sets this, but it doesn't apply to us */
-#undef OBJECT_FORMAT_ECOFF
-#undef OBJECT_FORMAT_COFF
-
-/* LINK_SPEC */
-
-/* MD_STARTFILE_PREFIX */
-
-/* ASM_OUTPUT_LOOP_ALIGN; ASM_OUTPUT_ALIGN_CODE */
-
-/* Codegen macro overrides for NT internal conventions */
-
-/* the below are ecoff specific... we don't need them, so
- undef them (they'll get a default later) */
-
-#undef PUT_SDB_BLOCK_START
-#undef PUT_SDB_BLOCK_END
-
-/* The following are needed for C++, but also needed for profiling */
-
-/* Support const sections and the ctors and dtors sections for g++. */
-
-#define READONLY_DATA_SECTION_ASM_OP "\t.rdata"
-
-/* Define the pseudo-ops used to switch to the .ctors and .dtors sections.
-
- Note that we want to give these sections the SHF_WRITE attribute
- because these sections will actually contain data (i.e. tables of
- addresses of functions in the current root executable or shared library
- file) and, in the case of a shared library, the relocatable addresses
- will have to be properly resolved/relocated (and then written into) by
- the dynamic linker when it actually attaches the given shared library
- to the executing process. (Note that on SVR4, you may wish to use the
- `-z text' option to the ELF linker, when building a shared library, as
- an additional check that you are doing everything right. But if you do
- use the `-z text' option when building a shared library, you will get
- errors unless the .ctors and .dtors sections are marked as writable
- via the SHF_WRITE attribute.) */
-
-#define CTORS_SECTION_ASM_OP "\t.ctors"
-#define DTORS_SECTION_ASM_OP "\t.dtors"
-
-/* The linker will take care of this, and having them causes problems with
- ld -r (specifically -rU). */
-#define CTOR_LISTS_DEFINED_EXTERNALLY 1
-
-#define SET_ASM_OP "\t.set\t"
-/* Output a definition (implements alias) */
-#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2) \
-do \
-{ \
- fprintf ((FILE), "\t"); \
- assemble_name (FILE, LABEL1); \
- fprintf (FILE, "="); \
- assemble_name (FILE, LABEL2); \
- fprintf (FILE, "\n"); \
- } \
-while (0)
-
-/* We use the defaults, so undef the null definitions */
-#undef PUT_SDB_FUNCTION_START
-#undef PUT_SDB_FUNCTION_END
-#undef PUT_SDB_EPILOGUE_END
-
-#define HOST_PTR_PRINTF "%p"
-#define HOST_PTR_AS_INT unsigned long
-
-#define PCC_BITFIELD_TYPE_MATTERS 1
-#define PCC_BITFIELD_TYPE_TEST TYPE_NATIVE(rec)
-#define GROUP_BITFIELDS_BY_ALIGN TYPE_NATIVE(rec)
-
-/* DWARF2 Unwinding doesn't work with exception handling yet. */
-#undef DWARF2_UNWIND_INFO
-#define DWARF2_UNWIND_INFO 0
-
-/* Don't assume anything about the header files. */
-#define NO_IMPLICIT_EXTERN_C
-
-/* The definition of this macro implies that there are cases where
- a scalar value cannot be returned in registers.
-
- On NT (according to the spec) anything except strings/array that fits
- in 64 bits is returned in the registers (this appears to differ from
- the rest of the Alpha family). */
-
-#undef RETURN_IN_MEMORY
-#define RETURN_IN_MEMORY(TYPE) \
- (TREE_CODE (TYPE) == ARRAY_TYPE || int_size_in_bytes(TYPE) > 8)
-
-#define ASM_LOAD_ADDR(loc, reg) " lda " #reg "," #loc "\n"
-
-#undef ASM_FILE_START
-#define ASM_FILE_START(FILE) \
-{ \
- alpha_write_verstamp (FILE); \
- fprintf (FILE, "\t.set noreorder\n"); \
- fprintf (FILE, "\t.set volatile\n"); \
- fprintf (FILE, "\t.set noat\n"); \
- fprintf (FILE, "\t.globl\t__fltused\n"); \
- ASM_OUTPUT_SOURCE_FILENAME (FILE, main_input_filename); \
-}
diff --git a/contrib/gcc/config/alpha/alpha32.h b/contrib/gcc/config/alpha/alpha32.h
deleted file mode 100644
index 8d9df0b..0000000
--- a/contrib/gcc/config/alpha/alpha32.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* Definitions of target machine for GNU compiler, for DEC Alpha
- running Windows/NT.
- Copyright (C) 1995, 1996, 1998, 1999 Free Software Foundation, Inc.
-
- Derived from code
- Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
-
- Donn Terry, Softway Systems, Inc.
-
- This file contains the code-generation stuff common to the 32-bit
- versions of the DEC/Compaq Alpha architecture. It is shared by
- Interix and NT/Win32 ports. It should not contain compile-time
- or run-time dependent environment values (such as compiler options
- or anything containing a file or pathname.)
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#undef TARGET_ABI_WINDOWS_NT
-#define TARGET_ABI_WINDOWS_NT 1
-
-/* WinNT (and thus Interix) use unsigned int */
-#define SIZE_TYPE "unsigned int"
-
-/* Pointer is 32 bits but the hardware has 64-bit addresses, sign extended. */
-#undef POINTER_SIZE
-#define POINTER_SIZE 32
-#define POINTERS_EXTEND_UNSIGNED 0
-
-/* We don't change Pmode to the "obvious" SI mode... the above appears
- to affect the in-memory size; we want the registers to stay DImode
- to match the md file */
-
-/* "long" is 32 bits. */
-#undef LONG_TYPE_SIZE
-#define LONG_TYPE_SIZE 32
-
-
-/* Output assembler code for a block containing the constant parts
- of a trampoline, leaving space for the variable parts.
-
- The trampoline should set the static chain pointer to value placed
- into the trampoline and should branch to the specified routine. */
-
-#undef TRAMPOLINE_TEMPLATE
-#define TRAMPOLINE_TEMPLATE(FILE) \
-{ \
- fprintf (FILE, "\tbr $27,$LTRAMPP\n"); \
- fprintf (FILE, "$LTRAMPP:\n\tldl $1,12($27)\n"); \
- fprintf (FILE, "\tldl $27,16($27)\n"); \
- fprintf (FILE, "\tjmp $31,($27),0\n"); \
- fprintf (FILE, "\t.long 0,0\n"); \
-}
-
-/* Length in units of the trampoline for entering a nested function. */
-
-#undef TRAMPOLINE_SIZE
-#define TRAMPOLINE_SIZE 24
-
-/* The alignment of a trampoline, in bits. */
-
-#undef TRAMPOLINE_ALIGNMENT
-#define TRAMPOLINE_ALIGNMENT 32
-
-/* Emit RTL insns to initialize the variable parts of a trampoline.
- FNADDR is an RTX for the address of the function's pure code.
- CXT is an RTX for the static chain value for the function. */
-
-#undef INITIALIZE_TRAMPOLINE
-#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \
- alpha_initialize_trampoline (TRAMP, FNADDR, CXT, 20, 16, 12)
diff --git a/contrib/gcc/config/alpha/crtbegin.asm b/contrib/gcc/config/alpha/crtbegin.asm
deleted file mode 100644
index f954f1a..0000000
--- a/contrib/gcc/config/alpha/crtbegin.asm
+++ /dev/null
@@ -1,192 +0,0 @@
- # Copyright (C) 1996, 1998 Free Software Foundation, Inc.
- # Contributed by Richard Henderson (rth@tamu.edu)
- #
- # 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 the
- # Free Software Foundation; either version 2, or (at your option) any
- # later version.
- #
- # In addition to the permissions in the GNU General Public License, the
- # Free Software Foundation gives you unlimited permission to link the
- # compiled version of this file with other programs, and to distribute
- # those programs without any restriction coming from the use of this
- # file. (The General Public License restrictions do apply in other
- # respects; for example, they cover modification of the file, and
- # distribution when not linked into another program.)
- #
- # This file 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 COPYING. If not, write to
- # the Free Software Foundation, 59 Temple Place - Suite 330,
- # Boston, MA 02111-1307, USA.
- #
- # As a special exception, if you link this library with files
- # compiled with GCC to produce an executable, this does not cause
- # the resulting executable to be covered by the GNU General Public License.
- # This exception does not however invalidate any other reasons why
- # the executable file might be covered by the GNU General Public License.
-
- #
- # Heads of the constructor/destructor lists.
- #
-
- # The __*TOR_LIST__ symbols are not global because when this file is used
- # in a shared library, we do not want the symbol to fall over to the
- # application's lists.
-
-.section .ctors,"aw"
-
- .align 3
-__CTOR_LIST__:
- .quad -1
-
-.section .dtors,"aw"
-
- .align 3
-__DTOR_LIST__:
- .quad -1
-
-.section .eh_frame,"aw"
-__EH_FRAME_BEGIN__:
-
- #
- # Fragment of the ELF _fini routine that invokes our dtor cleanup.
- #
-
-.section .fini,"ax"
-
- # Since the bits of the _fini function are spread across many
- # object files, each potentially with its own GP, we must
- # assume we need to load ours. Further, our .fini section
- # can easily be more than 4MB away from our .text bits so we
- # can't use bsr.
-
- br $29,1f
-1: ldgp $29,0($29)
- jsr $26,__do_global_dtors_aux
-
- # Ideally this call would go in crtend.o, except that we can't
- # get hold of __EH_FRAME_BEGIN__ there.
-
- jsr $26,__do_frame_takedown
-
- # Must match the alignment we got from crti.o else we get
- # zero-filled holes in our _fini function and then SIGILL.
- .align 3
-
- #
- # Fragment of the ELF _init routine that sets up the frame info.
- #
-
-.section .init,"ax"
- br $29,1f
-1: ldgp $29,0($29)
- jsr $26,__do_frame_setup
- .align 3
-
- #
- # Invoke our destructors in order.
- #
-
-.data
-
- # Support recursive calls to exit.
-$ptr: .quad __DTOR_LIST__
-
-.text
-
- .align 3
- .ent __do_global_dtors_aux
-
-__do_global_dtors_aux:
- lda $30,-16($30)
- .frame $30,16,$26,0
- stq $9,8($30)
- stq $26,0($30)
- .mask 0x4000200,-16
- .prologue 0
-
- lda $9,$ptr
- br 1f
-0: stq $1,0($9)
- jsr $26,($27)
-1: ldq $1,0($9)
- ldq $27,8($1)
- addq $1,8,$1
- bne $27,0b
-
- ldq $26,0($30)
- ldq $9,8($30)
- lda $30,16($30)
- ret
-
- .end __do_global_dtors_aux
-
- #
- # Install our frame info.
- #
-
- # ??? How can we rationally keep this size correct?
-
-.section .bss
- .type $object,@object
- .align 3
-$object:
- .zero 48
- .size $object, 48
-
-.text
-
- .align 3
- .ent __do_frame_setup
-
-__do_frame_setup:
- ldgp $29,0($27)
- lda $30,-16($30)
- .frame $30,16,$26,0
- stq $26,0($30)
- .mask 0x4000000,-16
- .prologue 1
-
- lda $1,__register_frame_info
- beq $1,0f
- lda $16,__EH_FRAME_BEGIN__
- lda $17,$object
- jsr $26,__register_frame_info
- ldq $26,0($30)
-0: lda $30,16($30)
- ret
-
- .end __do_frame_setup
-
- #
- # Remove our frame info.
- #
-
- .align 3
- .ent __do_frame_takedown
-
-__do_frame_takedown:
- ldgp $29,0($27)
- lda $30,-16($30)
- .frame $30,16,$26,0
- stq $26,0($30)
- .mask 0x4000000,-16
- .prologue 1
-
- lda $1,__deregister_frame_info
- beq $1,0f
- lda $16,__EH_FRAME_BEGIN__
- jsr $26,__deregister_frame_info
- ldq $26,0($30)
-0: lda $30,16($30)
- ret
-
- .end __do_frame_takedown
-
-.weak __register_frame_info
-.weak __deregister_frame_info
diff --git a/contrib/gcc/config/alpha/crtend.asm b/contrib/gcc/config/alpha/crtend.asm
deleted file mode 100644
index 4a0cc5e..0000000
--- a/contrib/gcc/config/alpha/crtend.asm
+++ /dev/null
@@ -1,108 +0,0 @@
- # Copyright (C) 1996 Free Software Foundation, Inc.
- # Contributed by Richard Henderson (rth@tamu.edu)
- #
- # 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 the
- # Free Software Foundation; either version 2, or (at your option) any
- # later version.
- #
- # In addition to the permissions in the GNU General Public License, the
- # Free Software Foundation gives you unlimited permission to link the
- # compiled version of this file with other programs, and to distribute
- # those programs without any restriction coming from the use of this
- # file. (The General Public License restrictions do apply in other
- # respects; for example, they cover modification of the file, and
- # distribution when not linked into another program.)
- #
- # This file 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 COPYING. If not, write to
- # the Free Software Foundation, 59 Temple Place - Suite 330,
- # Boston, MA 02111-1307, USA.
- #
- # As a special exception, if you link this library with files
- # compiled with GCC to produce an executable, this does not cause
- # the resulting executable to be covered by the GNU General Public License.
- # This exception does not however invalidate any other reasons why
- # the executable file might be covered by the GNU General Public License.
-
- #
- # Tails of the constructor/destructor lists.
- #
-
- # The __*TOR_END__ symbols are not global because when this file is used
- # in a shared library, we do not want the symbol to fall over to the
- # application's lists.
-
-.section .ctors,"aw"
-
- .align 3
-__CTOR_END__:
- .quad 0
-
-.section .dtors,"aw"
-
- .align 3
-__DTOR_END__:
- .quad 0
-
-.section .eh_frame,"aw"
-__FRAME_END__:
- .quad 0
-
- #
- # Fragment of the ELF _init routine that invokes our ctor startup
- #
-
-.section .init,"ax"
-
- # Since the bits of the _init function are spread across many
- # object files, each potentially with its own GP, we must
- # assume we need to load ours. Further, our .init section
- # can easily be more than 4MB away from our .text bits so we
- # can't use bsr.
-
- br $29,1f
-1: ldgp $29,0($29)
- jsr $26,__do_global_ctors_aux
-
- # Must match the alignment we got from crti.o else we get
- # zero-filled holes in our _init function and thense SIGILL.
- .align 3
-
- #
- # Invoke our destructors in order.
- #
-
-.text
-
- .align 3
- .ent __do_global_ctors_aux
-
-__do_global_ctors_aux:
- ldgp $29,0($27)
- lda $30,-16($30)
- .frame $30,16,$26,0
- stq $9,8($30)
- stq $26,0($30)
- .mask 0x4000200,-16
- .prologue 1
-
- lda $9,__CTOR_END__
- br 1f
-0: jsr $26,($27)
-1: ldq $27,-8($9)
- subq $9,8,$9
- not $27,$0
- bne $0,0b
-
- ldq $26,0($30)
- ldq $9,8($30)
- lda $30,16($30)
- ret
-
- .end __do_global_ctors_aux
diff --git a/contrib/gcc/config/alpha/gdb-osf12.h b/contrib/gcc/config/alpha/gdb-osf12.h
deleted file mode 100644
index 98c2897..0000000
--- a/contrib/gcc/config/alpha/gdb-osf12.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Definitions of target machine for GNU compiler, for DEC Alpha, using
- encapsulated stabs and OSF V1.2.
- Copyright (C) 1994 Free Software Foundation, Inc.
- Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#include "alpha/osf12.h"
-
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
diff --git a/contrib/gcc/config/alpha/gdb-osf2.h b/contrib/gcc/config/alpha/gdb-osf2.h
deleted file mode 100644
index 5ddb798..0000000
--- a/contrib/gcc/config/alpha/gdb-osf2.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Definitions of target machine for GNU compiler, for DEC Alpha, using
- encapsulated stabs.
- Copyright (C) 1992, 1993 Free Software Foundation, Inc.
- Contributed by Peter Schauer (pes@regent.e-technik.tu-muenchen.de).
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#include "alpha/osf2.h"
-
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
diff --git a/contrib/gcc/config/alpha/gdb.h b/contrib/gcc/config/alpha/gdb.h
deleted file mode 100644
index ecdbe40..0000000
--- a/contrib/gcc/config/alpha/gdb.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Definitions of target machine for GNU compiler, for DEC Alpha, using
- encapsulated stabs.
- Copyright (C) 1992, 1993 Free Software Foundation, Inc.
- Contributed by Peter Schauer (pes@regent.e-technik.tu-muenchen.de).
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#include "alpha/alpha.h"
-
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
diff --git a/contrib/gcc/config/alpha/osf2.h b/contrib/gcc/config/alpha/osf2.h
deleted file mode 100644
index 169af5a..0000000
--- a/contrib/gcc/config/alpha/osf2.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Definitions of target machine for GNU compiler, for DEC Alpha.
- Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
- Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-
-#include "alpha/alpha.h"
-
-/* In OSF 2.0, the size of wchar_t was changed from short unsigned
- to unsigned int. */
-
-#undef WCHAR_TYPE
-#define WCHAR_TYPE "unsigned int"
-
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE 32
diff --git a/contrib/gcc/config/alpha/t-interix b/contrib/gcc/config/alpha/t-interix
deleted file mode 100644
index 3d570c6..0000000
--- a/contrib/gcc/config/alpha/t-interix
+++ /dev/null
@@ -1,7 +0,0 @@
-# t-interix
-
-# System headers will track gcc's needs.
-USER_H=
-
-LIB1ASMSRC = alpha/lib1funcs.asm
-LIB1ASMFUNCS = _divqu _divq _divlu _divl _remqu _remq _remlu _reml
diff --git a/contrib/gcc/config/alpha/vxworks.h b/contrib/gcc/config/alpha/vxworks.h
deleted file mode 100644
index a27c645..0000000
--- a/contrib/gcc/config/alpha/vxworks.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Definitions of target machine for GNU compiler. Vxworks Alpha version.
- Copyright (C) 1998 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* This file just exists to give specs for the Alpha running on VxWorks. */
-
-#undef CPP_SUBTARGET_SPEC
-#define CPP_SUBTARGET_SPEC "\
-%{mvxsim:-DCPU=SIMALPHADUNIX} \
-%{!mvxsim: %{!mcpu*|mcpu=21064:-DCPU=21064} %{mcpu=21164:-DCPU=21164}} \
-%{posix: -D_POSIX_SOURCE}"
-
-#define TARGET_OS_CPP_BUILTINS() \
- do { \
- builtin_define ("__vxworks"); \
- builtin_define ("__alpha_vxworks"); \
- builtin_define ("_LONGLONG"); \
- builtin_assert ("system=vxworks"); \
- builtin_assert ("system=embedded"); \
- } while (0)
-
-/* VxWorks does all the library stuff itself. */
-
-#undef LIB_SPEC
-#define LIB_SPEC ""
-
-/* VxWorks uses object files, not loadable images. Make linker just combine
- objects. Also show using 32 bit mode and set start of text to 0. */
-
-#undef LINK_SPEC
-#define LINK_SPEC "-r -taso -T 0"
-
-/* VxWorks provides the functionality of crt0.o and friends itself. */
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC ""
-
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC ""
diff --git a/contrib/gcc/config/alpha/xm-alpha-interix.h b/contrib/gcc/config/alpha/xm-alpha-interix.h
deleted file mode 100644
index dd71a1d..0000000
--- a/contrib/gcc/config/alpha/xm-alpha-interix.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Configuration for GNU compiler
- for an DEC/Compaq Alpha
- Copyright (C) 1999, 2001 Free Software Foundation, Inc.
- Donn Terry, Softway Systems, Inc.
- derived from code by Douglas B. Rupp (drupp@cs.washington.edu)
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#define HOST_BITS_PER_WIDE_INT 64
-#ifdef __GNUC__
-# define HOST_WIDE_INT long long
-#else
-# define HOST_WIDE_INT __int64
-#endif
-
-#define HOST_BITS_PER_WIDEST_INT HOST_BITS_PER_LONGLONG
-#ifdef __GNUC__
-# define HOST_WIDEST_INT long long
-#else
-# define HOST_WIDEST_INT __int64
-#endif
-#define HOST_WIDEST_INT_PRINT_DEC "%lld"
-#define HOST_WIDEST_INT_PRINT_UNSIGNED "%llu"
-#define HOST_WIDEST_INT_PRINT_HEX "0x%llx"
diff --git a/contrib/gcc/config/alpha/xm-vms64.h b/contrib/gcc/config/alpha/xm-vms64.h
deleted file mode 100644
index 26fd829..0000000
--- a/contrib/gcc/config/alpha/xm-vms64.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Configuration for GNU C-compiler for openVMS/Alpha.
- Copyright (C) 2001 Free Software Foundation, Inc.
- Contributed by Douglas Rupp (rupp@gnat.com).
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#undef HOST_WIDE_INT
-
-/* Since DEC C long != Gnu C long */
-#define HOST_PTR_PRINTF "%llx"
-#define HOST_WIDE_INT_PRINT_DEC "%lld"
-#define HOST_WIDE_INT_PRINT_UNSIGNED "%llu"
-#define HOST_WIDE_INT_PRINT_HEX "0x%llx"
-#define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%llx%016llx"
diff --git a/contrib/gcc/config/aoutos.h b/contrib/gcc/config/aoutos.h
deleted file mode 100644
index 6f4e262..0000000
--- a/contrib/gcc/config/aoutos.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* aoutos.h -- operating system specific defines to be used when
- targeting GCC for some system that uses a.out file format.
- Copyright (C) 1992 Free Software Foundation, Inc.
-
- Written by Ron Guilmette (rfg@netcom.com).
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* To use this file, make up a file with a name like:
-
- ?????aout.h
-
- where ????? is replaced by the name of the basic hardware that you
- are targeting for. Then, in the file ?????aout.h, put something
- like:
-
- #include "?????.h"
- #include "aoutos.h"
-
- followed by any really system-specific defines (or overrides of
- defines) which you find that you need. Now, modify the configure
- or configure.in script to properly use the new ?????aout.h file
- when configuring for the system. */
-
-/* Define a symbol indicating that we are using aoutos.h. */
-#define USING_AOUTOS_H
diff --git a/contrib/gcc/config/arm/conix-elf.h b/contrib/gcc/config/arm/conix-elf.h
deleted file mode 100644
index 4a137d6..0000000
--- a/contrib/gcc/config/arm/conix-elf.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Definitions of target machine for GNU compiler,
- for ARM with ConiX OS.
- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
- Contributed by Philip Blundell <pb@futuretv.com>
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-`Boston, MA 02111-1307, USA. */
-
-/* elfos.h should have already been included. Now just override
- any conflicting definitions and add any extras. */
-
-/* Run-time Target Specification. */
-#undef TARGET_VERSION
-#define TARGET_VERSION fputs (" (ARM/ELF ConiX)", stderr);
-
-/* Default to using APCS-32 and software floating point. */
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32)
-
-#ifndef CPP_APCS_PC_DEFAULT_SPEC
-#define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
-#endif
-
-#ifndef SUBTARGET_CPU_DEFAULT
-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm7tdmi
-#endif
-
-#define TARGET_OS_CPP_BUILTINS() \
- do { \
- builtin_define ("__CONIX__"); \
- builtin_define ("__ELF__"); \
- } while (0)
diff --git a/contrib/gcc/config/arm/t-arm-aout b/contrib/gcc/config/arm/t-arm-aout
deleted file mode 100644
index 2ce20e4..0000000
--- a/contrib/gcc/config/arm/t-arm-aout
+++ /dev/null
@@ -1,29 +0,0 @@
-LIB1ASMSRC = arm/lib1funcs.asm
-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _call_via_rX _interwork_call_via_rX
-
-# We want fine grained libraries, so use the new code to build the
-# floating point emulation libraries.
-FPBIT = fp-bit.c
-DPBIT = dp-bit.c
-
-fp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#define FLOAT' > fp-bit.c
- echo '#ifndef __ARMEB__' >> fp-bit.c
- echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c
- echo '#endif' >> fp-bit.c
- cat $(srcdir)/config/fp-bit.c >> fp-bit.c
-
-dp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#ifndef __ARMEB__' > dp-bit.c
- echo '#define FLOAT_BIT_ORDER_MISMATCH' >> dp-bit.c
- echo '#define FLOAT_WORD_ORDER_MISMATCH' >> dp-bit.c
- echo '#endif' >> dp-bit.c
- cat $(srcdir)/config/fp-bit.c >> dp-bit.c
-
-# MULTILIB_OPTIONS = mhard-float/msoft-float mapcs-32/mapcs-26 mno-thumb-interwork/mthumb-interwork arm/thumb
-# MULTILIB_DIRNAMES = le be fpu soft 32bit 26bit normal interwork arm thumb
-# MULTILIB_MATCHES =
-# MULTILIB_EXCEPTIONS = *mapcs-26/*mthumb-interwork* *mpacs-26/*mthumb*
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/contrib/gcc/config/arm/t-strongarm-coff b/contrib/gcc/config/arm/t-strongarm-coff
deleted file mode 100644
index 0a66360..0000000
--- a/contrib/gcc/config/arm/t-strongarm-coff
+++ /dev/null
@@ -1,34 +0,0 @@
-LIB1ASMSRC = arm/lib1funcs.asm
-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func
-
-# We want fine grained libraries, so use the new code to build the
-# floating point emulation libraries.
-FPBIT = fp-bit.c
-DPBIT = dp-bit.c
-
-fp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#define FLOAT' > fp-bit.c
- echo '#ifndef __ARMEB__' >> fp-bit.c
- echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c
- echo '#endif' >> fp-bit.c
- cat $(srcdir)/config/fp-bit.c >> fp-bit.c
-
-dp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#ifndef __ARMEB__' > dp-bit.c
- echo '#define FLOAT_BIT_ORDER_MISMATCH' >> dp-bit.c
- echo '#define FLOAT_WORD_ORDER_MISMATCH' >> dp-bit.c
- echo '#endif' >> dp-bit.c
- cat $(srcdir)/config/fp-bit.c >> dp-bit.c
-
-MULTILIB_OPTIONS = mlittle-endian/mbig-endian mhard-float/msoft-float
-MULTILIB_DIRNAMES = le be fpu soft
-MULTILIB_MATCHES =
-EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
-# Currently there is a bug somwehere in GCC's alias analysis
-# or scheduling code that is breaking _fpmul_parts in fp-bit.c.
-# Disabling function inlining is a workaround for this problem.
-TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline
diff --git a/contrib/gcc/config/arm/unknown-elf-oabi.h b/contrib/gcc/config/arm/unknown-elf-oabi.h
deleted file mode 100644
index 91f18c0..0000000
--- a/contrib/gcc/config/arm/unknown-elf-oabi.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Definitions for non-Linux based ARM systems using ELF old abi
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
- Contributed by Catherine Moore <clm@cygnus.com>
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* Run-time Target Specification. */
-#undef TARGET_VERSION
-#define TARGET_VERSION fputs (" (ARM/ELF non-Linux old abi)", stderr);
-
-#undef ASM_SPEC
-#define ASM_SPEC "-moabi %{mbig-endian:-EB} %{mcpu=*:-mcpu=%*} %{march=*:-march=%*} \
- %{mapcs-*:-mapcs-%*} %{mthumb-interwork:-mthumb-interwork}"
-
diff --git a/contrib/gcc/config/arm/vxarm.h b/contrib/gcc/config/arm/vxarm.h
deleted file mode 100644
index 473362e..0000000
--- a/contrib/gcc/config/arm/vxarm.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Definitions of target machine for GNU compiler,
- for ARM with targetting the VXWorks run time environment.
- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
-
- Contributed by: Mike Stump <mrs@wrs.com>
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm710
-
-#undef SUBTARGET_CPP_SPEC
-#define SUBTARGET_CPP_SPEC \
-"%{march=arm710:-DCPU=ARM710A} \
- %{march=arm7tdmi:-DCPU=ARM7TDMI} \
- %{march=arm810:-DCPU=ARM810} \
- %{march=strongarm110:-DCPU=ARMSA110} \
- %{!march=*: \
- %{mcpu=arm710:-DCPU=ARM710A} \
- %{mcpu=arm7tdmi:-DCPU=ARM7TDMI} \
- %{mcpu=arm810:-DCPU=ARM810} \
- %{mcpu=strongarm110:-DCPU=ARMSA110}} \
- %{!mcpu*:%{!march=*:-DCPU=ARM710A}} \
-"
-
-#define TARGET_OS_CPP_BUILTINS() \
- do { \
- builtin_define ("__vxworks"); \
- } while (0)
-
-/* VxWorks does all the library stuff itself. */
-#undef LIB_SPEC
-#define LIB_SPEC ""
-
-/* VxWorks uses object files, not loadable images. make linker just
- combine objects. */
-#undef LINK_SPEC
-#define LINK_SPEC "-r"
-
-/* VxWorks provides the functionality of crt0.o and friends itself. */
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC ""
-
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC ""
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fputs (" (ARM/VxWorks)", stderr);
-
-#undef ASM_FILE_START
-#define ASM_FILE_START(STREAM) \
- do \
- { \
- fprintf (STREAM, "%s Generated by gcc %s for ARM/VxWorks\n", \
- ASM_COMMENT_START, version_string); \
- } \
- while (0)
diff --git a/contrib/gcc/config/freebsd3.h b/contrib/gcc/config/freebsd3.h
deleted file mode 100644
index 7b5426f..0000000
--- a/contrib/gcc/config/freebsd3.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* FreeBSD version number setting for FreeBSD 3.x systems.
- Copyright (C) 2001 Free Software Foundation, Inc.
- Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#define FBSD_MAJOR 3
diff --git a/contrib/gcc/config/freebsd4.h b/contrib/gcc/config/freebsd4.h
deleted file mode 100644
index ec2ae47..0000000
--- a/contrib/gcc/config/freebsd4.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* FreeBSD version number setting for FreeBSD 4.x systems.
- Copyright (C) 2001 Free Software Foundation, Inc.
- Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#define FBSD_MAJOR 4
diff --git a/contrib/gcc/config/freebsd5.h b/contrib/gcc/config/freebsd5.h
deleted file mode 100644
index 3c276d5..0000000
--- a/contrib/gcc/config/freebsd5.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* FreeBSD version number setting for FreeBSD 5.x systems.
- Copyright (C) 2001 Free Software Foundation, Inc.
- Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#define FBSD_MAJOR 5
diff --git a/contrib/gcc/config/freebsd6.h b/contrib/gcc/config/freebsd6.h
deleted file mode 100644
index 38bc0cd..0000000
--- a/contrib/gcc/config/freebsd6.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* FreeBSD version number setting for FreeBSD 6.x systems.
- Copyright (C) 2001 Free Software Foundation, Inc.
- Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#define FBSD_MAJOR 6
diff --git a/contrib/gcc/config/i386/freebsd-elf.h b/contrib/gcc/config/i386/freebsd-elf.h
deleted file mode 100644
index e97d4ca..0000000
--- a/contrib/gcc/config/i386/freebsd-elf.h
+++ /dev/null
@@ -1,257 +0,0 @@
-/* Definitions for Intel 386 running FreeBSD with ELF format
- Copyright (C) 1996 Free Software Foundation, Inc.
- Contributed by Eric Youngdale.
- Modified for stabs-in-ELF by H.J. Lu.
- Adapted from GNU/Linux version by John Polstra.
- Continued development by David O'Brien <obrien@freebsd.org>
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (i386 FreeBSD/ELF)");
-
-/* The svr4 ABI for the i386 says that records and unions are returned
- in memory. */
-/* On FreeBSD, we do not. */
-#undef DEFAULT_PCC_STRUCT_RETURN
-#define DEFAULT_PCC_STRUCT_RETURN 0
-
-/* This gets defined in tm.h->linux.h->svr4.h, and keeps us from using
- libraries compiled with the native cc, so undef it. */
-#undef NO_DOLLAR_IN_LABEL
-
-/* Use more efficient ``thunks'' to implement C++ vtables. */
-#undef DEFAULT_VTABLE_THUNKS
-#define DEFAULT_VTABLE_THUNKS 1
-
-/* Override the default comment-starter of "/". */
-#undef ASM_COMMENT_START
-#define ASM_COMMENT_START "#"
-
-#undef ASM_APP_ON
-#define ASM_APP_ON "#APP\n"
-
-#undef ASM_APP_OFF
-#define ASM_APP_OFF "#NO_APP\n"
-
-#undef SET_ASM_OP
-#define SET_ASM_OP ".set"
-
-/* This is how to output an element of a case-vector that is relative.
- This is only used for PIC code. See comments by the `casesi' insn in
- i386.md for an explanation of the expression this outputs. */
-#undef ASM_OUTPUT_ADDR_DIFF_ELT
-#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
- fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
-
-/* Indicate that jump tables go in the text section. This is
- necessary when compiling PIC code. */
-#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
-
-/* Use stabs instead of DWARF debug format. */
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
-
-/* Copy this from the svr4 specifications... */
-/* Define the register numbers to be used in Dwarf debugging information.
- The SVR4 reference port C compiler uses the following register numbers
- in its Dwarf output code:
- 0 for %eax (gnu regno = 0)
- 1 for %ecx (gnu regno = 2)
- 2 for %edx (gnu regno = 1)
- 3 for %ebx (gnu regno = 3)
- 4 for %esp (gnu regno = 7)
- 5 for %ebp (gnu regno = 6)
- 6 for %esi (gnu regno = 4)
- 7 for %edi (gnu regno = 5)
- The following three DWARF register numbers are never generated by
- the SVR4 C compiler or by the GNU compilers, but SDB on x86/svr4
- believes these numbers have these meanings.
- 8 for %eip (no gnu equivalent)
- 9 for %eflags (no gnu equivalent)
- 10 for %trapno (no gnu equivalent)
- It is not at all clear how we should number the FP stack registers
- for the x86 architecture. If the version of SDB on x86/svr4 were
- a bit less brain dead with respect to floating-point then we would
- have a precedent to follow with respect to DWARF register numbers
- for x86 FP registers, but the SDB on x86/svr4 is so completely
- broken with respect to FP registers that it is hardly worth thinking
- of it as something to strive for compatibility with.
- The version of x86/svr4 SDB I have at the moment does (partially)
- seem to believe that DWARF register number 11 is associated with
- the x86 register %st(0), but that's about all. Higher DWARF
- register numbers don't seem to be associated with anything in
- particular, and even for DWARF regno 11, SDB only seems to under-
- stand that it should say that a variable lives in %st(0) (when
- asked via an `=' command) if we said it was in DWARF regno 11,
- but SDB still prints garbage when asked for the value of the
- variable in question (via a `/' command).
- (Also note that the labels SDB prints for various FP stack regs
- when doing an `x' command are all wrong.)
- Note that these problems generally don't affect the native SVR4
- C compiler because it doesn't allow the use of -O with -g and
- because when it is *not* optimizing, it allocates a memory
- location for each floating-point variable, and the memory
- location is what gets described in the DWARF AT_location
- attribute for the variable in question.
- Regardless of the severe mental illness of the x86/svr4 SDB, we
- do something sensible here and we use the following DWARF
- register numbers. Note that these are all stack-top-relative
- numbers.
- 11 for %st(0) (gnu regno = 8)
- 12 for %st(1) (gnu regno = 9)
- 13 for %st(2) (gnu regno = 10)
- 14 for %st(3) (gnu regno = 11)
- 15 for %st(4) (gnu regno = 12)
- 16 for %st(5) (gnu regno = 13)
- 17 for %st(6) (gnu regno = 14)
- 18 for %st(7) (gnu regno = 15)
-*/
-#undef DBX_REGISTER_NUMBER
-#define DBX_REGISTER_NUMBER(n) \
-((n) == 0 ? 0 \
- : (n) == 1 ? 2 \
- : (n) == 2 ? 1 \
- : (n) == 3 ? 3 \
- : (n) == 4 ? 6 \
- : (n) == 5 ? 7 \
- : (n) == 6 ? 5 \
- : (n) == 7 ? 4 \
- : ((n) >= FIRST_STACK_REG && (n) <= LAST_STACK_REG) ? (n)+3 \
- : (-1))
-
-/* Tell final.c that we don't need a label passed to mcount. */
-
-#undef FUNCTION_PROFILER
-#define FUNCTION_PROFILER(FILE, LABELNO) \
-{ \
- if (flag_pic) \
- fprintf (FILE, "\tcall *.mcount@GOT(%%ebx)\n"); \
- else \
- fprintf (FILE, "\tcall .mcount\n"); \
-}
-
-#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
-
-#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
-
-#undef WCHAR_TYPE
-#define WCHAR_TYPE "int"
-
-#undef WCHAR_UNSIGNED
-#define WCHAR_UNSIGNED 0
-
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE BITS_PER_WORD
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Di386 -Dunix -D__ELF__ -D__FreeBSD__ -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)"
-
-#undef CPP_SPEC
-#define CPP_SPEC "%(cpp_cpu) %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"
-
-/* This defines which switch letters take arguments. On FreeBSD, most of
- the normal cases (defined in gcc.c) apply, and we also have -h* and
- -z* options (for the linker) (comming from svr4).
- We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */
-
-#undef SWITCH_TAKES_ARG
-#define SWITCH_TAKES_ARG(CHAR) \
- (DEFAULT_SWITCH_TAKES_ARG (CHAR) \
- || (CHAR) == 'h' \
- || (CHAR) == 'z' \
- || (CHAR) == 'R')
-
-/* Provide a STARTFILE_SPEC appropriate for FreeBSD. Here we add
- the magical crtbegin.o file (see crtstuff.c) which provides part
- of the support for getting C++ file-scope static object constructed
- before entering `main'. */
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC \
- "%{!shared: \
- %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
- %{!p:%{profile:gcrt1.o%s} \
- %{!profile:crt1.o%s}}}} \
- crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
-
-/* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on
- the magical crtend.o file (see crtstuff.c) which provides part of
- the support for getting C++ file-scope static object constructed
- before entering `main', followed by a normal "finalizer" file,
- `crtn.o'. */
-
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC \
- "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
-
-/* Provide a LIB_SPEC appropriate for FreeBSD. Just select the appropriate
- libc, depending on whether we're doing profiling or need threads support.
- (simular to the default, except no -lg, and no -p. */
-
-#undef LIB_SPEC
-#define LIB_SPEC "%{!shared: \
- %{!pg:%{!pthread:%{!kthread:-lc} \
- %{kthread:-lpthread -lc}} \
- %{pthread:-lc_r}} \
- %{pg:%{!pthread:%{!kthread:-lc_p} \
- %{kthread:-lpthread_p -lc_p}} \
- %{pthread:-lc_r_p}}}"
-
-/* Provide a LINK_SPEC appropriate for FreeBSD. Here we provide support
- for the special GCC options -static and -shared, which allow us to
- link things in one of these three modes by applying the appropriate
- combinations of options at link-time. We like to support here for
- as many of the other GNU linker options as possible. But I don't
- have the time to search for those flags. I am sure how to add
- support for -soname shared_object_name. H.J.
-
- I took out %{v:%{!V:-V}}. It is too much :-(. They can use
- -Wl,-V.
-
- When the -shared link option is used a final link is not being
- done. */
-
-#undef LINK_SPEC
-#define LINK_SPEC "-m elf_i386 \
- %{Wl,*:%*} \
- %{v:-V} \
- %{assert*} %{R*} %{rpath*} %{defsym*} \
- %{shared:-Bshareable %{h*} %{soname*}} \
- %{!shared: \
- %{!static: \
- %{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \
- %{static:-Bstatic}} \
- %{symbolic:-Bsymbolic}"
-
-/* A C statement to output to the stdio stream FILE an assembler
- command to advance the location counter to a multiple of 1<<LOG
- bytes if it is within MAX_SKIP bytes.
-
- This is used to align code labels according to Intel recommendations. */
-
-#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
-#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \
- if ((LOG) != 0) {\
- if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
- else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
- }
-#endif
diff --git a/contrib/gcc/config/i386/freebsd.h.fixed b/contrib/gcc/config/i386/freebsd.h.fixed
deleted file mode 100644
index e97d4ca..0000000
--- a/contrib/gcc/config/i386/freebsd.h.fixed
+++ /dev/null
@@ -1,257 +0,0 @@
-/* Definitions for Intel 386 running FreeBSD with ELF format
- Copyright (C) 1996 Free Software Foundation, Inc.
- Contributed by Eric Youngdale.
- Modified for stabs-in-ELF by H.J. Lu.
- Adapted from GNU/Linux version by John Polstra.
- Continued development by David O'Brien <obrien@freebsd.org>
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (i386 FreeBSD/ELF)");
-
-/* The svr4 ABI for the i386 says that records and unions are returned
- in memory. */
-/* On FreeBSD, we do not. */
-#undef DEFAULT_PCC_STRUCT_RETURN
-#define DEFAULT_PCC_STRUCT_RETURN 0
-
-/* This gets defined in tm.h->linux.h->svr4.h, and keeps us from using
- libraries compiled with the native cc, so undef it. */
-#undef NO_DOLLAR_IN_LABEL
-
-/* Use more efficient ``thunks'' to implement C++ vtables. */
-#undef DEFAULT_VTABLE_THUNKS
-#define DEFAULT_VTABLE_THUNKS 1
-
-/* Override the default comment-starter of "/". */
-#undef ASM_COMMENT_START
-#define ASM_COMMENT_START "#"
-
-#undef ASM_APP_ON
-#define ASM_APP_ON "#APP\n"
-
-#undef ASM_APP_OFF
-#define ASM_APP_OFF "#NO_APP\n"
-
-#undef SET_ASM_OP
-#define SET_ASM_OP ".set"
-
-/* This is how to output an element of a case-vector that is relative.
- This is only used for PIC code. See comments by the `casesi' insn in
- i386.md for an explanation of the expression this outputs. */
-#undef ASM_OUTPUT_ADDR_DIFF_ELT
-#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
- fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE)
-
-/* Indicate that jump tables go in the text section. This is
- necessary when compiling PIC code. */
-#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic)
-
-/* Use stabs instead of DWARF debug format. */
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
-
-/* Copy this from the svr4 specifications... */
-/* Define the register numbers to be used in Dwarf debugging information.
- The SVR4 reference port C compiler uses the following register numbers
- in its Dwarf output code:
- 0 for %eax (gnu regno = 0)
- 1 for %ecx (gnu regno = 2)
- 2 for %edx (gnu regno = 1)
- 3 for %ebx (gnu regno = 3)
- 4 for %esp (gnu regno = 7)
- 5 for %ebp (gnu regno = 6)
- 6 for %esi (gnu regno = 4)
- 7 for %edi (gnu regno = 5)
- The following three DWARF register numbers are never generated by
- the SVR4 C compiler or by the GNU compilers, but SDB on x86/svr4
- believes these numbers have these meanings.
- 8 for %eip (no gnu equivalent)
- 9 for %eflags (no gnu equivalent)
- 10 for %trapno (no gnu equivalent)
- It is not at all clear how we should number the FP stack registers
- for the x86 architecture. If the version of SDB on x86/svr4 were
- a bit less brain dead with respect to floating-point then we would
- have a precedent to follow with respect to DWARF register numbers
- for x86 FP registers, but the SDB on x86/svr4 is so completely
- broken with respect to FP registers that it is hardly worth thinking
- of it as something to strive for compatibility with.
- The version of x86/svr4 SDB I have at the moment does (partially)
- seem to believe that DWARF register number 11 is associated with
- the x86 register %st(0), but that's about all. Higher DWARF
- register numbers don't seem to be associated with anything in
- particular, and even for DWARF regno 11, SDB only seems to under-
- stand that it should say that a variable lives in %st(0) (when
- asked via an `=' command) if we said it was in DWARF regno 11,
- but SDB still prints garbage when asked for the value of the
- variable in question (via a `/' command).
- (Also note that the labels SDB prints for various FP stack regs
- when doing an `x' command are all wrong.)
- Note that these problems generally don't affect the native SVR4
- C compiler because it doesn't allow the use of -O with -g and
- because when it is *not* optimizing, it allocates a memory
- location for each floating-point variable, and the memory
- location is what gets described in the DWARF AT_location
- attribute for the variable in question.
- Regardless of the severe mental illness of the x86/svr4 SDB, we
- do something sensible here and we use the following DWARF
- register numbers. Note that these are all stack-top-relative
- numbers.
- 11 for %st(0) (gnu regno = 8)
- 12 for %st(1) (gnu regno = 9)
- 13 for %st(2) (gnu regno = 10)
- 14 for %st(3) (gnu regno = 11)
- 15 for %st(4) (gnu regno = 12)
- 16 for %st(5) (gnu regno = 13)
- 17 for %st(6) (gnu regno = 14)
- 18 for %st(7) (gnu regno = 15)
-*/
-#undef DBX_REGISTER_NUMBER
-#define DBX_REGISTER_NUMBER(n) \
-((n) == 0 ? 0 \
- : (n) == 1 ? 2 \
- : (n) == 2 ? 1 \
- : (n) == 3 ? 3 \
- : (n) == 4 ? 6 \
- : (n) == 5 ? 7 \
- : (n) == 6 ? 5 \
- : (n) == 7 ? 4 \
- : ((n) >= FIRST_STACK_REG && (n) <= LAST_STACK_REG) ? (n)+3 \
- : (-1))
-
-/* Tell final.c that we don't need a label passed to mcount. */
-
-#undef FUNCTION_PROFILER
-#define FUNCTION_PROFILER(FILE, LABELNO) \
-{ \
- if (flag_pic) \
- fprintf (FILE, "\tcall *.mcount@GOT(%%ebx)\n"); \
- else \
- fprintf (FILE, "\tcall .mcount\n"); \
-}
-
-#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
-
-#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
-
-#undef WCHAR_TYPE
-#define WCHAR_TYPE "int"
-
-#undef WCHAR_UNSIGNED
-#define WCHAR_UNSIGNED 0
-
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE BITS_PER_WORD
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Di386 -Dunix -D__ELF__ -D__FreeBSD__ -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)"
-
-#undef CPP_SPEC
-#define CPP_SPEC "%(cpp_cpu) %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"
-
-/* This defines which switch letters take arguments. On FreeBSD, most of
- the normal cases (defined in gcc.c) apply, and we also have -h* and
- -z* options (for the linker) (comming from svr4).
- We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */
-
-#undef SWITCH_TAKES_ARG
-#define SWITCH_TAKES_ARG(CHAR) \
- (DEFAULT_SWITCH_TAKES_ARG (CHAR) \
- || (CHAR) == 'h' \
- || (CHAR) == 'z' \
- || (CHAR) == 'R')
-
-/* Provide a STARTFILE_SPEC appropriate for FreeBSD. Here we add
- the magical crtbegin.o file (see crtstuff.c) which provides part
- of the support for getting C++ file-scope static object constructed
- before entering `main'. */
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC \
- "%{!shared: \
- %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
- %{!p:%{profile:gcrt1.o%s} \
- %{!profile:crt1.o%s}}}} \
- crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
-
-/* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on
- the magical crtend.o file (see crtstuff.c) which provides part of
- the support for getting C++ file-scope static object constructed
- before entering `main', followed by a normal "finalizer" file,
- `crtn.o'. */
-
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC \
- "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
-
-/* Provide a LIB_SPEC appropriate for FreeBSD. Just select the appropriate
- libc, depending on whether we're doing profiling or need threads support.
- (simular to the default, except no -lg, and no -p. */
-
-#undef LIB_SPEC
-#define LIB_SPEC "%{!shared: \
- %{!pg:%{!pthread:%{!kthread:-lc} \
- %{kthread:-lpthread -lc}} \
- %{pthread:-lc_r}} \
- %{pg:%{!pthread:%{!kthread:-lc_p} \
- %{kthread:-lpthread_p -lc_p}} \
- %{pthread:-lc_r_p}}}"
-
-/* Provide a LINK_SPEC appropriate for FreeBSD. Here we provide support
- for the special GCC options -static and -shared, which allow us to
- link things in one of these three modes by applying the appropriate
- combinations of options at link-time. We like to support here for
- as many of the other GNU linker options as possible. But I don't
- have the time to search for those flags. I am sure how to add
- support for -soname shared_object_name. H.J.
-
- I took out %{v:%{!V:-V}}. It is too much :-(. They can use
- -Wl,-V.
-
- When the -shared link option is used a final link is not being
- done. */
-
-#undef LINK_SPEC
-#define LINK_SPEC "-m elf_i386 \
- %{Wl,*:%*} \
- %{v:-V} \
- %{assert*} %{R*} %{rpath*} %{defsym*} \
- %{shared:-Bshareable %{h*} %{soname*}} \
- %{!shared: \
- %{!static: \
- %{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \
- %{static:-Bstatic}} \
- %{symbolic:-Bsymbolic}"
-
-/* A C statement to output to the stdio stream FILE an assembler
- command to advance the location counter to a multiple of 1<<LOG
- bytes if it is within MAX_SKIP bytes.
-
- This is used to align code labels according to Intel recommendations. */
-
-#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
-#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \
- if ((LOG) != 0) {\
- if ((MAX_SKIP) == 0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
- else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \
- }
-#endif
diff --git a/contrib/gcc/config/i386/vxi386.h b/contrib/gcc/config/i386/vxi386.h
deleted file mode 100644
index ee4a740..0000000
--- a/contrib/gcc/config/i386/vxi386.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Definitions of target machine for GNU compiler. VxWorks i386 version.
- Copyright (C) 1998, 2002 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (80386, VxWorks BSD syntax)");
-
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define ("__vxworks"); \
- builtin_assert ("system=unix"); \
- \
- if (TARGET_386) \
- builtin_define ("CPU=I80386"); \
- else if (TARGET_486) \
- builtin_define ("CPU=I80486"); \
- else if (TARGET_PENTIUM) \
- { \
- builtin_define ("CPU=PENTIUM"); \
- builtin_define ("CPU_VARIANT=PENTIUM"); \
- } \
- else if (TARGET_PENTIUMPRO) \
- { \
- builtin_define ("CPU=PENTIUM"); \
- builtin_define ("CPU_VARIANT=PENTIUMPRO"); \
- } \
- } \
- while (0)
-
-#define HANDLE_SYSV_PRAGMA 1
-
-/* VxWorks does all the library stuff itself. */
-
-#undef LIB_SPEC
-#define LIB_SPEC ""
-
-/* VxWorks uses object files, not loadable images. make linker just
- combine objects. */
-
-#undef LINK_SPEC
-#define LINK_SPEC "-r"
-
-/* VxWorks provides the functionality of crt0.o and friends itself. */
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC ""
-
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC ""
diff --git a/contrib/gcc/config/i386/win32.h b/contrib/gcc/config/i386/win32.h
deleted file mode 100644
index 93f58c9..0000000
--- a/contrib/gcc/config/i386/win32.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/* Operating system specific defines to be used when targeting GCC for
- hosting on Windows NT 3.x, using a Unix style C library and tools,
- as distinct from winnt.h, which is used to build GCC for use with a
- windows style library and tool set and uses the Microsoft tools.
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002
- Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop). */
-#define HANDLE_PRAGMA_PACK_PUSH_POP 1
-
-#define DBX_DEBUGGING_INFO 1
-#define SDB_DEBUGGING_INFO 1
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
-
-#include "i386/unix.h"
-#include "i386/bsd.h"
-#include "i386/gas.h"
-#include "dbxcoff.h"
-
-/* Augment TARGET_SWITCHES with the cygwin/win32 options. */
-#define MASK_WIN32 0x40000000 /* Use -lming32 interface */
-#define MASK_CYGWIN 0x20000000 /* Use -lcygwin interface */
-#define MASK_WINDOWS 0x10000000 /* Use windows interface */
-#define MASK_DLL 0x08000000 /* Use dll interface */
-#define MASK_NOP_FUN_DLLIMPORT 0x20000 /* Ignore dllimport for functions */
-
-#define TARGET_WIN32 (target_flags & MASK_WIN32)
-#define TARGET_CYGWIN (target_flags & MASK_CYGWIN)
-#define TARGET_WINDOWS (target_flags & MASK_WINDOWS)
-#define TARGET_DLL (target_flags & MASK_DLL)
-#define TARGET_NOP_FUN_DLLIMPORT (target_flags & MASK_NOP_FUN_DLLIMPORT)
-
-#undef SUBTARGET_SWITCHES
-#define SUBTARGET_SWITCHES \
- { "win32", MASK_WIN32, \
- N_("Use Mingw32 interface") }, \
- { "cygwin", MASK_CYGWIN, \
- N_("Use Cygwin interface") }, \
- { "windows", MASK_WINDOWS, \
- N_("Use bare Windows interface") }, \
- { "dll", MASK_DLL, \
- N_("Generate code for a DLL") }, \
- { "nop-fun-dllimport", MASK_NOP_FUN_DLLIMPORT, \
- N_("Ignore dllimport for functions") }, \
- { "no-nop-fun-dllimport", MASK_NOP_FUN_DLLIMPORT, "" },
-
-
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define ("_WIN32"); \
- builtin_define_std ("WINNT"); \
- builtin_define ("_X86_"); \
- builtin_define ("__stdcall=__attribute__((__stdcall__))"); \
- builtin_define ("__cdecl=__attribute__((__cdecl__))"); \
- builtin_assert ("system=winnt"); \
- if (TARGET_CYGWIN) \
- { \
- builtin_define ("__CYGWIN32__"); \
- builtin_define ("__CYGWIN__"); \
- } \
- else \
- builtin_define ("__MINGW32__"); \
- } \
- while (0)
-
-#undef STARTFILE_SPEC
-
-#define STARTFILE_SPEC "%{mdll:dllcrt0%O%s} %{!mdll: %{!mcygwin:mcrt0%O%s} \
- %{mcygwin:crt0%O%s} %{pg:gcrt0%O%s}}"
-
-#undef CPP_SPEC
-#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} \
- %{!mcygwin:-iwithprefixbefore include/mingw32}"
-
-/* We have to dynamic link to get to the system DLLs. All of libc, libm and
- the Unix stuff is in cygwin.dll. The import library is called
- 'libcygwin.a'. For Windows applications, include more libraries, but
- always include kernel32. We'd like to specific subsystem windows to
- ld, but that doesn't work just yet. */
-
-#undef LIB_SPEC
-#define LIB_SPEC "%{pg:-lgmon} \
- %{!mcygwin:-lmingw32 -lmoldname -lmsvcrt -lcrtdll} \
- %{mcygwin:-lcygwin} %{mwindows:-luser32 -lgdi32 -lcomdlg32} \
- -lkernel32 -ladvapi32 -lshell32"
-
-#define LINK_SPEC "%{mwindows:--subsystem windows} \
- %{mdll:--dll -e _DllMainCRTStartup@12}"
-
-#define SIZE_TYPE "unsigned int"
-#define PTRDIFF_TYPE "int"
-#define WCHAR_TYPE_SIZE 16
-#define WCHAR_TYPE "short unsigned int"
-/* Currently we do not have the atexit() function,
- so take that from libgcc2.c */
-
-#define NEED_ATEXIT 1
-
-#undef TARGET_ENCODE_SECTION_INFO
-#define TARGET_ENCODE_SECTION_INFO i386_pe_encode_section_info
-#undef TARGET_STRIP_NAME_ENCODING
-#define TARGET_STRIP_NAME_ENCODING i386_pe_strip_name_encoding_full
-
-/* Emit code to check the stack when allocating more that 4000
- bytes in one go. */
-
-#define CHECK_STACK_LIMIT 4000
-
-/* By default, target has a 80387, uses IEEE compatible arithmetic,
- and returns float values in the 387 and needs stack probes */
-#undef TARGET_SUBTARGET_DEFAULT
-
-#define TARGET_SUBTARGET_DEFAULT \
- (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_STACK_PROBE)
-
-/* This is how to output an assembler line
- that says to advance the location counter
- to a multiple of 2**LOG bytes. */
-
-#undef ASM_OUTPUT_ALIGN
-#define ASM_OUTPUT_ALIGN(FILE,LOG) \
- if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", 1<<(LOG))
-
-/* Define this macro if in some cases global symbols from one translation
- unit may not be bound to undefined symbols in another translation unit
- without user intervention. For instance, under Microsoft Windows
- symbols must be explicitly imported from shared libraries (DLLs). */
-#define MULTIPLE_SYMBOL_SPACES
-
-extern void i386_pe_unique_section PARAMS ((tree, int));
-#define TARGET_ASM_UNIQUE_SECTION i386_pe_unique_section
-
-#define SUPPORTS_ONE_ONLY 1
-
-/* Switch into a generic section. */
-#define TARGET_ASM_NAMED_SECTION i386_pe_asm_named_section
-
-/* Select attributes for named sections. */
-#define TARGET_SECTION_TYPE_FLAGS i386_pe_section_type_flags
-
-#undef ASM_COMMENT_START
-#define ASM_COMMENT_START " #"
-
-/* Don't assume anything about the header files. */
-#define NO_IMPLICIT_EXTERN_C
-
-#define SUBTARGET_PROLOGUE \
- if (current_function_profile \
- && MAIN_NAME_P (DECL_NAME (current_function_decl)) \
- { \
- rtx xops[1]; \
- xops[0] = gen_rtx_MEM (FUNCTION_MODE, \
- gen_rtx (SYMBOL_REF, Pmode, "_monstartup")); \
- emit_call_insn (gen_rtx (CALL, VOIDmode, xops[0], const0_rtx)); \
- }
diff --git a/contrib/gcc/config/i386/x-freebsd b/contrib/gcc/config/i386/x-freebsd
deleted file mode 100644
index a9b13ba..0000000
--- a/contrib/gcc/config/i386/x-freebsd
+++ /dev/null
@@ -1,3 +0,0 @@
-# Don't run fixproto
-STMP_FIXPROTO =
-CLIB=-lgnumalloc
diff --git a/contrib/gcc/config/i386/xm-i386-interix.h b/contrib/gcc/config/i386/xm-i386-interix.h
deleted file mode 100644
index bd010e4..0000000
--- a/contrib/gcc/config/i386/xm-i386-interix.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Configuration for GNU compiler
- for an Intel i386 or later processor running Interix.
- Copyright (C) 1999 Free Software Foundation, Inc.
- Contributed by Donn Terry (donn@interix.com)
- Derived from code by Douglas B. Rupp (drupp@cs.washington.edu)
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#define HOST_BITS_PER_WIDEST_INT HOST_BITS_PER_LONGLONG
-#ifdef __GNUC__
-# define HOST_WIDEST_INT long long
-#else
-# define HOST_WIDEST_INT __int64
-#endif
-#define HOST_WIDEST_INT_PRINT_DEC "%lld"
-#define HOST_WIDEST_INT_PRINT_UNSIGNED "%llu"
-#define HOST_WIDEST_INT_PRINT_HEX "0x%llx"
diff --git a/contrib/gcc/config/i386/xm-vsta.h b/contrib/gcc/config/i386/xm-vsta.h
deleted file mode 100644
index 53943ea..0000000
--- a/contrib/gcc/config/i386/xm-vsta.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Use semicolons to separate elements of a path. */
-#define PATH_SEPARATOR ';'
-
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define_std ("unix"); \
- } \
- while (0)
-
-#define CPP_SPEC "%{posix:-D_POSIX_SOURCE}"
diff --git a/contrib/gcc/config/ia64/aix.h b/contrib/gcc/config/ia64/aix.h
deleted file mode 100644
index 5eb2334..0000000
--- a/contrib/gcc/config/ia64/aix.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/* Definitions of target machine GNU compiler. IA-64/AIX version.
- Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
- Contributed by Timothy Wall (twall@cygnus.com)
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* AIX5 (aka Monterey): a mix of AIX and UnixWare.
- This file is loosely based on ia64/linux.h. */
-
-/* This macro is a C statement to print on `stderr' a string describing the
- particular machine description choice. */
-
-#define TARGET_VERSION fprintf (stderr, " (IA-64) AIX");
-
-#undef ASM_APP_ON
-#define ASM_APP_ON "#APP\n"
-
-#undef ASM_APP_OFF
-#define ASM_APP_OFF "#NO_APP\n"
-
-#define SET_ASM_OP "\t.set\t"
-
-#undef MD_EXEC_PREFIX
-#undef MD_STARTFILE_PREFIX
-#define MD_STARTFILE_PREFIX "/usr/lib/ia64l64/"
-
-/* Output at beginning of assembler file. */
-/* The .file command should always begin the output. */
-#undef ASM_FILE_START
-#define ASM_FILE_START(FILE) \
- do { \
- output_file_directive (FILE, main_input_filename); \
- fprintf (FILE, "\t.version\t\"01.01\"\n"); \
- } while (0)
-
-/* Provide a STARTFILE_SPEC appropriate for AIX. Here we add
- the crti C++ startup files file which provide part of the support
- for getting C++ file-scope static object constructed before entering
- `main'. */
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC \
-"%{!shared: \
- %{pg:gcrt1_64.o%s} %{!pg:%{p:mcrt1_64.o%s} \
- %{!p:%{profile:gcrt1_64.o%s} \
- %{!profile:crt1_64.o%s}}}} \
- crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
-
-/* Provide a ENDFILE_SPEC appropriate for AIX. Here we tack on
- the crtn file which provides termination of the support for getting C++
- file-scope static object constructed before entering `main'. */
-
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
-
-/* Define this so we can compile MS code for use with WINE. */
-#define HANDLE_PRAGMA_PACK_PUSH_POP
-
-/* Target OS builtins. */
-#define TARGET_OS_CPP_BUILTINS() \
-do { \
- if (flag_iso) \
- builtin_define("_ANSI_C_SOURCE"); \
- builtin_define("_AIX"); \
- builtin_define("_AIX64"); \
- builtin_define("unix"); \
- builtin_assert("system=unix"); \
- builtin_assert("system=aix"); \
- builtin_define("__64BIT__"); \
- builtin_define("_LONG_LONG"); \
- builtin_define("_IA64"); \
- builtin_define("__int128=__size128_t"); \
- if (c_language == clk_cplusplus) \
- { \
- builtin_define("_XOPEN_SOURCE=500"); \
- builtin_define("_XOPEN_SOURCE_EXTENDED=1"); \
- builtin_define("_LARGE_FILE_API"); \
- builtin_define("_ALL_SOURCE"); \
- } \
-} while (0)
-
-/* A C string constant that tells the GNU CC driver program options to pass to
- CPP. It can also specify how to translate options you give to GNU CC into
- options for GNU CC to pass to the CPP. */
-
-#undef CPP_SPEC
-#define CPP_SPEC "\
-%{posix:-D_POSIX_SOURCE}"
-
-/* Define this for shared library support. */
-
-#undef LINK_SPEC
-#define LINK_SPEC "\
-%{shared:-shared} \
-%{!shared: \
- %{!static: \
- %{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /usr/lib/ia64l64/libc.so.1}} \
- %{static:-static}}"
-
-#define JMP_BUF_SIZE 85
-
-/* A C statement or compound statement to output to FILE some assembler code to
- call the profiling subroutine `mcount'.
-
- FIXME this is not supported until xlC supports it and can thus tell us
- how to do it.
-*/
-
-#undef FUNCTION_PROFILER
-#define FUNCTION_PROFILER(FILE, LABELNO) \
-do { \
-} while (0)
-
-/* Tell the linker where to find the crt*.o files. */
-
-#ifndef CROSS_COMPILE
-#undef STANDARD_STARTFILE_PREFIX
-#define STANDARD_STARTFILE_PREFIX "/usr/lib/ia64l64/"
-#endif
-
-/* It is illegal to have relocations in shared segments on AIX.
- Pretend flag_pic is always set. */
-#undef TARGET_ASM_SELECT_SECTION
-#define TARGET_ASM_SELECT_SECTION ia64_rwreloc_select_section
-#undef TARGET_ASM_UNIQUE_SECTION
-#define TARGET_ASM_UNIQUE_SECTION ia64_rwreloc_unique_section
-#undef TARGET_ASM_SELECT_RTX_SECTION
-#define TARGET_ASM_SELECT_RTX_SECTION ia64_rwreloc_select_rtx_section
-
-/* Override ia64/sysv4.h setting with that used by AIX5. */
-#undef WCHAR_TYPE
-#ifdef __64BIT__
-#define WCHAR_TYPE "unsigned int"
-#else
-#define WCHAR_TYPE "unsigned short"
-#endif
-
-/* Define the `__builtin_va_list' type for AIX. Use char* b/c that's what the
- system headers expect. */
-#define BUILD_VA_LIST_TYPE(VALIST) \
- (VALIST) = build_pointer_type(char_type_node)
-
-/* End of aix.h */
diff --git a/contrib/gcc/config/ia64/hpux_longdouble.h b/contrib/gcc/config/ia64/hpux_longdouble.h
deleted file mode 100644
index 5333033..0000000
--- a/contrib/gcc/config/ia64/hpux_longdouble.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/* Definitions of long double support for GNU compiler.
- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* We are using IEEE quad precision, not a double-extended with padding. */
-#undef INTEL_EXTENDED_IEEE_FORMAT
-#define INTEL_EXTENDED_IEEE_FORMAT 0
-
-/* Define library calls for quad FP operations. These are all part of the
- IA32 and IA64 ABIs. */
-
-#define ADDTF3_LIBCALL "_U_Qfadd"
-#define SUBTF3_LIBCALL "_U_Qfsub"
-#define MULTF3_LIBCALL "_U_Qfmpy"
-#define DIVTF3_LIBCALL "_U_Qfdiv"
-#define NEGTF2_LIBCALL "_U_Qfneg"
-#define ABSTF2_LIBCALL "_U_Qfabs"
-#define SMINTF3_LIBCALL "_U_Qfmin"
-#define SMAXTF3_LIBCALL "_U_Qfmax"
-#define EXTENDSFTF2_LIBCALL "_U_Qfcnvff_sgl_to_quad"
-#define EXTENDDFTF2_LIBCALL "_U_Qfcnvff_dbl_to_quad"
-#define TRUNCTFSF2_LIBCALL "_U_Qfcnvff_quad_to_sgl"
-#define TRUNCTFDF2_LIBCALL "_U_Qfcnvff_quad_to_dbl"
-#define FLOATSITF2_LIBCALL "_U_Qfcnvxf_sgl_to_quad"
-#define FLOATDITF2_LIBCALL "_U_Qfcnvxf_dbl_to_quad"
-#define FIX_TRUNCTFSI2_LIBCALL "_U_Qfcnvfxt_quad_to_sgl"
-#define FIX_TRUNCTFDI2_LIBCALL "_U_Qfcnvfxt_quad_to_dbl"
-#define FIXUNS_TRUNCTFSI2_LIBCALL "_U_Qfcnvfxut_quad_to_sgl"
-#define FIXUNS_TRUNCTFDI2_LIBCALL "_U_Qfcnvfxut_quad_to_dbl"
-#define EQTF2_LIBCALL "_U_Qfeq"
-#define NETF2_LIBCALL "_U_Qfne"
-#define GTTF2_LIBCALL "_U_Qfgt"
-#define GETF2_LIBCALL "_U_Qfge"
-#define LTTF2_LIBCALL "_U_Qflt"
-#define LETF2_LIBCALL "_U_Qfle"
-
-
-#undef INIT_TARGET_OPTABS
-#define INIT_TARGET_OPTABS \
- do { \
- add_optab->handlers[(int) TFmode].libfunc \
- = gen_rtx_SYMBOL_REF (Pmode, ADDTF3_LIBCALL); \
- sub_optab->handlers[(int) TFmode].libfunc \
- = gen_rtx_SYMBOL_REF (Pmode, SUBTF3_LIBCALL); \
- smul_optab->handlers[(int) TFmode].libfunc \
- = gen_rtx_SYMBOL_REF (Pmode, MULTF3_LIBCALL); \
- sdiv_optab->handlers[(int) TFmode].libfunc \
- = gen_rtx_SYMBOL_REF (Pmode, DIVTF3_LIBCALL); \
- smin_optab->handlers[(int) TFmode].libfunc \
- = gen_rtx_SYMBOL_REF (Pmode, SMINTF3_LIBCALL); \
- smax_optab->handlers[(int) TFmode].libfunc \
- = gen_rtx_SYMBOL_REF (Pmode, SMAXTF3_LIBCALL); \
- abs_optab->handlers[(int) TFmode].libfunc \
- = gen_rtx_SYMBOL_REF (Pmode, ABSTF2_LIBCALL); \
- neg_optab->handlers[(int) TFmode].libfunc \
- = gen_rtx_SYMBOL_REF (Pmode, NEGTF2_LIBCALL); \
- extendsftf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EXTENDSFTF2_LIBCALL); \
- extenddftf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EXTENDDFTF2_LIBCALL); \
- trunctfsf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, TRUNCTFSF2_LIBCALL); \
- trunctfdf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, TRUNCTFDF2_LIBCALL); \
- floatsitf_libfunc = gen_rtx_SYMBOL_REF (Pmode, FLOATSITF2_LIBCALL); \
- floatditf_libfunc = gen_rtx_SYMBOL_REF (Pmode, FLOATDITF2_LIBCALL); \
- fixtfsi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFSI2_LIBCALL);\
- fixtfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIX_TRUNCTFDI2_LIBCALL);\
- fixunstfsi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFSI2_LIBCALL); \
- fixunstfdi_libfunc = gen_rtx_SYMBOL_REF (Pmode, FIXUNS_TRUNCTFDI2_LIBCALL); \
- eqtf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, EQTF2_LIBCALL); \
- netf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, NETF2_LIBCALL); \
- gttf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, GTTF2_LIBCALL); \
- getf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, GETF2_LIBCALL); \
- lttf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, LTTF2_LIBCALL); \
- letf2_libfunc = gen_rtx_SYMBOL_REF (Pmode, LETF2_LIBCALL); \
- \
- INIT_SUBTARGET_OPTABS; \
- } while (0)
-
-/* This is meant to be redefined in the host dependent files */
-#define INIT_SUBTARGET_OPTABS
-
-/* Nonzero if a floating point comparison library call for
- mode MODE that will return a boolean value. Zero if one
- of the libgcc2 functions is used. */
-#define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) ((MODE) == TFmode)
diff --git a/contrib/gcc/config/ia64/t-aix b/contrib/gcc/config/ia64/t-aix
deleted file mode 100644
index 7b6df46..0000000
--- a/contrib/gcc/config/ia64/t-aix
+++ /dev/null
@@ -1,15 +0,0 @@
-# AIX support
-
-# Compile crtbeginS.o and crtendS.o with pic.
-CRTSTUFF_T_CFLAGS_S = -fPIC
-# Compile libgcc2.a with pic and defines required by AIX headers
-TARGET_LIBGCC2_CFLAGS = -fPIC -D__64BIT__ -D_LONG_LONG -D_IA64 -D__int128=__size128_t
-LIB2ADDEH += $(srcdir)/config/ia64/unwind-aix.c
-
-# Assemble startup files.
-crti.o: $(srcdir)/config/ia64/crti.asm $(GCC_PASSES)
- $(GCC_FOR_TARGET) -c -o crti.o -x assembler $(srcdir)/config/ia64/crti.asm
-crtn.o: $(srcdir)/config/ia64/crtn.asm $(GCC_PASSES)
- $(GCC_FOR_TARGET) -c -o crtn.o -x assembler $(srcdir)/config/ia64/crtn.asm
-
-# end t-aix
diff --git a/contrib/gcc/config/ia64/unwind-aix.c b/contrib/gcc/config/ia64/unwind-aix.c
deleted file mode 100644
index 7e59406..0000000
--- a/contrib/gcc/config/ia64/unwind-aix.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Implements unwind table entry lookup for AIX (cf. fde-glibc.c).
- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
- Contributed by Timothy Wall <twall@redhat.com>
-
- This file is part of GNU CC.
-
- GNU CC 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, or (at your option)
- any later version.
-
- GNU CC 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 CC; see the file COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include "tconfig.h"
-#include "tsystem.h"
-#include "unwind.h"
-#include "unwind-ia64.h"
-
-#include <dlfcn.h>
-#include <link.h>
-#include <sys/mman.h>
-
-static struct unw_table_entry *
-find_fde_for_dso (Elf64_Addr pc, rt_link_map *map,
- unsigned long* pseg_base, unsigned long* pgp)
-{
- rt_segment *seg;
- Elf64_Addr seg_base;
- struct unw_table_entry *f_base;
- size_t lo, hi;
-
- /* See if PC falls into one of the loaded segments. */
- for (seg = map->l_segments; seg; seg = (rt_segment *)seg->s_next)
- {
- if (pc >= seg->s_map_addr && pc < seg->s_map_addr + seg->s_mapsz)
- break;
- }
- if (!seg)
- return NULL;
-
- /* Search for the entry within the unwind table. */
- f_base = (struct unw_table_entry *) (map->l_unwind_table);
- seg_base = (Elf64_Addr) seg->s_map_addr;
- lo = 0;
- hi = map->l_unwind_sz / sizeof (struct unw_table_entry);
-
- while (lo < hi)
- {
- size_t mid = (lo + hi) / 2;
- struct unw_table_entry *f = f_base + mid;
-
- if (pc < f->start_offset + seg_base)
- hi = mid;
- else if (pc >= f->end_offset + seg_base)
- lo = mid + 1;
- else {
- /* AIX executables are *always* dynamic. Look up GP for this
- object. */
- Elf64_Dyn *dyn = map->l_ld;
- *pgp = 0;
- for (; dyn->d_tag != DT_NULL ; dyn++)
- {
- if (dyn->d_tag == DT_PLTGOT)
- {
- *pgp = dyn->d_un.d_ptr;
- break;
- }
- }
- *pseg_base = seg_base;
- return f;
- }
- }
- return NULL;
-}
-
-/* Return a pointer to the unwind table entry for the function containing
- PC. */
-struct unw_table_entry *
-_Unwind_FindTableEntry (void *pc, unsigned long *pseg_base, unsigned long *pgp)
-{
- extern rt_r_debug _r_debug;
- struct unw_table_entry *ret;
- rt_link_map *map = _r_debug.r_map; /* address of link map */
-
- /* Check the main application first, hoping that most of the user's
- code is there instead of in some library. */
- ret = find_fde_for_dso ((Elf64_Addr)pc, map, pseg_base, pgp);
- if (ret)
- {
- /* If we're in the main application, use the current GP value. */
- register unsigned long gp __asm__("gp");
- *pgp = gp;
- return ret;
- }
-
- /* FIXME need a DSO lock mechanism for AIX here, to ensure shared
- libraries aren't changed while we're examining them. */
-
- for (map = _r_debug.r_map; map; map = map->l_next)
- {
- /* Skip the main application's entry. */
- if (!map->l_name)
- continue;
- ret = find_fde_for_dso ((Elf64_Addr)pc, map, pseg_base, pgp);
- if (ret)
- break;
- }
-
- /* FIXME need a DSO unlock mechanism for AIX here. */
-
- return ret;
-}
diff --git a/contrib/gcc/config/psos.h b/contrib/gcc/config/psos.h
deleted file mode 100644
index 72825d4..0000000
--- a/contrib/gcc/config/psos.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Operating system specific defines to be used when targeting GCC for some
- embedded system running pSOS. We assume GNU tools with ELF, but
- try to maintain compatibility with the MRI tools. Based on svr4.h.
- Copyright (C) 1996, 1999, 2000 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.
-
- To use this file, make up a file with a name like:
-
- ?????-psos.h
-
- where ????? is replaced by the name of the basic hardware that you
- are targeting for. Then, in the file ?????-psos.h, put something
- like:
-
- #include "?????.h"
- #include "psos.h"
-
- followed by any really system-specific defines (or overrides of
- defines) which you find that you need.
-*/
-
-
-/* Define a symbol indicating that we are using psos.h. */
-
-#define USING_PSOS_H
-
-
-/* All pSOS targets currently use the ELF object file format. */
-
-#define OBJECT_FORMAT_ELF
-
-
-/* Provide a NULL STARTFILE_SPEC. The startfile cannot be specified
- here because it depends on the architecture (e.g. 68K), the
- board-support package (e.g. M162) and the run-time configuration
- (e.g. application vs. ram-image vs. rom-image). Specify the
- startfile in a linker-script created from the generic
- architecture-specific linker-scripts. */
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC ""
-
-
-/* Predefined macros (independent of processor type). */
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Dpsos"
-
-
-/* Implicit library calls should use ANSI memcpy rather than BSD
- bcopy, etc. */
-
-#define TARGET_MEM_FUNCTIONS
-
-/* This is how we tell the assembler that a symbol is weak. */
-
-#define ASM_WEAKEN_LABEL(FILE,NAME) \
- do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
- fputc ('\n', FILE); } while (0)
-
-/* Switch into a generic section. */
-#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
-
-/* Use DBX debugging info by default. */
-
-#ifndef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
-#endif
-
-/* For pSOS we use DBX debugging info. */
-
-#define DBX_DEBUGGING_INFO 1
diff --git a/contrib/gcc/config/rs6000/aix31.h b/contrib/gcc/config/rs6000/aix31.h
deleted file mode 100644
index 7379a34..0000000
--- a/contrib/gcc/config/rs6000/aix31.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Definitions of target machine for GNU compiler,
- for IBM RS/6000 running AIX version 3.1.
- Copyright (C) 1993,1997, 2000, 2001 Free Software Foundation, Inc.
- Contributed by Richard Kenner (kenner@nyu.edu)
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-
-/* Output something to declare an external symbol to the assembler. Most
- assemblers don't need this.
-
- If we haven't already, add "[RW]" (or "[DS]" for a function) to the
- name. Normally we write this out along with the name. In the few cases
- where we can't, it gets stripped off. */
-
-#undef ASM_OUTPUT_EXTERNAL
-#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \
-{ rtx _symref = XEXP (DECL_RTL (DECL), 0); \
- if ((TREE_CODE (DECL) == VAR_DECL \
- || TREE_CODE (DECL) == FUNCTION_DECL) \
- && (NAME)[strlen (NAME) - 1] != ']') \
- { \
- XSTR (_symref, 0) = concat (XSTR (_symref, 0), \
- (TREE_CODE (DECL) == FUNCTION_DECL \
- ? "[DS]" : "[RW]"), \
- NULL); \
- } \
- fputs ("\t.extern ", FILE); \
- assemble_name (FILE, XSTR (_symref, 0)); \
- if (TREE_CODE (DECL) == FUNCTION_DECL) \
- { \
- fputs ("\n\t.extern .", FILE); \
- RS6000_OUTPUT_BASENAME (FILE, XSTR (_symref, 0)); \
- } \
- putc ('\n', FILE); \
-}
-
-/* Similar, but for libcall. We only have to worry about the function name,
- not that of the descriptor. */
-
-#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \
-{ fputs ("\t.extern .", FILE); \
- assemble_name (FILE, XSTR (FUN, 0)); \
- putc ('\n', FILE); \
-}
-
-/* AIX 3.2 defined _AIX32, but older versions do not. */
-#undef TARGET_OS_CPP_BUILTINS
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define ("_IBMR2"); \
- builtin_define ("_AIX"); \
- builtin_assert ("system=unix"); \
- builtin_assert ("system=aix"); \
- builtin_assert ("cpu=rs6000"); \
- builtin_assert ("machine=rs6000"); \
- } \
- while (0)
-
-/* AIX 3.1 uses bit 15 in CROR as the magic nop. */
-#undef RS6000_CALL_GLUE
-#define RS6000_CALL_GLUE "cror 15,15,15"
-
-/* AIX 3.1 does not prepend underscores to itrunc, uitrunc, or mcount. */
-#undef RS6000_ITRUNC
-#define RS6000_ITRUNC "itrunc"
-#undef RS6000_UITRUNC
-#define RS6000_UITRUNC "uitrunc"
-#undef RS6000_MCOUNT
-#define RS6000_MCOUNT ".mcount"
-
diff --git a/contrib/gcc/config/rs6000/aix3newas.h b/contrib/gcc/config/rs6000/aix3newas.h
deleted file mode 100644
index bc6dc9b..0000000
--- a/contrib/gcc/config/rs6000/aix3newas.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Definitions of target machine for GNU compiler,
- for IBM RS/6000 POWER running AIX version 3.x with the fixed assembler.
- Copyright (C) 1995, 1996, 2000, 2001 Free Software Foundation, Inc.
- Contributed by Jason Merrill (jason@cygnus.com).
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-
-/* Tell the assembler to assume that all undefined names are external. */
-
-#undef ASM_SPEC
-#define ASM_SPEC "-u %(asm_cpu)"
-
-#undef ASM_DEFAULT_SPEC
-#define ASM_DEFAULT_SPEC "-mpwr"
-
-/* Define the options for the binder: Start text at 512, align all segments
- to 512 bytes, and warn if there is text relocation.
-
- The -bhalt:4 option supposedly changes the level at which ld will abort,
- but it also suppresses warnings about multiply defined symbols and is
- used by the AIX cc command. So we use it here.
-
- -bnodelcsect undoes a poor choice of default relating to multiply-defined
- csects. See AIX documentation for more information about this.
-
- -bM:SRE tells the linker that the output file is Shared REusable. Note
- that to actually build a shared library you will also need to specify an
- export list with the -Wl,-bE option.
-
- If -mcpu=common, export the architecture dependent multiply/divide routines
- as per README.RS6000. */
-
-#undef LINK_SPEC
-#ifndef CROSS_COMPILE
-#define LINK_SPEC "-T512 -H512 %{!r:-btextro} -bhalt:4 -bnodelcsect\
- %{static:-bnso -bI:/lib/syscalls.exp} \
- %{mcpu=common: milli.exp%s} \
- %{!shared:%{g*:-bexport:/usr/lib/libg.exp}} %{shared:-bM:SRE}"
-#else
-#define LINK_SPEC "-T512 -H512 %{!r:-btextro} -bhalt:4 -bnodelcsect\
- %{static:-bnso} \
- %{mcpu=common: milli.exp%s} \
- %{shared:-bM:SRE}"
-#endif
diff --git a/contrib/gcc/config/rs6000/eabiaix.h b/contrib/gcc/config/rs6000/eabiaix.h
deleted file mode 100644
index 4e18067..0000000
--- a/contrib/gcc/config/rs6000/eabiaix.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Embedded ELF system support, using old AIX based calling sequence.
- Copyright (C) 1995, 1996, 2000 Free Software Foundation, Inc.
- Contributed by Cygnus Support.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* Default ABI to use */
-#undef RS6000_ABI_NAME
-#define RS6000_ABI_NAME "aix"
-
-/* Define this macro as a C expression for the initializer of an
- array of string to tell the driver program which options are
- defaults for this target and thus do not need to be handled
- specially when using `MULTILIB_OPTIONS'.
-
- Do not define this macro if `MULTILIB_OPTIONS' is not defined in
- the target makefile fragment or if none of the options listed in
- `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */
-
-#undef MULTILIB_DEFAULTS
-#define MULTILIB_DEFAULTS { "mbig", "mcall-aix" }
diff --git a/contrib/gcc/config/rs6000/mach.h b/contrib/gcc/config/rs6000/mach.h
deleted file mode 100644
index a246f91..0000000
--- a/contrib/gcc/config/rs6000/mach.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Definitions of target machine for GNU compiler,
- for IBM RS/6000 running MACH.
- Copyright (C) 1992, 1999 Free Software Foundation, Inc.
- Contributed by Richard Kenner (kenner@nyu.edu)
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#define TARGET_AIX 0
-
-/* Print subsidiary information on the compiler version in use. */
-#define TARGET_VERSION fprintf (stderr, " (Mach-RS/6000)");
-
-/* We don't define AIX under MACH; instead we define `unix'. */
-#undef TARGET_OS_CPP_BUILTINS
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define_std ("rios"); \
- builtin_define ("_IBMR2"); \
- builtin_define_std ("unix"); \
- builtin_assert ("system=unix"); \
- builtin_assert ("system=mach"); \
- builtin_assert ("cpu=rs6000"); \
- builtin_assert ("machine=rs6000"); \
- } \
- while (0)
-
-/* Define different binder options for MACH. */
-#undef LINK_SPEC
-#define LINK_SPEC \
- "-T0x10000000 -D0x20000000 -K %{!nostdlib:%{!r*:%{!e*:-e __start}}} \
- -bnoso -berrmsg -btextro -bhalt:4 -bnodelcsect"
-
-/* MACH doesn't have atexit. */
-#define NEED_ATEXIT
-
-/* Don't default to pcc-struct-return, because gcc is the only compiler, and
- we want to retain compatibility with older gcc versions. */
-#define DEFAULT_PCC_STRUCT_RETURN 0
diff --git a/contrib/gcc/config/rs6000/t-rs6000-c-rule b/contrib/gcc/config/rs6000/t-rs6000-c-rule
deleted file mode 100644
index a768fb5..0000000
--- a/contrib/gcc/config/rs6000/t-rs6000-c-rule
+++ /dev/null
@@ -1,4 +0,0 @@
-rs6000-c.o: $(srcdir)/config/rs6000/rs6000-c.c \
- $(srcdir)/config/rs6000/rs6000-protos.h \
- $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(CPPLIB_H) $(TM_P_H) c-pragma.h errors.h
- $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
diff --git a/contrib/gcc/config/rs6000/vxppc.h b/contrib/gcc/config/rs6000/vxppc.h
deleted file mode 100644
index 91250a6..0000000
--- a/contrib/gcc/config/rs6000/vxppc.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Definitions of target machine for GNU compiler. Vxworks PowerPC version.
- Copyright (C) 1996, 2000 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* This file just exists to give specs for the PowerPC running on VxWorks. */
-
-/* Reset defaults */
-#undef CPP_OS_DEFAULT_SPEC
-#define CPP_OS_DEFAULT_SPEC "%(cpp_os_vxworks)"
-
-#undef LIB_DEFAULT_SPEC
-#define LIB_DEFAULT_SPEC "%(lib_vxworks)"
-
-#undef STARTFILE_DEFAULT_SPEC
-#define STARTFILE_DEFAULT_SPEC "%(startfile_vxworks)"
-
-#undef ENDFILE_DEFAULT_SPEC
-#define ENDFILE_DEFAULT_SPEC "%(endfile_vxworks)"
-
-#undef LINK_START_DEFAULT_SPEC
-#define LINK_START_DEFAULT_SPEC "%(link_start_vxworks)"
-
-#undef LINK_OS_DEFAULT_SPEC
-#define LINK_OS_DEFAULT_SPEC "%(link_os_vxworks)"
-
-#undef TARGET_OS_CPP_BUILTINS
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define ("__vxworks"); \
- builtin_define ("__vxworks__"); \
- builtin_assert ("system=vxworks"); \
- builtin_assert ("system=embedded"); \
- builtin_assert ("cpu=powerpc"); \
- builtin_assert ("machine=powerpc"); \
- } \
- while (0)
-
-/* We use stabs-in-elf for debugging */
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
diff --git a/contrib/gcc/config/sparc/bsd.h b/contrib/gcc/config/sparc/bsd.h
deleted file mode 100644
index 41f8308..0000000
--- a/contrib/gcc/config/sparc/bsd.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#undef LIB_SPEC
-#define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}"
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC "%{pg:gcrt0.o%s}%{!pg:%{p:gcrt0.o%s}%{!p:crt0.o%s}}"
diff --git a/contrib/gcc/config/sparc/hal.h b/contrib/gcc/config/sparc/hal.h
deleted file mode 100644
index 0222b81..0000000
--- a/contrib/gcc/config/sparc/hal.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Definitions of target machine for GNU compiler, for HAL
- SPARC running Solaris 2 HALOS
- Copyright 1998 Free Software Foundation, Inc.
- Contributed by Carol LePage (carolo@hal.com)
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* Need different command line for assembler */
-
-#undef ASM_SPEC
-#define ASM_SPEC \
- "%{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Wa,*:%*} -e1 \
- %{fpic:-K PIC} %{fPIC:-K PIC}"
-
-/* Need DWARF for debuggers. */
-
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG
diff --git a/contrib/gcc/config/sparc/linux-aout.h b/contrib/gcc/config/sparc/linux-aout.h
deleted file mode 100644
index 70b2c79..0000000
--- a/contrib/gcc/config/sparc/linux-aout.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Definitions for SPARC running Linux-based GNU systems with a.out.
- Copyright (C) 1996, 1997, 1999, 2002 Free Software Foundation, Inc.
- Contributed by Eddie C. Dost (ecd@skynet.be)
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* Don't assume anything about the header files. */
-#define NO_IMPLICIT_EXTERN_C
-
-/* GNU/Linux uses ctype from glibc.a. I am not sure how complete it is.
- For now, we play safe. It may change later. */
-
-#if 0
-#undef MULTIBYTE_CHARS
-#define MULTIBYTE_CHARS 1
-#endif
-
-/* We need that too. */
-#define HANDLE_SYSV_PRAGMA 1
-
-#undef MD_EXEC_PREFIX
-#undef MD_STARTFILE_PREFIX
-
-/* Output at beginning of assembler file. */
-/* The .file command should always begin the output. */
-#undef ASM_FILE_START
-#define ASM_FILE_START(FILE) output_file_directive (FILE, main_input_filename)
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC "%{pg:gcrt0.o%s} %{!pg:%{p:gcrt0.o%s} %{!p:crt0.o%s}} %{static:-static}"
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (sparc GNU/Linux with a.out)");
-
-#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
-
-#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
-
-#undef WCHAR_TYPE
-#define WCHAR_TYPE "int"
-
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE 32
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Dunix -Dsparc -D__gnu_linux__ -Dlinux -Asystem=unix -Asystem=posix"
-
-#undef CPP_SUBTARGET_SPEC
-#define CPP_SUBTARGET_SPEC \
-"%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"
-
-/* Don't default to pcc-struct-return, because gcc is the only compiler,
- and we want to retain compatibility with older gcc versions. */
-#undef DEFAULT_PCC_STRUCT_RETURN
-#define DEFAULT_PCC_STRUCT_RETURN 0
-
-#undef LIB_SPEC
-
-#if 1
-/* We no longer link with libc_p.a or libg.a by default. If you
- want to profile or debug the GNU/Linux C library, please add
- -lc_p or -ggdb to LDFLAGS at the link time, respectively. */
-#define LIB_SPEC \
-"%{mieee-fp:-lieee} %{p:-lgmon} %{pg:-lgmon} %{!ggdb:-lc} %{ggdb:-lg}"
-#else
-#define LIB_SPEC \
-"%{mieee-fp:-lieee} %{p:-lgmon -lc_p} %{pg:-lgmon -lc_p} \
- %{!p:%{!pg:%{!g*:-lc} %{g*:-lg -static}}}"
-#endif
-
-#undef LINK_SPEC
-#define LINK_SPEC "-m sparclinux"
-
-/* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
- It's safe to pass -s always, even if -g is not used. */
-#undef ASM_SPEC
-#define ASM_SPEC \
- "%{V} %{v:%{!V:-V}} %{n} %{T} %{Ym,*} %{Wa,*:%*} -s %{fpic:-K PIC} %{fPIC:-K PIC}"
-
diff --git a/contrib/gcc/config/sparc/lynx-ng.h b/contrib/gcc/config/sparc/lynx-ng.h
deleted file mode 100644
index b1a6ef5..0000000
--- a/contrib/gcc/config/sparc/lynx-ng.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Definitions for SPARC running LynxOS, using Lynx's old as and ld.
- Copyright (C) 1993, 1995 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* ??? Must redefine to get sparclite and v8 defines. Can this be done
- differently? */
-
-#undef CPP_SPEC
-#define CPP_SPEC "%{mthreads:-D_MULTITHREADED} \
- %{mposix:-D_POSIX_SOURCE} \
- %{msystem-v:-I/usr/include_v} \
- %(cpp_cpu)"
-
-/* Names to predefine in the preprocessor for this target machine. */
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Dunix -Dsparc -DLynx -DIBITS32 -Asystem=unix -Asystem=lynx -Acpu=sparc -Amachine=sparc"
-
-/* Provide required defaults for linker switches. */
-
-#undef LINK_SPEC
-#define LINK_SPEC "-e __main -T 0 %{msystem-v:-V} %{mcoff:-k}"
diff --git a/contrib/gcc/config/sparc/lynx.h b/contrib/gcc/config/sparc/lynx.h
deleted file mode 100644
index 805f65f..0000000
--- a/contrib/gcc/config/sparc/lynx.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Definitions for SPARC running LynxOS.
- Copyright (C) 1993, 1995, 1996, 2000 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#undef ASM_OUTPUT_IDENT
-
-#define BSS_SECTION_ASM_OP "\t.section\t\".bss\""
-
-/* ??? Must redefine to get sparclite and v8 defines. Can this be done
- differently? */
-
-#undef CPP_SPEC
-#define CPP_SPEC "%{mthreads:-D_MULTITHREADED} \
- %{mposix:-D_POSIX_SOURCE} \
- %{msystem-v:-I/usr/include_v} \
- %(cpp_cpu)"
-
-/* Names to predefine in the preprocessor for this target machine. */
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Dunix -Dsparc -DSPARC -DLynx -DLYNX -DIBITS32 -Asystem=unix -Asystem=lynx -Acpu=sparc -Amachine=sparc"
-
-#undef LINK_SPEC
-
-/* SPARC version of libc.a has references to libm.a (printf calls pow for
- instance), so we must always link both. */
-
-#undef LIB_SPEC
-#define LIB_SPEC "%{mthreads:-L/lib/thread/} \
- %{msystem-v:-lc_v -lm_v -lc_v} \
- %{!msystem-v:%{mposix:-lc_p} -lc -lm -lc}"
diff --git a/contrib/gcc/config/sparc/netbsd.h b/contrib/gcc/config/sparc/netbsd.h
deleted file mode 100644
index 284e288..0000000
--- a/contrib/gcc/config/sparc/netbsd.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- NETBSD_OS_CPP_BUILTINS_AOUT(); \
- builtin_define_std ("sparc"); \
- builtin_assert ("cpu=sparc"); \
- builtin_assert ("machine=sparc"); \
- } \
- while (0)
-
-/* Make sure this is undefined. */
-#undef CPP_PREDEFINES
-
-/* What extra spec entries do we need? */
-#undef SUBTARGET_EXTRA_SPECS
-#define SUBTARGET_EXTRA_SPECS \
- { "netbsd_cpp_spec", NETBSD_CPP_SPEC },
-
-#undef CPP_SPEC
-#define CPP_SPEC "%(cpp_cpu) %(netbsd_cpp_spec)"
-
-/* Make gcc agree with <machine/ansi.h> */
-
-#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
-
-#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
-
-/* This is BSD, so it wants DBX format. */
-
-#define DBX_DEBUGGING_INFO 1
-
-/* This is the char to use for continuation (in case we need to turn
- continuation back on). */
-
-#define DBX_CONTIN_CHAR '?'
-
-/* Don't default to pcc-struct-return, because gcc is the only compiler, and
- we want to retain compatibility with older gcc versions. */
-#undef DEFAULT_PCC_STRUCT_RETURN
-#define DEFAULT_PCC_STRUCT_RETURN 0
-
-/* Until they use ELF or something that handles dwarf2 unwinds
- and initialization stuff better. */
-#define DWARF2_UNWIND_INFO 0
-
-/* Attempt to enable execute permissions on the stack. */
-#define TRANSFER_FROM_TRAMPOLINE NETBSD_ENABLE_EXECUTE_STACK
diff --git a/contrib/gcc/config/sparc/sp86x-aout.h b/contrib/gcc/config/sparc/sp86x-aout.h
deleted file mode 100644
index 74607d3..0000000
--- a/contrib/gcc/config/sparc/sp86x-aout.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Definitions of target machine for GNU compiler, for sparclite 86x w/o FPU.
- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-D__sparc__ -D__sparclite86x__ -Acpu=sparc -Amachine=sparc"
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (sparclite 86x)");
-
-/* Enable app-regs and epilogue options. Do not enable the fpu. */
-
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT MASK_APP_REGS
-
-#undef ASM_SPEC
-#define ASM_SPEC "%{v:-v} %{mlittle-endian-data:--little-endian-data} %(asm_cpu)"
-
-/* US Software GOFAST library support. */
-#undef INIT_SUBTARGET_OPTABS
-#define INIT_SUBTARGET_OPTABS INIT_GOFAST_OPTABS
-
-#undef LINK_SPEC
-#define LINK_SPEC "%{v:-V}"
-
-#undef BYTES_BIG_ENDIAN
-#define BYTES_BIG_ENDIAN (! TARGET_LITTLE_ENDIAN_DATA)
-#undef WORDS_BIG_ENDIAN
-#define WORDS_BIG_ENDIAN (! TARGET_LITTLE_ENDIAN_DATA)
-
-#define TARGET_LITTLE_ENDIAN_DATA (target_flags & MASK_LITTLE_ENDIAN)
-#undef SUBTARGET_SWITCHES
-#define SUBTARGET_SWITCHES \
- { "little-endian-data", MASK_LITTLE_ENDIAN, N_("Use little-endian byte order for data")},
diff --git a/contrib/gcc/config/sparc/splet.h b/contrib/gcc/config/sparc/splet.h
deleted file mode 100644
index 0d3f054..0000000
--- a/contrib/gcc/config/sparc/splet.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Definitions of target machine for GNU compiler, for SPARClet.
- Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
- Contributed by Doug Evans (dje@cygnus.com).
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT MASK_APP_REGS
-
-#define CPP_PREDEFINES "-Dsparc -Acpu=sparc -Amachine=sparc"
-
-#undef SUBTARGET_SWITCHES
-#define SUBTARGET_SWITCHES \
-{"big-endian", -MASK_LITTLE_ENDIAN, N_("Generate code for big endian") }, \
-{"little-endian", MASK_LITTLE_ENDIAN, N_("Generate code for little endian") },
-
-#undef ASM_SPEC
-#define ASM_SPEC "%{mlittle-endian:-EL} %(asm_cpu)"
-
-/* Require the user to supply crt0.o. */
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC ""
-
-#undef LINK_SPEC
-#define LINK_SPEC "%{mlittle-endian:-EL}"
-
-/* sparclet chips are bi-endian. */
-#undef BYTES_BIG_ENDIAN
-#define BYTES_BIG_ENDIAN (! TARGET_LITTLE_ENDIAN)
-#undef WORDS_BIG_ENDIAN
-#define WORDS_BIG_ENDIAN (! TARGET_LITTLE_ENDIAN)
diff --git a/contrib/gcc/config/sparc/sun4gas.h b/contrib/gcc/config/sparc/sun4gas.h
deleted file mode 100644
index 7f4f7db..0000000
--- a/contrib/gcc/config/sparc/sun4gas.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Definitions of target machine for GNU compiler, for SunOS 4.x with gas
- Copyright (C) 1997, 2000 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* defaults.h will define DWARF2_UNWIND_INFO for us. */
-#undef DWARF2_UNWIND_INFO
diff --git a/contrib/gcc/config/sparc/sun4o3.h b/contrib/gcc/config/sparc/sun4o3.h
deleted file mode 100644
index e79a4c8..0000000
--- a/contrib/gcc/config/sparc/sun4o3.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Dsparc -Dsun -Dunix -Asystem=unix -Asystem=bsd"
-
-/* Override the name of the mcount profiling function. */
-
-#undef MCOUNT_FUNCTION
-#define MCOUNT_FUNCTION "*.mcount"
-
-/* LINK_SPEC is needed only for SunOS 4. */
-
-#undef LINK_SPEC
diff --git a/contrib/gcc/config/sparc/sunos4.h b/contrib/gcc/config/sparc/sunos4.h
deleted file mode 100644
index 513251c..0000000
--- a/contrib/gcc/config/sparc/sunos4.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Definitions of target machine for GNU compiler, for SunOS 4.x
- Copyright (C) 1994, 1999 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#undef SUNOS4_SHARED_LIBRARIES
-#define SUNOS4_SHARED_LIBRARIES 1
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Dsparc -Dsun -Dunix -Asystem=unix -Asystem=bsd"
-
-#define LIB_SPEC "%{!shared:%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} %{g:-lg}}"
-
-/* Provide required defaults for linker -e and -d switches. */
-
-#define LINK_SPEC \
- "%{!shared:%{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp} %{static:-Bstatic} \
- %{assert*} %{shared:%{!mimpure-text:-assert pure-text}}"
-
-/* Use N_BINCL stabs. */
-
-#define DBX_USE_BINCL
-
-/* The Sun as doesn't like unaligned data. */
-#define DWARF2_UNWIND_INFO 0
-
-/* SunOS has on_exit instead of atexit. */
-/* The man page says it returns int. */
-#ifdef IN_LIBGCC2
-extern int on_exit PARAMS ((void *, void *));
-#endif
-#define ON_EXIT(FUNC) on_exit ((FUNC), 0)
-#define NEED_ATEXIT
diff --git a/contrib/gcc/config/sparc/t-chorus-elf b/contrib/gcc/config/sparc/t-chorus-elf
deleted file mode 100644
index 5fc405b..0000000
--- a/contrib/gcc/config/sparc/t-chorus-elf
+++ /dev/null
@@ -1,29 +0,0 @@
-LIB1ASMSRC = sparc/lb1spc.asm
-LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3
-
-# We want fine grained libraries, so use the new code to build the
-# floating point emulation libraries.
-FPBIT = fp-bit.c
-DPBIT = dp-bit.c
-
-dp-bit.c: $(srcdir)/config/fp-bit.c
- cat $(srcdir)/config/fp-bit.c > dp-bit.c
-
-fp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#define FLOAT' > fp-bit.c
- cat $(srcdir)/config/fp-bit.c >> fp-bit.c
-
-# MULTILIB_OPTIONS should have msparclite too, but we'd have to make
-# gas build...
-MULTILIB_OPTIONS =
-MULTILIB_DIRNAMES =
-MULTILIB_MATCHES =
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
-# Assemble startup files.
-crti.o: $(srcdir)/config/sparc/sol2-ci.asm $(GCC_PASSES)
- $(GCC_FOR_TARGET) -c -o crti.o -x assembler $(srcdir)/config/sparc/sol2-ci.asm
-crtn.o: $(srcdir)/config/sparc/sol2-cn.asm $(GCC_PASSES)
- $(GCC_FOR_TARGET) -c -o crtn.o -x assembler $(srcdir)/config/sparc/sol2-cn.asm
diff --git a/contrib/gcc/config/sparc/t-halos b/contrib/gcc/config/sparc/t-halos
deleted file mode 100644
index 0bd5496..0000000
--- a/contrib/gcc/config/sparc/t-halos
+++ /dev/null
@@ -1,2 +0,0 @@
-# For a native HALOS compile, we need to set -e1 for the assembler
-AS=as -e1
diff --git a/contrib/gcc/config/sparc/t-sparcbare b/contrib/gcc/config/sparc/t-sparcbare
deleted file mode 100644
index bac38de..0000000
--- a/contrib/gcc/config/sparc/t-sparcbare
+++ /dev/null
@@ -1,25 +0,0 @@
-# configuration file for a bare sparc cpu
-
-LIB1ASMSRC = sparc/lb1spc.asm
-LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3
-
-# We want fine grained libraries, so use the new code to build the
-# floating point emulation libraries.
-FPBIT = fp-bit.c
-DPBIT = dp-bit.c
-
-dp-bit.c: $(srcdir)/config/fp-bit.c
- cat $(srcdir)/config/fp-bit.c > dp-bit.c
-
-fp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#define FLOAT' > fp-bit.c
- cat $(srcdir)/config/fp-bit.c >> fp-bit.c
-
-# MULTILIB_OPTIONS should have msparclite too, but we'd have to make
-# gas build...
-MULTILIB_OPTIONS = msoft-float mcpu=v8
-MULTILIB_DIRNAMES = soft v8
-MULTILIB_MATCHES = msoft-float=mno-fpu mcpu?v8=mv8
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/contrib/gcc/config/sparc/t-splet b/contrib/gcc/config/sparc/t-splet
deleted file mode 100644
index 3334200..0000000
--- a/contrib/gcc/config/sparc/t-splet
+++ /dev/null
@@ -1,21 +0,0 @@
-# configuration file for a bare sparclet cpu, aout format files
-
-LIB1ASMSRC = sparc/lb1spc.asm
-LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3
-
-# We want fine grained libraries, so use the new code to build the
-# floating point emulation libraries.
-FPBIT = fp-bit.c
-DPBIT = dp-bit.c
-
-dp-bit.c: $(srcdir)/config/fp-bit.c
- cat $(srcdir)/config/fp-bit.c > dp-bit.c
-
-fp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#define FLOAT' > fp-bit.c
- cat $(srcdir)/config/fp-bit.c >> fp-bit.c
-
-MULTILIB_OPTIONS = mlittle-endian mflat
-MULTILIB_DIRNAMES = little flat
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/contrib/gcc/config/sparc/t-sunos41 b/contrib/gcc/config/sparc/t-sunos41
deleted file mode 100644
index 1056d93..0000000
--- a/contrib/gcc/config/sparc/t-sunos41
+++ /dev/null
@@ -1,12 +0,0 @@
-# SunOS 4.1.*
-
-MULTILIB_OPTIONS = fpic/fPIC mcpu=v8
-MULTILIB_DIRNAMES = pic ucpic v8
-MULTILIB_MATCHES = mcpu?v8=mv8
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
-# The native linker doesn't handle linking -fpic code with -fPIC code. Ugh.
-# We cope by building both variants of libgcc.
-#TARGET_LIBGCC2_CFLAGS = -fPIC
diff --git a/contrib/gcc/config/sparc/t-vxsparc b/contrib/gcc/config/sparc/t-vxsparc
deleted file mode 100644
index 5a47341..0000000
--- a/contrib/gcc/config/sparc/t-vxsparc
+++ /dev/null
@@ -1,10 +0,0 @@
-# We don't want to put exit in libgcc.a for VxWorks, because VxWorks
-# does not have _exit.
-TARGET_LIBGCC2_CFLAGS = -Dexit=unused_exit
-
-MULTILIB_OPTIONS=msoft-float mv8
-MULTILIB_DIRNAMES=soft v8
-MULTILIB_MATCHES=msoft-float=mno-fpu
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/contrib/gcc/config/sparc/t-vxsparc64 b/contrib/gcc/config/sparc/t-vxsparc64
deleted file mode 100644
index ee779ee..0000000
--- a/contrib/gcc/config/sparc/t-vxsparc64
+++ /dev/null
@@ -1,23 +0,0 @@
-# We don't want to put exit in libgcc.a for VxWorks, because VxWorks
-# does not have _exit.
-TARGET_LIBGCC2_CFLAGS = -Dexit=unused_exit
-
-LIB2FUNCS_EXTRA = fp-bit.c dp-bit.c
-
-dp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#define US_SOFTWARE_GOFAST' > dp-bit.c
- cat $(srcdir)/config/fp-bit.c >> dp-bit.c
-
-fp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#define FLOAT' > fp-bit.c
- echo '#define US_SOFTWARE_GOFAST' >> fp-bit.c
- cat $(srcdir)/config/fp-bit.c >> fp-bit.c
-
-MULTILIB_OPTIONS=O0
-MULTILIB_DIRNAMES=O0
-MULTILIB_MATCHES=
-MULTILIB_EXCEPTIONS=
-MULTILIB_EXTRA_OPTS=m64 mcpu=ultrasparc
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/contrib/gcc/config/sparc/vxsim.h b/contrib/gcc/config/sparc/vxsim.h
deleted file mode 100644
index c9c3569..0000000
--- a/contrib/gcc/config/sparc/vxsim.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/* Definitions of target machine for GNU compiler, for SPARC VxSim
- Copyright 1996 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (sparc VxSim)");
-
-/* Supposedly the same as vanilla sparc svr4, except for the stuff below: */
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES \
- "-DCPU=SIMSPARCSOLARIS -D__vxworks -D__vxworks__ -Dsparc -D__svr4__ -D__SVR4 \
- -Asystem=embedded -Asystem=svr4 -Acpu=sparc -Amachine=sparc\
- -D__GCC_NEW_VARARGS__"
-
-#undef CPP_SPEC
-#define CPP_SPEC ""
-
-#undef CC1_SPEC
-#define CC1_SPEC "-fno-builtin %{sun4:} %{target:}"
-
-/* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
- It's safe to pass -s always, even if -g is not used. */
-#undef ASM_SPEC
-#define ASM_SPEC \
- "%{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Wa,*:%*} -s \
- %{fpic:-K PIC} %{fPIC:-K PIC}"
-
-/* However it appears that Solaris 2.0 uses the same reg numbering as
- the old BSD-style system did. */
-
-#undef DBX_REGISTER_NUMBER
-/* Same as sparc.h */
-#define DBX_REGISTER_NUMBER(REGNO) (REGNO)
-
-/* We use stabs-in-elf for debugging, because that is what the native
- toolchain uses. */
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
-
-/* The Solaris 2 assembler uses .skip, not .zero, so put this back. */
-#undef ASM_OUTPUT_SKIP
-#define ASM_OUTPUT_SKIP(FILE,SIZE) \
- fprintf (FILE, "\t.skip %u\n", (SIZE))
-
-#undef ASM_OUTPUT_ALIGNED_LOCAL
-#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \
-do { \
- fputs ("\t.local\t", (FILE)); \
- assemble_name ((FILE), (NAME)); \
- putc ('\n', (FILE)); \
- ASM_OUTPUT_ALIGNED_COMMON (FILE, NAME, SIZE, ALIGN); \
-} while (0)
-
-#undef COMMON_ASM_OP
-#define COMMON_ASM_OP "\t.common\t"
-
-#undef LOCAL_LABEL_PREFIX
-#define LOCAL_LABEL_PREFIX "."
-
-/* This is how to output a definition of an internal numbered label where
- PREFIX is the class of label and NUM is the number within the class. */
-
-#undef ASM_OUTPUT_INTERNAL_LABEL
-#define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \
- fprintf (FILE, ".L%s%d:\n", PREFIX, NUM)
-
-/* This is how to output a reference to an internal numbered label where
- PREFIX is the class of label and NUM is the number within the class. */
-
-#undef ASM_OUTPUT_INTERNAL_LABELREF
-#define ASM_OUTPUT_INTERNAL_LABELREF(FILE,PREFIX,NUM) \
- fprintf (FILE, ".L%s%d", PREFIX, NUM)
-
-/* This is how to store into the string LABEL
- the symbol_ref name of an internal numbered label where
- PREFIX is the class of label and NUM is the number within the class.
- This is suitable for output with `assemble_name'. */
-
-#undef ASM_GENERATE_INTERNAL_LABEL
-#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
- sprintf (LABEL, "*.L%s%ld", PREFIX, (long)(NUM))
-
-
-
-#undef LIB_SPEC
-#define LIB_SPEC ""
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC ""
-
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC ""
-
-#undef LINK_SPEC
-#define LINK_SPEC "-r"
-
-/* This defines which switch letters take arguments.
- It is as in svr4.h but with -R added. */
-
-#undef SWITCH_TAKES_ARG
-#define SWITCH_TAKES_ARG(CHAR) \
- ( (CHAR) == 'D' \
- || (CHAR) == 'U' \
- || (CHAR) == 'o' \
- || (CHAR) == 'e' \
- || (CHAR) == 'u' \
- || (CHAR) == 'I' \
- || (CHAR) == 'm' \
- || (CHAR) == 'L' \
- || (CHAR) == 'R' \
- || (CHAR) == 'A' \
- || (CHAR) == 'h' \
- || (CHAR) == 'z')
-
-/* ??? This does not work in SunOS 4.x, so it is not enabled in sparc.h.
- Instead, it is enabled here, because it does work under Solaris. */
-/* Define for support of TFmode long double.
- SPARC ABI says that long double is 4 words. */
-#define LONG_DOUBLE_TYPE_SIZE 64
diff --git a/contrib/gcc/config/sparc/vxsparc.h b/contrib/gcc/config/sparc/vxsparc.h
deleted file mode 100644
index da3e591..0000000
--- a/contrib/gcc/config/sparc/vxsparc.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Definitions of target machine for GNU compiler. Vxworks SPARC version.
- Copyright (C) 1994, 1996 Free Software Foundation, Inc.
- Contributed by David Henkel-Wallace (gumby@cygnus.com)
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-
-/* Specify what to link with. */
-/* VxWorks does all the library stuff itself. */
-
-#undef LIB_SPEC
-#define LIB_SPEC ""
-
-/* Provide required defaults for linker -e. */
-#undef LINK_SPEC
-#define LINK_SPEC "%{!nostdlib:%{!r*:%{!e*:-e start}}}"
-
-/* VxWorks provides the functionality of crt0.o and friends itself. */
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC ""
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Dsparc -Acpu=sparc -Amachine=sparc"
-
-/* Note that we define CPU here even if the user has specified -ansi.
- This violates user namespace, but the VxWorks headers, and potentially
- user code, all explicitly rely upon the definition of CPU in order to get
- the proper processor information. */
-#undef CPP_SPEC
-#define CPP_SPEC "%(cpp_cpu) -DCPU=SPARC"
-
-#undef PTRDIFF_TYPE
-#undef SIZE_TYPE
-#undef WCHAR_TYPE
-#undef WCHAR_TYPE_SIZE
-
-#define PTRDIFF_TYPE "long int"
-#define SIZE_TYPE "unsigned int"
-#define WCHAR_TYPE "char"
-#define WCHAR_TYPE_SIZE 8
-
-/* US Software GOFAST library support. */
-#undef INIT_SUBTARGET_OPTABS
-#define INIT_SUBTARGET_OPTABS INIT_GOFAST_OPTABS
diff --git a/contrib/gcc/config/sparc/vxsparc64.h b/contrib/gcc/config/sparc/vxsparc64.h
deleted file mode 100644
index 1da8b7f..0000000
--- a/contrib/gcc/config/sparc/vxsparc64.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Definitions of target machine for GNU compiler.
- 64-bit VxWorks SPARC version.
- Copyright (C) 2001 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-
-/* Specify what to link with. */
-/* VxWorks does all the library stuff itself. */
-#undef LIB_SPEC
-#define LIB_SPEC "-r"
-
-/* VxWorks provides the functionality of crt0.o and friends itself. */
-#undef STARTFILE_SPEC
-#undef ENDFILE_SPEC
-#define STARTFILE_SPEC ""
-#define ENDFILE_SPEC ""
-
-#undef LINK_SPEC
-#define LINK_SPEC ""
-
-/* We need to prohibit dots in constructor labels so that we can build a
- table of { string, address } entries for each non-static name in a
- program. The address, being of the form &name, it cannot contain a dot or
- C will try to parse it as a &struct.field phrase. */
-#undef NO_DOLLAR_IN_LABEL
-#undef DOLLARS_IN_IDENTIFIERS
-#define DOLLARS_IN_IDENTIFIERS 1
-#define NO_DOT_IN_LABEL
-
-/* Enable #pragma pack(n) */
-#define HANDLE_SYSV_PRAGMA 1
-
-/* We use stabs for debugging */
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
-
-/* Longs are still only 32bits for vxWorks, even for UltraSPARC */
-#undef LONG_TYPE_SIZE
-#define LONG_TYPE_SIZE 32
-
-#undef CPP_ARCH32_SPEC
-#define CPP_ARCH32_SPEC "-Acpu(sparc) -Amachine(sparc)"
-#undef CPP_ARCH64_SPEC
-#define CPP_ARCH64_SPEC \
-"-Dsparc64 -D__arch64__ -Acpu(sparc64) -Amachine(sparc64)"
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-D__vxworks -D__sparc__ -Dsparc -D__GCC_NEW_VARARGS__"
-
-/* Note that we define CPU here even if the user has specified -ansi.
- This violates user namespace, but the VxWorks headers, and potentially
- user code, all explicitly rely upon the definition of CPU in order to get
- the proper processor information. */
-#undef CPP_SPEC
-#define CPP_SPEC "%(cpp_cpu) %(cpp_arch) -DCPU=ULTRASPARC -D__CPU__=CPU"
-
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_APP_REGS | MASK_FPU \
- | MASK_LONG_DOUBLE_128 | MASK_64BIT)
-
-#undef SPARC_DEFAULT_CMODEL
-#define SPARC_DEFAULT_CMODEL CM_MEDLOW
-
-#undef PTRDIFF_TYPE
-#undef SIZE_TYPE
-#undef WCHAR_TYPE
-#undef WCHAR_TYPE_SIZE
-
-#define PTRDIFF_TYPE "long int"
-#define SIZE_TYPE "unsigned int"
-#define WCHAR_TYPE "char"
-#define WCHAR_TYPE_SIZE 8
-
-/* US Software GOFAST library support. */
-#undef INIT_SUBTARGET_OPTABS
-#define INIT_SUBTARGET_OPTABS INIT_GOFAST_OPTABS
diff --git a/contrib/gcc/config/t-interix b/contrib/gcc/config/t-interix
deleted file mode 100644
index d284b3e..0000000
--- a/contrib/gcc/config/t-interix
+++ /dev/null
@@ -1,2 +0,0 @@
-# Don't run fixproto
-STMP_FIXPROTO =
diff --git a/contrib/gcc/config/t-linux-aout b/contrib/gcc/config/t-linux-aout
deleted file mode 100644
index d284b3e..0000000
--- a/contrib/gcc/config/t-linux-aout
+++ /dev/null
@@ -1,2 +0,0 @@
-# Don't run fixproto
-STMP_FIXPROTO =
diff --git a/contrib/gcc/configure.frag b/contrib/gcc/configure.frag
deleted file mode 100644
index 2fdbca8..0000000
--- a/contrib/gcc/configure.frag
+++ /dev/null
@@ -1,77 +0,0 @@
-# configure.frag for GCC
-# Process the host/target/language Makefile fragments.
-
-# Copyright (C) 1997 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 2, 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, 59 Temple Place - Suite 330, Boston, MA
-#02111-1307, USA.
-
-# First parameter is the source directory, second is list of subdirectories,
-# third is list of host makefile fragments, fourth is list of target makefile
-# fragments.
-
-srcdir=$1
-subdirs=$2
-xmake_files=$3
-tmake_files=$4
-
-# Copy all the host makefile fragments into Make-host.
-
-rm -f Make-host
-touch Make-host
-for f in .. $xmake_files
-do
- if [ -f $f ]
- then
- cat $f >> Make-host
- fi
-done
-
-# Copy all the target makefile fragments into Make-target.
-
-rm -f Make-target
-touch Make-target
-for f in .. $tmake_files
-do
- if [ -f $f ]
- then
- cat $f >> Make-target
- fi
-done
-
-# Ensure the language build subdirectories exist.
-
-for subdir in . $subdirs
-do
- if [ $subdir != . ]
- then
- test -d $subdir || mkdir $subdir
- fi
-done
-
-# Now copy each language's Make-lang.in file to Make-lang.
-
-rm -f Make-lang
-touch Make-lang
-
-for subdir in . $subdirs
-do
- if [ $subdir != . ]
- then
- cat $srcdir/$subdir/Make-lang.in >> Make-lang
- fi
-done
diff --git a/contrib/gcc/configure.in b/contrib/gcc/configure.in
deleted file mode 100644
index 0f64d07..0000000
--- a/contrib/gcc/configure.in
+++ /dev/null
@@ -1,2969 +0,0 @@
-# configure.in for GCC
-# Process this file with autoconf to generate a configuration script.
-
-# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# 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 2, 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, 59 Temple Place - Suite 330, Boston, MA
-#02111-1307, USA.
-
-# Initialization and defaults
-AC_PREREQ(2.13)
-AC_INIT(tree.c)
-AC_CONFIG_HEADER(auto-host.h:config.in)
-
-remove=rm
-hard_link=ln
-symbolic_link='ln -s'
-copy=cp
-
-# Check for bogus environment variables.
-# Test if LIBRARY_PATH contains the notation for the current directory
-# since this would lead to problems installing/building glibc.
-# LIBRARY_PATH contains the current directory if one of the following
-# is true:
-# - one of the terminals (":" and ";") is the first or last sign
-# - two terminals occur directly after each other
-# - the path contains an element with a dot in it
-AC_MSG_CHECKING(LIBRARY_PATH variable)
-changequote(,)dnl
-case ${LIBRARY_PATH} in
- [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
- library_path_setting="contains current directory"
- ;;
- *)
- library_path_setting="ok"
- ;;
-esac
-changequote([,])dnl
-AC_MSG_RESULT($library_path_setting)
-if test "$library_path_setting" != "ok"; then
-AC_MSG_ERROR([
-*** LIBRARY_PATH shouldn't contain the current directory when
-*** building gcc. Please change the environment variable
-*** and run configure again.])
-fi
-
-# Test if GCC_EXEC_PREFIX contains the notation for the current directory
-# since this would lead to problems installing/building glibc.
-# GCC_EXEC_PREFIX contains the current directory if one of the following
-# is true:
-# - one of the terminals (":" and ";") is the first or last sign
-# - two terminals occur directly after each other
-# - the path contains an element with a dot in it
-AC_MSG_CHECKING(GCC_EXEC_PREFIX variable)
-changequote(,)dnl
-case ${GCC_EXEC_PREFIX} in
- [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
- gcc_exec_prefix_setting="contains current directory"
- ;;
- *)
- gcc_exec_prefix_setting="ok"
- ;;
-esac
-changequote([,])dnl
-AC_MSG_RESULT($gcc_exec_prefix_setting)
-if test "$gcc_exec_prefix_setting" != "ok"; then
-AC_MSG_ERROR([
-*** GCC_EXEC_PREFIX shouldn't contain the current directory when
-*** building gcc. Please change the environment variable
-*** and run configure again.])
-fi
-
-# Check for additional parameters
-
-# With GNU ld
-AC_ARG_WITH(gnu-ld,
-[ --with-gnu-ld arrange to work with GNU ld.],
-gnu_ld_flag="$with_gnu_ld",
-gnu_ld_flag=no)
-
-# With pre-defined ld
-AC_ARG_WITH(ld,
-[ --with-ld arrange to use the specified ld (full pathname)],
-DEFAULT_LINKER="$with_ld")
-if test x"${DEFAULT_LINKER+set}" = x"set"; then
- if test ! -x "$DEFAULT_LINKER"; then
- AC_MSG_WARN([cannot execute: $DEFAULT_LINKER: check --with-ld or env. var. DEFAULT_LINKER])
- elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
- gnu_ld_flag=yes
- fi
- AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
- [Define to enable the use of a default linker.])
-fi
-
-# With GNU as
-AC_ARG_WITH(gnu-as,
-[ --with-gnu-as arrange to work with GNU as],
-gas_flag="$with_gnu_as",
-gas_flag=no)
-
-AC_ARG_WITH(as,
-[ --with-as arrange to use the specified as (full pathname)],
-DEFAULT_ASSEMBLER="$with_as")
-if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
- if test ! -x "$DEFAULT_ASSEMBLER"; then
- AC_MSG_WARN([cannot execute: $DEFAULT_ASSEMBLER: check --with-as or env. var. DEFAULT_ASSEMBLER])
- elif $DEFAULT_ASSEMBLER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
- gas_flag=yes
- fi
- AC_DEFINE_UNQUOTED(DEFAULT_ASSEMBLER,"$DEFAULT_ASSEMBLER",
- [Define to enable the use of a default assembler.])
-fi
-
-# With stabs
-AC_ARG_WITH(stabs,
-[ --with-stabs arrange to use stabs instead of host debug format],
-stabs="$with_stabs",
-stabs=no)
-
-# With ELF
-AC_ARG_WITH(elf,
-[ --with-elf arrange to use ELF instead of host debug format],
-elf="$with_elf",
-elf=no)
-
-# Specify the local prefix
-local_prefix=
-AC_ARG_WITH(local-prefix,
-[ --with-local-prefix=DIR specifies directory to put local include],
-[case "${withval}" in
-yes) AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
-no) ;;
-*) local_prefix=$with_local_prefix ;;
-esac])
-
-# Default local prefix if it is empty
-if test x$local_prefix = x; then
- local_prefix=/usr/local
-fi
-
-# Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
-# passed in by the toplevel make and thus we'd get different behavior
-# depending on where we built the sources.
-gcc_gxx_include_dir=
-# Specify the g++ header file directory
-AC_ARG_WITH(gxx-include-dir,
-[ --with-gxx-include-dir=DIR
- specifies directory to put g++ header files],
-[case "${withval}" in
-yes) AC_MSG_ERROR(bad value ${withval} given for g++ include directory) ;;
-no) ;;
-*) gcc_gxx_include_dir=$with_gxx_include_dir ;;
-esac])
-
-if test x${gcc_gxx_include_dir} = x; then
- if test x${enable_version_specific_runtime_libs} = xyes; then
- gcc_gxx_include_dir='${libsubdir}/include/c++'
- else
- topsrcdir=${srcdir}/.. . ${srcdir}/../config.if
-changequote(<<, >>)dnl
- gcc_gxx_include_dir="\$(libsubdir)/\$(unlibsubdir)/..\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/[^/]*|/..|g'\`/include/"${libstdcxx_incdir}
-changequote([, ])dnl
- fi
-fi
-
-# Determine the host, build, and target systems
-AC_CANONICAL_SYSTEM
-
-# Set program_transform_name
-AC_ARG_PROGRAM
-
-# Find the native compiler
-AC_PROG_CC
-AC_PROG_CC_C_O
-# autoconf is lame and doesn't give us any substitution variable for this.
-if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
- NO_MINUS_C_MINUS_O=yes
-else
- OUTPUT_OPTION='-o $@'
-fi
-AC_SUBST(NO_MINUS_C_MINUS_O)
-AC_SUBST(OUTPUT_OPTION)
-
-# See if GNAT has been installed
-gcc_AC_PROG_GNAT
-
-AC_CACHE_CHECK(whether ${CC-cc} accepts -Wno-long-long,
-ac_cv_prog_cc_no_long_long,
-[save_CFLAGS="$CFLAGS"
-CFLAGS="-Wno-long-long"
-AC_TRY_COMPILE(,,ac_cv_prog_cc_no_long_long=yes,
- ac_cv_prog_cc_no_long_long=no)
-CFLAGS="$save_CFLAGS"])
-
-if test x$have_gnat != xno ; then
-AC_CACHE_CHECK(whether ${ADAC} accepts -Wno-long-long,
-ac_cv_prog_adac_no_long_long,
-[cat >conftest.adb <<EOF
-procedure conftest is begin null; end conftest;
-EOF
-if $ADAC -Wno-long-long -c conftest.adb 1>&5 2>&5 ; then
- ac_cv_prog_adac_no_long_long=yes
-else
- ac_cv_prog_adac_no_long_long=no
-fi
-rm -f conftest*])
-else
- ac_cv_prog_adac_no_long_long=yes
-fi
-
-strict1_warn=
-if test $ac_cv_prog_cc_no_long_long = yes && \
- test $ac_cv_prog_adac_no_long_long = yes ; then
- strict1_warn="-pedantic -Wno-long-long"
-fi
-AC_SUBST(strict1_warn)
-
-AC_PROG_CPP
-AC_C_INLINE
-gcc_AC_C_VOLATILE
-
-gcc_AC_C_LONG_DOUBLE
-gcc_AC_C_LONG_LONG
-gcc_AC_C__BOOL
-
-# sizeof(char) is 1 by definition.
-gcc_AC_COMPILE_CHECK_SIZEOF(short)
-gcc_AC_COMPILE_CHECK_SIZEOF(int)
-gcc_AC_COMPILE_CHECK_SIZEOF(long)
-if test $ac_cv_c_long_long = yes; then
- gcc_AC_COMPILE_CHECK_SIZEOF(long long)
-fi
-if test $ac_cv_c___int64 = yes; then
- gcc_AC_COMPILE_CHECK_SIZEOF(__int64)
-fi
-
-gcc_AC_C_CHARSET
-
-# If the native compiler is GCC, we can enable warnings even in stage1.
-# That's useful for people building cross-compilers, or just running a
-# quick `make'.
-warn_cflags=
-if test "x$GCC" = "xyes"; then
- warn_cflags='$(GCC_WARN_CFLAGS)'
-fi
-AC_SUBST(warn_cflags)
-
-# Determine whether or not multilibs are enabled.
-AC_ARG_ENABLE(multilib,
-[ --enable-multilib enable library support for multiple ABIs],
-[], [enable_multilib=yes])
-AC_SUBST(enable_multilib)
-
-# Enable expensive internal checks
-AC_ARG_ENABLE(checking,
-[ --enable-checking[=LIST]
- enable expensive run-time checks. With LIST,
- enable only specific categories of checks.
- Categories are: misc,tree,rtl,rtlflag,gc,gcac;
- default is misc,tree,gc,rtlflag],
-[ac_checking=
-ac_tree_checking=
-ac_rtl_checking=
-ac_rtlflag_checking=
-ac_gc_checking=
-ac_gc_always_collect=
-case "${enableval}" in
-yes) ac_checking=1 ; ac_tree_checking=1 ; ac_gc_checking=1 ;
- ac_rtlflag_checking=1 ;;
-no) ;;
-*) IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
- set fnord $enableval; shift
- IFS="$ac_save_IFS"
- for check
- do
- case $check in
- misc) ac_checking=1 ;;
- tree) ac_tree_checking=1 ;;
- rtlflag) ac_rtlflag_checking=1 ;;
- rtl) ac_rtl_checking=1 ;;
- gc) ac_gc_checking=1 ;;
- gcac) ac_gc_always_collect=1 ;;
- valgrind) ac_checking_valgrind=1 ;;
- *) AC_MSG_ERROR(unknown check category $check) ;;
- esac
- done
- ;;
-esac
-],
-[])
-nocommon_flag=""
-if test x$ac_checking != x ; then
- AC_DEFINE(ENABLE_CHECKING, 1,
-[Define if you want more run-time sanity checks. This one gets a grab
- bag of miscellaneous but relatively cheap checks.])
- nocommon_flag=-fno-common
-fi
-AC_SUBST(nocommon_flag)
-if test x$ac_tree_checking != x ; then
- AC_DEFINE(ENABLE_TREE_CHECKING, 1,
-[Define if you want all operations on trees (the basic data
- structure of the front ends) to be checked for dynamic type safety
- at runtime. This is moderately expensive.])
-fi
-if test x$ac_rtl_checking != x ; then
- AC_DEFINE(ENABLE_RTL_CHECKING, 1,
-[Define if you want all operations on RTL (the basic data structure
- of the optimizer and back end) to be checked for dynamic type safety
- at runtime. This is quite expensive.])
-fi
-if test x$ac_rtlflag_checking != x ; then
- AC_DEFINE(ENABLE_RTL_FLAG_CHECKING, 1,
-[Define if you want RTL flag accesses to be checked against the RTL
- codes that are supported for each access macro. This is relatively
- cheap.])
-fi
-if test x$ac_gc_checking != x ; then
- AC_DEFINE(ENABLE_GC_CHECKING, 1,
-[Define if you want the garbage collector to do object poisoning and
- other memory allocation checks. This is quite expensive.])
-fi
-if test x$ac_gc_always_collect != x ; then
- AC_DEFINE(ENABLE_GC_ALWAYS_COLLECT, 1,
-[Define if you want the garbage collector to operate in maximally
- paranoid mode, validating the entire heap and collecting garbage at
- every opportunity. This is extremely expensive.])
-fi
-valgrind_path_defines=
-valgrind_command=
-if test x$ac_checking_valgrind != x ; then
- # It is certainly possible that there's valgrind but no valgrind.h.
- # GCC relies on making annotations so we must have both.
- AC_CHECK_HEADER(valgrind.h, have_valgrind_h=yes, have_valgrind_h=no)
- AM_PATH_PROG_WITH_TEST(valgrind_path, valgrind,
- [$ac_dir/$ac_word --version | grep valgrind- >/dev/null 2>&1])
- if test "x$valgrind_path" = "x" || test $have_valgrind_h = no; then
- AC_MSG_ERROR([*** Can't find both valgrind and valgrind.h])
- fi
- valgrind_path_defines=-DVALGRIND_PATH='\"'$valgrind_path'\"'
- valgrind_command="$valgrind_path -q"
- AC_DEFINE(ENABLE_VALGRIND_CHECKING, 1,
-[Define if you want to run subprograms and generated programs
- through valgrind (a memory checker). This is extremely expensive.])
-fi
-AC_SUBST(valgrind_path_defines)
-AC_SUBST(valgrind_command)
-
-# Enable code coverage collection
-AC_ARG_ENABLE(coverage,
-[ --enable-coverage[=LEVEL]
- enable compiler\'s code coverage collection.
- Use to measure compiler performance and locate
- unused parts of the compiler. With LEVEL, specificy
- optimization. Values are opt, noopt,
- default is noopt],
-[case "${enableval}" in
-yes|noopt)
- coverage_flags="-fprofile-arcs -ftest-coverage -O0"
- ;;
-opt)
- coverage_flags="-fprofile-arcs -ftest-coverage -O2"
- ;;
-*)
- AC_MSG_ERROR(unknown coverage setting $enableval)
- ;;
-esac],
-[coverage_flags=""])
-AC_SUBST(coverage_flags)
-
-AC_ARG_WITH(cpp_install_dir,
-[ --with-cpp-install-dir=DIR
- install the user visible C preprocessor in DIR
- (relative to PREFIX) as well as PREFIX/bin],
-[if test x$withval = xyes; then
- AC_MSG_ERROR([option --with-cpp-install-dir requires an argument])
-elif test x$withval != xno; then
- cpp_install_dir=$withval
-fi])
-
-# Enable __cxa_atexit for C++.
-AC_ARG_ENABLE(__cxa_atexit,
-[ --enable-__cxa_atexit enable __cxa_atexit for C++],
-[], [])
-if test x$enable___cxa_atexit = xyes; then
- AC_DEFINE(DEFAULT_USE_CXA_ATEXIT, 1,
- [Define if you want to use __cxa_atexit, rather than atexit, to
- register C++ destructors for local statics and global objects.
- This is essential for fully standards-compliant handling of
- destructors, but requires __cxa_atexit in libc.])
-fi
-
-# Enable Multibyte Characters for C/C++
-AC_ARG_ENABLE(c-mbchar,
-[ --enable-c-mbchar enable multibyte characters for C and C++],
-if test x$enable_c_mbchar != xno; then
- AC_DEFINE(MULTIBYTE_CHARS, 1,
- [Define if you want the C and C++ compilers to support multibyte
- character sets for source code.])
-fi)
-
-# Enable threads
-# Pass with no value to take the default
-# Pass with a value to specify a thread package
-AC_ARG_ENABLE(threads,
-[ --enable-threads enable thread usage for target GCC
- --enable-threads=LIB use LIB thread package for target GCC],,
-enable_threads='')
-
-enable_threads_flag=$enable_threads
-# Check if a valid thread package
-case x${enable_threads_flag} in
- x | xno)
- # No threads
- target_thread_file='single'
- ;;
- xyes)
- # default
- target_thread_file=''
- ;;
- xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
- xsolaris | xwin32 | xdce | xrtems| xvxworks | xaix)
- target_thread_file=$enable_threads_flag
- ;;
- *)
- echo "$enable_threads is an unknown thread package" 1>&2
- exit 1
- ;;
-esac
-
-AC_ARG_ENABLE(objc-gc,
-[ --enable-objc-gc enable the use of Boehm's garbage collector with
- the GNU Objective-C runtime],
-if test x$enable_objc_gc = xno; then
- objc_boehm_gc=''
-else
- objc_boehm_gc=1
-fi,
-objc_boehm_gc='')
-
-AC_ARG_WITH(dwarf2,
-[ --with-dwarf2 force the default debug format to be DWARF 2],
-dwarf2="$with_dwarf2",
-dwarf2=no)
-
-AC_ARG_ENABLE(shared,
-[ --disable-shared don't provide a shared libgcc],
-[
- case $enable_shared in
- yes | no) ;;
- *)
- enable_shared=no
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
- for pkg in $enableval; do
- if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
- enable_shared=yes
- fi
- done
- IFS="$ac_save_ifs"
- ;;
- esac
-], [enable_shared=yes])
-AC_SUBST(enable_shared)
-
-# Stage specific cflags for build.
-stage1_cflags=
-case $build in
-vax-*-*)
- if test x$GCC = xyes
- then
- stage1_cflags="-Wa,-J"
- else
- stage1_cflags="-J"
- fi
- ;;
-powerpc-*-darwin*)
- # The spiffy cpp-precomp chokes on some legitimate constructs in GCC
- # sources; use -no-cpp-precomp to get to GNU cpp.
- # Apple's GCC has bugs in designated initializer handling, so disable
- # that too.
- stage1_cflags="-no-cpp-precomp -DHAVE_DESIGNATED_INITIALIZERS=0"
- ;;
-esac
-AC_SUBST(stage1_cflags)
-
-AC_PROG_MAKE_SET
-
-AC_MSG_CHECKING([whether a default assembler was specified])
-if test x"${DEFAULT_ASSEMBLER+set}" = x"set"; then
- if test x"$gas_flag" = x"no"; then
- AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER)])
- else
- AC_MSG_RESULT([yes ($DEFAULT_ASSEMBLER - GNU as)])
- fi
-else
- AC_MSG_RESULT(no)
-fi
-
-AC_MSG_CHECKING([whether a default linker was specified])
-if test x"${DEFAULT_LINKER+set}" = x"set"; then
- if test x"$gnu_ld_flag" = x"no"; then
- AC_MSG_RESULT([yes ($DEFAULT_LINKER)])
- else
- AC_MSG_RESULT([yes ($DEFAULT_LINKER - GNU ld)])
- fi
-else
- AC_MSG_RESULT(no)
-fi
-
-AC_MSG_CHECKING(for GNU C library)
-AC_CACHE_VAL(gcc_cv_glibc,
-[AC_TRY_COMPILE(
- [#include <features.h>],[
-#if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
-#error Not a GNU C library system
-#endif],
- [gcc_cv_glibc=yes],
- gcc_cv_glibc=no)])
-AC_MSG_RESULT($gcc_cv_glibc)
-if test $gcc_cv_glibc = yes; then
- AC_DEFINE(_GNU_SOURCE, 1, [Always define this when using the GNU C Library])
-fi
-
-# Find some useful tools
-AC_PROG_AWK
-gcc_AC_PROG_LN
-gcc_AC_PROG_LN_S
-AC_PROG_RANLIB
-gcc_AC_PROG_INSTALL
-
-AC_HEADER_STDC
-AC_HEADER_TIME
-gcc_AC_HEADER_STDBOOL
-gcc_AC_HEADER_STRING
-AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h \
- fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
- sys/resource.h sys/param.h sys/times.h sys/stat.h \
- direct.h malloc.h langinfo.h)
-
-# Check for thread headers.
-AC_CHECK_HEADER(thread.h, [have_thread_h=yes], [have_thread_h=])
-AC_CHECK_HEADER(pthread.h, [have_pthread_h=yes], [have_pthread_h=])
-
-# These tests can't be done till we know if we have limits.h.
-gcc_AC_C_CHAR_BIT
-gcc_AC_C_COMPILE_ENDIAN
-gcc_AC_C_FLOAT_FORMAT
-
-# See if we have the mktemp command.
-AC_CHECK_PROG(have_mktemp_command, mktemp, yes, no)
-
-# Do we have a single-tree copy of texinfo?
-if test -f $srcdir/../texinfo/Makefile.in; then
- MAKEINFO='$(objdir)/../texinfo/makeinfo/makeinfo'
- gcc_cv_prog_makeinfo_modern=yes
- AC_MSG_RESULT([Using makeinfo from the unified source tree.])
-else
- # See if makeinfo has been installed and is modern enough
- # that we can use it.
- gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
- [GNU texinfo.* \([0-9][0-9.]*\)],
- [4.[2-9]*])
-fi
-
-if test $gcc_cv_prog_makeinfo_modern = no; then
- AC_MSG_WARN([
-*** Makeinfo is missing or too old.
-*** Info documentation will not be built.])
- BUILD_INFO=
-else
- BUILD_INFO=info AC_SUBST(BUILD_INFO)
-fi
-
-# Is pod2man recent enough to regenerate manpages?
-AC_MSG_CHECKING([for recent Pod::Man])
-if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
- AC_MSG_RESULT(yes)
- GENERATED_MANPAGES=generated-manpages AC_SUBST(GENERATED_MANPAGES)
-else
- AC_MSG_RESULT(no)
- GENERATED_MANPAGES=
-fi
-
-# How about lex?
-dnl Don't use AC_PROG_LEX; we insist on flex.
-dnl LEXLIB is not useful in gcc.
-if test -f $srcdir/../flex/skel.c; then
- FLEX='$(objdir)/../flex/flex'
-else
- AC_CHECK_PROG(FLEX, flex, flex, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing flex)
-fi
-
-# Bison?
-# The -L switch is so bison can find its skeleton file.
-if test -f $srcdir/../bison/bison.simple; then
- BISON='$(objdir)/../bison/bison -L $(srcdir)/../bison/'
-else
- AC_CHECK_PROG(BISON, bison, bison, ${CONFIG_SHELL-/bin/sh} ${srcdir}/../missing bison)
-fi
-
-# These libraries may be used by collect2.
-# We may need a special search path to get them linked.
-AC_CACHE_CHECK(for collect2 libraries, gcc_cv_collect2_libs,
-[save_LIBS="$LIBS"
-for libs in '' -lld -lmld \
- '-L/usr/lib/cmplrs/cc2.11 -lmld' \
- '-L/usr/lib/cmplrs/cc3.11 -lmld'
-do
- LIBS="$libs"
- AC_TRY_LINK_FUNC(ldopen,
- [gcc_cv_collect2_libs="$libs"; break])
-done
-LIBS="$save_LIBS"
-test -z "$gcc_cv_collect2_libs" && gcc_cv_collect2_libs='none required'])
-case $gcc_cv_collect2_libs in
- "none required") ;;
- *) COLLECT2_LIBS=$gcc_cv_collect2_libs ;;
-esac
-AC_SUBST(COLLECT2_LIBS)
-
-# When building Ada code on Alpha, we need exc_resume which is usually in
-# -lexc. So test for it.
-save_LIBS="$LIBS"
-LIBS=
-AC_SEARCH_LIBS(exc_resume, exc)
-GNAT_LIBEXC="$LIBS"
-LIBS="$save_LIBS"
-AC_SUBST(GNAT_LIBEXC)
-
-# Some systems put ldexp and frexp in libm instead of libc; assume
-# they're both in the same place. jcf-dump needs them.
-save_LIBS="$LIBS"
-LIBS=
-AC_SEARCH_LIBS(ldexp, m)
-LDEXP_LIB="$LIBS"
-LIBS="$save_LIBS"
-AC_SUBST(LDEXP_LIB)
-
-# See if the stage1 system preprocessor understands the ANSI C
-# preprocessor stringification operator. (Used by symcat.h.)
-AC_C_STRINGIZE
-
-# Use <inttypes.h> only if it exists,
-# doesn't clash with <sys/types.h>, and declares intmax_t.
-AC_MSG_CHECKING(for inttypes.h)
-AC_CACHE_VAL(gcc_cv_header_inttypes_h,
-[AC_TRY_COMPILE(
- [#include <sys/types.h>
-#include <inttypes.h>],
- [intmax_t i = -1;],
- [gcc_cv_header_inttypes_h=yes],
- gcc_cv_header_inttypes_h=no)])
-AC_MSG_RESULT($gcc_cv_header_inttypes_h)
-if test $gcc_cv_header_inttypes_h = yes; then
- AC_DEFINE(HAVE_INTTYPES_H, 1,
- [Define if you have a working <inttypes.h> header file.])
-fi
-
-dnl Disabled until we have a complete test for buggy enum bitfields.
-dnl gcc_AC_C_ENUM_BF_UNSIGNED
-
-AC_CHECK_FUNCS(times clock dup2 kill getrlimit setrlimit atoll atoq \
- sysconf strsignal putc_unlocked fputc_unlocked fputs_unlocked \
- fwrite_unlocked fprintf_unlocked getrusage nl_langinfo lstat \
- scandir alphasort gettimeofday mmap)
-
-AC_CHECK_TYPE(ssize_t, int)
-
-# Try to determine the array type of the second argument of getgroups
-# for the target system (int or gid_t).
-AC_TYPE_GETGROUPS
-if test "${target}" = "${build}"; then
- TARGET_GETGROUPS_T=$ac_cv_type_getgroups
-else
- case "${target}" in
- # This condition may need some tweaking. It should include all
- # targets where the array type of the second argument of getgroups
- # is int and the type of gid_t is not equivalent to int.
- *-*-sunos* | *-*-ultrix*)
- TARGET_GETGROUPS_T=int
- ;;
- *)
- TARGET_GETGROUPS_T=gid_t
- ;;
- esac
-fi
-AC_SUBST(TARGET_GETGROUPS_T)
-
-gcc_AC_FUNC_PRINTF_PTR
-gcc_AC_FUNC_MMAP_BLACKLIST
-
-case "${host}" in
-*-*-uwin*)
- AC_MSG_ERROR([
-*** UWIN may not be used as a host platform because
-*** linking with posix.dll is not allowed by the GNU GPL])
- ;;
-*-*-*vms*)
- # Under VMS, vfork works very different than on Unix. The standard test
- # won't work, and it isn't easily adaptable. It makes more sense to
- # just force it.
- ac_cv_func_vfork_works=yes
- ;;
-esac
-AC_FUNC_VFORK
-
-AM_ICONV
-
-# We will need to find libiberty.h and ansidecl.h
-saved_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -I${srcdir} -I${srcdir}/../include"
-gcc_AC_CHECK_DECLS(getenv atol sbrk abort atof getcwd getwd \
- strsignal putc_unlocked fputs_unlocked fwrite_unlocked \
- fprintf_unlocked strstr errno vasprintf \
- malloc realloc calloc free basename getopt clock, , ,[
-#include "ansidecl.h"
-#include "system.h"])
-
-gcc_AC_CHECK_DECLS(getrlimit setrlimit getrusage, , ,[
-#include "ansidecl.h"
-#include "system.h"
-#ifdef HAVE_SYS_RESOURCE_H
-#include <sys/resource.h>
-#endif
-])
-
-AC_TRY_COMPILE([
-#include "ansidecl.h"
-#include "system.h"
-#ifdef HAVE_SYS_RESOURCE_H
-#include <sys/resource.h>
-#endif
-],[rlim_t l = 0;],,[AC_DEFINE([rlim_t],[long],
-[Define to \`long' if <sys/resource.h> doesn't define.])])
-
-gcc_AC_CHECK_DECLS(times, , ,[
-#include "ansidecl.h"
-#include "system.h"
-#ifdef HAVE_SYS_TIMES_H
-#include <sys/times.h>
-#endif
-])
-
-# More time-related stuff.
-AC_CACHE_CHECK(for struct tms, ac_cv_struct_tms, [
-AC_TRY_COMPILE([
-#include "ansidecl.h"
-#include "system.h"
-#ifdef HAVE_SYS_TIMES_H
-#include <sys/times.h>
-#endif
-], [struct tms tms;], ac_cv_struct_tms=yes, ac_cv_struct_tms=no)])
-if test $ac_cv_struct_tms = yes; then
- AC_DEFINE(HAVE_STRUCT_TMS, 1,
- [Define if <sys/times.h> defines struct tms.])
-fi
-
-# use gcc_cv_* here because this doesn't match the behavior of AC_CHECK_TYPE.
-# revisit after autoconf 2.50.
-AC_CACHE_CHECK(for clock_t, gcc_cv_type_clock_t, [
-AC_TRY_COMPILE([
-#include "ansidecl.h"
-#include "system.h"
-], [clock_t x;], gcc_cv_type_clock_t=yes, gcc_cv_type_clock_t=no)])
-if test $gcc_cv_type_clock_t = yes; then
- AC_DEFINE(HAVE_CLOCK_T, 1,
- [Define if <time.h> defines clock_t.])
-fi
-
-AC_ARG_ENABLE(initfini-array,
- [ --enable-initfini-array use .init_array/.fini_array sections],
- gcc_cv_initfinit_array=$enableval, [gcc_AC_INITFINI_ARRAY])
-
-# Restore CFLAGS from before the gcc_AC_NEED_DECLARATIONS tests.
-CFLAGS="$saved_CFLAGS"
-
-# mkdir takes a single argument on some systems.
-gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
-
-# File extensions
-manext='.1'
-objext='.o'
-AC_SUBST(manext)
-AC_SUBST(objext)
-
-# With Setjmp/Longjmp based exception handling.
-AC_ARG_ENABLE(sjlj-exceptions,
-[ --enable-sjlj-exceptions
- arrange to use setjmp/longjmp exception handling],
-[sjlj=`if test $enableval = yes; then echo 1; else echo 0; fi`
-AC_DEFINE_UNQUOTED(CONFIG_SJLJ_EXCEPTIONS, $sjlj,
- [Define 0/1 to force the choice for exception handling model.])])
-
-AC_CHECK_LIB(unwind, main, use_libunwind_default=yes, use_libunwind_default=no)
-# Use libunwind based exception handling.
-AC_ARG_ENABLE(libunwind-exceptions,
-[ --enable-libunwind-exceptions force use libunwind for exceptions],
-use_libunwind_exceptions=$enableval,
-use_libunwind_exceptions=$use_libunwind_default)
-if test x"$use_libunwind_exceptions" = xyes; then
- AC_DEFINE(USE_LIBUNWIND_EXCEPTIONS, 1,
- [Define if gcc should use -lunwind.])
-fi
-
-target_gtfiles=
-build_xm_file=
-build_xm_defines=
-build_install_headers_dir=install-headers-tar
-build_exeext=
-host_xm_file=
-host_xm_defines=
-host_xmake_file=
-host_truncate_target=
-host_exeext=
-
-# Decode the host machine, then the target machine.
-# For the host machine, we save the xm_file variable as host_xm_file;
-# then we decode the target machine and forget everything else
-# that came from the host machine.
-for machine in $build $host $target; do
- . ${srcdir}/config.gcc
-done
-
-extra_objs="${host_extra_objs} ${extra_objs}"
-
-# Default the target-machine variables that were not explicitly set.
-if test x"$tm_file" = x
-then tm_file=$cpu_type/$cpu_type.h; fi
-
-if test x"$extra_headers" = x
-then extra_headers=; fi
-
-if test x$md_file = x
-then md_file=$cpu_type/$cpu_type.md; fi
-
-if test x$out_file = x
-then out_file=$cpu_type/$cpu_type.c; fi
-
-if test x"$tmake_file" = x
-then tmake_file=$cpu_type/t-$cpu_type
-fi
-
-if test x"$dwarf2" = xyes
-then tm_file="$tm_file tm-dwarf2.h"
-fi
-
-# Say what files are being used for the output code and MD file.
-echo "Using \`$srcdir/config/$out_file' for machine-specific logic."
-echo "Using \`$srcdir/config/$md_file' as machine description file."
-
-# If any of the xm_file variables contain nonexistent files, warn
-# about them and drop them.
-
-bx=
-for x in $build_xm_file; do
- if test -f $srcdir/config/$x
- then bx="$bx $x"
- else AC_MSG_WARN($srcdir/config/$x does not exist.)
- fi
-done
-build_xm_file="$bx"
-
-hx=
-for x in $host_xm_file; do
- if test -f $srcdir/config/$x
- then hx="$hx $x"
- else AC_MSG_WARN($srcdir/config/$x does not exist.)
- fi
-done
-host_xm_file="$hx"
-
-tx=
-for x in $xm_file; do
- if test -f $srcdir/config/$x
- then tx="$tx $x"
- else AC_MSG_WARN($srcdir/config/$x does not exist.)
- fi
-done
-xm_file="$tx"
-
-count=a
-for f in $tm_file; do
- count=${count}x
-done
-if test $count = ax; then
- echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
-else
- echo "Using the following target machine macro files:"
- for f in $tm_file; do
- echo " $srcdir/config/$f"
- done
-fi
-
-count=a
-for f in $host_xm_file; do
- count=${count}x
-done
-if test $count = a; then
- :
-elif test $count = ax; then
- echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
-else
- echo "Using the following host machine macro files:"
- for f in $host_xm_file; do
- echo " $srcdir/config/$f"
- done
-fi
-
-if test "$host_xm_file" != "$build_xm_file"; then
- count=a
- for f in $build_xm_file; do
- count=${count}x
- done
- if test $count = a; then
- :
- elif test $count = ax; then
- echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
- else
- echo "Using the following build machine macro files:"
- for f in $build_xm_file; do
- echo " $srcdir/config/$f"
- done
- fi
-fi
-
-if test x$thread_file = x; then
- if test x$target_thread_file != x; then
- thread_file=$target_thread_file
- else
- thread_file='single'
- fi
-fi
-
-# Look for a file containing extra machine modes.
-if test -n "$extra_modes" && test -f $srcdir/config/$extra_modes; then
- extra_modes_file='$(srcdir)'/config/${extra_modes}
- AC_SUBST(extra_modes_file)
- AC_DEFINE_UNQUOTED(EXTRA_MODES_FILE, "$extra_modes",
- [Define to the name of a file containing a list of extra machine modes
- for this architecture.])
- AC_DEFINE(EXTRA_CC_MODES, 1,
- [Define if the target architecture needs extra machine modes to represent
- the results of comparisons.])
-fi
-
-# auto-host.h is the file containing items generated by autoconf and is
-# the first file included by config.h.
-# If host=build, it is correct to have hconfig include auto-host.h
-# as well. If host!=build, we are in error and need to do more
-# work to find out the build config parameters.
-if test x$host = x$build
-then
- build_auto=auto-host.h
- FORBUILD=..
-else
- # We create a subdir, then run autoconf in the subdir.
- # To prevent recursion we set host and build for the new
- # invocation of configure to the build for this invocation
- # of configure.
- tempdir=build.$$
- rm -rf $tempdir
- mkdir $tempdir
- cd $tempdir
- case ${srcdir} in
- /* | [A-Za-z]:[\\/]* ) realsrcdir=${srcdir};;
- *) realsrcdir=../${srcdir};;
- esac
- saved_CFLAGS="${CFLAGS}"
- CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
- ${realsrcdir}/configure \
- --target=$target_alias --host=$build_alias --build=$build_alias
- CFLAGS="${saved_CFLAGS}"
-
- # We just finished tests for the build machine, so rename
- # the file auto-build.h in the gcc directory.
- mv auto-host.h ../auto-build.h
- cd ..
- rm -rf $tempdir
- build_auto=auto-build.h
- FORBUILD=../$build_alias
-fi
-AC_SUBST(FORBUILD)
-
-tm_file="${tm_file} defaults.h"
-host_xm_file="auto-host.h ansidecl.h ${host_xm_file} ${tm_file}"
-build_xm_file="${build_auto} ansidecl.h ${build_xm_file} ${tm_file}"
-xm_file="ansidecl.h ${xm_file} ${tm_file}"
-
-# Truncate the target if necessary
-if test x$host_truncate_target != x; then
- target=`echo $target | sed -e 's/\(..............\).*/\1/'`
-fi
-
-# Get the version trigger filename from the toplevel
-if test "${with_gcc_version_trigger+set}" = set; then
- gcc_version_trigger=$with_gcc_version_trigger
-else
- gcc_version_trigger=${srcdir}/version.c
-fi
-changequote(,)dnl
-gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*"\([^"]*\)".*/\1/'`
-gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
-
-# Compile in configure arguments.
-if test -f configargs.h ; then
- # Being re-configured.
- gcc_config_arguments=`grep configuration_arguments configargs.h | sed -e 's/.*"\([^"]*\)".*/\1/'`
- gcc_config_arguments="$gcc_config_arguments : (reconfigured) $TOPLEVEL_CONFIGURE_ARGUMENTS"
-else
- gcc_config_arguments="$TOPLEVEL_CONFIGURE_ARGUMENTS"
-fi
-cat > configargs.h <<EOF
-/* Generated automatically. */
-static const char configuration_arguments[] = "$gcc_config_arguments";
-static const char thread_model[] = "$thread_file";
-EOF
-changequote([,])dnl
-
-# Internationalization
-PACKAGE=gcc
-VERSION="$gcc_version"
-AC_SUBST(PACKAGE)
-AC_SUBST(VERSION)
-
-# Enable NLS support by default
-AC_ARG_ENABLE(nls,
- [ --enable-nls use Native Language Support (default)],
- , enable_nls=yes)
-
-# if cross compiling, disable NLS support.
-# It's not worth the trouble, at least for now.
-
-if test "${build}" != "${host}" && test "x$enable_nls" = "xyes"; then
- AC_MSG_WARN(Disabling NLS support for canadian cross compiler.)
- enable_nls=no
-fi
-
-AM_GNU_GETTEXT
-
-# Windows32 Registry support for specifying GCC installation paths.
-AC_ARG_ENABLE(win32-registry,
-[ --disable-win32-registry
- disable lookup of installation paths in the
- Registry on Windows hosts
- --enable-win32-registry enable registry lookup (default)
- --enable-win32-registry=KEY
- use KEY instead of GCC version as the last portion
- of the registry key],,)
-case $host_os in
- win32 | pe | cygwin* | mingw32* | uwin*)
-AC_MSG_CHECKING(whether windows registry support is requested)
-if test "x$enable_win32_registry" != xno; then
- AC_DEFINE(ENABLE_WIN32_REGISTRY, 1,
-[Define to 1 if installation paths should be looked up in Windows32
- Registry. Ignored on non windows32 hosts.])
- AC_MSG_RESULT(yes)
- AC_SEARCH_LIBS(RegOpenKeyExA, advapi32)
-else
- AC_MSG_RESULT(no)
-fi
-
-# Check if user specified a different registry key.
-case "x${enable_win32_registry}" in
-x | xyes)
- # default.
- gcc_cv_win32_registry_key="$VERSION"
- ;;
-xno)
- # no registry lookup.
- gcc_cv_win32_registry_key=''
- ;;
-*)
- # user-specified key.
- gcc_cv_win32_registry_key="$enable_win32_registry"
- ;;
-esac
-
-if test "x$enable_win32_registry" != xno; then
- AC_MSG_CHECKING(registry key on windows hosts)
- AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$gcc_cv_win32_registry_key",
- [Define to be the last portion of registry key on windows hosts.])
- AC_MSG_RESULT($gcc_cv_win32_registry_key)
-fi
-;;
-esac
-
-# Get an absolute path to the GCC top-level source directory
-holddir=`${PWDCMD-pwd}`
-cd $srcdir
-topdir=`${PWDCMD-pwd}`
-cd $holddir
-
-# Conditionalize the makefile for this host machine.
-# Make-host contains the concatenation of all host makefile fragments
-# [there can be more than one]. This file is built by configure.frag.
-host_overrides=Make-host
-dep_host_xmake_file=
-for f in .. ${host_xmake_file}
-do
- if test -f ${srcdir}/config/$f
- then
- dep_host_xmake_file="${dep_host_xmake_file} ${srcdir}/config/$f"
- fi
-done
-
-# Conditionalize the makefile for this target machine.
-# Make-target contains the concatenation of all host makefile fragments
-# [there can be more than one]. This file is built by configure.frag.
-target_overrides=Make-target
-dep_tmake_file=
-for f in .. ${tmake_file}
-do
- if test -f ${srcdir}/config/$f
- then
- dep_tmake_file="${dep_tmake_file} ${srcdir}/config/$f"
- fi
-done
-
-# If the host doesn't support symlinks, modify CC in
-# FLAGS_TO_PASS so CC="stage1/xgcc -Bstage1/" works.
-# Otherwise, we can use "CC=$(CC)".
-rm -f symtest.tem
-if $symbolic_link $srcdir/gcc.c symtest.tem 2>/dev/null
-then
- cc_set_by_configure="\$(CC)"
- quoted_cc_set_by_configure="\$(CC)"
- stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
- quoted_stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
-else
- rm -f symtest.tem
- if cp -p $srcdir/gcc.c symtest.tem 2>/dev/null
- then
- symbolic_link="cp -p"
- else
- symbolic_link="cp"
- fi
- cc_set_by_configure="\`case '\$(CC)' in stage*) echo '\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\$(CC)';; esac\`"
- quoted_cc_set_by_configure="\\\`case '\\\$(CC)' in stage*) echo '\\\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(CC)';; esac\\\`"
- stage_prefix_set_by_configure="\`case '\$(STAGE_PREFIX)' in stage*) echo '\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\$(STAGE_PREFIX)';; esac\`"
- quoted_stage_prefix_set_by_configure="\\\`case '\\\$(STAGE_PREFIX)' in stage*) echo '\\\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\\\$(STAGE_PREFIX)';; esac\\\`"
-fi
-rm -f symtest.tem
-
-out_object_file=`basename $out_file .c`.o
-
-tm_file_list=
-for f in $tm_file; do
- case $f in
- ansidecl.h )
- tm_file_list="${tm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
- defaults.h )
- tm_file_list="${tm_file_list} \$(srcdir)/$f" ;;
- *) tm_file_list="${tm_file_list} \$(srcdir)/config/$f" ;;
- esac
-done
-
-tm_p_file_list=
-for f in $tm_p_file; do
- tm_p_file_list="${tm_p_file_list} \$(srcdir)/config/$f"
-done
-
-host_xm_file_list=
-for f in $host_xm_file; do
- case $f in
- ansidecl.h )
- host_xm_file_list="${host_xm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
- auto-host.h )
- host_xm_file_list="${host_xm_file_list} $f" ;;
- defaults.h )
- host_xm_file_list="${host_xm_file_list} \$(srcdir)/$f" ;;
- *) host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f" ;;
- esac
-done
-
-build_xm_file_list=
-for f in $build_xm_file; do
- case $f in
- ansidecl.h )
- build_xm_file_list="${build_xm_file_list} \$(srcdir)/../include/ansidecl.h" ;;
- auto-build.h | auto-host.h )
- build_xm_file_list="${build_xm_file_list} $f" ;;
- defaults.h )
- host_xm_file_list="${host_xm_file_list} \$(srcdir)/$f" ;;
- *) build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f" ;;
- esac
-done
-
-# Define macro CROSS_COMPILE in compilation if this is a cross-compiler.
-# Also use all.cross instead of all.internal and adjust SYSTEM_HEADER_DIR.
-CROSS= AC_SUBST(CROSS)
-ALL=all.internal AC_SUBST(ALL)
-SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADER_DIR)' AC_SUBST(SYSTEM_HEADER_DIR)
-if test x$host != x$target
-then
- CROSS="-DCROSS_COMPILE"
- ALL=all.cross
- SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)'
- case "$host","$target" in
- i?86-*-*,x86_64-*-* \
- | powerpc*-*-*,powerpc64*-*-*)
- CROSS="$CROSS -DNATIVE_CROSS" ;;
- esac
-fi
-
-# If this is a cross-compiler that does not
-# have its own set of headers then define
-# inhibit_libc
-
-# If this is using newlib, then define inhibit_libc in LIBGCC2_CFLAGS.
-# This prevents libgcc2 from containing any code which requires libc
-# support.
-inhibit_libc=
-if [test x$host != x$target] && [test x$with_headers = x]; then
- inhibit_libc=-Dinhibit_libc
-else
- if [test x$with_newlib = xyes]; then
- inhibit_libc=-Dinhibit_libc
- fi
-fi
-AC_SUBST(inhibit_libc)
-
-# When building gcc with a cross-compiler, we need to adjust things so
-# that the generator programs are still built with the native compiler.
-# Also, we cannot run fixincludes or fix-header.
-# Note that the terminology here is wrong; it should be BUILD_* throughout.
-# FIXME.
-
-# These are the normal (build=host) settings:
-BUILD_PREFIX= AC_SUBST(BUILD_PREFIX)
-BUILD_PREFIX_1=ignore- AC_SUBST(BUILD_PREFIX_1)
-HOST_CC='$(CC)' AC_SUBST(HOST_CC)
-HOST_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(HOST_CFLAGS)
-
-STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
-STMP_FIXPROTO=stmp-fixproto AC_SUBST(STMP_FIXPROTO)
-
-# And these apply if build != host.
-if test x$build != x$host
-then
- BUILD_PREFIX=build-
- BUILD_PREFIX_1=build-
- HOST_CC='$(CC_FOR_BUILD)'
- HOST_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD) $(XCFLAGS)'
-
- STMP_FIXINC=
- STMP_FIXPROTO=
-fi
-
-# Expand extra_headers to include complete path.
-# This substitutes for lots of t-* files.
-extra_headers_list=
-if test "x$extra_headers" = x
-then true
-else
- # Prepend ${srcdir}/config/${cpu_type}/ to every entry in extra_headers.
- for file in $extra_headers;
- do
- extra_headers_list="${extra_headers_list} \$(srcdir)/config/${cpu_type}/${file}"
- done
-fi
-
-if test x$use_collect2 = xno; then
- use_collect2=
-fi
-
-# Add a definition of USE_COLLECT2 if system wants one.
-if test x$use_collect2 != x
-then
- host_xm_defines="${host_xm_defines} USE_COLLECT2"
- xm_defines="${xm_defines} USE_COLLECT2"
-fi
-
-# If we have gas in the build tree, make a link to it.
-if test -f ../gas/Makefile; then
- rm -f as; $symbolic_link ../gas/as-new$host_exeext as$host_exeext 2>/dev/null
-fi
-
-# If we have nm and objdump in the build tree, make a link to them.
-if test -f ../binutils/Makefile; then
- rm -f nm; $symbolic_link ../binutils/nm-new$host_exeext nm$host_exeext 2>/dev/null
- rm -f objdump; $symbolic_link ../binutils/objdump$host_exeext objdump$host_exeext 2>/dev/null
-fi
-
-# If we have ld in the build tree, make a link to it.
-if test -f ../ld/Makefile; then
- rm -f collect-ld; $symbolic_link ../ld/ld-new$host_exeext collect-ld$host_exeext 2>/dev/null
-fi
-
-# Figure out what assembler we will be using.
-AC_MSG_CHECKING(what assembler to use)
-gcc_cv_as=
-gcc_cv_gas_major_version=
-gcc_cv_gas_minor_version=
-gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas
-gcc_cv_as_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
-if test -x "$DEFAULT_ASSEMBLER"; then
- gcc_cv_as="$DEFAULT_ASSEMBLER"
-elif test -x "$AS"; then
- gcc_cv_as="$AS"
-elif test -x as$host_exeext; then
- # Build using assembler in the current directory.
- gcc_cv_as=./as$host_exeext
-elif test -f $gcc_cv_as_gas_srcdir/configure.in -a -f ../gas/Makefile; then
- # Single tree build which includes gas.
- for f in $gcc_cv_as_bfd_srcdir/configure $gcc_cv_as_gas_srcdir/configure $gcc_cv_as_gas_srcdir/configure.in $gcc_cv_as_gas_srcdir/Makefile.in
- do
-changequote(,)dnl
- gcc_cv_gas_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f`
-changequote([,])dnl
- if test x$gcc_cv_gas_version != x; then
- break
- fi
- done
-changequote(,)dnl
- gcc_cv_gas_major_version=`expr "$gcc_cv_gas_version" : "VERSION=\([0-9]*\)"`
- gcc_cv_gas_minor_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
- gcc_cv_gas_patch_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.[0-9]*\.\([0-9]*\)"`
-changequote([,])dnl
-fi
-
-if test "x$gcc_cv_as" = x; then
- # Search the same directories that the installed compiler will
- # search. Else we may find the wrong assembler and lose. If we
- # do not find a suitable assembler binary, then try the user's
- # path.
- #
- # Also note we have to check MD_EXEC_PREFIX before checking the
- # user's path. Unfortunately, there is no good way to get at the
- # value of MD_EXEC_PREFIX here. So we do a brute force search
- # through all the known MD_EXEC_PREFIX values. Ugh. This needs
- # to be fixed as part of the make/configure rewrite too.
-
- if test "x$exec_prefix" = xNONE; then
- if test "x$prefix" = xNONE; then
- test_prefix=/usr/local
- else
- test_prefix=$prefix
- fi
- else
- test_prefix=$exec_prefix
- fi
-
- # If the loop below does not find an assembler, then use whatever
- # one we can find in the users's path.
- # user's path.
- if test "x$program_prefix" != xNONE; then
- gcc_cv_as=${program_prefix}as$host_exeext
- else
- gcc_cv_as=`echo as | sed ${program_transform_name}`$host_exeext
- fi
-
- test_dirs="$test_prefix/lib/gcc-lib/$target_alias/$gcc_version \
- $test_prefix/lib/gcc-lib/$target_alias \
- /usr/lib/gcc/$target_alias/$gcc_version \
- /usr/lib/gcc/$target_alias \
- $test_prefix/$target_alias/bin/$target_alias/$gcc_version \
- $test_prefix/$target_alias/bin"
-
- if test x$host = x$target; then
- test_dirs="$test_dirs \
- /usr/libexec \
- /usr/ccs/gcc \
- /usr/ccs/bin \
- /udk/usr/ccs/bin \
- /bsd43/usr/lib/cmplrs/cc \
- /usr/cross64/usr/bin \
- /usr/lib/cmplrs/cc \
- /sysv/usr/lib/cmplrs/cc \
- /svr4/usr/lib/cmplrs/cc \
- /usr/bin"
- fi
-
- for dir in $test_dirs; do
- if test -x $dir/as$host_exeext; then
- gcc_cv_as=$dir/as$host_exeext
- break;
- fi
- done
-fi
-if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
- AC_MSG_RESULT("newly built gas")
-else
- AC_MSG_RESULT($gcc_cv_as)
-fi
-
-# Figure out what linker we will be using.
-AC_MSG_CHECKING(what linker to use)
-gcc_cv_ld=
-gcc_cv_gld_major_version=
-gcc_cv_gld_minor_version=
-gcc_cv_ld_gld_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/ld
-gcc_cv_ld_bfd_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/bfd
-if test -x "$DEFAULT_LINKER"; then
- gcc_cv_ld="$DEFAULT_LINKER"
-elif test -x "$LD"; then
- gcc_cv_ld="$LD"
-elif test -x ld$host_exeext; then
- # Build using linker in the current directory.
- gcc_cv_ld=./ld$host_exeext
-elif test -f $gcc_cv_ld_gld_srcdir/configure.in -a -f ../ld/Makefile; then
- # Single tree build which includes ld.
- for f in $gcc_cv_ld_bfd_srcdir/configure $gcc_cv_ld_gld_srcdir/configure $gcc_cv_ld_gld_srcdir/configure.in $gcc_cv_ld_gld_srcdir/Makefile.in
- do
-changequote(,)dnl
- gcc_cv_gld_version=`grep '^VERSION=[0-9]*\.[0-9]*' $f`
-changequote([,])dnl
- if test x$gcc_cv_gld_version != x; then
- break
- fi
- done
-changequote(,)dnl
- gcc_cv_gld_major_version=`expr "$gcc_cv_gld_version" : "VERSION=\([0-9]*\)"`
- gcc_cv_gld_minor_version=`expr "$gcc_cv_gld_version" : "VERSION=[0-9]*\.\([0-9]*\)"`
-changequote([,])dnl
-fi
-
-if test "x$gcc_cv_ld" = x; then
- # Search the same directories that the installed compiler will
- # search. Else we may find the wrong linker and lose. If we
- # do not find a suitable linker binary, then try the user's
- # path.
- #
- # Also note we have to check MD_EXEC_PREFIX before checking the
- # user's path. Unfortunately, there is no good way to get at the
- # value of MD_EXEC_PREFIX here. So we do a brute force search
- # through all the known MD_EXEC_PREFIX values. Ugh. This needs
- # to be fixed as part of the make/configure rewrite too.
-
- if test "x$exec_prefix" = xNONE; then
- if test "x$prefix" = xNONE; then
- test_prefix=/usr/local
- else
- test_prefix=$prefix
- fi
- else
- test_prefix=$exec_prefix
- fi
-
- # If the loop below does not find an linker, then use whatever
- # one we can find in the users's path.
- # user's path.
- if test "x$program_prefix" != xNONE; then
- gcc_cv_ld=${program_prefix}ld$host_exeext
- else
- gcc_cv_ld=`echo ld | sed ${program_transform_name}`$host_exeext
- fi
-
- test_dirs="$test_prefix/lib/gcc-lib/$target_alias/$gcc_version \
- $test_prefix/lib/gcc-lib/$target_alias \
- /usr/lib/gcc/$target_alias/$gcc_version \
- /usr/lib/gcc/$target_alias \
- $test_prefix/$target_alias/bin/$target_alias/$gcc_version \
- $test_prefix/$target_alias/bin"
-
- if test x$host = x$target; then
- test_dirs="$test_dirs \
- /usr/libexec \
- /usr/ccs/gcc \
- /usr/ccs/bin \
- /udk/usr/ccs/bin \
- /bsd43/usr/lib/cmplrs/cc \
- /usr/cross64/usr/bin \
- /usr/lib/cmplrs/cc \
- /sysv/usr/lib/cmplrs/cc \
- /svr4/usr/lib/cmplrs/cc \
- /usr/bin"
- fi
-
- for dir in $test_dirs; do
- if test -x $dir/ld$host_exeext; then
- gcc_cv_ld=$dir/ld$host_exeext
- break;
- fi
- done
-fi
-if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
- AC_MSG_RESULT("newly built ld")
-else
- AC_MSG_RESULT($gcc_cv_ld)
-fi
-
-# Figure out what nm we will be using.
-AC_MSG_CHECKING(what nm to use)
-if test -x nm$host_exeext; then
- gcc_cv_nm=./nm$host_exeext
-elif test "x$program_prefix" != xNONE; then
- gcc_cv_nm=${program_prefix}nm$host_exeext
-else
- gcc_cv_nm=`echo nm | sed ${program_transform_name}`$host_exeext
-fi
-AC_MSG_RESULT($gcc_cv_nm)
-
-# Figure out what objdump we will be using.
-AC_MSG_CHECKING(what objdump to use)
-if test -x objdump$host_exeext; then
- gcc_cv_objdump=./objdump$host_exeext
-elif test "x$program_prefix" != xNONE; then
- gcc_cv_objdump=${program_prefix}objdump$host_exeext
-else
- gcc_cv_objdump=`echo objdump | sed ${program_transform_name}`$host_exeext
-fi
-AC_MSG_RESULT($gcc_cv_objdump)
-
-# Figure out what assembler alignment features are present.
-AC_MSG_CHECKING(assembler alignment features)
-gcc_cv_as_alignment_features=none
-if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
- # Gas version 2.6 and later support for .balign and .p2align.
- # bytes to skip when using .p2align.
- if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 6 -o "$gcc_cv_gas_major_version" -gt 2; then
- gcc_cv_as_alignment_features=".balign and .p2align"
- AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
- fi
- # Gas version 2.8 and later support specifying the maximum
- # bytes to skip when using .p2align.
- if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 8 -o "$gcc_cv_gas_major_version" -gt 2; then
- gcc_cv_as_alignment_features=".p2align including maximum skip"
- AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
- fi
-elif test x$gcc_cv_as != x; then
- # Check if we have .balign and .p2align
- echo ".balign 4" > conftest.s
- echo ".p2align 2" >> conftest.s
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_alignment_features=".balign and .p2align"
- AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN)
- fi
- rm -f conftest.s conftest.o
- # Check if specifying the maximum bytes to skip when
- # using .p2align is supported.
- echo ".p2align 4,,7" > conftest.s
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_alignment_features=".p2align including maximum skip"
- AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN)
- fi
- rm -f conftest.s conftest.o
-fi
-AC_MSG_RESULT($gcc_cv_as_alignment_features)
-
-AC_MSG_CHECKING(assembler subsection support)
-gcc_cv_as_subsections=no
-if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
- if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
- gcc_cv_as_subsections="working .subsection -1"
- fi
-elif test x$gcc_cv_as != x; then
- # Check if we have .subsection
- echo ".subsection 1" > conftest.s
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_subsections=".subsection"
- if test x$gcc_cv_nm != x; then
- cat > conftest.s <<EOF
-conftest_label1: .word 0
-.subsection -1
-conftest_label2: .word 0
-.previous
-EOF
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
- $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1
- $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2
- if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1; then
- :
- else
- gcc_cv_as_subsections="working .subsection -1"
- fi
- fi
- fi
- fi
- rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
-fi
-if test x"$gcc_cv_as_subsections" = x"working .subsection -1"; then
- AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1,
-[Define if your assembler supports .subsection and .subsection -1 starts
- emitting at the beginning of your section.])
-fi
-AC_MSG_RESULT($gcc_cv_as_subsections)
-
-AC_MSG_CHECKING(assembler weak support)
-gcc_cv_as_weak=no
-if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
- if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 2 -o "$gcc_cv_gas_major_version" -gt 2; then
- gcc_cv_as_weak="yes"
- fi
-elif test x$gcc_cv_as != x; then
- # Check if we have .weak
- echo " .weak foobar" > conftest.s
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_weak="yes"
- fi
- rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
-fi
-if test x"$gcc_cv_as_weak" = xyes; then
- AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])
-fi
-AC_MSG_RESULT($gcc_cv_as_weak)
-
-AC_MSG_CHECKING(assembler hidden support)
-gcc_cv_as_hidden=no
-if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
- if test "$gcc_cv_gas_major_version" -eq 2 \
- -a "$gcc_cv_gas_minor_version" -eq 12 \
- -a "$gcc_cv_gas_patch_version" -ge 1 \
- -o "$gcc_cv_gas_major_version" -eq 2 \
- -a "$gcc_cv_gas_minor_version" -gt 12 \
- -o "$gcc_cv_gas_major_version" -gt 2 \
- && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
- gcc_cv_as_hidden="yes"
- fi
-elif test x$gcc_cv_as != x; then
- # Check if we have .hidden
- echo " .hidden foobar" > conftest.s
- echo "foobar:" >> conftest.s
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_hidden="yes"
- fi
- rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
-
- # GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
- # This is irritatingly difficult to feature test for. Look for
- # the date string after the version number.
- ld_ver=`$gcc_cv_ld --version 2>/dev/null | head -1`
- if echo "$ld_ver" | grep GNU > /dev/null; then
-changequote(,)dnl
- ld_vers=`echo $ld_ver | sed -n 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\(\|\.[0-9][0-9]*\(\|\.[0-9][0-9]*\)\)\)\([ ].*\|\)$,\1,p'`
- ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
- if test 0"$ld_date" -lt 20020404; then
- if test -n "$ld_date"; then
- # If there was date string, but was earlier than 2002-04-04, fail
- gcc_cv_as_hidden="no"
- elif test -z "$ld_vers"; then
- # If there was no date string nor ld version number, something is wrong
- gcc_cv_as_hidden="no"
- else
- ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'`
- ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'`
- ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
- test -z "$ld_vers_patch" && ld_vers_patch=0
- if test "$ld_vers_major" -lt 2; then
- gcc_cv_as_hidden="no"
- elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then
- gcc_cv_as_hidden="no"
- elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 \
- -a "$ld_vers_patch" -eq 0; then
- gcc_cv_as_hidden="no"
- fi
- fi
- fi
-changequote([,])dnl
- else
- # non-GNU linkers don't seem to support .hidden yet
- gcc_cv_as_hidden=no
- fi
-fi
-if test x"$gcc_cv_as_hidden" = xyes; then
- AC_DEFINE(HAVE_GAS_HIDDEN, 1,
- [Define if your assembler supports .hidden.])
-fi
-AC_MSG_RESULT($gcc_cv_as_hidden)
-libgcc_visibility=$gcc_cv_as_hidden
-AC_SUBST(libgcc_visibility)
-
-AC_MSG_CHECKING(assembler leb128 support)
-gcc_cv_as_leb128=no
-if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
- if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 11 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
- gcc_cv_as_leb128="yes"
- fi
-elif test x$gcc_cv_as != x; then
- # Check if we have .[us]leb128, and support symbol arithmetic with it.
- cat > conftest.s <<EOF
- .data
- .uleb128 L2 - L1
-L1:
- .uleb128 1280
- .sleb128 -1010
-L2:
-EOF
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_leb128="yes"
-
- # GAS versions before 2.11 do not support uleb128,
- # despite appearing to.
- # ??? There exists an elf-specific test that will crash
- # the assembler. Perhaps it's better to figure out whether
- # arbitrary sections are supported and try the test.
- as_ver=`$gcc_cv_as --version 2>/dev/null | head -1`
- if echo "$as_ver" | grep GNU > /dev/null; then
-changequote(,)dnl
- as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'`
- as_major=`echo $as_ver | sed 's/\..*//'`
- as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'`
-changequote([,])dnl
- if test $as_major -eq 2 -a $as_minor -lt 11; then
- gcc_cv_as_leb128="no"
- fi
- fi
- fi
- rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
-fi
-if test x"$gcc_cv_as_leb128" = xyes; then
- AC_DEFINE(HAVE_AS_LEB128, 1,
- [Define if your assembler supports .uleb128.])
-fi
-AC_MSG_RESULT($gcc_cv_as_leb128)
-
-AC_MSG_CHECKING(assembler eh_frame optimization)
-gcc_cv_as_eh_frame=no
-if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
- if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
- gcc_cv_as_eh_frame="yes"
- fi
-elif test x$gcc_cv_as != x; then
- # Check if this is GAS.
- as_ver=`$gcc_cv_as --version < /dev/null 2> /dev/null | head -1`
- rm -f a.out 2> /dev/null
- if echo "$as_ver" | grep GNU > /dev/null; then
- # Versions up to and including 2.11.0 may mis-optimize
- # .eh_frame data. Try something.
- cat > conftest.s <<EOF
- .text
-.LFB1:
- .4byte 0
-.L1:
- .4byte 0
-.LFE1:
- .section .eh_frame,"aw",@progbits
-__FRAME_BEGIN__:
- .4byte .LECIE1-.LSCIE1
-.LSCIE1:
- .4byte 0x0
- .byte 0x1
- .ascii "z\0"
- .byte 0x1
- .byte 0x78
- .byte 0x1a
- .byte 0x0
- .byte 0x4
- .4byte 1
- .p2align 1
-.LECIE1:
-.LSFDE1:
- .4byte .LEFDE1-.LASFDE1
-.LASFDE1:
- .4byte .LASFDE1-__FRAME_BEGIN__
- .4byte .LFB1
- .4byte .LFE1-.LFB1
- .byte 0x4
- .4byte .LFE1-.LFB1
- .byte 0x4
- .4byte .L1-.LFB1
-.LEFDE1:
-EOF
- cat > conftest.lit <<EOF
- 0000 10000000 00000000 017a0001 781a0004 .........z..x...
- 0010 01000000 12000000 18000000 00000000 ................
- 0020 08000000 04080000 0044 .........D
-EOF
- cat > conftest.big <<EOF
- 0000 00000010 00000000 017a0001 781a0004 .........z..x...
- 0010 00000001 00000012 00000018 00000000 ................
- 0020 00000008 04000000 0844 .........D
-EOF
- # If the assembler didn't choke, and we can objdump,
- # and we got the correct data, then succeed.
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
- && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \
- | tail -3 > conftest.got \
- && { cmp conftest.lit conftest.got > /dev/null 2>&1 \
- || cmp conftest.big conftest.got > /dev/null 2>&1; }
- then
- gcc_cv_as_eh_frame="yes"
- else
- gcc_cv_as_eh_frame="bad"
- if $gcc_cv_as -o conftest.o --traditional-format /dev/null; then
- AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1,
- [Define if your assembler mis-optimizes .eh_frame data.])
- fi
- fi
- fi
- rm -f conftest.*
-fi
-AC_MSG_RESULT($gcc_cv_as_eh_frame)
-
-AC_MSG_CHECKING(assembler section merging support)
-gcc_cv_as_shf_merge=no
-if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
- if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
- gcc_cv_as_shf_merge=yes
- fi
-elif test x$gcc_cv_as != x; then
- # Check if we support SHF_MERGE sections
- echo '.section .rodata.str, "aMS", @progbits, 1' > conftest.s
- if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_shf_merge=yes
- fi
- rm -f conftest.s conftest.o
-fi
-if test x"$gcc_cv_as_shf_merge" = xyes; then
- AC_DEFINE(HAVE_GAS_SHF_MERGE, 1,
-[Define if your assembler supports marking sections with SHF_MERGE flag.])
-fi
-AC_MSG_RESULT($gcc_cv_as_shf_merge)
-
-AC_MSG_CHECKING(assembler thread-local storage support)
-gcc_cv_as_tls=no
-conftest_s=
-tls_first_major=
-tls_first_minor=
-case "$target" in
-changequote(,)dnl
- alpha*-*-*)
- conftest_s='
- .section ".tdata","awT",@progbits
-foo: .long 25
- .text
- ldq $27,__tls_get_addr($29) !literal!1
- lda $16,foo($29) !tlsgd!1
- jsr $26,($27),__tls_get_addr !lituse_tlsgd!1
- ldq $27,__tls_get_addr($29) !literal!2
- lda $16,foo($29) !tlsldm!2
- jsr $26,($27),__tls_get_addr !lituse_tlsldm!2
- ldq $1,foo($29) !gotdtprel
- ldah $2,foo($29) !dtprelhi
- lda $3,foo($2) !dtprello
- lda $4,foo($29) !dtprel
- ldq $1,foo($29) !gottprel
- ldah $2,foo($29) !tprelhi
- lda $3,foo($2) !tprello
- lda $4,foo($29) !tprel'
- tls_first_major=2
- tls_first_minor=13
- ;;
- i[34567]86-*-*)
-changequote([,])dnl
- conftest_s='
- .section ".tdata","awT",@progbits
-foo: .long 25
- .text
- movl %gs:0, %eax
- leal foo@TLSGD(,%ebx,1), %eax
- leal foo@TLSLDM(%ebx), %eax
- leal foo@DTPOFF(%eax), %edx
- movl foo@GOTTPOFF(%ebx), %eax
- subl foo@GOTTPOFF(%ebx), %eax
- addl foo@GOTNTPOFF(%ebx), %eax
- movl foo@INDNTPOFF, %eax
- movl $foo@TPOFF, %eax
- subl $foo@TPOFF, %eax
- leal foo@NTPOFF(%ecx), %eax'
- tls_first_major=2
- tls_first_minor=14
- ;;
- x86_64-*-*)
- conftest_s='
- .section ".tdata","awT",@progbits
-foo: .long 25
- .text
- movq %fs:0, %rax
- leaq foo@TLSGD(%rip), %rdi
- leaq foo@TLSLD(%rip), %rdi
- leaq foo@DTPOFF(%rax), %rdx
- movq foo@GOTTPOFF(%rip), %rax
- movq $foo@TPOFF, %rax'
- tls_first_major=2
- tls_first_minor=14
- ;;
- ia64-*-*)
- conftest_s='
- .section ".tdata","awT",@progbits
-foo: data8 25
- .text
- addl r16 = @ltoff(@dtpmod(foo#)), gp
- addl r17 = @ltoff(@dtprel(foo#)), gp
- addl r18 = @ltoff(@tprel(foo#)), gp
- addl r19 = @dtprel(foo#), gp
- adds r21 = @dtprel(foo#), r13
- movl r23 = @dtprel(foo#)
- addl r20 = @tprel(foo#), gp
- adds r22 = @tprel(foo#), r13
- movl r24 = @tprel(foo#)'
- tls_first_major=2
- tls_first_minor=13
- ;;
- s390-*-*)
- conftest_s='
- .section ".tdata","awT",@progbits
-foo: .long 25
- .text
- .long foo@TLSGD
- .long foo@TLSLDM
- .long foo@DTPOFF
- .long foo@NTPOFF
- .long foo@GOTNTPOFF
- .long foo@INDNTPOFF
- l %r1,foo@GOTNTPOFF(%r12)
- l %r1,0(%r1):tls_load:foo
- bas %r14,0(%r1,%r13):tls_gdcall:foo
- bas %r14,0(%r1,%r13):tls_ldcall:foo'
- tls_first_major=2
- tls_first_minor=14
- ;;
- s390x-*-*)
- conftest_s='
- .section ".tdata","awT",@progbits
-foo: .long 25
- .text
- .quad foo@TLSGD
- .quad foo@TLSLDM
- .quad foo@DTPOFF
- .quad foo@NTPOFF
- .quad foo@GOTNTPOFF
- lg %r1,foo@GOTNTPOFF(%r12)
- larl %r1,foo@INDNTPOFF
- brasl %r14,__tls_get_offset@PLT:tls_gdcall:foo
- brasl %r14,__tls_get_offset@PLT:tls_ldcall:foo'
- tls_first_major=2
- tls_first_minor=14
- ;;
-esac
-if test -z "$tls_first_major"; then
- :
-elif test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
-then
- if test "$gcc_cv_gas_major_version" -eq "$tls_first_major" \
- -a "$gcc_cv_gas_minor_version" -ge "$tls_first_minor" \
- -o "$gcc_cv_gas_major_version" -gt "$tls_first_major"; then
- gcc_cv_as_tls=yes
- fi
-elif test x$gcc_cv_as != x; then
- echo "$conftest_s" > conftest.s
- if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1
- then
- gcc_cv_as_tls=yes
- fi
- rm -f conftest.s conftest.o
-fi
-if test "$gcc_cv_as_tls" = yes; then
- AC_DEFINE(HAVE_AS_TLS, 1,
- [Define if your assembler supports thread-local storage.])
-fi
-AC_MSG_RESULT($gcc_cv_as_tls)
-
-case "$target" in
- # All TARGET_ABI_OSF targets.
- alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
- AC_CACHE_CHECK([assembler supports explicit relocations],
- gcc_cv_as_explicit_relocs, [
- gcc_cv_as_explicit_relocs=unknown
- if test x$gcc_cv_gas_major_version != x \
- -a x$gcc_cv_gas_minor_version != x
- then
- if test "$gcc_cv_gas_major_version" -eq 2 \
- -a "$gcc_cv_gas_minor_version" -ge 12 \
- -o "$gcc_cv_gas_major_version" -gt 2; then
- gcc_cv_as_explicit_relocs=yes
- fi
- elif test x$gcc_cv_as != x; then
- cat > conftest.s << 'EOF'
- .set nomacro
- .text
- extbl $3, $2, $3 !lituse_bytoff!1
- ldq $2, a($29) !literal!1
- ldq $4, b($29) !literal!2
- ldq_u $3, 0($2) !lituse_base!1
- ldq $27, f($29) !literal!5
- jsr $26, ($27), f !lituse_jsr!5
- ldah $29, 0($26) !gpdisp!3
- lda $0, c($29) !gprel
- ldah $1, d($29) !gprelhigh
- lda $1, d($1) !gprellow
- lda $29, 0($29) !gpdisp!3
-EOF
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_explicit_relocs=yes
- else
- gcc_cv_as_explicit_relocs=no
- fi
- rm -f conftest.s conftest.o
- fi
- ])
- if test "x$gcc_cv_as_explicit_relocs" = xyes; then
- AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
- [Define if your assembler supports explicit relocations.])
- fi
- ;;
- sparc*-*-*)
- AC_CACHE_CHECK([assembler .register pseudo-op support],
- gcc_cv_as_register_pseudo_op, [
- gcc_cv_as_register_pseudo_op=unknown
- if test x$gcc_cv_as != x; then
- # Check if we have .register
- echo ".register %g2, #scratch" > conftest.s
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_register_pseudo_op=yes
- else
- gcc_cv_as_register_pseudo_op=no
- fi
- rm -f conftest.s conftest.o
- fi
- ])
- if test "x$gcc_cv_as_register_pseudo_op" = xyes; then
- AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1,
- [Define if your assembler supports .register.])
- fi
-
- AC_CACHE_CHECK([assembler supports -relax],
- gcc_cv_as_relax_opt, [
- gcc_cv_as_relax_opt=unknown
- if test x$gcc_cv_as != x; then
- # Check if gas supports -relax
- echo ".text" > conftest.s
- if $gcc_cv_as -relax -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_relax_opt=yes
- else
- gcc_cv_as_relax_opt=no
- fi
- rm -f conftest.s conftest.o
- fi
- ])
- if test "x$gcc_cv_as_relax_opt" = xyes; then
- AC_DEFINE(HAVE_AS_RELAX_OPTION, 1,
- [Define if your assembler supports -relax option.])
- fi
-
- AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs],
- gcc_cv_as_sparc_ua_pcrel, [
- gcc_cv_as_sparc_ua_pcrel=unknown
- if test x$gcc_cv_as != x -a x$gcc_cv_ld != x; then
- gcc_cv_as_sparc_ua_pcrel=no
- echo ".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo)" > conftest.s
- if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \
- && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then
- gcc_cv_as_sparc_ua_pcrel=yes
- fi
- rm -f conftest.s conftest.o conftest
- fi
- ])
- if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then
- AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1,
- [Define if your assembler and linker support unaligned PC relative relocs.])
- fi
-
- AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs against hidden symbols],
- gcc_cv_as_sparc_ua_pcrel_hidden, [
- if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then
- gcc_cv_as_sparc_ua_pcrel_hidden=unknown
- if test x$gcc_cv_objdump != x; then
- gcc_cv_as_sparc_ua_pcrel_hidden=no
- echo ".data; .align 4; .byte 0x31; .uaword %r_disp32(foo)" > conftest.s
- echo ".byte 0x32, 0x33, 0x34; .global foo; .hidden foo" >> conftest.s
- echo "foo: .skip 4" >> conftest.s
- if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \
- && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \
- && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \
- | grep ' 31000000 07323334' > /dev/null 2>&1; then
- if $gcc_cv_objdump -R conftest 2> /dev/null \
- | grep 'DISP32' > /dev/null 2>&1; then
- :
- else
- gcc_cv_as_sparc_ua_pcrel_hidden=yes
- fi
- fi
- fi
- rm -f conftest.s conftest.o conftest
- else
- gcc_cv_as_sparc_ua_pcrel_hidden="$gcc_cv_as_sparc_ua_pcrel"
- fi
- ])
- if test "x$gcc_cv_as_sparc_ua_pcrel_hidden" = xyes; then
- AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1,
- [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])
- fi
-
- AC_CACHE_CHECK([for assembler offsetable %lo() support],
- gcc_cv_as_offsetable_lo10, [
- gcc_cv_as_offsetable_lo10=unknown
- if test "x$gcc_cv_as" != x; then
- # Check if assembler has offsetable %lo()
- echo "or %g1, %lo(ab) + 12, %g1" > conftest.s
- echo "or %g1, %lo(ab + 12), %g1" > conftest1.s
- if $gcc_cv_as -xarch=v9 -o conftest.o conftest.s \
- > /dev/null 2>&1 &&
- $gcc_cv_as -xarch=v9 -o conftest1.o conftest1.s \
- > /dev/null 2>&1; then
- if cmp conftest.o conftest1.o > /dev/null 2>&1; then
- gcc_cv_as_offsetable_lo10=no
- else
- gcc_cv_as_offsetable_lo10=yes
- fi
- else
- gcc_cv_as_offsetable_lo10=no
- fi
- rm -f conftest.s conftest.o conftest1.s conftest1.o
- fi
- ])
- if test "x$gcc_cv_as_offsetable_lo10" = xyes; then
- AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1,
- [Define if your assembler supports offsetable %lo().])
- fi
-
- ;;
-
-changequote(,)dnl
- i[34567]86-*-* | x86_64-*-*)
-changequote([,])dnl
- AC_MSG_CHECKING(assembler instructions)
- gcc_cv_as_instructions=
- if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
- if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2; then
- gcc_cv_as_instructions="filds fists"
- fi
- elif test x$gcc_cv_as != x; then
- set "filds fists" "filds mem; fists mem"
- while test $# -gt 0
- do
- echo "$2" > conftest.s
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_instructions=${gcc_cv_as_instructions}$1" "
- fi
- shift 2
- done
- rm -f conftest.s conftest.o
- fi
- if test x"$gcc_cv_as_instructions" != x; then
- AC_DEFINE_UNQUOTED(HAVE_GAS_`echo "$gcc_cv_as_instructions" | sed -e 's/ $//' | tr '[a-z ]' '[A-Z_]'`)
- fi
- AC_MSG_RESULT($gcc_cv_as_instructions)
-
- AC_MSG_CHECKING(cmov syntax)
- gcc_cv_as_ix86_cmov_sun_syntax=no
- if test x$gcc_cv_as != x; then
- echo 'cmovl.l %edx, %eax' > conftest.s
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_ix86_cmov_sun_syntax=yes
- fi
- rm -f conftest.s conftest.o
- fi
- if test "x$gcc_cv_as_ix86_cmov_sun_syntax" = xyes; then
- AC_DEFINE(HAVE_AS_IX86_CMOV_SUN_SYNTAX, 1,
- [Define if your assembler supports the Sun syntax for cmov.])
- fi
- AC_MSG_RESULT($gcc_cv_as_ix86_cmov_sun_syntax)
-
- AC_MSG_CHECKING(assembler GOTOFF in data directives)
- gcc_cv_as_gotoff_in_data=no
- if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
- then
- if test "$gcc_cv_gas_major_version" -eq 2 \
- -a "$gcc_cv_gas_minor_version" -ge 11 \
- -o "$gcc_cv_gas_major_version" -gt 2; then
- gcc_cv_as_gotoff_in_data=yes
- fi
- elif test x$gcc_cv_as != x; then
- cat > conftest.s <<EOF
- .text
-.L0:
- nop
- .data
- .long .L0@GOTOFF
-EOF
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_gotoff_in_data=yes
- fi
- fi
- AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA,
- [`if test $gcc_cv_as_gotoff_in_data = yes; then echo 1; else echo 0; fi`],
- [Define true if the assembler supports '.long foo@GOTOFF'.])
- AC_MSG_RESULT($gcc_cv_as_gotoff_in_data)
- ;;
-
- ia64*-*-*)
- AC_CACHE_CHECK([assembler supports ltoffx and ldxmov],
- gcc_cv_as_ltoffx_ldxmov_relocs, [
- gcc_cv_as_ltoffx_ldxmov_relocs=unknown
- if test x$gcc_cv_gas_major_version != x \
- -a x$gcc_cv_gas_minor_version != x
- then
- if test "$gcc_cv_gas_major_version" -eq 2 \
- -a "$gcc_cv_gas_minor_version" -ge 14 \
- -o "$gcc_cv_gas_major_version" -gt 2; then
- gcc_cv_as_ltoffx_ldxmov_relocs=yes
- fi
- elif test x$gcc_cv_as != x; then
- cat > conftest.s << 'EOF'
-changequote(,)dnl
- .text
- addl r15 = @ltoffx(x#), gp
- ;;
- ld8.mov r16 = [r15], x#
-EOF
-changequote([,])dnl
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
- gcc_cv_as_ltoffx_ldxmov_relocs=yes
- else
- gcc_cv_as_ltoffx_ldxmov_relocs=no
- fi
- rm -f conftest.s conftest.o
- fi
- ])
- if test "x$gcc_cv_as_ltoffx_ldxmov_relocs" = xyes; then
- AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1,
- [Define if your assembler supports ltoffx and ldxmov relocations.])
- fi
- ;;
-esac
-
-AC_MSG_CHECKING(assembler dwarf2 debug_line support)
-gcc_cv_as_dwarf2_debug_line=no
-# ??? Not all targets support dwarf2 debug_line, even within a version
-# of gas. Moreover, we need to emit a valid instruction to trigger any
-# info to the output file. So, as supported targets are added to gas 2.11,
-# add some instruction here to (also) show we expect this might work.
-# ??? Once 2.11 is released, probably need to add first known working
-# version to the per-target configury.
-case "$target" in
- i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
- | x86_64*-*-* | hppa*-*-* | arm*-*-* | strongarm*-*-* | xscale*-*-*)
- insn="nop"
- ;;
- ia64*-*-*)
- insn="nop 0"
- ;;
- esac
-if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
-then
- if test "$gcc_cv_gas_major_version" -eq 2 \
- -a "$gcc_cv_gas_minor_version" -ge 11 \
- -o "$gcc_cv_gas_major_version" -gt 2 \
- && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
- && test x"$insn" != x ; then
- gcc_cv_as_dwarf2_debug_line="yes"
- fi
-elif test x$gcc_cv_as != x -a x"$insn" != x ; then
- echo ' .file 1 "conftest.s"' > conftest.s
- echo ' .loc 1 3 0' >> conftest.s
- echo " $insn" >> conftest.s
- # ??? This fails with non-gnu grep.
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \
- && grep debug_line conftest.o > /dev/null 2>&1 ; then
- # The .debug_line file table must be in the exact order that
- # we specified the files, since these indices are also used
- # by DW_AT_decl_file. Approximate this test by testing if
- # the assembler bitches if the same index is assigned twice.
- echo ' .file 1 "foo.s"' > conftest.s
- echo ' .file 1 "bar.s"' >> conftest.s
- if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1
- then
- gcc_cv_as_dwarf2_debug_line="no"
- else
- gcc_cv_as_dwarf2_debug_line="yes"
- fi
- fi
- rm -f conftest.s conftest.o conftest.nm1 conftest.nm2
-fi
-if test x"$gcc_cv_as_dwarf2_debug_line" = xyes; then
- AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1,
-[Define if your assembler supports dwarf2 .file/.loc directives,
- and preserves file table indices exactly as given.])
-fi
-AC_MSG_RESULT($gcc_cv_as_dwarf2_debug_line)
-
-AC_MSG_CHECKING(assembler --gdwarf2 support)
-gcc_cv_as_gdwarf2_flag=no
-if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
-then
- if test "$gcc_cv_gas_major_version" -eq 2 \
- -a "$gcc_cv_gas_minor_version" -ge 11 \
- -o "$gcc_cv_gas_major_version" -gt 2 \
- && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
- && test x"$insn" != x ; then
- gcc_cv_as_gdwarf2_flag="yes"
- fi
-elif test x$gcc_cv_as != x -a x"$insn" != x ; then
- echo '' > conftest.s
- # ??? This fails with non-gnu grep.
- if $gcc_cv_as --gdwarf2 -o conftest.o conftest.s > /dev/null 2>&1
- then
- gcc_cv_as_gdwarf2_flag="yes"
- fi
- rm -f conftest.s conftest.o
-fi
-if test x"$gcc_cv_as_gdwarf2_flag" = xyes; then
- AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1,
-[Define if your assembler supports the --gdwarf2 option.])
-fi
-AC_MSG_RESULT($gcc_cv_as_gdwarf2_flag)
-
-AC_MSG_CHECKING(assembler --gstabs support)
-gcc_cv_as_gstabs_flag=no
-if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
-then
- if test "$gcc_cv_gas_major_version" -eq 2 \
- -a "$gcc_cv_gas_minor_version" -ge 11 \
- -o "$gcc_cv_gas_major_version" -gt 2 \
- && grep 'obj_format = elf' ../gas/Makefile > /dev/null \
- && test x"$insn" != x ; then
- gcc_cv_as_gstabs_flag="yes"
- fi
-elif test x$gcc_cv_as != x -a x"$insn" != x ; then
- echo '' > conftest.s
- # ??? This fails with non-gnu grep.
- if $gcc_cv_as --gstabs -o conftest.o conftest.s > /dev/null 2>&1 ; then
- gcc_cv_as_gstabs_flag="yes"
- # The native Solaris 9/Intel assembler doesn't understand --gstabs
- # and warns about it, but still exits successfully. So check for
- # this.
- if $gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | \
- grep -i warning > /dev/null ; then
- gcc_cv_as_gstabs_flag="no"
- fi
- fi
- rm -f conftest.s conftest.o
-fi
-if test x"$gcc_cv_as_gstabs_flag" = xyes; then
- AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1,
-[Define if your assembler supports the --gstabs option.])
-fi
-AC_MSG_RESULT($gcc_cv_as_gstabs_flag)
-
-AC_MSG_CHECKING(linker read-only and read-write section mixing)
-gcc_cv_ld_ro_rw_mix=unknown
-if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
- if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
- gcc_cv_ld_ro_rw_mix=read-write
- fi
-elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
- echo '.section myfoosect, "a"' > conftest1.s
- echo '.section myfoosect, "aw"' > conftest2.s
- echo '.byte 1' >> conftest2.s
- echo '.section myfoosect, "a"' > conftest3.s
- echo '.byte 0' >> conftest3.s
- if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
- && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
- && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \
- && $gcc_cv_ld -shared -o conftest1.so conftest1.o \
- conftest2.o conftest3.o > /dev/null 2>&1; then
- gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
- | sed -e '/myfoosect/!d' -e N`
- if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then
- if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then
- gcc_cv_ld_ro_rw_mix=read-only
- else
- gcc_cv_ld_ro_rw_mix=read-write
- fi
- fi
- fi
-changequote(,)dnl
- rm -f conftest.* conftest[123].*
-changequote([,])dnl
-fi
-if test x$gcc_cv_ld_ro_rw_mix = xread-write; then
- AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1,
- [Define if your linker links a mix of read-only
- and read-write sections into a read-write section.])
-fi
-AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix)
-
-AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
-gcc_cv_ld_eh_frame_hdr=no
-if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
- if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 12 -o "$gcc_cv_gld_major_version" -gt 2 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
- gcc_cv_ld_eh_frame_hdr=yes
- fi
-elif test x$gcc_cv_ld != x; then
- # Check if linker supports --eh-frame-hdr option
- if $gcc_cv_ld --help 2>/dev/null | grep eh-frame-hdr > /dev/null; then
- gcc_cv_ld_eh_frame_hdr=yes
- fi
-fi
-if test x"$gcc_cv_ld_eh_frame_hdr" = xyes; then
- AC_DEFINE(HAVE_LD_EH_FRAME_HDR, 1,
-[Define if your linker supports --eh-frame-hdr option.])
-fi
-AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
-
-# Miscellaneous target-specific checks.
-case "$target" in
- mips*-*-*)
- AC_MSG_CHECKING(whether libgloss uses STARTUP directives consistently)
- gcc_cv_mips_libgloss_startup=no
- gcc_cv_libgloss_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/libgloss
- if test "x$exec_prefix" = xNONE; then
- if test "x$prefix" = xNONE; then
- test_prefix=/usr/local
- else
- test_prefix=$prefix
- fi
- else
- test_prefix=$exec_prefix
- fi
- for f in $gcc_cv_libgloss_srcdir/mips/idt.ld $test_prefix/$target_alias/lib/idt.ld
- do
- if grep '^STARTUP' $f > /dev/null 2>&1; then
- gcc_cv_mips_libgloss_startup=yes
- break
- fi
- done
- if test x"$gcc_cv_mips_libgloss_startup" = xyes; then
- AC_DEFINE(HAVE_MIPS_LIBGLOSS_STARTUP_DIRECTIVES, 1,
- [Define if your MIPS libgloss linker scripts consistently include STARTUP directives.])
- fi
- AC_MSG_RESULT($gcc_cv_mips_libgloss_startup)
- ;;
-esac
-
-if test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" ; then
- AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include")
-fi
-
-# Figure out what language subdirectories are present.
-# Look if the user specified --enable-languages="..."; if not, use
-# the environment variable $LANGUAGES if defined. $LANGUAGES might
-# go away some day.
-# NB: embedded tabs in this IF block -- do not untabify
-if test x"${enable_languages+set}" != xset; then
- if test x"${LANGUAGES+set}" = xset; then
- enable_languages="${LANGUAGES}"
- AC_MSG_WARN([setting LANGUAGES is deprecated, use --enable-languages instead])
-
- else
- enable_languages=all
- fi
-else
- if test x"${enable_languages}" = x \
- || test x"${enable_languages}" = xyes;
- then
- AC_MSG_ERROR([--enable-languages needs at least one language argument])
- fi
-fi
-enable_languages=`echo "${enable_languages}" | sed -e 's/[[ ,]][[ ,]]*/,/g' -e 's/,$//'`
-
-# First scan to see if an enabled language requires some other language.
-# We assume that a given config-lang.in will list all the language
-# front ends it requires, even if some are required indirectly.
-for lang in ${srcdir}/*/config-lang.in ..
-do
- case $lang in
- ..)
- ;;
- # The odd quoting in the next line works around
- # an apparent bug in bash 1.12 on linux.
-changequote(,)dnl
- ${srcdir}/[*]/config-lang.in)
- ;;
- *)
- lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
- this_lang_requires=`sed -n -e 's,^lang_requires=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^lang_requires=\([^ ]*\).*$,\1,p' $lang`
- for other in $this_lang_requires
- do
- case ,${enable_languages}, in
- *,$other,*)
- ;;
- *,all,*)
- ;;
- *,$lang_alias,*)
- enable_languages="$enable_languages,$other"
- ;;
- esac
- done
- ;;
-changequote([,])dnl
- esac
-done
-
-expected_languages=`echo ,${enable_languages}, | sed -e 's:,: :g' -e 's: *: :g' -e 's: *: :g' -e 's:^ ::' -e 's: $::'`
-found_languages=
-subdirs=
-for lang in ${srcdir}/*/config-lang.in ..
-do
- case $lang in
- ..) ;;
- # The odd quoting in the next line works around
- # an apparent bug in bash 1.12 on linux.
-changequote(,)dnl
- ${srcdir}/[*]/config-lang.in) ;;
- *)
- lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
- this_lang_libs=`sed -n -e 's,^target_libs=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^target_libs=\([^ ]*\).*$,\1,p' $lang`
- build_by_default=`sed -n -e 's,^build_by_default=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^build_by_default=\([^ ]*\).*$,\1,p' $lang`
- if test "x$lang_alias" = x
- then
- echo "$lang doesn't set \$language." 1>&2
- exit 1
- fi
- case ${build_by_default},${enable_languages}, in
- *,$lang_alias,*) add_this_lang=yes ;;
- no,*) add_this_lang=no ;;
- *,all,*) add_this_lang=yes ;;
- *) add_this_lang=no ;;
- esac
- found_languages="${found_languages} ${lang_alias}"
- if test x"${add_this_lang}" = xyes; then
- case $lang in
- ${srcdir}/ada/config-lang.in)
- if test x$have_gnat = xyes ; then
- subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
- fi
- ;;
- *)
- subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([^/]*\)/config-lang.in$,\1,'`"
- ;;
- esac
- fi
- ;;
-changequote([,])dnl
- esac
-done
-
-missing_languages=
-for expected_language in ${expected_languages} ..
-do
- if test "${expected_language}" != ..; then
- missing_language="${expected_language}"
- if test "${expected_language}" = "c" \
- || test "${expected_language}" = "all"; then
- missing_language=
- fi
- for found_language in ${found_languages} ..
- do
- if test "${found_language}" != ..; then
- if test "${expected_language}" = "${found_language}"; then
- missing_language=
- fi
- fi
- done
- if test "x${missing_language}" != x; then
- missing_languages="${missing_languages} ${missing_language}"
- fi
- fi
-done
-
-if test "x$missing_languages" != x; then
- AC_MSG_ERROR([
-The following requested languages were not found:${missing_languages}
-The following languages were available: c${found_languages}])
-fi
-
-# Make gthr-default.h if we have a thread file.
-gthread_flags=
-if test $thread_file != single; then
- rm -f gthr-default.h
- echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h
- gthread_flags=-DHAVE_GTHR_DEFAULT
-fi
-AC_SUBST(gthread_flags)
-
-# Find out what GC implementation we want, or may, use.
-AC_ARG_WITH(gc,
-[ --with-gc={simple,page} choose the garbage collection mechanism to use
- with the compiler],
-[case "$withval" in
- simple | page)
- GGC=ggc-$withval
- ;;
- *)
- AC_MSG_ERROR([$withval is an invalid option to --with-gc])
- ;;
-esac],
-[GGC=ggc-page])
-AC_SUBST(GGC)
-echo "Using $GGC for garbage collection."
-
-# Use the system's zlib library.
-zlibdir=-L../zlib
-zlibinc="-I\$(srcdir)/../zlib"
-AC_ARG_WITH(system-zlib,
-[ --with-system-zlib use installed libz],
-zlibdir=
-zlibinc=
-)
-AC_SUBST(zlibdir)
-AC_SUBST(zlibinc)
-
-dnl Very limited version of automake's enable-maintainer-mode
-
-AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
- dnl maintainer-mode is disabled by default
- AC_ARG_ENABLE(maintainer-mode,
-[ --enable-maintainer-mode
- enable make rules and dependencies not useful
- (and sometimes confusing) to the casual installer],
- maintainer_mode=$enableval,
- maintainer_mode=no)
-
-AC_MSG_RESULT($maintainer_mode)
-
-if test "$maintainer_mode" = "yes"; then
- MAINT=''
-else
- MAINT='#'
-fi
-AC_SUBST(MAINT)dnl
-
-# Make empty files to contain the specs and options for each language.
-# Then add #include lines to for a compiler that has specs and/or options.
-
-lang_specs_files=
-lang_options_files=
-lang_tree_files=
-for subdir in . $subdirs
-do
- if test -f $srcdir/$subdir/lang-specs.h; then
- lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
- fi
- if test -f $srcdir/$subdir/lang-options.h; then
- lang_options_files="$lang_options_files $srcdir/$subdir/lang-options.h"
- fi
- if test -f $srcdir/$subdir/$subdir-tree.def; then
- lang_tree_files="$lang_tree_files $srcdir/$subdir/$subdir-tree.def"
- fi
-done
-
-# These (without "all_") are set in each config-lang.in.
-# `language' must be a single word so is spelled singularly.
-all_languages=
-all_boot_languages=
-all_compilers=
-all_stagestuff=
-all_outputs='Makefile intl/Makefile fixinc/Makefile gccbug mklibgcc mkheaders'
-# List of language makefile fragments.
-all_lang_makefiles=
-# Files for gengtype
-all_gtfiles="$target_gtfiles"
-# Files for gengtype with language
-all_gtfiles_files_langs=
-all_gtfiles_files_files=
-
-# Add the language fragments.
-# Languages are added via two mechanisms. Some information must be
-# recorded in makefile variables, these are defined in config-lang.in.
-# We accumulate them and plug them into the main Makefile.
-# The other mechanism is a set of hooks for each of the main targets
-# like `clean', `install', etc.
-
-language_fragments="Make-lang"
-language_hooks="Make-hooks"
-
-for s in .. $subdirs
-do
- if test $s != ".."
- then
- language=
- boot_language=
- compilers=
- stagestuff=
- outputs=
- gtfiles=
- . ${srcdir}/$s/config-lang.in
- if test "x$language" = x
- then
- echo "${srcdir}/$s/config-lang.in doesn't set \$language." 1>&2
- exit 1
- fi
- all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Make-lang.in"
- if test -f ${srcdir}/$s/Makefile.in
- then all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Makefile.in"
- fi
- all_languages="$all_languages $language"
- if test "x$boot_language" = xyes
- then
- all_boot_languages="$all_boot_languages $language"
- fi
- all_compilers="$all_compilers $compilers"
- all_stagestuff="$all_stagestuff $stagestuff"
- all_outputs="$all_outputs $outputs"
- all_gtfiles="$all_gtfiles $gtfiles"
- for f in .. $gtfiles
- do
- if test $f != ".."
- then
- all_gtfiles_files_langs="$all_gtfiles_files_langs ${s} "
- all_gtfiles_files_files="$all_gtfiles_files_files ${f} "
- fi
- done
- fi
-done
-
-# Pick up gtfiles for c
-gtfiles=
-s="c"
-. ${srcdir}/c-config-lang.in
-all_gtfiles="$all_gtfiles $gtfiles"
-for f in .. $gtfiles
-do
- if test $f != ".."
- then
- all_gtfiles_files_langs="$all_gtfiles_files_langs ${s} "
- all_gtfiles_files_files="$all_gtfiles_files_files ${f} "
- fi
-done
-
-check_languages=
-for language in .. $all_languages
-do
- if test $language != ".."
- then
- check_languages="$check_languages check-$language"
- fi
-done
-
-# Since we can't use `::' targets, we link each language in
-# with a set of hooks, reached indirectly via lang.${target}.
-
-rm -f Make-hooks
-touch Make-hooks
-target_list="all.build all.cross start.encap rest.encap \
- info dvi generated-manpages \
- install-normal install-common install-info install-man \
- uninstall \
- mostlyclean clean distclean extraclean maintainer-clean \
- stage1 stage2 stage3 stage4"
-for t in $target_list
-do
- x=
- for lang in .. $all_languages
- do
- if test $lang != ".."; then
- x="$x $lang.$t"
- fi
- done
- echo "lang.$t: $x" >> Make-hooks
-done
-
-# Create .gdbinit.
-
-echo "dir ." > .gdbinit
-echo "dir ${srcdir}" >> .gdbinit
-if test x$gdb_needs_out_file_path = xyes
-then
- echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
-fi
-if test "x$subdirs" != x; then
- for s in $subdirs
- do
- echo "dir ${srcdir}/$s" >> .gdbinit
- done
-fi
-echo "source ${srcdir}/gdbinit.in" >> .gdbinit
-
-# Define variables host_canonical and build_canonical
-# because some Cygnus local changes in the Makefile depend on them.
-build_canonical=${build}
-host_canonical=${host}
-target_subdir=
-if test "${host}" != "${target}" ; then
- target_subdir=${target_alias}/
-fi
-AC_SUBST(build_canonical)
-AC_SUBST(host_canonical)
-AC_SUBST(target_subdir)
-
-# If $(exec_prefix) exists and is not the same as $(prefix), then compute an
-# absolute path for gcc_tooldir based on inserting the number of up-directory
-# movements required to get from $(exec_prefix) to $(prefix) into the basic
-# $(libsubdir)/@(unlibsubdir) based path.
-# Don't set gcc_tooldir to tooldir since that's only passed in by the toplevel
-# make and thus we'd get different behavior depending on where we built the
-# sources.
-if test x$exec_prefix = xNONE -o x$exec_prefix = x$prefix; then
- gcc_tooldir='$(libsubdir)/$(unlibsubdir)/../$(target_alias)'
-else
-changequote(<<, >>)dnl
-# An explanation of the sed strings:
-# -e 's|^\$(prefix)||' matches and eliminates 'prefix' from 'exec_prefix'
-# -e 's|/$||' match a trailing forward slash and eliminates it
-# -e 's|^[^/]|/|' forces the string to start with a forward slash (*)
-# -e 's|/[^/]*|../|g' replaces each occurrence of /<directory> with ../
-#
-# (*) Note this pattern overwrites the first character of the string
-# with a forward slash if one is not already present. This is not a
-# problem because the exact names of the sub-directories concerned is
-# unimportant, just the number of them matters.
-#
-# The practical upshot of these patterns is like this:
-#
-# prefix exec_prefix result
-# ------ ----------- ------
-# /foo /foo/bar ../
-# /foo/ /foo/bar ../
-# /foo /foo/bar/ ../
-# /foo/ /foo/bar/ ../
-# /foo /foo/bar/ugg ../../
-#
- dollar='$$'
- gcc_tooldir="\$(libsubdir)/\$(unlibsubdir)/\`echo \$(exec_prefix) | sed -e 's|^\$(prefix)||' -e 's|/\$(dollar)||' -e 's|^[^/]|/|' -e 's|/[^/]*|../|g'\`\$(target_alias)"
-changequote([, ])dnl
-fi
-AC_SUBST(gcc_tooldir)
-AC_SUBST(dollar)
-
-# Find a directory in which to install a shared libgcc.
-
-AC_ARG_ENABLE(version-specific-runtime-libs,
-[ --enable-version-specific-runtime-libs
- specify that runtime libraries should be
- installed in a compiler-specific directory])
-
-AC_ARG_WITH(slibdir,
-[ --with-slibdir=DIR shared libraries in DIR [LIBDIR]],
-slibdir="$with_slibdir",
-if test "${enable_version_specific_runtime_libs+set}" = set; then
- slibdir='$(libsubdir)'
-elif test "$host" != "$target"; then
- slibdir='$(build_tooldir)/lib'
-else
- slibdir='$(libdir)'
-fi)
-AC_SUBST(slibdir)
-
-objdir=`${PWDCMD-pwd}`
-AC_SUBST(objdir)
-
-# Process the language and host/target makefile fragments.
-${CONFIG_SHELL-/bin/sh} $srcdir/configure.frag $srcdir "$subdirs" "$dep_host_xmake_file" "$dep_tmake_file"
-
-# Substitute configuration variables
-AC_SUBST(subdirs)
-AC_SUBST(srcdir)
-AC_SUBST(all_boot_languages)
-AC_SUBST(all_compilers)
-AC_SUBST(all_gtfiles)
-AC_SUBST(all_gtfiles_files_langs)
-AC_SUBST(all_gtfiles_files_files)
-AC_SUBST(all_lang_makefiles)
-AC_SUBST(all_languages)
-AC_SUBST(all_stagestuff)
-AC_SUBST(build_exeext)
-AC_SUBST(build_install_headers_dir)
-AC_SUBST(build_xm_file_list)
-AC_SUBST(build_xm_file)
-AC_SUBST(build_xm_defines)
-AC_SUBST(check_languages)
-AC_SUBST(cc_set_by_configure)
-AC_SUBST(quoted_cc_set_by_configure)
-AC_SUBST(cpp_install_dir)
-AC_SUBST(dep_host_xmake_file)
-AC_SUBST(dep_tmake_file)
-AC_SUBST(extra_headers_list)
-AC_SUBST(extra_objs)
-AC_SUBST(extra_parts)
-AC_SUBST(extra_passes)
-AC_SUBST(extra_programs)
-AC_SUBST(float_h_file)
-AC_SUBST(gcc_config_arguments)
-AC_SUBST(gcc_gxx_include_dir)
-AC_SUBST(libstdcxx_incdir)
-AC_SUBST(gcc_version)
-AC_SUBST(gcc_version_full)
-AC_SUBST(gcc_version_trigger)
-AC_SUBST(host_exeext)
-AC_SUBST(host_extra_gcc_objs)
-AC_SUBST(host_xm_file_list)
-AC_SUBST(host_xm_file)
-AC_SUBST(host_xm_defines)
-AC_SUBST(install)
-AC_SUBST(lang_options_files)
-AC_SUBST(lang_specs_files)
-AC_SUBST(lang_tree_files)
-AC_SUBST(local_prefix)
-AC_SUBST(md_file)
-AC_SUBST(objc_boehm_gc)
-AC_SUBST(out_file)
-AC_SUBST(out_object_file)
-AC_SUBST(stage_prefix_set_by_configure)
-AC_SUBST(quoted_stage_prefix_set_by_configure)
-AC_SUBST(symbolic_link)
-AC_SUBST(thread_file)
-AC_SUBST(tm_file_list)
-AC_SUBST(tm_file)
-AC_SUBST(tm_defines)
-AC_SUBST(tm_p_file_list)
-AC_SUBST(tm_p_file)
-AC_SUBST(xm_file)
-AC_SUBST(xm_defines)
-AC_SUBST(target_alias)
-AC_SUBST(c_target_objs)
-AC_SUBST(cxx_target_objs)
-AC_SUBST(target_cpu_default)
-
-AC_SUBST_FILE(target_overrides)
-AC_SUBST_FILE(host_overrides)
-AC_SUBST_FILE(language_fragments)
-AC_SUBST_FILE(language_hooks)
-
-# Echo that links are built
-if test x$host = x$target
-then
- str1="native "
-else
- str1="cross-"
- str2=" from $host"
-fi
-
-if test x$host != x$build
-then
- str3=" on a $build system"
-fi
-
-if test "x$str2" != x || test "x$str3" != x
-then
- str4=
-fi
-
-echo "Links are now set up to build a ${str1}compiler for ${target}$str4" 1>&2
-
-if test "x$str2" != x || test "x$str3" != x
-then
- echo " ${str2}${str3}." 1>&2
-fi
-
-# Truncate the target if necessary
-if test x$host_truncate_target != x; then
- target=`echo $target | sed -e 's/\(..............\).*/\1/'`
-fi
-
-# Configure the subdirectories
-# AC_CONFIG_SUBDIRS($subdirs)
-
-# Create the Makefile
-# and configure language subdirectories
-AC_OUTPUT($all_outputs,
-[
-case x$CONFIG_HEADERS in
-xauto-host.h:config.in)
-echo > cstamp-h ;;
-esac
-# If the host supports symlinks, point stage[1234] at ../stage[1234] so
-# bootstrapping and the installation procedure can still use
-# CC="stage1/xgcc -Bstage1/". If the host doesn't support symlinks,
-# FLAGS_TO_PASS has been modified to solve the problem there.
-# This is virtually a duplicate of what happens in configure.lang; we do
-# an extra check to make sure this only happens if ln -s can be used.
-if test "$symbolic_link" = "ln -s"; then
- for d in .. ${subdirs} fixinc ; do
- if test $d != ..; then
- STARTDIR=`${PWDCMD-pwd}`
- cd $d
- for t in stage1 stage2 stage3 stage4 include
- do
- rm -f $t
- $symbolic_link ../$t $t 2>/dev/null
- done
- cd $STARTDIR
- fi
- done
-else true ; fi
-# Avoid having to add intl to our include paths.
-if test -f intl/libintl.h; then
- echo creating libintl.h
- echo '#include "intl/libintl.h"' >libintl.h
-fi
-],
-[subdirs='$subdirs'
-symbolic_link='$symbolic_link'
-])
diff --git a/contrib/gcc/cp/cfns.h b/contrib/gcc/cp/cfns.h
deleted file mode 100644
index c7e6a9d..0000000
--- a/contrib/gcc/cp/cfns.h
+++ /dev/null
@@ -1,467 +0,0 @@
-/* C code produced by gperf version 2.7 */
-/* Command-line: gperf -o -C -E -k 1-6,$ -j1 -D -N libc_name_p ../../../egcs-CVS20000404/gcc/cp/cfns.gperf */
-#ifdef __GNUC__
-__inline
-#endif
-static unsigned int hash PARAMS ((const char *, unsigned int));
-#ifdef __GNUC__
-__inline
-#endif
-const char * libc_name_p PARAMS ((const char *, unsigned int));
-/* maximum key range = 1020, duplicates = 1 */
-
-#ifdef __GNUC__
-__inline
-#endif
-static unsigned int
-hash (str, len)
- register const char *str;
- register unsigned int len;
-{
- static const unsigned short asso_values[] =
- {
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 0, 1,
- 0, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 247, 218, 144,
- 0, 0, 40, 7, 126, 184, 2, 15, 146, 67,
- 9, 60, 0, 0, 3, 0, 7, 8, 197, 1,
- 40, 8, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
- 1038, 1038, 1038, 1038, 1038, 1038
- };
- register int hval = len;
-
- switch (hval)
- {
- default:
- case 6:
- hval += asso_values[(unsigned char)str[5]];
- case 5:
- hval += asso_values[(unsigned char)str[4]];
- case 4:
- hval += asso_values[(unsigned char)str[3]];
- case 3:
- hval += asso_values[(unsigned char)str[2]];
- case 2:
- hval += asso_values[(unsigned char)str[1]];
- case 1:
- hval += asso_values[(unsigned char)str[0]];
- break;
- }
- return hval + asso_values[(unsigned char)str[len - 1]];
-}
-
-#ifdef __GNUC__
-__inline
-#endif
-const char *
-libc_name_p (str, len)
- register const char *str;
- register unsigned int len;
-{
- enum
- {
- TOTAL_KEYWORDS = 207,
- MIN_WORD_LENGTH = 3,
- MAX_WORD_LENGTH = 10,
- MIN_HASH_VALUE = 18,
- MAX_HASH_VALUE = 1037
- };
-
- static const char * const wordlist[] =
- {
- "gets",
- "puts",
- "sqrt",
- "strerror",
- "strstr",
- "strspn",
- "exp",
- "free",
- "fgets",
- "fputs",
- "fgetws",
- "fputws",
- "pow",
- "fseek",
- "perror",
- "strtod",
- "toupper",
- "towupper",
- "frexp",
- "strtok",
- "fsetpos",
- "ferror",
- "freopen",
- "fgetpos",
- "fopen",
- "wmemset",
- "memset",
- "system",
- "wcsstr",
- "wctype",
- "strxfrm",
- "wcsspn",
- "strcspn",
- "fmod",
- "strcpy",
- "strncpy",
- "strlen",
- "ungetwc",
- "feof",
- "ldexp",
- "isupper",
- "rewind",
- "iswupper",
- "sin",
- "cos",
- "modf",
- "iswpunct",
- "wcstod",
- "log10",
- "log",
- "wcsrtombs",
- "strcmp",
- "fwide",
- "towctrans",
- "strncmp",
- "strtoul",
- "fwrite",
- "exit",
- "swprintf",
- "wcstok",
- "strftime",
- "sprintf",
- "wprintf",
- "strpbrk",
- "time",
- "rand",
- "srand",
- "wmemmove",
- "tan",
- "tolower",
- "fwprintf",
- "towlower",
- "wcstombs",
- "printf",
- "fprintf",
- "strchr",
- "strrchr",
- "wmemcpy",
- "fread",
- "getwchar",
- "putwchar",
- "longjmp",
- "memcpy",
- "wcsxfrm",
- "wcscspn",
- "getc",
- "putc",
- "getwc",
- "putwc",
- "wcscpy",
- "wcsncpy",
- "wcslen",
- "floor",
- "setbuf",
- "ungetc",
- "rename",
- "remove",
- "gmtime",
- "mktime",
- "fgetc",
- "fputc",
- "fgetwc",
- "fputwc",
- "memcmp",
- "iswctype",
- "wmemcmp",
- "ispunct",
- "mbstowcs",
- "wcscmp",
- "mbsrtowcs",
- "setlocale",
- "wcsncmp",
- "wcstoul",
- "strtol",
- "wcsftime",
- "iswprint",
- "wcspbrk",
- "iswdigit",
- "isprint",
- "fclose",
- "atof",
- "islower",
- "iswlower",
- "ctime",
- "wmemchr",
- "memchr",
- "wctrans",
- "strcat",
- "getenv",
- "strncat",
- "iswxdigit",
- "wcschr",
- "wcsrchr",
- "isxdigit",
- "vswprintf",
- "raise",
- "iswspace",
- "vsprintf",
- "vwprintf",
- "vprintf",
- "swscanf",
- "sinh",
- "tmpfile",
- "asin",
- "mblen",
- "acos",
- "mbrlen",
- "cosh",
- "difftime",
- "memmove",
- "abs",
- "tmpnam",
- "vfwprintf",
- "setvbuf",
- "vfprintf",
- "scanf",
- "sscanf",
- "wscanf",
- "fwscanf",
- "ftell",
- "fflush",
- "atexit",
- "iswcntrl",
- "iscntrl",
- "mbrtowc",
- "wcrtomb",
- "fabs",
- "wcstol",
- "strcoll",
- "atan2",
- "tanh",
- "atan",
- "fscanf",
- "clock",
- "getchar",
- "putchar",
- "abort",
- "clearerr",
- "wcscat",
- "wcsncat",
- "isdigit",
- "isgraph",
- "iswgraph",
- "btowc",
- "div",
- "isspace",
- "atol",
- "labs",
- "ceil",
- "mbtowc",
- "wcscoll",
- "wctob",
- "asctime",
- "iswalnum",
- "isalnum",
- "mbsinit",
- "atoi",
- "wctomb",
- "ldiv",
- "signal",
- "realloc",
- "localtime",
- "iswalpha",
- "localeconv",
- "isalpha",
- "malloc",
- "calloc"
- };
-
- static const short lookup[] =
- {
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 0, 1, -1, 2, -1, -1,
- -1, -1, -1, 3, -1, 4, -1, -1,
- -1, -1, 5, -1, -1, -1, -1, -1,
- -1, -1, -1, 6, -1, -1, -1, 7,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 8, 9, 10, 11, -1,
- -1, 12, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 13, -1, -1, 14, -1,
- -1, -1, -1, 15, -1, 16, -1, 17,
- 18, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 19, 20, -1, -1, -1, 21, 22,
- -1, 23, -1, 24, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 25, -1, -1,
- -1, -1, 26, 27, -1, -1, -1, -1,
- -1, -1, -1, -1, 28, -1, 29, 30,
- -1, 31, 32, 33, -1, -1, -1, -1,
- 34, -1, 35, -1, 36, -1, -1, 37,
- 38, -1, -1, -1, -1, -1, -1, 39,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 40, 41, 42, 43, -1, 44,
- -1, -1, -1, 45, -1, -1, -1, -1,
- -1, 46, 47, 48, -1, -1, -1, 49,
- 50, -1, -1, 51, -1, -1, 52, 53,
- -1, -1, -1, -1, -1, 54, 55, -1,
- -1, 56, 57, -1, -1, 58, -1, -1,
- 59, 60, 61, 62, -1, 63, -1, -1,
- -1, -1, -1, -1, -1, -1, 64, 65,
- 66, -1, -1, -1, -1, -1, 67, -1,
- -1, -1, -1, 68, -1, -1, -1, -1,
- -1, -1, -1, -1, 69, 70, 71, 72,
- -1, 73, 74, -1, 75, 76, 77, 78,
- 79, 80, 81, -1, 82, -1, 83, -1,
- -1, 84, 85, 86, 87, 88, -1, 89,
- -1, 90, -1, 91, -1, 92, -1, 93,
- -1, -1, -1, -1, -1, 94, -1, -1,
- -1, -1, -1, -1, 95, 96, -1, -1,
- -1, -1, 97, -1, -1, -1, -1, -1,
- -1, -1, 98, 99, 100, 101, 102, 103,
- 104, 105, -1, -1, -1, -1, -1, 106,
- -1, 107, 108, -1, 109, -1, 110, -1,
- -1, -1, -1, -1, 111, 112, -1, 113,
- -1, -1, -1, -1, -1, -1, -1, -1,
- 114, -1, -1, 115, 116, -1, -1, 117,
- -1, -1, 118, -1, 119, -1, 120, -1,
- -1, 121, -1, 122, -1, -1, -1, 123,
- -1, -1, -1, -1, -1, -1, -1, 124,
- 125, -1, 126, -1, -1, 127, -1, 128,
- 129, 130, -1, 131, 132, -1, 133, -1,
- -1, -1, 134, -1, -1, -1, -1, 135,
- 136, 137, 138, -1, -1, -1, -1, 139,
- 140, 141, -1, 142, -1, 143, 144, 145,
- -1, -1, 146, -1, 147, -1, -1, 148,
- -1, 149, -1, -1, 150, -1, 151, -1,
- -1, -1, 152, -1, -1, 153, -1, -1,
- -1, 154, -1, -1, -1, 155, 156, 157,
- 158, -1, 159, -1, 160, -1, -1, -1,
- -1, -1, 161, 162, 163, -1, -1, -1,
- -1, -1, -1, -719, -1, 166, 167, -43,
- -2, 168, -1, 169, -1, -1, -1, 170,
- -1, -1, -1, 171, -1, -1, 172, -1,
- -1, 173, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 174, 175, -1,
- -1, -1, -1, 176, -1, -1, -1, 177,
- -1, -1, -1, -1, 178, -1, -1, 179,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 180, 181, -1,
- 182, -1, -1, 183, -1, 184, 185, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 186, -1, -1, -1, -1, 187,
- -1, -1, -1, -1, -1, -1, -1, -1,
- 188, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 189,
- 190, -1, -1, -1, -1, 191, -1, -1,
- 192, -1, -1, -1, -1, -1, 193, -1,
- -1, -1, -1, -1, 194, -1, -1, -1,
- -1, -1, -1, -1, 195, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 196, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 197, -1, -1, -1, -1, -1, -1,
- 198, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 199, -1, -1, -1, -1, -1, -1,
- -1, 200, -1, -1, -1, -1, -1, 201,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 202, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 203, -1,
- -1, -1, -1, -1, -1, 204, -1, -1,
- 205, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 206
- };
-
- if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
- {
- register int key = hash (str, len);
-
- if (key <= MAX_HASH_VALUE && key >= 0)
- {
- register int index = lookup[key];
-
- if (index >= 0)
- {
- register const char *s = wordlist[index];
-
- if (*str == *s && !strcmp (str + 1, s + 1))
- return s;
- }
- else if (index < -TOTAL_KEYWORDS)
- {
- register int offset = - 1 - TOTAL_KEYWORDS - index;
- register const char * const *wordptr = &wordlist[TOTAL_KEYWORDS + lookup[offset]];
- register const char * const *wordendptr = wordptr + -lookup[offset + 1];
-
- while (wordptr < wordendptr)
- {
- register const char *s = *wordptr;
-
- if (*str == *s && !strcmp (str + 1, s + 1))
- return s;
- wordptr++;
- }
- }
- }
- }
- return 0;
-}
diff --git a/contrib/gcc/cp/g++.c b/contrib/gcc/cp/g++.c
deleted file mode 100644
index f694898..0000000
--- a/contrib/gcc/cp/g++.c
+++ /dev/null
@@ -1,582 +0,0 @@
-/* G++ preliminary semantic processing for the compiler driver.
- Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
- Contributed by Brendan Kehoe (brendan@cygnus.com).
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* This program is a wrapper to the main `gcc' driver. For GNU C++,
- we need to do two special things: a) append `-lg++' in situations
- where it's appropriate, to link in libg++, and b) add `-xc++'..`-xnone'
- around file arguments named `foo.c' or `foo.i'. So, we do all of
- this semantic processing then just exec gcc with the new argument
- list.
-
- We used to do all of this in a small shell script, but many users
- found the performance of this as a shell script to be unacceptable.
- In situations where your PATH has a lot of NFS-mounted directories,
- using a script that runs sed and other things would be a nasty
- performance hit. With this program, we never search the PATH at all. */
-
-#include "config.h"
-#ifdef __STDC__
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include <stdio.h>
-#include <sys/types.h>
-#if !defined(_WIN32)
-#include <sys/file.h> /* May get R_OK, etc. on some systems. */
-#else
-#include <process.h>
-#endif
-#include <errno.h>
-
-/* Defined to the name of the compiler; if using a cross compiler, the
- Makefile should compile this file with the proper name
- (e.g., "i386-aout-gcc"). */
-#ifndef GCC_NAME
-#define GCC_NAME "gcc"
-#endif
-
-/* This bit is set if we saw a `-xfoo' language specification. */
-#define LANGSPEC (1<<1)
-/* This bit is set if they did `-lm' or `-lmath'. */
-#define MATHLIB (1<<2)
-
-#ifndef MATH_LIBRARY
-#define MATH_LIBRARY "-lm"
-#endif
-
-/* On MSDOS, write temp files in current dir
- because there's no place else we can expect to use. */
-#ifdef __MSDOS__
-#ifndef P_tmpdir
-#define P_tmpdir "."
-#endif
-#ifndef R_OK
-#define R_OK 4
-#define W_OK 2
-#define X_OK 1
-#endif
-#endif
-
-#ifndef VPROTO
-#ifdef __STDC__
-#define PVPROTO(ARGS) ARGS
-#define VPROTO(ARGS) ARGS
-#define VA_START(va_list,var) va_start(va_list,var)
-#else
-#define PVPROTO(ARGS) ()
-#define VPROTO(ARGS) (va_alist) va_dcl
-#define VA_START(va_list,var) va_start(va_list)
-#endif
-#endif
-
-#ifndef errno
-extern int errno;
-#endif
-
-extern int sys_nerr;
-#ifndef HAVE_STRERROR
-#if defined(bsd4_4)
-extern const char *const sys_errlist[];
-#else
-extern char *sys_errlist[];
-#endif
-#else
-extern char *strerror();
-#endif
-
-/* Name with which this program was invoked. */
-static char *programname;
-
-char *
-my_strerror(e)
- int e;
-{
-
-#ifdef HAVE_STRERROR
- return strerror(e);
-
-#else
-
- static char buffer[30];
- if (!e)
- return "";
-
- if (e > 0 && e < sys_nerr)
- return sys_errlist[e];
-
- sprintf (buffer, "Unknown error %d", e);
- return buffer;
-#endif
-}
-
-#ifdef HAVE_VPRINTF
-/* Output an error message and exit */
-
-static void
-fatal VPROTO((char *format, ...))
-{
-#ifndef __STDC__
- char *format;
-#endif
- va_list ap;
-
- VA_START (ap, format);
-
-#ifndef __STDC__
- format = va_arg (ap, char*);
-#endif
-
- fprintf (stderr, "%s: ", programname);
- vfprintf (stderr, format, ap);
- va_end (ap);
- fprintf (stderr, "\n");
-#if 0
- /* XXX Not needed for g++ driver. */
- delete_temp_files ();
-#endif
- exit (1);
-}
-
-static void
-error VPROTO((char *format, ...))
-{
-#ifndef __STDC__
- char *format;
-#endif
- va_list ap;
-
- VA_START (ap, format);
-
-#ifndef __STDC__
- format = va_arg (ap, char*);
-#endif
-
- fprintf (stderr, "%s: ", programname);
- vfprintf (stderr, format, ap);
- va_end (ap);
-
- fprintf (stderr, "\n");
-}
-
-#else /* not HAVE_VPRINTF */
-
-static void
-error (msg, arg1, arg2)
- char *msg, *arg1, *arg2;
-{
- fprintf (stderr, "%s: ", programname);
- fprintf (stderr, msg, arg1, arg2);
- fprintf (stderr, "\n");
-}
-
-static void
-fatal (msg, arg1, arg2)
- char *msg, *arg1, *arg2;
-{
- error (msg, arg1, arg2);
-#if 0
- /* XXX Not needed for g++ driver. */
- delete_temp_files ();
-#endif
- exit (1);
-}
-
-#endif /* not HAVE_VPRINTF */
-
-/* More 'friendly' abort that prints the line and file.
- config.h can #define abort fancy_abort if you like that sort of thing. */
-
-void
-fancy_abort ()
-{
- fatal ("Internal g++ abort.");
-}
-
-char *
-xmalloc (size)
- unsigned size;
-{
- register char *value = (char *) malloc (size);
- if (value == 0)
- fatal ("virtual memory exhausted");
- return value;
-}
-
-/* Return a newly-allocated string whose contents concatenate those
- of s1, s2, s3. */
-static char *
-concat (s1, s2, s3)
- char *s1, *s2, *s3;
-{
- int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3);
- char *result = xmalloc (len1 + len2 + len3 + 1);
-
- strcpy (result, s1);
- strcpy (result + len1, s2);
- strcpy (result + len1 + len2, s3);
- *(result + len1 + len2 + len3) = 0;
-
- return result;
-}
-
-static void
-pfatal_with_name (name)
- char *name;
-{
- fatal (concat ("%s: ", my_strerror (errno), ""), name);
-}
-
-#ifdef __MSDOS__
-/* This is the common prefix we use to make temp file names. */
-char *temp_filename;
-
-/* Length of the prefix. */
-int temp_filename_length;
-
-/* Compute a string to use as the base of all temporary file names. */
-static char *
-choose_temp_base_try (try, base)
-char *try;
-char *base;
-{
- char *rv;
- if (base)
- rv = base;
- else if (try == (char *)0)
- rv = 0;
- else if (access (try, R_OK | W_OK) != 0)
- rv = 0;
- else
- rv = try;
- return rv;
-}
-
-static void
-choose_temp_base ()
-{
- char *base = 0;
- int len;
-
- base = choose_temp_base_try (getenv ("TMPDIR"), base);
- base = choose_temp_base_try (getenv ("TMP"), base);
- base = choose_temp_base_try (getenv ("TEMP"), base);
-
-#ifdef P_tmpdir
- base = choose_temp_base_try (P_tmpdir, base);
-#endif
-
- base = choose_temp_base_try ("/usr/tmp", base);
- base = choose_temp_base_try ("/tmp", base);
-
- /* If all else fails, use the current directory! */
- if (base == (char *)0)
- base = "./";
-
- len = strlen (base);
- temp_filename = xmalloc (len + sizeof("/ccXXXXXX"));
- strcpy (temp_filename, base);
- if (len > 0 && temp_filename[len-1] != '/')
- temp_filename[len++] = '/';
- strcpy (temp_filename + len, "ccXXXXXX");
-
- mktemp (temp_filename);
- temp_filename_length = strlen (temp_filename);
- if (temp_filename_length == 0)
- abort ();
-}
-
-static void
-perror_exec (name)
- char *name;
-{
- char *s;
-
- if (errno < sys_nerr)
- s = concat ("installation problem, cannot exec %s: ",
- my_strerror( errno ), "");
- else
- s = "installation problem, cannot exec %s";
- error (s, name);
-}
-
-/* This is almost exactly what's in gcc.c:pexecute for MSDOS. */
-void
-run_dos (program, argv)
- char *program;
- char *argv[];
-{
- char *scmd, *rf;
- FILE *argfile;
- int i;
-
- choose_temp_base (); /* not in gcc.c */
-
- scmd = (char *) malloc (strlen (program) + strlen (temp_filename) + 10);
- rf = scmd + strlen (program) + 6;
- sprintf (scmd, "%s.exe @%s.gp", program, temp_filename);
-
- argfile = fopen (rf, "w");
- if (argfile == 0)
- pfatal_with_name (rf);
-
- for (i=1; argv[i]; i++)
- {
- char *cp;
- for (cp = argv[i]; *cp; cp++)
- {
- if (*cp == '"' || *cp == '\'' || *cp == '\\' || isspace (*cp))
- fputc ('\\', argfile);
- fputc (*cp, argfile);
- }
- fputc ('\n', argfile);
- }
- fclose (argfile);
-
- i = system (scmd);
-
- remove (rf);
-
- if (i == -1)
- perror_exec (program);
-}
-#endif /* __MSDOS__ */
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- register int i, j = 0;
- register char *p;
- int verbose = 0;
-
- /* This will be 0 if we encounter a situation where we should not
- link in libstdc++, or 2 if we should link in libg++ as well. */
- int library = 1;
-
- /* Used to track options that take arguments, so we don't go wrapping
- those with -xc++/-xnone. */
- char *quote = NULL;
-
- /* The new argument list will be contained in this. */
- char **arglist;
-
- /* The name of the compiler we will want to run---by default, it
- will be the definition of `GCC_NAME', e.g., `gcc'. */
- char *gcc = GCC_NAME;
-
- /* Non-zero if we saw a `-xfoo' language specification on the
- command line. Used to avoid adding our own -xc++ if the user
- already gave a language for the file. */
- int saw_speclang = 0;
-
- /* Non-zero if we saw `-lm' or `-lmath' on the command line. */
- char *saw_math = 0;
-
- /* The number of arguments being added to what's in argv, other than
- libraries. We use this to track the number of times we've inserted
- -xc++/-xnone. */
- int added = 0;
-
- /* An array used to flag each argument that needs a bit set for
- LANGSPEC or MATHLIB. */
- int *args;
-
- p = argv[0] + strlen (argv[0]);
-
- /* If we're called as g++ (or i386-aout-g++), link in libg++ as well. */
-
- if (strcmp (p - 3, "g++") == 0)
- {
- library = 2;
- }
-
- while (p != argv[0] && p[-1] != '/')
- --p;
- programname = p;
-
- if (argc == 1)
- fatal ("No input files specified.\n");
-
-#ifndef __MSDOS__
- /* We do a little magic to find out where the main gcc executable
- is. If they ran us as /usr/local/bin/g++, then we will look
- for /usr/local/bin/gcc; similarly, if they just ran us as `g++',
- we'll just look for `gcc'. */
- if (p != argv[0])
- {
- *--p = '\0';
- gcc = (char *) malloc ((strlen (argv[0]) + 1 + strlen (GCC_NAME) + 1)
- * sizeof (char));
- sprintf (gcc, "%s/%s", argv[0], GCC_NAME);
- }
-#endif
-
- args = (int *) malloc (argc * sizeof (int));
- bzero ((char *) args, argc * sizeof (int));
-
- for (i = 1; i < argc; i++)
- {
- /* If the previous option took an argument, we swallow it here. */
- if (quote)
- {
- quote = NULL;
- continue;
- }
-
- if (argv[i][0] == '\0' || argv[i][1] == '\0')
- continue;
-
- if (argv[i][0] == '-')
- {
- if (library != 0 && strcmp (argv[i], "-nostdlib") == 0)
- {
- library = 0;
- }
- else if (strcmp (argv[i], "-lm") == 0
- || strcmp (argv[i], "-lmath") == 0)
- args[i] |= MATHLIB;
- else if (strcmp (argv[i], "-v") == 0)
- {
- verbose = 1;
- if (argc == 2)
- {
- /* If they only gave us `-v', don't try to link
- in libg++. */
- library = 0;
- }
- }
- else if (strncmp (argv[i], "-x", 2) == 0)
- saw_speclang = 1;
- else if (((argv[i][2] == '\0'
- && (char *)strchr ("bBVDUoeTuIYmLiA", argv[i][1]) != NULL)
- || strcmp (argv[i], "-Tdata") == 0))
- quote = argv[i];
- else if (library != 0 && ((argv[i][2] == '\0'
- && (char *) strchr ("cSEM", argv[i][1]) != NULL)
- || strcmp (argv[i], "-MM") == 0))
- {
- /* Don't specify libraries if we won't link, since that would
- cause a warning. */
- library = 0;
- }
- else
- /* Pass other options through. */
- continue;
- }
- else
- {
- int len;
-
- if (saw_speclang)
- {
- saw_speclang = 0;
- continue;
- }
-
- /* If the filename ends in .c or .i, put options around it.
- But not if a specified -x option is currently active. */
- len = strlen (argv[i]);
- if (len > 2
- && (argv[i][len - 1] == 'c' || argv[i][len - 1] == 'i')
- && argv[i][len - 2] == '.')
- {
- args[i] |= LANGSPEC;
- added += 2;
- }
- }
- }
-
- if (quote)
- fatal ("argument to `%s' missing\n", quote);
-
- if (added || library)
- {
- arglist = (char **) malloc ((argc + added + 4) * sizeof (char *));
-
- for (i = 1, j = 1; i < argc; i++, j++)
- {
- arglist[j] = argv[i];
-
- /* Make sure -lg++ is before the math library, since libg++
- itself uses those math routines. */
- if (!saw_math && (args[i] & MATHLIB) && library)
- {
- --j;
- saw_math = argv[i];
- }
-
- /* Wrap foo.c and foo.i files in a language specification to
- force the gcc compiler driver to run cc1plus on them. */
- if (args[i] & LANGSPEC)
- {
- int len = strlen (argv[i]);
- if (argv[i][len - 1] == 'i')
- arglist[j++] = "-xc++-cpp-output";
- else
- arglist[j++] = "-xc++";
- arglist[j++] = argv[i];
- arglist[j] = "-xnone";
- }
- }
-
- /* Add `-lg++' if we haven't already done so. */
- if (library == 2)
- arglist[j++] = "-lg++";
- if (library)
- arglist[j++] = "-lstdc++";
- if (saw_math)
- arglist[j++] = saw_math;
- else if (library)
- arglist[j++] = MATH_LIBRARY;
-
- arglist[j] = NULL;
- }
- else
- /* No need to copy 'em all. */
- arglist = argv;
-
- arglist[0] = gcc;
-
- if (verbose)
- {
- if (j == 0)
- j = argc;
-
- for (i = 0; i < j; i++)
- fprintf (stderr, " %s", arglist[i]);
- fprintf (stderr, "\n");
- }
-#if !defined(OS2) && !defined (_WIN32)
-#ifdef __MSDOS__
- run_dos (gcc, arglist);
-#else /* !__MSDOS__ */
- if (execvp (gcc, arglist) < 0)
- pfatal_with_name (gcc);
-#endif /* __MSDOS__ */
-#else /* OS2 or _WIN32 */
- if (spawnvp (1, gcc, arglist) < 0)
- pfatal_with_name (gcc);
-#endif
-
- return 0;
-}
diff --git a/contrib/gcc/cp/lang-options.h b/contrib/gcc/cp/lang-options.h
deleted file mode 100644
index d4748be..0000000
--- a/contrib/gcc/cp/lang-options.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/* Definitions for switches for C++.
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000
- Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-DEFINE_LANG_NAME ("C++")
-
-/* This is the contribution to the `documented_lang_options' array in
- toplev.c for g++. */
-
- { "-faccess-control", "" },
- { "-fno-access-control",
- N_("Do not obey access control semantics") },
- { "-falt-external-templates",
- N_("Change when template instances are emitted") },
- { "-fno-alt-external-templates", "" },
- { "-fansi-overloading", "" },
- { "-fno-ansi-overloading", "" },
- { "-fcheck-new",
- N_("Check the return value of new") },
- { "-fno-check-new", "" },
- { "-fconserve-space",
- N_("Reduce size of object files") },
- { "-fno-conserve-space", "" },
- { "-fconst-strings", "" },
- { "-fno-const-strings",
- N_("Make string literals `char[]' instead of `const char[]'") },
- { "-fdefault-inline", "" },
- { "-fdump-translation-unit-",
- N_("Dump the entire translation unit to a file") },
- { "-fno-default-inline",
- N_("Do not inline member functions by default") },
- { "-frtti", "" },
- { "-fno-rtti",
- N_("Do not generate run time type descriptor information") },
- { "-felide-constructors", "" },
- { "-fno-elide-constructors", "" },
- { "-fenforce-eh-specs", "" },
- { "-fno-enforce-eh-specs",
- N_("Do not generate code to check exception specifications") },
- { "-fexternal-templates", "" },
- { "-fno-external-templates", "" },
- { "-ffor-scope", "" },
- { "-fno-for-scope",
- N_("Scope of for-init-statement vars extends outside") },
- { "-fgnu-keywords", "" },
- { "-fno-gnu-keywords",
- N_("Do not recognize GNU defined keywords") },
- { "-fhandle-exceptions", "" },
- { "-fno-handle-exceptions", "" },
- { "-fhuge-objects",
- N_("Enable support for huge objects") },
- { "-fno-huge-objects", "" },
- { "-fimplement-inlines", "" },
- { "-fno-implement-inlines",
- N_("Export functions even if they can be inlined") },
- { "-fimplicit-templates", "" },
- { "-fno-implicit-templates",
- N_("Only emit explicit template instantiations") },
- { "-fimplicit-inline-templates", "" },
- { "-fno-implicit-inline-templates",
- N_("Only emit explicit instantiations of inline templates") },
- { "-finit-priority", "" },
- { "-fno-init-priority", "" },
- { "-fmemoize-lookups", "" },
- { "-fno-memoize-lookups", "" },
- { "-fms-extensions",
- N_("Don't pedwarn about uses of Microsoft extensions") },
- { "-fno-ms-extensions", "" },
- { "-foperator-names",
- N_("Recognize and/bitand/bitor/compl/not/or/xor") },
- { "-fno-operator-names", "" },
- { "-foptional-diags", "" },
- { "-fno-optional-diags",
- N_("Disable optional diagnostics") },
- { "-fpermissive",
- N_("Downgrade conformance errors to warnings") },
- { "-fno-permissive", "" },
- { "-frepo",
- N_("Enable automatic template instantiation") },
- { "-fno-repo", "" },
- { "-fsave-memoized", "" },
- { "-fno-save-memoized", "" },
- { "-fstats",
- N_("Display statistics accumulated during compilation") },
- { "-fno-stats", "" },
- { "-ftemplate-depth-",
- N_("Specify maximum template instantiation depth") },
- { "-fuse-cxa-atexit",
- N_("Use __cxa_atexit to register destructors") },
- { "-fno-use-cxa-atexit", "" },
- { "-fvtable-gc",
- N_("Discard unused virtual functions") },
- { "-fno-vtable-gc", "" },
- { "-fvtable-thunks",
- N_("Implement vtables using thunks") },
- { "-fno-vtable-thunks", "" },
- { "-fweak",
- N_("Emit common-like symbols as weak symbols") },
- { "-fno-weak", "" },
- { "-fxref",
- N_("Emit cross referencing information") },
- { "-fno-xref", "" },
-
- { "-Wreturn-type",
- N_("Warn about inconsistent return types") },
- { "-Wno-return-type", "" },
- { "-Woverloaded-virtual",
- N_("Warn about overloaded virtual function names") },
- { "-Wno-overloaded-virtual", "" },
- { "-Wctor-dtor-privacy", "" },
- { "-Wno-ctor-dtor-privacy",
- N_("Don't warn when all ctors/dtors are private") },
- { "-Wnon-virtual-dtor",
- N_("Warn about non virtual destructors") },
- { "-Wno-non-virtual-dtor", "" },
- { "-Wextern-inline",
- N_("Warn when a function is declared extern, then inline") },
- { "-Wno-extern-inline", "" },
- { "-Wreorder",
- N_("Warn when the compiler reorders code") },
- { "-Wno-reorder", "" },
- { "-Wsynth",
- N_("Warn when synthesis behavior differs from Cfront") },
- { "-Wno-synth", "" },
- { "-Wpmf-conversions", "" },
- { "-Wno-pmf-conversions",
- N_("Don't warn when type converting pointers to member functions") },
- { "-Weffc++",
- N_("Warn about violations of Effective C++ style rules") },
- { "-Wno-effc++", "" },
- { "-Wsign-promo",
- N_("Warn when overload promotes from unsigned to signed") },
- { "-Wno-sign-promo", "" },
- { "-Wold-style-cast",
- N_("Warn if a C style cast is used in a program") },
- { "-Wno-old-style-cast", "" },
- { "-Wnon-template-friend", "" },
- { "-Wno-non-template-friend",
- N_("Don't warn when non-templatized friend functions are declared within a template") },
- { "-Wdeprecated", "" },
- { "-Wno-deprecated",
- N_("Don't announce deprecation of compiler features") },
diff --git a/contrib/gcc/cp/parse.y b/contrib/gcc/cp/parse.y
deleted file mode 100644
index 157a210..0000000
--- a/contrib/gcc/cp/parse.y
+++ /dev/null
@@ -1,4237 +0,0 @@
-/* YACC parser for C++ syntax.
- Copyright (C) 1988, 1989, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
- Hacked by Michael Tiemann (tiemann@cygnus.com)
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-
-/* This grammar is based on the GNU CC grammar. */
-
-/* Note: Bison automatically applies a default action of "$$ = $1" for
- all derivations; this is applied before the explicit action, if one
- is given. Keep this in mind when reading the actions. */
-
-%{
-#include "config.h"
-
-#include "system.h"
-
-#include "tree.h"
-#include "input.h"
-#include "flags.h"
-#include "cp-tree.h"
-#include "decl.h"
-#include "lex.h"
-#include "c-pragma.h" /* For YYDEBUG definition. */
-#include "output.h"
-#include "except.h"
-#include "toplev.h"
-#include "ggc.h"
-
-/* Like YYERROR but do call yyerror. */
-#define YYERROR1 { yyerror ("syntax error"); YYERROR; }
-
-/* Like the default stack expander, except (1) use realloc when possible,
- (2) impose no hard maxiumum on stack size, (3) REALLY do not use alloca.
-
- Irritatingly, YYSTYPE is defined after this %{ %} block, so we cannot
- give malloced_yyvs its proper type. This is ok since all we need from
- it is to be able to free it. */
-
-static short *malloced_yyss;
-static void *malloced_yyvs;
-static int class_template_ok_as_expr;
-
-#define yyoverflow(MSG, SS, SSSIZE, VS, VSSIZE, YYSSZ) \
-do { \
- size_t newsize; \
- short *newss; \
- YYSTYPE *newvs; \
- newsize = *(YYSSZ) *= 2; \
- if (malloced_yyss) \
- { \
- newss = (short *) \
- really_call_realloc (*(SS), newsize * sizeof (short)); \
- newvs = (YYSTYPE *) \
- really_call_realloc (*(VS), newsize * sizeof (YYSTYPE)); \
- } \
- else \
- { \
- newss = (short *) really_call_malloc (newsize * sizeof (short)); \
- newvs = (YYSTYPE *) really_call_malloc (newsize * sizeof (YYSTYPE)); \
- if (newss) \
- memcpy (newss, *(SS), (SSSIZE)); \
- if (newvs) \
- memcpy (newvs, *(VS), (VSSIZE)); \
- } \
- if (!newss || !newvs) \
- { \
- yyerror (MSG); \
- return 2; \
- } \
- *(SS) = newss; \
- *(VS) = newvs; \
- malloced_yyss = newss; \
- malloced_yyvs = (void *) newvs; \
-} while (0)
-#define OP0(NODE) (TREE_OPERAND (NODE, 0))
-#define OP1(NODE) (TREE_OPERAND (NODE, 1))
-
-/* Contains the statement keyword (if/while/do) to include in an
- error message if the user supplies an empty conditional expression. */
-static const char *cond_stmt_keyword;
-
-/* List of types and structure classes of the current declaration. */
-static GTY(()) tree current_declspecs;
-
-/* List of prefix attributes in effect.
- Prefix attributes are parsed by the reserved_declspecs and declmods
- rules. They create a list that contains *both* declspecs and attrs. */
-/* ??? It is not clear yet that all cases where an attribute can now appear in
- a declspec list have been updated. */
-static GTY(()) tree prefix_attributes;
-
-/* When defining an enumeration, this is the type of the enumeration. */
-static GTY(()) tree current_enum_type;
-
-/* When parsing a conversion operator name, this is the scope of the
- operator itself. */
-static GTY(()) tree saved_scopes;
-
-static tree empty_parms PARAMS ((void));
-static tree parse_decl0 PARAMS ((tree, tree, tree, tree, int));
-static tree parse_decl PARAMS ((tree, tree, int));
-static void parse_end_decl PARAMS ((tree, tree, tree));
-static tree parse_field0 PARAMS ((tree, tree, tree, tree, tree, tree));
-static tree parse_field PARAMS ((tree, tree, tree, tree));
-static tree parse_bitfield0 PARAMS ((tree, tree, tree, tree, tree));
-static tree parse_bitfield PARAMS ((tree, tree, tree));
-static tree parse_method PARAMS ((tree, tree, tree));
-static void frob_specs PARAMS ((tree, tree));
-static void check_class_key PARAMS ((tree, tree));
-static tree parse_scoped_id PARAMS ((tree));
-static tree parse_xref_tag (tree, tree, int);
-static tree parse_handle_class_head (tree, tree, tree, int, int *);
-static void parse_decl_instantiation (tree, tree, tree);
-static int parse_begin_function_definition (tree, tree);
-static tree parse_finish_call_expr (tree, tree, int);
-
-/* Cons up an empty parameter list. */
-static inline tree
-empty_parms ()
-{
- tree parms;
-
-#ifndef NO_IMPLICIT_EXTERN_C
- if (in_system_header && current_class_type == NULL
- && current_lang_name == lang_name_c)
- parms = NULL_TREE;
- else
-#endif
- parms = void_list_node;
- return parms;
-}
-
-/* Record the decl-specifiers, attributes and type lookups from the
- decl-specifier-seq in a declaration. */
-
-static void
-frob_specs (specs_attrs, lookups)
- tree specs_attrs, lookups;
-{
- save_type_access_control (lookups);
- split_specs_attrs (specs_attrs, &current_declspecs, &prefix_attributes);
- if (current_declspecs
- && TREE_CODE (current_declspecs) != TREE_LIST)
- current_declspecs = build_tree_list (NULL_TREE, current_declspecs);
- if (have_extern_spec)
- {
- /* We have to indicate that there is an "extern", but that it
- was part of a language specifier. For instance,
-
- extern "C" typedef int (*Ptr) ();
-
- is well formed. */
- current_declspecs = tree_cons (error_mark_node,
- get_identifier ("extern"),
- current_declspecs);
- have_extern_spec = false;
- }
-}
-
-static tree
-parse_decl (declarator, attributes, initialized)
- tree declarator, attributes;
- int initialized;
-{
- return start_decl (declarator, current_declspecs, initialized,
- attributes, prefix_attributes);
-}
-
-static tree
-parse_decl0 (declarator, specs_attrs, lookups, attributes, initialized)
- tree declarator, specs_attrs, lookups, attributes;
- int initialized;
-{
- frob_specs (specs_attrs, lookups);
- return parse_decl (declarator, attributes, initialized);
-}
-
-static void
-parse_end_decl (decl, init, asmspec)
- tree decl, init, asmspec;
-{
- /* If decl is NULL_TREE, then this was a variable declaration using
- () syntax for the initializer, so we handled it in grokdeclarator. */
- if (decl)
- decl_type_access_control (decl);
- cp_finish_decl (decl, init, asmspec, init ? LOOKUP_ONLYCONVERTING : 0);
-}
-
-static tree
-parse_field (declarator, attributes, asmspec, init)
- tree declarator, attributes, asmspec, init;
-{
- tree d = grokfield (declarator, current_declspecs, init, asmspec,
- chainon (attributes, prefix_attributes));
- decl_type_access_control (d);
- return d;
-}
-
-static tree
-parse_field0 (declarator, specs_attrs, lookups, attributes, asmspec, init)
- tree declarator, specs_attrs, lookups, attributes, asmspec, init;
-{
- frob_specs (specs_attrs, lookups);
- return parse_field (declarator, attributes, asmspec, init);
-}
-
-static tree
-parse_bitfield (declarator, attributes, width)
- tree declarator, attributes, width;
-{
- tree d = grokbitfield (declarator, current_declspecs, width);
- cplus_decl_attributes (&d, chainon (attributes, prefix_attributes), 0);
- decl_type_access_control (d);
- return d;
-}
-
-static tree
-parse_bitfield0 (declarator, specs_attrs, lookups, attributes, width)
- tree declarator, specs_attrs, lookups, attributes, width;
-{
- frob_specs (specs_attrs, lookups);
- return parse_bitfield (declarator, attributes, width);
-}
-
-static tree
-parse_method (declarator, specs_attrs, lookups)
- tree declarator, specs_attrs, lookups;
-{
- tree d;
- frob_specs (specs_attrs, lookups);
- d = start_method (current_declspecs, declarator, prefix_attributes);
- decl_type_access_control (d);
- return d;
-}
-
-static void
-check_class_key (key, aggr)
- tree key;
- tree aggr;
-{
- if (TREE_CODE (key) == TREE_LIST)
- key = TREE_VALUE (key);
- if ((key == union_type_node) != (TREE_CODE (aggr) == UNION_TYPE))
- pedwarn ("`%s' tag used in naming `%#T'",
- key == union_type_node ? "union"
- : key == record_type_node ? "struct" : "class", aggr);
-}
-
-%}
-
-%start program
-
-%union { GTY(())
- long itype;
- tree ttype;
- char *strtype;
- enum tree_code code;
- flagged_type_tree ftype;
- struct unparsed_text *pi;
-}
-
-/* All identifiers that are not reserved words
- and are not declared typedefs in the current block */
-%token IDENTIFIER
-
-/* All identifiers that are declared typedefs in the current block.
- In some contexts, they are treated just like IDENTIFIER,
- but they can also serve as typespecs in declarations. */
-%token tTYPENAME
-%token SELFNAME
-
-/* A template function. */
-%token PFUNCNAME
-
-/* Reserved words that specify storage class.
- yylval contains an IDENTIFIER_NODE which indicates which one. */
-%token SCSPEC
-
-/* Reserved words that specify type.
- yylval contains an IDENTIFIER_NODE which indicates which one. */
-%token TYPESPEC
-
-/* Reserved words that qualify type: "const" or "volatile".
- yylval contains an IDENTIFIER_NODE which indicates which one. */
-%token CV_QUALIFIER
-
-/* Character or numeric constants.
- yylval is the node for the constant. */
-%token CONSTANT
-
-/* __func__, __FUNCTION__ or __PRETTY_FUNCTION__.
- yylval contains an IDENTIFIER_NODE which indicates which one. */
-%token <ttype> VAR_FUNC_NAME
-
-/* String constants in raw form.
- yylval is a STRING_CST node. */
-%token STRING
-
-/* "...", used for functions with variable arglists. */
-%token ELLIPSIS
-
-/* the reserved words */
-/* SCO include files test "ASM", so use something else. */
-%token SIZEOF ENUM /* STRUCT UNION */ IF ELSE WHILE DO FOR SWITCH CASE DEFAULT
-%token BREAK CONTINUE RETURN_KEYWORD GOTO ASM_KEYWORD TYPEOF ALIGNOF
-%token SIGOF
-%token ATTRIBUTE EXTENSION LABEL
-%token REALPART IMAGPART VA_ARG
-
-/* the reserved words... C++ extensions */
-%token <ttype> AGGR
-%token <ttype> VISSPEC
-%token DELETE NEW THIS OPERATOR CXX_TRUE CXX_FALSE
-%token NAMESPACE TYPENAME_KEYWORD USING
-%token LEFT_RIGHT TEMPLATE
-%token TYPEID DYNAMIC_CAST STATIC_CAST REINTERPRET_CAST CONST_CAST
-%token SCOPE EXPORT
-
-/* Define the operator tokens and their precedences.
- The value is an integer because, if used, it is the tree code
- to use in the expression made from the operator. */
-
-%left EMPTY /* used to resolve s/r with epsilon */
-
-%left error
-
-/* Add precedence rules to solve dangling else s/r conflict */
-%nonassoc IF
-%nonassoc ELSE
-
-%left IDENTIFIER PFUNCNAME tTYPENAME SELFNAME PTYPENAME SCSPEC TYPESPEC CV_QUALIFIER ENUM AGGR ELLIPSIS TYPEOF SIGOF OPERATOR NSNAME TYPENAME_KEYWORD ATTRIBUTE
-
-%left '{' ',' ';'
-
-%nonassoc THROW
-%right <code> ':'
-%right <code> ASSIGN '='
-%right <code> '?'
-%left <code> OROR
-%left <code> ANDAND
-%left <code> '|'
-%left <code> '^'
-%left <code> '&'
-%left <code> MIN_MAX
-%left <code> EQCOMPARE
-%left <code> ARITHCOMPARE '<' '>'
-%left <code> LSHIFT RSHIFT
-%left <code> '+' '-'
-%left <code> '*' '/' '%'
-%left <code> POINTSAT_STAR DOT_STAR
-%right <code> UNARY PLUSPLUS MINUSMINUS '~'
-%left HYPERUNARY
-%left <ttype> LEFT_RIGHT
-%left <code> POINTSAT '.' '(' '['
-
-%right SCOPE /* C++ extension */
-%nonassoc NEW DELETE TRY CATCH
-
-%type <code> unop
-
-%type <ttype> identifier IDENTIFIER tTYPENAME CONSTANT expr nonnull_exprlist
-%type <ttype> PFUNCNAME maybe_identifier
-%type <ttype> paren_expr_or_null nontrivial_exprlist SELFNAME
-%type <ttype> expr_no_commas expr_no_comma_rangle
-%type <ttype> cast_expr unary_expr primary STRING
-%type <ttype> reserved_declspecs boolean_literal
-%type <ttype> reserved_typespecquals
-%type <ttype> SCSPEC TYPESPEC CV_QUALIFIER maybe_cv_qualifier
-%type <ttype> init initlist maybeasm maybe_init defarg defarg1
-%type <ttype> asm_operands nonnull_asm_operands asm_operand asm_clobbers
-%type <ttype> maybe_attribute attributes attribute attribute_list attrib
-%type <ttype> any_word unoperator
-
-%type <itype> save_lineno
-%type <ttype> simple_stmt simple_if
-
-%type <ttype> declarator notype_declarator after_type_declarator
-%type <ttype> notype_declarator_intern absdcl_intern
-%type <ttype> after_type_declarator_intern
-%type <ttype> direct_notype_declarator direct_after_type_declarator
-%type <itype> components notype_components
-%type <ttype> component_decl component_decl_1
-%type <ttype> component_declarator component_declarator0
-%type <ttype> notype_component_declarator notype_component_declarator0
-%type <ttype> after_type_component_declarator after_type_component_declarator0
-%type <ttype> absdcl cv_qualifiers
-%type <ttype> direct_abstract_declarator conversion_declarator
-%type <ttype> new_declarator direct_new_declarator
-%type <ttype> xexpr parmlist parms bad_parm
-%type <ttype> identifiers_or_typenames
-%type <ttype> fcast_or_absdcl regcast_or_absdcl
-%type <ttype> expr_or_declarator expr_or_declarator_intern
-%type <ttype> complex_notype_declarator
-%type <ttype> notype_unqualified_id unqualified_id qualified_id
-%type <ttype> template_id do_id object_template_id notype_template_declarator
-%type <ttype> overqualified_id notype_qualified_id any_id
-%type <ttype> complex_direct_notype_declarator functional_cast
-%type <ttype> complex_parmlist parms_comma
-%type <ttype> namespace_qualifier namespace_using_decl
-
-%type <ftype> type_id new_type_id typed_typespecs typespec typed_declspecs
-%type <ftype> typed_declspecs1 type_specifier_seq nonempty_cv_qualifiers
-%type <ftype> structsp typespecqual_reserved parm named_parm full_parm
-%type <ftype> declmods
-
-%type <itype> extension
-
-/* C++ extensions */
-%token <ttype> PTYPENAME
-%token <ttype> EXTERN_LANG_STRING ALL
-%token <ttype> PRE_PARSED_CLASS_DECL DEFARG DEFARG_MARKER
-%token <pi> PRE_PARSED_FUNCTION_DECL
-%type <ttype> component_constructor_declarator
-%type <ttype> fn_def2 return_id constructor_declarator
-%type <ttype> begin_function_body_
-%type <ttype> class_head class_head_apparent_template
-%type <ftype> class_head_decl class_head_defn
-%type <ttype> base_class_list
-%type <ttype> base_class_access_list
-%type <ttype> base_class maybe_base_class_list base_class_1
-%type <ttype> exception_specification_opt ansi_raise_identifier ansi_raise_identifiers
-%type <ttype> operator_name
-%type <ttype> object aggr
-%type <itype> new delete
-/* %type <ttype> primary_no_id */
-%type <ttype> maybe_parmlist
-%type <ttype> begin_member_init member_init
-%type <ftype> member_init_list
-%type <ttype> template_parm_header template_spec_header template_header
-%type <ttype> template_parm_list template_parm
-%type <ttype> template_type_parm template_template_parm
-%type <code> template_close_bracket
-%type <ttype> apparent_template_type
-%type <ttype> template_type template_arg_list template_arg_list_opt
-%type <ttype> template_arg template_arg_1
-%type <ttype> condition xcond paren_cond_or_null
-%type <ttype> type_name nested_name_specifier nested_type ptr_to_mem
-%type <ttype> complete_type_name notype_identifier nonnested_type
-%type <ttype> complex_type_name nested_name_specifier_1
-%type <ttype> new_initializer new_placement
-%type <ttype> using_decl
-%type <ttype> typename_sub typename_sub0 typename_sub1 typename_sub2
-%type <ttype> explicit_template_type
-/* in order to recognize aggr tags as defining and thus shadowing. */
-%token TYPENAME_DEFN IDENTIFIER_DEFN PTYPENAME_DEFN
-%type <ttype> identifier_defn IDENTIFIER_DEFN TYPENAME_DEFN PTYPENAME_DEFN
-%type <ttype> handler_args
-%type <ttype> self_template_type finish_template_type_
-
-%token NSNAME
-%type <ttype> NSNAME
-
-/* Used in lex.c for parsing pragmas. */
-%token END_OF_LINE
-
-/* lex.c and pt.c depend on this being the last token. Define
- any new tokens before this one! */
-%token END_OF_SAVED_INPUT
-
-%{
-/* Tell yyparse how to print a token's value, if yydebug is set. */
-#define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)
-extern void yyprint PARAMS ((FILE *, int, YYSTYPE));
-%}
-
-%%
-program:
- /* empty */
- { finish_translation_unit (); }
- | extdefs
- { finish_translation_unit (); }
- ;
-
-/* the reason for the strange actions in this rule
- is so that notype_initdecls when reached via datadef
- can find a valid list of type and sc specs in $0. */
-
-extdefs:
- { $<ttype>$ = NULL_TREE; }
- lang_extdef
- { $<ttype>$ = NULL_TREE; ggc_collect (); }
- | extdefs lang_extdef
- { $<ttype>$ = NULL_TREE; ggc_collect (); }
- ;
-
-extdefs_opt:
- extdefs
- | /* empty */
- ;
-
-.hush_warning:
- { have_extern_spec = true;
- $<ttype>$ = NULL_TREE; }
- ;
-.warning_ok:
- { have_extern_spec = false; }
- ;
-
-extension:
- EXTENSION
- { $$ = pedantic;
- pedantic = 0; }
- ;
-
-asm_keyword:
- ASM_KEYWORD
- ;
-
-lang_extdef:
- { if (pending_lang_change) do_pending_lang_change();
- type_lookups = NULL_TREE; }
- extdef
- { if (! toplevel_bindings_p ())
- pop_everything (); }
- ;
-
-extdef:
- fndef eat_saved_input
- { do_pending_inlines (); }
- | datadef
- { do_pending_inlines (); }
-
- | EXPORT
- { warning ("keyword `export' not implemented, and will be ignored"); }
- template_def
- { do_pending_inlines (); }
- | template_def
- { do_pending_inlines (); }
- | asm_keyword '(' STRING ')' ';'
- { assemble_asm ($3); }
- | extern_lang_string '{' extdefs_opt '}'
- { pop_lang_context (); }
- | extern_lang_string .hush_warning fndef .warning_ok eat_saved_input
- { do_pending_inlines (); pop_lang_context (); }
- | extern_lang_string .hush_warning datadef .warning_ok
- { do_pending_inlines (); pop_lang_context (); }
- | NAMESPACE identifier '{'
- { push_namespace ($2); }
- extdefs_opt '}'
- { pop_namespace (); }
- | NAMESPACE '{'
- { push_namespace (NULL_TREE); }
- extdefs_opt '}'
- { pop_namespace (); }
- | namespace_alias
- | using_decl ';'
- { do_toplevel_using_decl ($1); }
- | using_directive
- | extension extdef
- { pedantic = $1; }
- ;
-
-namespace_alias:
- NAMESPACE identifier '='
- { begin_only_namespace_names (); }
- any_id ';'
- {
- end_only_namespace_names ();
- if (lastiddecl)
- $5 = lastiddecl;
- do_namespace_alias ($2, $5);
- }
- ;
-
-using_decl:
- USING qualified_id
- { $$ = $2; }
- | USING global_scope qualified_id
- { $$ = $3; }
- | USING global_scope unqualified_id
- { $$ = $3; }
- ;
-
-namespace_using_decl:
- USING namespace_qualifier identifier
- { $$ = build_nt (SCOPE_REF, $2, $3); }
- | USING global_scope identifier
- { $$ = build_nt (SCOPE_REF, global_namespace, $3); }
- | USING global_scope namespace_qualifier identifier
- { $$ = build_nt (SCOPE_REF, $3, $4); }
- ;
-
-using_directive:
- USING NAMESPACE
- { begin_only_namespace_names (); }
- any_id ';'
- {
- end_only_namespace_names ();
- /* If no declaration was found, the using-directive is
- invalid. Since that was not reported, we need the
- identifier for the error message. */
- if (TREE_CODE ($4) == IDENTIFIER_NODE && lastiddecl)
- $4 = lastiddecl;
- do_using_directive ($4);
- }
- ;
-
-namespace_qualifier:
- NSNAME SCOPE
- {
- if (TREE_CODE ($$) == IDENTIFIER_NODE)
- $$ = lastiddecl;
- got_scope = $$;
- }
- | namespace_qualifier NSNAME SCOPE
- {
- $$ = $2;
- if (TREE_CODE ($$) == IDENTIFIER_NODE)
- $$ = lastiddecl;
- got_scope = $$;
- }
- ;
-
-any_id:
- unqualified_id
- | qualified_id
- | global_scope qualified_id
- { $$ = $2; }
- | global_scope unqualified_id
- { $$ = $2; }
- ;
-
-extern_lang_string:
- EXTERN_LANG_STRING
- { push_lang_context ($1); }
- | extern_lang_string EXTERN_LANG_STRING
- { if (current_lang_name != $2)
- error ("use of linkage spec `%D' is different from previous spec `%D'", $2, current_lang_name);
- pop_lang_context (); push_lang_context ($2); }
- ;
-
-template_parm_header:
- TEMPLATE '<'
- { begin_template_parm_list (); }
- template_parm_list '>'
- { $$ = end_template_parm_list ($4); }
- ;
-
-template_spec_header:
- TEMPLATE '<' '>'
- { begin_specialization();
- $$ = NULL_TREE; }
- ;
-
-template_header:
- template_parm_header
- | template_spec_header
- ;
-
-template_parm_list:
- template_parm
- { $$ = process_template_parm (NULL_TREE, $1); }
- | template_parm_list ',' template_parm
- { $$ = process_template_parm ($1, $3); }
- ;
-
-maybe_identifier:
- identifier
- { $$ = $1; }
- | /* empty */
- { $$ = NULL_TREE; }
- ;
-
-template_type_parm:
- aggr maybe_identifier
- { $$ = finish_template_type_parm ($1, $2); }
- | TYPENAME_KEYWORD maybe_identifier
- { $$ = finish_template_type_parm (class_type_node, $2); }
- ;
-
-template_template_parm:
- template_parm_header aggr maybe_identifier
- { $$ = finish_template_template_parm ($2, $3); }
- ;
-
-template_parm:
- /* The following rules introduce a new reduce/reduce
- conflict on the ',' and '>' input tokens: they are valid
- prefixes for a `structsp', which means they could match a
- nameless parameter. See 14.6, paragraph 3.
- By putting them before the `parm' rule, we get
- their match before considering them nameless parameter
- declarations. */
- template_type_parm
- { $$ = build_tree_list (NULL_TREE, $1); }
- | template_type_parm '=' type_id
- { $$ = build_tree_list (groktypename ($3.t), $1); }
- | parm
- { $$ = build_tree_list (NULL_TREE, $1.t); }
- | parm '=' expr_no_comma_rangle
- { $$ = build_tree_list ($3, $1.t); }
- | template_template_parm
- { $$ = build_tree_list (NULL_TREE, $1); }
- | template_template_parm '=' template_arg
- {
- $3 = check_template_template_default_arg ($3);
- $$ = build_tree_list ($3, $1);
- }
- ;
-
-template_def:
- template_header template_extdef
- { finish_template_decl ($1); }
- | template_header error %prec EMPTY
- { finish_template_decl ($1); }
- ;
-
-template_extdef:
- fndef eat_saved_input
- { do_pending_inlines (); }
- | template_datadef
- { do_pending_inlines (); }
- | template_def
- { do_pending_inlines (); }
- | extern_lang_string .hush_warning fndef .warning_ok eat_saved_input
- { do_pending_inlines ();
- pop_lang_context (); }
- | extern_lang_string .hush_warning template_datadef .warning_ok
- { do_pending_inlines ();
- pop_lang_context (); }
- | extension template_extdef
- { pedantic = $1; }
- ;
-
-template_datadef:
- nomods_initdecls ';'
- | declmods notype_initdecls ';'
- {}
- | typed_declspecs initdecls ';'
- { note_list_got_semicolon ($1.t); }
- | structsp ';'
- {
- if ($1.t != error_mark_node)
- {
- maybe_process_partial_specialization ($1.t);
- note_got_semicolon ($1.t);
- }
- }
- ;
-
-datadef:
- nomods_initdecls ';'
- | declmods notype_initdecls ';'
- {}
- | typed_declspecs initdecls ';'
- { note_list_got_semicolon ($1.t); }
- | declmods ';'
- { pedwarn ("empty declaration"); }
- | explicit_instantiation ';'
- | typed_declspecs ';'
- {
- tree t, attrs;
- split_specs_attrs ($1.t, &t, &attrs);
- shadow_tag (t);
- note_list_got_semicolon ($1.t);
- }
- | error ';'
- | error '}'
- | error END_OF_SAVED_INPUT
- { end_input (); }
- | ';'
- | bad_decl
- ;
-
-ctor_initializer_opt:
- nodecls
- | base_init
- ;
-
-maybe_return_init:
- /* empty */
- | return_init
- | return_init ';'
- ;
-
-eat_saved_input:
- /* empty */
- | END_OF_SAVED_INPUT
- ;
-
-/* The outermost block of a function really begins before the
- mem-initializer-list, so we open one there and suppress the one that
- actually corresponds to the curly braces. */
-function_body:
- begin_function_body_ ctor_initializer_opt save_lineno '{'
- { $<ttype>$ = begin_compound_stmt (/*has_no_scope=*/1); }
- compstmtend
- {
- STMT_LINENO ($<ttype>5) = $3;
- finish_compound_stmt (/*has_no_scope=*/1, $<ttype>5);
- finish_function_body ($1);
- }
- ;
-
-fndef:
- fn.def1 maybe_return_init function_body
- { expand_body (finish_function (0)); }
- | fn.def1 maybe_return_init function_try_block
- { expand_body (finish_function (0)); }
- | fn.def1 maybe_return_init error
- { }
- ;
-
-constructor_declarator:
- nested_name_specifier SELFNAME '('
- { $$ = begin_constructor_declarator ($1, $2); }
- parmlist ')' cv_qualifiers exception_specification_opt
- { $$ = make_call_declarator ($<ttype>4, $5, $7, $8); }
- | nested_name_specifier SELFNAME LEFT_RIGHT cv_qualifiers exception_specification_opt
- { $$ = begin_constructor_declarator ($1, $2);
- $$ = make_call_declarator ($$, empty_parms (), $4, $5);
- }
- | global_scope nested_name_specifier SELFNAME '('
- { $$ = begin_constructor_declarator ($2, $3); }
- parmlist ')' cv_qualifiers exception_specification_opt
- { $$ = make_call_declarator ($<ttype>5, $6, $8, $9); }
- | global_scope nested_name_specifier SELFNAME LEFT_RIGHT cv_qualifiers exception_specification_opt
- { $$ = begin_constructor_declarator ($2, $3);
- $$ = make_call_declarator ($$, empty_parms (), $5, $6);
- }
- | nested_name_specifier self_template_type '('
- { $$ = begin_constructor_declarator ($1, $2); }
- parmlist ')' cv_qualifiers exception_specification_opt
- { $$ = make_call_declarator ($<ttype>4, $5, $7, $8); }
- | nested_name_specifier self_template_type LEFT_RIGHT cv_qualifiers exception_specification_opt
- { $$ = begin_constructor_declarator ($1, $2);
- $$ = make_call_declarator ($$, empty_parms (), $4, $5);
- }
- | global_scope nested_name_specifier self_template_type '('
- { $$ = begin_constructor_declarator ($2, $3); }
- parmlist ')' cv_qualifiers exception_specification_opt
- { $$ = make_call_declarator ($<ttype>5, $6, $8, $9); }
- | global_scope nested_name_specifier self_template_type LEFT_RIGHT cv_qualifiers exception_specification_opt
- { $$ = begin_constructor_declarator ($2, $3);
- $$ = make_call_declarator ($$, empty_parms (), $5, $6);
- }
- ;
-
-fn.def1:
- typed_declspecs declarator
- { check_for_new_type ("return type", $1);
- if (!parse_begin_function_definition ($1.t, $2))
- YYERROR1; }
- | declmods notype_declarator
- { if (!parse_begin_function_definition ($1.t, $2))
- YYERROR1; }
- | notype_declarator
- { if (!parse_begin_function_definition (NULL_TREE, $1))
- YYERROR1; }
- | declmods constructor_declarator
- { if (!parse_begin_function_definition ($1.t, $2))
- YYERROR1; }
- | constructor_declarator
- { if (!parse_begin_function_definition (NULL_TREE, $1))
- YYERROR1; }
- ;
-
-/* ANSI allows optional parentheses around constructor class names.
- See ISO/IEC 14882:1998(E) 12.1. */
-
-component_constructor_declarator:
- SELFNAME '(' parmlist ')' cv_qualifiers exception_specification_opt
- { $$ = make_call_declarator ($1, $3, $5, $6); }
- | '(' SELFNAME ')' '(' parmlist ')' cv_qualifiers
- exception_specification_opt
- { $$ = make_call_declarator ($2, $5, $7, $8); }
- | SELFNAME LEFT_RIGHT cv_qualifiers exception_specification_opt
- { $$ = make_call_declarator ($1, empty_parms (), $3, $4); }
- | '(' SELFNAME ')' LEFT_RIGHT cv_qualifiers exception_specification_opt
- { $$ = make_call_declarator ($2, empty_parms (), $5, $6); }
- | self_template_type '(' parmlist ')' cv_qualifiers exception_specification_opt
- { $$ = make_call_declarator ($1, $3, $5, $6); }
- | self_template_type LEFT_RIGHT cv_qualifiers exception_specification_opt
- { $$ = make_call_declarator ($1, empty_parms (), $3, $4); }
- ;
-
-/* more C++ complexity. See component_decl for a comment on the
- reduce/reduce conflict introduced by these rules. */
-fn_def2:
- declmods component_constructor_declarator
- { $$ = parse_method ($2, $1.t, $1.lookups);
- rest_of_mdef:
- if (! $$)
- YYERROR1;
- if (yychar == YYEMPTY)
- yychar = YYLEX;
- snarf_method ($$); }
- | component_constructor_declarator
- { $$ = parse_method ($1, NULL_TREE, NULL_TREE);
- goto rest_of_mdef; }
- | typed_declspecs declarator
- { $$ = parse_method ($2, $1.t, $1.lookups); goto rest_of_mdef;}
- | declmods notype_declarator
- { $$ = parse_method ($2, $1.t, $1.lookups); goto rest_of_mdef;}
- | notype_declarator
- { $$ = parse_method ($1, NULL_TREE, NULL_TREE);
- goto rest_of_mdef; }
- | declmods constructor_declarator
- { $$ = parse_method ($2, $1.t, $1.lookups); goto rest_of_mdef;}
- | constructor_declarator
- { $$ = parse_method ($1, NULL_TREE, NULL_TREE);
- goto rest_of_mdef; }
- ;
-
-return_id:
- RETURN_KEYWORD IDENTIFIER
- {
- $$ = $2;
- }
- ;
-
-return_init:
- return_id maybe_init
- { finish_named_return_value ($<ttype>$, $2); }
- | return_id '(' nonnull_exprlist ')'
- { finish_named_return_value ($<ttype>$, $3); }
- | return_id LEFT_RIGHT
- { finish_named_return_value ($<ttype>$, NULL_TREE); }
- ;
-
-base_init:
- ':' { begin_mem_initializers (); } member_init_list
- {
- if ($3.new_type_flag == 0)
- error ("no base or member initializers given following ':'");
- finish_mem_initializers ($3.t);
- }
- ;
-
-begin_function_body_:
- /* empty */
- {
- $$ = begin_function_body ();
- }
- ;
-
-member_init_list:
- /* empty */
- {
- $$.new_type_flag = 0;
- $$.t = NULL_TREE;
- }
- | member_init
- {
- $$.new_type_flag = 1;
- $$.t = $1;
- }
- | member_init_list ',' member_init
- {
- if ($3)
- {
- $$.new_type_flag = 1;
- TREE_CHAIN ($3) = $1.t;
- $$.t = $3;
- }
- else
- $$ = $1;
- }
- | member_init_list error
- ;
-
-begin_member_init:
- /* empty */
- {
- if (current_class_name)
- pedwarn ("anachronistic old style base class initializer");
- $$ = expand_member_init (NULL_TREE);
- in_base_initializer = $$ && !DECL_P ($$);
- }
- | notype_identifier
- { $$ = expand_member_init ($1);
- in_base_initializer = $$ && !DECL_P ($$); }
- | nonnested_type
- { $$ = expand_member_init ($1);
- in_base_initializer = $$ && !DECL_P ($$); }
- | typename_sub
- { $$ = expand_member_init ($1);
- in_base_initializer = $$ && !DECL_P ($$); }
- ;
-
-member_init:
- begin_member_init '(' nonnull_exprlist ')'
- { in_base_initializer = 0;
- $$ = $1 ? build_tree_list ($1, $3) : NULL_TREE; }
- | begin_member_init LEFT_RIGHT
- { in_base_initializer = 0;
- $$ = $1 ? build_tree_list ($1, void_type_node) : NULL_TREE; }
- | error
- { in_base_initializer = 0;
- $$ = NULL_TREE; }
- ;
-
-identifier:
- IDENTIFIER
- | tTYPENAME
- | SELFNAME
- | PTYPENAME
- | NSNAME
- ;
-
-notype_identifier:
- IDENTIFIER
- | PTYPENAME
- | NSNAME %prec EMPTY
- ;
-
-identifier_defn:
- IDENTIFIER_DEFN
- | TYPENAME_DEFN
- | PTYPENAME_DEFN
- ;
-
-explicit_instantiation:
- TEMPLATE begin_explicit_instantiation typespec ';'
- { do_type_instantiation ($3.t, NULL_TREE, 1);
- yyungetc (';', 1); }
- end_explicit_instantiation
- | TEMPLATE begin_explicit_instantiation typed_declspecs declarator
- { tree specs = strip_attrs ($3.t);
- parse_decl_instantiation (specs, $4, NULL_TREE); }
- end_explicit_instantiation
- | TEMPLATE begin_explicit_instantiation notype_declarator
- { parse_decl_instantiation (NULL_TREE, $3, NULL_TREE); }
- end_explicit_instantiation
- | TEMPLATE begin_explicit_instantiation constructor_declarator
- { parse_decl_instantiation (NULL_TREE, $3, NULL_TREE); }
- end_explicit_instantiation
- | SCSPEC TEMPLATE begin_explicit_instantiation typespec ';'
- { do_type_instantiation ($4.t, $1, 1);
- yyungetc (';', 1); }
- end_explicit_instantiation
- {}
- | SCSPEC TEMPLATE begin_explicit_instantiation typed_declspecs
- declarator
- { tree specs = strip_attrs ($4.t);
- parse_decl_instantiation (specs, $5, $1); }
- end_explicit_instantiation
- {}
- | SCSPEC TEMPLATE begin_explicit_instantiation notype_declarator
- { parse_decl_instantiation (NULL_TREE, $4, $1); }
- end_explicit_instantiation
- {}
- | SCSPEC TEMPLATE begin_explicit_instantiation constructor_declarator
- { parse_decl_instantiation (NULL_TREE, $4, $1); }
- end_explicit_instantiation
- {}
- ;
-
-begin_explicit_instantiation:
- { begin_explicit_instantiation(); }
- ;
-
-end_explicit_instantiation:
- { end_explicit_instantiation(); }
- ;
-
-/* The TYPENAME expansions are to deal with use of a template class name as
- a template within the class itself, where the template decl is hidden by
- a type decl. Got all that? */
-
-template_type:
- PTYPENAME '<' template_arg_list_opt template_close_bracket
- finish_template_type_
- { $$ = $5; }
- | tTYPENAME '<' template_arg_list_opt template_close_bracket
- finish_template_type_
- { $$ = $5; }
- | self_template_type
- ;
-
-apparent_template_type:
- template_type
- | identifier '<' template_arg_list_opt '>'
- finish_template_type_
- { $$ = $5; }
- ;
-
-self_template_type:
- SELFNAME '<' template_arg_list_opt template_close_bracket
- finish_template_type_
- { $$ = $5; }
- ;
-
-finish_template_type_:
- {
- if (yychar == YYEMPTY)
- yychar = YYLEX;
-
- $$ = finish_template_type ($<ttype>-3, $<ttype>-1,
- yychar == SCOPE);
- }
- ;
-
-template_close_bracket:
- '>'
- | RSHIFT
- {
- /* Handle `Class<Class<Type>>' without space in the `>>' */
- pedwarn ("`>>' should be `> >' in template class name");
- yyungetc ('>', 1);
- }
- ;
-
-template_arg_list_opt:
- /* empty */
- { $$ = NULL_TREE; }
- | template_arg_list
- ;
-
-template_arg_list:
- template_arg
- { $$ = build_tree_list (NULL_TREE, $$); }
- | template_arg_list ',' template_arg
- { $$ = chainon ($$, build_tree_list (NULL_TREE, $3)); }
- ;
-
-template_arg:
- { ++class_template_ok_as_expr; }
- template_arg_1
- {
- --class_template_ok_as_expr;
- $$ = $2;
- }
- ;
-
-template_arg_1:
- type_id
- { $$ = groktypename ($1.t); }
- | PTYPENAME
- {
- $$ = lastiddecl;
- if (DECL_TEMPLATE_TEMPLATE_PARM_P ($$))
- $$ = TREE_TYPE ($$);
- }
- | global_scope PTYPENAME
- {
- $$ = lastiddecl;
- if (DECL_TEMPLATE_TEMPLATE_PARM_P ($$))
- $$ = TREE_TYPE ($$);
- }
- | expr_no_comma_rangle
- | nested_name_specifier TEMPLATE identifier
- {
- if (!processing_template_decl)
- {
- error ("use of template qualifier outside template");
- $$ = error_mark_node;
- }
- else
- $$ = make_unbound_class_template ($1, $3, tf_error | tf_parsing);
- }
- ;
-
-unop:
- '-'
- { $$ = NEGATE_EXPR; }
- | '+'
- { $$ = CONVERT_EXPR; }
- | PLUSPLUS
- { $$ = PREINCREMENT_EXPR; }
- | MINUSMINUS
- { $$ = PREDECREMENT_EXPR; }
- | '!'
- { $$ = TRUTH_NOT_EXPR; }
- ;
-
-expr:
- nontrivial_exprlist
- { $$ = build_x_compound_expr ($$); }
- | expr_no_commas
- ;
-
-paren_expr_or_null:
- LEFT_RIGHT
- { error ("ISO C++ forbids an empty condition for `%s'",
- cond_stmt_keyword);
- $$ = integer_zero_node; }
- | '(' expr ')'
- { $$ = $2; }
- ;
-
-paren_cond_or_null:
- LEFT_RIGHT
- { error ("ISO C++ forbids an empty condition for `%s'",
- cond_stmt_keyword);
- $$ = integer_zero_node; }
- | '(' condition ')'
- { $$ = $2; }
- ;
-
-xcond:
- /* empty */
- { $$ = NULL_TREE; }
- | condition
- | error
- { $$ = NULL_TREE; }
- ;
-
-condition:
- type_specifier_seq declarator maybeasm maybe_attribute '='
- { {
- tree d;
- for (d = getdecls (); d; d = TREE_CHAIN (d))
- if (TREE_CODE (d) == TYPE_DECL) {
- tree s = TREE_TYPE (d);
- if (TREE_CODE (s) == RECORD_TYPE)
- error ("definition of class `%T' in condition", s);
- else if (TREE_CODE (s) == ENUMERAL_TYPE)
- error ("definition of enum `%T' in condition", s);
- }
- }
- current_declspecs = $1.t;
- $<ttype>$ = parse_decl ($<ttype>2, $4, 1);
- }
- init
- {
- parse_end_decl ($<ttype>6, $7, $4);
- $$ = convert_from_reference ($<ttype>6);
- if (TREE_CODE (TREE_TYPE ($$)) == ARRAY_TYPE)
- error ("definition of array `%#D' in condition", $$);
- }
- | expr
- ;
-
-compstmtend:
- '}'
- | maybe_label_decls stmts '}'
- | maybe_label_decls stmts error '}'
- | maybe_label_decls error '}'
- ;
-
-nontrivial_exprlist:
- expr_no_commas ',' expr_no_commas
- { $$ = tree_cons (NULL_TREE, $$,
- build_tree_list (NULL_TREE, $3)); }
- | expr_no_commas ',' error
- { $$ = tree_cons (NULL_TREE, $$,
- build_tree_list (NULL_TREE, error_mark_node)); }
- | nontrivial_exprlist ',' expr_no_commas
- { chainon ($$, build_tree_list (NULL_TREE, $3)); }
- | nontrivial_exprlist ',' error
- { chainon ($$, build_tree_list (NULL_TREE, error_mark_node)); }
- ;
-
-nonnull_exprlist:
- expr_no_commas
- { $$ = build_tree_list (NULL_TREE, $$); }
- | nontrivial_exprlist
- ;
-
-unary_expr:
- primary %prec UNARY
- { $$ = $1; }
- /* __extension__ turns off -pedantic for following primary. */
- | extension cast_expr %prec UNARY
- { $$ = $2;
- pedantic = $1; }
- | '*' cast_expr %prec UNARY
- { $$ = build_x_indirect_ref ($2, "unary *"); }
- | '&' cast_expr %prec UNARY
- { $$ = build_x_unary_op (ADDR_EXPR, $2); }
- | '~' cast_expr
- { $$ = build_x_unary_op (BIT_NOT_EXPR, $2); }
- | unop cast_expr %prec UNARY
- { $$ = finish_unary_op_expr ($1, $2); }
- /* Refer to the address of a label as a pointer. */
- | ANDAND identifier
- { $$ = finish_label_address_expr ($2); }
- | sizeof unary_expr %prec UNARY
- { $$ = finish_sizeof ($2);
- skip_evaluation--; }
- | sizeof '(' type_id ')' %prec HYPERUNARY
- { $$ = finish_sizeof (groktypename ($3.t));
- check_for_new_type ("sizeof", $3);
- skip_evaluation--; }
- | alignof unary_expr %prec UNARY
- { $$ = finish_alignof ($2);
- skip_evaluation--; }
- | alignof '(' type_id ')' %prec HYPERUNARY
- { $$ = finish_alignof (groktypename ($3.t));
- check_for_new_type ("alignof", $3);
- skip_evaluation--; }
-
- /* The %prec EMPTY's here are required by the = init initializer
- syntax extension; see below. */
- | new new_type_id %prec EMPTY
- { $$ = build_new (NULL_TREE, $2.t, NULL_TREE, $1);
- check_for_new_type ("new", $2); }
- | new new_type_id new_initializer
- { $$ = build_new (NULL_TREE, $2.t, $3, $1);
- check_for_new_type ("new", $2); }
- | new new_placement new_type_id %prec EMPTY
- { $$ = build_new ($2, $3.t, NULL_TREE, $1);
- check_for_new_type ("new", $3); }
- | new new_placement new_type_id new_initializer
- { $$ = build_new ($2, $3.t, $4, $1);
- check_for_new_type ("new", $3); }
- | new '(' type_id ')'
- %prec EMPTY
- { $$ = build_new (NULL_TREE, groktypename($3.t),
- NULL_TREE, $1);
- check_for_new_type ("new", $3); }
- | new '(' type_id ')' new_initializer
- { $$ = build_new (NULL_TREE, groktypename($3.t), $5, $1);
- check_for_new_type ("new", $3); }
- | new new_placement '(' type_id ')' %prec EMPTY
- { $$ = build_new ($2, groktypename($4.t), NULL_TREE, $1);
- check_for_new_type ("new", $4); }
- | new new_placement '(' type_id ')' new_initializer
- { $$ = build_new ($2, groktypename($4.t), $6, $1);
- check_for_new_type ("new", $4); }
-
- | delete cast_expr %prec UNARY
- { $$ = delete_sanity ($2, NULL_TREE, 0, $1); }
- | delete '[' ']' cast_expr %prec UNARY
- { $$ = delete_sanity ($4, NULL_TREE, 1, $1);
- if (yychar == YYEMPTY)
- yychar = YYLEX; }
- | delete '[' expr ']' cast_expr %prec UNARY
- { $$ = delete_sanity ($5, $3, 2, $1);
- if (yychar == YYEMPTY)
- yychar = YYLEX; }
- | REALPART cast_expr %prec UNARY
- { $$ = build_x_unary_op (REALPART_EXPR, $2); }
- | IMAGPART cast_expr %prec UNARY
- { $$ = build_x_unary_op (IMAGPART_EXPR, $2); }
- ;
-
-new_placement:
- '(' nonnull_exprlist ')'
- { $$ = $2; }
- | '{' nonnull_exprlist '}'
- { pedwarn ("old style placement syntax, use () instead");
- $$ = $2; }
- ;
-
-new_initializer:
- '(' nonnull_exprlist ')'
- { $$ = $2; }
- | LEFT_RIGHT
- { $$ = void_zero_node; }
- | '(' typespec ')'
- {
- error ("`%T' is not a valid expression", $2.t);
- $$ = error_mark_node;
- }
- | '=' init
- {
- /* This was previously allowed as an extension, but
- was removed in G++ 3.3. */
- error ("initialization of new expression with `='");
- $$ = error_mark_node;
- }
- ;
-
-/* This is necessary to postpone reduction of `int ((int)(int)(int))'. */
-regcast_or_absdcl:
- '(' type_id ')' %prec EMPTY
- { $2.t = finish_parmlist (build_tree_list (NULL_TREE, $2.t), 0);
- $$ = make_call_declarator (NULL_TREE, $2.t, NULL_TREE, NULL_TREE);
- check_for_new_type ("cast", $2); }
- | regcast_or_absdcl '(' type_id ')' %prec EMPTY
- { $3.t = finish_parmlist (build_tree_list (NULL_TREE, $3.t), 0);
- $$ = make_call_declarator ($$, $3.t, NULL_TREE, NULL_TREE);
- check_for_new_type ("cast", $3); }
- ;
-
-cast_expr:
- unary_expr
- | regcast_or_absdcl unary_expr %prec UNARY
- { $$ = reparse_absdcl_as_casts ($$, $2); }
- | regcast_or_absdcl '{' initlist maybecomma '}' %prec UNARY
- {
- tree init = build_nt (CONSTRUCTOR, NULL_TREE,
- nreverse ($3));
- if (pedantic)
- pedwarn ("ISO C++ forbids compound literals");
- /* Indicate that this was a C99 compound literal. */
- TREE_HAS_CONSTRUCTOR (init) = 1;
-
- $$ = reparse_absdcl_as_casts ($$, init);
- }
- ;
-
-expr_no_commas:
- cast_expr
- /* Handle general members. */
- | expr_no_commas POINTSAT_STAR expr_no_commas
- { $$ = build_x_binary_op (MEMBER_REF, $$, $3); }
- | expr_no_commas DOT_STAR expr_no_commas
- { $$ = build_m_component_ref ($$, $3); }
- | expr_no_commas '+' expr_no_commas
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_commas '-' expr_no_commas
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_commas '*' expr_no_commas
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_commas '/' expr_no_commas
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_commas '%' expr_no_commas
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_commas LSHIFT expr_no_commas
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_commas RSHIFT expr_no_commas
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_commas ARITHCOMPARE expr_no_commas
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_commas '<' expr_no_commas
- { $$ = build_x_binary_op (LT_EXPR, $$, $3); }
- | expr_no_commas '>' expr_no_commas
- { $$ = build_x_binary_op (GT_EXPR, $$, $3); }
- | expr_no_commas EQCOMPARE expr_no_commas
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_commas MIN_MAX expr_no_commas
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_commas '&' expr_no_commas
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_commas '|' expr_no_commas
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_commas '^' expr_no_commas
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_commas ANDAND expr_no_commas
- { $$ = build_x_binary_op (TRUTH_ANDIF_EXPR, $$, $3); }
- | expr_no_commas OROR expr_no_commas
- { $$ = build_x_binary_op (TRUTH_ORIF_EXPR, $$, $3); }
- | expr_no_commas '?' xexpr ':' expr_no_commas
- { $$ = build_x_conditional_expr ($$, $3, $5); }
- | expr_no_commas '=' expr_no_commas
- { $$ = build_x_modify_expr ($$, NOP_EXPR, $3);
- if ($$ != error_mark_node)
- C_SET_EXP_ORIGINAL_CODE ($$, MODIFY_EXPR); }
- | expr_no_commas ASSIGN expr_no_commas
- { $$ = build_x_modify_expr ($$, $2, $3); }
- | THROW
- { $$ = build_throw (NULL_TREE); }
- | THROW expr_no_commas
- { $$ = build_throw ($2); }
- ;
-
-expr_no_comma_rangle:
- cast_expr
- /* Handle general members. */
- | expr_no_comma_rangle POINTSAT_STAR expr_no_comma_rangle
- { $$ = build_x_binary_op (MEMBER_REF, $$, $3); }
- | expr_no_comma_rangle DOT_STAR expr_no_comma_rangle
- { $$ = build_m_component_ref ($$, $3); }
- | expr_no_comma_rangle '+' expr_no_comma_rangle
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_comma_rangle '-' expr_no_comma_rangle
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_comma_rangle '*' expr_no_comma_rangle
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_comma_rangle '/' expr_no_comma_rangle
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_comma_rangle '%' expr_no_comma_rangle
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_comma_rangle LSHIFT expr_no_comma_rangle
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_comma_rangle RSHIFT expr_no_comma_rangle
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_comma_rangle ARITHCOMPARE expr_no_comma_rangle
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_comma_rangle '<' expr_no_comma_rangle
- { $$ = build_x_binary_op (LT_EXPR, $$, $3); }
- | expr_no_comma_rangle EQCOMPARE expr_no_comma_rangle
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_comma_rangle MIN_MAX expr_no_comma_rangle
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_comma_rangle '&' expr_no_comma_rangle
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_comma_rangle '|' expr_no_comma_rangle
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_comma_rangle '^' expr_no_comma_rangle
- { $$ = build_x_binary_op ($2, $$, $3); }
- | expr_no_comma_rangle ANDAND expr_no_comma_rangle
- { $$ = build_x_binary_op (TRUTH_ANDIF_EXPR, $$, $3); }
- | expr_no_comma_rangle OROR expr_no_comma_rangle
- { $$ = build_x_binary_op (TRUTH_ORIF_EXPR, $$, $3); }
- | expr_no_comma_rangle '?' xexpr ':' expr_no_comma_rangle
- { $$ = build_x_conditional_expr ($$, $3, $5); }
- | expr_no_comma_rangle '=' expr_no_comma_rangle
- { $$ = build_x_modify_expr ($$, NOP_EXPR, $3);
- if ($$ != error_mark_node)
- C_SET_EXP_ORIGINAL_CODE ($$, MODIFY_EXPR); }
- | expr_no_comma_rangle ASSIGN expr_no_comma_rangle
- { $$ = build_x_modify_expr ($$, $2, $3); }
- | THROW
- { $$ = build_throw (NULL_TREE); }
- | THROW expr_no_comma_rangle
- { $$ = build_throw ($2); }
- ;
-
-notype_unqualified_id:
- '~' see_typename identifier
- { $$ = build_nt (BIT_NOT_EXPR, $3); }
- | '~' see_typename template_type
- { $$ = build_nt (BIT_NOT_EXPR, $3); }
- | template_id
- | operator_name
- | IDENTIFIER
- | PTYPENAME
- | NSNAME %prec EMPTY
- ;
-
-do_id:
- {
- /* If lastiddecl is a BASELINK we're in an
- expression like S::f<int>, so don't
- do_identifier; we only do that for unqualified
- identifiers. */
- if (!lastiddecl || !BASELINK_P (lastiddecl))
- $$ = do_identifier ($<ttype>-1, 3, NULL_TREE);
- else
- $$ = $<ttype>-1;
- }
- ;
-
-template_id:
- PFUNCNAME '<' do_id template_arg_list_opt template_close_bracket
- {
- tree template_name = $3;
- if (TREE_CODE (template_name) == COMPONENT_REF)
- template_name = TREE_OPERAND (template_name, 1);
- $$ = lookup_template_function (template_name, $4);
- }
- | operator_name '<' do_id template_arg_list_opt template_close_bracket
- {
- tree template_name = $3;
- if (TREE_CODE (template_name) == COMPONENT_REF)
- template_name = TREE_OPERAND (template_name, 1);
- $$ = lookup_template_function (template_name, $4);
- }
- ;
-
-object_template_id:
- TEMPLATE identifier '<' template_arg_list_opt template_close_bracket
- { $$ = lookup_template_function ($2, $4); }
- | TEMPLATE PFUNCNAME '<' template_arg_list_opt template_close_bracket
- { $$ = lookup_template_function ($2, $4); }
- | TEMPLATE operator_name '<' template_arg_list_opt
- template_close_bracket
- { $$ = lookup_template_function ($2, $4); }
- ;
-
-unqualified_id:
- notype_unqualified_id
- | tTYPENAME
- | SELFNAME
- ;
-
-expr_or_declarator_intern:
- expr_or_declarator
- | attributes expr_or_declarator
- {
- /* Provide support for '(' attributes '*' declarator ')'
- etc */
- $$ = tree_cons ($1, $2, NULL_TREE);
- }
- ;
-
-expr_or_declarator:
- notype_unqualified_id
- | '*' expr_or_declarator_intern %prec UNARY
- { $$ = build_nt (INDIRECT_REF, $2); }
- | '&' expr_or_declarator_intern %prec UNARY
- { $$ = build_nt (ADDR_EXPR, $2); }
- | '(' expr_or_declarator_intern ')'
- { $$ = $2; }
- ;
-
-notype_template_declarator:
- IDENTIFIER '<' template_arg_list_opt template_close_bracket
- { $$ = lookup_template_function ($1, $3); }
- | NSNAME '<' template_arg_list template_close_bracket
- { $$ = lookup_template_function ($1, $3); }
- ;
-
-direct_notype_declarator:
- complex_direct_notype_declarator
- /* This precedence declaration is to prefer this reduce
- to the Koenig lookup shift in primary, below. I hate yacc. */
- | notype_unqualified_id %prec '('
- | notype_template_declarator
- | '(' expr_or_declarator_intern ')'
- { $$ = finish_decl_parsing ($2); }
- ;
-
-primary:
- notype_unqualified_id
- {
- if (TREE_CODE ($1) == BIT_NOT_EXPR)
- $$ = build_x_unary_op (BIT_NOT_EXPR, TREE_OPERAND ($1, 0));
- else
- $$ = finish_id_expr ($1);
- }
- | CONSTANT
- | boolean_literal
- | STRING
- {
- $$ = fix_string_type ($$);
- /* fix_string_type doesn't set up TYPE_MAIN_VARIANT of
- a const array the way we want, so fix it. */
- if (flag_const_strings)
- TREE_TYPE ($$) = build_cplus_array_type
- (TREE_TYPE (TREE_TYPE ($$)),
- TYPE_DOMAIN (TREE_TYPE ($$)));
- }
- | VAR_FUNC_NAME
- { $$ = finish_fname ($1); }
- | '(' expr ')'
- { $$ = finish_parenthesized_expr ($2); }
- | '(' expr_or_declarator_intern ')'
- { $2 = reparse_decl_as_expr (NULL_TREE, $2);
- $$ = finish_parenthesized_expr ($2); }
- | '(' error ')'
- { $$ = error_mark_node; }
- | '('
- { if (!at_function_scope_p ())
- {
- error ("braced-group within expression allowed only inside a function");
- YYERROR;
- }
- if (pedantic)
- pedwarn ("ISO C++ forbids braced-groups within expressions");
- $<ttype>$ = begin_stmt_expr ();
- }
- compstmt_or_stmtexpr ')'
- { $$ = finish_stmt_expr ($<ttype>2); }
- /* Koenig lookup support
- We could store lastiddecl in $1 to avoid another lookup,
- but that would result in many additional reduce/reduce conflicts. */
- | notype_unqualified_id '(' nonnull_exprlist ')'
- { $$ = parse_finish_call_expr ($1, $3, 1); }
- | notype_unqualified_id LEFT_RIGHT
- { $$ = parse_finish_call_expr ($1, NULL_TREE, 1); }
- | primary '(' nonnull_exprlist ')'
- { $$ = parse_finish_call_expr ($1, $3, 0); }
- | primary LEFT_RIGHT
- { $$ = parse_finish_call_expr ($1, NULL_TREE, 0); }
- | VA_ARG '(' expr_no_commas ',' type_id ')'
- { $$ = build_x_va_arg ($3, groktypename ($5.t));
- check_for_new_type ("__builtin_va_arg", $5); }
- | primary '[' expr ']'
- { $$ = grok_array_decl ($$, $3); }
- | primary PLUSPLUS
- { $$ = finish_increment_expr ($1, POSTINCREMENT_EXPR); }
- | primary MINUSMINUS
- { $$ = finish_increment_expr ($1, POSTDECREMENT_EXPR); }
- /* C++ extensions */
- | THIS
- { $$ = finish_this_expr (); }
- | CV_QUALIFIER '(' nonnull_exprlist ')'
- {
- /* This is a C cast in C++'s `functional' notation
- using the "implicit int" extension so that:
- `const (3)' is equivalent to `const int (3)'. */
- tree type;
-
- type = hash_tree_cons (NULL_TREE, $1, NULL_TREE);
- type = groktypename (build_tree_list (type, NULL_TREE));
- $$ = build_functional_cast (type, $3);
- }
- | functional_cast
- | DYNAMIC_CAST '<' type_id '>' '(' expr ')'
- { tree type = groktypename ($3.t);
- check_for_new_type ("dynamic_cast", $3);
- $$ = build_dynamic_cast (type, $6); }
- | STATIC_CAST '<' type_id '>' '(' expr ')'
- { tree type = groktypename ($3.t);
- check_for_new_type ("static_cast", $3);
- $$ = build_static_cast (type, $6); }
- | REINTERPRET_CAST '<' type_id '>' '(' expr ')'
- { tree type = groktypename ($3.t);
- check_for_new_type ("reinterpret_cast", $3);
- $$ = build_reinterpret_cast (type, $6); }
- | CONST_CAST '<' type_id '>' '(' expr ')'
- { tree type = groktypename ($3.t);
- check_for_new_type ("const_cast", $3);
- $$ = build_const_cast (type, $6); }
- | TYPEID '(' expr ')'
- { $$ = build_typeid ($3); }
- | TYPEID '(' type_id ')'
- { tree type = groktypename ($3.t);
- check_for_new_type ("typeid", $3);
- $$ = get_typeid (type); }
- | global_scope IDENTIFIER
- { $$ = parse_scoped_id ($2); }
- | global_scope template_id
- { $$ = $2; }
- | global_scope operator_name
- {
- got_scope = NULL_TREE;
- if (TREE_CODE ($2) == IDENTIFIER_NODE)
- $$ = parse_scoped_id ($2);
- else
- $$ = $2;
- }
- | overqualified_id %prec HYPERUNARY
- { $$ = build_offset_ref (OP0 ($$), OP1 ($$));
- if (!class_template_ok_as_expr
- && DECL_CLASS_TEMPLATE_P ($$))
- {
- error ("invalid use of template `%D'", $$);
- $$ = error_mark_node;
- }
- }
- | overqualified_id '(' nonnull_exprlist ')'
- { $$ = parse_finish_call_expr ($1, $3, 0); }
- | overqualified_id LEFT_RIGHT
- { $$ = parse_finish_call_expr ($1, NULL_TREE, 0); }
- | object object_template_id %prec UNARY
- { $$ = finish_class_member_access_expr ($$, $2); }
- | object object_template_id '(' nonnull_exprlist ')'
- { $$ = finish_object_call_expr ($2, $1, $4); }
- | object object_template_id LEFT_RIGHT
- { $$ = finish_object_call_expr ($2, $1, NULL_TREE); }
- | object unqualified_id %prec UNARY
- { $$ = finish_class_member_access_expr ($$, $2); }
- | object overqualified_id %prec UNARY
- { $$ = finish_class_member_access_expr ($1, $2); }
- | object unqualified_id '(' nonnull_exprlist ')'
- { $$ = finish_object_call_expr ($2, $1, $4); }
- | object unqualified_id LEFT_RIGHT
- { $$ = finish_object_call_expr ($2, $1, NULL_TREE); }
- | object overqualified_id '(' nonnull_exprlist ')'
- { $$ = finish_qualified_object_call_expr ($2, $1, $4); }
- | object overqualified_id LEFT_RIGHT
- { $$ = finish_qualified_object_call_expr ($2, $1, NULL_TREE); }
- /* p->int::~int() is valid -- 12.4 */
- | object '~' TYPESPEC LEFT_RIGHT
- { $$ = finish_pseudo_destructor_call_expr ($1, NULL_TREE, $3); }
- | object TYPESPEC SCOPE '~' TYPESPEC LEFT_RIGHT
- { $$ = finish_pseudo_destructor_call_expr ($1, $2, $5); }
- | object error
- {
- $$ = error_mark_node;
- }
- ;
-
-/* Not needed for now.
-
-primary_no_id:
- '(' expr ')'
- { $$ = $2; }
- | '(' error ')'
- { $$ = error_mark_node; }
- | '('
- { if (current_function_decl == 0)
- {
- error ("braced-group within expression allowed only inside a function");
- YYERROR;
- }
- $<ttype>$ = expand_start_stmt_expr (); }
- compstmt_or_stmtexpr ')'
- { if (pedantic)
- pedwarn ("ISO C++ forbids braced-groups within expressions");
- $$ = expand_end_stmt_expr ($<ttype>2); }
- | primary_no_id '(' nonnull_exprlist ')'
- { $$ = build_x_function_call ($$, $3, current_class_ref); }
- | primary_no_id LEFT_RIGHT
- { $$ = build_x_function_call ($$, NULL_TREE, current_class_ref); }
- | primary_no_id '[' expr ']'
- { goto do_array; }
- | primary_no_id PLUSPLUS
- { $$ = build_x_unary_op (POSTINCREMENT_EXPR, $$); }
- | primary_no_id MINUSMINUS
- { $$ = build_x_unary_op (POSTDECREMENT_EXPR, $$); }
- | SCOPE IDENTIFIER
- { goto do_scoped_id; }
- | SCOPE operator_name
- { if (TREE_CODE ($2) == IDENTIFIER_NODE)
- goto do_scoped_id;
- goto do_scoped_operator;
- }
- ;
-*/
-
-new:
- NEW
- { $$ = 0; }
- | global_scope NEW
- { got_scope = NULL_TREE; $$ = 1; }
- ;
-
-delete:
- DELETE
- { $$ = 0; }
- | global_scope delete
- { got_scope = NULL_TREE; $$ = 1; }
- ;
-
-boolean_literal:
- CXX_TRUE
- { $$ = boolean_true_node; }
- | CXX_FALSE
- { $$ = boolean_false_node; }
- ;
-
-nodecls:
- /* empty */
- {
- if (DECL_CONSTRUCTOR_P (current_function_decl))
- finish_mem_initializers (NULL_TREE);
- }
- ;
-
-object:
- primary '.'
- { got_object = TREE_TYPE ($$); }
- | primary POINTSAT
- {
- $$ = build_x_arrow ($$);
- got_object = TREE_TYPE ($$);
- }
- ;
-
-decl:
- typespec initdecls ';'
- {
- if ($1.t && IS_AGGR_TYPE_CODE (TREE_CODE ($1.t)))
- note_got_semicolon ($1.t);
- }
- | typed_declspecs initdecls ';'
- {
- note_list_got_semicolon ($1.t);
- }
- | declmods notype_initdecls ';'
- {}
- | typed_declspecs ';'
- {
- shadow_tag ($1.t);
- note_list_got_semicolon ($1.t);
- }
- | declmods ';'
- { warning ("empty declaration"); }
- | extension decl
- { pedantic = $1; }
- ;
-
-/* Any kind of declarator (thus, all declarators allowed
- after an explicit typespec). */
-
-declarator:
- after_type_declarator %prec EMPTY
- | notype_declarator %prec EMPTY
- ;
-
-/* This is necessary to postpone reduction of `int()()()()'. */
-fcast_or_absdcl:
- LEFT_RIGHT %prec EMPTY
- { $$ = make_call_declarator (NULL_TREE, empty_parms (),
- NULL_TREE, NULL_TREE); }
- | fcast_or_absdcl LEFT_RIGHT %prec EMPTY
- { $$ = make_call_declarator ($$, empty_parms (), NULL_TREE,
- NULL_TREE); }
- ;
-
-/* ISO type-id (8.1) */
-type_id:
- typed_typespecs absdcl
- { $$.t = build_tree_list ($1.t, $2);
- $$.new_type_flag = $1.new_type_flag; }
- | nonempty_cv_qualifiers absdcl
- { $$.t = build_tree_list ($1.t, $2);
- $$.new_type_flag = $1.new_type_flag; }
- | typespec absdcl
- { $$.t = build_tree_list (build_tree_list (NULL_TREE, $1.t),
- $2);
- $$.new_type_flag = $1.new_type_flag; }
- | typed_typespecs %prec EMPTY
- { $$.t = build_tree_list ($1.t, NULL_TREE);
- $$.new_type_flag = $1.new_type_flag; }
- | nonempty_cv_qualifiers %prec EMPTY
- { $$.t = build_tree_list ($1.t, NULL_TREE);
- $$.new_type_flag = $1.new_type_flag; }
- ;
-
-/* Declspecs which contain at least one type specifier or typedef name.
- (Just `const' or `volatile' is not enough.)
- A typedef'd name following these is taken as a name to be declared.
- In the result, declspecs have a non-NULL TREE_VALUE, attributes do not. */
-
-typed_declspecs:
- typed_typespecs %prec EMPTY
- { $$.lookups = type_lookups; }
- | typed_declspecs1
- { $$.lookups = type_lookups; }
- ;
-
-typed_declspecs1:
- declmods typespec
- { $$.t = tree_cons (NULL_TREE, $2.t, $1.t);
- $$.new_type_flag = $2.new_type_flag; }
- | typespec reserved_declspecs %prec HYPERUNARY
- { $$.t = tree_cons (NULL_TREE, $1.t, $2);
- $$.new_type_flag = $1.new_type_flag; }
- | typespec reserved_typespecquals reserved_declspecs
- { $$.t = tree_cons (NULL_TREE, $1.t, chainon ($2, $3));
- $$.new_type_flag = $1.new_type_flag; }
- | declmods typespec reserved_declspecs
- { $$.t = tree_cons (NULL_TREE, $2.t, chainon ($3, $1.t));
- $$.new_type_flag = $2.new_type_flag; }
- | declmods typespec reserved_typespecquals
- { $$.t = tree_cons (NULL_TREE, $2.t, chainon ($3, $1.t));
- $$.new_type_flag = $2.new_type_flag; }
- | declmods typespec reserved_typespecquals reserved_declspecs
- { $$.t = tree_cons (NULL_TREE, $2.t,
- chainon ($3, chainon ($4, $1.t)));
- $$.new_type_flag = $2.new_type_flag; }
- ;
-
-reserved_declspecs:
- SCSPEC
- { if (extra_warnings)
- warning ("`%s' is not at beginning of declaration",
- IDENTIFIER_POINTER ($$));
- $$ = build_tree_list (NULL_TREE, $$); }
- | reserved_declspecs typespecqual_reserved
- { $$ = tree_cons (NULL_TREE, $2.t, $$); }
- | reserved_declspecs SCSPEC
- { if (extra_warnings)
- warning ("`%s' is not at beginning of declaration",
- IDENTIFIER_POINTER ($2));
- $$ = tree_cons (NULL_TREE, $2, $$); }
- ;
-
-/* List of just storage classes and type modifiers.
- A declaration can start with just this, but then it cannot be used
- to redeclare a typedef-name.
- In the result, declspecs have a non-NULL TREE_VALUE, attributes do not. */
-
-/* We use hash_tree_cons for lists of typeless declspecs so that they end
- up on a persistent obstack. Otherwise, they could appear at the
- beginning of something like
-
- static const struct { int foo () { } } b;
-
- and would be discarded after we finish compiling foo. We don't need to
- worry once we see a type. */
-
-declmods:
- nonempty_cv_qualifiers %prec EMPTY
- { $$.lookups = NULL_TREE; TREE_STATIC ($$.t) = 1; }
- | SCSPEC
- {
- $$.t = hash_tree_cons (NULL_TREE, $1, NULL_TREE);
- $$.new_type_flag = 0; $$.lookups = NULL_TREE;
- }
- | declmods CV_QUALIFIER
- {
- $$.t = hash_tree_cons (NULL_TREE, $2, $1.t);
- TREE_STATIC ($$.t) = 1;
- }
- | declmods SCSPEC
- {
- if (extra_warnings && TREE_STATIC ($$.t))
- warning ("`%s' is not at beginning of declaration",
- IDENTIFIER_POINTER ($2));
- $$.t = hash_tree_cons (NULL_TREE, $2, $1.t);
- TREE_STATIC ($$.t) = TREE_STATIC ($1.t);
- }
- | declmods attributes
- { $$.t = hash_tree_cons ($2, NULL_TREE, $1.t); }
- ;
-
-/* Used instead of declspecs where storage classes are not allowed
- (that is, for typenames and structure components).
-
- C++ can takes storage classes for structure components.
- Don't accept a typedef-name if anything but a modifier precedes it. */
-
-typed_typespecs:
- typespec %prec EMPTY
- { $$.t = build_tree_list (NULL_TREE, $1.t);
- $$.new_type_flag = $1.new_type_flag; }
- | nonempty_cv_qualifiers typespec
- { $$.t = tree_cons (NULL_TREE, $2.t, $1.t);
- $$.new_type_flag = $2.new_type_flag; }
- | typespec reserved_typespecquals
- { $$.t = tree_cons (NULL_TREE, $1.t, $2);
- $$.new_type_flag = $1.new_type_flag; }
- | nonempty_cv_qualifiers typespec reserved_typespecquals
- { $$.t = tree_cons (NULL_TREE, $2.t, chainon ($3, $1.t));
- $$.new_type_flag = $2.new_type_flag; }
- ;
-
-reserved_typespecquals:
- typespecqual_reserved
- { $$ = build_tree_list (NULL_TREE, $1.t); }
- | reserved_typespecquals typespecqual_reserved
- { $$ = tree_cons (NULL_TREE, $2.t, $1); }
- | reserved_typespecquals attributes
- { $$ = tree_cons ($2, NULL_TREE, $1); }
- | attributes %prec EMPTY
- { $$ = tree_cons ($1, NULL_TREE, NULL_TREE); }
- ;
-
-sizeof:
- SIZEOF { skip_evaluation++; }
- ;
-
-alignof:
- ALIGNOF { skip_evaluation++; }
- ;
-
-typeof:
- TYPEOF { skip_evaluation++; }
- ;
-
-/* A typespec (but not a type qualifier).
- Once we have seen one of these in a declaration,
- if a typedef name appears then it is being redeclared. */
-
-typespec:
- structsp
- { $$.lookups = NULL_TREE; }
- | TYPESPEC %prec EMPTY
- { $$.t = $1; $$.new_type_flag = 0; $$.lookups = NULL_TREE; }
- | complete_type_name
- { $$.t = $1; $$.new_type_flag = 0; $$.lookups = NULL_TREE; }
- | typeof '(' expr ')'
- { $$.t = finish_typeof ($3);
- $$.new_type_flag = 0; $$.lookups = NULL_TREE;
- skip_evaluation--; }
- | typeof '(' type_id ')'
- { $$.t = groktypename ($3.t);
- $$.new_type_flag = 0; $$.lookups = NULL_TREE;
- skip_evaluation--; }
- | SIGOF '(' expr ')'
- { tree type = TREE_TYPE ($3);
-
- $$.new_type_flag = 0; $$.lookups = NULL_TREE;
- if (IS_AGGR_TYPE (type))
- {
- sorry ("sigof type specifier");
- $$.t = type;
- }
- else
- {
- error ("`sigof' applied to non-aggregate expression");
- $$.t = error_mark_node;
- }
- }
- | SIGOF '(' type_id ')'
- { tree type = groktypename ($3.t);
-
- $$.new_type_flag = 0; $$.lookups = NULL_TREE;
- if (IS_AGGR_TYPE (type))
- {
- sorry ("sigof type specifier");
- $$.t = type;
- }
- else
- {
- error("`sigof' applied to non-aggregate type");
- $$.t = error_mark_node;
- }
- }
- ;
-
-/* A typespec that is a reserved word, or a type qualifier. */
-
-typespecqual_reserved:
- TYPESPEC
- { $$.t = $1; $$.new_type_flag = 0; }
- | CV_QUALIFIER
- { $$.t = $1; $$.new_type_flag = 0; }
- | structsp
- ;
-
-initdecls:
- initdcl0
- | initdecls ',' initdcl
- { check_multiple_declarators (); }
- ;
-
-notype_initdecls:
- notype_initdcl0
- | notype_initdecls ',' initdcl
- { check_multiple_declarators (); }
- ;
-
-nomods_initdecls:
- nomods_initdcl0
- | nomods_initdecls ',' initdcl
- { check_multiple_declarators (); }
- ;
-
-maybeasm:
- /* empty */
- { $$ = NULL_TREE; }
- | asm_keyword '(' STRING ')'
- { $$ = $3; }
- ;
-
-initdcl:
- declarator maybeasm maybe_attribute '='
- { $<ttype>$ = parse_decl ($<ttype>1, $3, 1); }
- init
-/* Note how the declaration of the variable is in effect while its init is parsed! */
- { parse_end_decl ($<ttype>5, $6, $2); }
- | declarator maybeasm maybe_attribute
- {
- $<ttype>$ = parse_decl ($<ttype>1, $3, 0);
- parse_end_decl ($<ttype>$, NULL_TREE, $2);
- }
- ;
-
- /* This rule assumes a certain configuration of the parser stack.
- In particular, $0, the element directly before the beginning of
- this rule on the stack, must be a maybeasm. $-1 must be a
- declarator or notype_declarator. And $-2 must be some declmods
- or declspecs. We can't move the maybeasm into this rule because
- we need that reduce so we prefer fn.def1 when appropriate. */
-initdcl0_innards:
- maybe_attribute '='
- { $<ttype>$ = parse_decl0 ($<ttype>-1, $<ftype>-2.t,
- $<ftype>-2.lookups, $1, 1); }
- /* Note how the declaration of the variable is in effect
- while its init is parsed! */
- init
- { parse_end_decl ($<ttype>3, $4, $<ttype>0); }
- | maybe_attribute
- { tree d = parse_decl0 ($<ttype>-1, $<ftype>-2.t,
- $<ftype>-2.lookups, $1, 0);
- parse_end_decl (d, NULL_TREE, $<ttype>0); }
- ;
-
-initdcl0:
- declarator maybeasm initdcl0_innards
- {}
- ;
-
-notype_initdcl0:
- notype_declarator maybeasm initdcl0_innards
- {}
- ;
-
-nomods_initdcl0:
- notype_declarator maybeasm
- { /* Set things up as initdcl0_innards expects. */
- $<ttype>$ = $2;
- $2 = $1;
- $<ftype>1.t = NULL_TREE;
- $<ftype>1.lookups = NULL_TREE; }
- initdcl0_innards
- {}
- | constructor_declarator maybeasm maybe_attribute
- { tree d = parse_decl0 ($1, NULL_TREE, NULL_TREE, $3, 0);
- parse_end_decl (d, NULL_TREE, $2); }
- ;
-
-/* the * rules are dummies to accept the Apollo extended syntax
- so that the header files compile. */
-maybe_attribute:
- /* empty */
- { $$ = NULL_TREE; }
- | attributes
- { $$ = $1; }
- ;
-
-attributes:
- attribute
- { $$ = $1; }
- | attributes attribute
- { $$ = chainon ($1, $2); }
- ;
-
-attribute:
- ATTRIBUTE '(' '(' attribute_list ')' ')'
- { $$ = $4; }
- ;
-
-attribute_list:
- attrib
- { $$ = $1; }
- | attribute_list ',' attrib
- { $$ = chainon ($1, $3); }
- ;
-
-attrib:
- /* empty */
- { $$ = NULL_TREE; }
- | any_word
- { $$ = build_tree_list ($1, NULL_TREE); }
- | any_word '(' IDENTIFIER ')'
- { $$ = build_tree_list ($1, build_tree_list (NULL_TREE, $3)); }
- | any_word '(' IDENTIFIER ',' nonnull_exprlist ')'
- { $$ = build_tree_list ($1, tree_cons (NULL_TREE, $3, $5)); }
- | any_word '(' nonnull_exprlist ')'
- { $$ = build_tree_list ($1, $3); }
- ;
-
-/* This still leaves out most reserved keywords,
- shouldn't we include them? */
-
-any_word:
- identifier
- | SCSPEC
- | TYPESPEC
- | CV_QUALIFIER
- ;
-
-/* A nonempty list of identifiers, including typenames. */
-identifiers_or_typenames:
- identifier
- { $$ = build_tree_list (NULL_TREE, $1); }
- | identifiers_or_typenames ',' identifier
- { $$ = chainon ($1, build_tree_list (NULL_TREE, $3)); }
- ;
-
-maybe_init:
- /* empty */ %prec EMPTY
- { $$ = NULL_TREE; }
- | '=' init
- { $$ = $2; }
- ;
-
-/* If we are processing a template, we don't want to expand this
- initializer yet. */
-
-init:
- expr_no_commas %prec '='
- | '{' '}'
- { $$ = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE);
- TREE_HAS_CONSTRUCTOR ($$) = 1; }
- | '{' initlist '}'
- { $$ = build_nt (CONSTRUCTOR, NULL_TREE, nreverse ($2));
- TREE_HAS_CONSTRUCTOR ($$) = 1; }
- | '{' initlist ',' '}'
- { $$ = build_nt (CONSTRUCTOR, NULL_TREE, nreverse ($2));
- TREE_HAS_CONSTRUCTOR ($$) = 1; }
- | error
- { $$ = NULL_TREE; }
- ;
-
-/* This chain is built in reverse order,
- and put in forward order where initlist is used. */
-initlist:
- init
- { $$ = build_tree_list (NULL_TREE, $$); }
- | initlist ',' init
- { $$ = tree_cons (NULL_TREE, $3, $$); }
- /* These are for labeled elements. */
- | '[' expr_no_commas ']' init
- { $$ = build_tree_list ($2, $4); }
- | identifier ':' init
- { $$ = build_tree_list ($$, $3); }
- | initlist ',' identifier ':' init
- { $$ = tree_cons ($3, $5, $$); }
- ;
-
-pending_inline:
- PRE_PARSED_FUNCTION_DECL maybe_return_init function_body
- {
- expand_body (finish_function (2));
- process_next_inline ($1);
- }
- | PRE_PARSED_FUNCTION_DECL maybe_return_init function_try_block
- {
- expand_body (finish_function (2));
- process_next_inline ($1);
- }
- | PRE_PARSED_FUNCTION_DECL maybe_return_init error
- {
- finish_function (2);
- process_next_inline ($1); }
- ;
-
-pending_inlines:
- /* empty */
- | pending_inlines pending_inline eat_saved_input
- ;
-
-/* A regurgitated default argument. The value of DEFARG_MARKER will be
- the TREE_LIST node for the parameter in question. */
-defarg_again:
- DEFARG_MARKER expr_no_commas END_OF_SAVED_INPUT
- { replace_defarg ($1, $2); }
- | DEFARG_MARKER error END_OF_SAVED_INPUT
- { replace_defarg ($1, error_mark_node); }
- ;
-
-pending_defargs:
- /* empty */ %prec EMPTY
- | pending_defargs defarg_again
- { do_pending_defargs (); }
- | pending_defargs error
- { do_pending_defargs (); }
- ;
-
-structsp:
- ENUM identifier '{'
- { $<ttype>$ = current_enum_type;
- current_enum_type = start_enum ($2); }
- enumlist_opt '}'
- { $$.t = current_enum_type;
- finish_enum (current_enum_type);
- $$.new_type_flag = 1;
- current_enum_type = $<ttype>4;
- check_for_missing_semicolon ($$.t); }
- | ENUM '{'
- { $<ttype>$ = current_enum_type;
- current_enum_type = start_enum (make_anon_name ()); }
- enumlist_opt '}'
- { $$.t = current_enum_type;
- finish_enum (current_enum_type);
- $$.new_type_flag = 1;
- current_enum_type = $<ttype>3;
- check_for_missing_semicolon ($$.t); }
- | ENUM identifier
- { $$.t = parse_xref_tag (enum_type_node, $2, 1);
- $$.new_type_flag = 0; }
- | ENUM complex_type_name
- { $$.t = parse_xref_tag (enum_type_node, $2, 1);
- $$.new_type_flag = 0; }
- | TYPENAME_KEYWORD typename_sub
- { $$.t = $2;
- $$.new_type_flag = 0;
- if (!processing_template_decl)
- pedwarn ("using `typename' outside of template"); }
- /* C++ extensions, merged with C to avoid shift/reduce conflicts */
- | class_head_defn maybe_base_class_list '{'
- {
- if ($2 && $1.t != error_mark_node)
- {
- tree type = TREE_TYPE ($1.t);
-
- if (TREE_CODE (type) == TYPENAME_TYPE)
- {
- if (IMPLICIT_TYPENAME_P (type))
- /* In a definition of a member class template,
- we will get here with an implicit typename,
- a TYPENAME_TYPE with a type. */
- type = TREE_TYPE (type);
- else
- {
- error ("qualified name does not name a class");
- type = error_mark_node;
- }
- }
- maybe_process_partial_specialization (type);
- xref_basetypes (type, $2);
- }
- $1.t = begin_class_definition (TREE_TYPE ($1.t));
- check_class_key (current_aggr, $1.t);
- current_aggr = NULL_TREE; }
- opt.component_decl_list '}' maybe_attribute
- {
- int semi;
- tree t;
-
- if (yychar == YYEMPTY)
- yychar = YYLEX;
- semi = yychar == ';';
-
- t = finish_class_definition ($1.t, $7, semi, $1.new_type_flag);
- $<ttype>$ = t;
-
- /* restore current_aggr */
- current_aggr = TREE_CODE (t) != RECORD_TYPE
- ? union_type_node
- : CLASSTYPE_DECLARED_CLASS (t)
- ? class_type_node : record_type_node;
- }
- pending_defargs
- {
- done_pending_defargs ();
- begin_inline_definitions ();
- }
- pending_inlines
- {
- $$.t = $<ttype>8;
- $$.new_type_flag = 1;
- }
- | class_head_decl
- {
- $$.t = TREE_TYPE ($1.t);
- $$.new_type_flag = $1.new_type_flag;
- check_class_key (current_aggr, $$.t);
- }
- ;
-
-maybecomma:
- /* empty */
- | ','
- ;
-
-maybecomma_warn:
- /* empty */
- | ','
- { if (pedantic && !in_system_header)
- pedwarn ("comma at end of enumerator list"); }
- ;
-
-aggr:
- AGGR
- | aggr SCSPEC
- { error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER ($2)); }
- | aggr TYPESPEC
- { error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER ($2)); }
- | aggr CV_QUALIFIER
- { error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER ($2)); }
- | aggr AGGR
- { error ("no body nor ';' separates two class, struct or union declarations"); }
- | aggr attributes
- { $$ = build_tree_list ($2, $1); }
- ;
-
-class_head:
- aggr identifier
- {
- current_aggr = $1;
- $$ = build_tree_list (NULL_TREE, $2);
- }
- | aggr nested_name_specifier identifier
- {
- current_aggr = $1;
- $$ = build_tree_list ($2, $3);
- }
- | aggr global_scope nested_name_specifier identifier
- {
- current_aggr = $1;
- $$ = build_tree_list ($3, $4);
- }
- | aggr global_scope identifier
- {
- current_aggr = $1;
- $$ = build_tree_list (global_namespace, $3);
- }
- ;
-
-class_head_apparent_template:
- aggr apparent_template_type
- {
- current_aggr = $1;
- $$ = $2;
- }
- | aggr nested_name_specifier apparent_template_type
- {
- current_aggr = $1;
- $$ = $3;
- }
- | aggr global_scope nested_name_specifier apparent_template_type
- {
- current_aggr = $1;
- $$ = $4;
- }
- ;
-
-class_head_decl:
- class_head %prec EMPTY
- {
- $$.t = parse_handle_class_head (current_aggr,
- TREE_PURPOSE ($1),
- TREE_VALUE ($1),
- 0, &$$.new_type_flag);
- }
- | aggr identifier_defn %prec EMPTY
- {
- current_aggr = $1;
- $$.t = TYPE_MAIN_DECL (parse_xref_tag (current_aggr, $2, 0));
- $$.new_type_flag = 1;
- }
- | class_head_apparent_template %prec EMPTY
- {
- $$.t = $1;
- $$.new_type_flag = 0;
- }
- ;
-
-class_head_defn:
- class_head '{'
- {
- yyungetc ('{', 1);
- $$.t = parse_handle_class_head (current_aggr,
- TREE_PURPOSE ($1),
- TREE_VALUE ($1),
- 1,
- &$$.new_type_flag);
- }
- | class_head ':'
- {
- yyungetc (':', 1);
- $$.t = parse_handle_class_head (current_aggr,
- TREE_PURPOSE ($1),
- TREE_VALUE ($1),
- 1, &$$.new_type_flag);
- }
- | class_head_apparent_template '{'
- {
- yyungetc ('{', 1);
- $$.t = handle_class_head_apparent_template
- ($1, &$$.new_type_flag);
- }
- | class_head_apparent_template ':'
- {
- yyungetc (':', 1);
- $$.t = handle_class_head_apparent_template
- ($1, &$$.new_type_flag);
- }
- | aggr identifier_defn '{'
- {
- yyungetc ('{', 1);
- current_aggr = $1;
- $$.t = parse_handle_class_head (current_aggr,
- NULL_TREE, $2,
- 1, &$$.new_type_flag);
- }
- | aggr identifier_defn ':'
- {
- yyungetc (':', 1);
- current_aggr = $1;
- $$.t = parse_handle_class_head (current_aggr,
- NULL_TREE, $2,
- 1, &$$.new_type_flag);
- }
- | aggr '{'
- {
- current_aggr = $1;
- $$.t = TYPE_MAIN_DECL (parse_xref_tag ($1,
- make_anon_name (),
- 0));
- $$.new_type_flag = 0;
- CLASSTYPE_DECLARED_CLASS (TREE_TYPE ($$.t))
- = $1 == class_type_node;
- yyungetc ('{', 1);
- }
- ;
-
-maybe_base_class_list:
- /* empty */
- { $$ = NULL_TREE; }
- | ':' see_typename
- { error ("no bases given following `:'");
- $$ = NULL_TREE; }
- | ':' see_typename base_class_list
- { $$ = $3; }
- ;
-
-base_class_list:
- base_class
- | base_class_list ',' see_typename base_class
- { $$ = chainon ($$, $4); }
- ;
-
-base_class:
- base_class_1
- { $$ = finish_base_specifier (access_default_node, $1); }
- | base_class_access_list see_typename base_class_1
- { $$ = finish_base_specifier ($1, $3); }
- ;
-
-base_class_1:
- typename_sub
- { if (!TYPE_P ($$))
- $$ = error_mark_node; }
- | nonnested_type
- { $$ = TREE_TYPE ($$); }
- ;
-
-base_class_access_list:
- VISSPEC see_typename
- | SCSPEC see_typename
- { if ($1 != ridpointers[(int)RID_VIRTUAL])
- error ("`%D' access", $1);
- $$ = access_default_virtual_node; }
- | base_class_access_list VISSPEC see_typename
- {
- if ($1 != access_default_virtual_node)
- error ("multiple access specifiers");
- else if ($2 == access_public_node)
- $$ = access_public_virtual_node;
- else if ($2 == access_protected_node)
- $$ = access_protected_virtual_node;
- else /* $2 == access_private_node */
- $$ = access_private_virtual_node;
- }
- | base_class_access_list SCSPEC see_typename
- { if ($2 != ridpointers[(int)RID_VIRTUAL])
- error ("`%D' access", $2);
- else if ($$ == access_public_node)
- $$ = access_public_virtual_node;
- else if ($$ == access_protected_node)
- $$ = access_protected_virtual_node;
- else if ($$ == access_private_node)
- $$ = access_private_virtual_node;
- else
- error ("multiple `virtual' specifiers");
- }
- ;
-
-opt.component_decl_list:
- | component_decl_list
- | opt.component_decl_list access_specifier component_decl_list
- | opt.component_decl_list access_specifier
- ;
-
-access_specifier:
- VISSPEC ':'
- {
- current_access_specifier = $1;
- }
- ;
-
-/* Note: we no longer warn about the semicolon after a component_decl_list.
- ARM $9.2 says that the semicolon is optional, and therefore allowed. */
-component_decl_list:
- component_decl
- {
- finish_member_declaration ($1);
- current_aggr = NULL_TREE;
- reset_type_access_control ();
- }
- | component_decl_list component_decl
- {
- finish_member_declaration ($2);
- current_aggr = NULL_TREE;
- reset_type_access_control ();
- }
- ;
-
-component_decl:
- component_decl_1 ';'
- | component_decl_1 '}'
- { error ("missing ';' before right brace");
- yyungetc ('}', 0); }
- /* C++: handle constructors, destructors and inline functions */
- /* note that INLINE is like a TYPESPEC */
- | fn_def2 ':' /* base_init compstmt */
- { $$ = finish_method ($$); }
- | fn_def2 TRY /* base_init compstmt */
- { $$ = finish_method ($$); }
- | fn_def2 RETURN_KEYWORD /* base_init compstmt */
- { $$ = finish_method ($$); }
- | fn_def2 '{' /* nodecls compstmt */
- { $$ = finish_method ($$); }
- | ';'
- { $$ = NULL_TREE; }
- | extension component_decl
- { $$ = $2;
- pedantic = $1; }
- | template_header component_decl
- {
- if ($2)
- $$ = finish_member_template_decl ($2);
- else
- /* The component was already processed. */
- $$ = NULL_TREE;
-
- finish_template_decl ($1);
- }
- | template_header typed_declspecs ';'
- {
- $$ = finish_member_class_template ($2.t);
- finish_template_decl ($1);
- }
- | bad_decl
- { $$ = NULL_TREE; }
- ;
-
-component_decl_1:
- /* Do not add a "typed_declspecs declarator" rule here for
- speed; we need to call grok_x_components for enums, so the
- speedup would be insignificant. */
- typed_declspecs components
- {
- /* Most of the productions for component_decl only
- allow the creation of one new member, so we call
- finish_member_declaration in component_decl_list.
- For this rule and the next, however, there can be
- more than one member, e.g.:
-
- int i, j;
-
- and we need the first member to be fully
- registered before the second is processed.
- Therefore, the rules for components take care of
- this processing. To avoid registering the
- components more than once, we send NULL_TREE up
- here; that lets finish_member_declaration know
- that there is nothing to do. */
- if (!$2)
- grok_x_components ($1.t);
- $$ = NULL_TREE;
- }
- | declmods notype_components
- {
- if (!$2)
- grok_x_components ($1.t);
- $$ = NULL_TREE;
- }
- | notype_declarator maybeasm maybe_attribute maybe_init
- { $$ = grokfield ($$, NULL_TREE, $4, $2, $3); }
- | constructor_declarator maybeasm maybe_attribute maybe_init
- { $$ = grokfield ($$, NULL_TREE, $4, $2, $3); }
- | ':' expr_no_commas
- { $$ = grokbitfield (NULL_TREE, NULL_TREE, $2); }
- | error
- { $$ = NULL_TREE; }
-
- /* These rules introduce a reduce/reduce conflict; in
- typedef int foo, bar;
- class A {
- foo (bar);
- };
- should "A::foo" be declared as a function or "A::bar" as a data
- member? In other words, is "bar" an after_type_declarator or a
- parmlist? */
- | declmods component_constructor_declarator maybeasm maybe_attribute maybe_init
- { tree specs, attrs;
- split_specs_attrs ($1.t, &specs, &attrs);
- $$ = grokfield ($2, specs, $5, $3,
- chainon ($4, attrs)); }
- | component_constructor_declarator maybeasm maybe_attribute maybe_init
- { $$ = grokfield ($$, NULL_TREE, $4, $2, $3); }
- | using_decl
- { $$ = do_class_using_decl ($1); }
- ;
-
-/* The case of exactly one component is handled directly by component_decl. */
-/* ??? Huh? ^^^ */
-components:
- /* empty: possibly anonymous */
- { $$ = 0; }
- | component_declarator0
- {
- if (PROCESSING_REAL_TEMPLATE_DECL_P ())
- $1 = finish_member_template_decl ($1);
- finish_member_declaration ($1);
- $$ = 1;
- }
- | components ',' component_declarator
- {
- check_multiple_declarators ();
- if (PROCESSING_REAL_TEMPLATE_DECL_P ())
- $3 = finish_member_template_decl ($3);
- finish_member_declaration ($3);
- $$ = 2;
- }
- ;
-
-notype_components:
- /* empty: possibly anonymous */
- { $$ = 0; }
- | notype_component_declarator0
- {
- if (PROCESSING_REAL_TEMPLATE_DECL_P ())
- $1 = finish_member_template_decl ($1);
- finish_member_declaration ($1);
- $$ = 1;
- }
- | notype_components ',' notype_component_declarator
- {
- check_multiple_declarators ();
- if (PROCESSING_REAL_TEMPLATE_DECL_P ())
- $3 = finish_member_template_decl ($3);
- finish_member_declaration ($3);
- $$ = 2;
- }
- ;
-
-component_declarator0:
- after_type_component_declarator0
- | notype_component_declarator0
- ;
-
-component_declarator:
- after_type_component_declarator
- | notype_component_declarator
- ;
-
-after_type_component_declarator0:
- after_type_declarator maybeasm maybe_attribute maybe_init
- { $$ = parse_field0 ($1, $<ftype>0.t, $<ftype>0.lookups,
- $3, $2, $4); }
- | tTYPENAME ':' expr_no_commas maybe_attribute
- { $$ = parse_bitfield0 ($1, $<ftype>0.t, $<ftype>0.lookups,
- $4, $3); }
- ;
-
-notype_component_declarator0:
- notype_declarator maybeasm maybe_attribute maybe_init
- { $$ = parse_field0 ($1, $<ftype>0.t, $<ftype>0.lookups,
- $3, $2, $4); }
- | constructor_declarator maybeasm maybe_attribute maybe_init
- { $$ = parse_field0 ($1, $<ftype>0.t, $<ftype>0.lookups,
- $3, $2, $4); }
- | IDENTIFIER ':' expr_no_commas maybe_attribute
- { $$ = parse_bitfield0 ($1, $<ftype>0.t, $<ftype>0.lookups,
- $4, $3); }
- | ':' expr_no_commas maybe_attribute
- { $$ = parse_bitfield0 (NULL_TREE, $<ftype>0.t,
- $<ftype>0.lookups, $3, $2); }
- ;
-
-after_type_component_declarator:
- after_type_declarator maybeasm maybe_attribute maybe_init
- { $$ = parse_field ($1, $3, $2, $4); }
- | tTYPENAME ':' expr_no_commas maybe_attribute
- { $$ = parse_bitfield ($1, $4, $3); }
- ;
-
-notype_component_declarator:
- notype_declarator maybeasm maybe_attribute maybe_init
- { $$ = parse_field ($1, $3, $2, $4); }
- | IDENTIFIER ':' expr_no_commas maybe_attribute
- { $$ = parse_bitfield ($1, $4, $3); }
- | ':' expr_no_commas maybe_attribute
- { $$ = parse_bitfield (NULL_TREE, $3, $2); }
- ;
-
-enumlist_opt:
- enumlist maybecomma_warn
- | maybecomma_warn
- ;
-
-/* We chain the enumerators in reverse order.
- Because of the way enums are built, the order is
- insignificant. Take advantage of this fact. */
-
-enumlist:
- enumerator
- | enumlist ',' enumerator
- ;
-
-enumerator:
- identifier
- { build_enumerator ($1, NULL_TREE, current_enum_type); }
- | identifier '=' expr_no_commas
- { build_enumerator ($1, $3, current_enum_type); }
- ;
-
-/* ISO new-type-id (5.3.4) */
-new_type_id:
- type_specifier_seq new_declarator
- { $$.t = build_tree_list ($1.t, $2);
- $$.new_type_flag = $1.new_type_flag; }
- | type_specifier_seq %prec EMPTY
- { $$.t = build_tree_list ($1.t, NULL_TREE);
- $$.new_type_flag = $1.new_type_flag; }
- /* GNU extension to allow arrays of arbitrary types with
- non-constant dimension. */
- | '(' type_id ')' '[' expr ']'
- {
- if (pedantic)
- pedwarn ("ISO C++ forbids array dimensions with parenthesized type in new");
- $$.t = build_nt (ARRAY_REF, TREE_VALUE ($2.t), $5);
- $$.t = build_tree_list (TREE_PURPOSE ($2.t), $$.t);
- $$.new_type_flag = $2.new_type_flag;
- }
- ;
-
-cv_qualifiers:
- /* empty */ %prec EMPTY
- { $$ = NULL_TREE; }
- | cv_qualifiers CV_QUALIFIER
- { $$ = tree_cons (NULL_TREE, $2, $$); }
- ;
-
-nonempty_cv_qualifiers:
- CV_QUALIFIER
- { $$.t = hash_tree_cons (NULL_TREE, $1, NULL_TREE);
- $$.new_type_flag = 0; }
- | nonempty_cv_qualifiers CV_QUALIFIER
- { $$.t = hash_tree_cons (NULL_TREE, $2, $1.t);
- $$.new_type_flag = $1.new_type_flag; }
- | attributes %prec EMPTY
- { $$.t = hash_tree_cons ($1, NULL_TREE, NULL_TREE);
- $$.new_type_flag = 0; }
- | nonempty_cv_qualifiers attributes %prec EMPTY
- { $$.t = hash_tree_cons ($2, NULL_TREE, $1.t);
- $$.new_type_flag = $1.new_type_flag; }
- ;
-
-/* These rules must follow the rules for function declarations
- and component declarations. That way, longer rules are preferred. */
-
-/* An expression which will not live on the momentary obstack. */
-maybe_parmlist:
- '(' nonnull_exprlist ')'
- { $$ = $2; }
- | '(' parmlist ')'
- { $$ = $2; }
- | LEFT_RIGHT
- { $$ = empty_parms (); }
- | '(' error ')'
- { $$ = NULL_TREE; }
- ;
-
-/* A declarator that is allowed only after an explicit typespec. */
-
-after_type_declarator_intern:
- after_type_declarator
- | attributes after_type_declarator
- {
- /* Provide support for '(' attributes '*' declarator ')'
- etc */
- $$ = tree_cons ($1, $2, NULL_TREE);
- }
- ;
-
-/* may all be followed by prec '.' */
-after_type_declarator:
- '*' nonempty_cv_qualifiers after_type_declarator_intern %prec UNARY
- { $$ = make_pointer_declarator ($2.t, $3); }
- | '&' nonempty_cv_qualifiers after_type_declarator_intern %prec UNARY
- { $$ = make_reference_declarator ($2.t, $3); }
- | '*' after_type_declarator_intern %prec UNARY
- { $$ = make_pointer_declarator (NULL_TREE, $2); }
- | '&' after_type_declarator_intern %prec UNARY
- { $$ = make_reference_declarator (NULL_TREE, $2); }
- | ptr_to_mem cv_qualifiers after_type_declarator_intern
- { tree arg = make_pointer_declarator ($2, $3);
- $$ = build_nt (SCOPE_REF, $1, arg);
- }
- | direct_after_type_declarator
- ;
-
-direct_after_type_declarator:
- direct_after_type_declarator maybe_parmlist cv_qualifiers exception_specification_opt %prec '.'
- { $$ = make_call_declarator ($$, $2, $3, $4); }
- | direct_after_type_declarator '[' expr ']'
- { $$ = build_nt (ARRAY_REF, $$, $3); }
- | direct_after_type_declarator '[' ']'
- { $$ = build_nt (ARRAY_REF, $$, NULL_TREE); }
- | '(' after_type_declarator_intern ')'
- { $$ = $2; }
- | nested_name_specifier type_name %prec EMPTY
- { push_nested_class ($1, 3);
- $$ = build_nt (SCOPE_REF, $$, $2);
- TREE_COMPLEXITY ($$) = current_class_depth; }
- | type_name %prec EMPTY
- ;
-
-nonnested_type:
- type_name %prec EMPTY
- {
- if (TREE_CODE ($1) == IDENTIFIER_NODE)
- {
- $$ = lookup_name ($1, 1);
- maybe_note_name_used_in_class ($1, $$);
- }
- else
- $$ = $1;
- }
- | global_scope type_name
- {
- if (TREE_CODE ($2) == IDENTIFIER_NODE)
- $$ = IDENTIFIER_GLOBAL_VALUE ($2);
- else
- $$ = $2;
- got_scope = NULL_TREE;
- }
- ;
-
-complete_type_name:
- nonnested_type
- | nested_type
- | global_scope nested_type
- { $$ = $2; }
- ;
-
-nested_type:
- nested_name_specifier type_name %prec EMPTY
- { $$ = get_type_decl ($2); }
- ;
-
-/* A declarator allowed whether or not there has been
- an explicit typespec. These cannot redeclare a typedef-name. */
-
-notype_declarator_intern:
- notype_declarator
- | attributes notype_declarator
- {
- /* Provide support for '(' attributes '*' declarator ')'
- etc */
- $$ = tree_cons ($1, $2, NULL_TREE);
- }
- ;
-
-notype_declarator:
- '*' nonempty_cv_qualifiers notype_declarator_intern %prec UNARY
- { $$ = make_pointer_declarator ($2.t, $3); }
- | '&' nonempty_cv_qualifiers notype_declarator_intern %prec UNARY
- { $$ = make_reference_declarator ($2.t, $3); }
- | '*' notype_declarator_intern %prec UNARY
- { $$ = make_pointer_declarator (NULL_TREE, $2); }
- | '&' notype_declarator_intern %prec UNARY
- { $$ = make_reference_declarator (NULL_TREE, $2); }
- | ptr_to_mem cv_qualifiers notype_declarator_intern
- { tree arg = make_pointer_declarator ($2, $3);
- $$ = build_nt (SCOPE_REF, $1, arg);
- }
- | direct_notype_declarator
- ;
-
-complex_notype_declarator:
- '*' nonempty_cv_qualifiers notype_declarator_intern %prec UNARY
- { $$ = make_pointer_declarator ($2.t, $3); }
- | '&' nonempty_cv_qualifiers notype_declarator_intern %prec UNARY
- { $$ = make_reference_declarator ($2.t, $3); }
- | '*' complex_notype_declarator %prec UNARY
- { $$ = make_pointer_declarator (NULL_TREE, $2); }
- | '&' complex_notype_declarator %prec UNARY
- { $$ = make_reference_declarator (NULL_TREE, $2); }
- | ptr_to_mem cv_qualifiers notype_declarator_intern
- { tree arg = make_pointer_declarator ($2, $3);
- $$ = build_nt (SCOPE_REF, $1, arg);
- }
- | complex_direct_notype_declarator
- ;
-
-complex_direct_notype_declarator:
- direct_notype_declarator maybe_parmlist cv_qualifiers exception_specification_opt %prec '.'
- { $$ = make_call_declarator ($$, $2, $3, $4); }
- | '(' complex_notype_declarator ')'
- { $$ = $2; }
- | direct_notype_declarator '[' expr ']'
- { $$ = build_nt (ARRAY_REF, $$, $3); }
- | direct_notype_declarator '[' ']'
- { $$ = build_nt (ARRAY_REF, $$, NULL_TREE); }
- | notype_qualified_id
- { enter_scope_of ($1); }
- | global_scope notype_qualified_id
- { enter_scope_of ($2); $$ = $2;}
- | global_scope notype_unqualified_id
- { $$ = build_nt (SCOPE_REF, global_namespace, $2);
- enter_scope_of ($$);
- }
- | nested_name_specifier notype_template_declarator
- { got_scope = NULL_TREE;
- $$ = build_nt (SCOPE_REF, $1, $2);
- enter_scope_of ($$);
- }
- ;
-
-qualified_id:
- nested_name_specifier unqualified_id
- { got_scope = NULL_TREE;
- $$ = build_nt (SCOPE_REF, $$, $2); }
- | nested_name_specifier object_template_id
- { got_scope = NULL_TREE;
- $$ = build_nt (SCOPE_REF, $1, $2); }
- ;
-
-notype_qualified_id:
- nested_name_specifier notype_unqualified_id
- { got_scope = NULL_TREE;
- $$ = build_nt (SCOPE_REF, $$, $2); }
- | nested_name_specifier object_template_id
- { got_scope = NULL_TREE;
- $$ = build_nt (SCOPE_REF, $1, $2); }
- ;
-
-overqualified_id:
- notype_qualified_id
- | global_scope notype_qualified_id
- { $$ = $2; }
- ;
-
-functional_cast:
- typespec '(' nonnull_exprlist ')'
- { $$ = build_functional_cast ($1.t, $3); }
- | typespec '(' expr_or_declarator_intern ')'
- { $$ = reparse_decl_as_expr ($1.t, $3); }
- | typespec fcast_or_absdcl %prec EMPTY
- { $$ = reparse_absdcl_as_expr ($1.t, $2); }
- ;
-
-type_name:
- tTYPENAME
- | SELFNAME
- | template_type %prec EMPTY
- ;
-
-nested_name_specifier:
- nested_name_specifier_1
- | nested_name_specifier nested_name_specifier_1
- { $$ = $2; }
- | nested_name_specifier TEMPLATE explicit_template_type SCOPE
- { got_scope = $$
- = make_typename_type ($1, $3, tf_error | tf_parsing); }
- /* Error handling per Core 125. */
- | nested_name_specifier IDENTIFIER SCOPE
- { got_scope = $$
- = make_typename_type ($1, $2, tf_error | tf_parsing); }
- | nested_name_specifier PTYPENAME SCOPE
- { got_scope = $$
- = make_typename_type ($1, $2, tf_error | tf_parsing); }
- ;
-
-/* Why the @#$%^& do type_name and notype_identifier need to be expanded
- inline here?!? (jason) */
-nested_name_specifier_1:
- tTYPENAME SCOPE
- {
- if (TREE_CODE ($1) == IDENTIFIER_NODE)
- {
- $$ = lastiddecl;
- maybe_note_name_used_in_class ($1, $$);
- }
- got_scope = $$ =
- complete_type (TYPE_MAIN_VARIANT (TREE_TYPE ($$)));
- }
- | SELFNAME SCOPE
- {
- if (TREE_CODE ($1) == IDENTIFIER_NODE)
- $$ = lastiddecl;
- got_scope = $$ = TREE_TYPE ($$);
- }
- | NSNAME SCOPE
- {
- if (TREE_CODE ($$) == IDENTIFIER_NODE)
- $$ = lastiddecl;
- got_scope = $$;
- }
- | template_type SCOPE
- { got_scope = $$ = complete_type (TREE_TYPE ($1)); }
- ;
-
-typename_sub:
- typename_sub0
- | global_scope typename_sub0
- { $$ = $2; }
- ;
-
-typename_sub0:
- typename_sub1 identifier %prec EMPTY
- {
- if (TYPE_P ($1))
- $$ = make_typename_type ($1, $2, tf_error | tf_parsing);
- else if (TREE_CODE ($2) == IDENTIFIER_NODE)
- error ("`%T' is not a class or namespace", $2);
- else
- {
- $$ = $2;
- if (TREE_CODE ($$) == TYPE_DECL)
- $$ = TREE_TYPE ($$);
- }
- }
- | typename_sub1 template_type %prec EMPTY
- { $$ = TREE_TYPE ($2); }
- | typename_sub1 explicit_template_type %prec EMPTY
- { $$ = make_typename_type ($1, $2, tf_error | tf_parsing); }
- | typename_sub1 TEMPLATE explicit_template_type %prec EMPTY
- { $$ = make_typename_type ($1, $3, tf_error | tf_parsing); }
- ;
-
-typename_sub1:
- typename_sub2
- {
- if (TREE_CODE ($1) == IDENTIFIER_NODE)
- error ("`%T' is not a class or namespace", $1);
- else if (TREE_CODE ($1) == TYPE_DECL)
- $$ = TREE_TYPE ($1);
- }
- | typename_sub1 typename_sub2
- {
- if (TYPE_P ($1))
- $$ = make_typename_type ($1, $2, tf_error | tf_parsing);
- else if (TREE_CODE ($2) == IDENTIFIER_NODE)
- error ("`%T' is not a class or namespace", $2);
- else
- {
- $$ = $2;
- if (TREE_CODE ($$) == TYPE_DECL)
- $$ = TREE_TYPE ($$);
- }
- }
- | typename_sub1 explicit_template_type SCOPE
- { got_scope = $$
- = make_typename_type ($1, $2, tf_error | tf_parsing); }
- | typename_sub1 TEMPLATE explicit_template_type SCOPE
- { got_scope = $$
- = make_typename_type ($1, $3, tf_error | tf_parsing); }
- ;
-
-/* This needs to return a TYPE_DECL for simple names so that we don't
- forget what name was used. */
-typename_sub2:
- tTYPENAME SCOPE
- {
- if (TREE_CODE ($1) != TYPE_DECL)
- $$ = lastiddecl;
-
- /* Retrieve the type for the identifier, which might involve
- some computation. */
- got_scope = complete_type (TREE_TYPE ($$));
-
- if ($$ == error_mark_node)
- error ("`%T' is not a class or namespace", $1);
- }
- | SELFNAME SCOPE
- {
- if (TREE_CODE ($1) != TYPE_DECL)
- $$ = lastiddecl;
- got_scope = complete_type (TREE_TYPE ($$));
- }
- | template_type SCOPE
- { got_scope = $$ = complete_type (TREE_TYPE ($$)); }
- | PTYPENAME SCOPE
- | IDENTIFIER SCOPE
- | NSNAME SCOPE
- {
- if (TREE_CODE ($$) == IDENTIFIER_NODE)
- $$ = lastiddecl;
- got_scope = $$;
- }
- ;
-
-explicit_template_type:
- identifier '<' template_arg_list_opt template_close_bracket
- { $$ = build_min_nt (TEMPLATE_ID_EXPR, $1, $3); }
- ;
-
-complex_type_name:
- global_scope type_name
- {
- if (TREE_CODE ($2) == IDENTIFIER_NODE)
- $$ = IDENTIFIER_GLOBAL_VALUE ($2);
- else
- $$ = $2;
- got_scope = NULL_TREE;
- }
- | nested_type
- | global_scope nested_type
- { $$ = $2; }
- ;
-
-ptr_to_mem:
- nested_name_specifier '*'
- { got_scope = NULL_TREE; }
- | global_scope nested_name_specifier '*'
- { $$ = $2; got_scope = NULL_TREE; }
- ;
-
-/* All uses of explicit global scope must go through this nonterminal so
- that got_scope will be set before yylex is called to get the next token. */
-global_scope:
- SCOPE
- { got_scope = void_type_node; }
- ;
-
-/* ISO new-declarator (5.3.4) */
-new_declarator:
- '*' cv_qualifiers new_declarator
- { $$ = make_pointer_declarator ($2, $3); }
- | '*' cv_qualifiers %prec EMPTY
- { $$ = make_pointer_declarator ($2, NULL_TREE); }
- | '&' cv_qualifiers new_declarator %prec EMPTY
- { $$ = make_reference_declarator ($2, $3); }
- | '&' cv_qualifiers %prec EMPTY
- { $$ = make_reference_declarator ($2, NULL_TREE); }
- | ptr_to_mem cv_qualifiers %prec EMPTY
- { tree arg = make_pointer_declarator ($2, NULL_TREE);
- $$ = build_nt (SCOPE_REF, $1, arg);
- }
- | ptr_to_mem cv_qualifiers new_declarator
- { tree arg = make_pointer_declarator ($2, $3);
- $$ = build_nt (SCOPE_REF, $1, arg);
- }
- | direct_new_declarator %prec EMPTY
- ;
-
-/* ISO direct-new-declarator (5.3.4) */
-direct_new_declarator:
- '[' expr ']'
- { $$ = build_nt (ARRAY_REF, NULL_TREE, $2); }
- | direct_new_declarator '[' expr ']'
- { $$ = build_nt (ARRAY_REF, $$, $3); }
- ;
-
-absdcl_intern:
- absdcl
- | attributes absdcl
- {
- /* Provide support for '(' attributes '*' declarator ')'
- etc */
- $$ = tree_cons ($1, $2, NULL_TREE);
- }
- ;
-
-/* ISO abstract-declarator (8.1) */
-absdcl:
- '*' nonempty_cv_qualifiers absdcl_intern
- { $$ = make_pointer_declarator ($2.t, $3); }
- | '*' absdcl_intern
- { $$ = make_pointer_declarator (NULL_TREE, $2); }
- | '*' nonempty_cv_qualifiers %prec EMPTY
- { $$ = make_pointer_declarator ($2.t, NULL_TREE); }
- | '*' %prec EMPTY
- { $$ = make_pointer_declarator (NULL_TREE, NULL_TREE); }
- | '&' nonempty_cv_qualifiers absdcl_intern
- { $$ = make_reference_declarator ($2.t, $3); }
- | '&' absdcl_intern
- { $$ = make_reference_declarator (NULL_TREE, $2); }
- | '&' nonempty_cv_qualifiers %prec EMPTY
- { $$ = make_reference_declarator ($2.t, NULL_TREE); }
- | '&' %prec EMPTY
- { $$ = make_reference_declarator (NULL_TREE, NULL_TREE); }
- | ptr_to_mem cv_qualifiers %prec EMPTY
- { tree arg = make_pointer_declarator ($2, NULL_TREE);
- $$ = build_nt (SCOPE_REF, $1, arg);
- }
- | ptr_to_mem cv_qualifiers absdcl_intern
- { tree arg = make_pointer_declarator ($2, $3);
- $$ = build_nt (SCOPE_REF, $1, arg);
- }
- | direct_abstract_declarator %prec EMPTY
- ;
-
-/* ISO direct-abstract-declarator (8.1) */
-direct_abstract_declarator:
- '(' absdcl_intern ')'
- { $$ = $2; }
- /* `(typedef)1' is `int'. */
- | direct_abstract_declarator '(' parmlist ')' cv_qualifiers exception_specification_opt %prec '.'
- { $$ = make_call_declarator ($$, $3, $5, $6); }
- | direct_abstract_declarator LEFT_RIGHT cv_qualifiers exception_specification_opt %prec '.'
- { $$ = make_call_declarator ($$, empty_parms (), $3, $4); }
- | direct_abstract_declarator '[' expr ']' %prec '.'
- { $$ = build_nt (ARRAY_REF, $$, $3); }
- | direct_abstract_declarator '[' ']' %prec '.'
- { $$ = build_nt (ARRAY_REF, $$, NULL_TREE); }
- | '(' complex_parmlist ')' cv_qualifiers exception_specification_opt %prec '.'
- { $$ = make_call_declarator (NULL_TREE, $2, $4, $5); }
- | regcast_or_absdcl cv_qualifiers exception_specification_opt %prec '.'
- { set_quals_and_spec ($$, $2, $3); }
- | fcast_or_absdcl cv_qualifiers exception_specification_opt %prec '.'
- { set_quals_and_spec ($$, $2, $3); }
- | '[' expr ']' %prec '.'
- { $$ = build_nt (ARRAY_REF, NULL_TREE, $2); }
- | '[' ']' %prec '.'
- { $$ = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); }
- ;
-
-/* For C++, decls and stmts can be intermixed, so we don't need to
- have a special rule that won't start parsing the stmt section
- until we have a stmt that parses without errors. */
-
-stmts:
- stmt
- | errstmt
- | stmts stmt
- | stmts errstmt
- ;
-
-errstmt:
- error ';'
- ;
-
-/* Read zero or more forward-declarations for labels
- that nested functions can jump to. */
-maybe_label_decls:
- /* empty */
- | label_decls
- { if (pedantic)
- pedwarn ("ISO C++ forbids label declarations"); }
- ;
-
-label_decls:
- label_decl
- | label_decls label_decl
- ;
-
-label_decl:
- LABEL identifiers_or_typenames ';'
- {
- while ($2)
- {
- finish_label_decl (TREE_VALUE ($2));
- $2 = TREE_CHAIN ($2);
- }
- }
- ;
-
-compstmt_or_stmtexpr:
- save_lineno '{'
- { $<ttype>$ = begin_compound_stmt (0); }
- compstmtend
- { STMT_LINENO ($<ttype>3) = $1;
- finish_compound_stmt (0, $<ttype>3); }
- ;
-
-compstmt:
- compstmt_or_stmtexpr
- { last_expr_type = NULL_TREE; }
- ;
-
-simple_if:
- IF
- { $<ttype>$ = begin_if_stmt ();
- cond_stmt_keyword = "if"; }
- paren_cond_or_null
- { finish_if_stmt_cond ($3, $<ttype>2); }
- implicitly_scoped_stmt
- { $$ = $<ttype>2;
- finish_then_clause ($<ttype>2); }
- ;
-
-implicitly_scoped_stmt:
- compstmt
- |
- { $<ttype>$ = begin_compound_stmt (0); }
- save_lineno simple_stmt
- { STMT_LINENO ($<ttype>1) = $2;
- if ($3) STMT_LINENO ($3) = $2;
- finish_compound_stmt (0, $<ttype>1); }
- ;
-
-stmt:
- compstmt
- | save_lineno simple_stmt
- { if ($2) STMT_LINENO ($2) = $1; }
- ;
-
-simple_stmt:
- decl
- { finish_stmt ();
- $$ = NULL_TREE; }
- | expr ';'
- { $$ = finish_expr_stmt ($1); }
- | simple_if ELSE
- { begin_else_clause (); }
- implicitly_scoped_stmt
- {
- $$ = $1;
- finish_else_clause ($1);
- finish_if_stmt ();
- }
- | simple_if %prec IF
- { $$ = $1;
- finish_if_stmt (); }
- | WHILE
- {
- $<ttype>$ = begin_while_stmt ();
- cond_stmt_keyword = "while";
- }
- paren_cond_or_null
- { finish_while_stmt_cond ($3, $<ttype>2); }
- implicitly_scoped_stmt
- { $$ = $<ttype>2;
- finish_while_stmt ($<ttype>2); }
- | DO
- { $<ttype>$ = begin_do_stmt (); }
- implicitly_scoped_stmt WHILE
- {
- finish_do_body ($<ttype>2);
- cond_stmt_keyword = "do";
- }
- paren_expr_or_null ';'
- { $$ = $<ttype>2;
- finish_do_stmt ($6, $<ttype>2); }
- | FOR
- { $<ttype>$ = begin_for_stmt (); }
- '(' for.init.statement
- { finish_for_init_stmt ($<ttype>2); }
- xcond ';'
- { finish_for_cond ($6, $<ttype>2); }
- xexpr ')'
- { finish_for_expr ($9, $<ttype>2); }
- implicitly_scoped_stmt
- { $$ = $<ttype>2;
- finish_for_stmt ($<ttype>2); }
- | SWITCH
- { $<ttype>$ = begin_switch_stmt (); }
- '(' condition ')'
- { finish_switch_cond ($4, $<ttype>2); }
- implicitly_scoped_stmt
- { $$ = $<ttype>2;
- finish_switch_stmt ($<ttype>2); }
- | CASE expr_no_commas ':'
- { $<ttype>$ = finish_case_label ($2, NULL_TREE); }
- stmt
- { $$ = $<ttype>4; }
- | CASE expr_no_commas ELLIPSIS expr_no_commas ':'
- { $<ttype>$ = finish_case_label ($2, $4); }
- stmt
- { $$ = $<ttype>6; }
- | DEFAULT ':'
- { $<ttype>$ = finish_case_label (NULL_TREE, NULL_TREE); }
- stmt
- { $$ = $<ttype>3; }
- | BREAK ';'
- { $$ = finish_break_stmt (); }
- | CONTINUE ';'
- { $$ = finish_continue_stmt (); }
- | RETURN_KEYWORD ';'
- { $$ = finish_return_stmt (NULL_TREE); }
- | RETURN_KEYWORD expr ';'
- { $$ = finish_return_stmt ($2); }
- | asm_keyword maybe_cv_qualifier '(' STRING ')' ';'
- { $$ = finish_asm_stmt ($2, $4, NULL_TREE, NULL_TREE,
- NULL_TREE);
- ASM_INPUT_P ($$) = 1; }
- /* This is the case with just output operands. */
- | asm_keyword maybe_cv_qualifier '(' STRING ':' asm_operands ')' ';'
- { $$ = finish_asm_stmt ($2, $4, $6, NULL_TREE, NULL_TREE); }
- /* This is the case with input operands as well. */
- | asm_keyword maybe_cv_qualifier '(' STRING ':' asm_operands ':'
- asm_operands ')' ';'
- { $$ = finish_asm_stmt ($2, $4, $6, $8, NULL_TREE); }
- | asm_keyword maybe_cv_qualifier '(' STRING SCOPE asm_operands ')' ';'
- { $$ = finish_asm_stmt ($2, $4, NULL_TREE, $6, NULL_TREE); }
- /* This is the case with clobbered registers as well. */
- | asm_keyword maybe_cv_qualifier '(' STRING ':' asm_operands ':'
- asm_operands ':' asm_clobbers ')' ';'
- { $$ = finish_asm_stmt ($2, $4, $6, $8, $10); }
- | asm_keyword maybe_cv_qualifier '(' STRING SCOPE asm_operands ':'
- asm_clobbers ')' ';'
- { $$ = finish_asm_stmt ($2, $4, NULL_TREE, $6, $8); }
- | asm_keyword maybe_cv_qualifier '(' STRING ':' asm_operands SCOPE
- asm_clobbers ')' ';'
- { $$ = finish_asm_stmt ($2, $4, $6, NULL_TREE, $8); }
- | GOTO '*' expr ';'
- {
- if (pedantic)
- pedwarn ("ISO C++ forbids computed gotos");
- $$ = finish_goto_stmt ($3);
- }
- | GOTO identifier ';'
- { $$ = finish_goto_stmt ($2); }
- | label_colon stmt
- { $$ = NULL_TREE; }
- | label_colon '}'
- { error ("label must be followed by statement");
- yyungetc ('}', 0);
- $$ = NULL_TREE; }
- | ';'
- { finish_stmt ();
- $$ = NULL_TREE; }
- | try_block
- { $$ = NULL_TREE; }
- | using_directive
- { $$ = NULL_TREE; }
- | namespace_using_decl
- { do_local_using_decl ($1);
- $$ = NULL_TREE; }
- | namespace_alias
- { $$ = NULL_TREE; }
- ;
-
-function_try_block:
- TRY
- { $<ttype>$ = begin_function_try_block (); }
- function_body
- { finish_function_try_block ($<ttype>2); }
- handler_seq
- { finish_function_handler_sequence ($<ttype>2); }
- ;
-
-try_block:
- TRY
- { $<ttype>$ = begin_try_block (); }
- compstmt
- { finish_try_block ($<ttype>2); }
- handler_seq
- { finish_handler_sequence ($<ttype>2); }
- ;
-
-handler_seq:
- handler
- | handler_seq handler
- | /* empty */
- { /* Generate a fake handler block to avoid later aborts. */
- tree fake_handler = begin_handler ();
- finish_handler_parms (NULL_TREE, fake_handler);
- finish_handler (fake_handler);
- $<ttype>$ = fake_handler;
-
- error ("must have at least one catch per try block");
- }
- ;
-
-handler:
- CATCH
- { $<ttype>$ = begin_handler (); }
- handler_args
- { finish_handler_parms ($3, $<ttype>2); }
- compstmt
- { finish_handler ($<ttype>2); }
- ;
-
-type_specifier_seq:
- typed_typespecs %prec EMPTY
- | nonempty_cv_qualifiers %prec EMPTY
- ;
-
-handler_args:
- '(' ELLIPSIS ')'
- { $$ = NULL_TREE; }
- /* This doesn't allow reference parameters, the below does.
- | '(' type_specifier_seq absdcl ')'
- { check_for_new_type ("inside exception declarations", $2);
- expand_start_catch_block ($2.t, $3); }
- | '(' type_specifier_seq ')'
- { check_for_new_type ("inside exception declarations", $2);
- expand_start_catch_block ($2.t, NULL_TREE); }
- | '(' type_specifier_seq notype_declarator ')'
- { check_for_new_type ("inside exception declarations", $2);
- expand_start_catch_block ($2.t, $3); }
- | '(' typed_typespecs after_type_declarator ')'
- { check_for_new_type ("inside exception declarations", $2);
- expand_start_catch_block ($2.t, $3); }
- This allows reference parameters... */
- | '(' parm ')'
- {
- check_for_new_type ("inside exception declarations", $2);
- $$ = start_handler_parms (TREE_PURPOSE ($2.t),
- TREE_VALUE ($2.t));
- }
- ;
-
-label_colon:
- IDENTIFIER ':'
- { finish_label_stmt ($1); }
- | PTYPENAME ':'
- { finish_label_stmt ($1); }
- | tTYPENAME ':'
- { finish_label_stmt ($1); }
- | SELFNAME ':'
- { finish_label_stmt ($1); }
- ;
-
-for.init.statement:
- xexpr ';'
- { finish_expr_stmt ($1); }
- | decl
- | '{' compstmtend
- { if (pedantic)
- pedwarn ("ISO C++ forbids compound statements inside for initializations");
- }
- ;
-
-/* Either a type-qualifier or nothing. First thing in an `asm' statement. */
-
-maybe_cv_qualifier:
- /* empty */
- { $$ = NULL_TREE; }
- | CV_QUALIFIER
- ;
-
-xexpr:
- /* empty */
- { $$ = NULL_TREE; }
- | expr
- | error
- { $$ = NULL_TREE; }
- ;
-
-/* These are the operands other than the first string and colon
- in asm ("addextend %2,%1": "=dm" (x), "0" (y), "g" (*x)) */
-asm_operands:
- /* empty */
- { $$ = NULL_TREE; }
- | nonnull_asm_operands
- ;
-
-nonnull_asm_operands:
- asm_operand
- | nonnull_asm_operands ',' asm_operand
- { $$ = chainon ($$, $3); }
- ;
-
-asm_operand:
- STRING '(' expr ')'
- { $$ = build_tree_list (build_tree_list (NULL_TREE, $1), $3); }
- | '[' identifier ']' STRING '(' expr ')'
- { $2 = build_string (IDENTIFIER_LENGTH ($2),
- IDENTIFIER_POINTER ($2));
- $$ = build_tree_list (build_tree_list ($2, $4), $6); }
- ;
-
-asm_clobbers:
- STRING
- { $$ = tree_cons (NULL_TREE, $1, NULL_TREE);}
- | asm_clobbers ',' STRING
- { $$ = tree_cons (NULL_TREE, $3, $1); }
- ;
-
-/* This is what appears inside the parens in a function declarator.
- Its value is represented in the format that grokdeclarator expects.
-
- In C++, declaring a function with no parameters
- means that that function takes *no* parameters. */
-
-parmlist:
- /* empty */
- {
- $$ = empty_parms();
- }
- | complex_parmlist
- | type_id
- { $$ = finish_parmlist (build_tree_list (NULL_TREE, $1.t), 0);
- check_for_new_type ("inside parameter list", $1); }
- ;
-
-/* This nonterminal does not include the common sequence '(' type_id ')',
- as it is ambiguous and must be disambiguated elsewhere. */
-complex_parmlist:
- parms
- { $$ = finish_parmlist ($$, 0); }
- | parms_comma ELLIPSIS
- { $$ = finish_parmlist ($1, 1); }
- /* C++ allows an ellipsis without a separating ',' */
- | parms ELLIPSIS
- { $$ = finish_parmlist ($1, 1); }
- | type_id ELLIPSIS
- { $$ = finish_parmlist (build_tree_list (NULL_TREE,
- $1.t), 1); }
- | ELLIPSIS
- { $$ = finish_parmlist (NULL_TREE, 1); }
- | parms ':'
- {
- /* This helps us recover from really nasty
- parse errors, for example, a missing right
- parenthesis. */
- yyerror ("possibly missing ')'");
- $$ = finish_parmlist ($1, 0);
- yyungetc (':', 0);
- yychar = ')';
- }
- | type_id ':'
- {
- /* This helps us recover from really nasty
- parse errors, for example, a missing right
- parenthesis. */
- yyerror ("possibly missing ')'");
- $$ = finish_parmlist (build_tree_list (NULL_TREE,
- $1.t), 0);
- yyungetc (':', 0);
- yychar = ')';
- }
- ;
-
-/* A default argument to a */
-defarg:
- '='
- { maybe_snarf_defarg (); }
- defarg1
- { $$ = $3; }
- ;
-
-defarg1:
- DEFARG
- | init
- ;
-
-/* A nonempty list of parameter declarations or type names. */
-parms:
- named_parm
- { check_for_new_type ("in a parameter list", $1);
- $$ = build_tree_list (NULL_TREE, $1.t); }
- | parm defarg
- { check_for_new_type ("in a parameter list", $1);
- $$ = build_tree_list ($2, $1.t); }
- | parms_comma full_parm
- { check_for_new_type ("in a parameter list", $2);
- $$ = chainon ($$, $2.t); }
- | parms_comma bad_parm
- { $$ = chainon ($$, build_tree_list (NULL_TREE, $2)); }
- | parms_comma bad_parm '=' init
- { $$ = chainon ($$, build_tree_list ($4, $2)); }
- ;
-
-parms_comma:
- parms ','
- | type_id ','
- { check_for_new_type ("in a parameter list", $1);
- $$ = build_tree_list (NULL_TREE, $1.t); }
- ;
-
-/* A single parameter declaration or parameter type name,
- as found in a parmlist. */
-named_parm:
- /* Here we expand typed_declspecs inline to avoid mis-parsing of
- TYPESPEC IDENTIFIER. */
- typed_declspecs1 declarator
- { $$.new_type_flag = $1.new_type_flag;
- $$.t = build_tree_list ($1.t, $2); }
- | typed_typespecs declarator
- { $$.t = build_tree_list ($1.t, $2);
- $$.new_type_flag = $1.new_type_flag; }
- | typespec declarator
- { $$.t = build_tree_list (build_tree_list (NULL_TREE, $1.t),
- $2);
- $$.new_type_flag = $1.new_type_flag; }
- | typed_declspecs1 absdcl
- { $$.t = build_tree_list ($1.t, $2);
- $$.new_type_flag = $1.new_type_flag; }
- | typed_declspecs1 %prec EMPTY
- { $$.t = build_tree_list ($1.t, NULL_TREE);
- $$.new_type_flag = $1.new_type_flag; }
- | declmods notype_declarator
- { $$.t = build_tree_list ($1.t, $2);
- $$.new_type_flag = 0; }
- ;
-
-full_parm:
- parm
- { $$.t = build_tree_list (NULL_TREE, $1.t);
- $$.new_type_flag = $1.new_type_flag; }
- | parm defarg
- { $$.t = build_tree_list ($2, $1.t);
- $$.new_type_flag = $1.new_type_flag; }
- ;
-
-parm:
- named_parm
- | type_id
- ;
-
-see_typename:
- /* empty */ %prec EMPTY
- { see_typename (); }
- ;
-
-bad_parm:
- /* empty */ %prec EMPTY
- {
- error ("type specifier omitted for parameter");
- $$ = build_tree_list (integer_type_node, NULL_TREE);
- }
- | notype_declarator
- {
- if (TREE_CODE ($$) == SCOPE_REF)
- {
- if (TREE_CODE (TREE_OPERAND ($$, 0)) == TEMPLATE_TYPE_PARM
- || TREE_CODE (TREE_OPERAND ($$, 0)) == BOUND_TEMPLATE_TEMPLATE_PARM)
- error ("`%E' is not a type, use `typename %E' to make it one", $$, $$);
- else
- error ("no type `%D' in `%T'", TREE_OPERAND ($$, 1), TREE_OPERAND ($$, 0));
- }
- else
- error ("type specifier omitted for parameter `%E'", $$);
- $$ = build_tree_list (integer_type_node, $$);
- }
- ;
-
-bad_decl:
- IDENTIFIER template_arg_list_ignore IDENTIFIER arg_list_ignore ';'
- {
- error("'%D' is used as a type, but is not defined as a type.", $1);
- $3 = error_mark_node;
- }
- ;
-
-template_arg_list_ignore:
- '<' template_arg_list_opt template_close_bracket
- { }
- | /* empty */
- ;
-
-arg_list_ignore:
- '(' nonnull_exprlist ')'
- { }
- | /* empty */
- ;
-
-exception_specification_opt:
- /* empty */ %prec EMPTY
- { $$ = NULL_TREE; }
- | THROW '(' ansi_raise_identifiers ')' %prec EMPTY
- { $$ = $3; }
- | THROW LEFT_RIGHT %prec EMPTY
- { $$ = empty_except_spec; }
- ;
-
-ansi_raise_identifier:
- type_id
- {
- check_for_new_type ("exception specifier", $1);
- $$ = groktypename ($1.t);
- }
- | error
- { $$ = error_mark_node; }
- ;
-
-ansi_raise_identifiers:
- ansi_raise_identifier
- { $$ = add_exception_specifier (NULL_TREE, $1, 1); }
- | ansi_raise_identifiers ',' ansi_raise_identifier
- { $$ = add_exception_specifier ($1, $3, 1); }
- ;
-
-conversion_declarator:
- /* empty */ %prec EMPTY
- { $$ = NULL_TREE; }
- | '*' cv_qualifiers conversion_declarator
- { $$ = make_pointer_declarator ($2, $3); }
- | '&' cv_qualifiers conversion_declarator
- { $$ = make_reference_declarator ($2, $3); }
- | ptr_to_mem cv_qualifiers conversion_declarator
- { tree arg = make_pointer_declarator ($2, $3);
- $$ = build_nt (SCOPE_REF, $1, arg);
- }
- ;
-
-operator:
- OPERATOR
- {
- saved_scopes = tree_cons (got_scope, got_object, saved_scopes);
- TREE_LANG_FLAG_0 (saved_scopes) = looking_for_typename;
- /* We look for conversion-type-id's in both the class and current
- scopes, just as for ID in 'ptr->ID::'. */
- looking_for_typename = 1;
- got_object = got_scope;
- got_scope = NULL_TREE;
- }
- ;
-
-unoperator:
- { got_scope = TREE_PURPOSE (saved_scopes);
- got_object = TREE_VALUE (saved_scopes);
- looking_for_typename = TREE_LANG_FLAG_0 (saved_scopes);
- saved_scopes = TREE_CHAIN (saved_scopes);
- $$ = got_scope;
- }
- ;
-
-operator_name:
- operator '*' unoperator
- { $$ = frob_opname (ansi_opname (MULT_EXPR)); }
- | operator '/' unoperator
- { $$ = frob_opname (ansi_opname (TRUNC_DIV_EXPR)); }
- | operator '%' unoperator
- { $$ = frob_opname (ansi_opname (TRUNC_MOD_EXPR)); }
- | operator '+' unoperator
- { $$ = frob_opname (ansi_opname (PLUS_EXPR)); }
- | operator '-' unoperator
- { $$ = frob_opname (ansi_opname (MINUS_EXPR)); }
- | operator '&' unoperator
- { $$ = frob_opname (ansi_opname (BIT_AND_EXPR)); }
- | operator '|' unoperator
- { $$ = frob_opname (ansi_opname (BIT_IOR_EXPR)); }
- | operator '^' unoperator
- { $$ = frob_opname (ansi_opname (BIT_XOR_EXPR)); }
- | operator '~' unoperator
- { $$ = frob_opname (ansi_opname (BIT_NOT_EXPR)); }
- | operator ',' unoperator
- { $$ = frob_opname (ansi_opname (COMPOUND_EXPR)); }
- | operator ARITHCOMPARE unoperator
- { $$ = frob_opname (ansi_opname ($2)); }
- | operator '<' unoperator
- { $$ = frob_opname (ansi_opname (LT_EXPR)); }
- | operator '>' unoperator
- { $$ = frob_opname (ansi_opname (GT_EXPR)); }
- | operator EQCOMPARE unoperator
- { $$ = frob_opname (ansi_opname ($2)); }
- | operator ASSIGN unoperator
- { $$ = frob_opname (ansi_assopname ($2)); }
- | operator '=' unoperator
- { $$ = frob_opname (ansi_assopname (NOP_EXPR)); }
- | operator LSHIFT unoperator
- { $$ = frob_opname (ansi_opname ($2)); }
- | operator RSHIFT unoperator
- { $$ = frob_opname (ansi_opname ($2)); }
- | operator PLUSPLUS unoperator
- { $$ = frob_opname (ansi_opname (POSTINCREMENT_EXPR)); }
- | operator MINUSMINUS unoperator
- { $$ = frob_opname (ansi_opname (PREDECREMENT_EXPR)); }
- | operator ANDAND unoperator
- { $$ = frob_opname (ansi_opname (TRUTH_ANDIF_EXPR)); }
- | operator OROR unoperator
- { $$ = frob_opname (ansi_opname (TRUTH_ORIF_EXPR)); }
- | operator '!' unoperator
- { $$ = frob_opname (ansi_opname (TRUTH_NOT_EXPR)); }
- | operator '?' ':' unoperator
- { $$ = frob_opname (ansi_opname (COND_EXPR)); }
- | operator MIN_MAX unoperator
- { $$ = frob_opname (ansi_opname ($2)); }
- | operator POINTSAT unoperator %prec EMPTY
- { $$ = frob_opname (ansi_opname (COMPONENT_REF)); }
- | operator POINTSAT_STAR unoperator %prec EMPTY
- { $$ = frob_opname (ansi_opname (MEMBER_REF)); }
- | operator LEFT_RIGHT unoperator
- { $$ = frob_opname (ansi_opname (CALL_EXPR)); }
- | operator '[' ']' unoperator
- { $$ = frob_opname (ansi_opname (ARRAY_REF)); }
- | operator NEW unoperator %prec EMPTY
- { $$ = frob_opname (ansi_opname (NEW_EXPR)); }
- | operator DELETE unoperator %prec EMPTY
- { $$ = frob_opname (ansi_opname (DELETE_EXPR)); }
- | operator NEW '[' ']' unoperator
- { $$ = frob_opname (ansi_opname (VEC_NEW_EXPR)); }
- | operator DELETE '[' ']' unoperator
- { $$ = frob_opname (ansi_opname (VEC_DELETE_EXPR)); }
- | operator type_specifier_seq conversion_declarator unoperator
- { $$ = frob_opname (grokoptypename ($2.t, $3, $4)); }
- | operator error unoperator
- { $$ = frob_opname (ansi_opname (ERROR_MARK)); }
- ;
-
-/* The forced readahead in here is because we might be at the end of a
- line, and lineno won't be bumped until yylex absorbs the first token
- on the next line. */
-save_lineno:
- { if (yychar == YYEMPTY)
- yychar = YYLEX;
- $$ = lineno; }
- ;
-%%
-
-#ifdef SPEW_DEBUG
-const char *
-debug_yytranslate (value)
- int value;
-{
- return yytname[YYTRANSLATE (value)];
-}
-#endif
-
-/* Free malloced parser stacks if necessary. */
-
-void
-free_parser_stacks ()
-{
- if (malloced_yyss)
- {
- free (malloced_yyss);
- free (malloced_yyvs);
- }
-}
-
-/* Return the value corresponding to TOKEN in the global scope. */
-
-static tree
-parse_scoped_id (token)
- tree token;
-{
- cxx_binding binding;
-
- cxx_binding_clear (&binding);
- if (!qualified_lookup_using_namespace (token, global_namespace, &binding, 0))
- binding.value = NULL;
- if (yychar == YYEMPTY)
- yychar = yylex();
-
- return do_scoped_id (token, binding.value);
-}
-
-/* AGGR may be either a type node (like class_type_node) or a
- TREE_LIST whose TREE_PURPOSE is a list of attributes and whose
- TREE_VALUE is a type node. Set *TAG_KIND and *ATTRIBUTES to
- represent the information encoded. */
-
-static void
-parse_split_aggr (tree aggr, enum tag_types *tag_kind, tree *attributes)
-{
- if (TREE_CODE (aggr) == TREE_LIST)
- {
- *attributes = TREE_PURPOSE (aggr);
- aggr = TREE_VALUE (aggr);
- }
- else
- *attributes = NULL_TREE;
- *tag_kind = (enum tag_types) tree_low_cst (aggr, 1);
-}
-
-/* Like xref_tag, except that the AGGR may be either a type node (like
- class_type_node) or a TREE_LIST whose TREE_PURPOSE is a list of
- attributes and whose TREE_VALUE is a type node. */
-
-static tree
-parse_xref_tag (tree aggr, tree name, int globalize)
-{
- tree attributes;
- enum tag_types tag_kind;
- parse_split_aggr (aggr, &tag_kind, &attributes);
- return xref_tag (tag_kind, name, attributes, globalize);
-}
-
-/* Like handle_class_head, but AGGR may be as for parse_xref_tag. */
-
-static tree
-parse_handle_class_head (tree aggr, tree scope, tree id,
- int defn_p, int *new_type_p)
-{
- tree attributes;
- enum tag_types tag_kind;
- parse_split_aggr (aggr, &tag_kind, &attributes);
- return handle_class_head (tag_kind, scope, id, attributes,
- defn_p, new_type_p);
-}
-
-/* Like do_decl_instantiation, but the declarator has not yet been
- parsed. */
-
-static void
-parse_decl_instantiation (tree declspecs, tree declarator, tree storage)
-{
- tree decl = grokdeclarator (declarator, declspecs, NORMAL, 0, NULL);
- do_decl_instantiation (decl, storage);
-}
-
-/* Like begin_function_definition, but SPECS_ATTRS is a combined list
- containing both a decl-specifier-seq and attributes. */
-
-static int
-parse_begin_function_definition (tree specs_attrs, tree declarator)
-{
- tree specs;
- tree attrs;
-
- split_specs_attrs (specs_attrs, &specs, &attrs);
- return begin_function_definition (specs, attrs, declarator);
-}
-
-/* Like finish_call_expr, but the name for FN has not yet been
- resolved. */
-
-static tree
-parse_finish_call_expr (tree fn, tree args, int koenig)
-{
- bool disallow_virtual;
-
- if (TREE_CODE (fn) == OFFSET_REF)
- return build_offset_ref_call_from_tree (fn, args);
-
- if (TREE_CODE (fn) == SCOPE_REF)
- {
- tree scope = TREE_OPERAND (fn, 0);
- tree name = TREE_OPERAND (fn, 1);
-
- if (scope == error_mark_node || name == error_mark_node)
- return error_mark_node;
- if (!processing_template_decl)
- fn = resolve_scoped_fn_name (scope, name);
- disallow_virtual = true;
- }
- else
- disallow_virtual = false;
-
- if (koenig && TREE_CODE (fn) == IDENTIFIER_NODE)
- {
- tree f;
-
- /* Do the Koenig lookup. */
- fn = do_identifier (fn, 2, args);
- /* If name lookup didn't find any matching declarations, we've
- got an unbound identifier. */
- if (TREE_CODE (fn) == IDENTIFIER_NODE)
- {
- /* For some reason, do_identifier does not resolve
- conversion operator names if the only matches would be
- template conversion operators. So, we do it here. */
- if (IDENTIFIER_TYPENAME_P (fn) && current_class_type)
- {
- f = lookup_member (current_class_type, fn,
- /*protect=*/1, /*want_type=*/0);
- if (f)
- return finish_call_expr (f, args,
- /*disallow_virtual=*/false);
- }
- /* If the name still could not be resolved, then the program
- is ill-formed. */
- if (TREE_CODE (fn) == IDENTIFIER_NODE)
- {
- unqualified_name_lookup_error (fn);
- return error_mark_node;
- }
- }
- else if (TREE_CODE (fn) == FUNCTION_DECL
- || DECL_FUNCTION_TEMPLATE_P (fn)
- || TREE_CODE (fn) == OVERLOAD)
- {
- tree scope = DECL_CONTEXT (get_first_fn (fn));
- if (scope && TYPE_P (scope))
- {
- tree access_scope;
-
- if (DERIVED_FROM_P (scope, current_class_type)
- && current_class_ref)
- {
- fn = build_baselink (lookup_base (current_class_type,
- scope,
- ba_any,
- NULL),
- TYPE_BINFO (current_class_type),
- fn,
- /*optype=*/NULL_TREE);
- return finish_object_call_expr (fn,
- current_class_ref,
- args);
- }
-
-
- access_scope = current_class_type;
- while (!DERIVED_FROM_P (scope, access_scope))
- {
- access_scope = TYPE_CONTEXT (access_scope);
- while (DECL_P (access_scope))
- access_scope = DECL_CONTEXT (access_scope);
- }
-
- fn = build_baselink (NULL_TREE,
- TYPE_BINFO (access_scope),
- fn,
- /*optype=*/NULL_TREE);
- }
- }
- }
-
- if (TREE_CODE (fn) == COMPONENT_REF)
- /* If the parser sees `(x->y)(bar)' we get here because the
- parentheses confuse the parser. Treat this like
- `x->y(bar)'. */
- return finish_object_call_expr (TREE_OPERAND (fn, 1),
- TREE_OPERAND (fn, 0),
- args);
-
- if (processing_template_decl)
- return build_nt (CALL_EXPR, fn, args, NULL_TREE);
-
- return build_call_from_tree (fn, args, disallow_virtual);
-}
-
-#include "gt-cp-parse.h"
diff --git a/contrib/gcc/cp/reno.texi b/contrib/gcc/cp/reno.texi
deleted file mode 100644
index 59c3448..0000000
--- a/contrib/gcc/cp/reno.texi
+++ /dev/null
@@ -1,752 +0,0 @@
-\input texinfo @c -*- Texinfo -*-
-@setfilename reno-1.info
-
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* Reno 1: (reno-1). The GNU C++ Renovation Project, Phase 1.
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-
-@ifinfo
-Copyright @copyright{} 1992, 1993, 1994 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries a copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
-@end ifinfo
-
-@setchapternewpage odd
-@settitle GNU C++ Renovation Project
-@c @smallbook
-
-@titlepage
-@finalout
-@title GNU C++ Renovation Project
-@subtitle Phase 1.3
-@author Brendan Kehoe, Jason Merrill,
-@author Mike Stump, Michael Tiemann
-@page
-
-Edited March, 1994 by Roland Pesch (@code{pesch@@cygnus.com})
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1992, 1993, 1994 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-@ignore
-Permission is granted to process this file through Tex and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
-@end titlepage
-
-@ifinfo
-@node Top
-@top @sc{gnu} C++ Renovation Project
-
-This file describes the goals of the @sc{gnu} C++ Renovation Project,
-and its accomplishments to date (as of Phase 1.3).
-
-It also discusses the remaining divergences from @sc{gnu} C++, and how the
-name encoding in @sc{gnu} C++ differs from the sample encoding in
-@cite{The Annotated C++ Reference Manual}.
-@c This is not a good place to introduce the acronym ARM because it's
-@c info-only.
-
-@menu
-* Introduction:: What is the GNU C++ Renovation Project?
-* Changes:: Summary of changes since previous GNU C++ releases.
-* Plans:: Plans for Reno-2.
-* Templates:: The template implementation.
-* ANSI:: GNU C++ conformance to ANSI C++.
-* Encoding:: Name encoding in GNU C++.
-@end menu
-
-@end ifinfo
-
-@node Introduction
-@chapter Introduction
-
-As you may remember, @sc{gnu} C++ was the first native-code C++
-compiler available under Unix (December 1987). In November 1988, it was
-judged superior to the AT&T compiler in a Unix World review. In 1990 it
-won a Sun Observer ``Best-Of'' award. But now, with new requirements
-coming out of the @sc{ansi} C++ committee and a growing backlog of bugs, it's
-clear that @sc{gnu} C++ needs an overhaul.
-
-The C++ language has been under development since 1982. It has
-evolved significantly since its original incarnation (C with Classes),
-addressing many commercial needs and incorporating many lessons
-learned as more and more people started using ``object-oriented''
-programming techniques. In 1989, the first X3J16 committee meeting
-was held in Washington DC; in the interest of users, C++ was going to
-be standardized.
-
-As C++ has become more popular, more demands have been placed on its
-compilers. Some compilers are up to the demands, others are not.
-@sc{gnu} C++ was used to prototype several features which have since
-been incorporated into the standard, most notably exception handling.
-While @sc{gnu} C++ has been an excellent experimental vehicle, it did
-not have the resources that AT&T, Borland, or Microsoft have at their
-disposal.
-
-We believe that @sc{gnu} C++ is an important compiler, providing users with
-many of the features that have made @sc{gnu} C so popular: fast compilation,
-good error messages, innovative features, and full sources that may be
-freely redistributed. The purpose of this overhaul, dubbed the @var{@sc{gnu}
-C++ Renovation Project}, is to take advantage of the functionality that
-@sc{gnu} C++ offers today, to strengthen its base technology, and put it in a
-position to remain---as other @sc{gnu} software currently is---the technical
-leader in the field.
-
-This release represents the latest phase of work in strengthening the
-compiler on a variety of points. It includes many months of
-work concentrated on fixing many of the more egregious bugs that
-presented themselves in the compiler recently.
-@ignore
-@c FIXME-- update?
-Nearly 85% of all bugs reported in the period of February to September
-of 1992 were fixed as part of the work in the first phase.
-@end ignore
-In the coming months, we hope to continue expanding and enhancing the
-quality and dependability of the industry's only freely redistributable
-C++ compiler.
-
-@node Changes
-@chapter Changes in Behavior in @sc{gnu} C++
-
-The @sc{gnu} C++ compiler continues to improve and change. A major goal
-of our work has been to continue to bring the compiler into compliance
-with the draft @sc{ansi} C++ standard, and with @cite{The Annotated C++
-Reference Manual} (the @sc{arm}). This section outlines most of the
-user-noticeable changes that might be encountered during the normal
-course of use.
-
-@menu
-* Summary of Phase 1.3::
-* Major changes::
-* New features::
-* Enhancements and bug fixes::
-* Problems with debugging::
-@end menu
-
-@node Summary of Phase 1.3
-@section Summary of Changes in Phase 1.3
-
-The bulk of this note discusses the cumulative effects of the @sc{gnu} C++
-Renovation Project to date. The work during its most recent phase (1.3)
-had these major effects:
-
-@itemize @bullet
-@item The standard compiler driver @code{g++} is now the faster compiled
-version, rather than a shell script.
-
-@item Nested types work much better; notably, nesting is no longer
-restricted to nine levels.
-
-@item Better @sc{arm} conformance on member access control.
-
-@item The compiler now always generates default assignment operators
-(@samp{operator =}), copy constructors (@samp{X::X(X&)}), and default
-constructors (@samp{X::X()}) whenever they are required.
-
-@item The new draft @sc{ansi} standard keyword @code{mutable} is supported.
-
-@item @samp{-fansi-overloading} is the default, to comply better with
-the @sc{arm} (at some cost in compatibility to earlier versions of @sc{gnu} C++).
-
-@item More informative error messages.
-
-@item System include files are automatically treated as if they were
-wrapped in @samp{extern "C" @{ @}}.
-
-@item The new option @samp{-falt-external-templates} provides alternate
-template instantiation semantics.
-
-@item Operator declarations are now checked more strictly.
-
-@item You can now use template type arguments in the template parameter list.
-
-@item You can call the destructor for any type.
-
-@item The compiler source code is better organized.
-
-@item You can specify where to instantiate template definitions explicitly.
-@end itemize
-
-Much of the work in Phase 1.3 went to elimination of known bugs, as well
-as the major items above.
-
-During the span of Phase 1.3, there were also two changes associated
-with the compiler that, while not specifically part of the C++
-Renovation project, may be of interest:
-
-@itemize @bullet
-@item @code{gcov}, a code coverage tool for @sc{gnu cc}, is now available
-from Cygnus Support. (@code{gcov} is free software, but the @sc{fsf} has not
-yet accepted it.) @xref{Gcov,, @code{gcov}: a Test Coverage Program,
-gcc.info, Using GNU CC}, for more information (in Cygnus releases of
-that manual).
-
-@item @sc{gnu} C++ now supports @dfn{signatures}, a language extension to
-provide more flexibility in abstract type definitions. @xref{C++
-Signatures,, Type Abstraction using Signatures, gcc.info, Using GNU CC}.
-@end itemize
-
-@node Major changes
-@section Major Changes
-
-This release includes four wholesale rewrites of certain areas of
-compiler functionality:
-
-@enumerate 1
-@item Argument matching. @sc{gnu} C++ is more compliant with the rules
-described in Chapter 13, ``Overloading'', of the @sc{arm}. This behavior is
-the default, though you can specify it explicitly with
-@samp{-fansi-overloading}. For compatibility with earlier releases of
-@sc{gnu} C++, specify @samp{-fno-ansi-overloading}; this makes the compiler
-behave as it used to with respect to argument matching and name overloading.
-
-@item Default constructors/destructors. Section 12.8 of the @sc{arm}, ``Copying
-Class Objects'', and Section 12.1, ``Constructors'', state that a
-compiler must declare such default functions if the user does not
-specify them. @sc{gnu} C++ now declares, and generates when necessary,
-the defaults for constructors and destructors you might omit. In
-particular, assignment operators (@samp{operator =}) behave the same way
-whether you define them, or whether the compiler generates them by
-default; taking the address of the default @samp{operator =} is now
-guaranteed to work. Default copy constructors (@samp{X::X(X&)}) now
-function correctly, rather than calling the copy assignment operator for
-the base class. Finally, constructors (@samp{X::X()}), as well as
-assignment operators and copy constructors, are now available whenever
-they are required.
-
-@c XXX This may be taken out eventually...
-@item Binary incompatibility. There are no new binary incompatibilities
-in Phase 1.3, but Phase 1.2 introduced two binary incompatibilities with
-earlier releases. First, the functionality of @samp{operator
-new} and @samp{operator delete} changed. Name encoding
-(``mangling'') of virtual table names changed as well. Libraries
-built with versions of the compiler earlier than Phase 1.2 must be
-compiled with the new compiler. (This includes the Cygnus Q2
-progressive release and the FSF 2.4.5 release.)
-
-@item New @code{g++} driver.
-A new binary @code{g++} compiler driver replaces the shell script.
-The new driver executes faster.
-@end enumerate
-
-@node New features
-@section New features
-
-@itemize @bullet
-@item
-The compiler warns when a class contains only private constructors
-or destructors, and has no friends. At the request of some of our
-customers, we have added a new option, @samp{-Wctor-dtor-privacy} (on by
-default), and its negation, @samp{-Wno-ctor-dtor-privacy}, to control
-the emission of this warning. If, for example, you are working towards
-making your code compile warning-free, you can use @w{@samp{-Wall
--Wno-ctor-dtor-privacy}} to find the most common warnings.
-
-@item
-There is now a mechanism which controls exactly when templates are
-expanded, so that you can reduce memory usage and program size and also
-instantiate them exactly once. You can control this mechanism with the
-option @samp{-fexternal-templates} and its corresponding negation
-@samp{-fno-external-templates}. Without this feature, space consumed by
-template instantiations can grow unacceptably in large-scale projects
-with many different source files. The default is
-@samp{-fno-external-templates}.
-
-You do not need to use the @samp{-fexternal-templates} option when
-compiling a file that does not define and instantiate templates used in
-other files, even if those files @emph{are} compiled with
-@samp{-fexternal-templates}. The only side effect is an increase in
-object size for each file that was compiled without
-@samp{-fexternal-templates}.
-
-When your code is compiled with @samp{-fexternal-templates}, all
-template instantiations are external; this requires that the templates
-be under the control of @samp{#pragma interface} and @samp{#pragma
-implementation}. All instantiations that will be needed should be in
-the implementation file; you can do this with a @code{typedef} that
-references the instantiation needed. Conversely, when you compile using
-the option @samp{-fno-external-templates}, all template instantiations are
-explicitly internal.
-
-@samp{-fexternal-templates} also allows you to finally separate class
-template function definitions from their declarations, thus speeding up
-compilation times for every file that includes the template declaration.
-Now you can have tens or even hundreds of lines in template
-declarations, and thousands or tens of thousands of lines in template
-definitions, with the definitions only going through the compiler once
-instead of once for each source file. It is important to note that you
-must remember to externally instantiate @emph{all} templates that are
-used from template declarations in interface files. If you forget to do
-this, unresolved externals will occur.
-
-In the example below, the object file generated (@file{example.o}) will
-contain the global instantiation for @samp{Stack<int>}. If other types
-of @samp{Stack} are needed, they can be added to @file{example.cc} or
-placed in a new file, in the same spirit as @file{example.cc}.
-
-@code{foo.h}:
-@smallexample
-@group
-#pragma interface "foo.h"
-template<class T>
-class Stack @{
- static int statc;
- static T statc2;
- Stack() @{ @}
- virtual ~Stack() @{ @}
- int bar();
-@};
-@end group
-@end smallexample
-
-@code{example.cc}:
-@smallexample
-@group
-#pragma implementation "foo.h"
-#include "foo.h"
-
-typedef Stack<int> t;
-int Stack<int>::statc;
-int Stack<int>::statc2;
-int Stack<int>::bar() @{ @}
-@end group
-@end smallexample
-
-Note that using @samp{-fexternal-templates} does not reduce memory usage
-from completely different instantiations (@samp{Stack<Name>} vs.
-@samp{Stack<Net_Connection>}), but only collapses different occurrences
-of @samp{Stack<Name>} so that only one @samp{Stack<Name>} is generated.
-
-@samp{-falt-external-templates} selects a slight variation in the
-semantics described above (incidentally, you need not specify both
-options; @samp{-falt-external-templates} implies
-@samp{-fexternal-templates}).
-
-With @samp{-fexternal-templates}, the compiler emits a definition in the
-implementation file that includes the header definition, @emph{even if}
-instantiation is triggered from a @emph{different} implementation file
-(e.g. with a template that uses another template).
-
-With @samp{-falt-external-templates}, the definition always goes in the
-implementation file that triggers instantiation.
-
-For instance, with these two header files---
-
-@example
-@exdent @file{a.h}:
-#pragma interface
-template <class T> class A @{ @dots{} @};
-
-@exdent @file{b.h}:
-#pragma interface
-class B @{ @dots{} @};
-void f (A<B>);
-@end example
-
-Under @samp{-fexternal-templates}, the definition of @samp{A<B>} ends up
-in the implementation file that includes @file{a.h}. Under
-@samp{-falt-external-templates}, the same definition ends up in the
-implementation file that includes @file{b.h}.
-
-@item
-You can control explicitly where a template is instantiated, without
-having to @emph{use} the template to get an instantiation.
-
-To instantiate a class template explicitly, write @samp{template
-class @var{name}<paramvals>}, where @var{paramvals} is a list of values
-for the template parameters. For example, you might write
-
-@example
-template class A<int>
-@end example
-
-Similarly, to instantiate a function template explicitly, write
-@samp{template @var{fnsign}} where @var{fnsign} is the particular
-function signature you need. For example, you might write
-
-@example
-template void foo (int, int)
-@end example
-
-This syntax for explicit template instantiation agrees with recent
-extensions to the draft @sc{ansi} standard.
-
-@item
-The compiler's actions on @sc{ansi}-related warnings and errors have
-been further enhanced. The @samp{-pedantic-errors} option produces
-error messages in a number of new situations: using @code{return} in a
-non-@code{void} function (one returning a value); declaring a local
-variable that shadows a parameter (e.g., the function takes an argument
-@samp{a}, and has a local variable @samp{a}); and use of the @samp{asm}
-keyword. Finally, the compiler by default now issues a warning when
-converting from an @code{int} to an enumerated type. This is likely to
-cause many new warnings in code that hadn't triggered them before. For
-example, when you compile this code,
-
-@smallexample
-@group
-enum boolean @{ false, true @};
-void
-f ()
-@{
- boolean x;
-
- x = 1; //@i{assigning an @code{int} to an @code{enum} now triggers a warning}
-@}
-@end group
-@end smallexample
-
-@noindent
-you should see the warning ``@code{anachronistic conversion from integer
-type to enumeral type `boolean'}''. Instead of assigning the value 1,
-assign the original enumerated value @samp{true}.
-@end itemize
-
-@node Enhancements and bug fixes
-@section Enhancements and bug fixes
-
-@itemize @bullet
-@cindex nested types in template parameters
-@item
-You can now use nested types in a template parameter list, even if the nested
-type is defined within the same class that attempts to use the template.
-For example, given a template @code{list}, the following now works:
-
-@smallexample
-struct glyph @{
- @dots{}
- struct stroke @{ @dots{} @};
- list<stroke> l;
- @dots{}
-@}
-@end smallexample
-
-@cindex function pointers vs template parameters
-@item
-Function pointers now work in template parameter lists. For
-example, you might want to instantiate a parameterized @code{list} class
-in terms of a pointer to a function like this:
-
-@smallexample
-list<int (*)(int, void *)> fnlist;
-@end smallexample
-
-@item
-@c FIXME! Really no limit? Jason said "deeper than 9" now OK...
-Nested types are now handled correctly. In particular, there is no
-longer a limit to how deeply you can nest type definitions.
-
-@item
-@sc{gnu} C++ now conforms to the specifications in Chapter 11 of the
-@sc{arm}, ``Member Access Control''.
-
-@item
-The @sc{ansi} C++ committee has introduced a new keyword @code{mutable}.
-@sc{gnu} C++ supports it. Use @code{mutable} to specify that some
-particular members of a @code{const} class are @emph{not} constant. For
-example, you can use this to include a cache in a data structure that
-otherwise represents a read-only database.
-
-@item
-Error messages now explicitly specify the declaration, type, or
-expression that contains an error.
-
-@item
-To avoid copying and editing all system include files during @sc{gnu}
-C++ installation, the compiler now automatically recognizes system
-include files as C language definitions, as if they were wrapped in
-@samp{extern "C" @{ @dots{} @}}.
-
-@item
-The compiler checks operator declarations more strictly. For example,
-you may no longer declare an @samp{operator +} with three arguments.
-
-@item
-You can now use template type arguments in the same template
-parameter list where the type argument is specified (as well as in the
-template body). For example, you may write
-
-@example
-template <class T, T t> class A @{ @dots{} @};
-@end example
-
-@item
-Destructors are now available for all types, even built-in ones; for
-example, you can call @samp{int::~int}. (Destructors for types like
-@code{int} do not actually do anything, but their existence provides a
-level of generality that permits smooth template expansion in more
-cases.)
-
-@item
-Enumerated types declared inside a class are now handled correctly.
-
-@item
-An argument list for a function may not use an initializer list for its default
-value. For example, @w{@samp{void foo ( T x = @{ 1, 2 @} )}} is not permitted.
-
-@item
-A significant amount of work went into improving the ability of the
-compiler to act accurately on multiple inheritance and virtual
-functions. Virtual function dispatch has been enhanced as well.
-
-@item
-The warning concerning a virtual inheritance environment with a
-non-virtual destructor has been disabled, since it is not clear that
-such a warning is warranted.
-
-@item
-Until exception handling is fully implemented in the Reno-2 release, use
-of the identifiers @samp{catch}, @samp{throw}, or @samp{try} results
-in the warning:
-
-@smallexample
-t.C:1: warning: `catch', `throw', and `try'
- are all C++ reserved words
-@end smallexample
-
-@item
-When giving a warning or error concerning initialization of a member in a
-class, the compiler gives the name of the member if it has one.
-
-@item
-Detecting friendship between classes is more accurately checked.
-
-@item
-The syntaxes of @w{@samp{#pragma implementation "file.h"}} and
-@samp{#pragma interface} are now more strictly controlled. The compiler
-notices (and warns) when any text follows @file{file.h} in the
-implementation pragma, or follows the word @samp{interface}. Any such
-text is otherwise ignored.
-
-@item
-Trying to declare a template on a variable or type is now considered an
-error, not an unimplemented feature.
-
-@item
-When an error occurs involving a template, the compiler attempts to
-tell you at which point of instantiation the error occurred, in
-addition to noting the line in the template declaration which had the
-actual error.
-
-@item
-The symbol names for function templates in the resulting assembly file
-are now encoded according to the arguments, rather than just being
-emitted as, for example, two definitions of a function @samp{foo}.
-
-@item
-Template member functions that are declared @code{static} no longer
-receive a @code{this} pointer.
-
-@item
-Case labels are no longer allowed to have commas to make up their
-expressions.
-
-@item
-Warnings concerning the shift count of a left or right shift now tell
-you if it was a @samp{left} or @samp{right} shift.
-
-@item
-The compiler now warns when a decimal constant is so large that it
-becomes @code{unsigned}.
-
-@item
-Union initializers which are raw constructors are now handled properly.
-
-@item
-The compiler no longer gives incorrect errors when initializing a
-union with an empty initializer list.
-
-@item
-Anonymous unions are now correctly used when nested inside a class.
-
-@item
-Anonymous unions declared as static class members are now handled
-properly.
-
-@item
-The compiler now notices when a field in a class is declared both as
-a type and a non-type.
-
-@item
-The compiler now warns when a user-defined function shadows a
-built-in function, rather than emitting an error.
-
-@item
-A conflict between two function declarations now produces an error
-regardless of their language context.
-
-@item
-Duplicate definitions of variables with @samp{extern "C"} linkage are no
-longer considered in error. (Note in C++ linkage---the default---you may
-not have more than one definition of a variable.)
-
-@item
-Referencing a label that is not defined in any function is now an error.
-
-@item
-The syntax for pointers to methods has been improved; there are still
-some minor bugs, but a number of cases should now be accepted by the
-compiler.
-
-@item
-In error messages, arguments are now numbered starting at 1, instead of
-0. Therefore, in the function @samp{void foo (int a, int b)}, the
-argument @samp{a} is argument 1, and @samp{b} is argument 2. There is
-no longer an argument 0.
-
-@item
-The tag for an enumerator, rather than its value, used as a default
-argument is now shown in all error messages. For example, @w{@samp{void
-foo (enum x (= true))}} is shown instead of @w{@samp{void foo (enum x (=
-1))}}.
-
-@item
-The @samp{__asm__} keyword is now accepted by the C++ front-end.
-
-@item
-Expressions of the form @samp{foo->~Class()} are now handled properly.
-
-@item
-The compiler now gives better warnings for situations which result in
-integer overflows (e.g., in storage sizes, enumerators, unary
-expressions, etc).
-
-@item
-@code{unsigned} bitfields are now promoted to @code{signed int} if the
-field isn't as wide as an @code{int}.
-
-@item
-Declaration and usage of prefix and postfix @samp{operator ++} and
-@samp{operator --} are now handled correctly. For example,
-
-@smallexample
-@group
-class foo
-@{
-public:
- operator ++ ();
- operator ++ (int);
- operator -- ();
- operator -- (int);
-@};
-
-void
-f (foo *f)
-@{
- f++; // @i{call @code{f->operator++(int)}}
- ++f; // @i{call @code{f->operator++()}}
- f--; // @i{call @code{f->operator++(int)}}
- --f; // @i{call @code{f->operator++()}}
-@}
-@end group
-@end smallexample
-
-@item
-In accordance with @sc{arm} section 10.1.1, ambiguities and dominance are now
-handled properly. The rules described in section 10.1.1 are now fully
-implemented.
-
-@end itemize
-
-@node Problems with debugging
-@section Problems with debugging
-
-Two problems remain with regard to debugging:
-
-@itemize @bullet
-@item
-Debugging of anonymous structures on the IBM RS/6000 host is incorrect.
-
-@item
-Symbol table size is overly large due to redundant symbol information;
-this can make @code{gdb} coredump under certain circumstances. This
-problem is not host-specific.
-@end itemize
-
-@node Plans
-@chapter Plans for Reno-2
-
-The overall goal for the second phase of the @sc{gnu} C++ Renovation
-Project is to bring @sc{gnu} C++ to a new level of reliability, quality,
-and competitiveness. As particular elements of this strategy, we intend
-to:
-
-@enumerate 0
-@item
-Fully implement @sc{ansi} exception handling.
-
-@item
-With the exception handling, add Runtime Type Identification
-(@sc{rtti}), if the @sc{ansi} committee adopts it into the standard.
-
-@item
-Bring the compiler into closer compliance with the @sc{arm} and the draft
-@sc{ansi} standard, and document what points in the @sc{arm} we do not yet comply,
-or agree, with.
-
-@item
-Add further support for the @sc{dwarf} debugging format.
-
-@item
-Finish the work to make the compiler compliant with @sc{arm} Section 12.6.2,
-initializing base classes in declaration order, rather than in the order
-that you specify them in a @var{mem-initializer} list.
-
-@item
-Perform a full coverage analysis on the compiler, and weed out unused
-code, for a gain in performance and a reduction in the size of the compiler.
-
-@item
-Further improve the multiple inheritance implementation in the
-compiler to make it cleaner and more complete.
-@end enumerate
-
-@noindent
-As always, we encourage you to make suggestions and ask questions about
-@sc{gnu} C++ as a whole, so we can be sure that the end of this project
-will bring a compiler that everyone will find essential for C++ and will
-meet the needs of the world's C++ community.
-
-@include templates.texi
-
-@include gpcompare.texi
-
-@contents
-
-@bye
diff --git a/contrib/gcc/cp/spew.c b/contrib/gcc/cp/spew.c
deleted file mode 100644
index 5bd3fdf..0000000
--- a/contrib/gcc/cp/spew.c
+++ /dev/null
@@ -1,1558 +0,0 @@
-/* Type Analyzer for GNU C++.
- Copyright (C) 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
- Hacked... nay, bludgeoned... by Mark Eichin (eichin@cygnus.com)
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* This file is the type analyzer for GNU C++. To debug it, define SPEW_DEBUG
- when compiling parse.c and spew.c. */
-
-#include "config.h"
-#include "system.h"
-#include "input.h"
-#include "tree.h"
-#include "cp-tree.h"
-#include "cpplib.h"
-#include "c-pragma.h"
-#include "lex.h"
-#include "parse.h"
-#include "flags.h"
-#include "obstack.h"
-#include "toplev.h"
-#include "ggc.h"
-#include "intl.h"
-#include "timevar.h"
-
-#ifdef SPEW_DEBUG
-#define SPEW_INLINE
-#else
-#define SPEW_INLINE inline
-#endif
-
-/* This takes a token stream that hasn't decided much about types and
- tries to figure out as much as it can, with excessive lookahead and
- backtracking. */
-
-/* fifo of tokens recognized and available to parser. */
-struct token GTY(())
-{
- /* The values for YYCHAR will fit in a short. */
- short yychar;
- unsigned int lineno;
- YYSTYPE GTY ((desc ("%1.yychar"))) yylval;
-};
-
-/* Since inline methods can refer to text which has not yet been seen,
- we store the text of the method in a structure which is placed in the
- DECL_PENDING_INLINE_INFO field of the FUNCTION_DECL.
- After parsing the body of the class definition, the FUNCTION_DECL's are
- scanned to see which ones have this field set. Those are then digested
- one at a time.
-
- This function's FUNCTION_DECL will have a bit set in its common so
- that we know to watch out for it. */
-
-#define TOKEN_CHUNK_SIZE 20
-struct token_chunk GTY(())
-{
- struct token_chunk *next;
- struct token toks[TOKEN_CHUNK_SIZE];
-};
-
-struct unparsed_text GTY(())
-{
- struct unparsed_text *next; /* process this one next */
- tree decl; /* associated declaration */
- location_t locus; /* location we got the text from */
- int interface; /* remembering interface_unknown and interface_only */
-
- struct token_chunk * tokens; /* Start of the token list. */
-
- struct token_chunk *last_chunk; /* End of the token list. */
- short last_pos; /* Number of tokens used in the last chunk of
- TOKENS. */
-
- short cur_pos; /* Current token in 'cur_chunk', when rescanning. */
- struct token_chunk *cur_chunk; /* Current chunk, when rescanning. */
-};
-
-/* Stack of state saved off when we return to an inline method or
- default argument that has been stored for later parsing. */
-struct feed GTY(())
-{
- struct unparsed_text *input;
- location_t locus;
- int yychar;
- YYSTYPE GTY ((desc ("%1.yychar"))) yylval;
- int first_token;
- struct obstack GTY ((skip (""))) token_obstack;
- struct feed *next;
-};
-
-static GTY(()) struct feed *feed;
-
-static SPEW_INLINE void do_aggr PARAMS ((void));
-static SPEW_INLINE int identifier_type PARAMS ((tree));
-static void scan_tokens PARAMS ((int));
-static void feed_defarg PARAMS ((tree));
-static void finish_defarg PARAMS ((void));
-static void yylexstring PARAMS ((struct token *));
-static int read_token PARAMS ((struct token *));
-
-static SPEW_INLINE int num_tokens PARAMS ((void));
-static SPEW_INLINE struct token *nth_token PARAMS ((int));
-static SPEW_INLINE int next_token PARAMS ((struct token *));
-static SPEW_INLINE int shift_token PARAMS ((void));
-static SPEW_INLINE void push_token PARAMS ((struct token *));
-static SPEW_INLINE void consume_token PARAMS ((void));
-static SPEW_INLINE int read_process_identifier PARAMS ((YYSTYPE *));
-
-static SPEW_INLINE void feed_input PARAMS ((struct unparsed_text *));
-static SPEW_INLINE struct token * space_for_token
- PARAMS ((struct unparsed_text *t));
-static SPEW_INLINE struct token * remove_last_token
- PARAMS ((struct unparsed_text *t));
-static struct unparsed_text * alloc_unparsed_text
- PARAMS ((const location_t *, tree decl, int interface));
-
-static void snarf_block PARAMS ((struct unparsed_text *t));
-static tree snarf_defarg PARAMS ((void));
-static void snarf_parenthesized_expression (struct unparsed_text *);
-static int frob_id PARAMS ((int, int, tree *));
-
-/* The list of inline functions being held off until we reach the end of
- the current class declaration. */
-static GTY(()) struct unparsed_text *pending_inlines;
-static GTY(()) struct unparsed_text *pending_inlines_tail;
-
-/* The list of previously-deferred inline functions currently being parsed.
- This exists solely to be a GC root. */
-static GTY(()) struct unparsed_text *processing_these_inlines;
-
-static void begin_parsing_inclass_inline PARAMS ((struct unparsed_text *));
-
-#ifdef SPEW_DEBUG
-int spew_debug = 0;
-static unsigned int yylex_ctr = 0;
-
-static void debug_yychar PARAMS ((int));
-
-/* In parse.y: */
-extern char *debug_yytranslate PARAMS ((int));
-#endif
-static enum cpp_ttype last_token;
-static tree last_token_id;
-
-/* From lex.c: */
-/* the declaration found for the last IDENTIFIER token read in. yylex
- must look this up to detect typedefs, which get token type
- tTYPENAME, so it is left around in case the identifier is not a
- typedef but is used in a context which makes it a reference to a
- variable. */
-extern tree lastiddecl; /* let our brains leak out here too */
-extern int yychar; /* the lookahead symbol */
-extern YYSTYPE yylval; /* the semantic value of the */
- /* lookahead symbol */
-/* The token fifo lives in this obstack. */
-static struct obstack token_obstack;
-static int first_token;
-
-/* When we see a default argument in a method declaration, we snarf it as
- text using snarf_defarg. When we get up to namespace scope, we then go
- through and parse all of them using do_pending_defargs. Since yacc
- parsers are not reentrant, we retain defargs state in these two
- variables so that subsequent calls to do_pending_defargs can resume
- where the previous call left off. DEFARG_FNS is a tree_list where
- the TREE_TYPE is the current_class_type, TREE_VALUE is the FUNCTION_DECL,
- and TREE_PURPOSE is the list unprocessed dependent functions. */
-
-/* list of functions with unprocessed defargs */
-static GTY(()) tree defarg_fns;
-/* current default parameter */
-static GTY(()) tree defarg_parm;
-/* list of unprocessed fns met during current fn. */
-static GTY(()) tree defarg_depfns;
-/* list of fns with circular defargs */
-static GTY(()) tree defarg_fnsdone;
-
-/* Initialize obstacks. Called once, from cxx_init. */
-
-void
-init_spew ()
-{
- gcc_obstack_init (&token_obstack);
-}
-
-/* Subroutine of read_token. */
-static SPEW_INLINE int
-read_process_identifier (pyylval)
- YYSTYPE *pyylval;
-{
- tree id = pyylval->ttype;
-
- if (C_IS_RESERVED_WORD (id))
- {
- pyylval->ttype = ridpointers[C_RID_CODE (id)];
- return C_RID_YYCODE (id);
- }
-
- /* Make sure that user does not collide with our internal naming
- scheme. This is not necessary if '.' is used to remove them from
- the user's namespace, but is if '$' or double underscores are. */
-
-#if !defined(JOINER) || JOINER == '$'
- if (VPTR_NAME_P (id)
- || VTABLE_NAME_P (id)
- || TEMP_NAME_P (id)
- || ANON_AGGRNAME_P (id))
- warning (
-"identifier name `%s' conflicts with GNU C++ internal naming strategy",
- IDENTIFIER_POINTER (id));
-#endif
- return IDENTIFIER;
-}
-
-/* Concatenate strings before returning them to the parser. This isn't quite
- as good as having it done in the lexer, but it's better than nothing. */
-
-static void
-yylexstring (t)
- struct token *t;
-{
- enum cpp_ttype next_type;
- tree next;
-
- next_type = c_lex (&next);
- if (next_type == CPP_STRING || next_type == CPP_WSTRING)
- {
- varray_type strings;
-
- VARRAY_TREE_INIT (strings, 32, "strings");
- VARRAY_PUSH_TREE (strings, t->yylval.ttype);
-
- do
- {
- VARRAY_PUSH_TREE (strings, next);
- next_type = c_lex (&next);
- }
- while (next_type == CPP_STRING || next_type == CPP_WSTRING);
-
- t->yylval.ttype = combine_strings (strings);
- last_token_id = t->yylval.ttype;
- }
-
- /* We will have always read one token too many. */
- _cpp_backup_tokens (parse_in, 1);
-
- t->yychar = STRING;
-}
-
-/* Read the next token from the input file. The token is written into
- T, and its type number is returned. */
-static int
-read_token (t)
- struct token *t;
-{
- retry:
-
- last_token = c_lex (&last_token_id);
- t->yylval.ttype = last_token_id;
-
- switch (last_token)
- {
-#define YYCHAR(YY) t->yychar = (YY); break;
-#define YYCODE(C) t->yylval.code = (C);
-
- case CPP_EQ: YYCHAR('=');
- case CPP_NOT: YYCHAR('!');
- case CPP_GREATER: YYCODE(GT_EXPR); YYCHAR('>');
- case CPP_LESS: YYCODE(LT_EXPR); YYCHAR('<');
- case CPP_PLUS: YYCODE(PLUS_EXPR); YYCHAR('+');
- case CPP_MINUS: YYCODE(MINUS_EXPR); YYCHAR('-');
- case CPP_MULT: YYCODE(MULT_EXPR); YYCHAR('*');
- case CPP_DIV: YYCODE(TRUNC_DIV_EXPR); YYCHAR('/');
- case CPP_MOD: YYCODE(TRUNC_MOD_EXPR); YYCHAR('%');
- case CPP_AND: YYCODE(BIT_AND_EXPR); YYCHAR('&');
- case CPP_OR: YYCODE(BIT_IOR_EXPR); YYCHAR('|');
- case CPP_XOR: YYCODE(BIT_XOR_EXPR); YYCHAR('^');
- case CPP_RSHIFT: YYCODE(RSHIFT_EXPR); YYCHAR(RSHIFT);
- case CPP_LSHIFT: YYCODE(LSHIFT_EXPR); YYCHAR(LSHIFT);
-
- case CPP_COMPL: YYCHAR('~');
- case CPP_AND_AND: YYCHAR(ANDAND);
- case CPP_OR_OR: YYCHAR(OROR);
- case CPP_QUERY: YYCHAR('?');
- case CPP_COLON: YYCHAR(':');
- case CPP_COMMA: YYCHAR(',');
- case CPP_OPEN_PAREN: YYCHAR('(');
- case CPP_CLOSE_PAREN: YYCHAR(')');
- case CPP_EQ_EQ: YYCODE(EQ_EXPR); YYCHAR(EQCOMPARE);
- case CPP_NOT_EQ: YYCODE(NE_EXPR); YYCHAR(EQCOMPARE);
- case CPP_GREATER_EQ:YYCODE(GE_EXPR); YYCHAR(ARITHCOMPARE);
- case CPP_LESS_EQ: YYCODE(LE_EXPR); YYCHAR(ARITHCOMPARE);
-
- case CPP_PLUS_EQ: YYCODE(PLUS_EXPR); YYCHAR(ASSIGN);
- case CPP_MINUS_EQ: YYCODE(MINUS_EXPR); YYCHAR(ASSIGN);
- case CPP_MULT_EQ: YYCODE(MULT_EXPR); YYCHAR(ASSIGN);
- case CPP_DIV_EQ: YYCODE(TRUNC_DIV_EXPR); YYCHAR(ASSIGN);
- case CPP_MOD_EQ: YYCODE(TRUNC_MOD_EXPR); YYCHAR(ASSIGN);
- case CPP_AND_EQ: YYCODE(BIT_AND_EXPR); YYCHAR(ASSIGN);
- case CPP_OR_EQ: YYCODE(BIT_IOR_EXPR); YYCHAR(ASSIGN);
- case CPP_XOR_EQ: YYCODE(BIT_XOR_EXPR); YYCHAR(ASSIGN);
- case CPP_RSHIFT_EQ: YYCODE(RSHIFT_EXPR); YYCHAR(ASSIGN);
- case CPP_LSHIFT_EQ: YYCODE(LSHIFT_EXPR); YYCHAR(ASSIGN);
-
- case CPP_OPEN_SQUARE: YYCHAR('[');
- case CPP_CLOSE_SQUARE: YYCHAR(']');
- case CPP_OPEN_BRACE: YYCHAR('{');
- case CPP_CLOSE_BRACE: YYCHAR('}');
- case CPP_SEMICOLON: YYCHAR(';');
- case CPP_ELLIPSIS: YYCHAR(ELLIPSIS);
-
- case CPP_PLUS_PLUS: YYCHAR(PLUSPLUS);
- case CPP_MINUS_MINUS: YYCHAR(MINUSMINUS);
- case CPP_DEREF: YYCHAR(POINTSAT);
- case CPP_DOT: YYCHAR('.');
-
- /* These tokens are C++ specific. */
- case CPP_SCOPE: YYCHAR(SCOPE);
- case CPP_DEREF_STAR: YYCHAR(POINTSAT_STAR);
- case CPP_DOT_STAR: YYCHAR(DOT_STAR);
- case CPP_MIN_EQ: YYCODE(MIN_EXPR); YYCHAR(ASSIGN);
- case CPP_MAX_EQ: YYCODE(MAX_EXPR); YYCHAR(ASSIGN);
- case CPP_MIN: YYCODE(MIN_EXPR); YYCHAR(MIN_MAX);
- case CPP_MAX: YYCODE(MAX_EXPR); YYCHAR(MIN_MAX);
-#undef YYCHAR
-#undef YYCODE
-
- case CPP_EOF:
- t->yychar = 0;
- break;
-
- case CPP_NAME:
- t->yychar = read_process_identifier (&t->yylval);
- break;
-
- case CPP_NUMBER:
- case CPP_CHAR:
- case CPP_WCHAR:
- t->yychar = CONSTANT;
- break;
-
- case CPP_STRING:
- case CPP_WSTRING:
- yylexstring (t);
- break;
-
- default:
- yyerror ("parse error");
- goto retry;
- }
-
- t->lineno = lineno;
- return t->yychar;
-}
-
-static void
-feed_input (input)
- struct unparsed_text *input;
-{
- struct feed *f;
-#if 0
- if (feed)
- abort ();
-#endif
-
- f = ggc_alloc (sizeof (struct feed));
-
- input->cur_chunk = input->tokens;
- input->cur_pos = 0;
-
-#ifdef SPEW_DEBUG
- if (spew_debug)
- fprintf (stderr, "\tfeeding %s:%d [%d tokens]\n",
- input->locus.file, input->locus.line, input->limit - input->pos);
-#endif
-
- f->input = input;
- f->locus.file = input_filename;
- f->locus.line = lineno;
- f->yychar = yychar;
- f->yylval = yylval;
- f->first_token = first_token;
- f->token_obstack = token_obstack;
- f->next = feed;
-
- input_filename = input->locus.file;
- lineno = input->locus.line;
- yychar = YYEMPTY;
- yylval.ttype = NULL_TREE;
- first_token = 0;
- gcc_obstack_init (&token_obstack);
- feed = f;
-}
-
-void
-end_input ()
-{
- struct feed *f = feed;
-
- input_filename = f->locus.file;
- lineno = f->locus.line;
- yychar = f->yychar;
- yylval = f->yylval;
- first_token = f->first_token;
- obstack_free (&token_obstack, 0);
- token_obstack = f->token_obstack;
- feed = f->next;
-
-#ifdef SPEW_DEBUG
- if (spew_debug)
- fprintf (stderr, "\treturning to %s:%d\n", input_filename, lineno);
-#endif
-}
-
-/* Token queue management. */
-
-/* Return the number of tokens available on the fifo. */
-static SPEW_INLINE int
-num_tokens ()
-{
- return (obstack_object_size (&token_obstack) / sizeof (struct token))
- - first_token;
-}
-
-/* Fetch the token N down the line from the head of the fifo. */
-
-static SPEW_INLINE struct token*
-nth_token (n)
- int n;
-{
-#ifdef ENABLE_CHECKING
- /* could just have this do slurp_ implicitly, but this way is easier
- to debug... */
- my_friendly_assert (n >= 0 && n < num_tokens (), 298);
-#endif
- return ((struct token*)obstack_base (&token_obstack)) + n + first_token;
-}
-
-static const struct token Teosi = { END_OF_SAVED_INPUT, 0 UNION_INIT_ZERO };
-static const struct token Tpad = { EMPTY, 0 UNION_INIT_ZERO };
-
-/* Copy the next token into T and return its value. */
-static SPEW_INLINE int
-next_token (t)
- struct token *t;
-{
- if (!feed)
- return read_token (t);
-
- if (feed->input->cur_chunk != feed->input->last_chunk
- || feed->input->cur_pos != feed->input->last_pos)
- {
- if (feed->input->cur_pos == TOKEN_CHUNK_SIZE)
- {
- feed->input->cur_chunk = feed->input->cur_chunk->next;
- feed->input->cur_pos = 0;
- }
- memcpy (t, feed->input->cur_chunk->toks + feed->input->cur_pos,
- sizeof (struct token));
- feed->input->cur_pos++;
- return t->yychar;
- }
-
- return 0;
-}
-
-/* Shift the next token onto the fifo. */
-static SPEW_INLINE int
-shift_token ()
-{
- size_t point = obstack_object_size (&token_obstack);
- obstack_blank (&token_obstack, sizeof (struct token));
- return next_token ((struct token *) (obstack_base (&token_obstack) + point));
-}
-
-/* Consume the next token out of the fifo. */
-
-static SPEW_INLINE void
-consume_token ()
-{
- if (num_tokens () == 1)
- {
- obstack_free (&token_obstack, obstack_base (&token_obstack));
- first_token = 0;
- }
- else
- first_token++;
-}
-
-/* Push a token at the head of the queue; it will be the next token read. */
-static SPEW_INLINE void
-push_token (t)
- struct token *t;
-{
- if (first_token == 0) /* We hope this doesn't happen often. */
- {
- size_t active = obstack_object_size (&token_obstack);
- obstack_blank (&token_obstack, sizeof (struct token));
- if (active)
- memmove (obstack_base (&token_obstack) + sizeof (struct token),
- obstack_base (&token_obstack), active);
- first_token++;
- }
- first_token--;
- memcpy (nth_token (0), t, sizeof (struct token));
-}
-
-
-/* Pull in enough tokens that the queue is N long beyond the current
- token. */
-
-static void
-scan_tokens (n)
- int n;
-{
- int i;
- int num = num_tokens ();
- int yychar;
-
- /* First, prune any empty tokens at the end. */
- i = num;
- while (i > 0 && nth_token (i - 1)->yychar == EMPTY)
- i--;
- if (i < num)
- {
- obstack_blank (&token_obstack, -((num - i) * sizeof (struct token)));
- num = i;
- }
-
- /* Now, if we already have enough tokens, return. */
- if (num > n)
- return;
-
- /* Never read past these characters: they might separate
- the current input stream from one we save away later. */
- for (i = 0; i < num; i++)
- {
- yychar = nth_token (i)->yychar;
- if (yychar == '{' || yychar == ':' || yychar == ';')
- goto pad_tokens;
- }
-
- while (num_tokens () <= n)
- {
- yychar = shift_token ();
- if (yychar == '{' || yychar == ':' || yychar == ';')
- goto pad_tokens;
- }
- return;
-
- pad_tokens:
- while (num_tokens () <= n)
- obstack_grow (&token_obstack, &Tpad, sizeof (struct token));
-}
-
-int looking_for_typename;
-int looking_for_template;
-
-static int after_friend;
-static int after_new;
-static int do_snarf_defarg;
-
-tree got_scope;
-tree got_object;
-
-static SPEW_INLINE int
-identifier_type (decl)
- tree decl;
-{
- tree t;
-
- if (TREE_CODE (decl) == TEMPLATE_DECL)
- {
- if (TREE_CODE (DECL_TEMPLATE_RESULT (decl)) == TYPE_DECL)
- return PTYPENAME;
- else if (looking_for_template)
- return PFUNCNAME;
- }
- if (looking_for_template && really_overloaded_fn (decl))
- {
- /* See through a baselink. */
- if (TREE_CODE (decl) == BASELINK)
- decl = BASELINK_FUNCTIONS (decl);
-
- for (t = decl; t != NULL_TREE; t = OVL_CHAIN (t))
- if (DECL_FUNCTION_TEMPLATE_P (OVL_FUNCTION (t)))
- return PFUNCNAME;
- }
- if (TREE_CODE (decl) == NAMESPACE_DECL)
- return NSNAME;
- if (TREE_CODE (decl) != TYPE_DECL)
- return IDENTIFIER;
- if (DECL_ARTIFICIAL (decl) && TREE_TYPE (decl) == current_class_type)
- return SELFNAME;
-
- /* A constructor declarator for a template type will get here as an
- implicit typename, a TYPENAME_TYPE with a type. */
- t = got_scope;
- if (t && TREE_CODE (t) == TYPENAME_TYPE)
- t = TREE_TYPE (t);
- decl = TREE_TYPE (decl);
- if (TREE_CODE (decl) == TYPENAME_TYPE)
- decl = TREE_TYPE (decl);
- if (t && t == decl)
- return SELFNAME;
-
- return tTYPENAME;
-}
-
-/* token[0] == AGGR (struct/union/enum)
- Thus, token[1] is either a tTYPENAME or a TYPENAME_DEFN.
- If token[2] == '{' or ':' then it's TYPENAME_DEFN.
- It's also a definition if it's a forward declaration (as in 'struct Foo;')
- which we can tell if token[2] == ';' *and* token[-1] != FRIEND or NEW. */
-
-static SPEW_INLINE void
-do_aggr ()
-{
- int yc1, yc2;
-
- scan_tokens (2);
- yc1 = nth_token (1)->yychar;
- if (yc1 != tTYPENAME && yc1 != IDENTIFIER && yc1 != PTYPENAME)
- return;
- yc2 = nth_token (2)->yychar;
- if (yc2 == ';')
- {
- /* It's a forward declaration iff we were not preceded by
- 'friend' or `new'. */
- if (after_friend || after_new)
- return;
- }
- else if (yc2 != '{' && yc2 != ':')
- return;
-
- switch (yc1)
- {
- case tTYPENAME:
- nth_token (1)->yychar = TYPENAME_DEFN;
- break;
- case PTYPENAME:
- nth_token (1)->yychar = PTYPENAME_DEFN;
- break;
- case IDENTIFIER:
- nth_token (1)->yychar = IDENTIFIER_DEFN;
- break;
- default:
- abort ();
- }
-}
-
-void
-see_typename ()
-{
- /* Only types expected, not even namespaces. */
- looking_for_typename = 2;
- if (yychar < 0)
- if ((yychar = yylex ()) < 0) yychar = 0;
- looking_for_typename = 0;
- if (yychar == IDENTIFIER)
- {
- lastiddecl = lookup_name (yylval.ttype, -2);
- if (lastiddecl)
- yychar = identifier_type (lastiddecl);
- }
-}
-
-int
-yylex ()
-{
- int yychr;
- int old_looking_for_typename = 0;
- int just_saw_new = 0;
- int just_saw_friend = 0;
-
- timevar_push (TV_LEX);
-
- retry:
-#ifdef SPEW_DEBUG
- if (spew_debug)
- {
- yylex_ctr ++;
- fprintf (stderr, "\t\t## %d @%d ", yylex_ctr, lineno);
- }
-#endif
-
- if (do_snarf_defarg)
- {
- do_snarf_defarg = 0;
- yylval.ttype = snarf_defarg ();
- yychar = DEFARG;
- got_object = NULL_TREE;
- timevar_pop (TV_LEX);
- return DEFARG;
- }
-
- /* if we've got tokens, send them */
- else if (num_tokens ())
- yychr = nth_token (0)->yychar;
- else
- yychr = shift_token ();
-
- /* many tokens just need to be returned. At first glance, all we
- have to do is send them back up, but some of them are needed to
- figure out local context. */
- switch (yychr)
- {
- case EMPTY:
- /* This is a lexical no-op. */
-#ifdef SPEW_DEBUG
- if (spew_debug)
- debug_yychar (yychr);
-#endif
- consume_token ();
- goto retry;
-
- case '(':
- scan_tokens (1);
- if (nth_token (1)->yychar == ')')
- {
- consume_token ();
- yychr = LEFT_RIGHT;
- }
- break;
-
- case IDENTIFIER:
- {
- int peek;
-
- scan_tokens (1);
- peek = nth_token (1)->yychar;
- yychr = frob_id (yychr, peek, &nth_token (0)->yylval.ttype);
- break;
- }
- case IDENTIFIER_DEFN:
- case tTYPENAME:
- case TYPENAME_DEFN:
- case PTYPENAME:
- case PTYPENAME_DEFN:
- /* If we see a SCOPE next, restore the old value.
- Otherwise, we got what we want. */
- looking_for_typename = old_looking_for_typename;
- looking_for_template = 0;
- break;
-
- case SCSPEC:
- if (nth_token (0)->yylval.ttype == ridpointers[RID_EXTERN])
- {
- scan_tokens (1);
- if (nth_token (1)->yychar == STRING)
- {
- yychr = EXTERN_LANG_STRING;
- nth_token (1)->yylval.ttype = get_identifier
- (TREE_STRING_POINTER (nth_token (1)->yylval.ttype));
- consume_token ();
- }
- }
- /* do_aggr needs to know if the previous token was `friend'. */
- else if (nth_token (0)->yylval.ttype == ridpointers[RID_FRIEND])
- just_saw_friend = 1;
-
- break;
-
- case NEW:
- /* do_aggr needs to know if the previous token was `new'. */
- just_saw_new = 1;
- break;
-
- case TYPESPEC:
- case '{':
- case ':':
- case ';':
- /* If this provides a type for us, then revert lexical
- state to standard state. */
- looking_for_typename = 0;
- break;
-
- case AGGR:
- do_aggr ();
- break;
-
- case ENUM:
- /* Set this again, in case we are rescanning. */
- looking_for_typename = 2;
- break;
-
- default:
- break;
- }
-
- after_friend = just_saw_friend;
- after_new = just_saw_new;
-
- /* class member lookup only applies to the first token after the object
- expression, except for explicit destructor calls. */
- if (yychr != '~')
- got_object = NULL_TREE;
-
- yychar = yychr;
- {
- struct token *tok = nth_token (0);
-
- yylval = tok->yylval;
- if (tok->lineno)
- lineno = tok->lineno;
- }
-
-#ifdef SPEW_DEBUG
- if (spew_debug)
- debug_yychar (yychr);
-#endif
- consume_token ();
-
- timevar_pop (TV_LEX);
- return yychr;
-}
-
-/* Unget character CH from the input stream.
- If RESCAN is nonzero, then we want to `see' this
- character as the next input token. */
-
-void
-yyungetc (ch, rescan)
- int ch;
- int rescan;
-{
- /* Unget a character from the input stream. */
- if (yychar == YYEMPTY || rescan == 0)
- {
- struct token fake;
-
- fake.yychar = ch;
- fake.yylval.ttype = 0;
- fake.lineno = lineno;
-
- push_token (&fake);
- }
- else
- {
- yychar = ch;
- }
-}
-
-/* Lexer hackery to determine what *IDP really is. */
-
-static int
-frob_id (yyc, peek, idp)
- int yyc;
- int peek;
- tree *idp;
-{
- tree trrr;
- int old_looking_for_typename = 0;
-
- if (peek == SCOPE)
- {
- /* Don't interfere with the setting from an 'aggr' prefix. */
- old_looking_for_typename = looking_for_typename;
- looking_for_typename = 1;
- }
- else if (peek == '<')
- looking_for_template = 1;
- trrr = lookup_name (*idp, -2);
- if (trrr)
- {
- yyc = identifier_type (trrr);
- switch(yyc)
- {
- case tTYPENAME:
- case SELFNAME:
- case NSNAME:
- case PTYPENAME:
- /* If this got special lookup, remember it. In these
- cases, we know it can't be a declarator-id. */
- if (got_scope || got_object)
- *idp = trrr;
- /* FALLTHROUGH */
- case PFUNCNAME:
- case IDENTIFIER:
- lastiddecl = trrr;
- break;
- default:
- abort ();
- }
- }
- else
- lastiddecl = NULL_TREE;
- got_scope = NULL_TREE;
- looking_for_typename = old_looking_for_typename;
- looking_for_template = 0;
- return yyc;
-}
-
-/* ID is an operator name. Duplicate the hackery in yylex to determine what
- it really is. */
-
-tree frob_opname (id)
- tree id;
-{
- scan_tokens (0);
- frob_id (0, nth_token (0)->yychar, &id);
- got_object = NULL_TREE;
- return id;
-}
-
-/* Set up the state required to correctly handle the definition of the
- inline function whose preparsed state has been saved in PI. */
-
-static void
-begin_parsing_inclass_inline (pi)
- struct unparsed_text *pi;
-{
- tree context;
-
- /* Record that we are processing the chain of inlines starting at
- PI for GC. */
- if (cfun)
- cp_function_chain->unparsed_inlines = pi;
- else
- processing_these_inlines = pi;
-
- ggc_collect ();
-
- /* If this is an inline function in a local class, we must make sure
- that we save all pertinent information about the function
- surrounding the local class. */
- context = decl_function_context (pi->decl);
- if (context)
- push_function_context_to (context);
-
- feed_input (pi);
- interface_unknown = pi->interface == 1;
- interface_only = pi->interface == 0;
- DECL_PENDING_INLINE_P (pi->decl) = 0;
- DECL_PENDING_INLINE_INFO (pi->decl) = 0;
-
- /* Pass back a handle to the rest of the inline functions, so that they
- can be processed later. */
- yychar = PRE_PARSED_FUNCTION_DECL;
- yylval.pi = pi;
-
- start_function (NULL_TREE, pi->decl, NULL_TREE,
- (SF_DEFAULT | SF_PRE_PARSED | SF_INCLASS_INLINE));
-}
-
-/* Called from the top level: if there are any pending inlines to
- do, set up to process them now. This function sets up the first function
- to be parsed; after it has been, the rule for fndef in parse.y will
- call process_next_inline to start working on the next one. */
-
-void
-do_pending_inlines ()
-{
- /* Oops, we're still dealing with the last batch. */
- if (yychar == PRE_PARSED_FUNCTION_DECL)
- return;
-
- if (pending_inlines)
- {
- /* Clear the chain, so that any inlines nested inside the batch
- we're to process now don't refer to this batch. See e.g.
- g++.other/lookup6.C. */
- struct unparsed_text *first = pending_inlines;
- pending_inlines = pending_inlines_tail = 0;
-
- begin_parsing_inclass_inline (first);
- }
-}
-
-/* Called from the fndecl rule in the parser when the function just parsed
- was declared using a PRE_PARSED_FUNCTION_DECL (i.e. came from
- do_pending_inlines). */
-
-void
-process_next_inline (i)
- struct unparsed_text *i;
-{
- tree decl = i->decl;
- tree context = decl_function_context (decl);
-
- if (context)
- pop_function_context_from (context);
- if (yychar == YYEMPTY)
- yychar = yylex ();
- if (yychar != END_OF_SAVED_INPUT)
- error ("parse error at end of saved function text");
- end_input ();
-
- i = i->next;
- if (i)
- begin_parsing_inclass_inline (i);
- else
- {
- if (cfun)
- cp_function_chain->unparsed_inlines = 0;
- else
- processing_these_inlines = 0;
- extract_interface_info ();
- }
-}
-
-/* Create a new token at the end of the token list in T. */
-static SPEW_INLINE struct token *
-space_for_token (t)
- struct unparsed_text *t;
-{
- if (t->last_pos != TOKEN_CHUNK_SIZE)
- return t->last_chunk->toks + (t->last_pos++);
-
- t->last_chunk->next = ggc_alloc_cleared (sizeof (*t->last_chunk->next));
- t->last_chunk = t->last_chunk->next;
- t->last_chunk->next = NULL;
-
- t->last_pos = 1;
- return t->last_chunk->toks;
-}
-
-/* Shrink the token list in T by one token. */
-static SPEW_INLINE struct token *
-remove_last_token (t)
- struct unparsed_text *t;
-{
- struct token *result = t->last_chunk->toks + t->last_pos - 1;
- if (t->last_pos == 0)
- abort ();
- t->last_pos--;
- if (t->last_pos == 0 && t->last_chunk != t->tokens)
- {
- struct token_chunk *c;
- c = t->tokens;
- while (c->next != t->last_chunk)
- c = c->next;
- c->next = NULL;
- t->last_chunk = c;
- t->last_pos = ARRAY_SIZE (c->toks);
- }
- return result;
-}
-
-/* Allocate an 'unparsed_text' structure, ready to use space_for_token. */
-static struct unparsed_text *
-alloc_unparsed_text (locus, decl, interface)
- const location_t *locus;
- tree decl;
- int interface;
-{
- struct unparsed_text *r;
- r = ggc_alloc_cleared (sizeof (*r));
- r->decl = decl;
- r->locus = *locus;
- r->interface = interface;
- r->tokens = r->last_chunk = ggc_alloc_cleared (sizeof (*r->tokens));
- return r;
-}
-
-/* Accumulate the tokens that make up a parenthesized expression in T,
- having already read the opening parenthesis. */
-
-static void
-snarf_parenthesized_expression (struct unparsed_text *t)
-{
- int yyc;
- int level = 1;
-
- while (1)
- {
- yyc = next_token (space_for_token (t));
- if (yyc == '(')
- ++level;
- else if (yyc == ')' && --level == 0)
- break;
- else if (yyc == 0)
- {
- error ("%Hend of file read inside definition", &t->locus);
- break;
- }
- }
-}
-
-/* Subroutine of snarf_method, deals with actual absorption of the block. */
-
-static void
-snarf_block (t)
- struct unparsed_text *t;
-{
- int blev = 1;
- int look_for_semicolon = 0;
- int look_for_lbrac = 0;
- int look_for_catch = 0;
- int yyc;
- struct token *current;
-
- if (yychar == '{')
- ;
- else if (yychar == '=')
- look_for_semicolon = 1;
- else if (yychar == ':' || yychar == RETURN_KEYWORD || yychar == TRY)
- {
- if (yychar == TRY)
- look_for_catch = 1;
- look_for_lbrac = 1;
- blev = 0;
- }
- else
- yyerror ("parse error in method specification");
-
- /* The current token is the first one to be recorded. */
- current = space_for_token (t);
- current->yychar = yychar;
- current->yylval = yylval;
- current->lineno = lineno;
-
- for (;;)
- {
- yyc = next_token (space_for_token (t));
-
- if (yyc == '{')
- {
- look_for_lbrac = 0;
- blev++;
- }
- else if (yyc == '}')
- {
- blev--;
- if (blev == 0 && !look_for_semicolon)
- {
- if (!look_for_catch)
- break;
-
- if (next_token (space_for_token (t)) != CATCH)
- {
- push_token (remove_last_token (t));
- break;
- }
-
- look_for_lbrac = 1;
- }
- }
- else if (yyc == ';')
- {
- if (look_for_lbrac)
- {
- struct token *fake;
-
- error ("function body for constructor missing");
- /* fake a { } to avoid further errors */
- fake = space_for_token (t);
- fake->yylval.ttype = 0;
- fake->yychar = '{';
- fake = space_for_token (t);
- fake->yylval.ttype = 0;
- fake->yychar = '}';
- break;
- }
- else if (look_for_semicolon && blev == 0)
- break;
- }
- else if (yyc == '(' && blev == 0)
- snarf_parenthesized_expression (t);
- else if (yyc == 0)
- {
- error ("%Hend of file read inside definition", &t->locus);
- break;
- }
- }
-}
-
-/* This function stores away the text for an inline function that should
- be processed later (by do_pending_inlines). */
-void
-snarf_method (decl)
- tree decl;
-{
- struct unparsed_text *meth;
- location_t starting;
- starting.file = input_filename;
- starting.line = lineno;
-
- meth = alloc_unparsed_text (&starting, decl, (interface_unknown ? 1
- : (interface_only ? 0 : 2)));
-
- snarf_block (meth);
- /* Add three END_OF_SAVED_INPUT tokens. We used to provide an
- infinite stream of END_OF_SAVED_INPUT tokens -- but that can
- cause the compiler to get stuck in an infinite loop when
- encountering invalid code. We need more than one because the
- parser sometimes peeks ahead several tokens. */
- memcpy (space_for_token (meth), &Teosi, sizeof (struct token));
- memcpy (space_for_token (meth), &Teosi, sizeof (struct token));
- memcpy (space_for_token (meth), &Teosi, sizeof (struct token));
-
- /* Happens when we get two declarations of the same function in the
- same scope. */
- if (decl == void_type_node
- || (current_class_type && TYPE_REDEFINED (current_class_type)))
- return;
-
-#ifdef SPEW_DEBUG
- if (spew_debug)
- fprintf (stderr, "\tsaved method of %d tokens from %s:%d\n",
- meth->limit, starting.file, starting.line);
-#endif
-
- DECL_PENDING_INLINE_INFO (decl) = meth;
- DECL_PENDING_INLINE_P (decl) = 1;
-
- /* We need to know that this was defined in the class, so that
- friend templates are handled correctly. */
- DECL_INITIALIZED_IN_CLASS_P (decl) = 1;
-
- if (pending_inlines_tail)
- pending_inlines_tail->next = meth;
- else
- pending_inlines = meth;
- pending_inlines_tail = meth;
-}
-
-/* Consume a no-commas expression - a default argument - and return
- a DEFAULT_ARG tree node. */
-
-static tree
-snarf_defarg ()
-{
- int yyc;
- int plev = 0;
- struct unparsed_text *buf;
- tree arg;
- location_t starting;
- starting.file = input_filename;
- starting.line = lineno;
-
- buf = alloc_unparsed_text (&starting, 0, 0);
-
- for (;;)
- {
- yyc = next_token (space_for_token (buf));
-
- if (plev <= 0 && (yyc == ')' || yyc == ','))
- break;
- else if (yyc == '(' || yyc == '[')
- ++plev;
- else if (yyc == ']' || yyc == ')')
- --plev;
- else if (yyc == 0)
- {
- error ("%Hend of file read inside default argument", &starting);
- goto done;
- }
- }
-
- /* Unget the last token. */
- push_token (remove_last_token (buf));
- /* Add three END_OF_SAVED_INPUT tokens. We used to provide an
- infinite stream of END_OF_SAVED_INPUT tokens -- but that can
- cause the compiler to get stuck in an infinite loop when
- encountering invalid code. We need more than one because the
- parser sometimes peeks ahead several tokens. */
- memcpy (space_for_token (buf), &Teosi, sizeof (struct token));
- memcpy (space_for_token (buf), &Teosi, sizeof (struct token));
- memcpy (space_for_token (buf), &Teosi, sizeof (struct token));
-
- done:
-#ifdef SPEW_DEBUG
- if (spew_debug)
- fprintf (stderr, "\tsaved defarg of %d tokens from %s:%d\n",
- buf->limit, starting.file, starting.line);
-#endif
-
- arg = make_node (DEFAULT_ARG);
- DEFARG_POINTER (arg) = (char *)buf;
-
- return arg;
-}
-
-/* Decide whether the default argument we are about to see should be
- gobbled up as text for later parsing. */
-
-void
-maybe_snarf_defarg ()
-{
- if (current_class_type && TYPE_BEING_DEFINED (current_class_type))
- do_snarf_defarg = 1;
-}
-
-/* Called from grokfndecl to note a function decl with unparsed default
- arguments for later processing. Also called from grokdeclarator
- for function types with unparsed defargs; the call from grokfndecl
- will always come second, so we can overwrite the entry from the type. */
-
-void
-add_defarg_fn (decl)
- tree decl;
-{
- if (TREE_CODE (decl) == FUNCTION_DECL)
- TREE_VALUE (defarg_fns) = decl;
- else
- {
- defarg_fns = tree_cons (NULL_TREE, decl, defarg_fns);
- TREE_TYPE (defarg_fns) = current_class_type;
- }
-}
-
-/* Helper for do_pending_defargs. Starts the parsing of a default arg. */
-
-static void
-feed_defarg (p)
- tree p;
-{
- tree d = TREE_PURPOSE (p);
-
- feed_input ((struct unparsed_text *)DEFARG_POINTER (d));
- yychar = DEFARG_MARKER;
- yylval.ttype = p;
-}
-
-/* Helper for do_pending_defargs. Ends the parsing of a default arg. */
-
-static void
-finish_defarg ()
-{
- if (yychar == YYEMPTY)
- yychar = yylex ();
- if (yychar != END_OF_SAVED_INPUT)
- error ("parse error at end of saved function text");
-
- end_input ();
-}
-
-/* Main function for deferred parsing of default arguments. Called from
- the parser. */
-
-void
-do_pending_defargs ()
-{
- if (defarg_parm)
- finish_defarg ();
-
- for (; defarg_fns;)
- {
- tree current = defarg_fns;
-
- tree defarg_fn = TREE_VALUE (defarg_fns);
- if (defarg_parm == NULL_TREE)
- {
- push_nested_class (TREE_TYPE (defarg_fns), 1);
- pushlevel (0);
- if (TREE_CODE (defarg_fn) == FUNCTION_DECL)
- maybe_begin_member_template_processing (defarg_fn);
-
- if (TREE_CODE (defarg_fn) == FUNCTION_DECL)
- defarg_parm = TYPE_ARG_TYPES (TREE_TYPE (defarg_fn));
- else
- defarg_parm = TYPE_ARG_TYPES (defarg_fn);
- }
- else
- defarg_parm = TREE_CHAIN (defarg_parm);
-
- for (; defarg_parm; defarg_parm = TREE_CHAIN (defarg_parm))
- if (!TREE_PURPOSE (defarg_parm)
- || TREE_CODE (TREE_PURPOSE (defarg_parm)) != DEFAULT_ARG)
- ;/* OK */
- else if (TREE_PURPOSE (current) == error_mark_node)
- DEFARG_POINTER (TREE_PURPOSE (defarg_parm)) = NULL;
- else
- {
- feed_defarg (defarg_parm);
-
- /* Return to the parser, which will process this defarg
- and call us again. */
- return;
- }
-
- if (TREE_CODE (defarg_fn) == FUNCTION_DECL)
- {
- maybe_end_member_template_processing ();
- check_default_args (defarg_fn);
- }
-
- poplevel (0, 0, 0);
- pop_nested_class ();
-
- defarg_fns = TREE_CHAIN (defarg_fns);
- if (defarg_depfns)
- {
- /* This function's default args depend on unprocessed default args
- of defarg_fns. We will need to reprocess this function, and
- check for circular dependencies. */
- tree a, b;
-
- for (a = defarg_depfns, b = TREE_PURPOSE (current); a && b;
- a = TREE_CHAIN (a), b = TREE_CHAIN (b))
- if (TREE_VALUE (a) != TREE_VALUE (b))
- goto different;
- if (a || b)
- {
- different:;
- TREE_CHAIN (current) = NULL_TREE;
- defarg_fns = chainon (defarg_fns, current);
- TREE_PURPOSE (current) = defarg_depfns;
- }
- else
- {
- cp_warning_at ("circular dependency in default args of `%#D'", defarg_fn);
- /* No need to say what else is dependent, as they will be
- picked up in another pass. */
-
- /* Immediately repeat, but marked so that we break the loop. */
- defarg_fns = current;
- TREE_PURPOSE (current) = error_mark_node;
- }
- defarg_depfns = NULL_TREE;
- }
- else if (TREE_PURPOSE (current) == error_mark_node)
- defarg_fnsdone = tree_cons (NULL_TREE, defarg_fn, defarg_fnsdone);
- }
-}
-
-/* After parsing all the default arguments, we must clear any that remain,
- which will be part of a circular dependency. */
-void
-done_pending_defargs ()
-{
- for (; defarg_fnsdone; defarg_fnsdone = TREE_CHAIN (defarg_fnsdone))
- {
- tree fn = TREE_VALUE (defarg_fnsdone);
- tree parms;
-
- if (TREE_CODE (fn) == FUNCTION_DECL)
- parms = TYPE_ARG_TYPES (TREE_TYPE (fn));
- else
- parms = TYPE_ARG_TYPES (fn);
- for (; parms; parms = TREE_CHAIN (parms))
- if (TREE_PURPOSE (parms)
- && TREE_CODE (TREE_PURPOSE (parms)) == DEFAULT_ARG)
- {
- my_friendly_assert (!DEFARG_POINTER (TREE_PURPOSE (parms)), 20010107);
- TREE_PURPOSE (parms) = NULL_TREE;
- }
- }
-}
-
-/* In processing the current default arg, we called FN, but that call
- required a default argument of FN, and that had not yet been processed.
- Remember FN. */
-
-void
-unprocessed_defarg_fn (fn)
- tree fn;
-{
- defarg_depfns = tree_cons (NULL_TREE, fn, defarg_depfns);
-}
-
-/* Called from the parser to update an element of TYPE_ARG_TYPES for some
- FUNCTION_TYPE with the newly parsed version of its default argument, which
- was previously digested as text. */
-
-void
-replace_defarg (arg, init)
- tree arg, init;
-{
- if (init == error_mark_node)
- TREE_PURPOSE (arg) = error_mark_node;
- else
- {
- if (! processing_template_decl
- && ! can_convert_arg (TREE_VALUE (arg), TREE_TYPE (init), init))
- pedwarn ("invalid type `%T' for default argument to `%T'",
- TREE_TYPE (init), TREE_VALUE (arg));
- if (!defarg_depfns)
- TREE_PURPOSE (arg) = init;
- }
-}
-
-#ifdef SPEW_DEBUG
-/* debug_yychar takes a yychar (token number) value and prints its name. */
-
-static void
-debug_yychar (yy)
- int yy;
-{
- if (yy<256)
- fprintf (stderr, "->%d < %c >\n", lineno, yy);
- else if (yy == IDENTIFIER || yy == tTYPENAME)
- {
- const char *id;
- if (TREE_CODE (yylval.ttype) == IDENTIFIER_NODE)
- id = IDENTIFIER_POINTER (yylval.ttype);
- else if (TREE_CODE_CLASS (TREE_CODE (yylval.ttype)) == 'd')
- id = IDENTIFIER_POINTER (DECL_NAME (yylval.ttype));
- else
- id = "";
- fprintf (stderr, "->%d <%s `%s'>\n", lineno, debug_yytranslate (yy), id);
- }
- else
- fprintf (stderr, "->%d <%s>\n", lineno, debug_yytranslate (yy));
-}
-
-#endif
-
-#define NAME(TYPE) cpp_type2name (TYPE)
-
-void
-yyerror (msgid)
- const char *msgid;
-{
- const char *string = _(msgid);
-
- if (last_token == CPP_EOF)
- error ("%s at end of input", string);
- else if (last_token == CPP_CHAR || last_token == CPP_WCHAR)
- {
- if (yylval.ttype && TREE_CODE (yylval.ttype) == INTEGER_CST)
- {
- unsigned int val = TREE_INT_CST_LOW (yylval.ttype);
- const char *const ell = (last_token == CPP_CHAR) ? "" : "L";
- if (val <= UCHAR_MAX && ISGRAPH (val))
- error ("%s before %s'%c'", string, ell, val);
- else
- error ("%s before %s'\\x%x'", string, ell, val);
- }
- else
- error ("%s", string);
- }
- else if (last_token == CPP_STRING
- || last_token == CPP_WSTRING)
- error ("%s before string constant", string);
- else if (last_token == CPP_NUMBER)
- error ("%s before numeric constant", string);
- else if (last_token == CPP_NAME)
- {
- if (TREE_CODE (last_token_id) == IDENTIFIER_NODE)
- error ("%s before `%s'", string, IDENTIFIER_POINTER (last_token_id));
- else if (ISGRAPH (yychar))
- error ("%s before `%c'", string, yychar);
- else
- error ("%s before `\%o'", string, yychar);
- }
- else
- error ("%s before `%s' token", string, NAME (last_token));
-}
-
-#include "gt-cp-spew.h"
diff --git a/contrib/gcc/cppmain.c b/contrib/gcc/cppmain.c
deleted file mode 100644
index d49c6f8..0000000
--- a/contrib/gcc/cppmain.c
+++ /dev/null
@@ -1,432 +0,0 @@
-/* Preprocess only, using cpplib.
- Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003
- Free Software Foundation, Inc.
- Written by Per Bothner, 1994-95.
-
-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 2, 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; if not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
- In other words, you are welcome to use, share and improve this program.
- You are forbidden to forbid anyone else to use, share and improve
- what you give them. Help stamp out software-hoarding! */
-
-#include "config.h"
-#include "system.h"
-#include "cpplib.h"
-#include "cpphash.h"
-
-static void setup_callbacks PARAMS ((cpp_reader *));
-
-/* General output routines. */
-static void scan_translation_unit PARAMS ((cpp_reader *));
-static void scan_translation_unit_trad PARAMS ((cpp_reader *));
-static void account_for_newlines PARAMS ((cpp_reader *, const uchar *,
- size_t));
-static int dump_macro PARAMS ((cpp_reader *, cpp_hashnode *, void *));
-
-static void print_line PARAMS ((cpp_reader *, const struct line_map *,
- unsigned int, const char *));
-static void maybe_print_line PARAMS ((cpp_reader *, const struct line_map *,
- unsigned int));
-
-/* Callback routines for the parser. Most of these are active only
- in specific modes. */
-static void cb_line_change PARAMS ((cpp_reader *, const cpp_token *, int));
-static void cb_define PARAMS ((cpp_reader *, unsigned int, cpp_hashnode *));
-static void cb_undef PARAMS ((cpp_reader *, unsigned int, cpp_hashnode *));
-static void cb_include PARAMS ((cpp_reader *, unsigned int,
- const unsigned char *, const cpp_token *));
-static void cb_ident PARAMS ((cpp_reader *, unsigned int,
- const cpp_string *));
-static void cb_file_change PARAMS ((cpp_reader *, const struct line_map *));
-static void cb_def_pragma PARAMS ((cpp_reader *, unsigned int));
-
-/* Preprocess and output. */
-void
-cpp_preprocess_file (pfile, in_fname, out_stream)
- cpp_reader *pfile;
- const char *in_fname;
- FILE *out_stream;
-{
- /* Initialize the printer structure. Setting print.line to -1 here
- is a trick to guarantee that the first token of the file will
- cause a linemarker to be output by maybe_print_line. */
- pfile->print.line = (unsigned int) -1;
- pfile->print.printed = 0;
- pfile->print.prev = 0;
- pfile->print.map = 0;
- pfile->print.outf = out_stream;
-
- setup_callbacks (pfile);
-
- if (cpp_read_main_file (pfile, in_fname, NULL))
- {
- cpp_options *options = &pfile->opts;
- cpp_finish_options (pfile);
-
- /* A successful cpp_read_main_file guarantees that we can call
- cpp_scan_nooutput or cpp_get_token next. */
- if (options->no_output)
- {
- /* Scan -included buffers, then the main file. */
- while (pfile->buffer->prev)
- cpp_scan_nooutput (pfile);
- cpp_scan_nooutput (pfile);
- }
- else if (options->traditional)
- scan_translation_unit_trad (pfile);
- else
- scan_translation_unit (pfile);
-
- /* -dM command line option. Should this be in cpp_finish? */
- if (options->dump_macros == dump_only)
- cpp_forall_identifiers (pfile, dump_macro, NULL);
- }
-
- /* Flush any pending output. */
- if (pfile->print.printed)
- putc ('\n', pfile->print.outf);
-}
-
-/* Set up the callbacks as appropriate. */
-static void
-setup_callbacks (pfile)
- cpp_reader *pfile;
-{
- cpp_options *options = &pfile->opts;
- cpp_callbacks *cb = cpp_get_callbacks (pfile);
-
- if (! options->no_output)
- {
- cb->line_change = cb_line_change;
- /* Don't emit #pragma or #ident directives if we are processing
- assembly language; the assembler may choke on them. */
- if (options->lang != CLK_ASM)
- {
- cb->ident = cb_ident;
- cb->def_pragma = cb_def_pragma;
- }
- if (! options->no_line_commands)
- cb->file_change = cb_file_change;
- }
-
- if (options->dump_includes)
- cb->include = cb_include;
-
- if (options->dump_macros == dump_names
- || options->dump_macros == dump_definitions)
- {
- cb->define = cb_define;
- cb->undef = cb_undef;
- }
-}
-
-/* Writes out the preprocessed file, handling spacing and paste
- avoidance issues. */
-static void
-scan_translation_unit (pfile)
- cpp_reader *pfile;
-{
- bool avoid_paste = false;
-
- pfile->print.source = NULL;
- for (;;)
- {
- const cpp_token *token = cpp_get_token (pfile);
-
- if (token->type == CPP_PADDING)
- {
- avoid_paste = true;
- if (pfile->print.source == NULL
- || (!(pfile->print.source->flags & PREV_WHITE)
- && token->val.source == NULL))
- pfile->print.source = token->val.source;
- continue;
- }
-
- if (token->type == CPP_EOF)
- break;
-
- /* Subtle logic to output a space if and only if necessary. */
- if (avoid_paste)
- {
- if (pfile->print.source == NULL)
- pfile->print.source = token;
- if (pfile->print.source->flags & PREV_WHITE
- || (pfile->print.prev
- && cpp_avoid_paste (pfile, pfile->print.prev, token))
- || (pfile->print.prev == NULL && token->type == CPP_HASH))
- putc (' ', pfile->print.outf);
- }
- else if (token->flags & PREV_WHITE)
- putc (' ', pfile->print.outf);
-
- avoid_paste = false;
- pfile->print.source = NULL;
- pfile->print.prev = token;
- cpp_output_token (token, pfile->print.outf);
-
- if (token->type == CPP_COMMENT)
- account_for_newlines (pfile, token->val.str.text, token->val.str.len);
- }
-}
-
-/* Adjust pfile->print.line for newlines embedded in output. */
-static void
-account_for_newlines (pfile, str, len)
- cpp_reader *pfile;
- const uchar *str;
- size_t len;
-{
- while (len--)
- if (*str++ == '\n')
- pfile->print.line++;
-}
-
-/* Writes out a traditionally preprocessed file. */
-static void
-scan_translation_unit_trad (pfile)
- cpp_reader *pfile;
-{
- while (_cpp_read_logical_line_trad (pfile))
- {
- size_t len = pfile->out.cur - pfile->out.base;
- maybe_print_line (pfile, pfile->print.map, pfile->out.first_line);
- fwrite (pfile->out.base, 1, len, pfile->print.outf);
- pfile->print.printed = 1;
- if (!CPP_OPTION (pfile, discard_comments))
- account_for_newlines (pfile, pfile->out.base, len);
- }
-}
-
-/* If the token read on logical line LINE needs to be output on a
- different line to the current one, output the required newlines or
- a line marker, and return 1. Otherwise return 0. */
-static void
-maybe_print_line (pfile, map, line)
- cpp_reader *pfile;
- const struct line_map *map;
- unsigned int line;
-{
- /* End the previous line of text. */
- if (pfile->print.printed)
- {
- putc ('\n', pfile->print.outf);
- pfile->print.line++;
- pfile->print.printed = 0;
- }
-
- if (line >= pfile->print.line && line < pfile->print.line + 8)
- {
- while (line > pfile->print.line)
- {
- putc ('\n', pfile->print.outf);
- pfile->print.line++;
- }
- }
- else
- print_line (pfile, map, line, "");
-}
-
-/* Output a line marker for logical line LINE. Special flags are "1"
- or "2" indicating entering or leaving a file. */
-static void
-print_line (pfile, map, line, special_flags)
- cpp_reader *pfile;
- const struct line_map *map;
- unsigned int line;
- const char *special_flags;
-{
- /* End any previous line of text. */
- if (pfile->print.printed)
- putc ('\n', pfile->print.outf);
- pfile->print.printed = 0;
-
- pfile->print.line = line;
- if (! CPP_OPTION (pfile, no_line_commands))
- {
- size_t to_file_len = strlen (map->to_file);
- unsigned char *to_file_quoted = alloca (to_file_len * 4 + 1);
- unsigned char *p;
-
- /* cpp_quote_string does not nul-terminate, so we have to do it
- ourselves. */
- p = cpp_quote_string (to_file_quoted,
- (unsigned char *)map->to_file, to_file_len);
- *p = '\0';
- fprintf (pfile->print.outf, "# %u \"%s\"%s",
- SOURCE_LINE (map, pfile->print.line),
- to_file_quoted, special_flags);
-
- if (map->sysp == 2)
- fputs (" 3 4", pfile->print.outf);
- else if (map->sysp == 1)
- fputs (" 3", pfile->print.outf);
-
- putc ('\n', pfile->print.outf);
- }
-}
-
-/* Called when a line of output is started. TOKEN is the first token
- of the line, and at end of file will be CPP_EOF. */
-static void
-cb_line_change (pfile, token, parsing_args)
- cpp_reader *pfile;
- const cpp_token *token;
- int parsing_args;
-{
- if (token->type == CPP_EOF || parsing_args)
- return;
-
- maybe_print_line (pfile, pfile->print.map, token->line);
- pfile->print.prev = 0;
- pfile->print.source = 0;
-
- /* Supply enough spaces to put this token in its original column,
- one space per column greater than 2, since scan_translation_unit
- will provide a space if PREV_WHITE. Don't bother trying to
- reconstruct tabs; we can't get it right in general, and nothing
- ought to care. Some things do care; the fault lies with them. */
- if (!CPP_OPTION (pfile, traditional))
- {
- pfile->print.printed = 1;
- if (token->col > 2)
- {
- unsigned int spaces = token->col - 2;
-
- while (spaces--)
- putc (' ', pfile->print.outf);
- }
- }
-}
-
-static void
-cb_ident (pfile, line, str)
- cpp_reader *pfile;
- unsigned int line;
- const cpp_string * str;
-{
- maybe_print_line (pfile, pfile->print.map, line);
- fprintf (pfile->print.outf, "#ident \"%s\"\n", str->text);
- pfile->print.line++;
-}
-
-static void
-cb_define (pfile, line, node)
- cpp_reader *pfile;
- unsigned int line;
- cpp_hashnode *node;
-{
- maybe_print_line (pfile, pfile->print.map, line);
- fputs ("#define ", pfile->print.outf);
-
- /* -dD command line option. */
- if (CPP_OPTION (pfile, dump_macros) == dump_definitions)
- fputs ((const char *) cpp_macro_definition (pfile, node),
- pfile->print.outf);
- else
- fputs ((const char *) NODE_NAME (node), pfile->print.outf);
-
- putc ('\n', pfile->print.outf);
- pfile->print.line++;
-}
-
-static void
-cb_undef (pfile, line, node)
- cpp_reader *pfile;
- unsigned int line;
- cpp_hashnode *node;
-{
- maybe_print_line (pfile, pfile->print.map, line);
- fprintf (pfile->print.outf, "#undef %s\n", NODE_NAME (node));
- pfile->print.line++;
-}
-
-static void
-cb_include (pfile, line, dir, header)
- cpp_reader *pfile;
- unsigned int line;
- const unsigned char *dir;
- const cpp_token *header;
-{
- maybe_print_line (pfile, pfile->print.map, line);
- fprintf (pfile->print.outf, "#%s %s\n", dir,
- cpp_token_as_text (pfile, header));
- pfile->print.line++;
-}
-
-/* The file name, line number or system header flags have changed, as
- described in MAP. From this point on, the old pfile->print.map might be
- pointing to freed memory, and so must not be dereferenced. */
-
-static void
-cb_file_change (pfile, map)
- cpp_reader *pfile;
- const struct line_map *map;
-{
- const char *flags = "";
-
- /* First time? */
- if (pfile->print.map == NULL)
- {
- /* Avoid printing foo.i when the main file is foo.c. */
- if (!CPP_OPTION (pfile, preprocessed))
- print_line (pfile, map, map->from_line, flags);
- }
- else
- {
- /* Bring current file to correct line when entering a new file. */
- if (map->reason == LC_ENTER)
- maybe_print_line (pfile, map - 1, map->from_line - 1);
-
- if (map->reason == LC_ENTER)
- flags = " 1";
- else if (map->reason == LC_LEAVE)
- flags = " 2";
- print_line (pfile, map, map->from_line, flags);
- }
-
- pfile->print.map = map;
-}
-
-/* Copy a #pragma directive to the preprocessed output. */
-static void
-cb_def_pragma (pfile, line)
- cpp_reader *pfile;
- unsigned int line;
-{
- maybe_print_line (pfile, pfile->print.map, line);
- fputs ("#pragma ", pfile->print.outf);
- cpp_output_line (pfile, pfile->print.outf);
- pfile->print.line++;
-}
-
-/* Dump out the hash table. */
-static int
-dump_macro (pfile, node, v)
- cpp_reader *pfile;
- cpp_hashnode *node;
- void *v ATTRIBUTE_UNUSED;
-{
- if (node->type == NT_MACRO && !(node->flags & NODE_BUILTIN))
- {
- fputs ("#define ", pfile->print.outf);
- fputs ((const char *) cpp_macro_definition (pfile, node),
- pfile->print.outf);
- putc ('\n', pfile->print.outf);
- pfile->print.line++;
- }
-
- return 1;
-}
diff --git a/contrib/gcc/dbxstclass.h b/contrib/gcc/dbxstclass.h
deleted file mode 100644
index 2d003fe..0000000
--- a/contrib/gcc/dbxstclass.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Storage classes in XCOFF object file format designed for DBX's use.
- This info is from the `Files Reference' manual for IBM's AIX version 3
- for the RS6000. */
-
-#define C_GSYM 0x80
-#define C_LSYM 0x81
-#define C_PSYM 0x82
-#define C_RSYM 0x83
-#define C_RPSYM 0x84
-#define C_STSYM 0x85
-
-#define C_BCOMM 0x87
-#define C_ECOML 0x88
-#define C_ECOMM 0x89
-#define C_DECL 0x8c
-#define C_ENTRY 0x8d
-#define C_FUN 0x8e
diff --git a/contrib/gcc/doc/install-old.texi b/contrib/gcc/doc/install-old.texi
deleted file mode 100644
index 9ce9896..0000000
--- a/contrib/gcc/doc/install-old.texi
+++ /dev/null
@@ -1,725 +0,0 @@
-@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-@c This is part of the GCC manual.
-@c For copying conditions, see the file install.texi.
-
-@ifnothtml
-@comment node-name, next, previous, up
-@node Old, GNU Free Documentation License, Specific, Top
-@end ifnothtml
-@html
-<h1 align="center">Old installation documentation</h1>
-@end html
-@ifnothtml
-@chapter Old installation documentation
-@end ifnothtml
-
-Note most of this information is out of date and superseded by the
-previous chapters of this manual. It is provided for historical
-reference only, because of a lack of volunteers to merge it into the
-main manual.
-
-@ifnothtml
-@menu
-* Configurations:: Configurations Supported by GNU CC.
-* Cross-Compiler:: Building and installing a cross-compiler.
-* VMS Install:: See below for installation on VMS.
-@end menu
-@end ifnothtml
-
-Here is the procedure for installing GNU CC on a GNU or Unix system.
-See @ref{VMS Install}, for VMS systems.
-
-@enumerate
-@item
-If you have chosen a configuration for GNU CC which requires other GNU
-tools (such as GAS or the GNU linker) instead of the standard system
-tools, install the required tools in the build directory under the names
-@file{as}, @file{ld} or whatever is appropriate. This will enable the
-compiler to find the proper tools for compilation of the program
-@file{enquire}.
-
-Alternatively, you can do subsequent compilation using a value of the
-@code{PATH} environment variable such that the necessary GNU tools come
-before the standard system tools.
-
-@item
-Specify the host, build and target machine configurations. You do this
-when you run the @file{configure} script.
-
-The @dfn{build} machine is the system which you are using, the
-@dfn{host} machine is the system where you want to run the resulting
-compiler (normally the build machine), and the @dfn{target} machine is
-the system for which you want the compiler to generate code.
-
-If you are building a compiler to produce code for the machine it runs
-on (a native compiler), you normally do not need to specify any operands
-to @file{configure}; it will try to guess the type of machine you are on
-and use that as the build, host and target machines. So you don't need
-to specify a configuration when building a native compiler unless
-@file{configure} cannot figure out what your configuration is or guesses
-wrong.
-
-In those cases, specify the build machine's @dfn{configuration name}
-with the @option{--host} option; the host and target will default to be
-the same as the host machine. (If you are building a cross-compiler,
-see @ref{Cross-Compiler}.)
-
-Here is an example:
-
-@smallexample
-./configure --host=sparc-sun-sunos4.1
-@end smallexample
-
-A configuration name may be canonical or it may be more or less
-abbreviated.
-
-A canonical configuration name has three parts, separated by dashes.
-It looks like this: @samp{@var{cpu}-@var{company}-@var{system}}.
-(The three parts may themselves contain dashes; @file{configure}
-can figure out which dashes serve which purpose.) For example,
-@samp{m68k-sun-sunos4.1} specifies a Sun 3.
-
-You can also replace parts of the configuration by nicknames or aliases.
-For example, @samp{sun3} stands for @samp{m68k-sun}, so
-@samp{sun3-sunos4.1} is another way to specify a Sun 3.
-
-You can specify a version number after any of the system types, and some
-of the CPU types. In most cases, the version is irrelevant, and will be
-ignored. So you might as well specify the version if you know it.
-
-See @ref{Configurations}, for a list of supported configuration names and
-notes on many of the configurations. You should check the notes in that
-section before proceeding any further with the installation of GNU CC@.
-
-@end enumerate
-
-@ifnothtml
-@node Configurations, Cross-Compiler, , Old
-@section Configurations Supported by GNU CC
-@end ifnothtml
-@html
-<h2>@anchor{Configurations}Configurations Supported by GNU CC</h2>
-@end html
-@cindex configurations supported by GNU CC
-
-Here are the possible CPU types:
-
-@quotation
-@c gmicro, fx80, spur and tahoe omitted since they don't work.
-1750a, a29k, alpha, arm, avr, c@var{n}, clipper, dsp16xx, elxsi, fr30, h8300,
-hppa1.0, hppa1.1, i370, i386, i486, i586, i686, i786, i860, i960, m32r,
-m68000, m68k, m6811, m6812, m88k, mcore, mips, mipsel, mips64, mips64el,
-mn10200, mn10300, ns32k, pdp11, powerpc, powerpcle, romp, rs6000, sh, sparc,
-sparclite, sparc64, v850, vax, we32k.
-@end quotation
-
-Here are the recognized company names. As you can see, customary
-abbreviations are used rather than the longer official names.
-
-@c What should be done about merlin, tek*, dolphin?
-@quotation
-acorn, alliant, altos, apollo, apple, att, bull,
-cbm, convergent, convex, crds, dec, dg, dolphin,
-elxsi, encore, harris, hitachi, hp, ibm, intergraph, isi,
-mips, motorola, ncr, next, ns, omron, plexus,
-sequent, sgi, sony, sun, tti, unicom, wrs.
-@end quotation
-
-The company name is meaningful only to disambiguate when the rest of
-the information supplied is insufficient. You can omit it, writing
-just @samp{@var{cpu}-@var{system}}, if it is not needed. For example,
-@samp{vax-ultrix4.2} is equivalent to @samp{vax-dec-ultrix4.2}.
-
-Here is a list of system types:
-
-@quotation
-386bsd, aix, acis, amigaos, aos, aout, aux, bosx, bsd, clix, coff, ctix, cxux,
-dgux, dynix, ebmon, ecoff, elf, esix, freebsd, hms, genix, gnu, linux,
-linux-gnu, hiux, hpux, iris, irix, isc, luna, lynxos, mach, minix, msdos, mvs,
-netbsd, newsos, nindy, ns, osf, osfrose, ptx, riscix, riscos, rtu, sco, sim,
-solaris, sunos, sym, sysv, udi, ultrix, unicos, uniplus, unos, vms, vsta,
-vxworks, winnt, xenix.
-@end quotation
-
-@noindent
-You can omit the system type; then @file{configure} guesses the
-operating system from the CPU and company.
-
-You can add a version number to the system type; this may or may not
-make a difference. For example, you can write @samp{bsd4.3} or
-@samp{bsd4.4} to distinguish versions of BSD@. In practice, the version
-number is most needed for @samp{sysv3} and @samp{sysv4}, which are often
-treated differently.
-
-@samp{linux-gnu} is the canonical name for the GNU/Linux target; however
-GNU CC will also accept @samp{linux}. The version of the kernel in use is
-not relevant on these systems. A suffix such as @samp{libc1} or @samp{aout}
-distinguishes major versions of the C library; all of the suffixed versions
-are obsolete.
-
-If you specify an impossible combination such as @samp{i860-dg-vms},
-then you may get an error message from @file{configure}, or it may
-ignore part of the information and do the best it can with the rest.
-@file{configure} always prints the canonical name for the alternative
-that it used. GNU CC does not support all possible alternatives.
-
-Often a particular model of machine has a name. Many machine names are
-recognized as aliases for CPU/company combinations. Thus, the machine
-name @samp{sun3}, mentioned above, is an alias for @samp{m68k-sun}.
-Sometimes we accept a company name as a machine name, when the name is
-popularly used for a particular machine. Here is a table of the known
-machine names:
-
-@quotation
-3300, 3b1, 3b@var{n}, 7300, altos3068, altos,
-apollo68, att-7300, balance,
-convex-c@var{n}, crds, decstation-3100,
-decstation, delta, encore,
-fx2800, gmicro, hp7@var{nn}, hp8@var{nn},
-hp9k2@var{nn}, hp9k3@var{nn}, hp9k7@var{nn},
-hp9k8@var{nn}, iris4d, iris, isi68,
-m3230, magnum, merlin, miniframe,
-mmax, news-3600, news800, news, next,
-pbd, pc532, pmax, powerpc, powerpcle, ps2, risc-news,
-rtpc, sun2, sun386i, sun386, sun3,
-sun4, symmetry, tower-32, tower.
-@end quotation
-
-@noindent
-Remember that a machine name specifies both the cpu type and the company
-name.
-If you want to install your own homemade configuration files, you can
-use @samp{local} as the company name to access them. If you use
-configuration @samp{@var{cpu}-local}, the configuration name
-without the cpu prefix
-is used to form the configuration file names.
-
-Thus, if you specify @samp{m68k-local}, configuration uses
-files @file{m68k.md}, @file{local.h}, @file{m68k.c},
-@file{xm-local.h}, @file{t-local}, and @file{x-local}, all in the
-directory @file{config/m68k}.
-
-Here is a list of configurations that have special treatment or special
-things you must know:
-
-@table @samp
-@item vax-dec-vms
-See @ref{VMS Install}, for details on how to install GNU CC on VMS@.
-@end table
-
-@ifnothtml
-@node Cross-Compiler, VMS Install, Configurations, Old
-@section Building and Installing a Cross-Compiler
-@end ifnothtml
-@html
-<h2>@anchor{Cross-Compiler}Building and Installing a Cross-Compiler</h2>
-@end html
-@cindex cross-compiler, installation
-
-GNU CC can function as a cross-compiler for many machines, but not all.
-
-@itemize @bullet
-@item
-Cross-compilers for the Mips as target using the Mips assembler
-currently do not work, because the auxiliary programs
-@file{mips-tdump.c} and @file{mips-tfile.c} can't be compiled on
-anything but a Mips. It does work to cross compile for a Mips
-if you use the GNU assembler and linker.
-
-@item
-Cross-compilers between machines with different floating point formats
-have not all been made to work. GNU CC now has a floating point
-emulator with which these can work, but each target machine description
-needs to be updated to take advantage of it.
-
-@item
-Cross-compilation between machines of different word sizes is
-somewhat problematic and sometimes does not work.
-@end itemize
-
-Since GNU CC generates assembler code, you probably need a
-cross-assembler that GNU CC can run, in order to produce object files.
-If you want to link on other than the target machine, you need a
-cross-linker as well. You also need header files and libraries suitable
-for the target machine that you can install on the host machine.
-
-@ifnothtml
-@menu
-* Steps of Cross:: Using a cross-compiler involves several steps
- that may be carried out on different machines.
-* Configure Cross:: Configuring a cross-compiler.
-* Tools and Libraries:: Where to put the linker and assembler, and the C library.
-* Cross Headers:: Finding and installing header files
- for a cross-compiler.
-* Build Cross:: Actually compiling the cross-compiler.
-@end menu
-@end ifnothtml
-
-@ifnothtml
-@node Steps of Cross, Configure Cross, , Cross-Compiler
-@subsection Steps of Cross-Compilation
-@end ifnothtml
-@html
-<h2>Steps of Cross-Compilation</h2>
-@end html
-
-To compile and run a program using a cross-compiler involves several
-steps:
-
-@itemize @bullet
-@item
-Run the cross-compiler on the host machine to produce assembler files
-for the target machine. This requires header files for the target
-machine.
-
-@item
-Assemble the files produced by the cross-compiler. You can do this
-either with an assembler on the target machine, or with a
-cross-assembler on the host machine.
-
-@item
-Link those files to make an executable. You can do this either with a
-linker on the target machine, or with a cross-linker on the host
-machine. Whichever machine you use, you need libraries and certain
-startup files (typically @file{crt@dots{}.o}) for the target machine.
-@end itemize
-
-It is most convenient to do all of these steps on the same host machine,
-since then you can do it all with a single invocation of GNU CC@. This
-requires a suitable cross-assembler and cross-linker. For some targets,
-the GNU assembler and linker are available.
-
-@ifnothtml
-@node Configure Cross, Tools and Libraries, Steps of Cross, Cross-Compiler
-@subsection Configuring a Cross-Compiler
-@end ifnothtml
-@html
-<h2>Configuring a Cross-Compiler</h2>
-@end html
-
-To build GNU CC as a cross-compiler, you start out by running
-@file{configure}. Use the @option{--target=@var{target}} to specify the
-target type. If @file{configure} was unable to correctly identify the
-system you are running on, also specify the @option{--build=@var{build}}
-option. For example, here is how to configure for a cross-compiler that
-produces code for an HP 68030 system running BSD on a system that
-@file{configure} can correctly identify:
-
-@smallexample
-./configure --target=m68k-hp-bsd4.3
-@end smallexample
-
-@ifnothtml
-@node Tools and Libraries, Cross Headers, Configure Cross, Cross-Compiler
-@subsection Tools and Libraries for a Cross-Compiler
-@end ifnothtml
-@html
-<h2>Tools and Libraries for a Cross-Compiler</h2>
-@end html
-
-If you have a cross-assembler and cross-linker available, you should
-install them now. Put them in the directory
-@file{/usr/local/@var{target}/bin}. Here is a table of the tools
-you should put in this directory:
-
-@table @file
-@item as
-This should be the cross-assembler.
-
-@item ld
-This should be the cross-linker.
-
-@item ar
-This should be the cross-archiver: a program which can manipulate
-archive files (linker libraries) in the target machine's format.
-
-@item ranlib
-This should be a program to construct a symbol table in an archive file.
-@end table
-
-The installation of GNU CC will find these programs in that directory,
-and copy or link them to the proper place to for the cross-compiler to
-find them when run later.
-
-The easiest way to provide these files is to build the Binutils package
-and GAS@. Configure them with the same @option{--host} and @option{--target}
-options that you use for configuring GNU CC, then build and install
-them. They install their executables automatically into the proper
-directory. Alas, they do not support all the targets that GNU CC
-supports.
-
-If you want to install libraries to use with the cross-compiler, such as
-a standard C library, put them in the directory
-@file{/usr/local/@var{target}/lib}; installation of GNU CC copies
-all the files in that subdirectory into the proper place for GNU CC to
-find them and link with them. Here's an example of copying some
-libraries from a target machine:
-
-@example
-ftp @var{target-machine}
-lcd /usr/local/@var{target}/lib
-cd /lib
-get libc.a
-cd /usr/lib
-get libg.a
-get libm.a
-quit
-@end example
-
-@noindent
-The precise set of libraries you'll need, and their locations on
-the target machine, vary depending on its operating system.
-
-@cindex start files
-Many targets require ``start files'' such as @file{crt0.o} and
-@file{crtn.o} which are linked into each executable; these too should be
-placed in @file{/usr/local/@var{target}/lib}. There may be several
-alternatives for @file{crt0.o}, for use with profiling or other
-compilation options. Check your target's definition of
-@code{STARTFILE_SPEC} to find out what start files it uses.
-Here's an example of copying these files from a target machine:
-
-@example
-ftp @var{target-machine}
-lcd /usr/local/@var{target}/lib
-prompt
-cd /lib
-mget *crt*.o
-cd /usr/lib
-mget *crt*.o
-quit
-@end example
-
-@ifnothtml
-@node Cross Headers, Build Cross, Tools and Libraries, Cross-Compiler
-@subsection Cross-Compilers and Header Files
-@end ifnothtml
-@html
-<h2>Cross-Compilers and Header Files</h2>
-@end html
-
-If you are cross-compiling a standalone program or a program for an
-embedded system, then you may not need any header files except the few
-that are part of GNU CC (and those of your program). However, if you
-intend to link your program with a standard C library such as
-@file{libc.a}, then you probably need to compile with the header files
-that go with the library you use.
-
-The GNU C compiler does not come with these files, because (1) they are
-system-specific, and (2) they belong in a C library, not in a compiler.
-
-If the GNU C library supports your target machine, then you can get the
-header files from there (assuming you actually use the GNU library when
-you link your program).
-
-If your target machine comes with a C compiler, it probably comes with
-suitable header files also. If you make these files accessible from the host
-machine, the cross-compiler can use them also.
-
-Otherwise, you're on your own in finding header files to use when
-cross-compiling.
-
-When you have found suitable header files, you should put them in the
-directory @file{/usr/local/@var{target}/include}, before building the
-cross compiler. Then installation will run fixincludes properly and
-install the corrected versions of the header files where the compiler
-will use them.
-
-Provide the header files before you build the cross-compiler, because
-the build stage actually runs the cross-compiler to produce parts of
-@file{libgcc.a}. (These are the parts that @emph{can} be compiled with
-GNU CC@.) Some of them need suitable header files.
-
-Here's an example showing how to copy the header files from a target
-machine. On the target machine, do this:
-
-@example
-(cd /usr/include; tar cf - .) > tarfile
-@end example
-
-Then, on the host machine, do this:
-
-@example
-ftp @var{target-machine}
-lcd /usr/local/@var{target}/include
-get tarfile
-quit
-tar xf tarfile
-@end example
-
-@ifnothtml
-@node Build Cross, , Cross Headers, Cross-Compiler
-@subsection Actually Building the Cross-Compiler
-@end ifnothtml
-@html
-<h2>Actually Building the Cross-Compiler</h2>
-@end html
-
-Now you can proceed just as for compiling a single-machine compiler
-through the step of building stage 1.
-
-If your target is exotic, you may need to provide the header file
-@file{float.h}.One way to do this is to compile @file{enquire} and run
-it on your target machine. The job of @file{enquire} is to run on the
-target machine and figure out by experiment the nature of its floating
-point representation. @file{enquire} records its findings in the header
-file @file{float.h}. If you can't produce this file by running
-@file{enquire} on the target machine, then you will need to come up with
-a suitable @file{float.h} in some other way (or else, avoid using it in
-your programs).
-
-Do not try to build stage 2 for a cross-compiler. It doesn't work to
-rebuild GNU CC as a cross-compiler using the cross-compiler, because
-that would produce a program that runs on the target machine, not on the
-host. For example, if you compile a 386-to-68030 cross-compiler with
-itself, the result will not be right either for the 386 (because it was
-compiled into 68030 code) or for the 68030 (because it was configured
-for a 386 as the host). If you want to compile GNU CC into 68030 code,
-whether you compile it on a 68030 or with a cross-compiler on a 386, you
-must specify a 68030 as the host when you configure it.
-
-To install the cross-compiler, use @samp{make install}, as usual.
-
-@ifnothtml
-@node VMS Install, , Cross-Compiler, Old
-@section Installing GNU CC on VMS
-@end ifnothtml
-@html
-<h2>@anchor{VMS Install}Installing GNU CC on VMS</h2>
-@end html
-@cindex VMS installation
-@cindex installing GNU CC on VMS
-
-The VMS version of GNU CC is distributed in a backup saveset containing
-both source code and precompiled binaries.
-
-To install the @file{gcc} command so you can use the compiler easily, in
-the same manner as you use the VMS C compiler, you must install the VMS CLD
-file for GNU CC as follows:
-
-@enumerate
-@item
-Define the VMS logical names @samp{GNU_CC} and @samp{GNU_CC_INCLUDE}
-to point to the directories where the GNU CC executables
-(@file{gcc-cpp.exe}, @file{gcc-cc1.exe}, etc.) and the C include files are
-kept respectively. This should be done with the commands:
-
-@smallexample
-$ assign /system /translation=concealed -
- disk:[gcc.] gnu_cc
-$ assign /system /translation=concealed -
- disk:[gcc.include.] gnu_cc_include
-@end smallexample
-
-@noindent
-with the appropriate disk and directory names. These commands can be
-placed in your system startup file so they will be executed whenever
-the machine is rebooted. You may, if you choose, do this via the
-@file{GCC_INSTALL.COM} script in the @file{[GCC]} directory.
-
-@item
-Install the @file{GCC} command with the command line:
-
-@smallexample
-$ set command /table=sys$common:[syslib]dcltables -
- /output=sys$common:[syslib]dcltables gnu_cc:[000000]gcc
-$ install replace sys$common:[syslib]dcltables
-@end smallexample
-
-@item
-To install the help file, do the following:
-
-@smallexample
-$ library/help sys$library:helplib.hlb gcc.hlp
-@end smallexample
-
-@noindent
-Now you can invoke the compiler with a command like @samp{gcc /verbose
-file.c}, which is equivalent to the command @samp{gcc -v -c file.c} in
-Unix.
-@end enumerate
-
-If you wish to use GNU C++ you must first install GNU CC, and then
-perform the following steps:
-
-@enumerate
-@item
-Define the VMS logical name @samp{GNU_GXX_INCLUDE} to point to the
-directory where the preprocessor will search for the C++ header files.
-This can be done with the command:
-
-@smallexample
-$ assign /system /translation=concealed -
- disk:[gcc.gxx_include.] gnu_gxx_include
-@end smallexample
-
-@noindent
-with the appropriate disk and directory name. If you are going to be
-using a C++ runtime library, this is where its install procedure will install
-its header files.
-
-@item
-Obtain the file @file{gcc-cc1plus.exe}, and place this in the same
-directory that @file{gcc-cc1.exe} is kept.
-
-The GNU C++ compiler can be invoked with a command like @samp{gcc /plus
-/verbose file.cc}, which is equivalent to the command @samp{g++ -v -c
-file.cc} in Unix.
-@end enumerate
-
-We try to put corresponding binaries and sources on the VMS distribution
-tape. But sometimes the binaries will be from an older version than the
-sources, because we don't always have time to update them. (Use the
-@samp{/version} option to determine the version number of the binaries and
-compare it with the source file @file{version.c} to tell whether this is
-so.) In this case, you should use the binaries you get to recompile the
-sources. If you must recompile, here is how:
-
-@enumerate
-@item
-Execute the command procedure @file{vmsconfig.com} to set up the files
-@file{tm.h}, @file{config.h}, @file{aux-output.c}, and @file{md.}, and
-to create files @file{tconfig.h} and @file{hconfig.h}. This procedure
-also creates several linker option files used by @file{make-cc1.com} and
-a data file used by @file{make-l2.com}.
-
-@smallexample
-$ @@vmsconfig.com
-@end smallexample
-
-@item
-Setup the logical names and command tables as defined above. In
-addition, define the VMS logical name @samp{GNU_BISON} to point at the
-to the directories where the Bison executable is kept. This should be
-done with the command:
-
-@smallexample
-$ assign /system /translation=concealed -
- disk:[bison.] gnu_bison
-@end smallexample
-
-You may, if you choose, use the @file{INSTALL_BISON.COM} script in the
-@file{[BISON]} directory.
-
-@item
-Install the @samp{BISON} command with the command line:
-
-@smallexample
-$ set command /table=sys$common:[syslib]dcltables -
- /output=sys$common:[syslib]dcltables -
- gnu_bison:[000000]bison
-$ install replace sys$common:[syslib]dcltables
-@end smallexample
-
-@item
-Type @samp{@@make-gcc} to recompile everything, or submit the file
-@file{make-gcc.com} to a batch queue. If you wish to build the GNU C++
-compiler as well as the GNU CC compiler, you must first edit
-@file{make-gcc.com} and follow the instructions that appear in the
-comments.
-
-@item
-In order to use GCC, you need a library of functions which GCC compiled code
-will call to perform certain tasks, and these functions are defined in the
-file @file{libgcc2.c}. To compile this you should use the command procedure
-@file{make-l2.com}, which will generate the library @file{libgcc2.olb}.
-@file{libgcc2.olb} should be built using the compiler built from
-the same distribution that @file{libgcc2.c} came from, and
-@file{make-gcc.com} will automatically do all of this for you.
-
-To install the library, use the following commands:
-
-@smallexample
-$ library gnu_cc:[000000]gcclib/delete=(new,eprintf)
-$ library gnu_cc:[000000]gcclib/delete=L_*
-$ library libgcc2/extract=*/output=libgcc2.obj
-$ library gnu_cc:[000000]gcclib libgcc2.obj
-@end smallexample
-
-The first command simply removes old modules that will be replaced with
-modules from @file{libgcc2} under different module names. The modules
-@code{new} and @code{eprintf} may not actually be present in your
-@file{gcclib.olb}---if the VMS librarian complains about those modules
-not being present, simply ignore the message and continue on with the
-next command. The second command removes the modules that came from the
-previous version of the library @file{libgcc2.c}.
-
-Whenever you update the compiler on your system, you should also update the
-library with the above procedure.
-
-@item
-You may wish to build GCC in such a way that no files are written to the
-directory where the source files reside. An example would be the when
-the source files are on a read-only disk. In these cases, execute the
-following DCL commands (substituting your actual path names):
-
-@smallexample
-$ assign dua0:[gcc.build_dir.]/translation=concealed, -
- dua1:[gcc.source_dir.]/translation=concealed gcc_build
-$ set default gcc_build:[000000]
-@end smallexample
-
-@noindent
-where the directory @file{dua1:[gcc.source_dir]} contains the source
-code, and the directory @file{dua0:[gcc.build_dir]} is meant to contain
-all of the generated object files and executables. Once you have done
-this, you can proceed building GCC as described above. (Keep in mind
-that @file{gcc_build} is a rooted logical name, and thus the device
-names in each element of the search list must be an actual physical
-device name rather than another rooted logical name).
-
-@item
-@strong{If you are building GNU CC with a previous version of GNU CC,
-you also should check to see that you have the newest version of the
-assembler}. In particular, GNU CC version 2 treats global constant
-variables slightly differently from GNU CC version 1, and GAS version
-1.38.1 does not have the patches required to work with GCC version 2.
-If you use GAS 1.38.1, then @code{extern const} variables will not have
-the read-only bit set, and the linker will generate warning messages
-about mismatched psect attributes for these variables. These warning
-messages are merely a nuisance, and can safely be ignored.
-
-@item
-If you want to build GNU CC with the VAX C compiler, you will need to
-make minor changes in @file{make-cccp.com} and @file{make-cc1.com}
-to choose alternate definitions of @code{CC}, @code{CFLAGS}, and
-@code{LIBS}. See comments in those files. However, you must
-also have a working version of the GNU assembler (GNU as, aka GAS) as
-it is used as the back end for GNU CC to produce binary object modules
-and is not included in the GNU CC sources. GAS is also needed to
-compile @file{libgcc2} in order to build @file{gcclib} (see above);
-@file{make-l2.com} expects to be able to find it operational in
-@file{gnu_cc:[000000]gnu-as.exe}.
-
-To use GNU CC on VMS, you need the VMS driver programs
-@file{gcc.exe}, @file{gcc.com}, and @file{gcc.cld}. They are
-distributed with the VMS binaries (@file{gcc-vms}) rather than the
-GNU CC sources. GAS is also included in @file{gcc-vms}, as is Bison.
-
-Once you have successfully built GNU CC with VAX C, you should use the
-resulting compiler to rebuild itself. Before doing this, be sure to
-restore the @code{CC}, @code{CFLAGS}, and @code{LIBS} definitions in
-@file{make-cccp.com} and @file{make-cc1.com}. The second generation
-compiler will be able to take advantage of many optimizations that must
-be suppressed when building with other compilers.
-@end enumerate
-
-Under previous versions of GNU CC, the generated code would occasionally
-give strange results when linked with the sharable @file{VAXCRTL} library.
-Now this should work.
-
-Even with this version, however, GNU CC itself should not be linked with
-the sharable @file{VAXCRTL}. The version of @code{qsort} in
-@file{VAXCRTL} has a bug (known to be present in VMS versions V4.6
-through V5.5) which causes the compiler to fail.
-
-The executables are generated by @file{make-cc1.com} and
-@file{make-cccp.com} use the object library version of @file{VAXCRTL} in
-order to make use of the @code{qsort} routine in @file{gcclib.olb}. If
-you wish to link the compiler executables with the shareable image
-version of @file{VAXCRTL}, you should edit the file @file{tm.h} (created
-by @file{vmsconfig.com}) to define the macro @code{QSORT_WORKAROUND}.
-
-@code{QSORT_WORKAROUND} is always defined when GNU CC is compiled with
-VAX C, to avoid a problem in case @file{gcclib.olb} is not yet
-available.
diff --git a/contrib/gcc/doc/install.texi b/contrib/gcc/doc/install.texi
deleted file mode 100644
index 350d365..0000000
--- a/contrib/gcc/doc/install.texi
+++ /dev/null
@@ -1,3928 +0,0 @@
-\input texinfo.tex @c -*-texinfo-*-
-@c @ifnothtml
-@c %**start of header
-@setfilename install.info
-@settitle Installing GCC
-@setchapternewpage odd
-@c %**end of header
-@c @end ifnothtml
-
-@c Specify title for specific html page
-@ifset indexhtml
-@settitle Installing GCC
-@end ifset
-@ifset specifichtml
-@settitle Host/Target specific installation notes for GCC
-@end ifset
-@ifset downloadhtml
-@settitle Downloading GCC
-@end ifset
-@ifset configurehtml
-@settitle Installing GCC: Configuration
-@end ifset
-@ifset buildhtml
-@settitle Installing GCC: Building
-@end ifset
-@ifset testhtml
-@settitle Installing GCC: Testing
-@end ifset
-@ifset finalinstallhtml
-@settitle Installing GCC: Final installation
-@end ifset
-@ifset binarieshtml
-@settitle Installing GCC: Binaries
-@end ifset
-@ifset oldhtml
-@settitle Installing GCC: Old documentation
-@end ifset
-@ifset gfdlhtml
-@settitle Installing GCC: GNU Free Documentation License
-@end ifset
-
-@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-@c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com
-
-@c Include everything if we're not making html
-@ifnothtml
-@set indexhtml
-@set specifichtml
-@set downloadhtml
-@set configurehtml
-@set buildhtml
-@set testhtml
-@set finalinstallhtml
-@set binarieshtml
-@set oldhtml
-@set gfdlhtml
-@end ifnothtml
-
-@c Part 2 Summary Description and Copyright
-@macro copyrightnotice
-Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-@sp 1
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, the Front-Cover texts being (a) (see below), and
-with the Back-Cover Texts being (b) (see below). A copy of the
-license is included in the section entitled ``@uref{./gfdl.html,,GNU
-Free Documentation License}''.
-
-(a) The FSF's Front-Cover Text is:
-
- A GNU Manual
-
-(b) The FSF's Back-Cover Text is:
-
- You have freedom to copy and modify this GNU Manual, like GNU
- software. Copies published by the Free Software Foundation raise
- funds for GNU development.
-@end macro
-@ifinfo
-@copyrightnotice{}
-@end ifinfo
-
-@c Part 3 Titlepage and Copyright
-@titlepage
-@sp 10
-@comment The title is printed in a large font.
-@center @titlefont{Installing GCC}
-
-@c The following two commands start the copyright page.
-@page
-@vskip 0pt plus 1filll
-@copyrightnotice{}
-@end titlepage
-
-@c Part 4 Top node and Master Menu
-@ifinfo
-@node Top, , , (dir)
-@comment node-name, next, Previous, up
-
-@menu
-* Installing GCC:: This document describes the generic installation
- procedure for GCC as well as detailing some target
- specific installation instructions.
-
-* Specific:: Host/target specific installation notes for GCC.
-* Binaries:: Where to get pre-compiled binaries.
-
-* Old:: Old installation documentation.
-
-* GNU Free Documentation License:: How you can copy and share this manual.
-* Concept Index:: This index has two entries.
-@end menu
-@end ifinfo
-
-@c Part 5 The Body of the Document
-@c ***Installing GCC**********************************************************
-@ifnothtml
-@comment node-name, next, previous, up
-@node Installing GCC, Binaries, , Top
-@end ifnothtml
-@ifset indexhtml
-@ifnothtml
-@chapter Installing GCC
-@end ifnothtml
-
-The latest version of this document is always available at
-@uref{http://gcc.gnu.org/install/,,http://gcc.gnu.org/install/}.
-
-This document describes the generic installation procedure for GCC as well
-as detailing some target specific installation instructions.
-
-GCC includes several components that previously were separate distributions
-with their own installation instructions. This document supersedes all
-package specific installation instructions.
-
-@emph{Before} starting the build/install procedure please check the
-@ifnothtml
-@ref{Specific, host/target specific installation notes}.
-@end ifnothtml
-@ifhtml
-@uref{specific.html,,host/target specific installation notes}.
-@end ifhtml
-We recommend you browse the entire generic installation instructions before
-you proceed.
-
-Lists of successful builds for released versions of GCC are
-available at @uref{http://gcc.gnu.org/buildstat.html}.
-These lists are updated as new information becomes available.
-
-The installation procedure itself is broken into five steps.
-
-@ifinfo
-@menu
-* Downloading the source::
-* Configuration::
-* Building::
-* Testing:: (optional)
-* Final install::
-@end menu
-@end ifinfo
-@ifhtml
-@enumerate
-@item
-@uref{download.html,,Downloading the source}
-@item
-@uref{configure.html,,Configuration}
-@item
-@uref{build.html,,Building}
-@item
-@uref{test.html,,Testing} (optional)
-@item
-@uref{finalinstall.html,,Final install}
-@end enumerate
-@end ifhtml
-
-Please note that GCC does not support @samp{make uninstall} and probably
-won't do so in the near future as this would open a can of worms. Instead,
-we suggest that you install GCC into a directory of its own and simply
-remove that directory when you do not need that specific version of GCC
-any longer, and, if shared libraries are installed there as well, no
-more binaries exist that use them.
-
-@ifhtml
-There are also some @uref{old.html,,old installation instructions},
-which are mostly obsolete but still contain some information which has
-not yet been merged into the main part of this manual.
-@end ifhtml
-
-@html
-<hr />
-<p>
-@end html
-@ifhtml
-@uref{./index.html,,Return to the GCC Installation page}
-
-@copyrightnotice{}
-@end ifhtml
-@end ifset
-
-@c ***Downloading the source**************************************************
-@ifnothtml
-@comment node-name, next, previous, up
-@node Downloading the source, Configuration, , Installing GCC
-@end ifnothtml
-@ifset downloadhtml
-@ifnothtml
-@chapter Downloading GCC
-@end ifnothtml
-@cindex Downloading GCC
-@cindex Downloading the Source
-
-GCC is distributed via @uref{http://gcc.gnu.org/cvs.html,,CVS} and FTP
-tarballs compressed with @command{gzip} or
-@command{bzip2}. It is possible to download a full distribution or specific
-components.
-
-Please refer to our @uref{http://gcc.gnu.org/releases.html,,releases web page}
-for information on how to obtain GCC@.
-
-The full distribution includes the C, C++, Objective-C, Fortran, Java,
-and Ada (in case of GCC 3.1 and later) compilers. The full distribution
-also includes runtime libraries for C++, Objective-C, Fortran, and Java.
-In GCC 3.0 and later versions, GNU compiler testsuites are also included
-in the full distribution.
-
-If you choose to download specific components, you must download the core
-GCC distribution plus any language specific distributions you wish to
-use. The core distribution includes the C language front end as well as the
-shared components. Each language has a tarball which includes the language
-front end as well as the language runtime (when appropriate).
-
-Unpack the core distribution as well as any language specific
-distributions in the same directory.
-
-If you also intend to build binutils (either to upgrade an existing
-installation or for use in place of the corresponding tools of your
-OS), unpack the binutils distribution either in the same directory or
-a separate one. In the latter case, add symbolic links to any
-components of the binutils you intend to build alongside the compiler
-(@file{bfd}, @file{binutils}, @file{gas}, @file{gprof}, @file{ld},
-@file{opcodes}, @dots{}) to the directory containing the GCC sources.
-
-@html
-<hr />
-<p>
-@end html
-@ifhtml
-@uref{./index.html,,Return to the GCC Installation page}
-@end ifhtml
-@end ifset
-
-@c ***Configuration***********************************************************
-@ifnothtml
-@comment node-name, next, previous, up
-@node Configuration, Building, Downloading the source, Installing GCC
-@end ifnothtml
-@ifset configurehtml
-@ifnothtml
-@chapter Installing GCC: Configuration
-@end ifnothtml
-@cindex Configuration
-@cindex Installing GCC: Configuration
-
-Like most GNU software, GCC must be configured before it can be built.
-This document describes the recommended configuration procedure
-for both native and cross targets.
-
-We use @var{srcdir} to refer to the toplevel source directory for
-GCC; we use @var{objdir} to refer to the toplevel build/object directory.
-
-If you obtained the sources via CVS, @var{srcdir} must refer to the top
-@file{gcc} directory, the one where the @file{MAINTAINERS} can be found,
-and not its @file{gcc} subdirectory, otherwise the build will fail.
-
-First, we @strong{highly} recommend that GCC be built into a
-separate directory than the sources which does @strong{not} reside
-within the source tree. This is how we generally build GCC; building
-where @var{srcdir} == @var{objdir} should still work, but doesn't
-get extensive testing; building where @var{objdir} is a subdirectory
-of @var{srcdir} is unsupported.
-
-If you have previously built GCC in the same directory for a
-different target machine, do @samp{make distclean} to delete all files
-that might be invalid. One of the files this deletes is
-@file{Makefile}; if @samp{make distclean} complains that @file{Makefile}
-does not exist, it probably means that the directory is already suitably
-clean. However, with the recommended method of building in a separate
-@var{objdir}, you should simply use a different @var{objdir} for each
-target.
-
-Second, when configuring a native system, either @command{cc} or
-@command{gcc} must be in your path or you must set @env{CC} in
-your environment before running configure. Otherwise the configuration
-scripts may fail.
-
-Note that the bootstrap compiler and the resulting GCC must be link
-compatible, else the bootstrap will fail with linker errors about
-incompatible object file formats. Several multilibed targets are
-affected by this requirement, see
-@ifnothtml
-@ref{Specific, host/target specific installation notes}.
-@end ifnothtml
-@ifhtml
-@uref{specific.html,,host/target specific installation notes}.
-@end ifhtml
-
-To configure GCC:
-
-@example
- % mkdir @var{objdir}
- % cd @var{objdir}
- % @var{srcdir}/configure [@var{options}] [@var{target}]
-@end example
-
-
-@heading Target specification
-@itemize @bullet
-@item
-GCC has code to correctly determine the correct value for @var{target}
-for nearly all native systems. Therefore, we highly recommend you not
-provide a configure target when configuring a native compiler.
-
-@item
-@var{target} must be specified as @option{--target=@var{target}}
-when configuring a cross compiler; examples of valid targets would be
-i960-rtems, m68k-coff, sh-elf, etc.
-
-@item
-Specifying just @var{target} instead of @option{--target=@var{target}}
-implies that the host defaults to @var{target}.
-@end itemize
-
-
-@heading Options specification
-
-Use @var{options} to override several configure time options for
-GCC@. A list of supported @var{options} follows; @command{configure
---help} may list other options, but those not listed below may not
-work and should not normally be used.
-
-@table @code
-@item --prefix=@var{dirname}
-Specify the toplevel installation
-directory. This is the recommended way to install the tools into a directory
-other than the default. The toplevel installation directory defaults to
-@file{/usr/local}.
-
-We @strong{highly} recommend against @var{dirname} being the same or a
-subdirectory of @var{objdir} or vice versa.
-
-These additional options control where certain parts of the distribution
-are installed. Normally you should not need to use these options.
-@table @code
-@item --exec-prefix=@var{dirname}
-Specify the toplevel installation directory for architecture-dependent
-files. The default is @file{@var{prefix}}.
-
-@item --bindir=@var{dirname}
-Specify the installation directory for the executables called by users
-(such as @command{gcc} and @command{g++}). The default is
-@file{@var{exec-prefix}/bin}.
-
-@item --libdir=@var{dirname}
-Specify the installation directory for object code libraries and
-internal parts of GCC@. The default is @file{@var{exec-prefix}/lib}.
-
-@item --with-slibdir=@var{dirname}
-Specify the installation directory for the shared libgcc library. The
-default is @file{@var{libdir}}.
-
-@item --infodir=@var{dirname}
-Specify the installation directory for documentation in info format.
-The default is @file{@var{prefix}/info}.
-
-@item --mandir=@var{dirname}
-Specify the installation directory for manual pages. The default is
-@file{@var{prefix}/man}. (Note that the manual pages are only extracts from
-the full GCC manuals, which are provided in Texinfo format. The
-@command{g77} manpage is unmaintained and may be out of date; the others
-are derived by an automatic conversion process from parts of the full
-manual.)
-
-@item --with-gxx-include-dir=@var{dirname}
-Specify
-the installation directory for G++ header files. The default is
-@file{@var{prefix}/include/g++-v3}.
-
-@end table
-
-@item --program-prefix=@var{prefix}
-GCC supports some transformations of the names of its programs when
-installing them. This option prepends @var{prefix} to the names of
-programs to install in @var{bindir} (see above). For example, specifying
-@option{--program-prefix=foo-} would result in @samp{gcc}
-being installed as @file{/usr/local/bin/foo-gcc}.
-
-@item --program-suffix=@var{suffix}
-Appends @var{suffix} to the names of programs to install in @var{bindir}
-(see above). For example, specifying @option{--program-suffix=-3.1}
-would result in @samp{gcc} being installed as
-@file{/usr/local/bin/gcc-3.1}.
-
-@item --program-transform-name=@var{pattern}
-Applies the @samp{sed} script @var{pattern} to be applied to the names
-of programs to install in @var{bindir} (see above). @var{pattern} has to
-consist of one or more basic @samp{sed} editing commands, separated by
-semicolons. For example, if you want the @samp{gcc} program name to be
-transformed to the installed program @file{/usr/local/bin/myowngcc} and
-the @samp{g++} program name to be transformed to
-@file{/usr/local/bin/gspecial++} without changing other program names,
-you could use the pattern
-@option{--program-transform-name='s/^gcc$/myowngcc/; s/^g++$/gspecial++/'}
-to achieve this effect.
-
-All three options can be combined and used together, resulting in more
-complex conversion patterns. As a basic rule, @var{prefix} (and
-@var{suffix}) are prepended (appended) before further transformations
-can happen with a special transformation script @var{pattern}.
-
-As currently implemented, these options only take effect for native
-builds; cross compiler binaries' names are not transformed even when a
-transformation is explicitly asked for by one of these options.
-
-For native builds, some of the installed programs are also installed
-with the target alias in front of their name, as in
-@samp{i686-pc-linux-gnu-gcc}. All of the above transformations happen
-before the target alias is prepended to the name - so, specifying
-@option{--program-prefix=foo-} and @option{program-suffix=-3.1}, the
-resulting binary would be installed as
-@file{/usr/local/bin/i686-pc-linux-gnu-foo-gcc-3.1}.
-
-As a last shortcoming, none of the installed Ada programs are
-transformed yet, which will be fixed in some time.
-
-@item --with-local-prefix=@var{dirname}
-Specify the
-installation directory for local include files. The default is
-@file{/usr/local}. Specify this option if you want the compiler to
-search directory @file{@var{dirname}/include} for locally installed
-header files @emph{instead} of @file{/usr/local/include}.
-
-You should specify @option{--with-local-prefix} @strong{only} if your
-site has a different convention (not @file{/usr/local}) for where to put
-site-specific files.
-
-The default value for @option{--with-local-prefix} is @file{/usr/local}
-regardless of the value of @option{--prefix}. Specifying
-@option{--prefix} has no effect on which directory GCC searches for
-local header files. This may seem counterintuitive, but actually it is
-logical.
-
-The purpose of @option{--prefix} is to specify where to @emph{install
-GCC}. The local header files in @file{/usr/local/include}---if you put
-any in that directory---are not part of GCC@. They are part of other
-programs---perhaps many others. (GCC installs its own header files in
-another directory which is based on the @option{--prefix} value.)
-
-Both the local-prefix include directory and the GCC-prefix include
-directory are part of GCC's "system include" directories. Although these
-two directories are not fixed, they need to be searched in the proper
-order for the correct processing of the include_next directive. The
-local-prefix include directory is searched before the GCC-prefix
-include directory. Another characteristic of system include directories
-is that pedantic warnings are turned off for headers in these directories.
-
-Some autoconf macros add @option{-I @var{directory}} options to the
-compiler command line, to ensure that directories containing installed
-packages' headers are searched. When @var{directory} is one of GCC's
-system include directories, GCC will ignore the option so that system
-directories continue to be processed in the correct order. This
-may result in a search order different from what was specified but the
-directory will still be searched.
-
-GCC automatically searches for ordinary libraries using
-@env{GCC_EXEC_PREFIX}. Thus, when the same installation prefix is
-used for both GCC and packages, GCC will automatically search for
-both headers and libraries. This provides a configuration that is
-easy to use. GCC behaves in a manner similar to that when it is
-installed as a system compiler in @file{/usr}.
-
-Sites that need to install multiple versions of GCC may not want to
-use the above simple configuration. It is possible to use the
-@option{--program-prefix}, @option{--program-suffix} and
-@option{--program-transform-name} options to install multiple versions
-into a single directory, but it may be simpler to use different prefixes
-and the @option{--with-local-prefix} option to specify the location of the
-site-specific files for each version. It will then be necessary for
-users to specify explicitly the location of local site libraries
-(e.g., with @env{LIBRARY_PATH}).
-
-The same value can be used for both @option{--with-local-prefix} and
-@option{--prefix} provided it is not @file{/usr}. This can be used
-to avoid the default search of @file{/usr/local/include}.
-
-@strong{Do not} specify @file{/usr} as the @option{--with-local-prefix}!
-The directory you use for @option{--with-local-prefix} @strong{must not}
-contain any of the system's standard header files. If it did contain
-them, certain programs would be miscompiled (including GNU Emacs, on
-certain targets), because this would override and nullify the header
-file corrections made by the @command{fixincludes} script.
-
-Indications are that people who use this option use it based on mistaken
-ideas of what it is for. People use it as if it specified where to
-install part of GCC@. Perhaps they make this assumption because
-installing GCC creates the directory.
-
-@item --enable-shared[=@var{package}[,@dots{}]]
-Build shared versions of libraries, if shared libraries are supported on
-the target platform. Unlike GCC 2.95.x and earlier, shared libraries
-are enabled by default on all platforms that support shared libraries,
-except for @samp{libobjc} which is built as a static library only by
-default.
-
-If a list of packages is given as an argument, build shared libraries
-only for the listed packages. For other packages, only static libraries
-will be built. Package names currently recognized in the GCC tree are
-@samp{libgcc} (also known as @samp{gcc}), @samp{libstdc++} (not
-@samp{libstdc++-v3}), @samp{libffi}, @samp{zlib}, @samp{boehm-gc} and
-@samp{libjava}. Note that @samp{libobjc} does not recognize itself by
-any name, so, if you list package names in @option{--enable-shared},
-you will only get static Objective-C libraries. @samp{libf2c} and
-@samp{libiberty} do not support shared libraries at all.
-
-Use @option{--disable-shared} to build only static libraries. Note that
-@option{--disable-shared} does not accept a list of package names as
-argument, only @option{--enable-shared} does.
-
-@item @anchor{with-gnu-as}--with-gnu-as
-Specify that the compiler should assume that the
-assembler it finds is the GNU assembler. However, this does not modify
-the rules to find an assembler and will result in confusion if found
-assembler is not actually the GNU assembler. (Confusion will also
-result if the compiler finds the GNU assembler but has not been
-configured with @option{--with-gnu-as}.) If you have more than one
-assembler installed on your system, you may want to use this option in
-connection with @option{--with-as=@var{pathname}}.
-
-The following systems are the only ones where it makes a difference
-whether you use the GNU assembler. On any other system,
-@option{--with-gnu-as} has no effect.
-
-@itemize bullet
-@item @samp{hppa1.0-@var{any}-@var{any}}
-@item @samp{hppa1.1-@var{any}-@var{any}}
-@item @samp{i386-@var{any}-sysv}
-@item @samp{i386-@var{any}-isc}
-@item @samp{i860-@var{any}-bsd}
-@item @samp{m68k-bull-sysv}
-@item @samp{m68k-hp-hpux}
-@item @samp{m68k-sony-bsd}
-@item @samp{m68k-altos-sysv}
-@item @samp{m68000-hp-hpux}
-@item @samp{m68000-att-sysv}
-@item @samp{@var{any}-lynx-lynxos}
-@item @samp{mips-@var{any}}
-@end itemize
-
-On the systems listed above (except for the HP-PA, for ISC on the
-386, and for @samp{mips-sgi-irix5.*}), if you use the GNU assembler,
-you should also use the GNU linker (and specify @option{--with-gnu-ld}).
-
-@item --with-as=@var{pathname}
-Specify that the
-compiler should use the assembler pointed to by @var{pathname}, rather
-than the one found by the standard rules to find an assembler, which
-are:
-@itemize @bullet
-@item
-Check the
-@file{@var{exec_prefix}/lib/gcc-lib/@var{target}/@var{version}}
-directory, where @var{exec_prefix} defaults to @var{prefix} which
-defaults to @file{/usr/local} unless overridden by the
-@option{--prefix=@var{pathname}} switch described above. @var{target} is the
-target system triple, such as @samp{sparc-sun-solaris2.7}, and
-@var{version} denotes the GCC version, such as 3.0.
-@item
-Check operating system specific directories (e.g.@: @file{/usr/ccs/bin} on
-Sun Solaris 2).
-@end itemize
-Note that these rules do not check for the value of @env{PATH}. You may
-want to use @option{--with-as} if no assembler is installed in the
-directories listed above, or if you have multiple assemblers installed
-and want to choose one that is not found by the above rules.
-
-@item @anchor{with-gnu-ld}--with-gnu-ld
-Same as @uref{#with-gnu-as,,@option{--with-gnu-as}}
-but for linker.
-
-
-@item --with-ld=@var{pathname}
-Same as
-@option{--with-as}, but for the linker.
-
-@item --with-stabs
-Specify that stabs debugging
-information should be used instead of whatever format the host normally
-uses. Normally GCC uses the same debug format as the host system.
-
-On MIPS based systems and on Alphas, you must specify whether you want
-GCC to create the normal ECOFF debugging format, or to use BSD-style
-stabs passed through the ECOFF symbol table. The normal ECOFF debug
-format cannot fully handle languages other than C@. BSD stabs format can
-handle other languages, but it only works with the GNU debugger GDB@.
-
-Normally, GCC uses the ECOFF debugging format by default; if you
-prefer BSD stabs, specify @option{--with-stabs} when you configure GCC@.
-
-No matter which default you choose when you configure GCC, the user
-can use the @option{-gcoff} and @option{-gstabs+} options to specify explicitly
-the debug format for a particular compilation.
-
-@option{--with-stabs} is meaningful on the ISC system on the 386, also, if
-@option{--with-gas} is used. It selects use of stabs debugging
-information embedded in COFF output. This kind of debugging information
-supports C++ well; ordinary COFF debugging information does not.
-
-@option{--with-stabs} is also meaningful on 386 systems running SVR4. It
-selects use of stabs debugging information embedded in ELF output. The
-C++ compiler currently (2.6.0) does not support the DWARF debugging
-information normally used on 386 SVR4 platforms; stabs provide a
-workable alternative. This requires gas and gdb, as the normal SVR4
-tools can not generate or interpret stabs.
-
-@item --disable-multilib
-Specify that multiple target
-libraries to support different target variants, calling
-conventions, etc should not be built. The default is to build a
-predefined set of them.
-
-Some targets provide finer-grained control over which multilibs are built
-(e.g., @option{--disable-softfloat}):
-@table @code
-@item arc-*-elf*
-biendian.
-
-@item arm-*-*
-fpu, 26bit, underscore, interwork, biendian, nofmult.
-
-@item m68*-*-*
-softfloat, m68881, m68000, m68020.
-
-@item mips*-*-*
-single-float, biendian, softfloat.
-
-@item powerpc*-*-*, rs6000*-*-*
-aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
-sysv, aix.
-
-@end table
-
-@item --enable-threads
-Specify that the target
-supports threads. This affects the Objective-C compiler and runtime
-library, and exception handling for other languages like C++ and Java.
-On some systems, this is the default.
-
-In general, the best (and, in many cases, the only known) threading
-model available will be configured for use. Beware that on some
-systems, gcc has not been taught what threading models are generally
-available for the system. In this case, @option{--enable-threads} is an
-alias for @option{--enable-threads=single}.
-
-@item --disable-threads
-Specify that threading support should be disabled for the system.
-This is an alias for @option{--enable-threads=single}.
-
-@item --enable-threads=@var{lib}
-Specify that
-@var{lib} is the thread support library. This affects the Objective-C
-compiler and runtime library, and exception handling for other languages
-like C++ and Java. The possibilities for @var{lib} are:
-
-@table @code
-@item aix
-AIX thread support.
-@item dce
-DCE thread support.
-@item mach
-Generic MACH thread support, known to work on NeXTSTEP@. (Please note
-that the file needed to support this configuration, @file{gthr-mach.h}, is
-missing and thus this setting will cause a known bootstrap failure.)
-@item no
-This is an alias for @samp{single}.
-@item posix
-Generic POSIX thread support.
-@item pthreads
-Same as @samp{posix} on arm*-*-linux*, *-*-chorusos* and *-*-freebsd*
-only. A future release of gcc might remove this alias or extend it
-to all platforms.
-@item rtems
-RTEMS thread support.
-@item single
-Disable thread support, should work for all platforms.
-@item solaris
-Sun Solaris 2 thread support.
-@item vxworks
-VxWorks thread support.
-@item win32
-Microsoft Win32 API thread support.
-@end table
-
-@item --with-cpu=@var{cpu}
-Specify which cpu variant the
-compiler should generate code for by default. This is currently
-only supported on the some ports, specifically arm, powerpc, and
-SPARC@. If configure does not recognize the model name (e.g.@: arm700,
-603e, or ultrasparc) you provide, please check the configure script
-for a complete list of supported models.
-
-@item --enable-altivec
-Specify that the target supports AltiVec vector enhancements. This
-option will adjust the ABI for AltiVec enhancements, as well as generate
-AltiVec code when appropriate. This option is only available for
-PowerPC systems.
-
-@item --enable-target-optspace
-Specify that target
-libraries should be optimized for code space instead of code speed.
-This is the default for the m32r platform.
-
-@item --disable-cpp
-Specify that a user visible @command{cpp} program should not be installed.
-
-@item --with-cpp-install-dir=@var{dirname}
-Specify that the user visible @command{cpp} program should be installed
-in @file{@var{prefix}/@var{dirname}/cpp}, in addition to @var{bindir}.
-
-@item --enable-maintainer-mode
-The build rules that
-regenerate the GCC master message catalog @file{gcc.pot} are normally
-disabled. This is because it can only be rebuilt if the complete source
-tree is present. If you have changed the sources and want to rebuild the
-catalog, configuring with @option{--enable-maintainer-mode} will enable
-this. Note that you need a recent version of the @code{gettext} tools
-to do so.
-
-@item --enable-version-specific-runtime-libs
-Specify
-that runtime libraries should be installed in the compiler specific
-subdirectory (@file{@var{libsubdir}}) rather than the usual places. In
-addition, @samp{libstdc++}'s include files will be installed in
-@file{@var{libsubdir}/include/g++} unless you overruled it by using
-@option{--with-gxx-include-dir=@var{dirname}}. Using this option is
-particularly useful if you intend to use several versions of GCC in
-parallel. This is currently supported by @samp{libf2c} and
-@samp{libstdc++}, and is the default for @samp{libobjc} which cannot be
-changed in this case.
-
-@item --enable-languages=@var{lang1},@var{lang2},@dots{}
-Specify that only a particular subset of compilers and
-their runtime libraries should be built. For a list of valid values for
-@var{langN} you can issue the following command in the
-@file{gcc} directory of your GCC source tree:@*
-@example
-grep language= */config-lang.in
-@end example
-Currently, you can use any of the following:
-@code{ada}, @code{c}, @code{c++}, @code{f77}, @code{java}, @code{objc}.
-Building the Ada compiler has special requirements, see below.@*
-If you do not pass this flag, all languages available in the @file{gcc}
-sub-tree will be configured. Re-defining @code{LANGUAGES} when calling
-@samp{make bootstrap} @strong{does not} work anymore, as those
-language sub-directories might not have been configured!
-
-@item --disable-libgcj
-Specify that the run-time libraries
-used by GCJ should not be built. This is useful in case you intend
-to use GCJ with some other run-time, or you're going to install it
-separately, or it just happens not to build on your particular
-machine. In general, if the Java front end is enabled, the GCJ
-libraries will be enabled too, unless they're known to not work on
-the target platform. If GCJ is enabled but @samp{libgcj} isn't built, you
-may need to port it; in this case, before modifying the top-level
-@file{configure.in} so that @samp{libgcj} is enabled by default on this platform,
-you may use @option{--enable-libgcj} to override the default.
-
-@item --with-dwarf2
-Specify that the compiler should
-use DWARF 2 debugging information as the default.
-
-@item --enable-win32-registry
-@itemx --enable-win32-registry=@var{key}
-@itemx --disable-win32-registry
-The @option{--enable-win32-registry} option enables Windows-hosted GCC
-to look up installations paths in the registry using the following key:
-
-@smallexample
-@code{HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\@var{key}}
-@end smallexample
-
-@var{key} defaults to GCC version number, and can be overridden by the
-@option{--enable-win32-registry=@var{key}} option. Vendors and distributors
-who use custom installers are encouraged to provide a different key,
-perhaps one comprised of vendor name and GCC version number, to
-avoid conflict with existing installations. This feature is enabled
-by default, and can be disabled by @option{--disable-win32-registry}
-option. This option has no effect on the other hosts.
-
-@item --nfp
-Specify that the machine does not have a floating point unit. This
-option only applies to @samp{m68k-sun-sunos@var{n}} and
-@samp{m68k-isi-bsd}. On any other system, @option{--nfp} has no effect.
-
-@item --enable-checking
-@itemx --enable-checking=@var{list}
-When you specify this option, the compiler is built to perform checking
-of tree node types when referencing fields of that node, and some other
-internal consistency checks. This does not change the generated code,
-but adds error checking within the compiler. This will slow down the
-compiler and may only work properly if you are building the compiler
-with GCC@. This is on by default when building from CVS or snapshots,
-but off for releases. More control over the checks may be had by
-specifying @var{list}; the categories of checks available are
-@samp{misc}, @samp{tree}, @samp{gc}, @samp{rtl} and @samp{gcac}. The
-default when @var{list} is not specified is @samp{misc,tree,gc}; the
-checks @samp{rtl} and @samp{gcac} are very expensive.
-
-@item --enable-nls
-@itemx --disable-nls
-The @option{--enable-nls} option enables Native Language Support (NLS),
-which lets GCC output diagnostics in languages other than American
-English. Native Language Support is enabled by default if not doing a
-canadian cross build. The @option{--disable-nls} option disables NLS@.
-
-@item --with-included-gettext
-If NLS is enabled, the @option{--with-included-gettext} option causes the build
-procedure to prefer its copy of GNU @command{gettext}.
-
-@item --with-catgets
-If NLS is enabled, and if the host lacks @code{gettext} but has the
-inferior @code{catgets} interface, the GCC build procedure normally
-ignores @code{catgets} and instead uses GCC's copy of the GNU
-@code{gettext} library. The @option{--with-catgets} option causes the
-build procedure to use the host's @code{catgets} in this situation.
-
-@item --with-libiconv-prefix=@var{dir}
-Search for libiconv header files in @file{@var{dir}/include} and
-libiconv library files in @file{@var{dir}/lib}.
-
-@item --with-system-zlib
-Use installed zlib rather than that included with GCC@. This option
-only applies if the Java front end is being built.
-
-@item --enable-obsolete
-Enable configuration for an obsoleted system. If you attempt to
-configure GCC for a system (build, host, or target) which has been
-obsoleted, and you do not specify this flag, configure will halt with an
-error message.
-
-All support for systems which have been obsoleted in one release of GCC
-is removed entirely in the next major release, unless someone steps
-forward to maintain the port.
-@end table
-
-Some options which only apply to building cross compilers:
-@table @code
-@item --with-headers=@var{dir}
-Specifies a directory
-which has target include files.
-@emph{This option is required} when building a cross
-compiler, if @file{@var{prefix}/@var{target}/sys-include} doesn't pre-exist.
-These include files will be copied into the @file{gcc} install directory.
-@command{fixincludes} will be run on these files to make them compatible with
-GCC.
-@item --with-libs=``@var{dir1} @var{dir2} @dots{} @var{dirN}''
-Specifies a list of directories which contain the target runtime
-libraries. These libraries will be copied into the @file{gcc} install
-directory.
-@item --with-newlib
-Specifies that @samp{newlib} is
-being used as the target C library. This causes @code{__eprintf} to be
-omitted from @file{libgcc.a} on the assumption that it will be provided by
-@samp{newlib}.
-@end table
-
-Note that each @option{--enable} option has a corresponding
-@option{--disable} option and that each @option{--with} option has a
-corresponding @option{--without} option.
-
-@html
-<hr />
-<p>
-@end html
-@ifhtml
-@uref{./index.html,,Return to the GCC Installation page}
-@end ifhtml
-@end ifset
-
-@c ***Building****************************************************************
-@ifnothtml
-@comment node-name, next, previous, up
-@node Building, Testing, Configuration, Installing GCC
-@end ifnothtml
-@ifset buildhtml
-@ifnothtml
-@chapter Building
-@end ifnothtml
-@cindex Installing GCC: Building
-
-Now that GCC is configured, you are ready to build the compiler and
-runtime libraries.
-
-We @strong{highly} recommend that GCC be built using GNU make;
-other versions may work, then again they might not.
-GNU make is required for compiling GNAT (the Ada compiler) and the Java
-runtime library.
-
-(For example, many broken versions of make will fail if you use the
-recommended setup where @var{objdir} is different from @var{srcdir}.
-Other broken versions may recompile parts of the compiler when
-installing the compiler.)
-
-Some commands executed when making the compiler may fail (return a
-nonzero status) and be ignored by @code{make}. These failures, which
-are often due to files that were not found, are expected, and can safely
-be ignored.
-
-It is normal to have compiler warnings when compiling certain files.
-Unless you are a GCC developer, you can generally ignore these warnings
-unless they cause compilation to fail.
-
-On certain old systems, defining certain environment variables such as
-@env{CC} can interfere with the functioning of @command{make}.
-
-If you encounter seemingly strange errors when trying to build the
-compiler in a directory other than the source directory, it could be
-because you have previously configured the compiler in the source
-directory. Make sure you have done all the necessary preparations.
-
-If you build GCC on a BSD system using a directory stored in an old System
-V file system, problems may occur in running @command{fixincludes} if the
-System V file system doesn't support symbolic links. These problems
-result in a failure to fix the declaration of @code{size_t} in
-@file{sys/types.h}. If you find that @code{size_t} is a signed type and
-that type mismatches occur, this could be the cause.
-
-The solution is not to use such a directory for building GCC@.
-
-When building from CVS or snapshots, or if you modify parser sources,
-you need the Bison parser generator installed. Any version 1.25 or
-later should work; older versions may also work. If you do not modify
-parser sources, releases contain the Bison-generated files and you do
-not need Bison installed to build them.
-
-When building from CVS or snapshots, or if you modify Texinfo
-documentation, you need version 4.1 or later of Texinfo installed if you
-want Info documentation to be regenerated. Releases contain Info
-documentation pre-built for the unmodified documentation in the release.
-
-@section Building a native compiler
-
-For a native build issue the command @samp{make bootstrap}. This
-will build the entire GCC system, which includes the following steps:
-
-@itemize @bullet
-@item
-Build host tools necessary to build the compiler such as texinfo, bison,
-gperf.
-
-@item
-Build target tools for use by the compiler such as binutils (bfd,
-binutils, gas, gprof, ld, and opcodes)
-if they have been individually linked
-or moved into the top level GCC source tree before configuring.
-
-@item
-Perform a 3-stage bootstrap of the compiler.
-
-@item
-Perform a comparison test of the stage2 and stage3 compilers.
-
-@item
-Build runtime libraries using the stage3 compiler from the previous step.
-
-@end itemize
-
-If you are short on disk space you might consider @samp{make
-bootstrap-lean} instead. This is identical to @samp{make
-bootstrap} except that object files from the stage1 and
-stage2 of the 3-stage bootstrap of the compiler are deleted as
-soon as they are no longer needed.
-
-If you want to save additional space during the bootstrap and in
-the final installation as well, you can build the compiler binaries
-without debugging information as in the following example. This will save
-roughly 40% of disk space both for the bootstrap and the final installation.
-(Libraries will still contain debugging information.)
-
-@example
- make CFLAGS='-O' LIBCFLAGS='-g -O2' \
- LIBCXXFLAGS='-g -O2 -fno-implicit-templates' bootstrap
-@end example
-
-If you wish to use non-default GCC flags when compiling the stage2 and
-stage3 compilers, set @code{BOOT_CFLAGS} on the command line when doing
-@samp{make bootstrap}. Non-default optimization flags are less well
-tested here than the default of @samp{-g -O2}, but should still work.
-In a few cases, you may find that you need to specify special flags such
-as @option{-msoft-float} here to complete the bootstrap; or, if the
-native compiler miscompiles the stage1 compiler, you may need to work
-around this, by choosing @code{BOOT_CFLAGS} to avoid the parts of the
-stage1 compiler that were miscompiled, or by using @samp{make
-bootstrap4} to increase the number of stages of bootstrap.
-
-If you used the flag @option{--enable-languages=@dots{}} to restrict
-the compilers to be built, only those you've actually enabled will be
-built. This will of course only build those runtime libraries, for
-which the particular compiler has been built. Please note,
-that re-defining @env{LANGUAGES} when calling @samp{make bootstrap}
-@strong{does not} work anymore!
-
-If the comparison of stage2 and stage3 fails, this normally indicates
-that the stage2 compiler has compiled GCC incorrectly, and is therefore
-a potentially serious bug which you should investigate and report. (On
-a few systems, meaningful comparison of object files is impossible; they
-always appear ``different''. If you encounter this problem, you will
-need to disable comparison in the @file{Makefile}.)
-
-@section Building a cross compiler
-
-We recommend reading the
-@uref{http://www.objsw.com/CrossGCC/,,crossgcc FAQ}
-for information about building cross compilers.
-
-When building a cross compiler, it is not generally possible to do a
-3-stage bootstrap of the compiler. This makes for an interesting problem
-as parts of GCC can only be built with GCC@.
-
-To build a cross compiler, we first recommend building and installing a
-native compiler. You can then use the native GCC compiler to build the
-cross compiler. The installed native compiler needs to be GCC version
-2.95 or later.
-
-Assuming you have already installed a native copy of GCC and configured
-your cross compiler, issue the command @command{make}, which performs the
-following steps:
-
-@itemize @bullet
-@item
-Build host tools necessary to build the compiler such as texinfo, bison,
-gperf.
-
-@item
-Build target tools for use by the compiler such as binutils (bfd,
-binutils, gas, gprof, ld, and opcodes)
-if they have been individually linked or moved into the top level GCC source
-tree before configuring.
-
-@item
-Build the compiler (single stage only).
-
-@item
-Build runtime libraries using the compiler from the previous step.
-@end itemize
-
-Note that if an error occurs in any step the make process will exit.
-
-@section Building in parallel
-
-If you have a multiprocessor system you can use @samp{make bootstrap
-MAKE="make -j 2" -j 2} or just @samp{make -j 2 bootstrap}
-for GNU Make 3.79 and above instead of just @samp{make bootstrap}
-when building GCC@. You can use a bigger number instead of two if
-you like. In most cases, it won't help to use a number bigger than
-the number of processors in your machine.
-
-@section Building the Ada compiler
-
-In order to build GNAT, the Ada compiler, you need a working GNAT
-compiler (GNAT version 3.13 or later, or GCC version 3.1 or later),
-since the Ada front end is written in Ada (with some
-GNAT-specific extensions), and GNU make.
-
-However, you do not need a full installation of GNAT, just the GNAT
-binary @file{gnat1}, a copy of @file{gnatbind}, and a compiler driver
-which can deal with Ada input (by invoking the @file{gnat1} binary).
-You can specify this compiler driver by setting the @env{ADAC}
-environment variable at the configure step. @command{configure} can
-detect the driver automatically if it has got a common name such as
-@command{gcc} or @command{gnatgcc}. Of course, you still need a working
-C compiler (the compiler driver can be different or not).
-@command{configure} does not test whether the GNAT installation works
-and has a sufficiently recent version; if too old a GNAT version is
-installed, the build will fail unless @option{--enable-languages} is
-used to disable building the Ada front end.
-
-Additional build tools (such as @command{gnatmake}) or a working GNAT
-run-time library installation are usually @emph{not} required. However,
-if you want to bootstrap the compiler using a minimal version of GNAT,
-you have to issue the following commands before invoking @samp{make
-bootstrap} (this assumes that you start with an unmodified and consistent
-source distribution):
-
-@example
- cd @var{srcdir}/gcc/ada
- touch treeprs.ads [es]info.h nmake.ad[bs]
-@end example
-
-At the moment, the GNAT library and several tools for GNAT are not built
-by @samp{make bootstrap}. You have to invoke
-@samp{make gnatlib_and_tools} in the @file{@var{objdir}/gcc}
-subdirectory before proceeding with the next steps.
-
-For example, you can build a native Ada compiler by issuing the
-following commands (assuming @command{make} is GNU make):
-
-@example
- cd @var{objdir}
- @var{srcdir}/configure --enable-languages=c,ada
- cd @var{srcdir}/gcc/ada
- touch treeprs.ads [es]info.h nmake.ad[bs]
- cd @var{objdir}
- make bootstrap
- cd gcc
- make gnatlib_and_tools
- cd ..
-@end example
-
-Currently, when compiling the Ada front end, you cannot use the parallel
-build feature described in the previous section.
-
-@html
-<hr />
-<p>
-@end html
-@ifhtml
-@uref{./index.html,,Return to the GCC Installation page}
-@end ifhtml
-@end ifset
-
-@c ***Testing*****************************************************************
-@ifnothtml
-@comment node-name, next, previous, up
-@node Testing, Final install, Building, Installing GCC
-@end ifnothtml
-@ifset testhtml
-@ifnothtml
-@chapter Installing GCC: Testing
-@end ifnothtml
-@cindex Testing
-@cindex Installing GCC: Testing
-@cindex Testsuite
-
-Before you install GCC, we encourage you to run the testsuites and to
-compare your results with results from a similar configuration that have
-been submitted to the
-@uref{http://gcc.gnu.org/ml/gcc-testresults/,,gcc-testresults mailing list}.
-This step is optional and may require you to download additional software,
-but it can give you confidence in your new GCC installation or point out
-problems before you install and start using your new GCC.
-
-First, you must have @uref{download.html,,downloaded the testsuites}.
-These are part of the full distribution, but if you downloaded the
-``core'' compiler plus any front ends, you must download the testsuites
-separately.
-
-Second, you must have the testing tools installed. This includes
-a @uref{http://www.gnu.org/software/dejagnu/,,current version of DejaGnu};
-dejagnu 1.3 is not sufficient.
-It also includes Tcl and Expect; the DejaGnu site has links to these.
-
-Now you may need specific preparations:
-
-@itemize @bullet
-
-@item
-The following environment variables may need to be set appropriately, as in
-the following example (which assumes that DejaGnu has been installed
-under @file{/usr/local}):
-
-@example
- TCL_LIBRARY = /usr/local/share/tcl8.0
- DEJAGNULIBS = /usr/local/share/dejagnu
-@end example
-
-On systems such as Cygwin, these paths are required to be actual
-paths, not mounts or links; presumably this is due to some lack of
-portability in the DejaGnu code.
-
-If the directories where @command{runtest} and @command{expect} were
-installed are in the @env{PATH}, it should not be necessary to set these
-environment variables.
-
-@end itemize
-
-Finally, you can run the testsuite (which may take a long time):
-@example
- cd @var{objdir}; make -k check
-@end example
-
-The testing process will try to test as many components in the GCC
-distribution as possible, including the C, C++, Objective-C and Fortran
-compilers as well as the C++ and Java runtime libraries.
-
-While running the testsuite, DejaGnu might emit messages resembling
-@samp{WARNING: Couldn't find the global config file.} or
-@samp{WARNING: Couldn't find tool init file}.
-These messages are harmless and do not affect the validity of the tests.
-
-@section How can I run the test suite on selected tests?
-
-As a first possibility to cut down the number of tests that are run it is
-possible to use @samp{make check-gcc} or @samp{make check-g++}
-in the @file{gcc} subdirectory of the object directory. To further cut down the
-tests the following is possible:
-
-@example
- make check-gcc RUNTESTFLAGS="execute.exp @var{other-options}"
-@end example
-
-This will run all @command{gcc} execute tests in the testsuite.
-
-@example
- make check-g++ RUNTESTFLAGS="old-deja.exp=9805* @var{other-options}"
-@end example
-
-This will run the @command{g++} ``old-deja'' tests in the testsuite where the filename
-matches @samp{9805*}.
-
-The @file{*.exp} files are located in the testsuite directories of the GCC
-source, the most important ones being @file{compile.exp},
-@file{execute.exp}, @file{dg.exp} and @file{old-deja.exp}.
-To get a list of the possible @file{*.exp} files, pipe the
-output of @samp{make check} into a file and look at the
-@samp{Running @dots{} .exp} lines.
-
-To run only the tests for a library, run @samp{make check} from the
-the library's testsuite in a subdirectory of the object directory:
-@file{libstdc++-v3/testsuite} or @file{libcgj/testsuite}.
-
-@section Additional testing for Java Class Libraries
-
-The @uref{http://sources.redhat.com/mauve/,,Mauve Project} provides
-a suite of tests for the Java Class Libraries. This suite can be run
-as part of libgcj testing by specifying the location of the Mauve tree
-when invoking @samp{make}, as in @samp{make MAUVEDIR=~/mauve check}.
-
-@section How to interpret test results
-
-After the testsuite has run you'll find various @file{*.sum} and @file{*.log}
-files in the testsuite subdirectories. The @file{*.log} files contain a
-detailed log of the compiler invocations and the corresponding
-results, the @file{*.sum} files summarize the results. These summaries list
-all the tests that have been run with a corresponding status code:
-
-@itemize @bullet
-@item
-PASS: the test passed as expected
-@item
-XPASS: the test unexpectedly passed
-@item
-FAIL: the test unexpectedly failed
-@item
-XFAIL: the test failed as expected
-@item
-UNSUPPORTED: the test is not supported on this platform
-@item
-ERROR: the testsuite detected an error
-@item
-WARNING: the testsuite detected a possible problem
-@end itemize
-
-It is normal for some tests to report unexpected failures. At the
-current time our testing harness does not allow fine grained control
-over whether or not a test is expected to fail. We expect to fix this
-problem in future releases.
-
-
-@section Submitting test results
-
-If you want to report the results to the GCC project, use the
-@file{contrib/test_summary} shell script. Start it in the @var{objdir} with
-
-@example
- @var{srcdir}/contrib/test_summary -p your_commentary.txt \
- -m gcc-testresults@@gcc.gnu.org |sh
-@end example
-
-This script uses the @command{Mail} program to send the results, so
-make sure it is in your @env{PATH}. The file @file{your_commentary.txt} is
-prepended to the testsuite summary and should contain any special
-remarks you have on your results or your build environment. Please
-do not edit the testsuite result block or the subject line, as these
-messages are automatically parsed and presented at the
-@uref{http://gcc.gnu.org/testresults/,,GCC testresults} web
-page. Here you can also gather information on how specific tests
-behave on different platforms and compare them with your results. A
-few failing testcases are possible even on released versions and you
-should look here first if you think your results are unreasonable.
-
-@html
-<hr />
-<p>
-@end html
-@ifhtml
-@uref{./index.html,,Return to the GCC Installation page}
-@end ifhtml
-@end ifset
-
-@c ***Final install***********************************************************
-@ifnothtml
-@comment node-name, next, previous, up
-@node Final install, , Testing, Installing GCC
-@end ifnothtml
-@ifset finalinstallhtml
-@ifnothtml
-@chapter Installing GCC: Final installation
-@end ifnothtml
-
-Now that GCC has been built (and optionally tested), you can install it with
-@example
-cd @var{objdir}; make install
-@end example
-
-We strongly recommend to install into a target directory where there is
-no previous version of GCC present.
-
-That step completes the installation of GCC; user level binaries can
-be found in @file{@var{prefix}/bin} where @var{prefix} is the value you
-specified with the @option{--prefix} to configure (or @file{/usr/local}
-by default). (If you specified @option{--bindir}, that directory will
-be used instead; otherwise, if you specified @option{--exec-prefix},
-@file{@var{exec-prefix}/bin} will be used.) Headers for the C++ and
-Java libraries are installed in @file{@var{prefix}/include}; libraries
-in @file{@var{libdir}} (normally @file{@var{prefix}/lib}); internal
-parts of the compiler in @file{@var{libdir}/gcc-lib}; documentation in
-info format in @file{@var{infodir}} (normally @file{@var{prefix}/info}).
-
-If you built a released version of GCC using @samp{make bootstrap} then please
-quickly review the build status page for your release, available from
-@uref{http://gcc.gnu.org/buildstat.html}.
-If your system is not listed for the version of GCC that you built,
-send a note to
-@email{gcc@@gcc.gnu.org} indicating
-that you successfully built and installed GCC.
-Include the following information:
-
-@itemize @bullet
-@item
-Output from running @file{@var{srcdir}/config.guess}. Do not send us
-that file itself, just the one-line output from running it.
-
-@item
-The output of @samp{gcc -v} for your newly installed gcc.
-This tells us which version of GCC you built and the options you passed to
-configure.
-
-@item
-Whether you enabled all languages or a subset of them. If you used a
-full distribution then this information is part of the configure
-options in the output of @samp{gcc -v}, but if you downloaded the
-``core'' compiler plus additional front ends then it isn't apparent
-which ones you built unless you tell us about it.
-
-@item
-If the build was for GNU/Linux, also include:
-@itemize @bullet
-@item
-The distribution name and version (e.g., Red Hat 7.1 or Debian 2.2.3);
-this information should be available from @file{/etc/issue}.
-
-@item
-The version of the Linux kernel, available from @samp{uname --version}
-or @samp{uname -a}.
-
-@item
-The version of glibc you used; for RPM-based systems like Red Hat,
-Mandrake, and SuSE type @samp{rpm -q glibc} to get the glibc version,
-and on systems like Debian and Progeny use @samp{dpkg -l libc6}.
-@end itemize
-For other systems, you can include similar information if you think it is
-relevant.
-
-@item
-Any other information that you think would be useful to people building
-GCC on the same configuration. The new entry in the build status list
-will include a link to the archived copy of your message.
-@end itemize
-
-We'd also like to know if the
-@ifnothtml
-@ref{Specific, host/target specific installation notes}
-@end ifnothtml
-@ifhtml
-@uref{specific.html,,host/target specific installation notes}
-@end ifhtml
-didn't include your host/target information or if that information is
-incomplete or out of date. Send a note to
-@email{gcc@@gcc.gnu.org} telling us how the information should be changed.
-
-If you find a bug, please report it following our
-@uref{../bugs.html,,bug reporting guidelines}.
-
-If you want to print the GCC manuals, do @samp{cd @var{objdir}; make
-dvi}. You will need to have @command{texi2dvi} (version at least 4.1)
-and @TeX{} installed. This creates a number of @file{.dvi} files in
-subdirectories of @file{@var{objdir}}; these may be converted for
-printing with programs such as @command{dvips}. You can also
-@uref{http://www.gnu.org/order/order.html,,buy printed manuals from the
-Free Software Foundation}, though such manuals may not be for the most
-recent version of GCC@.
-
-@html
-<hr />
-<p>
-@end html
-@ifhtml
-@uref{./index.html,,Return to the GCC Installation page}
-@end ifhtml
-@end ifset
-
-@c ***Binaries****************************************************************
-@ifnothtml
-@comment node-name, next, previous, up
-@node Binaries, Specific, Installing GCC, Top
-@end ifnothtml
-@ifset binarieshtml
-@ifnothtml
-@chapter Installing GCC: Binaries
-@end ifnothtml
-@cindex Binaries
-@cindex Installing GCC: Binaries
-
-We are often asked about pre-compiled versions of GCC@. While we cannot
-provide these for all platforms, below you'll find links to binaries for
-various platforms where creating them by yourself is not easy due to various
-reasons.
-
-Please note that we did not create these binaries, nor do we
-support them. If you have any problems installing them, please
-contact their makers.
-
-@itemize
-@item
-AIX:
-@itemize
-@item
-@uref{http://www.bullfreeware.com,,Bull's Freeware and Shareware Archive for AIX};
-
-@item
-@uref{http://aixpdslib.seas.ucla.edu,,UCLA Software Library for AIX}.
-@end itemize
-
-@item
-DOS---@uref{http://www.delorie.com/djgpp/,,DJGPP}.
-
-@item
-Hitachi H8/300[HS]---@uref{http://h8300-hms.sourceforge.net/,,GNU
-Development Tools for the Hitachi H8/300[HS] Series}.
-
-@item
-HP-UX:
-@itemize
-@item
-@uref{http://hpux.cae.wisc.edu/,,HP-UX Porting Center};
-
-@item
-@uref{ftp://sunsite.informatik.rwth-aachen.de/pub/packages/gcc_hpux/,,Binaries for HP-UX 11.00 at Aachen University of Technology}.
-@end itemize
-
-@item
-@uref{http://www.sco.com/skunkware/devtools/index.html#gcc,,SCO
-OpenServer/Unixware}.
-
-@item
-Sinix/Reliant Unix---@uref{ftp://ftp.siemens.de/sni/mr/pd/gnu/gcc,,Siemens}.
-
-@item
-Solaris 2 (SPARC, Intel)---@uref{http://www.sunfreeware.com/,,Sunfreeware}.
-
-@item
-SGI---@uref{http://freeware.sgi.com/,,SGI Freeware}.
-
-@item
-Windows 95, 98, and NT:
-@itemize
-@item
-The @uref{http://sources.redhat.com/cygwin/,,Cygwin} project;
-@item
-The @uref{http://www.mingw.org/,,MinGW} project.
-@end itemize
-
-@item
-@uref{ftp://ftp.thewrittenword.com/packages/free/by-name/,,The
-Written Word} offers binaries for Solaris 2.5.1, 2.6, 2.7/SPARC, 2.7/Intel,
-IRIX 6.2, 6.5, Digital UNIX 4.0D, HP-UX 10.20, and HP-UX 11.00.
-
-@end itemize
-
-In addition to those specific offerings, you can get a binary
-distribution CD-ROM from the
-@uref{http://www.fsf.org/order/order.html,,Free Software Foundation}.
-It contains binaries for a number of platforms, and
-includes not only GCC, but other stuff as well. The current CD does
-not contain the latest version of GCC, but it should allow
-bootstrapping the compiler. An updated version of that disk is in the
-works.
-
-@html
-<hr />
-<p>
-@end html
-@ifhtml
-@uref{./index.html,,Return to the GCC Installation page}
-@end ifhtml
-@end ifset
-
-@c ***Specific****************************************************************
-@ifnothtml
-@comment node-name, next, previous, up
-@node Specific, Old, Binaries, Top
-@end ifnothtml
-@ifset specifichtml
-@ifnothtml
-@chapter Host/target specific installation notes for GCC
-@end ifnothtml
-@cindex Specific
-@cindex Specific installation notes
-@cindex Target specific installation
-@cindex Host specific installation
-@cindex Target specific installation notes
-
-Please read this document carefully @emph{before} installing the
-GNU Compiler Collection on your machine.
-
-@ifhtml
-@itemize
-@item
-@uref{#1750a-*-*,,1750a-*-*}
-@item
-@uref{#a29k,,a29k}
-@item
-@uref{#a29k-*-bsd,,a29k-*-bsd}
-@item
-@uref{#alpha*-*-*,,alpha*-*-*}
-@item
-@uref{#alpha*-dec-osf*,,alpha*-dec-osf*}
-@item
-@uref{#alphaev5-cray-unicosmk*,,alphaev5-cray-unicosmk*}
-@item
-@uref{#arc-*-elf,,arc-*-elf}
-@item
-@uref{#arm-*-aout,,arm-*-aout}
-@item
-@uref{#arm-*-elf,,arm-*-elf}
-@item
-@uref{#arm*-*-linux-gnu,,arm*-*-linux-gnu}
-@item
-@uref{#arm-*-riscix,,arm-*-riscix}
-@item
-@uref{#avr,,avr}
-@item
-@uref{#c4x,,c4x}
-@item
-@uref{#dos,,DOS}
-@item
-@uref{#dsp16xx,,dsp16xx}
-@item
-@uref{#elxsi-elxsi-bsd,,elxsi-elxsi-bsd}
-@item
-@uref{#*-*-freebsd*,,*-*-freebsd*}
-@item
-@uref{#h8300-hms,,h8300-hms}
-@item
-@uref{#hppa*-hp-hpux*,,hppa*-hp-hpux*}
-@item
-@uref{#hppa*-hp-hpux9,,hppa*-hp-hpux9}
-@item
-@uref{#hppa*-hp-hpux10,,hppa*-hp-hpux10}
-@item
-@uref{#hppa*-hp-hpux11,,hppa*-hp-hpux11}
-@item
-@uref{#i370-*-*,,i370-*-*}
-@item
-@uref{#*-*-linux-gnu,,*-*-linux-gnu}
-@item
-@uref{#ix86-*-linux*oldld,,i?86-*-linux*oldld}
-@item
-@uref{#ix86-*-linux*aout,,i?86-*-linux*aout}
-@item
-@uref{#ix86-*-linux*,,i?86-*-linux*}
-@item
-@uref{#ix86-*-sco,,i?86-*-sco}
-@item
-@uref{#ix86-*-sco3.2v4,,i?86-*-sco3.2v4}
-@item
-@uref{#ix86-*-sco3.2v5*,,i?86-*-sco3.2v5*}
-@item
-@uref{#ix86-*-udk,,i?86-*-udk}
-@item
-@uref{#ix86-*-isc,,i?86-*-isc}
-@item
-@uref{#ix86-*-esix,,i?86-*-esix}
-@item
-@uref{#ix86-ibm-aix,,i?86-ibm-aix}
-@item
-@uref{#ix86-sequent-bsd,,i?86-sequent-bsd}
-@item
-@uref{#ix86-sequent-ptx1*,,i?86-sequent-ptx1*, i?86-sequent-ptx2*, i?86-sequent-sysv3*}
-@item
-@uref{#i860-intel-osf*,,i860-intel-osf*}
-@item
-@uref{#ia64-*-linux,,ia64-*-linux}
-@item
-@uref{#*-lynx-lynxos,,*-lynx-lynxos}
-@item
-@uref{#*-ibm-aix*,,*-ibm-aix*}
-@item
-@uref{#m32r-*-elf,,m32r-*-elf}
-@item
-@uref{#m68000-hp-bsd,,m68000-hp-bsd}
-@item
-@uref{#m6811-elf,,m6811-elf}
-@item
-@uref{#m6812-elf,,m6812-elf}
-@item
-@uref{#m68k-altos,,m68k-altos}
-@item
-@uref{#m68k-apple-aux,,m68k-apple-aux}
-@item
-@uref{#m68k-att-sysv,,m68k-att-sysv}
-@item
-@uref{#m68k-bull-sysv,,m68k-bull-sysv}
-@item
-@uref{#m68k-crds-unos,,m68k-crds-unos}
-@item
-@uref{#m68k-hp-hpux,,m68k-hp-hpux}
-@item
-@uref{#m68k-*-nextstep*,,m68k-*-nextstep*}
-@item
-@uref{#m68k-ncr-*,,m68k-ncr-*}
-@item
-@uref{#m68k-sun,,m68k-sun}
-@item
-@uref{#m68k-sun-sunos4.1.1,,m68k-sun-sunos4.1.1}
-@item
-@uref{#m88k-*-svr3,,m88k-*-svr3}
-@item
-@uref{#m88k-*-dgux,,m88k-*-dgux}
-@item
-@uref{#m88k-tektronix-sysv3,,m88k-tektronix-sysv3}
-@item
-@uref{#mips-*-*,,mips-*-*}
-@item
-@uref{#mips-dec-*,,mips-dec-*}
-@item
-@uref{#mips-mips-bsd,,mips-mips-bsd}
-@item
-@uref{#mips-mips-riscos*,,mips-mips-riscos*}
-@item
-@uref{#mips-sgi-irix4,,mips-sgi-irix4}
-@item
-@uref{#mips-sgi-irix5,,mips-sgi-irix5}
-@item
-@uref{#mips-sgi-irix6,,mips-sgi-irix6}
-@item
-@uref{#mips-sony-sysv,,mips-sony-sysv}
-@item
-@uref{#ns32k-encore,,ns32k-encore}
-@item
-@uref{#ns32k-*-genix,,ns32k-*-genix}
-@item
-@uref{#ns32k-sequent,,ns32k-sequent}
-@item
-@uref{#ns32k-utek,,ns32k-utek}
-@item
-@uref{#powerpc*-*-*,,powerpc*-*-*, powerpc-*-sysv4}
-@item
-@uref{#powerpc-*-darwin*,,powerpc-*-darwin*}
-@item
-@uref{#powerpc-*-elf,,powerpc-*-elf, powerpc-*-sysv4}
-@item
-@uref{#powerpc-*-linux-gnu*,,powerpc-*-linux-gnu*}
-@item
-@uref{#powerpc-*-netbsd*,,powerpc-*-netbsd*}
-@item
-@uref{#powerpc-*-eabiaix,,powerpc-*-eabiaix}
-@item
-@uref{#powerpc-*-eabisim,,powerpc-*-eabisim}
-@item
-@uref{#powerpc-*-eabi,,powerpc-*-eabi}
-@item
-@uref{#powerpcle-*-elf,,powerpcle-*-elf, powerpcle-*-sysv4}
-@item
-@uref{#powerpcle-*-eabisim,,powerpcle-*-eabisim}
-@item
-@uref{#powerpcle-*-eabi,,powerpcle-*-eabi}
-@item
-@uref{#powerpcle-*-winnt,,powerpcle-*-winnt, powerpcle-*-pe}
-@item
-@uref{#romp-*-aos,,romp-*-aos, romp-*-mach}
-@item
-@uref{#s390-*-linux*}
-@item
-@uref{#s390x-*-linux*}
-@item
-@uref{#*-*-solaris2*,,*-*-solaris2*}
-@item
-@uref{#sparc-sun-solaris2*,,sparc-sun-solaris2*}
-@item
-@uref{#sparc-sun-solaris2.7,,sparc-sun-solaris2.7}
-@item
-@uref{#sparc-sun-sunos4*,,sparc-sun-sunos4*}
-@item
-@uref{#sparc-unknown-linux-gnulibc1,,sparc-unknown-linux-gnulibc1}
-@item
-@uref{#sparc-*-linux*,,sparc-*-linux*}
-@item
-@uref{#sparc64-*-*,,sparc64-*-*}
-@item
-@uref{#sparcv9-*-solaris2*,,sparcv9-*-solaris2*}
-@item
-@uref{#*-*-sysv*,,*-*-sysv*}
-@item
-@uref{#vax-dec-ultrix,,vax-dec-ultrix}
-@item
-@uref{#we32k-*-*,,we32k-*-*}
-@item
-@uref{#xtensa-*-elf,,xtensa-*-elf}
-@item
-@uref{#xtensa-*-linux*,,xtensa-*-linux*}
-@item
-@uref{#windows,,Microsoft Windows}
-@item
-@uref{#os2,,OS/2}
-@item
-@uref{#older,,Older systems}
-@end itemize
-
-@itemize
-@item
-@uref{#elf_targets,,all ELF targets} (SVR4, Solaris 2, etc.)
-@end itemize
-@end ifhtml
-
-
-@html
-<!-- -------- host/target specific issues start here ---------------- -->
-<hr />
-@end html
-@heading @anchor{1750a-*-*}1750a-*-*
-MIL-STD-1750A processors. This target is obsoleted in GCC 3.1.
-
-The MIL-STD-1750A cross configuration produces output for
-@code{as1750}, an assembler/linker available under the GNU General Public
-License for the 1750A@. @code{as1750} can be obtained at
-@uref{ftp://ftp.fta-berlin.de/pub/crossgcc/1750gals/}.
-A similarly licensed simulator for
-the 1750A is available from same address.
-
-You should ignore a fatal error during the building of @samp{libgcc}
-(@samp{libgcc} is not yet implemented for the 1750A@.)
-
-The @code{as1750} assembler requires the file @file{ms1750.inc}, which is
-found in the directory @file{gcc/config/1750a}.
-
-GCC produced the same sections as the Fairchild F9450 C Compiler,
-namely:
-
-@table @code
-@item Normal
-The program code section.
-
-@item Static
-The read/write (RAM) data section.
-
-@item Konst
-The read-only (ROM) constants section.
-
-@item Init
-Initialization section (code to copy KREL to SREL)@.
-@end table
-
-The smallest addressable unit is 16 bits (@code{BITS_PER_UNIT} is 16). This
-means that type @code{char} is represented with a 16-bit word per character.
-The 1750A's ``Load/Store Upper/Lower Byte'' instructions are not used by
-GCC@.
-
-@html
-<hr />
-@end html
-@heading @anchor{a29k}a29k
-AMD Am29k-family processors. These are normally used in embedded
-applications. This configuration corresponds to AMD's standard calling
-sequence and binary interface and is compatible with other 29k tools.
-
-AMD has abandoned this processor. All existing a29k targets are obsoleted
-in GCC 3.1.
-
-You may need to make a variant of the file @file{a29k.h} for your
-particular configuration.
-
-@html
-<hr />
-@end html
-@heading @anchor{a29k-*-bsd}a29k-*-bsd
-AMD Am29050 used in a system running a variant of BSD Unix.
-
-@html
-<hr />
-@end html
-@heading @anchor{alpha*-*-*}alpha*-*-*
-
-This section contains general configuration information for all
-alpha-based platforms using ELF (in particular, ignore this section for
-DEC OSF/1, Digital UNIX and Tru64 UNIX)@. In addition to reading this
-section, please read all other sections that match your target.
-
-We require binutils 2.11.2 or newer.
-Previous binutils releases had a number of problems with DWARF 2
-debugging information, not the least of which is incorrect linking of
-shared libraries.
-
-@html
-<hr />
-@end html
-@heading @anchor{alpha*-dec-osf*}alpha*-dec-osf*
-Systems using processors that implement the DEC Alpha architecture and
-are running the DEC/Compaq Unix (DEC OSF/1, Digital UNIX, or Compaq
-Tru64 UNIX) operating system, for example the DEC Alpha AXP systems.
-
-Support for versions before @code{alpha*-dec-osf4} is obsoleted in GCC
-3.1. (These are the versions which identify themselves as DEC OSF/1.)
-
-In Digital Unix V4.0, virtual memory exhausted bootstrap failures
-may be fixed by configuring with @option{--with-gc=simple},
-reconfiguring Kernel Virtual Memory and Swap parameters
-per the @command{/usr/sbin/sys_check} Tuning Suggestions,
-or applying the patch in
-@uref{http://gcc.gnu.org/ml/gcc/2002-08/msg00822.html}.
-
-In Tru64 UNIX V5.1, Compaq introduced a new assembler that does not
-currently (2001-06-13) work with @command{mips-tfile}. As a workaround,
-we need to use the old assembler, invoked via the barely documented
-@option{-oldas} option. To bootstrap GCC, you either need to use the
-Compaq C Compiler:
-
-@example
- % CC=cc @var{srcdir}/configure [@var{options}] [@var{target}]
-@end example
-
-or you can use a copy of GCC 2.95.3 or higher built on Tru64 UNIX V4.0:
-
-@example
- % CC=gcc -Wa,-oldas @var{srcdir}/configure [@var{options}] [@var{target}]
-@end example
-
-As of GNU binutils 2.11.2, neither GNU @command{as} nor GNU @command{ld}
-are supported on Tru64 UNIX, so you must not configure GCC with
-@option{--with-gnu-as} or @option{--with-gnu-ld}.
-
-The @option{--enable-threads} options isn't supported yet. A patch is
-in preparation for a future release.
-
-GCC writes a @samp{.verstamp} directive to the assembler output file
-unless it is built as a cross-compiler. It gets the version to use from
-the system header file @file{/usr/include/stamp.h}. If you install a
-new version of DEC Unix, you should rebuild GCC to pick up the new version
-stamp.
-
-Note that since the Alpha is a 64-bit architecture, cross-compilers from
-32-bit machines will not generate code as efficient as that generated
-when the compiler is running on a 64-bit machine because many
-optimizations that depend on being able to represent a word on the
-target in an integral value on the host cannot be performed. Building
-cross-compilers on the Alpha for 32-bit machines has only been tested in
-a few cases and may not work properly.
-
-@code{make compare} may fail on old versions of DEC Unix unless you add
-@option{-save-temps} to @code{CFLAGS}. On these systems, the name of the
-assembler input file is stored in the object file, and that makes
-comparison fail if it differs between the @code{stage1} and
-@code{stage2} compilations. The option @option{-save-temps} forces a
-fixed name to be used for the assembler input file, instead of a
-randomly chosen name in @file{/tmp}. Do not add @option{-save-temps}
-unless the comparisons fail without that option. If you add
-@option{-save-temps}, you will have to manually delete the @samp{.i} and
-@samp{.s} files after each series of compilations.
-
-GCC now supports both the native (ECOFF) debugging format used by DBX
-and GDB and an encapsulated STABS format for use only with GDB@. See the
-discussion of the @option{--with-stabs} option of @file{configure} above
-for more information on these formats and how to select them.
-
-There is a bug in DEC's assembler that produces incorrect line numbers
-for ECOFF format when the @samp{.align} directive is used. To work
-around this problem, GCC will not emit such alignment directives
-while writing ECOFF format debugging information even if optimization is
-being performed. Unfortunately, this has the very undesirable
-side-effect that code addresses when @option{-O} is specified are
-different depending on whether or not @option{-g} is also specified.
-
-To avoid this behavior, specify @option{-gstabs+} and use GDB instead of
-DBX@. DEC is now aware of this problem with the assembler and hopes to
-provide a fix shortly.
-
-@html
-<hr />
-@end html
-@heading @anchor{alphaev5-cray-unicosmk*}alphaev5-cray-unicosmk*
-Cray T3E systems running Unicos/Mk.
-
-This port is incomplete and has many known bugs. We hope to improve the
-support for this target soon. Currently, only the C front end is supported,
-and it is not possible to build parallel applications. Cray modules are not
-supported; in particular, Craylibs are assumed to be in
-@file{/opt/ctl/craylibs/craylibs}.
-
-You absolutely @strong{must} use GNU make on this platform. Also, you
-need to tell GCC where to find the assembler and the linker. The
-simplest way to do so is by providing @option{--with-as} and
-@option{--with-ld} to @file{configure}, e.g.@:
-
-@example
- configure --with-as=/opt/ctl/bin/cam --with-ld=/opt/ctl/bin/cld \
- --enable-languages=c
-@end example
-
-The comparison test during @samp{make bootstrap} fails on Unicos/Mk
-because the assembler inserts timestamps into object files. You should
-be able to work around this by doing @samp{make all} after getting this
-failure.
-
-@html
-<hr />
-@end html
-@heading @anchor{arc-*-elf}arc-*-elf
-Argonaut ARC processor.
-This configuration is intended for embedded systems.
-
-@html
-<hr />
-@end html
-@heading @anchor{arm-*-aout}arm-*-aout
-Advanced RISC Machines ARM-family processors. These are often used in
-embedded applications. There are no standard Unix configurations.
-This configuration corresponds to the basic instruction sequences and will
-produce @file{a.out} format object modules.
-
-You may need to make a variant of the file @file{arm.h} for your particular
-configuration.
-
-@html
-<hr />
-@end html
-@heading @anchor{arm-*-elf}arm-*-elf
-This configuration is intended for embedded systems.
-
-@html
-<hr />
-@end html
-@heading @anchor{arm*-*-linux-gnu}arm*-*-linux-gnu
-
-We require GNU binutils 2.10 or newer.
-
-@html
-<hr />
-@end html
-@heading @anchor{arm-*-riscix}arm-*-riscix
-The ARM2 or ARM3 processor running RISC iX, Acorn's port of BSD Unix.
-This configuration is obsoleted in GCC 3.1.
-
-If you are running a version of RISC iX prior to 1.2 then you must
-specify the version number during configuration. Note that the
-assembler shipped with RISC iX does not support stabs debugging
-information; a new version of the assembler, with stabs support
-included, is now available from Acorn and via ftp
-@uref{ftp://ftp.acorn.com/pub/riscix/as+xterm.tar.Z}. To enable stabs
-debugging, pass @option{--with-gnu-as} to configure.
-
-You will need to install GNU @command{sed} before you can run configure.
-
-@html
-<hr />
-@end html
-@heading @anchor{avr}avr
-
-ATMEL AVR-family micro controllers. These are used in embedded
-applications. There are no standard Unix configurations.
-@ifnothtml
-@xref{AVR Options,, AVR Options, gcc, Using and Porting the GNU Compiler
-Collection (GCC)},
-@end ifnothtml
-@ifhtml
-See ``AVR Options'' in the main manual
-@end ifhtml
-for the list of supported MCU types.
-
-Use @samp{configure --target=avr --enable-languages="c"} to configure GCC@.
-
-Further installation notes and other useful information about AVR tools
-can also be obtained from:
-
-@itemize @bullet
-@item
-@uref{http://home.overta.ru/users/denisc,,http://home.overta.ru/users/denisc}
-@item
-@uref{http://www.amelek.gda.pl/avr,,http://www.amelek.gda.pl/avr}
-@end itemize
-
-We @emph{strongly} recommend using binutils 2.11 or newer.
-
-The following error:
-@example
- Error: register required
-@end example
-
-indicates that you should upgrade to a newer version of the binutils.
-
-@html
-<hr />
-@end html
-@heading @anchor{c4x}c4x
-
-Texas Instruments TMS320C3x and TMS320C4x Floating Point Digital Signal
-Processors. These are used in embedded applications. There are no
-standard Unix configurations.
-@ifnothtml
-@xref{TMS320C3x/C4x Options,, TMS320C3x/C4x Options, gcc, Using and
-Porting the GNU Compiler Collection (GCC)},
-@end ifnothtml
-@ifhtml
-See ``TMS320C3x/C4x Options'' in the main manual
-@end ifhtml
-for the list of supported MCU types.
-
-GCC can be configured as a cross compiler for both the C3x and C4x
-architectures on the same system. Use @samp{configure --target=c4x
---enable-languages="c,c++"} to configure.
-
-
-Further installation notes and other useful information about C4x tools
-can also be obtained from:
-
-@itemize @bullet
-@item
-@uref{http://www.elec.canterbury.ac.nz/c4x/,,http://www.elec.canterbury.ac.nz/c4x/}
-@end itemize
-
-@html
-<hr />
-@end html
-@heading @anchor{cris}CRIS
-
-CRIS is the CPU architecture in Axis Communications ETRAX system-on-a-chip
-series. These are used in embedded applications.
-
-@ifnothtml
-@xref{CRIS Options,, CRIS Options, gcc, Using and Porting the GNU Compiler
-Collection (GCC)},
-@end ifnothtml
-@ifhtml
-See ``CRIS Options'' in the main manual
-@end ifhtml
-for a list of CRIS-specific options.
-
-There are a few different CRIS targets:
-@table @code
-@item cris-axis-aout
-Old target. Includes a multilib for the @samp{elinux} a.out-based
-target. No multilibs for newer architecture variants.
-@item cris-axis-elf
-Mainly for monolithic embedded systems. Includes a multilib for the
-@samp{v10} core used in @samp{ETRAX 100 LX}.
-@item cris-axis-linux-gnu
-A GNU/Linux port for the CRIS architecture, currently targeting
-@samp{ETRAX 100 LX} by default.
-@end table
-
-For @code{cris-axis-aout} and @code{cris-axis-elf} you need binutils 2.11
-or newer. For @code{cris-axis-linux-gnu} you need binutils 2.12 or newer.
-
-Pre-packaged tools can be obtained from
-@uref{ftp://ftp.axis.com/pub/axis/tools/cris/compiler-kit/}. More
-information about this platform is available at
-@uref{http://developer.axis.com/}.
-
-@html
-<hr />
-@end html
-@heading @anchor{dos}DOS
-
-Please have a look at our @uref{binaries.html,,binaries page}.
-
-You cannot install GCC by itself on MSDOS; it will not compile under
-any MSDOS compiler except itself. You need to get the complete
-compilation package DJGPP, which includes binaries as well as sources,
-and includes all the necessary compilation tools and libraries.
-
-@html
-<hr />
-@end html
-@heading @anchor{dsp16xx}dsp16xx
-A port to the AT&T DSP1610 family of processors.
-
-@html
-<hr />
-@end html
-@heading @anchor{*-*-freebsd*}*-*-freebsd*
-
-The version of binutils installed in @file{/usr/bin} is known to work unless
-otherwise specified in any per-architecture notes. However, binutils
-2.12.1 or greater is known to improve overall testsuite results.
-
-For FreeBSD 1, FreeBSD 2 or any mutant a.out versions of FreeBSD 3: All
-configuration support and files as shipped with GCC 2.95 are still in
-place. FreeBSD 2.2.7 has been known to bootstrap completely; however,
-it is unknown which version of binutils was used (it is assumed that it
-was the system copy in @file{/usr/bin}) and C++ EH failures were noted.
-
-Support for FreeBSD 1 is obsoleted in GCC 3.1.
-
-For FreeBSD using the ELF file format: DWARF 2 debugging is now the
-default for all CPU architectures. It had been the default on
-FreeBSD/alpha since its inception. You may use @option{-gstabs} instead
-of @option{-g}, if you really want the old debugging format. There are
-no known issues with mixing object files and libraries with different
-debugging formats. Otherwise, this release of GCC should now match more
-of the configuration used in the stock FreeBSD configuration of GCC. In
-particular, @option{--enable-threads} is now configured by default.
-However, as a general user, do not attempt to replace the system
-compiler with this release. Known to bootstrap and check with good
-results on FreeBSD 3.0, 3.4, 4.0, 4.2, 4.3, 4.4, 4.5-STABLE and 5-CURRENT@.
-
-In principle, @option{--enable-threads} is now compatible with
-@option{--enable-libgcj} on FreeBSD@. However, it has only been built
-and tested on @samp{i386-*-freebsd4.5} and @samp{alpha-*-freebsd5.0}.
-The static
-library may be incorrectly built (symbols are missing at link time).
-There is a rare timing-based startup hang (probably involves an
-assupmtion about the thread library). Multi-threaded boehm-gc (required for
-libjava) exposes severe threaded signal-handling bugs on FreeBSD before
-4.5-RELEASE. The alpha port may not fully bootstrap without some manual
-intervention: @command{gcjh} will crash with a floating-point exception while
-generating @file{java/lang/Double.h} (just copy the version built on
-@samp{i386-*-freebsd*} and rerun the top-level @command{gmake} with no
-arguments and it
-should properly complete the bootstrap). Other CPU architectures
-supported by FreeBSD will require additional configuration tuning in, at
-the very least, both boehm-gc and libffi.
-
-Shared @file{libgcc_s.so} is now built and installed by default.
-
-@html
-<hr />
-@end html
-@heading @anchor{elxsi-elxsi-bsd}elxsi-elxsi-bsd
-The Elxsi's C compiler has known limitations that prevent it from
-compiling GCC@. Please contact @email{mrs@@wrs.com} for more details.
-
-Support for this processor is obsoleted in GCC 3.1.
-
-@html
-<hr />
-@end html
-@heading @anchor{h8300-hms}h8300-hms
-Hitachi H8/300 series of processors.
-
-Please have a look at our @uref{binaries.html,,binaries page}.
-
-The calling convention and structure layout has changed in release 2.6.
-All code must be recompiled. The calling convention now passes the
-first three arguments in function calls in registers. Structures are no
-longer a multiple of 2 bytes.
-
-@html
-<hr />
-@end html
-@heading @anchor{hppa*-hp-hpux*}hppa*-hp-hpux*
-
-We @emph{highly} recommend using gas/binutils 2.8 or newer on all hppa
-platforms; you may encounter a variety of problems when using the HP
-assembler. The HP assembler does not work with the @samp{hppa64-hp-hpux11*}
-port.
-
-Specifically, @option{-g} does not work on HP-UX (since that system
-uses a peculiar debugging format which GCC does not know about), unless you
-use GAS and GDB and configure GCC with the
-@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}} and
-@option{--with-as=@dots{}} options.
-
-If you wish to use the pa-risc 2.0 architecture support with a 32-bit
-runtime, you must use either the HP assembler, gas/binutils 2.11 or newer,
-or a recent
-@uref{ftp://sources.redhat.com/pub/binutils/snapshots,,snapshot of gas}.
-
-More specific information to @samp{hppa*-hp-hpux*} targets follows.
-
-@html
-<hr />
-@end html
-@heading @anchor{hppa*-hp-hpux9}hppa*-hp-hpux9
-
-The HP assembler has major problems on this platform. We've tried to work
-around the worst of the problems. However, those workarounds may be causing
-linker crashes in some circumstances; the workarounds also probably prevent
-shared libraries from working. Use the GNU assembler to avoid these problems.
-
-
-The configuration scripts for GCC will also trigger a bug in the hpux9
-shell. To avoid this problem set @env{CONFIG_SHELL} to @file{/bin/ksh}
-and @env{SHELL} to @file{/bin/ksh} in your environment.
-
-
-@html
-<hr />
-@end html
-@heading @anchor{hppa*-hp-hpux10}hppa*-hp-hpux10
-
-For hpux10.20, we @emph{highly} recommend you pick up the latest sed patch
-@code{PHCO_19798} from HP@. HP has two sites which provide patches free of
-charge:
-
-@itemize @bullet
-@item
-@html
-<a href="http://us-support.external.hp.com">US, Canada, Asia-Pacific, and
-Latin-America</a>
-@end html
-@ifnothtml
-@uref{http://us-support.external.hp.com,,}US, Canada, Asia-Pacific, and
-Latin-America
-@end ifnothtml
-@item
-@uref{http://europe-support.external.hp.com,,Europe}
-@end itemize
-
-The HP assembler on these systems is much better than the hpux9 assembler,
-but still has some problems. Most notably the assembler inserts timestamps
-into each object file it creates, causing the 3-stage comparison test to fail
-during a @samp{make bootstrap}. You should be able to continue by
-saying @samp{make all} after getting the failure from @samp{make
-bootstrap}.
-
-
-@html
-<hr />
-@end html
-@heading @anchor{hppa*-hp-hpux11}hppa*-hp-hpux11
-
-GCC 3.0 and up support HP-UX 11. On 64-bit capable systems, there
-are two distinct ports. The @samp{hppa2.0w-hp-hpux11*} port generates
-code for the 32-bit pa-risc runtime architecture. It uses the HP
-linker and is currently the default selected by config.guess. The
-optional @samp{hppa64-hp-hpux11*} port generates 64-bit code for the
-pa-risc 2.0 architecture. It must be explicitly selected using the
-@samp{--host=hppa64-hp-hpux11*} configure option. Different prefixes
-must be used if both ports are to be installed on the same system.
-
-You must use GNU binutils 2.11 or above with the 32-bit port. Thread
-support is not currently implemented, so @option{--enable-threads} does
-not work. See:
-
-@itemize
-@item @uref{http://gcc.gnu.org/ml/gcc-prs/2002-01/msg00551.html}
-@item @uref{http://gcc.gnu.org/ml/gcc-bugs/2002-01/msg00663.html}.
-@end itemize
-
-GCC 2.95.x is not supported under HP-UX 11 and cannot be used to
-compile GCC 3.0 and up. Refer to @uref{binaries.html,,binaries} for
-information about obtaining precompiled GCC binaries for HP-UX.
-
-GNU binutils 2.13 or later is recommended with the 64-bit port.
-The HP assembler is not supported. It is @emph{highly} recommended
-that the GNU linker be used as well. Either binutils must be built
-prior to gcc, or a binary distribution of gcc or binutils must be
-obtained for the initial builds. When starting with a HP compiler,
-it is preferable to use the ANSI compiler as the bundled compiler
-only supports traditional C. Bootstrapping with the bundled compiler
-is tested infrequently and problems often arise because of the subtle
-differences in semantics between traditional and ISO C. There also
-have been problems reported with various binary distributions. This
-port still is undergoing significant development.
-
-@html
-<hr />
-@end html
-@heading @anchor{i370-*-*}i370-*-*
-This port is very preliminary and has many known bugs. We hope to
-have a higher-quality port for this machine soon.
-
-@html
-<hr />
-@end html
-@heading @anchor{*-*-linux-gnu}*-*-linux-gnu
-
-If you use glibc 2.2 (or 2.1.9x), GCC 2.95.2 won't install
-out-of-the-box. You'll get compile errors while building @samp{libstdc++}.
-The patch @uref{glibc-2.2.patch,,glibc-2.2.patch}, that is to be
-applied in the GCC source tree, fixes the compatibility problems.
-
-@html
-@end html
-
-@html
-<p>
-@end html
-
-Currently Glibc 2.2.3 (and older releases) and GCC 3.0 are out of sync
-since the latest exception handling changes for GCC@. Compiling glibc
-with GCC 3.0 will give a binary incompatible glibc and therefore cause
-lots of problems and might make your system completly unusable. This
-will definitly need fixes in glibc but might also need fixes in GCC@. We
-strongly advise to wait for glibc 2.2.4 and to read the release notes of
-glibc 2.2.4 whether patches for GCC 3.0 are needed. You can use glibc
-2.2.3 with GCC 3.0, just do not try to recompile it.
-
-@html
-<hr />
-@end html
-@heading @anchor{ix86-*-linux*oldld}i?86-*-linux*oldld
-Use this configuration to generate @file{a.out} binaries on Linux-based
-GNU systems if you do not have gas/binutils version 2.5.2 or later
-installed.
-
-This configuration is obsoleted in GCC 3.1.
-
-@html
-<hr />
-@end html
-@heading @anchor{ix86-*-linux*aout}i?86-*-linux*aout
-Use this configuration to generate @file{a.out} binaries on Linux-based
-GNU systems. This configuration is being superseded. You must use
-gas/binutils version 2.5.2 or later.
-
-@html
-<hr />
-@end html
-@heading @anchor{ix86-*-linux*}i?86-*-linux*
-
-You will need binutils 2.9.1.0.15 or newer for exception handling to work.
-
-If you receive Signal 11 errors when building on GNU/Linux, then it is
-possible you have a hardware problem. Further information on this can be
-found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}.
-
-@html
-<hr />
-@end html
-@heading @anchor{ix86-*-sco}i?86-*-sco
-Compilation with RCC is recommended. Also, it may be a good idea to
-link with GNU malloc instead of the malloc that comes with the system.
-
-@html
-<hr />
-@end html
-@heading @anchor{ix86-*-sco3.2v4}i?86-*-sco3.2v4
-Use this configuration for SCO release 3.2 version 4.
-
-@html
-<hr />
-@end html
-@heading @anchor{ix86-*-sco3.2v5*}i?86-*-sco3.2v5*
-Use this for the SCO OpenServer Release 5 family of operating systems.
-
-Unlike earlier versions of GCC, the ability to generate COFF with this
-target is no longer provided.
-
-Earlier versions of GCC emitted DWARF 1 when generating ELF to allow
-the system debugger to be used. That support was too burdensome to
-maintain. GCC now emits only DWARF 2 for this target. This means you
-may use either the UDK debugger or GDB to debug programs built by this
-version of GCC@.
-
-Use of the @option{-march=pentiumpro} flag can result in
-unrecognized opcodes when using the native assembler on OS versions before
-5.0.6. (Support for P6 opcodes was added to the native ELF assembler in
-that version.) While it's rather rare to see these emitted by GCC yet,
-errors of the basic form:
-
-@example
- /usr/tmp/ccaNlqBc.s:22:unknown instruction: fcomip
- /usr/tmp/ccaNlqBc.s:50:unknown instruction: fucomip
-@end example
-
-are symptoms of this problem. You may work around this by not
-building affected files with that flag, by using the GNU assembler, or
-by using the assembler provided with the current version of the OS@.
-Users of GNU assembler should see the note below for hazards on doing
-so.
-
-The native SCO assembler that is provided with the OS at no
-charge is normally required. If, however, you must be able to use
-the GNU assembler (perhaps you're compiling code with asms that
-require GAS syntax) you may configure this package using the flags
-@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}}. You must
-use a recent version of GNU binutils; versions past 2.9.1 seem to work
-well.
-
-In general, the @option{--with-gnu-as} option isn't as well tested
-as the native assembler.
-
-Look in @file{gcc/config/i386/sco5.h} (search for ``messy'') for
-additional OpenServer-specific flags.
-
-Systems based on OpenServer before 5.0.4 (@samp{uname -X}
-will tell you what you're running) require TLS597 from
-@uref{ftp://ftp.sco.com/TLS/,,ftp://ftp.sco.com/TLS/}
-for C++ constructors and destructors to work right.
-
-The system linker in (at least) 5.0.4 and 5.0.5 will sometimes
-do the wrong thing for a construct that GCC will emit for PIC
-code. This can be seen as execution testsuite failures when using
-@option{-fPIC} on @file{921215-1.c}, @file{931002-1.c}, @file{nestfunc-1.c}, and @file{gcov-1.c}.
-For 5.0.5, an updated linker that will cure this problem is
-available. You must install both
-@uref{ftp://ftp.sco.com/Supplements/rs505a/,,ftp://ftp.sco.com/Supplements/rs505a/}
-and @uref{ftp://ftp.sco.com/SLS/,,OSS499A}.
-
-The dynamic linker in OpenServer 5.0.5 (earlier versions may show
-the same problem) aborts on certain G77-compiled programs. It's particularly
-likely to be triggered by building Fortran code with the @option{-fPIC} flag.
-Although it's conceivable that the error could be triggered by other
-code, only G77-compiled code has been observed to cause this abort.
-If you are getting core dumps immediately upon execution of your
-G77 program---and especially if it's compiled with @option{-fPIC}---try applying
-@uref{sco_osr5_g77.patch,,@file{sco_osr5_g77.patch}} to your @samp{libf2c} and
-rebuilding GCC@.
-Affected faults, when analyzed in a debugger, will show a stack
-backtrace with a fault occurring in @code{rtld()} and the program
-running as @file{/usr/lib/ld.so.1}. This problem has been reported to SCO
-engineering and will hopefully be addressed in later releases.
-
-
-@html
-<hr />
-@end html
-@heading @anchor{ix86-*-udk}i?86-*-udk
-
-This target emulates the SCO Universal Development Kit and requires that
-package be installed. (If it is installed, you will have a
-@file{/udk/usr/ccs/bin/cc} file present.) It's very much like the
-@samp{i?86-*-unixware7*} target
-but is meant to be used when hosting on a system where UDK isn't the
-default compiler such as OpenServer 5 or Unixware 2. This target will
-generate binaries that will run on OpenServer, Unixware 2, or Unixware 7,
-with the same warnings and caveats as the SCO UDK@.
-
-This target is a little tricky to build because we have to distinguish
-it from the native tools (so it gets headers, startups, and libraries
-from the right place) while making the tools not think we're actually
-building a cross compiler. The easiest way to do this is with a configure
-command like this:
-
-@example
- CC=/udk/usr/ccs/bin/cc @var{/your/path/to}/gcc/configure \
- --host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk-
-@end example
-
-@emph{You should substitute @samp{i686} in the above command with the appropriate
-processor for your host.}
-
-After the usual @samp{make bootstrap} and
-@samp{make install}, you can then access the UDK-targeted GCC
-tools by adding @command{udk-} before the commonly known name. For
-example, to invoke the C compiler, you would use @command{udk-gcc}.
-They will coexist peacefully with any native-target GCC tools you may
-have installed.
-
-
-@html
-<hr />
-@end html
-@heading @anchor{ix86-*-isc}i?86-*-isc
-This configuration is obsoleted in GCC 3.1.
-
-It may be a good idea to link with GNU malloc instead of the malloc that
-comes with the system.
-
-In ISC version 4.1, @command{sed} core dumps when building
-@file{deduced.h}. Use the version of @command{sed} from version 4.0.
-
-@html
-<hr />
-@end html
-@heading @anchor{ix86-ibm-aix}i?86-ibm-aix
-This configuration is obsoleted in GCC 3.1.
-
-You need to use GAS version 2.1 or later, and LD from
-GNU binutils version 2.2 or later.
-
-@html
-<hr />
-@end html
-@heading @anchor{ix86-sequent-bsd}i?86-sequent-bsd
-This configuration is obsoleted in GCC 3.1.
-
-Go to the Berkeley universe before compiling.
-
-@html
-<hr />
-@end html
-@heading @anchor{ix86-sequent-ptx1*}i?86-sequent-ptx1*, i?86-sequent-ptx2*, i?86-sequent-sysv3*
-This configuration is obsoleted in GCC 3.1.
-
-You must install GNU @command{sed} before running @command{configure}.
-
-The @code{fixproto} shell script may trigger a bug in the system shell.
-If you encounter this problem, upgrade your operating system or
-use @command{bash} (the GNU shell) to run @code{fixproto}.
-
-@html
-<hr />
-@end html
-@heading @anchor{i860-intel-osf*}i860-intel-osf*
-All support for the i860 processor is obsoleted in GCC 3.1.
-
-On the Intel Paragon (an i860 machine), if you are using operating
-system version 1.0, you will get warnings or errors about redefinition
-of @code{va_arg} when you build GCC@.
-
-If this happens, then you need to link most programs with the library
-@file{iclib.a}. You must also modify @file{stdio.h} as follows: before
-the lines
-
-@example
-#if defined(__i860__) && !defined(_VA_LIST)
-#include <va_list.h>
-@end example
-
-@noindent
-insert the line
-
-@example
-#if __PGC__
-@end example
-
-@noindent
-and after the lines
-
-@example
-extern int vprintf(const char *, va_list );
-extern int vsprintf(char *, const char *, va_list );
-#endif
-@end example
-
-@noindent
-insert the line
-
-@example
-#endif /* __PGC__ */
-@end example
-
-These problems don't exist in operating system version 1.1.
-
-@html
-<hr />
-@end html
-@heading @anchor{ia64-*-linux}ia64-*-linux
-IA-64 processor (also known as IPF, or Itanium Processor Family)
-running GNU/Linux.
-
-The toolchain is not completely finished, so requirements will continue
-to change.
-GCC 3.0.1 and later require glibc 2.2.4.
-GCC 3.0.2 requires binutils from 2001-09-05 or later.
-GCC 3.0.1 requires binutils 2.11.1 or later.
-
-None of the following versions of GCC has an ABI that is compatible
-with any of the other versions in this list, with the exception that
-Red Hat 2.96 and Trillian 000171 are compatible with each other:
-3.0.2, 3.0.1, 3.0, Red Hat 2.96, and Trillian 000717.
-This primarily affects C++ programs and programs that create shared libraries.
-Because of these ABI incompatibilities, GCC 3.0.2 is not recommended for
-user programs on GNU/Linux systems built using earlier compiler releases.
-GCC 3.0.2 is recommended for compiling linux, the kernel.
-GCC 3.0.2 is believed to be fully ABI compliant, and hence no more major
-ABI changes are expected.
-
-@html
-<hr />
-@end html
-@heading @anchor{*-lynx-lynxos}*-lynx-lynxos
-LynxOS 2.2 and earlier comes with GCC 1.x already installed as
-@file{/bin/gcc}. You should compile with this instead of @file{/bin/cc}.
-You can tell GCC to use the GNU assembler and linker, by specifying
-@samp{--with-gnu-as --with-gnu-ld} when configuring. These will produce
-COFF format object files and executables; otherwise GCC will use the
-installed tools, which produce @file{a.out} format executables.
-
-@html
-<hr />
-<!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
-@end html
-@heading @anchor{*-ibm-aix*}*-ibm-aix*
-
-AIX Make frequently has problems with GCC makefiles. GNU Make 3.76 or
-newer is recommended to build on this platform.
-
-Errors involving @code{alloca} when building GCC generally are due
-to an incorrect definition of @code{CC} in the Makefile or mixing files
-compiled with the native C compiler and GCC@. During the stage1 phase of
-the build, the native AIX compiler @strong{must} be invoked as @command{cc}
-(not @command{xlc}). Once @command{configure} has been informed of
-@command{xlc}, one needs to use @samp{make distclean} to remove the
-configure cache files and ensure that @env{CC} environment variable
-does not provide a definition that will confuse @command{configure}.
-If this error occurs during stage2 or later, then the problem most likely
-is the version of Make (see above).
-
-The GNU Assembler incorrectly reports that it supports WEAK symbols on
-AIX which causes GCC to try to utilize weak symbol functionality which
-is not really supported on the platform. The native @command{as} and
-@command{ld} still are recommended. The native AIX tools do
-interoperate with GCC@.
-
-Building @file{libstdc++.a} requires a fix for a AIX Assembler bug
-APAR IY26685 (AIX 4.3) or APAR IY25528 (AIX 5.1).
-
-@samp{libstdc++} in GCC 3.2 increments the major version number of the
-shared object and GCC installation places the @file{libstdc++.a}
-shared library in a common location which will overwrite the GCC 3.1
-version of the shared library. Applications either need to be
-re-linked against the new shared library or the GCC 3.1 version of the
-@samp{libstdc++} shared object needs to be available to the AIX
-runtime loader. The GCC 3.1 @samp{libstdc++.so.4} shared object can
-be installed for runtime dynamic loading using the following steps to
-set the @samp{F_LOADONLY} flag in the shared object for @emph{each}
-multilib @file{libstdc++.a} installed:
-
-Extract the shared object from each the GCC 3.1 @file{libstdc++.a}
-archive:
-@example
- % ar -x libstdc++.a libstdc++.so.4
-@end example
-
-Enable the @samp{F_LOADONLY} flag so that the shared object will be
-available for runtime dynamic loading, but not linking:
-@example
- % strip -e libstdc++.so.4
-@end example
-
-Archive the runtime-only shared object in the GCC 3.2
-@file{libstdc++.a} archive:
-@example
- % ar -q libstdc++.a libstdc++.so.4
-@end example
-
-Linking executables and shared libraries may produce warnings of
-duplicate symbols. The assembly files generated by GCC for AIX always
-have included multiple symbol definitions for certain global variable
-and function declarations in the original program. The warnings should
-not prevent the linker from producing a correct library or runnable
-executable.
-
-AIX 4.3 utilizes a ``large format'' archive to support both 32-bit and
-64-bit object modules. The routines provided in AIX 4.3.0 and AIX 4.3.1
-to parse archive libraries did not handle the new format correctly.
-These routines are used by GCC and result in error messages during
-linking such as ``not a COFF file''. The version of the routines shipped
-with AIX 4.3.1 should work for a 32-bit environment. The @option{-g}
-option of the archive command may be used to create archives of 32-bit
-objects using the original ``small format''. A correct version of the
-routines is shipped with AIX 4.3.2 and above.
-
-Some versions of the AIX binder (linker) can fail with a relocation
-overflow severe error when the @option{-bbigtoc} option is used to link
-GCC-produced object files into an executable that overflows the TOC@. A fix
-for APAR IX75823 (OVERFLOW DURING LINK WHEN USING GCC AND -BBIGTOC) is
-available from IBM Customer Support and from its
-@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
-website as PTF U455193.
-
-The AIX 4.3.2.1 linker (bos.rte.bind_cmds Level 4.3.2.1) will dump core
-with a segmentation fault when invoked by any version of GCC@. A fix for
-APAR IX87327 is available from IBM Customer Support and from its
-@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
-website as PTF U461879. This fix is incorporated in AIX 4.3.3 and above.
-
-The initial assembler shipped with AIX 4.3.0 generates incorrect object
-files. A fix for APAR IX74254 (64BIT DISASSEMBLED OUTPUT FROM COMPILER FAILS
-TO ASSEMBLE/BIND) is available from IBM Customer Support and from its
-@uref{http://techsupport.services.ibm.com/,,techsupport.services.ibm.com}
-website as PTF U453956. This fix is incorporated in AIX 4.3.1 and above.
-
-AIX provides National Language Support (NLS)@. Compilers and assemblers
-use NLS to support locale-specific representations of various data
-formats including floating-point numbers (e.g., @samp{.} vs @samp{,} for
-separating decimal fractions). There have been problems reported where
-GCC does not produce the same floating-point formats that the assembler
-expects. If one encounters this problem, set the @env{LANG}
-environment variable to @samp{C} or @samp{En_US}.
-
-By default, GCC for AIX 4.1 and above produces code that can be used on
-both Power or PowerPC processors.
-
-A default can be specified with the @option{-mcpu=@var{cpu_type}}
-switch and using the configure option @option{--with-cpu-@var{cpu_type}}.
-
-@html
-<hr />
-@end html
-@heading @anchor{m32r-*-elf}m32r-*-elf
-Mitsubishi M32R processor.
-This configuration is intended for embedded systems.
-
-@html
-<hr />
-@end html
-@heading @anchor{m68000-hp-bsd}m68000-hp-bsd
-HP 9000 series 200 running BSD@. Note that the C compiler that comes
-with this system cannot compile GCC; contact @email{law@@cygnus.com}
-to get binaries of GCC for bootstrapping.
-
-@html
-<hr />
-@end html
-@heading @anchor{m6811-elf}m6811-elf
-Motorola 68HC11 family micro controllers. These are used in embedded
-applications. There are no standard Unix configurations.
-
-@html
-<hr />
-@end html
-@heading @anchor{m6812-elf}m6812-elf
-Motorola 68HC12 family micro controllers. These are used in embedded
-applications. There are no standard Unix configurations.
-
-@html
-<hr />
-@end html
-@heading @anchor{m68k-altos}m68k-altos
-Altos 3068. This configuration is obsoleted in GCC 3.1.
-
-You must use the GNU assembler, linker and debugger.
-Also, you must fix a kernel bug.
-
-@html
-<hr />
-@end html
-@heading @anchor{m68k-apple-aux}m68k-apple-aux
-Apple Macintosh running A/UX@.
-This configuration is obsoleted in GCC 3.1.
-
-You may configure GCC to use either the system assembler and
-linker or the GNU assembler and linker. You should use the GNU configuration
-if you can, especially if you also want to use G++. You enable
-that configuration with the @option{--with-gnu-as} and @option{--with-gnu-ld}
-options to @code{configure}.
-
-Note the C compiler that comes
-with this system cannot compile GCC@. You can find binaries of GCC
-for bootstrapping on @code{jagubox.gsfc.nasa.gov}.
-You will also a patched version of @file{/bin/ld} there that
-raises some of the arbitrary limits found in the original.
-
-@html
-<hr />
-@end html
-@heading @anchor{m68k-att-sysv}m68k-att-sysv
-AT&T 3b1, a.k.a.@: 7300 PC@. This version of GCC cannot
-be compiled with the system C compiler, which is too buggy.
-You will need to get a previous version of GCC and use it to
-bootstrap. Binaries are available from the OSU-CIS archive, at
-@uref{ftp://archive.cis.ohio-state.edu/pub/att7300/}.
-
-@html
-<hr />
-@end html
-@heading @anchor{m68k-bull-sysv}m68k-bull-sysv
-Bull DPX/2 series 200 and 300 with BOS-2.00.45 up to BOS-2.01.
-This configuration is obsoleted in GCC 3.1.
-
-GCC works
-either with native assembler or GNU assembler. You can use
-GNU assembler with native COFF generation by providing @option{--with-gnu-as} to
-the configure script or use GNU assembler with stabs-in-COFF encapsulation
-by providing @samp{--with-gnu-as --stabs}. For any problem with the native
-assembler or for availability of the DPX/2 port of GAS, contact
-@email{F.Pierresteguy@@frcl.bull.fr}.
-
-@html
-<hr />
-@end html
-@heading @anchor{m68k-crds-unos}m68k-crds-unos
-Use @samp{configure unos} for building on Unos.
-
-The Unos assembler is named @code{casm} instead of @code{as}. For some
-strange reason linking @file{/bin/as} to @file{/bin/casm} changes the
-behavior, and does not work. So, when installing GCC, you should
-install the following script as @file{as} in the subdirectory where
-the passes of GCC are installed:
-
-@example
-#!/bin/sh
-casm $*
-@end example
-
-The default Unos library is named @file{libunos.a} instead of
-@file{libc.a}. To allow GCC to function, either change all
-references to @option{-lc} in @file{gcc.c} to @option{-lunos} or link
-@file{/lib/libc.a} to @file{/lib/libunos.a}.
-
-@cindex @code{alloca}, for Unos
-When compiling GCC with the standard compiler, to overcome bugs in
-the support of @code{alloca}, do not use @option{-O} when making stage 2.
-Then use the stage 2 compiler with @option{-O} to make the stage 3
-compiler. This compiler will have the same characteristics as the usual
-stage 2 compiler on other systems. Use it to make a stage 4 compiler
-and compare that with stage 3 to verify proper compilation.
-
-(Perhaps simply defining @code{ALLOCA} in @file{x-crds} as described in
-the comments there will make the above paragraph superfluous. Please
-inform us of whether this works.)
-
-Unos uses memory segmentation instead of demand paging, so you will need
-a lot of memory. 5 Mb is barely enough if no other tasks are running.
-If linking @file{cc1} fails, try putting the object files into a library
-and linking from that library.
-
-@html
-<hr />
-@end html
-@heading @anchor{m68k-hp-hpux}m68k-hp-hpux
-HP 9000 series 300 or 400 running HP-UX@. HP-UX version 8.0 has a bug in
-the assembler that prevents compilation of GCC@. This
-bug manifests itself during the first stage of compilation, while
-building @file{libgcc2.a}:
-
-@smallexample
-_floatdisf
-cc1: warning: `-g' option not supported on this version of GCC
-cc1: warning: `-g1' option not supported on this version of GCC
-./xgcc: Internal compiler error: program as got fatal signal 11
-@end smallexample
-
-A patched version of the assembler is available as the file
-@uref{ftp://altdorf.ai.mit.edu/archive/cph/hpux-8.0-assembler}. If you
-have HP software support, the patch can also be obtained directly from
-HP, as described in the following note:
-
-@quotation
-This is the patched assembler, to patch SR#1653-010439, where the
-assembler aborts on floating point constants.
-
-The bug is not really in the assembler, but in the shared library
-version of the function ``cvtnum(3c)''. The bug on ``cvtnum(3c)'' is
-SR#4701-078451. Anyway, the attached assembler uses the archive
-library version of ``cvtnum(3c)'' and thus does not exhibit the bug.
-@end quotation
-
-This patch is also known as PHCO_4484.
-
-In addition, if you wish to use gas, you must use
-gas version 2.1 or later, and you must use the GNU linker version 2.1 or
-later. Earlier versions of gas relied upon a program which converted the
-gas output into the native HP-UX format, but that program has not been
-kept up to date. gdb does not understand that native HP-UX format, so
-you must use gas if you wish to use gdb.
-
-On HP-UX version 8.05, but not on 8.07 or more recent versions, the
-@code{fixproto} shell script triggers a bug in the system shell. If you
-encounter this problem, upgrade your operating system or use BASH (the
-GNU shell) to run @code{fixproto}. This bug will cause the fixproto
-program to report an error of the form:
-
-@example
-./fixproto: sh internal 1K buffer overflow
-@end example
-
-To fix this, you can also change the first line of the fixproto script
-to look like:
-
-@example
-#!/bin/ksh
-@end example
-
-
-@html
-<hr />
-@end html
-@heading @anchor{m68k-*-nextstep*}m68k-*-nextstep*
-These configurations are obsoleted in GCC 3.1.
-
-Current GCC versions probably do not work on version 2 of the NeXT
-operating system.
-
-On NeXTStep 3.0, the Objective-C compiler does not work, due,
-apparently, to a kernel bug that it happens to trigger. This problem
-does not happen on 3.1.
-
-You absolutely @strong{must} use GNU sed and GNU make on this platform.
-
-
-On NeXTSTEP 3.x where x < 3 the build of GCC will abort during
-stage1 with an error message like this:
-
-@example
- _eh
- /usr/tmp/ccbbsZ0U.s:987:Unknown pseudo-op: .section
- /usr/tmp/ccbbsZ0U.s:987:Rest of line ignored. 1st junk character
- valued 95 (_).
-@end example
-
-The reason for this is the fact that NeXT's assembler for these
-versions of the operating system does not support the @samp{.section}
-pseudo op that's needed for full C++ exception functionality.
-
-As NeXT's assembler is a derived work from GNU as, a free
-replacement that does can be obtained at
-@uref{ftp://ftp.next.peak.org:/next-ftp/next/apps/devtools/as.3.3.NIHS.s.tar.gz,,ftp://ftp.next.peak.org:/next-ftp/next/apps/devtools/as.3.3.NIHS.s.tar.gz}.
-
-If you try to build the integrated C++ & C++ runtime libraries on this system
-you will run into trouble with include files. The way to get around this is
-to use the following sequence. Note you must have write permission to
-the directory @var{prefix} you specified in the configuration process of GCC
-for this sequence to work.
-
-@example
- cd bld-gcc
- make all-texinfo all-bison all-byacc all-binutils all-gas all-ld
- cd gcc
- make bootstrap
- make install-headers-tar
- cd ..
- make bootstrap3
-@end example
-
-@html
-<hr />
-@end html
-@heading @anchor{m68k-ncr-*}m68k-ncr-*
-On the Tower models 4@var{n}0 and 6@var{n}0, by default a process is not
-allowed to have more than one megabyte of memory. GCC cannot compile
-itself (or many other programs) with @option{-O} in that much memory.
-
-To solve this problem, reconfigure the kernel adding the following line
-to the configuration file:
-
-@smallexample
-MAXUMEM = 4096
-@end smallexample
-
-
-@html
-<hr />
-@end html
-@heading @anchor{m68k-sun}m68k-sun
-Sun 3. We do not provide a configuration file to use the Sun FPA by
-default, because programs that establish signal handlers for floating
-point traps inherently cannot work with the FPA@.
-
-@html
-<hr />
-@end html
-@heading @anchor{m68k-sun-sunos4.1.1}m68k-sun-sunos4.1.1
-
-It is reported that you may need the GNU assembler on this platform.
-
-
-@html
-<hr />
-@end html
-@heading @anchor{m88k-*-svr3}m88k-*-svr3
-Motorola m88k running the AT&T/Unisoft/Motorola V.3 reference port.
-These configurations are obsoleted in GCC 3.1.
-
-These systems tend to use the Green Hills C, revision 1.8.5, as the
-standard C compiler. There are apparently bugs in this compiler that
-result in object files differences between stage 2 and stage 3. If this
-happens, make the stage 4 compiler and compare it to the stage 3
-compiler. If the stage 3 and stage 4 object files are identical, this
-suggests you encountered a problem with the standard C compiler; the
-stage 3 and 4 compilers may be usable.
-
-It is best, however, to use an older version of GCC for bootstrapping
-if you have one.
-
-@html
-<hr />
-@end html
-@heading @anchor{m88k-*-dgux}m88k-*-dgux
-Motorola m88k running DG/UX@.
-These configurations are obsoleted in GCC 3.1.
-
-To build 88open BCS native or cross
-compilers on DG/UX, specify the configuration name as
-@samp{m88k-*-dguxbcs} and build in the 88open BCS software development
-environment. To build ELF native or cross compilers on DG/UX, specify
-@samp{m88k-*-dgux} and build in the DG/UX ELF development environment.
-You set the software development environment by issuing
-@samp{sde-target} command and specifying either @samp{m88kbcs} or
-@samp{m88kdguxelf} as the operand.
-
-If you do not specify a configuration name, @file{configure} guesses the
-configuration based on the current software development environment.
-
-@html
-<hr />
-@end html
-@heading @anchor{m88k-tektronix-sysv3}m88k-tektronix-sysv3
-Tektronix XD88 running UTekV 3.2e.
-These configurations are obsoleted in GCC 3.1.
-
-Do not turn on
-optimization while building stage1 if you bootstrap with
-the buggy Green Hills compiler. Also, the bundled LAI
-System V NFS is buggy so if you build in an NFS mounted
-directory, start from a fresh reboot, or avoid NFS all together.
-Otherwise you may have trouble getting clean comparisons
-between stages.
-
-@html
-<hr />
-@end html
-@heading @anchor{mips-*-*}mips-*-*
-If you use the 1.31 version of the MIPS assembler (such as was shipped
-with Ultrix 3.1), you will need to use the @option{-fno-delayed-branch} switch
-when optimizing floating point code. Otherwise, the assembler will
-complain when the GCC compiler fills a branch delay slot with a
-floating point instruction, such as @code{add.d}.
-
-If on a MIPS system you get an error message saying ``does not have gp
-sections for all it's [sic] sectons [sic]'', don't worry about it. This
-happens whenever you use GAS with the MIPS linker, but there is not
-really anything wrong, and it is okay to use the output file. You can
-stop such warnings by installing the GNU linker.
-
-It would be nice to extend GAS to produce the gp tables, but they are
-optional, and there should not be a warning about their absence.
-
-Users have reported some problems with version 2.0 of the MIPS
-compiler tools that were shipped with Ultrix 4.1. Version 2.10
-which came with Ultrix 4.2 seems to work fine.
-
-Users have also reported some problems with version 2.20 of the
-MIPS compiler tools that were shipped with RISC/os 4.x. The earlier
-version 2.11 seems to work fine.
-
-Some versions of the MIPS linker will issue an assertion failure
-when linking code that uses @code{alloca} against shared
-libraries on RISC-OS 5.0, and DEC's OSF/1 systems. This is a bug
-in the linker, that is supposed to be fixed in future revisions.
-To protect against this, GCC passes @option{-non_shared} to the
-linker unless you pass an explicit @option{-shared} or
-@option{-call_shared} switch.
-
-@heading @anchor{mips-mips-bsd}mips-mips-bsd
-MIPS machines running the MIPS operating system in BSD mode.
-These configurations are obsoleted in GCC 3.1.
-
-It's possible that some old versions of the system lack the functions
-@code{memcpy}, @code{memmove}, @code{memcmp}, and @code{memset}. If your
-system lacks these, you must remove or undo the definition of
-@code{TARGET_MEM_FUNCTIONS} in @file{mips-bsd.h}.
-
-If you use the MIPS C compiler to bootstrap, it may be necessary
-to increase its table size for switch statements with the
-@option{-Wf,-XNg1500} option. If you use the @option{-O2}
-optimization option, you also need to use @option{-Olimit 3000}.
-Both of these options are automatically generated in the
-@file{Makefile} that the shell script @file{configure} builds.
-If you override the @code{CC} make variable and use the MIPS
-compilers, you may need to add @option{-Wf,-XNg1500 -Olimit 3000}.
-
-@html
-<hr />
-@end html
-@heading @anchor{mips-dec-*}mips-dec-*
-These configurations are obsoleted in GCC 3.1.
-
-MIPS-based DECstations can support three different personalities:
-Ultrix, DEC OSF/1, and OSF/rose. (Alpha-based DECstation products have
-a configuration name beginning with @samp{alpha*-dec}.) To configure GCC
-for these platforms use the following configurations:
-
-@table @samp
-@item mips-dec-ultrix
-Ultrix configuration.
-
-@item mips-dec-osf1
-DEC's version of OSF/1.
-
-@item mips-dec-osfrose
-Open Software Foundation reference port of OSF/1 which uses the
-OSF/rose object file format instead of ECOFF@. Normally, you
-would not select this configuration.
-@end table
-
-If you use the MIPS C compiler to bootstrap, it may be necessary
-to increase its table size for switch statements with the
-@option{-Wf,-XNg1500} option. If you use the @option{-O2}
-optimization option, you also need to use @option{-Olimit 3000}.
-Both of these options are automatically generated in the
-@file{Makefile} that the shell script @file{configure} builds.
-If you override the @code{CC} make variable and use the MIPS
-compilers, you may need to add @option{-Wf,-XNg1500 -Olimit 3000}.
-
-@html
-<hr />
-@end html
-@heading @anchor{mips-mips-riscos*}mips-mips-riscos*
-These configurations are obsoleted in GCC 3.1.
-
-If you use the MIPS C compiler to bootstrap, it may be necessary
-to increase its table size for switch statements with the
-@option{-Wf,-XNg1500} option. If you use the @option{-O2}
-optimization option, you also need to use @option{-Olimit 3000}.
-Both of these options are automatically generated in the
-@file{Makefile} that the shell script @file{configure} builds.
-If you override the @code{CC} make variable and use the MIPS
-compilers, you may need to add @samp{-Wf,-XNg1500 -Olimit 3000}.
-
-MIPS computers running RISC-OS can support four different
-personalities: default, BSD 4.3, System V.3, and System V.4
-(older versions of RISC-OS don't support V.4). To configure GCC
-for these platforms use the following configurations:
-
-@table @samp
-@item mips-mips-riscos@var{rev}
-Default configuration for RISC-OS, revision @var{rev}.
-
-@item mips-mips-riscos@var{rev}bsd
-BSD 4.3 configuration for RISC-OS, revision @var{rev}.
-
-@item mips-mips-riscos@var{rev}sysv4
-System V.4 configuration for RISC-OS, revision @var{rev}.
-
-@html
-<hr />
-@end html
-@item mips-mips-riscos@var{rev}sysv
-System V.3 configuration for RISC-OS, revision @var{rev}.
-@end table
-
-The revision @code{rev} mentioned above is the revision of
-RISC-OS to use. You must reconfigure GCC when going from a
-RISC-OS revision 4 to RISC-OS revision 5. This has the effect of
-avoiding a linker bug.
-
-@html
-<hr />
-@end html
-@heading @anchor{mips-sgi-irix4}mips-sgi-irix4
-This configuration is obsoleted in GCC 3.1.
-
-In order to compile GCC on an SGI running IRIX 4, the ``c.hdr.lib''
-option must be installed from the CD-ROM supplied from Silicon Graphics.
-This is found on the 2nd CD in release 4.0.1.
-
-On IRIX version 4.0.5F, and perhaps on some other versions as well,
-there is an assembler bug that reorders instructions incorrectly. To
-work around it, specify the target configuration
-@samp{mips-sgi-irix4loser}. This configuration inhibits assembler
-optimization.
-
-In a compiler configured with target @samp{mips-sgi-irix4}, you can turn
-off assembler optimization by using the @option{-noasmopt} option. This
-compiler option passes the option @option{-O0} to the assembler, to
-inhibit reordering.
-
-The @option{-noasmopt} option can be useful for testing whether a problem
-is due to erroneous assembler reordering. Even if a problem does not go
-away with @option{-noasmopt}, it may still be due to assembler
-reordering---perhaps GCC itself was miscompiled as a result.
-
-You may get the following warning on IRIX 4 platforms, it can be safely
-ignored.
-@example
- warning: foo.o does not have gp tables for all its sections.
-@end example
-
-@html
-<hr />
-@end html
-@heading @anchor{mips-sgi-irix5}mips-sgi-irix5
-
-This configuration has considerable problems, which will be fixed in a
-future release.
-
-In order to compile GCC on an SGI running IRIX 5, the ``compiler_dev.hdr''
-subsystem must be installed from the IDO CD-ROM supplied by Silicon
-Graphics. It is also available for download from
-@uref{http://www.sgi.com/developers/devtools/apis/ido.html,,http://www.sgi.com/developers/devtools/apis/ido.html}.
-
-@code{make compare} may fail on version 5 of IRIX unless you add
-@option{-save-temps} to @code{CFLAGS}. On these systems, the name of the
-assembler input file is stored in the object file, and that makes
-comparison fail if it differs between the @code{stage1} and
-@code{stage2} compilations. The option @option{-save-temps} forces a
-fixed name to be used for the assembler input file, instead of a
-randomly chosen name in @file{/tmp}. Do not add @option{-save-temps}
-unless the comparisons fail without that option. If you do you
-@option{-save-temps}, you will have to manually delete the @samp{.i} and
-@samp{.s} files after each series of compilations.
-
-If you use the MIPS C compiler to bootstrap, it may be necessary
-to increase its table size for switch statements with the
-@option{-Wf,-XNg1500} option. If you use the @option{-O2}
-optimization option, you also need to use @option{-Olimit 3000}.
-
-To enable debugging under IRIX 5, you must use GNU @command{as} 2.11.2
-or later,
-and use the @option{--with-gnu-as} configure option when configuring GCC.
-GNU @command{as} is distributed as part of the binutils package.
-When using release 2.11.2, you need to apply a patch
-@uref{http://sources.redhat.com/ml/binutils/2001-07/msg00352.html,,http://sources.redhat.com/ml/binutils/2001-07/msg00352.html}
-which will be included in the next release of binutils.
-
-When building GCC, the build process loops rebuilding @command{cc1} over
-and over again. This happens on @samp{mips-sgi-irix5.2}, and possibly
-other platforms. It has been reported that this is a known bug in the
-@command{make} shipped with IRIX 5.2. We recommend you use GNU
-@command{make} instead of the vendor supplied @command{make} program;
-however, you may have success with @command{smake} on IRIX 5.2 if you do
-not have GNU @command{make} available.
-
-@html
-<hr />
-@end html
-@heading @anchor{mips-sgi-irix6}mips-sgi-irix6
-
-If you are using IRIX @command{cc} as your bootstrap compiler, you must
-ensure that the N32 ABI is in use. To test this, compile a simple C
-file with @command{cc} and then run @command{file} on the
-resulting object file. The output should look like:
-
-@example
-test.o: ELF N32 MSB @dots{}
-@end example
-
-If you see:
-
-@example
-test.o: ELF 32-bit MSB @dots{}
-@end example
-
-or
-
-@example
-test.o: ELF 64-bit MSB @dots{}
-@end example
-
-then your version of @command{cc} uses the O32 or N64 ABI by default. You
-should set the environment variable @env{CC} to @samp{cc -n32}
-before configuring GCC@.
-
-If you want the resulting @command{gcc} to run on old 32-bit systems
-with the MIPS R4400 CPU, you need to ensure that only code for the mips3
-instruction set architecture (ISA) is generated. While GCC 3.x does
-this correctly, both GCC 2.95 and SGI's MIPSpro @command{cc} may change
-the ISA depending on the machine where GCC is built. Using one of them
-as the bootstrap compiler may result in mips4 code, which won't run at
-all on mips3-only systems. For the test program above, you should see:
-
-@example
-test.o: ELF N32 MSB mips-3 @dots{}
-@end example
-
-If you get:
-
-@example
-test.o: ELF N32 MSB mips-4 @dots{}
-@end example
-
-instead, you should set the environment variable @env{CC} to @samp{cc
--n32 -mips3} or @samp{gcc -mips3} respectively before configuring GCC@.
-
-GCC on IRIX 6 is usually built to support both the N32 and N64 ABIs. If
-you build GCC on a system that doesn't have the N64 libraries installed,
-you need to configure with @option{--disable-multilib} so GCC doesn't
-try to use them. Look for @file{/usr/lib64/libc.so.1} to see if you
-have the 64-bit libraries installed.
-
-You must @emph{not} use GNU @command{as} (which isn't built anyway as of
-binutils 2.11.2) on IRIX 6 platforms; doing so will only cause problems.
-
-GCC does not currently support generating O32 ABI binaries in the
-@samp{mips-sgi-irix6} configurations. It is possible to create a GCC
-with O32 ABI only support by configuring it for the @samp{mips-sgi-irix5}
-target and using a patched GNU @command{as} 2.11.2 as documented in the
-@uref{#mips-sgi-irix5,,@samp{mips-sgi-irix5}} section above. Using the
-native assembler requires patches to GCC which will be included in a
-future release. It is
-expected that O32 ABI support will be available again in a future release.
-
-The @option{--enable-threads} option doesn't currently work, a patch is
-in preparation for a future release. The @option{--enable-libgcj}
-option is disabled by default: IRIX 6 uses a very low default limit
-(20480) for the command line length. Although libtool contains a
-workaround for this problem, at least the N64 @samp{libgcj} is known not
-to build despite this, running into an internal error of the native
-@command{ld}. A sure fix is to increase this limit (@samp{ncargs}) to
-its maximum of 262144 bytes. If you have root access, you can use the
-@command{systune} command to do this.
-
-GCC does not correctly pass/return structures which are
-smaller than 16 bytes and which are not 8 bytes. The problem is very
-involved and difficult to fix. It affects a number of other targets also,
-but IRIX 6 is affected the most, because it is a 64-bit target, and 4 byte
-structures are common. The exact problem is that structures are being padded
-at the wrong end, e.g.@: a 4 byte structure is loaded into the lower 4 bytes
-of the register when it should be loaded into the upper 4 bytes of the
-register.
-
-GCC is consistent with itself, but not consistent with the SGI C compiler
-(and the SGI supplied runtime libraries), so the only failures that can
-happen are when there are library functions that take/return such
-structures. There are very few such library functions. Currently this
-is known to affect @code{inet_ntoa}, @code{inet_lnaof},
-@code{inet_netof}, @code{inet_makeaddr}, and @code{semctl}. Until the
-bug is fixed, GCC contains workarounds for the known affected functions.
-
-See @uref{http://freeware.sgi.com/,,http://freeware.sgi.com/} for more
-information about using GCC on IRIX platforms.
-
-@html
-<hr />
-@end html
-@heading @anchor{mips-sony-sysv}mips-sony-sysv
-Sony MIPS NEWS@. This configuration is obsoleted in GCC 3.1.
-
-This works in NEWSOS 5.0.1, but not in 5.0.2 (which uses ELF instead of
-COFF)@. In particular, the linker does not like the code generated by
-GCC when shared libraries are linked in.
-
-@html
-<hr />
-@end html
-@heading @anchor{ns32k-encore}ns32k-encore
-This configuration is obsoleted in GCC 3.1.
-
-Encore ns32000 system. Encore systems are supported only under BSD@.
-
-@html
-<hr />
-@end html
-@heading @anchor{ns32k-*-genix}ns32k-*-genix
-National Semiconductor ns32000 system. This configuration is obsoleted
-in GCC 3.1.
-
-Genix has bugs in @code{alloca} and @code{malloc}; you must get the
-compiled versions of these from GNU Emacs.
-
-@html
-<hr />
-@end html
-@heading @anchor{ns32k-sequent}ns32k-sequent
-This configuration is obsoleted in GCC 3.1.
-
-Go to the Berkeley universe before compiling.
-
-@html
-<hr />
-@end html
-@heading @anchor{ns32k-utek}ns32k-utek
-UTEK ns32000 system (``merlin''). This configuration is obsoleted in
-GCC 3.1.
-
-The C compiler that comes with this system cannot compile GCC; contact
-@samp{tektronix!reed!mason} to get binaries of GCC for bootstrapping.
-
-
-@html
-<hr />
-@end html
-@heading @anchor{powerpc*-*-*}powerpc-*-*
-
-You can specify a default version for the @option{-mcpu=@var{cpu_type}}
-switch by using the configure option @option{--with-cpu-@var{cpu_type}}.
-
-@html
-<hr />
-@end html
-@heading @anchor{powerpc-*-darwin*}powerpc-*-darwin*
-PowerPC running Darwin (Mac OS X kernel).
-
-GCC 3.0 does not support Darwin, but 3.1 and later releases will work.
-
-Pre-installed versions of Mac OS X may not include any developer tools,
-meaning that you will not be able to build GCC from source. Tool
-binaries are available at
-@uref{http://www.opensource.apple.com/projects/darwin} (free
-registration required).
-
-Versions of the assembler prior to ``cctools-364'' cannot handle the
-4-argument form of @code{rlwinm} and related mask-using instructions. Darwin
-1.3 (Mac OS X 10.0) uses cctools-353 for instance. To get cctools-364,
-check out @file{cctools} with tag @samp{Apple-364}, build it, and
-install the assembler as @file{usr/bin/as}. See
-@uref{http://www.opensource.apple.com/tools/cvs/docs.html} for details.
-
-Also, the default stack limit of 512K is too small, and a bootstrap will
-typically fail when self-compiling @file{expr.c}. Set the stack to 800K
-or more, for instance by doing @samp{limit stack 800}. It's also
-convenient to use the GNU preprocessor instead of Apple's during the
-first stage of bootstrapping; this is automatic when doing @samp{make
-bootstrap}, but to do it from the toplevel objdir you will need to say
-@samp{make CC='cc -no-cpp-precomp' bootstrap}.
-
-Note that the version of GCC shipped by Apple typically includes a
-number of extensions not available in a standard GCC release. These
-extensions are generally specific to Mac programming.
-
-@html
-<hr />
-@end html
-@heading @anchor{powerpc-*-elf}powerpc-*-elf, powerpc-*-sysv4
-PowerPC system in big endian mode, running System V.4.
-
-@html
-<hr />
-@end html
-@heading @anchor{powerpc-*-linux-gnu*}powerpc-*-linux-gnu*
-
-You will need
-@uref{ftp://ftp.kernel.org/pub/linux/devel/binutils,,binutils 2.13.90.0.10}
-or newer for a working GCC@.
-
-@html
-<hr />
-@end html
-@heading @anchor{powerpc-*-netbsd*}powerpc-*-netbsd*
-PowerPC system in big endian mode running NetBSD@. To build the
-documentation you will need Texinfo version 4.1 (NetBSD 1.5.1 included
-Texinfo version 3.12).
-
-@html
-<hr />
-@end html
-@heading @anchor{powerpc-*-eabiaix}powerpc-*-eabiaix
-Embedded PowerPC system in big endian mode with @option{-mcall-aix} selected as
-the default.
-
-@html
-<hr />
-@end html
-@heading @anchor{powerpc-*-eabisim}powerpc-*-eabisim
-Embedded PowerPC system in big endian mode for use in running under the
-PSIM simulator.
-
-@html
-<hr />
-@end html
-@heading @anchor{powerpc-*-eabi}powerpc-*-eabi
-Embedded PowerPC system in big endian mode.
-
-@html
-<hr />
-@end html
-@heading @anchor{powerpcle-*-elf}powerpcle-*-elf, powerpcle-*-sysv4
-PowerPC system in little endian mode, running System V.4.
-
-@html
-<hr />
-@end html
-@heading @anchor{powerpcle-*-eabisim}powerpcle-*-eabisim
-Embedded PowerPC system in little endian mode for use in running under
-the PSIM simulator.
-
-@html
-<hr />
-@end html
-@heading @anchor{powerpcle-*-eabi}powerpcle-*-eabi
-Embedded PowerPC system in little endian mode.
-
-@html
-<hr />
-@end html
-@heading @anchor{powerpcle-*-winnt}powerpcle-*-winnt, powerpcle-*-pe
-PowerPC system in little endian mode running Windows NT@.
-
-@html
-<hr />
-@end html
-@heading @anchor{romp-*-aos}romp-*-aos, romp-*-mach
-These configurations are obsoleted in GCC 3.1.
-
-We recommend you compile GCC with an earlier version of itself; if you
-compile GCC with @command{hc}, the Metaware compiler, it will work, but
-you will get mismatches between the stage 2 and stage 3 compilers in
-various files. These errors are minor differences in some
-floating-point constants and can be safely ignored; the stage 3 compiler
-is correct.
-
-@html
-<hr />
-@end html
-@heading @anchor{s390-*-linux*}s390-*-linux*
-S/390 system running Linux for S/390@.
-
-@html
-<hr />
-@end html
-@heading @anchor{s390x-*-linux*}s390x-*-linux*
-zSeries system (64-bit) running Linux for zSeries@.
-
-@html
-<hr />
-@end html
-@c Please use Solaris 2 to refer to all release of Solaris, starting
-@c with 2.0 until 2.6, 7, and 8. Solaris 1 was a marketing name for
-@c SunOS 4 releases which we don't use to avoid confusion. Solaris
-@c alone is too unspecific and must be avoided.
-@heading @anchor{*-*-solaris2*}*-*-solaris2*
-
-Sun does not ship a C compiler with Solaris 2. To bootstrap and install
-GCC you first have to install a pre-built compiler, see our
-@uref{binaries.html,,binaries page} for details.
-
-The Solaris 2 @command{/bin/sh} will often fail to configure
-@file{libstdc++-v3}, @file{boehm-gc} or
-@file{libjava}. If you encounter this problem, set @env{CONFIG_SHELL} to
-@command{/bin/ksh} in your environment before running @command{configure}.
-
-Solaris 2 comes with a number of optional OS packages. Some of these
-packages are needed to use GCC fully, namely @code{SUNWarc},
-@code{SUNWbtool}, @code{SUNWesu}, @code{SUNWhea}, @code{SUNWlibm},
-@code{SUNWsprot}, and @code{SUNWtoo}. If you did not install all
-optional packages when installing Solaris 2, you will need to verify that
-the packages that GCC needs are installed.
-
-To check whether an optional package is installed, use
-the @command{pkginfo} command. To add an optional package, use the
-@command{pkgadd} command. For further details, see the Solaris 2
-documentation.
-
-Trying to use the linker and other tools in
-@file{/usr/ucb} to install GCC has been observed to cause trouble.
-For example, the linker may hang indefinitely. The fix is to remove
-@file{/usr/ucb} from your @env{PATH}.
-
-All releases of GNU binutils prior to 2.11.2 have known bugs on this
-platform. We recommend the use of GNU binutils 2.11.2 or the vendor
-tools (Sun @command{as}, Sun @command{ld}).
-
-Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or
-newer: @command{g++} will complain that types are missing. These headers assume
-that omitting the type means @code{int}; this assumption worked for C89 but
-is wrong for C++, and is now wrong for C99 also.
-
-@command{g++} accepts such (invalid) constructs with the option
-@option{-fpermissive}; it
-will assume that any missing type is @code{int} (as defined by C89).
-
-There are patches for Solaris 2.6 (105633-56 or newer for SPARC,
-106248-42 or newer for Intel), Solaris 7 (108376-21 or newer for SPARC,
-108377-20 for Intel), and Solaris 8 (108652-24 or newer for SPARC,
-108653-22 for Intel) that fix this bug.
-
-@html
-<hr />
-@end html
-@heading @anchor{sparc-sun-solaris2*}sparc-sun-solaris2*
-
-When GCC is configured to use binutils 2.11.2 or later the binaries
-produced are smaller than the ones produced using Sun's native tools;
-this difference is quite significant for binaries containing debugging
-information.
-
-Sun @command{as} 4.x is broken in that it cannot cope with long symbol names.
-A typical error message might look similar to the following:
-
-@smallexample
-/usr/ccs/bin/as: "/var/tmp/ccMsw135.s", line 11041: error:
- can't compute value of an expression involving an external symbol.
-@end smallexample
-
-This is Sun bug 4237974. This is fixed with patch 108908-02 for Solaris
-2.6 and has been fixed in later (5.x) versions of the assembler,
-starting with Solaris 7.
-
-Starting with Solaris 7, the operating system is capable of executing
-64-bit SPARC V9 binaries. GCC 3.1 and later properly supports
-this; the @option{-m64} option enables 64-bit code generation.
-However, if all you want is code tuned for the UltraSPARC CPU, you
-should try the @option{-mtune=ultrasparc} option instead, which produces
-code that, unlike full 64-bit code, can still run on non-UltraSPARC
-machines.
-
-When configuring on a Solaris 7 or later system that is running a kernel
-that supports only 32-bit binaries, one must configure with
-@option{--disable-multilib}, since we will not be able to build the
-64-bit target libraries.
-
-@html
-<hr />
-@end html
-@heading @anchor{sparc-sun-solaris2.7}sparc-sun-solaris2.7
-
-Sun patch 107058-01 (1999-01-13) for Solaris 7/SPARC triggers a bug in
-the dynamic linker. This problem (Sun bug 4210064) affects GCC 2.8
-and later, including all EGCS releases. Sun formerly recommended
-107058-01 for all Solaris 7 users, but around 1999-09-01 it started to
-recommend it only for people who use Sun's compilers.
-
-Here are some workarounds to this problem:
-@itemize @bullet
-@item
-Do not install Sun patch 107058-01 until after Sun releases a
-complete patch for bug 4210064. This is the simplest course to take,
-unless you must also use Sun's C compiler. Unfortunately 107058-01
-is preinstalled on some new Solaris 7-based hosts, so you may have to
-back it out.
-
-@item
-Copy the original, unpatched Solaris 7
-@command{/usr/ccs/bin/as} into
-@command{/usr/local/lib/gcc-lib/sparc-sun-solaris2.7/3.1/as},
-adjusting the latter name to fit your local conventions and software
-version numbers.
-
-@item
-Install Sun patch 106950-03 (1999-05-25) or later. Nobody with
-both 107058-01 and 106950-03 installed has reported the bug with GCC
-and Sun's dynamic linker. This last course of action is riskiest,
-for two reasons. First, you must install 106950 on all hosts that
-run code generated by GCC; it doesn't suffice to install it only on
-the hosts that run GCC itself. Second, Sun says that 106950-03 is
-only a partial fix for bug 4210064, but Sun doesn't know whether the
-partial fix is adequate for GCC@. Revision -08 or later should fix
-the bug. The current (as of 2001-09-24) revision is -14, and is included in
-the Solaris 7 Recommended Patch Cluster.
-@end itemize
-
-
-@html
-<p>
-<hr />
-@end html
-@heading @anchor{sparc-sun-sunos4*}sparc-sun-sunos4*
-
-A bug in the SunOS 4 linker will cause it to crash when linking
-@option{-fPIC} compiled objects (and will therefore not allow you to build
-shared libraries).
-
-To fix this problem you can either use the most recent version of
-binutils or get the latest SunOS 4 linker patch (patch ID 100170-10)
-from Sun's patch site.
-
-Sometimes on a Sun 4 you may observe a crash in the program
-@command{genflags} or @command{genoutput} while building GCC. This is said to
-be due to a bug in @command{sh}. You can probably get around it by running
-@command{genflags} or @command{genoutput} manually and then retrying the
-@command{make}.
-
-@html
-<hr />
-@end html
-@heading @anchor{sparc-unknown-linux-gnulibc1}sparc-unknown-linux-gnulibc1
-
-It has been reported that you might need
-@uref{ftp://ftp.yggdrasil.com/private/hjl,,binutils 2.8.1.0.23}
-for this platform, too.
-
-
-@html
-<hr />
-@end html
-@heading @anchor{sparc-*-linux*}sparc-*-linux*
-
-GCC versions 3.0 and higher require binutils 2.11.2 and glibc 2.2.4
-or newer on this platform. All earlier binutils and glibc
-releases mishandled unaligned relocations on @code{sparc-*-*} targets.
-
-
-@html
-<hr />
-@end html
-@heading @anchor{sparc64-*-*}sparc64-*-*
-
-GCC version 2.95 is not able to compile code correctly for
-@code{sparc64} targets. Users of the Linux kernel, at least,
-can use the @code{sparc32} program to start up a new shell
-invocation with an environment that causes @command{configure} to
-recognize (via @samp{uname -a}) the system as @samp{sparc-*-*} instead.
-
-@html
-<hr />
-@end html
-@heading @anchor{sparcv9-*-solaris2*}sparcv9-*-solaris2*
-
-The following compiler flags must be specified in the configure
-step in order to bootstrap this target with the Sun compiler:
-
-@example
- % CC="cc -xildoff -xarch=v9" @var{srcdir}/configure [@var{options}] [@var{target}]
-@end example
-
-@option{-xildoff} turns off the incremental linker, and @option{-xarch=v9}
-specifies the v9 architecture to the Sun linker and assembler.
-
-@html
-<hr />
-@end html
-@heading @anchor{#*-*-sysv*}*-*-sysv*
-On System V release 3, you may get this error message
-while linking:
-
-@smallexample
-ld fatal: failed to write symbol name @var{something}
- in strings table for file @var{whatever}
-@end smallexample
-
-This probably indicates that the disk is full or your ulimit won't allow
-the file to be as large as it needs to be.
-
-This problem can also result because the kernel parameter @code{MAXUMEM}
-is too small. If so, you must regenerate the kernel and make the value
-much larger. The default value is reported to be 1024; a value of 32768
-is said to work. Smaller values may also work.
-
-On System V, if you get an error like this,
-
-@example
-/usr/local/lib/bison.simple: In function `yyparse':
-/usr/local/lib/bison.simple:625: virtual memory exhausted
-@end example
-
-@noindent
-that too indicates a problem with disk space, ulimit, or @code{MAXUMEM}.
-
-On a System V release 4 system, make sure @file{/usr/bin} precedes
-@file{/usr/ucb} in @code{PATH}. The @code{cc} command in
-@file{/usr/ucb} uses libraries which have bugs.
-
-@html
-<hr />
-@end html
-@heading @anchor{vax-dec-ultrix}vax-dec-ultrix
-Don't try compiling with VAX C (@code{vcc}). It produces incorrect code
-in some cases (for example, when @code{alloca} is used).
-
-@html
-<hr />
-@end html
-@heading @anchor{we32k-*-*}we32k-*-*
-These computers are also known as the 3b2, 3b5, 3b20 and other similar
-names. (However, the 3b1 is actually a 68000.)
-These configurations are obsoleted in GCC 3.1.
-
-Don't use @option{-g} when compiling with the system's compiler. The
-system's linker seems to be unable to handle such a large program with
-debugging information.
-
-The system's compiler runs out of capacity when compiling @file{stmt.c}
-in GCC@. You can work around this by building @file{cpp} in GCC
-first, then use that instead of the system's preprocessor with the
-system's C compiler to compile @file{stmt.c}. Here is how:
-
-@smallexample
-mv /lib/cpp /lib/cpp.att
-cp cpp /lib/cpp.gnu
-echo '/lib/cpp.gnu -traditional $@{1+"$@@"@}' > /lib/cpp
-chmod +x /lib/cpp
-@end smallexample
-
-The system's compiler produces bad code for some of the GCC
-optimization files. So you must build the stage 2 compiler without
-optimization. Then build a stage 3 compiler with optimization.
-That executable should work. Here are the necessary commands:
-
-@smallexample
-make LANGUAGES=c CC=stage1/xgcc CFLAGS="-Bstage1/ -g"
-make stage2
-make CC=stage2/xgcc CFLAGS="-Bstage2/ -g -O"
-@end smallexample
-
-You may need to raise the ULIMIT setting to build a C++ compiler,
-as the file @file{cc1plus} is larger than one megabyte.
-
-@html
-<hr />
-@end html
-@heading @anchor{xtensa-*-elf}xtensa-*-elf
-
-This target is intended for embedded Xtensa systems using the
-@samp{newlib} C library. It uses ELF but does not support shared
-objects. Designed-defined instructions specified via the
-Tensilica Instruction Extension (TIE) language are only supported
-through inline assembly.
-
-The Xtensa configuration information must be specified prior to
-building GCC@. The @file{gcc/config/xtensa/xtensa-config.h} header
-file contains the configuration information. If you created your
-own Xtensa configuration with the Xtensa Processor Generator, the
-downloaded files include a customized copy of this header file,
-which you can use to replace the default header file.
-
-@html
-<hr />
-@end html
-@heading @anchor{xtensa-*-linux*}xtensa-*-linux*
-
-This target is for Xtensa systems running GNU/Linux. It supports ELF
-shared objects and the GNU C library (glibc). It also generates
-position-independent code (PIC) regardless of whether the
-@option{-fpic} or @option{-fPIC} options are used. In other
-respects, this target is the same as the
-@uref{#xtensa-*-elf,,@samp{xtensa-*-elf}} target.
-
-@html
-<hr />
-@end html
-@heading @anchor{windows}Microsoft Windows (32-bit)
-
-A port of GCC 2.95.x is included with the
-@uref{http://www.cygwin.com/,,Cygwin environment}.
-
-Current (as of early 2001) snapshots of GCC will build under Cygwin
-without modification.
-
-@html
-<hr />
-@end html
-@heading @anchor{os2}OS/2
-
-GCC does not currently support OS/2. However, Andrew Zabolotny has been
-working on a generic OS/2 port with pgcc. The current code can be found
-at @uref{http://www.goof.com/pcg/os2/,,http://www.goof.com/pcg/os2/}.
-
-An older copy of GCC 2.8.1 is included with the EMX tools available at
-@uref{ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/,,
-ftp://ftp.leo.org/pub/comp/os/os2/leo/devtools/emx+gcc/}.
-
-@html
-<hr />
-@end html
-@heading @anchor{older}Older systems
-
-GCC contains support files for many older (1980s and early
-1990s) Unix variants. For the most part, support for these systems
-has not been deliberately removed, but it has not been maintained for
-several years and may suffer from bitrot. Support from some systems
-has been removed from GCC 3: fx80, ns32-ns-genix, pyramid, tahoe,
-gmicro, spur; most of these targets had not been updated since GCC
-version 1.
-
-We are planning to remove support for more older systems, starting in
-GCC 3.1. Each release will have a list of ``obsoleted'' systems.
-Support for these systems is still present in that release, but
-@command{configure} will fail unless the @option{--enable-obsolete}
-option is given. Unless a maintainer steps forward, support for
-these systems will be removed from the next release of GCC@.
-
-Support for older systems as targets for cross-compilation is less
-problematic than support for them as hosts for GCC; if an enthusiast
-wishes to make such a target work again (including resurrecting any
-of the targets that never worked with GCC 2, starting from the last
-CVS version before they were removed), patches
-@uref{../contribute.html,,following the usual requirements}
-would be likely to be accepted, since they should not affect the
-support for more modern targets.
-
-Support for old systems as hosts for GCC can cause problems if the
-workarounds for compiler, library and operating system bugs affect the
-cleanliness or maintainability of the rest of GCC@. In some cases, to
-bring GCC up on such a system, if still possible with current GCC, may
-require first installing an old version of GCC which did work on that
-system, and using it to compile a more recent GCC, to avoid bugs in
-the vendor compiler. Old releases of GCC 1 and GCC 2 are available in
-the @file{old-releases} directory on the
-@uref{../mirrors.html,,GCC mirror sites}. Header bugs may generally
-be avoided using @command{fixincludes}, but bugs or deficiencies in
-libraries and the operating system may still cause problems.
-
-For some systems, old versions of GNU binutils may also be useful,
-and are available from @file{pub/binutils/old-releases} on
-@uref{http://sources.redhat.com/mirrors.html,,sources.redhat.com mirror sites}.
-
-Some of the information on specific systems above relates to
-such older systems, but much of the information
-about GCC on such systems (which may no longer be applicable to
-current GCC) is to be found in the GCC texinfo manual.
-
-@html
-<hr />
-@end html
-@heading @anchor{elf_targets}all ELF targets (SVR4, Solaris 2, etc.)
-
-C++ support is significantly better on ELF targets if you use the
-@uref{./configure.html#with-gnu-ld,,GNU linker}; duplicate copies of
-inlines, vtables and template instantiations will be discarded
-automatically.
-
-
-@html
-<hr />
-<p>
-@end html
-@ifhtml
-@uref{./index.html,,Return to the GCC Installation page}
-@end ifhtml
-@end ifset
-
-@c ***Old documentation******************************************************
-@ifset oldhtml
-@include install-old.texi
-@html
-<hr />
-<p>
-@end html
-@ifhtml
-@uref{./index.html,,Return to the GCC Installation page}
-@end ifhtml
-@end ifset
-
-@c ***GFDL********************************************************************
-@ifset gfdlhtml
-@include fdl.texi
-@html
-<hr />
-<p>
-@end html
-@ifhtml
-@uref{./index.html,,Return to the GCC Installation page}
-@end ifhtml
-@end ifset
-
-@c ***************************************************************************
-@c Part 6 The End of the Document
-@ifinfo
-@comment node-name, next, previous, up
-@node Concept Index, , GNU Free Documentation License, Top
-@end ifinfo
-
-@ifinfo
-@unnumbered Concept Index
-
-@printindex cp
-
-@contents
-@end ifinfo
-@bye
diff --git a/contrib/gcc/doc/install.texi2html b/contrib/gcc/doc/install.texi2html
deleted file mode 100755
index 3917e2a..0000000
--- a/contrib/gcc/doc/install.texi2html
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-#
-# Convert the GCC install documentation from texinfo format to HTML.
-#
-# $SOURCEDIR and $DESTDIR, resp., refer to the directory containing
-# the texinfo source and the directory to put the HTML version in.
-#
-# (C) 2001 Free Software Foundation
-# Originally by Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>, June 2001.
-#
-# This script is Free Software, and it can be copied, distributed and
-# modified as defined in the GNU General Public License. A copy of
-# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
-
-SOURCEDIR=${SOURCEDIR-.}
-DESTDIR=${DESTDIR-HTML}
-
-MAKEINFO=${MAKEINFO-makeinfo}
-
-if [ ! -d $DESTDIR ]; then
- mkdir -p $DESTDIR
-fi
-
-for x in index.html specific.html download.html configure.html \
- build.html test.html finalinstall.html binaries.html old.html \
- gfdl.html
-do
- define=`echo $x | sed -e 's/\.//g'`
- echo "define = $define"
- $MAKEINFO -I $SOURCEDIR -I $SOURCEDIR/include $SOURCEDIR/install.texi --html --no-split -D$define -o$DESTDIR/$x
-done
diff --git a/contrib/gcc/doschk.c b/contrib/gcc/doschk.c
deleted file mode 100644
index d024efc..0000000
--- a/contrib/gcc/doschk.c
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
-** DosFCheck - check file names for DOS consistency
-**
-** Distribute freely, it only encourages DOS compatibility!
-** - DJ Delorie
-*/
-
-/* This file is not part of GCC. */
-
-#include <stdio.h>
-#ifdef __MSDOS__
-#include <alloc.h>
-#else
-#include <malloc.h>
-#endif
-#include <ctype.h>
-#include <string.h>
-
-typedef struct ENT
-{
- struct ENT *next;
- char *dos_name;
- char *full_name;
- char *path;
- int tagged;
-} ENT;
-
-ENT *eroot = 0;
-
-int first_inv = 1;
-int first_msg = 1;
-
-/****************************************************************\
- * Utility routines *
-\****************************************************************/
-
-void
-invalid_msg ()
-{
- if (first_inv)
- {
- if (first_msg)
- first_msg = 0;
- else
- putchar ('\n');
- printf ("The following files are not valid DOS file names:\n");
- first_inv = 0;
- }
-}
-
-ENT *
-alloc_ent ()
-{
- ENT *rv = (ENT *)malloc (sizeof (ENT));
- if (rv == 0)
- {
- fprintf (stderr, "Unable to allocate memory for an ENT\n");
- exit (1);
- }
- memset (rv, 0, sizeof (ENT));
- return rv;
-}
-
-void
-fill_ent (ent, path)
-ENT *ent;
-char *path;
-{
- char *first = path;
- char *null = path+strlen (path);
- char *last_slash = strrchr (path, '/');
- char *cp, *dp;
- int dots_seen, chars_seen;
-
- if (last_slash+1 == null)
- {
- * --null = '\0';
- last_slash = strrchr (path, '/');
- }
-
- if (!last_slash)
- {
- last_slash = first-1;
- }
-
- if (null-last_slash < 13)
- ent->dos_name = (char *)malloc (null-last_slash);
- else
- ent->dos_name = (char *)malloc (13);
- ent->full_name = (char *)malloc (null-last_slash);
- ent->path = (char *)malloc (last_slash-first+1);
-
- strcpy (ent->full_name, last_slash+1);
- if (last_slash > first)
- {
- strncpy (ent->path, first, last_slash-first);
- ent->path[last_slash-first] = '\0';
- }
- else
- *ent->path = '\0';
-
- cp = last_slash+1;
- dp = ent->dos_name;
- dots_seen = 0;
- chars_seen = 0;
- while (1)
- {
- if (! *cp)
- break;
- switch (*cp)
- {
- case '.':
- if (cp == last_slash+1 && strcmp (last_slash+1, "."))
- {
- invalid_msg ();
- printf ("%s - file name cannot start with dot\n", path);
- *dp = 0;
- break;
- }
- if (dots_seen == 1)
- {
- invalid_msg ();
- printf ("%s - too many dots\n", path);
- *dp = '\0';
- break;
- }
- *dp++ = '.';
- chars_seen = 0;
- dots_seen++;
- break;
- case '"':
- case '*':
- case '+':
- case ',':
- case ';':
- case '<':
- case '=':
- case '>':
- case '?':
- case '[':
- case '\\':
- case ']':
- case '|':
- invalid_msg ();
- printf ("%s - invalid character `%c'\n", path, *cp);
- *dp++ = '?';
- chars_seen++;
- break;
- default:
- if (dots_seen)
- {
- if (chars_seen >= 3)
- break;
- }
- else
- if (chars_seen >= 8)
- break;
- if ((*cp <= ' ') || (*cp >= 0x7f))
- {
- invalid_msg ();
- printf ("%s - invalid character `%c'\n", path, *cp);
- *dp++ = '?';
- chars_seen++;
- break;
- }
- if (islower (*cp))
- *dp++ = toupper (*cp);
- else
- *dp++ = *cp;
- chars_seen++;
- break;
- }
- cp++;
- }
- *dp++ = '\0';
-}
-
-int
-compare_ent_dosname (e1, e2)
-ENT **e1;
-ENT **e2;
-{
- int r = strcmp ((*e1)->dos_name, (*e2)->dos_name);
- if (r == 0)
- r = strcmp ((*e1)->path, (*e2)->path);
- if (r == 0)
- r = strcmp ((*e1)->full_name, (*e2)->full_name);
- return r;
-}
-
-int
-compare_ent_fullname (e1, e2)
-ENT **e1;
-ENT **e2;
-{
- int r = strncmp ((*e1)->full_name, (*e2)->full_name, 14);
- if (r == 0)
- r = strcmp ((*e1)->path, (*e2)->path);
- if (r == 0)
- r = strcmp ((*e1)->full_name, (*e2)->full_name);
- return r;
-}
-
-char *
-mpath (ent)
-ENT *ent;
-{
- static char buf[500];
- if (ent->path && ent->path[0])
- sprintf (buf, "%s/%s", ent->path, ent->full_name);
- else
- return ent->full_name;
- return buf;
-}
-
-/****************************************************************\
- * List handling routines *
-\****************************************************************/
-
-void
-add_ent (ent)
-ENT *ent;
-{
- ent->next = eroot;
- eroot = ent;
-}
-
-void
-handle_input (line)
-char *line;
-{
- ENT *ent = alloc_ent ();
- fill_ent (ent, line);
- add_ent (ent);
-}
-
-void
-display_problems ()
-{
- ENT **elist, *ent;
- int ecount, i, first, first_err;
-
- for (ecount=0, ent=eroot; ent; ent=ent->next, ecount++);
- elist = (ENT **)malloc (sizeof (ENT *) * ecount);
- for (ecount=0, ent=eroot; ent; ent=ent->next, ecount++)
- elist[ecount] = ent;
-
- qsort (elist, ecount, sizeof (ENT *), compare_ent_dosname);
-
- first = 1;
- first_err = 1;
- for (i=0; i<ecount-1; i++)
- {
- if ((strcmp (elist[i]->dos_name, elist[i+1]->dos_name) == 0)
- && (strcmp (elist[i]->path, elist[i+1]->path) == 0))
- {
- if (first_err)
- {
- if (first_msg)
- first_msg = 0;
- else
- putchar ('\n');
- printf ("The following resolve to the same DOS file names:\n");
- first_err = 0;
- }
- if (first)
- {
- printf ("%14s : %s\n", elist[i]->dos_name, mpath (elist[i]));
- first = 0;
- }
- printf ("\t\t %s\n", mpath (elist[i+1]));
- }
- else
- first = 1;
- }
-
- qsort (elist, ecount, sizeof (ENT *), compare_ent_fullname);
-
- first = 1;
- first_err = 1;
- for (i=0; i<ecount-1; i++)
- {
- if ((strncmp (elist[i]->full_name, elist[i+1]->full_name, 14) == 0)
- && (strcmp (elist[i]->path, elist[i+1]->path) == 0))
- {
- if (first_err)
- {
- if (first_msg)
- first_msg = 0;
- else
- putchar ('\n');
- printf ("The following resolve to the same SysV file names:\n");
- first_err = 0;
- }
- if (first)
- {
- printf ("%.14s : %s\n", elist[i]->full_name, mpath (elist[i]));
- first = 0;
- elist[i]->tagged = 1;
- }
- printf ("\t\t %s\n", mpath (elist[i+1]));
- elist[i+1]->tagged = 1;
- }
- else
- first = 1;
- }
-
- first_err = 1;
- for (i=0; i<ecount; i++)
- {
- if ((strlen (elist[i]->full_name) > 14) && !elist[i]->tagged)
- {
- if (first_err)
- {
- if (first_msg)
- first_msg = 0;
- else
- putchar ('\n');
- printf ("The following file names are too long for SysV:\n");
- first_err = 0;
- }
- printf ("%.14s : %s\n", elist[i]->full_name, mpath (elist[i]));
- }
- }
-}
-
-/****************************************************************\
- * Main entry point *
-\****************************************************************/
-
-main (argc, argv)
-int argc;
-char **argv;
-{
- FILE *input = stdin;
- if (argc > 1)
- {
- input = fopen (argv[1], "r");
- if (!input)
- {
- perror (argv[1]);
- exit (1);
- }
- }
- while (1)
- {
- char line[500];
- char *lp;
- fgets (line, 500, input);
- if (feof (input))
- break;
- lp = line+strlen (line);
- while ((lp != line) && (*lp <= ' '))
- lp--;
- lp[1] = 0;
- handle_input (line);
- }
- display_problems ();
-}
-
diff --git a/contrib/gcc/dwarfout.c b/contrib/gcc/dwarfout.c
deleted file mode 100644
index bbbfcfc..0000000
--- a/contrib/gcc/dwarfout.c
+++ /dev/null
@@ -1,6561 +0,0 @@
-/* Output Dwarf format symbol table information from the GNU C compiler.
- Copyright (C) 1992, 1993, 1995, 1996, 1997, 1998, 2002,
- 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
- Contributed by Ron Guilmette (rfg@monkeys.com) of Network Computing Devices.
-
-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 2, 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, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
-
-/*
-
- Notes on the GNU Implementation of DWARF Debugging Information
- --------------------------------------------------------------
- Last Major Update: Sun Jul 17 08:17:42 PDT 1994 by rfg@segfault.us.com
- ------------------------------------------------------------
-
- This file describes special and unique aspects of the GNU implementation of
- the DWARF Version 1 debugging information language, as provided in the GNU
- version 2.x compiler(s).
-
- For general information about the DWARF debugging information language,
- you should obtain the DWARF version 1.1 specification document (and perhaps
- also the DWARF version 2 draft specification document) developed by the
- (now defunct) UNIX International Programming Languages Special Interest Group.
-
- To obtain a copy of the DWARF Version 1 and/or DWARF Version 2
- specification, visit the web page for the DWARF Version 2 committee, at
-
- http://www.eagercon.com/dwarf/dwarf2std.htm
-
- The generation of DWARF debugging information by the GNU version 2.x C
- compiler has now been tested rather extensively for m88k, i386, i860, and
- SPARC targets. The DWARF output of the GNU C compiler appears to inter-
- operate well with the standard SVR4 SDB debugger on these kinds of target
- systems (but of course, there are no guarantees).
-
- DWARF 1 generation for the GNU g++ compiler is implemented, but limited.
- C++ users should definitely use DWARF 2 instead.
-
- Future plans for the dwarfout.c module of the GNU compiler(s) includes the
- addition of full support for GNU FORTRAN. (This should, in theory, be a
- lot simpler to add than adding support for g++... but we'll see.)
-
- Many features of the DWARF version 2 specification have been adapted to
- (and used in) the GNU implementation of DWARF (version 1). In most of
- these cases, a DWARF version 2 approach is used in place of (or in addition
- to) DWARF version 1 stuff simply because it is apparent that DWARF version
- 1 is not sufficiently expressive to provide the kinds of information which
- may be necessary to support really robust debugging. In all of these cases
- however, the use of DWARF version 2 features should not interfere in any
- way with the interoperability (of GNU compilers) with generally available
- "classic" (pre version 1) DWARF consumer tools (e.g. SVR4 SDB).
-
- The DWARF generation enhancement for the GNU compiler(s) was initially
- donated to the Free Software Foundation by Network Computing Devices.
- (Thanks NCD!) Additional development and maintenance of dwarfout.c has
- been largely supported (i.e. funded) by Intel Corporation. (Thanks Intel!)
-
- If you have questions or comments about the DWARF generation feature, please
- send mail to me <rfg@netcom.com>. I will be happy to investigate any bugs
- reported and I may even provide fixes (but of course, I can make no promises).
-
- The DWARF debugging information produced by GCC may deviate in a few minor
- (but perhaps significant) respects from the DWARF debugging information
- currently produced by other C compilers. A serious attempt has been made
- however to conform to the published specifications, to existing practice,
- and to generally accepted norms in the GNU implementation of DWARF.
-
- ** IMPORTANT NOTE ** ** IMPORTANT NOTE ** ** IMPORTANT NOTE **
-
- Under normal circumstances, the DWARF information generated by the GNU
- compilers (in an assembly language file) is essentially impossible for
- a human being to read. This fact can make it very difficult to debug
- certain DWARF-related problems. In order to overcome this difficulty,
- a feature has been added to dwarfout.c (enabled by the -dA
- option) which causes additional comments to be placed into the assembly
- language output file, out to the right-hand side of most bits of DWARF
- material. The comments indicate (far more clearly that the obscure
- DWARF hex codes do) what is actually being encoded in DWARF. Thus, the
- -dA option can be highly useful for those who must study the
- DWARF output from the GNU compilers in detail.
-
- ---------
-
- (Footnote: Within this file, the term `Debugging Information Entry' will
- be abbreviated as `DIE'.)
-
-
- Release Notes (aka known bugs)
- -------------------------------
-
- In one very obscure case involving dynamically sized arrays, the DWARF
- "location information" for such an array may make it appear that the
- array has been totally optimized out of existence, when in fact it
- *must* actually exist. (This only happens when you are using *both* -g
- *and* -O.) This is due to aggressive dead store elimination in the
- compiler, and to the fact that the DECL_RTL expressions associated with
- variables are not always updated to correctly reflect the effects of
- GCC's aggressive dead store elimination.
-
- -------------------------------
-
- When attempting to set a breakpoint at the "start" of a function compiled
- with -g1, the debugger currently has no way of knowing exactly where the
- end of the prologue code for the function is. Thus, for most targets,
- all the debugger can do is to set the breakpoint at the AT_low_pc address
- for the function. But if you stop there and then try to look at one or
- more of the formal parameter values, they may not have been "homed" yet,
- so you may get inaccurate answers (or perhaps even addressing errors).
-
- Some people may consider this simply a non-feature, but I consider it a
- bug, and I hope to provide some GNU-specific attributes (on function
- DIEs) which will specify the address of the end of the prologue and the
- address of the beginning of the epilogue in a future release.
-
- -------------------------------
-
- It is believed at this time that old bugs relating to the AT_bit_offset
- values for bit-fields have been fixed.
-
- There may still be some very obscure bugs relating to the DWARF description
- of type `long long' bit-fields for target machines (e.g. 80x86 machines)
- where the alignment of type `long long' data objects is different from
- (and less than) the size of a type `long long' data object.
-
- Please report any problems with the DWARF description of bit-fields as you
- would any other GCC bug. (Procedures for bug reporting are given in the
- GNU C compiler manual.)
-
- --------------------------------
-
- At this time, GCC does not know how to handle the GNU C "nested functions"
- extension. (See the GCC manual for more info on this extension to ANSI C.)
-
- --------------------------------
-
- The GNU compilers now represent inline functions (and inlined instances
- thereof) in exactly the manner described by the current DWARF version 2
- (draft) specification. The version 1 specification for handling inline
- functions (and inlined instances) was known to be brain-damaged (by the
- PLSIG) when the version 1 spec was finalized, but it was simply too late
- in the cycle to get it removed before the version 1 spec was formally
- released to the public (by UI).
-
- --------------------------------
-
- At this time, GCC does not generate the kind of really precise information
- about the exact declared types of entities with signed integral types which
- is required by the current DWARF draft specification.
-
- Specifically, the current DWARF draft specification seems to require that
- the type of a non-unsigned integral bit-field member of a struct or union
- type be represented as either a "signed" type or as a "plain" type,
- depending upon the exact set of keywords that were used in the
- type specification for the given bit-field member. It was felt (by the
- UI/PLSIG) that this distinction between "plain" and "signed" integral types
- could have some significance (in the case of bit-fields) because ANSI C
- does not constrain the signedness of a plain bit-field, whereas it does
- constrain the signedness of an explicitly "signed" bit-field. For this
- reason, the current DWARF specification calls for compilers to produce
- type information (for *all* integral typed entities... not just bit-fields)
- which explicitly indicates the signedness of the relevant type to be
- "signed" or "plain" or "unsigned".
-
- Unfortunately, the GNU DWARF implementation is currently incapable of making
- such distinctions.
-
- --------------------------------
-
-
- Known Interoperability Problems
- -------------------------------
-
- Although the GNU implementation of DWARF conforms (for the most part) with
- the current UI/PLSIG DWARF version 1 specification (with many compatible
- version 2 features added in as "vendor specific extensions" just for good
- measure) there are a few known cases where GCC's DWARF output can cause
- some confusion for "classic" (pre version 1) DWARF consumers such as the
- System V Release 4 SDB debugger. These cases are described in this section.
-
- --------------------------------
-
- The DWARF version 1 specification includes the fundamental type codes
- FT_ext_prec_float, FT_complex, FT_dbl_prec_complex, and FT_ext_prec_complex.
- Since GNU C is only a C compiler (and since C doesn't provide any "complex"
- data types) the only one of these fundamental type codes which GCC ever
- generates is FT_ext_prec_float. This fundamental type code is generated
- by GCC for the `long double' data type. Unfortunately, due to an apparent
- bug in the SVR4 SDB debugger, SDB can become very confused wherever any
- attempt is made to print a variable, parameter, or field whose type was
- given in terms of FT_ext_prec_float.
-
- (Actually, SVR4 SDB fails to understand *any* of the four fundamental type
- codes mentioned here. This will fact will cause additional problems when
- there is a GNU FORTRAN front-end.)
-
- --------------------------------
-
- In general, it appears that SVR4 SDB is not able to effectively ignore
- fundamental type codes in the "implementation defined" range. This can
- cause problems when a program being debugged uses the `long long' data
- type (or the signed or unsigned varieties thereof) because these types
- are not defined by ANSI C, and thus, GCC must use its own private fundamental
- type codes (from the implementation-defined range) to represent these types.
-
- --------------------------------
-
-
- General GNU DWARF extensions
- ----------------------------
-
- In the current DWARF version 1 specification, no mechanism is specified by
- which accurate information about executable code from include files can be
- properly (and fully) described. (The DWARF version 2 specification *does*
- specify such a mechanism, but it is about 10 times more complicated than
- it needs to be so I'm not terribly anxious to try to implement it right
- away.)
-
- In the GNU implementation of DWARF version 1, a fully downward-compatible
- extension has been implemented which permits the GNU compilers to specify
- which executable lines come from which files. This extension places
- additional information (about source file names) in GNU-specific sections
- (which should be totally ignored by all non-GNU DWARF consumers) so that
- this extended information can be provided (to GNU DWARF consumers) in a way
- which is totally transparent (and invisible) to non-GNU DWARF consumers
- (e.g. the SVR4 SDB debugger). The additional information is placed *only*
- in specialized GNU-specific sections, where it should never even be seen
- by non-GNU DWARF consumers.
-
- To understand this GNU DWARF extension, imagine that the sequence of entries
- in the .lines section is broken up into several subsections. Each contiguous
- sequence of .line entries which relates to a sequence of lines (or statements)
- from one particular file (either a `base' file or an `include' file) could
- be called a `line entries chunk' (LEC).
-
- For each LEC there is one entry in the .debug_srcinfo section.
-
- Each normal entry in the .debug_srcinfo section consists of two 4-byte
- words of data as follows:
-
- (1) The starting address (relative to the entire .line section)
- of the first .line entry in the relevant LEC.
-
- (2) The starting address (relative to the entire .debug_sfnames
- section) of a NUL terminated string representing the
- relevant filename. (This filename name be either a
- relative or an absolute filename, depending upon how the
- given source file was located during compilation.)
-
- Obviously, each .debug_srcinfo entry allows you to find the relevant filename,
- and it also points you to the first .line entry that was generated as a result
- of having compiled a given source line from the given source file.
-
- Each subsequent .line entry should also be assumed to have been produced
- as a result of compiling yet more lines from the same file. The end of
- any given LEC is easily found by looking at the first 4-byte pointer in
- the *next* .debug_srcinfo entry. That next .debug_srcinfo entry points
- to a new and different LEC, so the preceding LEC (implicitly) must have
- ended with the last .line section entry which occurs at the 2 1/2 words
- just before the address given in the first pointer of the new .debug_srcinfo
- entry.
-
- The following picture may help to clarify this feature. Let's assume that
- `LE' stands for `.line entry'. Also, assume that `* 'stands for a pointer.
-
-
- .line section .debug_srcinfo section .debug_sfnames section
- ----------------------------------------------------------------
-
- LE <---------------------- *
- LE * -----------------> "foobar.c" <---
- LE |
- LE |
- LE <---------------------- * |
- LE * -----------------> "foobar.h" <| |
- LE | |
- LE | |
- LE <---------------------- * | |
- LE * -----------------> "inner.h" | |
- LE | |
- LE <---------------------- * | |
- LE * ------------------------------- |
- LE |
- LE |
- LE |
- LE |
- LE <---------------------- * |
- LE * -----------------------------------
- LE
- LE
- LE
-
- In effect, each entry in the .debug_srcinfo section points to *both* a
- filename (in the .debug_sfnames section) and to the start of a block of
- consecutive LEs (in the .line section).
-
- Note that just like in the .line section, there are specialized first and
- last entries in the .debug_srcinfo section for each object file. These
- special first and last entries for the .debug_srcinfo section are very
- different from the normal .debug_srcinfo section entries. They provide
- additional information which may be helpful to a debugger when it is
- interpreting the data in the .debug_srcinfo, .debug_sfnames, and .line
- sections.
-
- The first entry in the .debug_srcinfo section for each compilation unit
- consists of five 4-byte words of data. The contents of these five words
- should be interpreted (by debuggers) as follows:
-
- (1) The starting address (relative to the entire .line section)
- of the .line section for this compilation unit.
-
- (2) The starting address (relative to the entire .debug_sfnames
- section) of the .debug_sfnames section for this compilation
- unit.
-
- (3) The starting address (in the execution virtual address space)
- of the .text section for this compilation unit.
-
- (4) The ending address plus one (in the execution virtual address
- space) of the .text section for this compilation unit.
-
- (5) The date/time (in seconds since midnight 1/1/70) at which the
- compilation of this compilation unit occurred. This value
- should be interpreted as an unsigned quantity because gcc
- might be configured to generate a default value of 0xffffffff
- in this field (in cases where it is desired to have object
- files created at different times from identical source files
- be byte-for-byte identical). By default, these timestamps
- are *not* generated by dwarfout.c (so that object files
- compiled at different times will be byte-for-byte identical).
- If you wish to enable this "timestamp" feature however, you
- can simply place a #define for the symbol `DWARF_TIMESTAMPS'
- in your target configuration file and then rebuild the GNU
- compiler(s).
-
- Note that the first string placed into the .debug_sfnames section for each
- compilation unit is the name of the directory in which compilation occurred.
- This string ends with a `/' (to help indicate that it is the pathname of a
- directory). Thus, the second word of each specialized initial .debug_srcinfo
- entry for each compilation unit may be used as a pointer to the (string)
- name of the compilation directory, and that string may in turn be used to
- "absolutize" any relative pathnames which may appear later on in the
- .debug_sfnames section entries for the same compilation unit.
-
- The fifth and last word of each specialized starting entry for a compilation
- unit in the .debug_srcinfo section may (depending upon your configuration)
- indicate the date/time of compilation, and this may be used (by a debugger)
- to determine if any of the source files which contributed code to this
- compilation unit are newer than the object code for the compilation unit
- itself. If so, the debugger may wish to print an "out-of-date" warning
- about the compilation unit.
-
- The .debug_srcinfo section associated with each compilation will also have
- a specialized terminating entry. This terminating .debug_srcinfo section
- entry will consist of the following two 4-byte words of data:
-
- (1) The offset, measured from the start of the .line section to
- the beginning of the terminating entry for the .line section.
-
- (2) A word containing the value 0xffffffff.
-
- --------------------------------
-
- In the current DWARF version 1 specification, no mechanism is specified by
- which information about macro definitions and un-definitions may be provided
- to the DWARF consumer.
-
- The DWARF version 2 (draft) specification does specify such a mechanism.
- That specification was based on the GNU ("vendor specific extension")
- which provided some support for macro definitions and un-definitions,
- but the "official" DWARF version 2 (draft) specification mechanism for
- handling macros and the GNU implementation have diverged somewhat. I
- plan to update the GNU implementation to conform to the "official"
- DWARF version 2 (draft) specification as soon as I get time to do that.
-
- Note that in the GNU implementation, additional information about macro
- definitions and un-definitions is *only* provided when the -g3 level of
- debug-info production is selected. (The default level is -g2 and the
- plain old -g option is considered to be identical to -g2.)
-
- GCC records information about macro definitions and undefinitions primarily
- in a section called the .debug_macinfo section. Normal entries in the
- .debug_macinfo section consist of the following three parts:
-
- (1) A special "type" byte.
-
- (2) A 3-byte line-number/filename-offset field.
-
- (3) A NUL terminated string.
-
- The interpretation of the second and third parts is dependent upon the
- value of the leading (type) byte.
-
- The type byte may have one of four values depending upon the type of the
- .debug_macinfo entry which follows. The 1-byte MACINFO type codes presently
- used, and their meanings are as follows:
-
- MACINFO_start A base file or an include file starts here.
- MACINFO_resume The current base or include file ends here.
- MACINFO_define A #define directive occurs here.
- MACINFO_undef A #undef directive occur here.
-
- (Note that the MACINFO_... codes mentioned here are simply symbolic names
- for constants which are defined in the GNU dwarf.h file.)
-
- For MACINFO_define and MACINFO_undef entries, the second (3-byte) field
- contains the number of the source line (relative to the start of the current
- base source file or the current include files) when the #define or #undef
- directive appears. For a MACINFO_define entry, the following string field
- contains the name of the macro which is defined, followed by its definition.
- Note that the definition is always separated from the name of the macro
- by at least one whitespace character. For a MACINFO_undef entry, the
- string which follows the 3-byte line number field contains just the name
- of the macro which is being undef'ed.
-
- For a MACINFO_start entry, the 3-byte field following the type byte contains
- the offset, relative to the start of the .debug_sfnames section for the
- current compilation unit, of a string which names the new source file which
- is beginning its inclusion at this point. Following that 3-byte field,
- each MACINFO_start entry always contains a zero length NUL terminated
- string.
-
- For a MACINFO_resume entry, the 3-byte field following the type byte contains
- the line number WITHIN THE INCLUDING FILE at which the inclusion of the
- current file (whose inclusion ends here) was initiated. Following that
- 3-byte field, each MACINFO_resume entry always contains a zero length NUL
- terminated string.
-
- Each set of .debug_macinfo entries for each compilation unit is terminated
- by a special .debug_macinfo entry consisting of a 4-byte zero value followed
- by a single NUL byte.
-
- --------------------------------
-
- In the current DWARF draft specification, no provision is made for providing
- a separate level of (limited) debugging information necessary to support
- tracebacks (only) through fully-debugged code (e.g. code in system libraries).
-
- A proposal to define such a level was submitted (by me) to the UI/PLSIG.
- This proposal was rejected by the UI/PLSIG for inclusion into the DWARF
- version 1 specification for two reasons. First, it was felt (by the PLSIG)
- that the issues involved in supporting a "traceback only" subset of DWARF
- were not well understood. Second, and perhaps more importantly, the PLSIG
- is already having enough trouble agreeing on what it means to be "conforming"
- to the DWARF specification, and it was felt that trying to specify multiple
- different *levels* of conformance would only complicate our discussions of
- this already divisive issue. Nonetheless, the GNU implementation of DWARF
- provides an abbreviated "traceback only" level of debug-info production for
- use with fully-debugged "system library" code. This level should only be
- used for fully debugged system library code, and even then, it should only
- be used where there is a very strong need to conserve disk space. This
- abbreviated level of debug-info production can be used by specifying the
- -g1 option on the compilation command line.
-
- --------------------------------
-
- As mentioned above, the GNU implementation of DWARF currently uses the DWARF
- version 2 (draft) approach for inline functions (and inlined instances
- thereof). This is used in preference to the version 1 approach because
- (quite simply) the version 1 approach is highly brain-damaged and probably
- unworkable.
-
- --------------------------------
-
-
- GNU DWARF Representation of GNU C Extensions to ANSI C
- ------------------------------------------------------
-
- The file dwarfout.c has been designed and implemented so as to provide
- some reasonable DWARF representation for each and every declarative
- construct which is accepted by the GNU C compiler. Since the GNU C
- compiler accepts a superset of ANSI C, this means that there are some
- cases in which the DWARF information produced by GCC must take some
- liberties in improvising DWARF representations for declarations which
- are only valid in (extended) GNU C.
-
- In particular, GNU C provides at least three significant extensions to
- ANSI C when it comes to declarations. These are (1) inline functions,
- and (2) dynamic arrays, and (3) incomplete enum types. (See the GCC
- manual for more information on these GNU extensions to ANSI C.) When
- used, these GNU C extensions are represented (in the generated DWARF
- output of GCC) in the most natural and intuitively obvious ways.
-
- In the case of inline functions, the DWARF representation is exactly as
- called for in the DWARF version 2 (draft) specification for an identical
- function written in C++; i.e. we "reuse" the representation of inline
- functions which has been defined for C++ to support this GNU C extension.
-
- In the case of dynamic arrays, we use the most obvious representational
- mechanism available; i.e. an array type in which the upper bound of
- some dimension (usually the first and only dimension) is a variable
- rather than a constant. (See the DWARF version 1 specification for more
- details.)
-
- In the case of incomplete enum types, such types are represented simply
- as TAG_enumeration_type DIEs which DO NOT contain either AT_byte_size
- attributes or AT_element_list attributes.
-
- --------------------------------
-
-
- Future Directions
- -----------------
-
- The codes, formats, and other paraphernalia necessary to provide proper
- support for symbolic debugging for the C++ language are still being worked
- on by the UI/PLSIG. The vast majority of the additions to DWARF which will
- be needed to completely support C++ have already been hashed out and agreed
- upon, but a few small issues (e.g. anonymous unions, access declarations)
- are still being discussed. Also, we in the PLSIG are still discussing
- whether or not we need to do anything special for C++ templates. (At this
- time it is not yet clear whether we even need to do anything special for
- these.)
-
- With regard to FORTRAN, the UI/PLSIG has defined what is believed to be a
- complete and sufficient set of codes and rules for adequately representing
- all of FORTRAN 77, and most of Fortran 90 in DWARF. While some support for
- this has been implemented in dwarfout.c, further implementation and testing
- is needed.
-
- GNU DWARF support for other languages (i.e. Pascal and Modula) is a moot
- issue until there are GNU front-ends for these other languages.
-
- As currently defined, DWARF only describes a (binary) language which can
- be used to communicate symbolic debugging information from a compiler
- through an assembler and a linker, to a debugger. There is no clear
- specification of what processing should be (or must be) done by the
- assembler and/or the linker. Fortunately, the role of the assembler
- is easily inferred (by anyone knowledgeable about assemblers) just by
- looking at examples of assembly-level DWARF code. Sadly though, the
- allowable (or required) processing steps performed by a linker are
- harder to infer and (perhaps) even harder to agree upon. There are
- several forms of very useful `post-processing' steps which intelligent
- linkers *could* (in theory) perform on object files containing DWARF,
- but any and all such link-time transformations are currently both disallowed
- and unspecified.
-
- In particular, possible link-time transformations of DWARF code which could
- provide significant benefits include (but are not limited to):
-
- Commonization of duplicate DIEs obtained from multiple input
- (object) files.
-
- Cross-compilation type checking based upon DWARF type information
- for objects and functions.
-
- Other possible `compacting' transformations designed to save disk
- space and to reduce linker & debugger I/O activity.
-
-*/
-
-#include "config.h"
-
-#ifdef DWARF_DEBUGGING_INFO
-#include "system.h"
-#include "dwarf.h"
-#include "tree.h"
-#include "flags.h"
-#include "function.h"
-#include "rtl.h"
-#include "hard-reg-set.h"
-#include "insn-config.h"
-#include "reload.h"
-#include "output.h"
-#include "dwarf2asm.h"
-#include "toplev.h"
-#include "tm_p.h"
-#include "debug.h"
-#include "langhooks.h"
-
-/* NOTE: In the comments in this file, many references are made to
- so called "Debugging Information Entries". For the sake of brevity,
- this term is abbreviated to `DIE' throughout the remainder of this
- file. */
-
-/* Note that the implementation of C++ support herein is (as yet) unfinished.
- If you want to try to complete it, more power to you. */
-
-/* How to start an assembler comment. */
-#ifndef ASM_COMMENT_START
-#define ASM_COMMENT_START ";#"
-#endif
-
-/* How to print out a register name. */
-#ifndef PRINT_REG
-#define PRINT_REG(RTX, CODE, FILE) \
- fprintf ((FILE), "%s", reg_names[REGNO (RTX)])
-#endif
-
-/* Define a macro which returns nonzero for any tagged type which is
- used (directly or indirectly) in the specification of either some
- function's return type or some formal parameter of some function.
- We use this macro when we are operating in "terse" mode to help us
- know what tagged types have to be represented in Dwarf (even in
- terse mode) and which ones don't.
-
- A flag bit with this meaning really should be a part of the normal
- GCC ..._TYPE nodes, but at the moment, there is no such bit defined
- for these nodes. For now, we have to just fake it. It it safe for
- us to simply return zero for all complete tagged types (which will
- get forced out anyway if they were used in the specification of some
- formal or return type) and nonzero for all incomplete tagged types.
-*/
-
-#define TYPE_USED_FOR_FUNCTION(tagged_type) (TYPE_SIZE (tagged_type) == 0)
-
-/* Define a macro which returns nonzero for a TYPE_DECL which was
- implicitly generated for a tagged type.
-
- Note that unlike the gcc front end (which generates a NULL named
- TYPE_DECL node for each complete tagged type, each array type, and
- each function type node created) the g++ front end generates a
- _named_ TYPE_DECL node for each tagged type node created.
- These TYPE_DECLs have DECL_ARTIFICIAL set, so we know not to
- generate a DW_TAG_typedef DIE for them. */
-#define TYPE_DECL_IS_STUB(decl) \
- (DECL_NAME (decl) == NULL \
- || (DECL_ARTIFICIAL (decl) \
- && is_tagged_type (TREE_TYPE (decl)) \
- && decl == TYPE_STUB_DECL (TREE_TYPE (decl))))
-
-/* Maximum size (in bytes) of an artificially generated label. */
-
-#define MAX_ARTIFICIAL_LABEL_BYTES 30
-
-/* Structure to keep track of source filenames. */
-
-struct filename_entry {
- unsigned number;
- const char * name;
-};
-
-typedef struct filename_entry filename_entry;
-
-/* Pointer to an array of elements, each one having the structure above. */
-
-static filename_entry *filename_table;
-
-/* Total number of entries in the table (i.e. array) pointed to by
- `filename_table'. This is the *total* and includes both used and
- unused slots. */
-
-static unsigned ft_entries_allocated;
-
-/* Number of entries in the filename_table which are actually in use. */
-
-static unsigned ft_entries;
-
-/* Size (in elements) of increments by which we may expand the filename
- table. Actually, a single hunk of space of this size should be enough
- for most typical programs. */
-
-#define FT_ENTRIES_INCREMENT 64
-
-/* Local pointer to the name of the main input file. Initialized in
- dwarfout_init. */
-
-static const char *primary_filename;
-
-/* Counter to generate unique names for DIEs. */
-
-static unsigned next_unused_dienum = 1;
-
-/* Number of the DIE which is currently being generated. */
-
-static unsigned current_dienum;
-
-/* Number to use for the special "pubname" label on the next DIE which
- represents a function or data object defined in this compilation
- unit which has "extern" linkage. */
-
-static int next_pubname_number = 0;
-
-#define NEXT_DIE_NUM pending_sibling_stack[pending_siblings-1]
-
-/* Pointer to a dynamically allocated list of pre-reserved and still
- pending sibling DIE numbers. Note that this list will grow as needed. */
-
-static unsigned *pending_sibling_stack;
-
-/* Counter to keep track of the number of pre-reserved and still pending
- sibling DIE numbers. */
-
-static unsigned pending_siblings;
-
-/* The currently allocated size of the above list (expressed in number of
- list elements). */
-
-static unsigned pending_siblings_allocated;
-
-/* Size (in elements) of increments by which we may expand the pending
- sibling stack. Actually, a single hunk of space of this size should
- be enough for most typical programs. */
-
-#define PENDING_SIBLINGS_INCREMENT 64
-
-/* Nonzero if we are performing our file-scope finalization pass and if
- we should force out Dwarf descriptions of any and all file-scope
- tagged types which are still incomplete types. */
-
-static int finalizing = 0;
-
-/* A pointer to the base of a list of pending types which we haven't
- generated DIEs for yet, but which we will have to come back to
- later on. */
-
-static tree *pending_types_list;
-
-/* Number of elements currently allocated for the pending_types_list. */
-
-static unsigned pending_types_allocated;
-
-/* Number of elements of pending_types_list currently in use. */
-
-static unsigned pending_types;
-
-/* Size (in elements) of increments by which we may expand the pending
- types list. Actually, a single hunk of space of this size should
- be enough for most typical programs. */
-
-#define PENDING_TYPES_INCREMENT 64
-
-/* A pointer to the base of a list of incomplete types which might be
- completed at some later time. */
-
-static tree *incomplete_types_list;
-
-/* Number of elements currently allocated for the incomplete_types_list. */
-static unsigned incomplete_types_allocated;
-
-/* Number of elements of incomplete_types_list currently in use. */
-static unsigned incomplete_types;
-
-/* Size (in elements) of increments by which we may expand the incomplete
- types list. Actually, a single hunk of space of this size should
- be enough for most typical programs. */
-#define INCOMPLETE_TYPES_INCREMENT 64
-
-/* Pointer to an artificial RECORD_TYPE which we create in dwarfout_init.
- This is used in a hack to help us get the DIEs describing types of
- formal parameters to come *after* all of the DIEs describing the formal
- parameters themselves. That's necessary in order to be compatible
- with what the brain-damaged svr4 SDB debugger requires. */
-
-static tree fake_containing_scope;
-
-/* A pointer to the ..._DECL node which we have most recently been working
- on. We keep this around just in case something about it looks screwy
- and we want to tell the user what the source coordinates for the actual
- declaration are. */
-
-static tree dwarf_last_decl;
-
-/* A flag indicating that we are emitting the member declarations of a
- class, so member functions and variables should not be entirely emitted.
- This is a kludge to avoid passing a second argument to output_*_die. */
-
-static int in_class;
-
-/* Forward declarations for functions defined in this file. */
-
-static void dwarfout_init PARAMS ((const char *));
-static void dwarfout_finish PARAMS ((const char *));
-static void dwarfout_define PARAMS ((unsigned int, const char *));
-static void dwarfout_undef PARAMS ((unsigned int, const char *));
-static void dwarfout_start_source_file PARAMS ((unsigned, const char *));
-static void dwarfout_start_source_file_check PARAMS ((unsigned, const char *));
-static void dwarfout_end_source_file PARAMS ((unsigned));
-static void dwarfout_end_source_file_check PARAMS ((unsigned));
-static void dwarfout_begin_block PARAMS ((unsigned, unsigned));
-static void dwarfout_end_block PARAMS ((unsigned, unsigned));
-static void dwarfout_end_epilogue PARAMS ((unsigned int, const char *));
-static void dwarfout_source_line PARAMS ((unsigned int, const char *));
-static void dwarfout_end_prologue PARAMS ((unsigned int, const char *));
-static void dwarfout_end_function PARAMS ((unsigned int));
-static void dwarfout_function_decl PARAMS ((tree));
-static void dwarfout_global_decl PARAMS ((tree));
-static void dwarfout_deferred_inline_function PARAMS ((tree));
-static void dwarfout_file_scope_decl PARAMS ((tree , int));
-static const char *dwarf_tag_name PARAMS ((unsigned));
-static const char *dwarf_attr_name PARAMS ((unsigned));
-static const char *dwarf_stack_op_name PARAMS ((unsigned));
-static const char *dwarf_typemod_name PARAMS ((unsigned));
-static const char *dwarf_fmt_byte_name PARAMS ((unsigned));
-static const char *dwarf_fund_type_name PARAMS ((unsigned));
-static tree decl_ultimate_origin PARAMS ((tree));
-static tree block_ultimate_origin PARAMS ((tree));
-static tree decl_class_context PARAMS ((tree));
-#if 0
-static void output_unsigned_leb128 PARAMS ((unsigned long));
-static void output_signed_leb128 PARAMS ((long));
-#endif
-static int fundamental_type_code PARAMS ((tree));
-static tree root_type_1 PARAMS ((tree, int));
-static tree root_type PARAMS ((tree));
-static void write_modifier_bytes_1 PARAMS ((tree, int, int, int));
-static void write_modifier_bytes PARAMS ((tree, int, int));
-static inline int type_is_fundamental PARAMS ((tree));
-static void equate_decl_number_to_die_number PARAMS ((tree));
-static inline void equate_type_number_to_die_number PARAMS ((tree));
-static void output_reg_number PARAMS ((rtx));
-static void output_mem_loc_descriptor PARAMS ((rtx));
-static void output_loc_descriptor PARAMS ((rtx));
-static void output_bound_representation PARAMS ((tree, unsigned, int));
-static void output_enumeral_list PARAMS ((tree));
-static inline HOST_WIDE_INT ceiling PARAMS ((HOST_WIDE_INT, unsigned int));
-static inline tree field_type PARAMS ((tree));
-static inline unsigned int simple_type_align_in_bits PARAMS ((tree));
-static inline unsigned HOST_WIDE_INT simple_type_size_in_bits PARAMS ((tree));
-static HOST_WIDE_INT field_byte_offset PARAMS ((tree));
-static inline void sibling_attribute PARAMS ((void));
-static void location_attribute PARAMS ((rtx));
-static void data_member_location_attribute PARAMS ((tree));
-static void const_value_attribute PARAMS ((rtx));
-static void location_or_const_value_attribute PARAMS ((tree));
-static inline void name_attribute PARAMS ((const char *));
-static inline void fund_type_attribute PARAMS ((unsigned));
-static void mod_fund_type_attribute PARAMS ((tree, int, int));
-static inline void user_def_type_attribute PARAMS ((tree));
-static void mod_u_d_type_attribute PARAMS ((tree, int, int));
-#ifdef USE_ORDERING_ATTRIBUTE
-static inline void ordering_attribute PARAMS ((unsigned));
-#endif /* defined(USE_ORDERING_ATTRIBUTE) */
-static void subscript_data_attribute PARAMS ((tree));
-static void byte_size_attribute PARAMS ((tree));
-static inline void bit_offset_attribute PARAMS ((tree));
-static inline void bit_size_attribute PARAMS ((tree));
-static inline void element_list_attribute PARAMS ((tree));
-static inline void stmt_list_attribute PARAMS ((const char *));
-static inline void low_pc_attribute PARAMS ((const char *));
-static inline void high_pc_attribute PARAMS ((const char *));
-static inline void body_begin_attribute PARAMS ((const char *));
-static inline void body_end_attribute PARAMS ((const char *));
-static inline void language_attribute PARAMS ((unsigned));
-static inline void member_attribute PARAMS ((tree));
-#if 0
-static inline void string_length_attribute PARAMS ((tree));
-#endif
-static inline void comp_dir_attribute PARAMS ((const char *));
-static inline void sf_names_attribute PARAMS ((const char *));
-static inline void src_info_attribute PARAMS ((const char *));
-static inline void mac_info_attribute PARAMS ((const char *));
-static inline void prototyped_attribute PARAMS ((tree));
-static inline void producer_attribute PARAMS ((const char *));
-static inline void inline_attribute PARAMS ((tree));
-static inline void containing_type_attribute PARAMS ((tree));
-static inline void abstract_origin_attribute PARAMS ((tree));
-#ifdef DWARF_DECL_COORDINATES
-static inline void src_coords_attribute PARAMS ((unsigned, unsigned));
-#endif /* defined(DWARF_DECL_COORDINATES) */
-static inline void pure_or_virtual_attribute PARAMS ((tree));
-static void name_and_src_coords_attributes PARAMS ((tree));
-static void type_attribute PARAMS ((tree, int, int));
-static const char *type_tag PARAMS ((tree));
-static inline void dienum_push PARAMS ((void));
-static inline void dienum_pop PARAMS ((void));
-static inline tree member_declared_type PARAMS ((tree));
-static const char *function_start_label PARAMS ((tree));
-static void output_array_type_die PARAMS ((void *));
-static void output_set_type_die PARAMS ((void *));
-#if 0
-static void output_entry_point_die PARAMS ((void *));
-#endif
-static void output_inlined_enumeration_type_die PARAMS ((void *));
-static void output_inlined_structure_type_die PARAMS ((void *));
-static void output_inlined_union_type_die PARAMS ((void *));
-static void output_enumeration_type_die PARAMS ((void *));
-static void output_formal_parameter_die PARAMS ((void *));
-static void output_global_subroutine_die PARAMS ((void *));
-static void output_global_variable_die PARAMS ((void *));
-static void output_label_die PARAMS ((void *));
-static void output_lexical_block_die PARAMS ((void *));
-static void output_inlined_subroutine_die PARAMS ((void *));
-static void output_local_variable_die PARAMS ((void *));
-static void output_member_die PARAMS ((void *));
-#if 0
-static void output_pointer_type_die PARAMS ((void *));
-static void output_reference_type_die PARAMS ((void *));
-#endif
-static void output_ptr_to_mbr_type_die PARAMS ((void *));
-static void output_compile_unit_die PARAMS ((void *));
-static void output_string_type_die PARAMS ((void *));
-static void output_inheritance_die PARAMS ((void *));
-static void output_structure_type_die PARAMS ((void *));
-static void output_local_subroutine_die PARAMS ((void *));
-static void output_subroutine_type_die PARAMS ((void *));
-static void output_typedef_die PARAMS ((void *));
-static void output_union_type_die PARAMS ((void *));
-static void output_unspecified_parameters_die PARAMS ((void *));
-static void output_padded_null_die PARAMS ((void *));
-static void output_die PARAMS ((void (*)(void *), void *));
-static void end_sibling_chain PARAMS ((void));
-static void output_formal_types PARAMS ((tree));
-static void pend_type PARAMS ((tree));
-static int type_ok_for_scope PARAMS ((tree, tree));
-static void output_pending_types_for_scope PARAMS ((tree));
-static void output_type PARAMS ((tree, tree));
-static void output_tagged_type_instantiation PARAMS ((tree));
-static void output_block PARAMS ((tree, int));
-static void output_decls_for_scope PARAMS ((tree, int));
-static void output_decl PARAMS ((tree, tree));
-static void shuffle_filename_entry PARAMS ((filename_entry *));
-static void generate_new_sfname_entry PARAMS ((void));
-static unsigned lookup_filename PARAMS ((const char *));
-static void generate_srcinfo_entry PARAMS ((unsigned, unsigned));
-static void generate_macinfo_entry PARAMS ((unsigned int, rtx,
- const char *));
-static int is_pseudo_reg PARAMS ((rtx));
-static tree type_main_variant PARAMS ((tree));
-static int is_tagged_type PARAMS ((tree));
-static int is_redundant_typedef PARAMS ((tree));
-static void add_incomplete_type PARAMS ((tree));
-static void retry_incomplete_types PARAMS ((void));
-
-/* Definitions of defaults for assembler-dependent names of various
- pseudo-ops and section names.
-
- Theses may be overridden in your tm.h file (if necessary) for your
- particular assembler. The default values provided here correspond to
- what is expected by "standard" AT&T System V.4 assemblers. */
-
-#ifndef FILE_ASM_OP
-#define FILE_ASM_OP "\t.file\t"
-#endif
-#ifndef SET_ASM_OP
-#define SET_ASM_OP "\t.set\t"
-#endif
-
-/* Pseudo-ops for pushing the current section onto the section stack (and
- simultaneously changing to a new section) and for poping back to the
- section we were in immediately before this one. Note that most svr4
- assemblers only maintain a one level stack... you can push all the
- sections you want, but you can only pop out one level. (The sparc
- svr4 assembler is an exception to this general rule.) That's
- OK because we only use at most one level of the section stack herein. */
-
-#ifndef PUSHSECTION_ASM_OP
-#define PUSHSECTION_ASM_OP "\t.section\t"
-#endif
-#ifndef POPSECTION_ASM_OP
-#define POPSECTION_ASM_OP "\t.previous"
-#endif
-
-/* The default format used by the ASM_OUTPUT_PUSH_SECTION macro (see below)
- to print the PUSHSECTION_ASM_OP and the section name. The default here
- works for almost all svr4 assemblers, except for the sparc, where the
- section name must be enclosed in double quotes. (See sparcv4.h.) */
-
-#ifndef PUSHSECTION_FORMAT
-#define PUSHSECTION_FORMAT "%s%s\n"
-#endif
-
-#ifndef DEBUG_SECTION
-#define DEBUG_SECTION ".debug"
-#endif
-#ifndef LINE_SECTION
-#define LINE_SECTION ".line"
-#endif
-#ifndef DEBUG_SFNAMES_SECTION
-#define DEBUG_SFNAMES_SECTION ".debug_sfnames"
-#endif
-#ifndef DEBUG_SRCINFO_SECTION
-#define DEBUG_SRCINFO_SECTION ".debug_srcinfo"
-#endif
-#ifndef DEBUG_MACINFO_SECTION
-#define DEBUG_MACINFO_SECTION ".debug_macinfo"
-#endif
-#ifndef DEBUG_PUBNAMES_SECTION
-#define DEBUG_PUBNAMES_SECTION ".debug_pubnames"
-#endif
-#ifndef DEBUG_ARANGES_SECTION
-#define DEBUG_ARANGES_SECTION ".debug_aranges"
-#endif
-#ifndef TEXT_SECTION_NAME
-#define TEXT_SECTION_NAME ".text"
-#endif
-#ifndef DATA_SECTION_NAME
-#define DATA_SECTION_NAME ".data"
-#endif
-#ifndef DATA1_SECTION_NAME
-#define DATA1_SECTION_NAME ".data1"
-#endif
-#ifndef RODATA_SECTION_NAME
-#define RODATA_SECTION_NAME ".rodata"
-#endif
-#ifndef RODATA1_SECTION_NAME
-#define RODATA1_SECTION_NAME ".rodata1"
-#endif
-#ifndef BSS_SECTION_NAME
-#define BSS_SECTION_NAME ".bss"
-#endif
-
-/* Definitions of defaults for formats and names of various special
- (artificial) labels which may be generated within this file (when
- the -g options is used and DWARF_DEBUGGING_INFO is in effect.
-
- If necessary, these may be overridden from within your tm.h file,
- but typically, you should never need to override these.
-
- These labels have been hacked (temporarily) so that they all begin with
- a `.L' sequence so as to appease the stock sparc/svr4 assembler and the
- stock m88k/svr4 assembler, both of which need to see .L at the start of
- a label in order to prevent that label from going into the linker symbol
- table). When I get time, I'll have to fix this the right way so that we
- will use ASM_GENERATE_INTERNAL_LABEL and ASM_OUTPUT_INTERNAL_LABEL herein,
- but that will require a rather massive set of changes. For the moment,
- the following definitions out to produce the right results for all svr4
- and svr3 assemblers. -- rfg
-*/
-
-#ifndef TEXT_BEGIN_LABEL
-#define TEXT_BEGIN_LABEL "*.L_text_b"
-#endif
-#ifndef TEXT_END_LABEL
-#define TEXT_END_LABEL "*.L_text_e"
-#endif
-
-#ifndef DATA_BEGIN_LABEL
-#define DATA_BEGIN_LABEL "*.L_data_b"
-#endif
-#ifndef DATA_END_LABEL
-#define DATA_END_LABEL "*.L_data_e"
-#endif
-
-#ifndef DATA1_BEGIN_LABEL
-#define DATA1_BEGIN_LABEL "*.L_data1_b"
-#endif
-#ifndef DATA1_END_LABEL
-#define DATA1_END_LABEL "*.L_data1_e"
-#endif
-
-#ifndef RODATA_BEGIN_LABEL
-#define RODATA_BEGIN_LABEL "*.L_rodata_b"
-#endif
-#ifndef RODATA_END_LABEL
-#define RODATA_END_LABEL "*.L_rodata_e"
-#endif
-
-#ifndef RODATA1_BEGIN_LABEL
-#define RODATA1_BEGIN_LABEL "*.L_rodata1_b"
-#endif
-#ifndef RODATA1_END_LABEL
-#define RODATA1_END_LABEL "*.L_rodata1_e"
-#endif
-
-#ifndef BSS_BEGIN_LABEL
-#define BSS_BEGIN_LABEL "*.L_bss_b"
-#endif
-#ifndef BSS_END_LABEL
-#define BSS_END_LABEL "*.L_bss_e"
-#endif
-
-#ifndef LINE_BEGIN_LABEL
-#define LINE_BEGIN_LABEL "*.L_line_b"
-#endif
-#ifndef LINE_LAST_ENTRY_LABEL
-#define LINE_LAST_ENTRY_LABEL "*.L_line_last"
-#endif
-#ifndef LINE_END_LABEL
-#define LINE_END_LABEL "*.L_line_e"
-#endif
-
-#ifndef DEBUG_BEGIN_LABEL
-#define DEBUG_BEGIN_LABEL "*.L_debug_b"
-#endif
-#ifndef SFNAMES_BEGIN_LABEL
-#define SFNAMES_BEGIN_LABEL "*.L_sfnames_b"
-#endif
-#ifndef SRCINFO_BEGIN_LABEL
-#define SRCINFO_BEGIN_LABEL "*.L_srcinfo_b"
-#endif
-#ifndef MACINFO_BEGIN_LABEL
-#define MACINFO_BEGIN_LABEL "*.L_macinfo_b"
-#endif
-
-#ifndef DEBUG_ARANGES_BEGIN_LABEL
-#define DEBUG_ARANGES_BEGIN_LABEL "*.L_debug_aranges_begin"
-#endif
-#ifndef DEBUG_ARANGES_END_LABEL
-#define DEBUG_ARANGES_END_LABEL "*.L_debug_aranges_end"
-#endif
-
-#ifndef DIE_BEGIN_LABEL_FMT
-#define DIE_BEGIN_LABEL_FMT "*.L_D%u"
-#endif
-#ifndef DIE_END_LABEL_FMT
-#define DIE_END_LABEL_FMT "*.L_D%u_e"
-#endif
-#ifndef PUB_DIE_LABEL_FMT
-#define PUB_DIE_LABEL_FMT "*.L_P%u"
-#endif
-#ifndef BLOCK_BEGIN_LABEL_FMT
-#define BLOCK_BEGIN_LABEL_FMT "*.L_B%u"
-#endif
-#ifndef BLOCK_END_LABEL_FMT
-#define BLOCK_END_LABEL_FMT "*.L_B%u_e"
-#endif
-#ifndef SS_BEGIN_LABEL_FMT
-#define SS_BEGIN_LABEL_FMT "*.L_s%u"
-#endif
-#ifndef SS_END_LABEL_FMT
-#define SS_END_LABEL_FMT "*.L_s%u_e"
-#endif
-#ifndef EE_BEGIN_LABEL_FMT
-#define EE_BEGIN_LABEL_FMT "*.L_e%u"
-#endif
-#ifndef EE_END_LABEL_FMT
-#define EE_END_LABEL_FMT "*.L_e%u_e"
-#endif
-#ifndef MT_BEGIN_LABEL_FMT
-#define MT_BEGIN_LABEL_FMT "*.L_t%u"
-#endif
-#ifndef MT_END_LABEL_FMT
-#define MT_END_LABEL_FMT "*.L_t%u_e"
-#endif
-#ifndef LOC_BEGIN_LABEL_FMT
-#define LOC_BEGIN_LABEL_FMT "*.L_l%u"
-#endif
-#ifndef LOC_END_LABEL_FMT
-#define LOC_END_LABEL_FMT "*.L_l%u_e"
-#endif
-#ifndef BOUND_BEGIN_LABEL_FMT
-#define BOUND_BEGIN_LABEL_FMT "*.L_b%u_%u_%c"
-#endif
-#ifndef BOUND_END_LABEL_FMT
-#define BOUND_END_LABEL_FMT "*.L_b%u_%u_%c_e"
-#endif
-#ifndef BODY_BEGIN_LABEL_FMT
-#define BODY_BEGIN_LABEL_FMT "*.L_b%u"
-#endif
-#ifndef BODY_END_LABEL_FMT
-#define BODY_END_LABEL_FMT "*.L_b%u_e"
-#endif
-#ifndef FUNC_END_LABEL_FMT
-#define FUNC_END_LABEL_FMT "*.L_f%u_e"
-#endif
-#ifndef TYPE_NAME_FMT
-#define TYPE_NAME_FMT "*.L_T%u"
-#endif
-#ifndef DECL_NAME_FMT
-#define DECL_NAME_FMT "*.L_E%u"
-#endif
-#ifndef LINE_CODE_LABEL_FMT
-#define LINE_CODE_LABEL_FMT "*.L_LC%u"
-#endif
-#ifndef SFNAMES_ENTRY_LABEL_FMT
-#define SFNAMES_ENTRY_LABEL_FMT "*.L_F%u"
-#endif
-#ifndef LINE_ENTRY_LABEL_FMT
-#define LINE_ENTRY_LABEL_FMT "*.L_LE%u"
-#endif
-
-/* Definitions of defaults for various types of primitive assembly language
- output operations.
-
- If necessary, these may be overridden from within your tm.h file,
- but typically, you shouldn't need to override these. */
-
-#ifndef ASM_OUTPUT_PUSH_SECTION
-#define ASM_OUTPUT_PUSH_SECTION(FILE, SECTION) \
- fprintf ((FILE), PUSHSECTION_FORMAT, PUSHSECTION_ASM_OP, SECTION)
-#endif
-
-#ifndef ASM_OUTPUT_POP_SECTION
-#define ASM_OUTPUT_POP_SECTION(FILE) \
- fprintf ((FILE), "%s\n", POPSECTION_ASM_OP)
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_DELTA2
-#define ASM_OUTPUT_DWARF_DELTA2(FILE,LABEL1,LABEL2) \
- dw2_asm_output_delta (2, LABEL1, LABEL2, NULL)
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_DELTA4
-#define ASM_OUTPUT_DWARF_DELTA4(FILE,LABEL1,LABEL2) \
- dw2_asm_output_delta (4, LABEL1, LABEL2, NULL)
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_TAG
-#define ASM_OUTPUT_DWARF_TAG(FILE,TAG) \
- dw2_asm_output_data (2, TAG, "%s", dwarf_tag_name (TAG));
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_ATTRIBUTE
-#define ASM_OUTPUT_DWARF_ATTRIBUTE(FILE,ATTR) \
- dw2_asm_output_data (2, ATTR, "%s", dwarf_attr_name (ATTR))
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_STACK_OP
-#define ASM_OUTPUT_DWARF_STACK_OP(FILE,OP) \
- dw2_asm_output_data (1, OP, "%s", dwarf_stack_op_name (OP))
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_FUND_TYPE
-#define ASM_OUTPUT_DWARF_FUND_TYPE(FILE,FT) \
- dw2_asm_output_data (2, FT, "%s", dwarf_fund_type_name (FT))
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_FMT_BYTE
-#define ASM_OUTPUT_DWARF_FMT_BYTE(FILE,FMT) \
- dw2_asm_output_data (1, FMT, "%s", dwarf_fmt_byte_name (FMT));
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_TYPE_MODIFIER
-#define ASM_OUTPUT_DWARF_TYPE_MODIFIER(FILE,MOD) \
- dw2_asm_output_data (1, MOD, "%s", dwarf_typemod_name (MOD));
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_ADDR
-#define ASM_OUTPUT_DWARF_ADDR(FILE,LABEL) \
- dw2_asm_output_addr (4, LABEL, NULL)
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_ADDR_CONST
-#define ASM_OUTPUT_DWARF_ADDR_CONST(FILE,RTX) \
- dw2_asm_output_addr_rtx (4, RTX, NULL)
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_REF
-#define ASM_OUTPUT_DWARF_REF(FILE,LABEL) \
- dw2_asm_output_addr (4, LABEL, NULL)
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_DATA1
-#define ASM_OUTPUT_DWARF_DATA1(FILE,VALUE) \
- dw2_asm_output_data (1, VALUE, NULL)
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_DATA2
-#define ASM_OUTPUT_DWARF_DATA2(FILE,VALUE) \
- dw2_asm_output_data (2, VALUE, NULL)
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_DATA4
-#define ASM_OUTPUT_DWARF_DATA4(FILE,VALUE) \
- dw2_asm_output_data (4, VALUE, NULL)
-#endif
-
-#ifndef ASM_OUTPUT_DWARF_DATA8
-#define ASM_OUTPUT_DWARF_DATA8(FILE,HIGH_VALUE,LOW_VALUE) \
- dw2_asm_output_data (8, VALUE, NULL)
-#endif
-
-/* ASM_OUTPUT_DWARF_STRING is defined to output an ascii string, but to
- NOT issue a trailing newline. We define ASM_OUTPUT_DWARF_STRING_NEWLINE
- based on whether ASM_OUTPUT_DWARF_STRING is defined or not. If it is
- defined, we call it, then issue the line feed. If not, we supply a
- default definition of calling ASM_OUTPUT_ASCII */
-
-#ifndef ASM_OUTPUT_DWARF_STRING
-#define ASM_OUTPUT_DWARF_STRING_NEWLINE(FILE,P) \
- ASM_OUTPUT_ASCII ((FILE), P, strlen (P)+1)
-#else
-#define ASM_OUTPUT_DWARF_STRING_NEWLINE(FILE,P) \
- ASM_OUTPUT_DWARF_STRING (FILE,P), ASM_OUTPUT_DWARF_STRING (FILE,"\n")
-#endif
-
-
-/* The debug hooks structure. */
-const struct gcc_debug_hooks dwarf_debug_hooks =
-{
- dwarfout_init,
- dwarfout_finish,
- dwarfout_define,
- dwarfout_undef,
- dwarfout_start_source_file_check,
- dwarfout_end_source_file_check,
- dwarfout_begin_block,
- dwarfout_end_block,
- debug_true_tree, /* ignore_block */
- dwarfout_source_line, /* source_line */
- dwarfout_source_line, /* begin_prologue */
- dwarfout_end_prologue,
- dwarfout_end_epilogue,
- debug_nothing_tree, /* begin_function */
- dwarfout_end_function,
- dwarfout_function_decl,
- dwarfout_global_decl,
- dwarfout_deferred_inline_function,
- debug_nothing_tree, /* outlining_inline_function */
- debug_nothing_rtx /* label */
-};
-
-/************************ general utility functions **************************/
-
-static inline int
-is_pseudo_reg (rtl)
- rtx rtl;
-{
- return (((GET_CODE (rtl) == REG) && (REGNO (rtl) >= FIRST_PSEUDO_REGISTER))
- || ((GET_CODE (rtl) == SUBREG)
- && (REGNO (SUBREG_REG (rtl)) >= FIRST_PSEUDO_REGISTER)));
-}
-
-static inline tree
-type_main_variant (type)
- tree type;
-{
- type = TYPE_MAIN_VARIANT (type);
-
- /* There really should be only one main variant among any group of variants
- of a given type (and all of the MAIN_VARIANT values for all members of
- the group should point to that one type) but sometimes the C front-end
- messes this up for array types, so we work around that bug here. */
-
- if (TREE_CODE (type) == ARRAY_TYPE)
- {
- while (type != TYPE_MAIN_VARIANT (type))
- type = TYPE_MAIN_VARIANT (type);
- }
-
- return type;
-}
-
-/* Return nonzero if the given type node represents a tagged type. */
-
-static inline int
-is_tagged_type (type)
- tree type;
-{
- enum tree_code code = TREE_CODE (type);
-
- return (code == RECORD_TYPE || code == UNION_TYPE
- || code == QUAL_UNION_TYPE || code == ENUMERAL_TYPE);
-}
-
-static const char *
-dwarf_tag_name (tag)
- unsigned tag;
-{
- switch (tag)
- {
- case TAG_padding: return "TAG_padding";
- case TAG_array_type: return "TAG_array_type";
- case TAG_class_type: return "TAG_class_type";
- case TAG_entry_point: return "TAG_entry_point";
- case TAG_enumeration_type: return "TAG_enumeration_type";
- case TAG_formal_parameter: return "TAG_formal_parameter";
- case TAG_global_subroutine: return "TAG_global_subroutine";
- case TAG_global_variable: return "TAG_global_variable";
- case TAG_label: return "TAG_label";
- case TAG_lexical_block: return "TAG_lexical_block";
- case TAG_local_variable: return "TAG_local_variable";
- case TAG_member: return "TAG_member";
- case TAG_pointer_type: return "TAG_pointer_type";
- case TAG_reference_type: return "TAG_reference_type";
- case TAG_compile_unit: return "TAG_compile_unit";
- case TAG_string_type: return "TAG_string_type";
- case TAG_structure_type: return "TAG_structure_type";
- case TAG_subroutine: return "TAG_subroutine";
- case TAG_subroutine_type: return "TAG_subroutine_type";
- case TAG_typedef: return "TAG_typedef";
- case TAG_union_type: return "TAG_union_type";
- case TAG_unspecified_parameters: return "TAG_unspecified_parameters";
- case TAG_variant: return "TAG_variant";
- case TAG_common_block: return "TAG_common_block";
- case TAG_common_inclusion: return "TAG_common_inclusion";
- case TAG_inheritance: return "TAG_inheritance";
- case TAG_inlined_subroutine: return "TAG_inlined_subroutine";
- case TAG_module: return "TAG_module";
- case TAG_ptr_to_member_type: return "TAG_ptr_to_member_type";
- case TAG_set_type: return "TAG_set_type";
- case TAG_subrange_type: return "TAG_subrange_type";
- case TAG_with_stmt: return "TAG_with_stmt";
-
- /* GNU extensions. */
-
- case TAG_format_label: return "TAG_format_label";
- case TAG_namelist: return "TAG_namelist";
- case TAG_function_template: return "TAG_function_template";
- case TAG_class_template: return "TAG_class_template";
-
- default: return "TAG_<unknown>";
- }
-}
-
-static const char *
-dwarf_attr_name (attr)
- unsigned attr;
-{
- switch (attr)
- {
- case AT_sibling: return "AT_sibling";
- case AT_location: return "AT_location";
- case AT_name: return "AT_name";
- case AT_fund_type: return "AT_fund_type";
- case AT_mod_fund_type: return "AT_mod_fund_type";
- case AT_user_def_type: return "AT_user_def_type";
- case AT_mod_u_d_type: return "AT_mod_u_d_type";
- case AT_ordering: return "AT_ordering";
- case AT_subscr_data: return "AT_subscr_data";
- case AT_byte_size: return "AT_byte_size";
- case AT_bit_offset: return "AT_bit_offset";
- case AT_bit_size: return "AT_bit_size";
- case AT_element_list: return "AT_element_list";
- case AT_stmt_list: return "AT_stmt_list";
- case AT_low_pc: return "AT_low_pc";
- case AT_high_pc: return "AT_high_pc";
- case AT_language: return "AT_language";
- case AT_member: return "AT_member";
- case AT_discr: return "AT_discr";
- case AT_discr_value: return "AT_discr_value";
- case AT_string_length: return "AT_string_length";
- case AT_common_reference: return "AT_common_reference";
- case AT_comp_dir: return "AT_comp_dir";
- case AT_const_value_string: return "AT_const_value_string";
- case AT_const_value_data2: return "AT_const_value_data2";
- case AT_const_value_data4: return "AT_const_value_data4";
- case AT_const_value_data8: return "AT_const_value_data8";
- case AT_const_value_block2: return "AT_const_value_block2";
- case AT_const_value_block4: return "AT_const_value_block4";
- case AT_containing_type: return "AT_containing_type";
- case AT_default_value_addr: return "AT_default_value_addr";
- case AT_default_value_data2: return "AT_default_value_data2";
- case AT_default_value_data4: return "AT_default_value_data4";
- case AT_default_value_data8: return "AT_default_value_data8";
- case AT_default_value_string: return "AT_default_value_string";
- case AT_friends: return "AT_friends";
- case AT_inline: return "AT_inline";
- case AT_is_optional: return "AT_is_optional";
- case AT_lower_bound_ref: return "AT_lower_bound_ref";
- case AT_lower_bound_data2: return "AT_lower_bound_data2";
- case AT_lower_bound_data4: return "AT_lower_bound_data4";
- case AT_lower_bound_data8: return "AT_lower_bound_data8";
- case AT_private: return "AT_private";
- case AT_producer: return "AT_producer";
- case AT_program: return "AT_program";
- case AT_protected: return "AT_protected";
- case AT_prototyped: return "AT_prototyped";
- case AT_public: return "AT_public";
- case AT_pure_virtual: return "AT_pure_virtual";
- case AT_return_addr: return "AT_return_addr";
- case AT_abstract_origin: return "AT_abstract_origin";
- case AT_start_scope: return "AT_start_scope";
- case AT_stride_size: return "AT_stride_size";
- case AT_upper_bound_ref: return "AT_upper_bound_ref";
- case AT_upper_bound_data2: return "AT_upper_bound_data2";
- case AT_upper_bound_data4: return "AT_upper_bound_data4";
- case AT_upper_bound_data8: return "AT_upper_bound_data8";
- case AT_virtual: return "AT_virtual";
-
- /* GNU extensions */
-
- case AT_sf_names: return "AT_sf_names";
- case AT_src_info: return "AT_src_info";
- case AT_mac_info: return "AT_mac_info";
- case AT_src_coords: return "AT_src_coords";
- case AT_body_begin: return "AT_body_begin";
- case AT_body_end: return "AT_body_end";
-
- default: return "AT_<unknown>";
- }
-}
-
-static const char *
-dwarf_stack_op_name (op)
- unsigned op;
-{
- switch (op)
- {
- case OP_REG: return "OP_REG";
- case OP_BASEREG: return "OP_BASEREG";
- case OP_ADDR: return "OP_ADDR";
- case OP_CONST: return "OP_CONST";
- case OP_DEREF2: return "OP_DEREF2";
- case OP_DEREF4: return "OP_DEREF4";
- case OP_ADD: return "OP_ADD";
- default: return "OP_<unknown>";
- }
-}
-
-static const char *
-dwarf_typemod_name (mod)
- unsigned mod;
-{
- switch (mod)
- {
- case MOD_pointer_to: return "MOD_pointer_to";
- case MOD_reference_to: return "MOD_reference_to";
- case MOD_const: return "MOD_const";
- case MOD_volatile: return "MOD_volatile";
- default: return "MOD_<unknown>";
- }
-}
-
-static const char *
-dwarf_fmt_byte_name (fmt)
- unsigned fmt;
-{
- switch (fmt)
- {
- case FMT_FT_C_C: return "FMT_FT_C_C";
- case FMT_FT_C_X: return "FMT_FT_C_X";
- case FMT_FT_X_C: return "FMT_FT_X_C";
- case FMT_FT_X_X: return "FMT_FT_X_X";
- case FMT_UT_C_C: return "FMT_UT_C_C";
- case FMT_UT_C_X: return "FMT_UT_C_X";
- case FMT_UT_X_C: return "FMT_UT_X_C";
- case FMT_UT_X_X: return "FMT_UT_X_X";
- case FMT_ET: return "FMT_ET";
- default: return "FMT_<unknown>";
- }
-}
-
-static const char *
-dwarf_fund_type_name (ft)
- unsigned ft;
-{
- switch (ft)
- {
- case FT_char: return "FT_char";
- case FT_signed_char: return "FT_signed_char";
- case FT_unsigned_char: return "FT_unsigned_char";
- case FT_short: return "FT_short";
- case FT_signed_short: return "FT_signed_short";
- case FT_unsigned_short: return "FT_unsigned_short";
- case FT_integer: return "FT_integer";
- case FT_signed_integer: return "FT_signed_integer";
- case FT_unsigned_integer: return "FT_unsigned_integer";
- case FT_long: return "FT_long";
- case FT_signed_long: return "FT_signed_long";
- case FT_unsigned_long: return "FT_unsigned_long";
- case FT_pointer: return "FT_pointer";
- case FT_float: return "FT_float";
- case FT_dbl_prec_float: return "FT_dbl_prec_float";
- case FT_ext_prec_float: return "FT_ext_prec_float";
- case FT_complex: return "FT_complex";
- case FT_dbl_prec_complex: return "FT_dbl_prec_complex";
- case FT_void: return "FT_void";
- case FT_boolean: return "FT_boolean";
- case FT_ext_prec_complex: return "FT_ext_prec_complex";
- case FT_label: return "FT_label";
-
- /* GNU extensions. */
-
- case FT_long_long: return "FT_long_long";
- case FT_signed_long_long: return "FT_signed_long_long";
- case FT_unsigned_long_long: return "FT_unsigned_long_long";
-
- case FT_int8: return "FT_int8";
- case FT_signed_int8: return "FT_signed_int8";
- case FT_unsigned_int8: return "FT_unsigned_int8";
- case FT_int16: return "FT_int16";
- case FT_signed_int16: return "FT_signed_int16";
- case FT_unsigned_int16: return "FT_unsigned_int16";
- case FT_int32: return "FT_int32";
- case FT_signed_int32: return "FT_signed_int32";
- case FT_unsigned_int32: return "FT_unsigned_int32";
- case FT_int64: return "FT_int64";
- case FT_signed_int64: return "FT_signed_int64";
- case FT_unsigned_int64: return "FT_unsigned_int64";
- case FT_int128: return "FT_int128";
- case FT_signed_int128: return "FT_signed_int128";
- case FT_unsigned_int128: return "FT_unsigned_int128";
-
- case FT_real32: return "FT_real32";
- case FT_real64: return "FT_real64";
- case FT_real96: return "FT_real96";
- case FT_real128: return "FT_real128";
-
- default: return "FT_<unknown>";
- }
-}
-
-/* Determine the "ultimate origin" of a decl. The decl may be an
- inlined instance of an inlined instance of a decl which is local
- to an inline function, so we have to trace all of the way back
- through the origin chain to find out what sort of node actually
- served as the original seed for the given block. */
-
-static tree
-decl_ultimate_origin (decl)
- tree decl;
-{
-#ifdef ENABLE_CHECKING
- if (DECL_FROM_INLINE (DECL_ORIGIN (decl)))
- /* Since the DECL_ABSTRACT_ORIGIN for a DECL is supposed to be the
- most distant ancestor, this should never happen. */
- abort ();
-#endif
-
- return DECL_ABSTRACT_ORIGIN (decl);
-}
-
-/* Determine the "ultimate origin" of a block. The block may be an
- inlined instance of an inlined instance of a block which is local
- to an inline function, so we have to trace all of the way back
- through the origin chain to find out what sort of node actually
- served as the original seed for the given block. */
-
-static tree
-block_ultimate_origin (block)
- tree block;
-{
- tree immediate_origin = BLOCK_ABSTRACT_ORIGIN (block);
-
- if (immediate_origin == NULL)
- return NULL;
- else
- {
- tree ret_val;
- tree lookahead = immediate_origin;
-
- do
- {
- ret_val = lookahead;
- lookahead = (TREE_CODE (ret_val) == BLOCK)
- ? BLOCK_ABSTRACT_ORIGIN (ret_val)
- : NULL;
- }
- while (lookahead != NULL && lookahead != ret_val);
- return ret_val;
- }
-}
-
-/* Get the class to which DECL belongs, if any. In g++, the DECL_CONTEXT
- of a virtual function may refer to a base class, so we check the 'this'
- parameter. */
-
-static tree
-decl_class_context (decl)
- tree decl;
-{
- tree context = NULL_TREE;
- if (TREE_CODE (decl) != FUNCTION_DECL || ! DECL_VINDEX (decl))
- context = DECL_CONTEXT (decl);
- else
- context = TYPE_MAIN_VARIANT
- (TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (decl)))));
-
- if (context && !TYPE_P (context))
- context = NULL_TREE;
-
- return context;
-}
-
-#if 0
-static void
-output_unsigned_leb128 (value)
- unsigned long value;
-{
- unsigned long orig_value = value;
-
- do
- {
- unsigned byte = (value & 0x7f);
-
- value >>= 7;
- if (value != 0) /* more bytes to follow */
- byte |= 0x80;
- dw2_asm_output_data (1, byte, "\t%s ULEB128 number - value = %lu",
- orig_value);
- }
- while (value != 0);
-}
-
-static void
-output_signed_leb128 (value)
- long value;
-{
- long orig_value = value;
- int negative = (value < 0);
- int more;
-
- do
- {
- unsigned byte = (value & 0x7f);
-
- value >>= 7;
- if (negative)
- value |= 0xfe000000; /* manually sign extend */
- if (((value == 0) && ((byte & 0x40) == 0))
- || ((value == -1) && ((byte & 0x40) == 1)))
- more = 0;
- else
- {
- byte |= 0x80;
- more = 1;
- }
- dw2_asm_output_data (1, byte, "\t%s SLEB128 number - value = %ld",
- orig_value);
- }
- while (more);
-}
-#endif
-
-/**************** utility functions for attribute functions ******************/
-
-/* Given a pointer to a tree node for some type, return a Dwarf fundamental
- type code for the given type.
-
- This routine must only be called for GCC type nodes that correspond to
- Dwarf fundamental types.
-
- The current Dwarf draft specification calls for Dwarf fundamental types
- to accurately reflect the fact that a given type was either a "plain"
- integral type or an explicitly "signed" integral type. Unfortunately,
- we can't always do this, because GCC may already have thrown away the
- information about the precise way in which the type was originally
- specified, as in:
-
- typedef signed int my_type;
-
- struct s { my_type f; };
-
- Since we may be stuck here without enough information to do exactly
- what is called for in the Dwarf draft specification, we do the best
- that we can under the circumstances and always use the "plain" integral
- fundamental type codes for int, short, and long types. That's probably
- good enough. The additional accuracy called for in the current DWARF
- draft specification is probably never even useful in practice. */
-
-static int
-fundamental_type_code (type)
- tree type;
-{
- if (TREE_CODE (type) == ERROR_MARK)
- return 0;
-
- switch (TREE_CODE (type))
- {
- case ERROR_MARK:
- return FT_void;
-
- case VOID_TYPE:
- return FT_void;
-
- case INTEGER_TYPE:
- /* Carefully distinguish all the standard types of C,
- without messing up if the language is not C.
- Note that we check only for the names that contain spaces;
- other names might occur by coincidence in other languages. */
- if (TYPE_NAME (type) != 0
- && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
- && DECL_NAME (TYPE_NAME (type)) != 0
- && TREE_CODE (DECL_NAME (TYPE_NAME (type))) == IDENTIFIER_NODE)
- {
- const char *const name =
- IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type)));
-
- if (!strcmp (name, "unsigned char"))
- return FT_unsigned_char;
- if (!strcmp (name, "signed char"))
- return FT_signed_char;
- if (!strcmp (name, "unsigned int"))
- return FT_unsigned_integer;
- if (!strcmp (name, "short int"))
- return FT_short;
- if (!strcmp (name, "short unsigned int"))
- return FT_unsigned_short;
- if (!strcmp (name, "long int"))
- return FT_long;
- if (!strcmp (name, "long unsigned int"))
- return FT_unsigned_long;
- if (!strcmp (name, "long long int"))
- return FT_long_long; /* Not grok'ed by svr4 SDB */
- if (!strcmp (name, "long long unsigned int"))
- return FT_unsigned_long_long; /* Not grok'ed by svr4 SDB */
- }
-
- /* Most integer types will be sorted out above, however, for the
- sake of special `array index' integer types, the following code
- is also provided. */
-
- if (TYPE_PRECISION (type) == INT_TYPE_SIZE)
- return (TREE_UNSIGNED (type) ? FT_unsigned_integer : FT_integer);
-
- if (TYPE_PRECISION (type) == LONG_TYPE_SIZE)
- return (TREE_UNSIGNED (type) ? FT_unsigned_long : FT_long);
-
- if (TYPE_PRECISION (type) == LONG_LONG_TYPE_SIZE)
- return (TREE_UNSIGNED (type) ? FT_unsigned_long_long : FT_long_long);
-
- if (TYPE_PRECISION (type) == SHORT_TYPE_SIZE)
- return (TREE_UNSIGNED (type) ? FT_unsigned_short : FT_short);
-
- if (TYPE_PRECISION (type) == CHAR_TYPE_SIZE)
- return (TREE_UNSIGNED (type) ? FT_unsigned_char : FT_char);
-
- if (TYPE_MODE (type) == TImode)
- return (TREE_UNSIGNED (type) ? FT_unsigned_int128 : FT_int128);
-
- /* In C++, __java_boolean is an INTEGER_TYPE with precision == 1 */
- if (TYPE_PRECISION (type) == 1)
- return FT_boolean;
-
- abort ();
-
- case REAL_TYPE:
- /* Carefully distinguish all the standard types of C,
- without messing up if the language is not C. */
- if (TYPE_NAME (type) != 0
- && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
- && DECL_NAME (TYPE_NAME (type)) != 0
- && TREE_CODE (DECL_NAME (TYPE_NAME (type))) == IDENTIFIER_NODE)
- {
- const char *const name =
- IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type)));
-
- /* Note that here we can run afoul of a serious bug in "classic"
- svr4 SDB debuggers. They don't seem to understand the
- FT_ext_prec_float type (even though they should). */
-
- if (!strcmp (name, "long double"))
- return FT_ext_prec_float;
- }
-
- if (TYPE_PRECISION (type) == DOUBLE_TYPE_SIZE)
- {
- /* On the SH, when compiling with -m3e or -m4-single-only, both
- float and double are 32 bits. But since the debugger doesn't
- know about the subtarget, it always thinks double is 64 bits.
- So we have to tell the debugger that the type is float to
- make the output of the 'print' command etc. readable. */
- if (DOUBLE_TYPE_SIZE == FLOAT_TYPE_SIZE && FLOAT_TYPE_SIZE == 32)
- return FT_float;
- return FT_dbl_prec_float;
- }
- if (TYPE_PRECISION (type) == FLOAT_TYPE_SIZE)
- return FT_float;
-
- /* Note that here we can run afoul of a serious bug in "classic"
- svr4 SDB debuggers. They don't seem to understand the
- FT_ext_prec_float type (even though they should). */
-
- if (TYPE_PRECISION (type) == LONG_DOUBLE_TYPE_SIZE)
- return FT_ext_prec_float;
- abort ();
-
- case COMPLEX_TYPE:
- return FT_complex; /* GNU FORTRAN COMPLEX type. */
-
- case CHAR_TYPE:
- return FT_char; /* GNU Pascal CHAR type. Not used in C. */
-
- case BOOLEAN_TYPE:
- return FT_boolean; /* GNU FORTRAN BOOLEAN type. */
-
- default:
- abort (); /* No other TREE_CODEs are Dwarf fundamental types. */
- }
- return 0;
-}
-
-/* Given a pointer to an arbitrary ..._TYPE tree node, return a pointer to
- the Dwarf "root" type for the given input type. The Dwarf "root" type
- of a given type is generally the same as the given type, except that if
- the given type is a pointer or reference type, then the root type of
- the given type is the root type of the "basis" type for the pointer or
- reference type. (This definition of the "root" type is recursive.)
- Also, the root type of a `const' qualified type or a `volatile'
- qualified type is the root type of the given type without the
- qualifiers. */
-
-static tree
-root_type_1 (type, count)
- tree type;
- int count;
-{
- /* Give up after searching 1000 levels, in case this is a recursive
- pointer type. Such types are possible in Ada, but it is not possible
- to represent them in DWARF1 debug info. */
- if (count > 1000)
- return error_mark_node;
-
- switch (TREE_CODE (type))
- {
- case ERROR_MARK:
- return error_mark_node;
-
- case POINTER_TYPE:
- case REFERENCE_TYPE:
- return root_type_1 (TREE_TYPE (type), count+1);
-
- default:
- return type;
- }
-}
-
-static tree
-root_type (type)
- tree type;
-{
- type = root_type_1 (type, 0);
- if (type != error_mark_node)
- type = type_main_variant (type);
- return type;
-}
-
-/* Given a pointer to an arbitrary ..._TYPE tree node, write out a sequence
- of zero or more Dwarf "type-modifier" bytes applicable to the type. */
-
-static void
-write_modifier_bytes_1 (type, decl_const, decl_volatile, count)
- tree type;
- int decl_const;
- int decl_volatile;
- int count;
-{
- if (TREE_CODE (type) == ERROR_MARK)
- return;
-
- /* Give up after searching 1000 levels, in case this is a recursive
- pointer type. Such types are possible in Ada, but it is not possible
- to represent them in DWARF1 debug info. */
- if (count > 1000)
- return;
-
- if (TYPE_READONLY (type) || decl_const)
- ASM_OUTPUT_DWARF_TYPE_MODIFIER (asm_out_file, MOD_const);
- if (TYPE_VOLATILE (type) || decl_volatile)
- ASM_OUTPUT_DWARF_TYPE_MODIFIER (asm_out_file, MOD_volatile);
- switch (TREE_CODE (type))
- {
- case POINTER_TYPE:
- ASM_OUTPUT_DWARF_TYPE_MODIFIER (asm_out_file, MOD_pointer_to);
- write_modifier_bytes_1 (TREE_TYPE (type), 0, 0, count+1);
- return;
-
- case REFERENCE_TYPE:
- ASM_OUTPUT_DWARF_TYPE_MODIFIER (asm_out_file, MOD_reference_to);
- write_modifier_bytes_1 (TREE_TYPE (type), 0, 0, count+1);
- return;
-
- case ERROR_MARK:
- default:
- return;
- }
-}
-
-static void
-write_modifier_bytes (type, decl_const, decl_volatile)
- tree type;
- int decl_const;
- int decl_volatile;
-{
- write_modifier_bytes_1 (type, decl_const, decl_volatile, 0);
-}
-
-/* Given a pointer to an arbitrary ..._TYPE tree node, return nonzero if the
- given input type is a Dwarf "fundamental" type. Otherwise return zero. */
-
-static inline int
-type_is_fundamental (type)
- tree type;
-{
- switch (TREE_CODE (type))
- {
- case ERROR_MARK:
- case VOID_TYPE:
- case INTEGER_TYPE:
- case REAL_TYPE:
- case COMPLEX_TYPE:
- case BOOLEAN_TYPE:
- case CHAR_TYPE:
- return 1;
-
- case SET_TYPE:
- case ARRAY_TYPE:
- case RECORD_TYPE:
- case UNION_TYPE:
- case QUAL_UNION_TYPE:
- case ENUMERAL_TYPE:
- case FUNCTION_TYPE:
- case METHOD_TYPE:
- case POINTER_TYPE:
- case REFERENCE_TYPE:
- case FILE_TYPE:
- case OFFSET_TYPE:
- case LANG_TYPE:
- case VECTOR_TYPE:
- return 0;
-
- default:
- abort ();
- }
- return 0;
-}
-
-/* Given a pointer to some ..._DECL tree node, generate an assembly language
- equate directive which will associate a symbolic name with the current DIE.
-
- The name used is an artificial label generated from the DECL_UID number
- associated with the given decl node. The name it gets equated to is the
- symbolic label that we (previously) output at the start of the DIE that
- we are currently generating.
-
- Calling this function while generating some "decl related" form of DIE
- makes it possible to later refer to the DIE which represents the given
- decl simply by re-generating the symbolic name from the ..._DECL node's
- UID number. */
-
-static void
-equate_decl_number_to_die_number (decl)
- tree decl;
-{
- /* In the case where we are generating a DIE for some ..._DECL node
- which represents either some inline function declaration or some
- entity declared within an inline function declaration/definition,
- setup a symbolic name for the current DIE so that we have a name
- for this DIE that we can easily refer to later on within
- AT_abstract_origin attributes. */
-
- char decl_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char die_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- sprintf (decl_label, DECL_NAME_FMT, DECL_UID (decl));
- sprintf (die_label, DIE_BEGIN_LABEL_FMT, current_dienum);
- ASM_OUTPUT_DEF (asm_out_file, decl_label, die_label);
-}
-
-/* Given a pointer to some ..._TYPE tree node, generate an assembly language
- equate directive which will associate a symbolic name with the current DIE.
-
- The name used is an artificial label generated from the TYPE_UID number
- associated with the given type node. The name it gets equated to is the
- symbolic label that we (previously) output at the start of the DIE that
- we are currently generating.
-
- Calling this function while generating some "type related" form of DIE
- makes it easy to later refer to the DIE which represents the given type
- simply by re-generating the alternative name from the ..._TYPE node's
- UID number. */
-
-static inline void
-equate_type_number_to_die_number (type)
- tree type;
-{
- char type_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char die_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- /* We are generating a DIE to represent the main variant of this type
- (i.e the type without any const or volatile qualifiers) so in order
- to get the equate to come out right, we need to get the main variant
- itself here. */
-
- type = type_main_variant (type);
-
- sprintf (type_label, TYPE_NAME_FMT, TYPE_UID (type));
- sprintf (die_label, DIE_BEGIN_LABEL_FMT, current_dienum);
- ASM_OUTPUT_DEF (asm_out_file, type_label, die_label);
-}
-
-static void
-output_reg_number (rtl)
- rtx rtl;
-{
- unsigned regno = REGNO (rtl);
-
- if (regno >= DWARF_FRAME_REGISTERS)
- {
- warning_with_decl (dwarf_last_decl,
- "internal regno botch: `%s' has regno = %d\n",
- regno);
- regno = 0;
- }
- dw2_assemble_integer (4, GEN_INT (DBX_REGISTER_NUMBER (regno)));
- if (flag_debug_asm)
- {
- fprintf (asm_out_file, "\t%s ", ASM_COMMENT_START);
- PRINT_REG (rtl, 0, asm_out_file);
- }
- fputc ('\n', asm_out_file);
-}
-
-/* The following routine is a nice and simple transducer. It converts the
- RTL for a variable or parameter (resident in memory) into an equivalent
- Dwarf representation of a mechanism for getting the address of that same
- variable onto the top of a hypothetical "address evaluation" stack.
-
- When creating memory location descriptors, we are effectively trans-
- forming the RTL for a memory-resident object into its Dwarf postfix
- expression equivalent. This routine just recursively descends an
- RTL tree, turning it into Dwarf postfix code as it goes. */
-
-static void
-output_mem_loc_descriptor (rtl)
- rtx rtl;
-{
- /* Note that for a dynamically sized array, the location we will
- generate a description of here will be the lowest numbered location
- which is actually within the array. That's *not* necessarily the
- same as the zeroth element of the array. */
-
-#ifdef ASM_SIMPLIFY_DWARF_ADDR
- rtl = ASM_SIMPLIFY_DWARF_ADDR (rtl);
-#endif
-
- switch (GET_CODE (rtl))
- {
- case SUBREG:
-
- /* The case of a subreg may arise when we have a local (register)
- variable or a formal (register) parameter which doesn't quite
- fill 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. */
-
- rtl = SUBREG_REG (rtl);
- /* Drop thru. */
-
- case REG:
-
- /* Whenever a register number forms a part of the description of
- the method for calculating the (dynamic) address of a memory
- resident object, DWARF rules require the register number to
- be referred to as a "base register". This distinction is not
- based in any way upon what category of register the hardware
- believes the given register belongs to. This is strictly
- DWARF terminology we're dealing with here.
-
- Note that in cases where the location of a memory-resident data
- object could be expressed as:
-
- OP_ADD (OP_BASEREG (basereg), OP_CONST (0))
-
- the actual DWARF location descriptor that we generate may just
- be OP_BASEREG (basereg). This may look deceptively like the
- object in question was allocated to a register (rather than
- in memory) so DWARF consumers need to be aware of the subtle
- distinction between OP_REG and OP_BASEREG. */
-
- ASM_OUTPUT_DWARF_STACK_OP (asm_out_file, OP_BASEREG);
- output_reg_number (rtl);
- break;
-
- case MEM:
- output_mem_loc_descriptor (XEXP (rtl, 0));
- ASM_OUTPUT_DWARF_STACK_OP (asm_out_file, OP_DEREF4);
- break;
-
- case CONST:
- case SYMBOL_REF:
- ASM_OUTPUT_DWARF_STACK_OP (asm_out_file, OP_ADDR);
- ASM_OUTPUT_DWARF_ADDR_CONST (asm_out_file, rtl);
- break;
-
- case PLUS:
- output_mem_loc_descriptor (XEXP (rtl, 0));
- output_mem_loc_descriptor (XEXP (rtl, 1));
- ASM_OUTPUT_DWARF_STACK_OP (asm_out_file, OP_ADD);
- break;
-
- case CONST_INT:
- ASM_OUTPUT_DWARF_STACK_OP (asm_out_file, OP_CONST);
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, INTVAL (rtl));
- break;
-
- case MULT:
- /* If a pseudo-reg is optimized away, it is possible for it to
- be replaced with a MEM containing a multiply. Use a GNU extension
- to describe it. */
- output_mem_loc_descriptor (XEXP (rtl, 0));
- output_mem_loc_descriptor (XEXP (rtl, 1));
- ASM_OUTPUT_DWARF_STACK_OP (asm_out_file, OP_MULT);
- break;
-
- default:
- abort ();
- }
-}
-
-/* Output a proper Dwarf location descriptor for a variable or parameter
- which is either allocated in a register or in a memory location. For
- a register, we just generate an OP_REG and the register number. For a
- memory location we provide a Dwarf postfix expression describing how to
- generate the (dynamic) address of the object onto the address stack. */
-
-static void
-output_loc_descriptor (rtl)
- rtx rtl;
-{
- switch (GET_CODE (rtl))
- {
- case SUBREG:
-
- /* The case of a subreg may arise when we have a local (register)
- variable or a formal (register) parameter which doesn't quite
- fill 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. */
-
- rtl = SUBREG_REG (rtl);
- /* Drop thru. */
-
- case REG:
- ASM_OUTPUT_DWARF_STACK_OP (asm_out_file, OP_REG);
- output_reg_number (rtl);
- break;
-
- case MEM:
- output_mem_loc_descriptor (XEXP (rtl, 0));
- break;
-
- default:
- abort (); /* Should never happen */
- }
-}
-
-/* Given a tree node describing an array bound (either lower or upper)
- output a representation for that bound. */
-
-static void
-output_bound_representation (bound, dim_num, u_or_l)
- tree bound;
- unsigned dim_num; /* For multi-dimensional arrays. */
- char u_or_l; /* Designates upper or lower bound. */
-{
- switch (TREE_CODE (bound))
- {
-
- case ERROR_MARK:
- return;
-
- /* All fixed-bounds are represented by INTEGER_CST nodes. */
-
- case INTEGER_CST:
- if (host_integerp (bound, 0))
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, tree_low_cst (bound, 0));
- break;
-
- default:
-
- /* Dynamic bounds may be represented by NOP_EXPR nodes containing
- SAVE_EXPR nodes, in which case we can do something, or as
- an expression, which we cannot represent. */
- {
- char begin_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char end_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- sprintf (begin_label, BOUND_BEGIN_LABEL_FMT,
- current_dienum, dim_num, u_or_l);
-
- sprintf (end_label, BOUND_END_LABEL_FMT,
- current_dienum, dim_num, u_or_l);
-
- ASM_OUTPUT_DWARF_DELTA2 (asm_out_file, end_label, begin_label);
- ASM_OUTPUT_LABEL (asm_out_file, begin_label);
-
- /* If optimization is turned on, the SAVE_EXPRs that describe
- how to access the upper bound values are essentially bogus.
- They only describe (at best) how to get at these values at
- the points in the generated code right after they have just
- been computed. Worse yet, in the typical case, the upper
- bound values will not even *be* computed in the optimized
- code, so these SAVE_EXPRs are entirely bogus.
-
- In order to compensate for this fact, we check here to see
- if optimization is enabled, and if so, we effectively create
- an empty location description for the (unknown and unknowable)
- upper bound.
-
- This should not cause too much trouble for existing (stupid?)
- debuggers because they have to deal with empty upper bounds
- location descriptions anyway in order to be able to deal with
- incomplete array types.
-
- Of course an intelligent debugger (GDB?) should be able to
- comprehend that a missing upper bound specification in a
- array type used for a storage class `auto' local array variable
- indicates that the upper bound is both unknown (at compile-
- time) and unknowable (at run-time) due to optimization. */
-
- if (! optimize)
- {
- while (TREE_CODE (bound) == NOP_EXPR
- || TREE_CODE (bound) == CONVERT_EXPR)
- bound = TREE_OPERAND (bound, 0);
-
- if (TREE_CODE (bound) == SAVE_EXPR
- && SAVE_EXPR_RTL (bound))
- output_loc_descriptor
- (eliminate_regs (SAVE_EXPR_RTL (bound), 0, NULL_RTX));
- }
-
- ASM_OUTPUT_LABEL (asm_out_file, end_label);
- }
- break;
-
- }
-}
-
-/* Recursive function to output a sequence of value/name pairs for
- enumeration constants in reversed order. This is called from
- enumeration_type_die. */
-
-static void
-output_enumeral_list (link)
- tree link;
-{
- if (link)
- {
- output_enumeral_list (TREE_CHAIN (link));
-
- if (host_integerp (TREE_VALUE (link), 0))
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file,
- tree_low_cst (TREE_VALUE (link), 0));
-
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file,
- IDENTIFIER_POINTER (TREE_PURPOSE (link)));
- }
-}
-
-/* Given an unsigned value, round it up to the lowest multiple of `boundary'
- which is not less than the value itself. */
-
-static inline HOST_WIDE_INT
-ceiling (value, boundary)
- HOST_WIDE_INT value;
- unsigned int boundary;
-{
- return (((value + boundary - 1) / boundary) * boundary);
-}
-
-/* Given a pointer to what is assumed to be a FIELD_DECL node, return a
- pointer to the declared type for the relevant field variable, or return
- `integer_type_node' if the given node turns out to be an ERROR_MARK node. */
-
-static inline tree
-field_type (decl)
- tree decl;
-{
- tree type;
-
- if (TREE_CODE (decl) == ERROR_MARK)
- return integer_type_node;
-
- type = DECL_BIT_FIELD_TYPE (decl);
- if (type == NULL)
- type = TREE_TYPE (decl);
- return type;
-}
-
-/* Given a pointer to a tree node, assumed to be some kind of a ..._TYPE
- node, return the alignment in bits for the type, or else return
- BITS_PER_WORD if the node actually turns out to be an ERROR_MARK node. */
-
-static inline unsigned int
-simple_type_align_in_bits (type)
- tree type;
-{
- return (TREE_CODE (type) != ERROR_MARK) ? TYPE_ALIGN (type) : BITS_PER_WORD;
-}
-
-/* Given a pointer to a tree node, assumed to be some kind of a ..._TYPE
- node, return the size in bits for the type if it is a constant, or
- else return the alignment for the type if the type's size is not
- constant, or else return BITS_PER_WORD if the type actually turns out
- to be an ERROR_MARK node. */
-
-static inline unsigned HOST_WIDE_INT
-simple_type_size_in_bits (type)
- tree type;
-{
- tree type_size_tree;
-
- if (TREE_CODE (type) == ERROR_MARK)
- return BITS_PER_WORD;
- type_size_tree = TYPE_SIZE (type);
-
- if (type_size_tree == NULL_TREE)
- return 0;
- if (! host_integerp (type_size_tree, 1))
- return TYPE_ALIGN (type);
- return tree_low_cst (type_size_tree, 1);
-}
-
-/* Given a pointer to what is assumed to be a FIELD_DECL node, compute and
- return the byte offset of the lowest addressed byte of the "containing
- object" for the given FIELD_DECL, or return 0 if we are unable to deter-
- mine what that offset is, either because the argument turns out to be a
- pointer to an ERROR_MARK node, or because the offset is actually variable.
- (We can't handle the latter case just yet.) */
-
-static HOST_WIDE_INT
-field_byte_offset (decl)
- tree decl;
-{
- unsigned int type_align_in_bytes;
- unsigned int type_align_in_bits;
- unsigned HOST_WIDE_INT type_size_in_bits;
- HOST_WIDE_INT object_offset_in_align_units;
- HOST_WIDE_INT object_offset_in_bits;
- HOST_WIDE_INT object_offset_in_bytes;
- tree type;
- tree field_size_tree;
- HOST_WIDE_INT bitpos_int;
- HOST_WIDE_INT deepest_bitpos;
- unsigned HOST_WIDE_INT field_size_in_bits;
-
- if (TREE_CODE (decl) == ERROR_MARK)
- return 0;
-
- if (TREE_CODE (decl) != FIELD_DECL)
- abort ();
-
- type = field_type (decl);
- field_size_tree = DECL_SIZE (decl);
-
- /* The size could be unspecified if there was an error, or for
- a flexible array member. */
- if (! field_size_tree)
- field_size_tree = bitsize_zero_node;
-
- /* We cannot yet cope with fields whose positions or sizes are variable,
- so for now, when we see such things, we simply return 0. Someday,
- we may be able to handle such cases, but it will be damn difficult. */
-
- if (! host_integerp (bit_position (decl), 0)
- || ! host_integerp (field_size_tree, 1))
- return 0;
-
- bitpos_int = int_bit_position (decl);
- field_size_in_bits = tree_low_cst (field_size_tree, 1);
-
- type_size_in_bits = simple_type_size_in_bits (type);
- type_align_in_bits = simple_type_align_in_bits (type);
- type_align_in_bytes = type_align_in_bits / BITS_PER_UNIT;
-
- /* Note that the GCC front-end doesn't make any attempt to keep track
- of the starting bit offset (relative to the start of the containing
- structure type) of the hypothetical "containing object" for a bit-
- field. Thus, when computing the byte offset value for the start of
- the "containing object" of a bit-field, we must deduce this infor-
- mation on our own.
-
- This can be rather tricky to do in some cases. For example, handling
- the following structure type definition when compiling for an i386/i486
- target (which only aligns long long's to 32-bit boundaries) can be very
- tricky:
-
- struct S {
- int field1;
- long long field2:31;
- };
-
- Fortunately, there is a simple rule-of-thumb which can be used in such
- cases. When compiling for an i386/i486, GCC will allocate 8 bytes for
- the structure shown above. It decides to do this based upon one simple
- rule for bit-field allocation. Quite simply, GCC allocates each "con-
- taining object" for each bit-field at the first (i.e. lowest addressed)
- legitimate alignment boundary (based upon the required minimum alignment
- for the declared type of the field) which it can possibly use, subject
- to the condition that there is still enough available space remaining
- in the containing object (when allocated at the selected point) to
- fully accommodate all of the bits of the bit-field itself.
-
- This simple rule makes it obvious why GCC allocates 8 bytes for each
- object of the structure type shown above. When looking for a place to
- allocate the "containing object" for `field2', the compiler simply tries
- to allocate a 64-bit "containing object" at each successive 32-bit
- boundary (starting at zero) until it finds a place to allocate that 64-
- bit field such that at least 31 contiguous (and previously unallocated)
- bits remain within that selected 64 bit field. (As it turns out, for
- the example above, the compiler finds that it is OK to allocate the
- "containing object" 64-bit field at bit-offset zero within the
- structure type.)
-
- Here we attempt to work backwards from the limited set of facts we're
- given, and we try to deduce from those facts, where GCC must have
- believed that the containing object started (within the structure type).
-
- The value we deduce is then used (by the callers of this routine) to
- generate AT_location and AT_bit_offset attributes for fields (both
- bit-fields and, in the case of AT_location, regular fields as well). */
-
- /* Figure out the bit-distance from the start of the structure to the
- "deepest" bit of the bit-field. */
- deepest_bitpos = bitpos_int + field_size_in_bits;
-
- /* This is the tricky part. Use some fancy footwork to deduce where the
- lowest addressed bit of the containing object must be. */
- object_offset_in_bits
- = ceiling (deepest_bitpos, type_align_in_bits) - type_size_in_bits;
-
- /* Compute the offset of the containing object in "alignment units". */
- object_offset_in_align_units = object_offset_in_bits / type_align_in_bits;
-
- /* Compute the offset of the containing object in bytes. */
- object_offset_in_bytes = object_offset_in_align_units * type_align_in_bytes;
-
- /* The above code assumes that the field does not cross an alignment
- boundary. This can happen if PCC_BITFIELD_TYPE_MATTERS is not defined,
- or if the structure is packed. If this happens, then we get an object
- which starts after the bitfield, which means that the bit offset is
- negative. Gdb fails when given negative bit offsets. We avoid this
- by recomputing using the first bit of the bitfield. This will give
- us an object which does not completely contain the bitfield, but it
- will be aligned, and it will contain the first bit of the bitfield.
-
- However, only do this for a BYTES_BIG_ENDIAN target. For a
- ! BYTES_BIG_ENDIAN target, bitpos_int + field_size_in_bits is the first
- first bit of the bitfield. If we recompute using bitpos_int + 1 below,
- then we end up computing the object byte offset for the wrong word of the
- desired bitfield, which in turn causes the field offset to be negative
- in bit_offset_attribute. */
- if (BYTES_BIG_ENDIAN
- && object_offset_in_bits > bitpos_int)
- {
- deepest_bitpos = bitpos_int + 1;
- object_offset_in_bits
- = ceiling (deepest_bitpos, type_align_in_bits) - type_size_in_bits;
- object_offset_in_align_units = (object_offset_in_bits
- / type_align_in_bits);
- object_offset_in_bytes = (object_offset_in_align_units
- * type_align_in_bytes);
- }
-
- return object_offset_in_bytes;
-}
-
-/****************************** attributes *********************************/
-
-/* The following routines are responsible for writing out the various types
- of Dwarf attributes (and any following data bytes associated with them).
- These routines are listed in order based on the numerical codes of their
- associated attributes. */
-
-/* Generate an AT_sibling attribute. */
-
-static inline void
-sibling_attribute ()
-{
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_sibling);
- sprintf (label, DIE_BEGIN_LABEL_FMT, NEXT_DIE_NUM);
- ASM_OUTPUT_DWARF_REF (asm_out_file, label);
-}
-
-/* Output the form of location attributes suitable for whole variables and
- whole parameters. Note that the location attributes for struct fields
- are generated by the routine `data_member_location_attribute' below. */
-
-static void
-location_attribute (rtl)
- rtx rtl;
-{
- char begin_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char end_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_location);
- sprintf (begin_label, LOC_BEGIN_LABEL_FMT, current_dienum);
- sprintf (end_label, LOC_END_LABEL_FMT, current_dienum);
- ASM_OUTPUT_DWARF_DELTA2 (asm_out_file, end_label, begin_label);
- ASM_OUTPUT_LABEL (asm_out_file, begin_label);
-
- /* Handle a special case. If we are about to output a location descriptor
- for a variable or parameter which has been optimized out of existence,
- don't do that. Instead we output a zero-length location descriptor
- value as part of the location attribute.
-
- A variable which has been optimized out of existence will have a
- DECL_RTL value which denotes a pseudo-reg.
-
- Currently, in some rare cases, variables can have DECL_RTL values
- which look like (MEM (REG pseudo-reg#)). These cases are due to
- bugs elsewhere in the compiler. We treat such cases
- as if the variable(s) in question had been optimized out of existence.
-
- Note that in all cases where we wish to express the fact that a
- variable has been optimized out of existence, we do not simply
- suppress the generation of the entire location attribute because
- the absence of a location attribute in certain kinds of DIEs is
- used to indicate something else entirely... i.e. that the DIE
- represents an object declaration, but not a definition. So saith
- the PLSIG.
- */
-
- if (! is_pseudo_reg (rtl)
- && (GET_CODE (rtl) != MEM || ! is_pseudo_reg (XEXP (rtl, 0))))
- output_loc_descriptor (rtl);
-
- ASM_OUTPUT_LABEL (asm_out_file, end_label);
-}
-
-/* Output the specialized form of location attribute used for data members
- of struct and union types.
-
- In the special case of a FIELD_DECL node which represents a bit-field,
- the "offset" part of this special location descriptor must indicate the
- distance in bytes from the lowest-addressed byte of the containing
- struct or union type to the lowest-addressed byte of the "containing
- object" for the bit-field. (See the `field_byte_offset' function above.)
-
- For any given bit-field, the "containing object" is a hypothetical
- object (of some integral or enum type) within which the given bit-field
- lives. The type of this hypothetical "containing object" is always the
- same as the declared type of the individual bit-field itself (for GCC
- anyway... the DWARF spec doesn't actually mandate this).
-
- Note that it is the size (in bytes) of the hypothetical "containing
- object" which will be given in the AT_byte_size attribute for this
- bit-field. (See the `byte_size_attribute' function below.) It is
- also used when calculating the value of the AT_bit_offset attribute.
- (See the `bit_offset_attribute' function below.) */
-
-static void
-data_member_location_attribute (t)
- tree t;
-{
- unsigned object_offset_in_bytes;
- char begin_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char end_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- if (TREE_CODE (t) == TREE_VEC)
- object_offset_in_bytes = tree_low_cst (BINFO_OFFSET (t), 0);
- else
- object_offset_in_bytes = field_byte_offset (t);
-
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_location);
- sprintf (begin_label, LOC_BEGIN_LABEL_FMT, current_dienum);
- sprintf (end_label, LOC_END_LABEL_FMT, current_dienum);
- ASM_OUTPUT_DWARF_DELTA2 (asm_out_file, end_label, begin_label);
- ASM_OUTPUT_LABEL (asm_out_file, begin_label);
- ASM_OUTPUT_DWARF_STACK_OP (asm_out_file, OP_CONST);
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, object_offset_in_bytes);
- ASM_OUTPUT_DWARF_STACK_OP (asm_out_file, OP_ADD);
- ASM_OUTPUT_LABEL (asm_out_file, end_label);
-}
-
-/* Output an AT_const_value attribute for a variable or a parameter which
- does not have a "location" either in memory or in a register. These
- things can arise in GNU C when a constant is passed as an actual
- parameter to an inlined function. They can also arise in C++ where
- declared constants do not necessarily get memory "homes". */
-
-static void
-const_value_attribute (rtl)
- rtx rtl;
-{
- char begin_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char end_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_const_value_block4);
- sprintf (begin_label, LOC_BEGIN_LABEL_FMT, current_dienum);
- sprintf (end_label, LOC_END_LABEL_FMT, current_dienum);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file, end_label, begin_label);
- ASM_OUTPUT_LABEL (asm_out_file, begin_label);
-
- switch (GET_CODE (rtl))
- {
- case CONST_INT:
- /* Note that a CONST_INT rtx could represent either an integer or
- a floating-point constant. A CONST_INT is used whenever the
- constant will fit into a single word. In all such cases, the
- original mode of the constant value is wiped out, and the
- CONST_INT rtx is assigned VOIDmode. Since we no longer have
- precise mode information for these constants, we always just
- output them using 4 bytes. */
-
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, (unsigned) INTVAL (rtl));
- break;
-
- case CONST_DOUBLE:
- /* Note that a CONST_DOUBLE rtx could represent either an integer
- or a floating-point constant. A CONST_DOUBLE is used whenever
- the constant requires more than one word in order to be adequately
- represented. In all such cases, the original mode of the constant
- value is preserved as the mode of the CONST_DOUBLE rtx, but for
- simplicity we always just output CONST_DOUBLEs using 8 bytes. */
-
- ASM_OUTPUT_DWARF_DATA8 (asm_out_file,
- (unsigned int) CONST_DOUBLE_HIGH (rtl),
- (unsigned int) CONST_DOUBLE_LOW (rtl));
- break;
-
- case CONST_STRING:
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, XSTR (rtl, 0));
- break;
-
- case SYMBOL_REF:
- case LABEL_REF:
- case CONST:
- ASM_OUTPUT_DWARF_ADDR_CONST (asm_out_file, rtl);
- break;
-
- case PLUS:
- /* In cases where an inlined instance of an inline function is passed
- the address of an `auto' variable (which is local to the caller)
- we can get a situation where the DECL_RTL of the artificial
- local variable (for the inlining) which acts as a stand-in for
- the corresponding formal parameter (of the inline function)
- will look like (plus:SI (reg:SI FRAME_PTR) (const_int ...)).
- This is not exactly a compile-time constant expression, but it
- isn't the address of the (artificial) local variable either.
- Rather, it represents the *value* which the artificial local
- variable always has during its lifetime. We currently have no
- way to represent such quasi-constant values in Dwarf, so for now
- we just punt and generate an AT_const_value attribute with form
- FORM_BLOCK4 and a length of zero. */
- break;
-
- default:
- abort (); /* No other kinds of rtx should be possible here. */
- }
-
- ASM_OUTPUT_LABEL (asm_out_file, end_label);
-}
-
-/* Generate *either* an AT_location attribute or else an AT_const_value
- data attribute for a variable or a parameter. We generate the
- AT_const_value attribute only in those cases where the given
- variable or parameter does not have a true "location" either in
- memory or in a register. This can happen (for example) when a
- constant is passed as an actual argument in a call to an inline
- function. (It's possible that 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. */
-
-static void
-location_or_const_value_attribute (decl)
- tree decl;
-{
- rtx rtl;
-
- if (TREE_CODE (decl) == ERROR_MARK)
- return;
-
- if ((TREE_CODE (decl) != VAR_DECL) && (TREE_CODE (decl) != PARM_DECL))
- {
- /* Should never happen. */
- abort ();
- return;
- }
-
- /* Here we have to decide where we are going to say the parameter "lives"
- (as far as the debugger is concerned). We only have a couple of choices.
- GCC provides us with DECL_RTL and with DECL_INCOMING_RTL. DECL_RTL
- normally indicates where the parameter lives during most of the activa-
- tion of the function. If optimization is enabled however, this could
- be either NULL or else a pseudo-reg. Both of those cases indicate that
- the parameter doesn't really live anywhere (as far as the code generation
- parts of GCC are concerned) during most of the function's activation.
- That will happen (for example) if the parameter is never referenced
- within the function.
-
- We could just generate a location descriptor here for all non-NULL
- non-pseudo values of DECL_RTL and ignore all of the rest, but we can
- be a little nicer than that if we also consider DECL_INCOMING_RTL in
- cases where DECL_RTL is NULL or is a pseudo-reg.
-
- Note however that we can only get away with using DECL_INCOMING_RTL as
- a backup substitute for DECL_RTL in certain limited cases. In cases
- where DECL_ARG_TYPE(decl) indicates the same type as TREE_TYPE(decl)
- we can be sure that the parameter was passed using the same type as it
- is declared to have within the function, and that its DECL_INCOMING_RTL
- points us to a place where a value of that type is passed. In cases
- where DECL_ARG_TYPE(decl) and TREE_TYPE(decl) are different types
- however, we cannot (in general) use DECL_INCOMING_RTL as a backup
- substitute for DECL_RTL because in these cases, DECL_INCOMING_RTL
- points us to a value of some type which is *different* from the type
- of the parameter itself. Thus, if we tried to use DECL_INCOMING_RTL
- to generate a location attribute in such cases, the debugger would
- end up (for example) trying to fetch a `float' from a place which
- actually contains the first part of a `double'. That would lead to
- really incorrect and confusing output at debug-time, and we don't
- want that now do we?
-
- So in general, we DO NOT use DECL_INCOMING_RTL as a backup for DECL_RTL
- in cases where DECL_ARG_TYPE(decl) != TREE_TYPE(decl). There are a
- couple of cute exceptions however. On little-endian machines we can
- get away with using DECL_INCOMING_RTL even when DECL_ARG_TYPE(decl) is
- not the same as TREE_TYPE(decl) but only when DECL_ARG_TYPE(decl) is
- an integral type which is smaller than TREE_TYPE(decl). These cases
- arise when (on a little-endian machine) a non-prototyped function has
- a parameter declared to be of type `short' or `char'. In such cases,
- TREE_TYPE(decl) will be `short' or `char', DECL_ARG_TYPE(decl) will be
- `int', and DECL_INCOMING_RTL will point to the lowest-order byte of the
- passed `int' value. If the debugger then uses that address to fetch a
- `short' or a `char' (on a little-endian machine) the result will be the
- correct data, so we allow for such exceptional cases below.
-
- Note that our goal here is to describe the place where the given formal
- parameter lives during most of the function's activation (i.e. between
- the end of the prologue and the start of the epilogue). We'll do that
- as best as we can. Note however that if the given formal parameter is
- modified sometime during the execution of the function, then a stack
- backtrace (at debug-time) will show the function as having been called
- with the *new* value rather than the value which was originally passed
- in. This happens rarely enough that it is not a major problem, but it
- *is* a problem, and I'd like to fix it. A future version of dwarfout.c
- may generate two additional attributes for any given TAG_formal_parameter
- DIE which will describe the "passed type" and the "passed location" for
- the given formal parameter in addition to the attributes we now generate
- to indicate the "declared type" and the "active location" for each
- parameter. This additional set of attributes could be used by debuggers
- for stack backtraces.
-
- Separately, note that sometimes DECL_RTL can be NULL and DECL_INCOMING_RTL
- can be NULL also. This happens (for example) for inlined-instances of
- inline function formal parameters which are never referenced. This really
- shouldn't be happening. All PARM_DECL nodes should get valid non-NULL
- DECL_INCOMING_RTL values, but integrate.c doesn't currently generate
- these values for inlined instances of inline function parameters, so
- when we see such cases, we are just out-of-luck for the time
- being (until integrate.c gets fixed).
- */
-
- /* Use DECL_RTL as the "location" unless we find something better. */
- rtl = DECL_RTL (decl);
-
- if (TREE_CODE (decl) == PARM_DECL)
- if (rtl == NULL_RTX || is_pseudo_reg (rtl))
- {
- /* This decl represents a formal parameter which was optimized out. */
- tree declared_type = type_main_variant (TREE_TYPE (decl));
- tree passed_type = type_main_variant (DECL_ARG_TYPE (decl));
-
- /* Note that DECL_INCOMING_RTL may be NULL in here, but we handle
- *all* cases where (rtl == NULL_RTX) just below. */
-
- if (declared_type == passed_type)
- rtl = DECL_INCOMING_RTL (decl);
- else if (! BYTES_BIG_ENDIAN)
- if (TREE_CODE (declared_type) == INTEGER_TYPE)
- /* NMS WTF? */
- if (TYPE_SIZE (declared_type) <= TYPE_SIZE (passed_type))
- rtl = DECL_INCOMING_RTL (decl);
- }
-
- if (rtl == NULL_RTX)
- return;
-
- rtl = eliminate_regs (rtl, 0, NULL_RTX);
-#ifdef LEAF_REG_REMAP
- if (current_function_uses_only_leaf_regs)
- leaf_renumber_regs_insn (rtl);
-#endif
-
- switch (GET_CODE (rtl))
- {
- case ADDRESSOF:
- /* The address of a variable that was optimized away; don't emit
- anything. */
- break;
-
- case CONST_INT:
- case CONST_DOUBLE:
- case CONST_STRING:
- case SYMBOL_REF:
- case LABEL_REF:
- case CONST:
- case PLUS: /* DECL_RTL could be (plus (reg ...) (const_int ...)) */
- const_value_attribute (rtl);
- break;
-
- case MEM:
- case REG:
- case SUBREG:
- location_attribute (rtl);
- break;
-
- case CONCAT:
- /* ??? CONCAT is used for complex variables, which may have the real
- part stored in one place and the imag part stored somewhere else.
- DWARF1 has no way to describe a variable that lives in two different
- places, so we just describe where the first part lives, and hope that
- the second part is stored after it. */
- location_attribute (XEXP (rtl, 0));
- break;
-
- default:
- abort (); /* Should never happen. */
- }
-}
-
-/* Generate an AT_name attribute given some string value to be included as
- the value of the attribute. */
-
-static inline void
-name_attribute (name_string)
- const char *name_string;
-{
- if (name_string && *name_string)
- {
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_name);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, name_string);
- }
-}
-
-static inline void
-fund_type_attribute (ft_code)
- unsigned ft_code;
-{
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_fund_type);
- ASM_OUTPUT_DWARF_FUND_TYPE (asm_out_file, ft_code);
-}
-
-static void
-mod_fund_type_attribute (type, decl_const, decl_volatile)
- tree type;
- int decl_const;
- int decl_volatile;
-{
- char begin_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char end_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_mod_fund_type);
- sprintf (begin_label, MT_BEGIN_LABEL_FMT, current_dienum);
- sprintf (end_label, MT_END_LABEL_FMT, current_dienum);
- ASM_OUTPUT_DWARF_DELTA2 (asm_out_file, end_label, begin_label);
- ASM_OUTPUT_LABEL (asm_out_file, begin_label);
- write_modifier_bytes (type, decl_const, decl_volatile);
- ASM_OUTPUT_DWARF_FUND_TYPE (asm_out_file,
- fundamental_type_code (root_type (type)));
- ASM_OUTPUT_LABEL (asm_out_file, end_label);
-}
-
-static inline void
-user_def_type_attribute (type)
- tree type;
-{
- char ud_type_name[MAX_ARTIFICIAL_LABEL_BYTES];
-
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_user_def_type);
- sprintf (ud_type_name, TYPE_NAME_FMT, TYPE_UID (type));
- ASM_OUTPUT_DWARF_REF (asm_out_file, ud_type_name);
-}
-
-static void
-mod_u_d_type_attribute (type, decl_const, decl_volatile)
- tree type;
- int decl_const;
- int decl_volatile;
-{
- char begin_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char end_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char ud_type_name[MAX_ARTIFICIAL_LABEL_BYTES];
-
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_mod_u_d_type);
- sprintf (begin_label, MT_BEGIN_LABEL_FMT, current_dienum);
- sprintf (end_label, MT_END_LABEL_FMT, current_dienum);
- ASM_OUTPUT_DWARF_DELTA2 (asm_out_file, end_label, begin_label);
- ASM_OUTPUT_LABEL (asm_out_file, begin_label);
- write_modifier_bytes (type, decl_const, decl_volatile);
- sprintf (ud_type_name, TYPE_NAME_FMT, TYPE_UID (root_type (type)));
- ASM_OUTPUT_DWARF_REF (asm_out_file, ud_type_name);
- ASM_OUTPUT_LABEL (asm_out_file, end_label);
-}
-
-#ifdef USE_ORDERING_ATTRIBUTE
-static inline void
-ordering_attribute (ordering)
- unsigned ordering;
-{
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_ordering);
- ASM_OUTPUT_DWARF_DATA2 (asm_out_file, ordering);
-}
-#endif /* defined(USE_ORDERING_ATTRIBUTE) */
-
-/* Note that the block of subscript information for an array type also
- includes information about the element type of type given array type. */
-
-static void
-subscript_data_attribute (type)
- tree type;
-{
- unsigned dimension_number;
- char begin_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char end_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_subscr_data);
- sprintf (begin_label, SS_BEGIN_LABEL_FMT, current_dienum);
- sprintf (end_label, SS_END_LABEL_FMT, current_dienum);
- ASM_OUTPUT_DWARF_DELTA2 (asm_out_file, end_label, begin_label);
- ASM_OUTPUT_LABEL (asm_out_file, begin_label);
-
- /* The GNU compilers represent multidimensional array types as sequences
- of one dimensional array types whose element types are themselves array
- types. Here we squish that down, so that each multidimensional array
- type gets only one array_type DIE in the Dwarf debugging info. The
- draft Dwarf specification say that we are allowed to do this kind
- of compression in C (because there is no difference between an
- array or arrays and a multidimensional array in C) but for other
- source languages (e.g. Ada) we probably shouldn't do this. */
-
- for (dimension_number = 0;
- TREE_CODE (type) == ARRAY_TYPE;
- type = TREE_TYPE (type), dimension_number++)
- {
- tree domain = TYPE_DOMAIN (type);
-
- /* Arrays come in three flavors. Unspecified bounds, fixed
- bounds, and (in GNU C only) variable bounds. Handle all
- three forms here. */
-
- if (domain)
- {
- /* We have an array type with specified bounds. */
-
- tree lower = TYPE_MIN_VALUE (domain);
- tree upper = TYPE_MAX_VALUE (domain);
-
- /* Handle only fundamental types as index types for now. */
- if (! type_is_fundamental (domain))
- abort ();
-
- /* Output the representation format byte for this dimension. */
- ASM_OUTPUT_DWARF_FMT_BYTE (asm_out_file,
- FMT_CODE (1, TREE_CODE (lower) == INTEGER_CST,
- upper && TREE_CODE (upper) == INTEGER_CST));
-
- /* Output the index type for this dimension. */
- ASM_OUTPUT_DWARF_FUND_TYPE (asm_out_file,
- fundamental_type_code (domain));
-
- /* Output the representation for the lower bound. */
- output_bound_representation (lower, dimension_number, 'l');
-
- /* Output the representation for the upper bound. */
- if (upper)
- output_bound_representation (upper, dimension_number, 'u');
- else
- ASM_OUTPUT_DWARF_DATA2 (asm_out_file, 0);
- }
- else
- {
- /* We have an array type with an unspecified length. For C and
- C++ we can assume that this really means that (a) the index
- type is an integral type, and (b) the lower bound is zero.
- Note that Dwarf defines the representation of an unspecified
- (upper) bound as being a zero-length location description. */
-
- /* Output the array-bounds format byte. */
-
- ASM_OUTPUT_DWARF_FMT_BYTE (asm_out_file, FMT_FT_C_X);
-
- /* Output the (assumed) index type. */
-
- ASM_OUTPUT_DWARF_FUND_TYPE (asm_out_file, FT_integer);
-
- /* Output the (assumed) lower bound (constant) value. */
-
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, 0);
-
- /* Output the (empty) location description for the upper bound. */
-
- ASM_OUTPUT_DWARF_DATA2 (asm_out_file, 0);
- }
- }
-
- /* Output the prefix byte that says that the element type is coming up. */
-
- ASM_OUTPUT_DWARF_FMT_BYTE (asm_out_file, FMT_ET);
-
- /* Output a representation of the type of the elements of this array type. */
-
- type_attribute (type, 0, 0);
-
- ASM_OUTPUT_LABEL (asm_out_file, end_label);
-}
-
-static void
-byte_size_attribute (tree_node)
- tree tree_node;
-{
- unsigned size;
-
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_byte_size);
- switch (TREE_CODE (tree_node))
- {
- case ERROR_MARK:
- size = 0;
- break;
-
- case ENUMERAL_TYPE:
- case RECORD_TYPE:
- case UNION_TYPE:
- case QUAL_UNION_TYPE:
- case ARRAY_TYPE:
- size = int_size_in_bytes (tree_node);
- break;
-
- case FIELD_DECL:
- /* For a data member of a struct or union, the AT_byte_size is
- generally given as the number of bytes normally allocated for
- an object of the *declared* type of the member itself. This
- is true even for bit-fields. */
- size = simple_type_size_in_bits (field_type (tree_node))
- / BITS_PER_UNIT;
- break;
-
- default:
- abort ();
- }
-
- /* Note that `size' might be -1 when we get to this point. If it
- is, that indicates that the byte size of the entity in question
- is variable. We have no good way of expressing this fact in Dwarf
- at the present time, so just let the -1 pass on through. */
-
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, size);
-}
-
-/* For a FIELD_DECL node which represents a bit-field, output an attribute
- which specifies the distance in bits from the highest order bit of the
- "containing object" for the bit-field to the highest order bit of the
- bit-field itself.
-
- For any given bit-field, the "containing object" is a hypothetical
- object (of some integral or enum type) within which the given bit-field
- lives. The type of this hypothetical "containing object" is always the
- same as the declared type of the individual bit-field itself.
-
- The determination of the exact location of the "containing object" for
- a bit-field is rather complicated. It's handled by the `field_byte_offset'
- function (above).
-
- Note that it is the size (in bytes) of the hypothetical "containing
- object" which will be given in the AT_byte_size attribute for this
- bit-field. (See `byte_size_attribute' above.) */
-
-static inline void
-bit_offset_attribute (decl)
- tree decl;
-{
- HOST_WIDE_INT object_offset_in_bytes = field_byte_offset (decl);
- tree type = DECL_BIT_FIELD_TYPE (decl);
- HOST_WIDE_INT bitpos_int;
- HOST_WIDE_INT highest_order_object_bit_offset;
- HOST_WIDE_INT highest_order_field_bit_offset;
- HOST_WIDE_INT bit_offset;
-
- /* Must be a bit field. */
- if (!type
- || TREE_CODE (decl) != FIELD_DECL)
- abort ();
-
- /* We can't yet handle bit-fields whose offsets or sizes are variable, so
- if we encounter such things, just return without generating any
- attribute whatsoever. */
-
- if (! host_integerp (bit_position (decl), 0)
- || ! host_integerp (DECL_SIZE (decl), 1))
- return;
-
- bitpos_int = int_bit_position (decl);
-
- /* Note that the bit offset is always the distance (in bits) from the
- highest-order bit of the "containing object" to the highest-order
- bit of the bit-field itself. Since the "high-order end" of any
- object or field is different on big-endian and little-endian machines,
- the computation below must take account of these differences. */
-
- highest_order_object_bit_offset = object_offset_in_bytes * BITS_PER_UNIT;
- highest_order_field_bit_offset = bitpos_int;
-
- if (! BYTES_BIG_ENDIAN)
- {
- highest_order_field_bit_offset += tree_low_cst (DECL_SIZE (decl), 1);
- highest_order_object_bit_offset += simple_type_size_in_bits (type);
- }
-
- bit_offset =
- (! BYTES_BIG_ENDIAN
- ? highest_order_object_bit_offset - highest_order_field_bit_offset
- : highest_order_field_bit_offset - highest_order_object_bit_offset);
-
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_bit_offset);
- ASM_OUTPUT_DWARF_DATA2 (asm_out_file, bit_offset);
-}
-
-/* For a FIELD_DECL node which represents a bit field, output an attribute
- which specifies the length in bits of the given field. */
-
-static inline void
-bit_size_attribute (decl)
- tree decl;
-{
- /* Must be a field and a bit field. */
- if (TREE_CODE (decl) != FIELD_DECL
- || ! DECL_BIT_FIELD_TYPE (decl))
- abort ();
-
- if (host_integerp (DECL_SIZE (decl), 1))
- {
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_bit_size);
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file,
- tree_low_cst (DECL_SIZE (decl), 1));
- }
-}
-
-/* The following routine outputs the `element_list' attribute for enumeration
- type DIEs. The element_lits attribute includes the names and values of
- all of the enumeration constants associated with the given enumeration
- type. */
-
-static inline void
-element_list_attribute (element)
- tree element;
-{
- char begin_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char end_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_element_list);
- sprintf (begin_label, EE_BEGIN_LABEL_FMT, current_dienum);
- sprintf (end_label, EE_END_LABEL_FMT, current_dienum);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file, end_label, begin_label);
- ASM_OUTPUT_LABEL (asm_out_file, begin_label);
-
- /* Here we output a list of value/name pairs for each enumeration constant
- defined for this enumeration type (as required), but we do it in REVERSE
- order. The order is the one required by the draft #5 Dwarf specification
- published by the UI/PLSIG. */
-
- output_enumeral_list (element); /* Recursively output the whole list. */
-
- ASM_OUTPUT_LABEL (asm_out_file, end_label);
-}
-
-/* Generate an AT_stmt_list attribute. These are normally present only in
- DIEs with a TAG_compile_unit tag. */
-
-static inline void
-stmt_list_attribute (label)
- const char *label;
-{
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_stmt_list);
- /* Don't use ASM_OUTPUT_DWARF_DATA4 here. */
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, label);
-}
-
-/* Generate an AT_low_pc attribute for a label DIE, a lexical_block DIE or
- for a subroutine DIE. */
-
-static inline void
-low_pc_attribute (asm_low_label)
- const char *asm_low_label;
-{
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_low_pc);
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, asm_low_label);
-}
-
-/* Generate an AT_high_pc attribute for a lexical_block DIE or for a
- subroutine DIE. */
-
-static inline void
-high_pc_attribute (asm_high_label)
- const char *asm_high_label;
-{
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_high_pc);
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, asm_high_label);
-}
-
-/* Generate an AT_body_begin attribute for a subroutine DIE. */
-
-static inline void
-body_begin_attribute (asm_begin_label)
- const char *asm_begin_label;
-{
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_body_begin);
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, asm_begin_label);
-}
-
-/* Generate an AT_body_end attribute for a subroutine DIE. */
-
-static inline void
-body_end_attribute (asm_end_label)
- const char *asm_end_label;
-{
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_body_end);
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, asm_end_label);
-}
-
-/* Generate an AT_language attribute given a LANG value. These attributes
- are used only within TAG_compile_unit DIEs. */
-
-static inline void
-language_attribute (language_code)
- unsigned language_code;
-{
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_language);
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, language_code);
-}
-
-static inline void
-member_attribute (context)
- tree context;
-{
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- /* Generate this attribute only for members in C++. */
-
- if (context != NULL && is_tagged_type (context))
- {
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_member);
- sprintf (label, TYPE_NAME_FMT, TYPE_UID (context));
- ASM_OUTPUT_DWARF_REF (asm_out_file, label);
- }
-}
-
-#if 0
-#ifndef SL_BEGIN_LABEL_FMT
-#define SL_BEGIN_LABEL_FMT "*.L_sl%u"
-#endif
-#ifndef SL_END_LABEL_FMT
-#define SL_END_LABEL_FMT "*.L_sl%u_e"
-#endif
-
-static inline void
-string_length_attribute (upper_bound)
- tree upper_bound;
-{
- char begin_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char end_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_string_length);
- sprintf (begin_label, SL_BEGIN_LABEL_FMT, current_dienum);
- sprintf (end_label, SL_END_LABEL_FMT, current_dienum);
- ASM_OUTPUT_DWARF_DELTA2 (asm_out_file, end_label, begin_label);
- ASM_OUTPUT_LABEL (asm_out_file, begin_label);
- output_bound_representation (upper_bound, 0, 'u');
- ASM_OUTPUT_LABEL (asm_out_file, end_label);
-}
-#endif
-
-static inline void
-comp_dir_attribute (dirname)
- const char *dirname;
-{
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_comp_dir);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, dirname);
-}
-
-static inline void
-sf_names_attribute (sf_names_start_label)
- const char *sf_names_start_label;
-{
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_sf_names);
- /* Don't use ASM_OUTPUT_DWARF_DATA4 here. */
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, sf_names_start_label);
-}
-
-static inline void
-src_info_attribute (src_info_start_label)
- const char *src_info_start_label;
-{
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_src_info);
- /* Don't use ASM_OUTPUT_DWARF_DATA4 here. */
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, src_info_start_label);
-}
-
-static inline void
-mac_info_attribute (mac_info_start_label)
- const char *mac_info_start_label;
-{
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_mac_info);
- /* Don't use ASM_OUTPUT_DWARF_DATA4 here. */
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, mac_info_start_label);
-}
-
-static inline void
-prototyped_attribute (func_type)
- tree func_type;
-{
- if ((strcmp (lang_hooks.name, "GNU C") == 0)
- && (TYPE_ARG_TYPES (func_type) != NULL))
- {
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_prototyped);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, "");
- }
-}
-
-static inline void
-producer_attribute (producer)
- const char *producer;
-{
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_producer);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, producer);
-}
-
-static inline void
-inline_attribute (decl)
- tree decl;
-{
- if (DECL_INLINE (decl))
- {
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_inline);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, "");
- }
-}
-
-static inline void
-containing_type_attribute (containing_type)
- tree containing_type;
-{
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_containing_type);
- sprintf (label, TYPE_NAME_FMT, TYPE_UID (containing_type));
- ASM_OUTPUT_DWARF_REF (asm_out_file, label);
-}
-
-static inline void
-abstract_origin_attribute (origin)
- tree origin;
-{
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_abstract_origin);
- switch (TREE_CODE_CLASS (TREE_CODE (origin)))
- {
- case 'd':
- sprintf (label, DECL_NAME_FMT, DECL_UID (origin));
- break;
-
- case 't':
- sprintf (label, TYPE_NAME_FMT, TYPE_UID (origin));
- break;
-
- default:
- abort (); /* Should never happen. */
-
- }
- ASM_OUTPUT_DWARF_REF (asm_out_file, label);
-}
-
-#ifdef DWARF_DECL_COORDINATES
-static inline void
-src_coords_attribute (src_fileno, src_lineno)
- unsigned src_fileno;
- unsigned src_lineno;
-{
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_src_coords);
- ASM_OUTPUT_DWARF_DATA2 (asm_out_file, src_fileno);
- ASM_OUTPUT_DWARF_DATA2 (asm_out_file, src_lineno);
-}
-#endif /* defined(DWARF_DECL_COORDINATES) */
-
-static inline void
-pure_or_virtual_attribute (func_decl)
- tree func_decl;
-{
- if (DECL_VIRTUAL_P (func_decl))
- {
-#if 0 /* DECL_ABSTRACT_VIRTUAL_P is C++-specific. */
- if (DECL_ABSTRACT_VIRTUAL_P (func_decl))
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_pure_virtual);
- else
-#endif
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_virtual);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, "");
- }
-}
-
-/************************* end of attributes *****************************/
-
-/********************* utility routines for DIEs *************************/
-
-/* Output an AT_name attribute and an AT_src_coords attribute for the
- given decl, but only if it actually has a name. */
-
-static void
-name_and_src_coords_attributes (decl)
- tree decl;
-{
- tree decl_name = DECL_NAME (decl);
-
- if (decl_name && IDENTIFIER_POINTER (decl_name))
- {
- name_attribute (IDENTIFIER_POINTER (decl_name));
-#ifdef DWARF_DECL_COORDINATES
- {
- register unsigned file_index;
-
- /* This is annoying, but we have to pop out of the .debug section
- for a moment while we call `lookup_filename' because calling it
- may cause a temporary switch into the .debug_sfnames section and
- most svr4 assemblers are not smart enough to be able to nest
- section switches to any depth greater than one. Note that we
- also can't skirt this issue by delaying all output to the
- .debug_sfnames section unit the end of compilation because that
- would cause us to have inter-section forward references and
- Fred Fish sez that m68k/svr4 assemblers botch those. */
-
- ASM_OUTPUT_POP_SECTION (asm_out_file);
- file_index = lookup_filename (DECL_SOURCE_FILE (decl));
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_SECTION);
-
- src_coords_attribute (file_index, DECL_SOURCE_LINE (decl));
- }
-#endif /* defined(DWARF_DECL_COORDINATES) */
- }
-}
-
-/* Many forms of DIEs contain a "type description" part. The following
- routine writes out these "type descriptor" parts. */
-
-static void
-type_attribute (type, decl_const, decl_volatile)
- tree type;
- int decl_const;
- int decl_volatile;
-{
- enum tree_code code = TREE_CODE (type);
- int root_type_modified;
-
- if (code == ERROR_MARK)
- return;
-
- /* Handle a special case. For functions whose return type is void,
- we generate *no* type attribute. (Note that no object may have
- type `void', so this only applies to function return types. */
-
- if (code == VOID_TYPE)
- return;
-
- /* If this is a subtype, find the underlying type. Eventually,
- this should write out the appropriate subtype info. */
- while ((code == INTEGER_TYPE || code == REAL_TYPE)
- && TREE_TYPE (type) != 0)
- type = TREE_TYPE (type), code = TREE_CODE (type);
-
- root_type_modified = (code == POINTER_TYPE || code == REFERENCE_TYPE
- || decl_const || decl_volatile
- || TYPE_READONLY (type) || TYPE_VOLATILE (type));
-
- if (type_is_fundamental (root_type (type)))
- {
- if (root_type_modified)
- mod_fund_type_attribute (type, decl_const, decl_volatile);
- else
- fund_type_attribute (fundamental_type_code (type));
- }
- else
- {
- if (root_type_modified)
- mod_u_d_type_attribute (type, decl_const, decl_volatile);
- else
- /* We have to get the type_main_variant here (and pass that to the
- `user_def_type_attribute' routine) because the ..._TYPE node we
- have might simply be a *copy* of some original type node (where
- the copy was created to help us keep track of typedef names)
- and that copy might have a different TYPE_UID from the original
- ..._TYPE node. (Note that when `equate_type_number_to_die_number'
- is labeling a given type DIE for future reference, it always and
- only creates labels for DIEs representing *main variants*, and it
- never even knows about non-main-variants.) */
- user_def_type_attribute (type_main_variant (type));
- }
-}
-
-/* Given a tree pointer to a struct, class, union, or enum type node, return
- a pointer to the (string) tag name for the given type, or zero if the
- type was declared without a tag. */
-
-static const char *
-type_tag (type)
- tree type;
-{
- const char *name = 0;
-
- if (TYPE_NAME (type) != 0)
- {
- tree t = 0;
-
- /* Find the IDENTIFIER_NODE for the type name. */
- if (TREE_CODE (TYPE_NAME (type)) == IDENTIFIER_NODE)
- t = TYPE_NAME (type);
-
- /* The g++ front end makes the TYPE_NAME of *each* tagged type point to
- a TYPE_DECL node, regardless of whether or not a `typedef' was
- involved. */
- else if (TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
- && ! DECL_IGNORED_P (TYPE_NAME (type)))
- t = DECL_NAME (TYPE_NAME (type));
-
- /* Now get the name as a string, or invent one. */
- if (t != 0)
- name = IDENTIFIER_POINTER (t);
- }
-
- return (name == 0 || *name == '\0') ? 0 : name;
-}
-
-static inline void
-dienum_push ()
-{
- /* Start by checking if the pending_sibling_stack needs to be expanded.
- If necessary, expand it. */
-
- if (pending_siblings == pending_siblings_allocated)
- {
- pending_siblings_allocated += PENDING_SIBLINGS_INCREMENT;
- pending_sibling_stack
- = (unsigned *) xrealloc (pending_sibling_stack,
- pending_siblings_allocated * sizeof(unsigned));
- }
-
- pending_siblings++;
- NEXT_DIE_NUM = next_unused_dienum++;
-}
-
-/* Pop the sibling stack so that the most recently pushed DIEnum becomes the
- NEXT_DIE_NUM. */
-
-static inline void
-dienum_pop ()
-{
- pending_siblings--;
-}
-
-static inline tree
-member_declared_type (member)
- tree member;
-{
- return (DECL_BIT_FIELD_TYPE (member))
- ? DECL_BIT_FIELD_TYPE (member)
- : TREE_TYPE (member);
-}
-
-/* Get the function's label, as described by its RTL.
- This may be different from the DECL_NAME name used
- in the source file. */
-
-static const char *
-function_start_label (decl)
- tree decl;
-{
- rtx x;
- const char *fnname;
-
- x = DECL_RTL (decl);
- if (GET_CODE (x) != MEM)
- abort ();
- x = XEXP (x, 0);
- if (GET_CODE (x) != SYMBOL_REF)
- abort ();
- fnname = XSTR (x, 0);
- return fnname;
-}
-
-
-/******************************* DIEs ************************************/
-
-/* Output routines for individual types of DIEs. */
-
-/* Note that every type of DIE (except a null DIE) gets a sibling. */
-
-static void
-output_array_type_die (arg)
- void *arg;
-{
- tree type = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_array_type);
- sibling_attribute ();
- equate_type_number_to_die_number (type);
- member_attribute (TYPE_CONTEXT (type));
-
- /* I believe that we can default the array ordering. SDB will probably
- do the right things even if AT_ordering is not present. It's not
- even an issue until we start to get into multidimensional arrays
- anyway. If SDB is ever caught doing the Wrong Thing for multi-
- dimensional arrays, then we'll have to put the AT_ordering attribute
- back in. (But if and when we find out that we need to put these in,
- we will only do so for multidimensional arrays. After all, we don't
- want to waste space in the .debug section now do we?) */
-
-#ifdef USE_ORDERING_ATTRIBUTE
- ordering_attribute (ORD_row_major);
-#endif /* defined(USE_ORDERING_ATTRIBUTE) */
-
- subscript_data_attribute (type);
-}
-
-static void
-output_set_type_die (arg)
- void *arg;
-{
- tree type = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_set_type);
- sibling_attribute ();
- equate_type_number_to_die_number (type);
- member_attribute (TYPE_CONTEXT (type));
- type_attribute (TREE_TYPE (type), 0, 0);
-}
-
-#if 0
-/* Implement this when there is a GNU FORTRAN or GNU Ada front end. */
-
-static void
-output_entry_point_die (arg)
- void *arg;
-{
- tree decl = arg;
- tree origin = decl_ultimate_origin (decl);
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_entry_point);
- sibling_attribute ();
- dienum_push ();
- if (origin != NULL)
- abstract_origin_attribute (origin);
- else
- {
- name_and_src_coords_attributes (decl);
- member_attribute (DECL_CONTEXT (decl));
- type_attribute (TREE_TYPE (TREE_TYPE (decl)), 0, 0);
- }
- if (DECL_ABSTRACT (decl))
- equate_decl_number_to_die_number (decl);
- else
- low_pc_attribute (function_start_label (decl));
-}
-#endif
-
-/* Output a DIE to represent an inlined instance of an enumeration type. */
-
-static void
-output_inlined_enumeration_type_die (arg)
- void *arg;
-{
- tree type = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_enumeration_type);
- sibling_attribute ();
- if (!TREE_ASM_WRITTEN (type))
- abort ();
- abstract_origin_attribute (type);
-}
-
-/* Output a DIE to represent an inlined instance of a structure type. */
-
-static void
-output_inlined_structure_type_die (arg)
- void *arg;
-{
- tree type = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_structure_type);
- sibling_attribute ();
- if (!TREE_ASM_WRITTEN (type))
- abort ();
- abstract_origin_attribute (type);
-}
-
-/* Output a DIE to represent an inlined instance of a union type. */
-
-static void
-output_inlined_union_type_die (arg)
- void *arg;
-{
- tree type = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_union_type);
- sibling_attribute ();
- if (!TREE_ASM_WRITTEN (type))
- abort ();
- abstract_origin_attribute (type);
-}
-
-/* Output a DIE to represent an enumeration type. Note that these DIEs
- include all of the information about the enumeration values also.
- This information is encoded into the element_list attribute. */
-
-static void
-output_enumeration_type_die (arg)
- void *arg;
-{
- tree type = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_enumeration_type);
- sibling_attribute ();
- equate_type_number_to_die_number (type);
- name_attribute (type_tag (type));
- member_attribute (TYPE_CONTEXT (type));
-
- /* Handle a GNU C/C++ extension, i.e. incomplete enum types. If the
- given enum type is incomplete, do not generate the AT_byte_size
- attribute or the AT_element_list attribute. */
-
- if (COMPLETE_TYPE_P (type))
- {
- byte_size_attribute (type);
- element_list_attribute (TYPE_FIELDS (type));
- }
-}
-
-/* Output a DIE to represent either a real live formal parameter decl or
- to represent just the type of some formal parameter position in some
- function type.
-
- Note that this routine is a bit unusual because its argument may be
- a ..._DECL node (i.e. either a PARM_DECL or perhaps a VAR_DECL which
- represents an inlining of some PARM_DECL) or else some sort of a
- ..._TYPE node. If it's the former then this function is being called
- to output a DIE to represent a formal parameter object (or some inlining
- thereof). If it's the latter, then this function is only being called
- to output a TAG_formal_parameter DIE to stand as a placeholder for some
- formal argument type of some subprogram type. */
-
-static void
-output_formal_parameter_die (arg)
- void *arg;
-{
- tree node = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_formal_parameter);
- sibling_attribute ();
-
- switch (TREE_CODE_CLASS (TREE_CODE (node)))
- {
- case 'd': /* We were called with some kind of a ..._DECL node. */
- {
- register tree origin = decl_ultimate_origin (node);
-
- if (origin != NULL)
- abstract_origin_attribute (origin);
- else
- {
- name_and_src_coords_attributes (node);
- type_attribute (TREE_TYPE (node),
- TREE_READONLY (node), TREE_THIS_VOLATILE (node));
- }
- if (DECL_ABSTRACT (node))
- equate_decl_number_to_die_number (node);
- else
- location_or_const_value_attribute (node);
- }
- break;
-
- case 't': /* We were called with some kind of a ..._TYPE node. */
- type_attribute (node, 0, 0);
- break;
-
- default:
- abort (); /* Should never happen. */
- }
-}
-
-/* Output a DIE to represent a declared function (either file-scope
- or block-local) which has "external linkage" (according to ANSI-C). */
-
-static void
-output_global_subroutine_die (arg)
- void *arg;
-{
- tree decl = arg;
- tree origin = decl_ultimate_origin (decl);
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_global_subroutine);
- sibling_attribute ();
- dienum_push ();
- if (origin != NULL)
- abstract_origin_attribute (origin);
- else
- {
- tree type = TREE_TYPE (decl);
-
- name_and_src_coords_attributes (decl);
- inline_attribute (decl);
- prototyped_attribute (type);
- member_attribute (DECL_CONTEXT (decl));
- type_attribute (TREE_TYPE (type), 0, 0);
- pure_or_virtual_attribute (decl);
- }
- if (DECL_ABSTRACT (decl))
- equate_decl_number_to_die_number (decl);
- else
- {
- if (! DECL_EXTERNAL (decl) && ! in_class
- && decl == current_function_decl)
- {
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- low_pc_attribute (function_start_label (decl));
- sprintf (label, FUNC_END_LABEL_FMT, current_function_funcdef_no);
- high_pc_attribute (label);
- if (use_gnu_debug_info_extensions)
- {
- sprintf (label, BODY_BEGIN_LABEL_FMT,
- current_function_funcdef_no);
- body_begin_attribute (label);
- sprintf (label, BODY_END_LABEL_FMT, current_function_funcdef_no);
- body_end_attribute (label);
- }
- }
- }
-}
-
-/* Output a DIE to represent a declared data object (either file-scope
- or block-local) which has "external linkage" (according to ANSI-C). */
-
-static void
-output_global_variable_die (arg)
- void *arg;
-{
- tree decl = arg;
- tree origin = decl_ultimate_origin (decl);
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_global_variable);
- sibling_attribute ();
- if (origin != NULL)
- abstract_origin_attribute (origin);
- else
- {
- name_and_src_coords_attributes (decl);
- member_attribute (DECL_CONTEXT (decl));
- type_attribute (TREE_TYPE (decl),
- TREE_READONLY (decl), TREE_THIS_VOLATILE (decl));
- }
- if (DECL_ABSTRACT (decl))
- equate_decl_number_to_die_number (decl);
- else
- {
- if (! DECL_EXTERNAL (decl) && ! in_class
- && current_function_decl == decl_function_context (decl))
- location_or_const_value_attribute (decl);
- }
-}
-
-static void
-output_label_die (arg)
- void *arg;
-{
- tree decl = arg;
- tree origin = decl_ultimate_origin (decl);
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_label);
- sibling_attribute ();
- if (origin != NULL)
- abstract_origin_attribute (origin);
- else
- name_and_src_coords_attributes (decl);
- if (DECL_ABSTRACT (decl))
- equate_decl_number_to_die_number (decl);
- else
- {
- rtx insn = DECL_RTL (decl);
-
- /* Deleted labels are programmer specified labels which have been
- eliminated because of various optimisations. We still emit them
- here so that it is possible to put breakpoints on them. */
- if (GET_CODE (insn) == CODE_LABEL
- || ((GET_CODE (insn) == NOTE
- && NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED_LABEL)))
- {
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- /* When optimization is enabled (via -O) some parts of the compiler
- (e.g. jump.c and cse.c) may try to delete CODE_LABEL insns which
- represent source-level labels which were explicitly declared by
- the user. This really shouldn't be happening though, so catch
- it if it ever does happen. */
-
- if (INSN_DELETED_P (insn))
- abort (); /* Should never happen. */
-
- ASM_GENERATE_INTERNAL_LABEL (label, "L", CODE_LABEL_NUMBER (insn));
- low_pc_attribute (label);
- }
- }
-}
-
-static void
-output_lexical_block_die (arg)
- void *arg;
-{
- tree stmt = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_lexical_block);
- sibling_attribute ();
- dienum_push ();
- if (! BLOCK_ABSTRACT (stmt))
- {
- char begin_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char end_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- sprintf (begin_label, BLOCK_BEGIN_LABEL_FMT, BLOCK_NUMBER (stmt));
- low_pc_attribute (begin_label);
- sprintf (end_label, BLOCK_END_LABEL_FMT, BLOCK_NUMBER (stmt));
- high_pc_attribute (end_label);
- }
-}
-
-static void
-output_inlined_subroutine_die (arg)
- void *arg;
-{
- tree stmt = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_inlined_subroutine);
- sibling_attribute ();
- dienum_push ();
- abstract_origin_attribute (block_ultimate_origin (stmt));
- if (! BLOCK_ABSTRACT (stmt))
- {
- char begin_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char end_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- sprintf (begin_label, BLOCK_BEGIN_LABEL_FMT, BLOCK_NUMBER (stmt));
- low_pc_attribute (begin_label);
- sprintf (end_label, BLOCK_END_LABEL_FMT, BLOCK_NUMBER (stmt));
- high_pc_attribute (end_label);
- }
-}
-
-/* Output a DIE to represent a declared data object (either file-scope
- or block-local) which has "internal linkage" (according to ANSI-C). */
-
-static void
-output_local_variable_die (arg)
- void *arg;
-{
- tree decl = arg;
- tree origin = decl_ultimate_origin (decl);
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_local_variable);
- sibling_attribute ();
- if (origin != NULL)
- abstract_origin_attribute (origin);
- else
- {
- name_and_src_coords_attributes (decl);
- member_attribute (DECL_CONTEXT (decl));
- type_attribute (TREE_TYPE (decl),
- TREE_READONLY (decl), TREE_THIS_VOLATILE (decl));
- }
- if (DECL_ABSTRACT (decl))
- equate_decl_number_to_die_number (decl);
- else
- location_or_const_value_attribute (decl);
-}
-
-static void
-output_member_die (arg)
- void *arg;
-{
- tree decl = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_member);
- sibling_attribute ();
- name_and_src_coords_attributes (decl);
- member_attribute (DECL_CONTEXT (decl));
- type_attribute (member_declared_type (decl),
- TREE_READONLY (decl), TREE_THIS_VOLATILE (decl));
- if (DECL_BIT_FIELD_TYPE (decl)) /* If this is a bit field... */
- {
- byte_size_attribute (decl);
- bit_size_attribute (decl);
- bit_offset_attribute (decl);
- }
- data_member_location_attribute (decl);
-}
-
-#if 0
-/* Don't generate either pointer_type DIEs or reference_type DIEs. Use
- modified types instead.
-
- We keep this code here just in case these types of DIEs may be
- needed to represent certain things in other languages (e.g. Pascal)
- someday. */
-
-static void
-output_pointer_type_die (arg)
- void *arg;
-{
- tree type = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_pointer_type);
- sibling_attribute ();
- equate_type_number_to_die_number (type);
- member_attribute (TYPE_CONTEXT (type));
- type_attribute (TREE_TYPE (type), 0, 0);
-}
-
-static void
-output_reference_type_die (arg)
- void *arg;
-{
- tree type = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_reference_type);
- sibling_attribute ();
- equate_type_number_to_die_number (type);
- member_attribute (TYPE_CONTEXT (type));
- type_attribute (TREE_TYPE (type), 0, 0);
-}
-#endif
-
-static void
-output_ptr_to_mbr_type_die (arg)
- void *arg;
-{
- tree type = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_ptr_to_member_type);
- sibling_attribute ();
- equate_type_number_to_die_number (type);
- member_attribute (TYPE_CONTEXT (type));
- containing_type_attribute (TYPE_OFFSET_BASETYPE (type));
- type_attribute (TREE_TYPE (type), 0, 0);
-}
-
-static void
-output_compile_unit_die (arg)
- void *arg;
-{
- const char *main_input_filename = arg;
- const char *language_string = lang_hooks.name;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_compile_unit);
- sibling_attribute ();
- dienum_push ();
- name_attribute (main_input_filename);
-
- {
- char producer[250];
-
- sprintf (producer, "%s %s", language_string, version_string);
- producer_attribute (producer);
- }
-
- if (strcmp (language_string, "GNU C++") == 0)
- language_attribute (LANG_C_PLUS_PLUS);
- else if (strcmp (language_string, "GNU Ada") == 0)
- language_attribute (LANG_ADA83);
- else if (strcmp (language_string, "GNU F77") == 0)
- language_attribute (LANG_FORTRAN77);
- else if (strcmp (language_string, "GNU Pascal") == 0)
- language_attribute (LANG_PASCAL83);
- else if (strcmp (language_string, "GNU Java") == 0)
- language_attribute (LANG_JAVA);
- else
- language_attribute (LANG_C89);
- low_pc_attribute (TEXT_BEGIN_LABEL);
- high_pc_attribute (TEXT_END_LABEL);
- if (debug_info_level >= DINFO_LEVEL_NORMAL)
- stmt_list_attribute (LINE_BEGIN_LABEL);
-
- {
- const char *wd = getpwd ();
- if (wd)
- comp_dir_attribute (wd);
- }
-
- if (debug_info_level >= DINFO_LEVEL_NORMAL && use_gnu_debug_info_extensions)
- {
- sf_names_attribute (SFNAMES_BEGIN_LABEL);
- src_info_attribute (SRCINFO_BEGIN_LABEL);
- if (debug_info_level >= DINFO_LEVEL_VERBOSE)
- mac_info_attribute (MACINFO_BEGIN_LABEL);
- }
-}
-
-static void
-output_string_type_die (arg)
- void *arg;
-{
- tree type = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_string_type);
- sibling_attribute ();
- equate_type_number_to_die_number (type);
- member_attribute (TYPE_CONTEXT (type));
- /* this is a fixed length string */
- byte_size_attribute (type);
-}
-
-static void
-output_inheritance_die (arg)
- void *arg;
-{
- tree binfo = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_inheritance);
- sibling_attribute ();
- type_attribute (BINFO_TYPE (binfo), 0, 0);
- data_member_location_attribute (binfo);
- if (TREE_VIA_VIRTUAL (binfo))
- {
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_virtual);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, "");
- }
- if (TREE_VIA_PUBLIC (binfo))
- {
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_public);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, "");
- }
- else if (TREE_VIA_PROTECTED (binfo))
- {
- ASM_OUTPUT_DWARF_ATTRIBUTE (asm_out_file, AT_protected);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, "");
- }
-}
-
-static void
-output_structure_type_die (arg)
- void *arg;
-{
- tree type = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_structure_type);
- sibling_attribute ();
- equate_type_number_to_die_number (type);
- name_attribute (type_tag (type));
- member_attribute (TYPE_CONTEXT (type));
-
- /* If this type has been completed, then give it a byte_size attribute
- and prepare to give a list of members. Otherwise, don't do either of
- these things. In the latter case, we will not be generating a list
- of members (since we don't have any idea what they might be for an
- incomplete type). */
-
- if (COMPLETE_TYPE_P (type))
- {
- dienum_push ();
- byte_size_attribute (type);
- }
-}
-
-/* Output a DIE to represent a declared function (either file-scope
- or block-local) which has "internal linkage" (according to ANSI-C). */
-
-static void
-output_local_subroutine_die (arg)
- void *arg;
-{
- tree decl = arg;
- tree origin = decl_ultimate_origin (decl);
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_subroutine);
- sibling_attribute ();
- dienum_push ();
- if (origin != NULL)
- abstract_origin_attribute (origin);
- else
- {
- tree type = TREE_TYPE (decl);
-
- name_and_src_coords_attributes (decl);
- inline_attribute (decl);
- prototyped_attribute (type);
- member_attribute (DECL_CONTEXT (decl));
- type_attribute (TREE_TYPE (type), 0, 0);
- pure_or_virtual_attribute (decl);
- }
- if (DECL_ABSTRACT (decl))
- equate_decl_number_to_die_number (decl);
- else
- {
- /* Avoid getting screwed up in cases where a function was declared
- static but where no definition was ever given for it. */
-
- if (TREE_ASM_WRITTEN (decl))
- {
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
- low_pc_attribute (function_start_label (decl));
- sprintf (label, FUNC_END_LABEL_FMT, current_function_funcdef_no);
- high_pc_attribute (label);
- if (use_gnu_debug_info_extensions)
- {
- sprintf (label, BODY_BEGIN_LABEL_FMT,
- current_function_funcdef_no);
- body_begin_attribute (label);
- sprintf (label, BODY_END_LABEL_FMT, current_function_funcdef_no);
- body_end_attribute (label);
- }
- }
- }
-}
-
-static void
-output_subroutine_type_die (arg)
- void *arg;
-{
- tree type = arg;
- tree return_type = TREE_TYPE (type);
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_subroutine_type);
- sibling_attribute ();
- dienum_push ();
- equate_type_number_to_die_number (type);
- prototyped_attribute (type);
- member_attribute (TYPE_CONTEXT (type));
- type_attribute (return_type, 0, 0);
-}
-
-static void
-output_typedef_die (arg)
- void *arg;
-{
- tree decl = arg;
- tree origin = decl_ultimate_origin (decl);
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_typedef);
- sibling_attribute ();
- if (origin != NULL)
- abstract_origin_attribute (origin);
- else
- {
- name_and_src_coords_attributes (decl);
- member_attribute (DECL_CONTEXT (decl));
- type_attribute (TREE_TYPE (decl),
- TREE_READONLY (decl), TREE_THIS_VOLATILE (decl));
- }
- if (DECL_ABSTRACT (decl))
- equate_decl_number_to_die_number (decl);
-}
-
-static void
-output_union_type_die (arg)
- void *arg;
-{
- tree type = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_union_type);
- sibling_attribute ();
- equate_type_number_to_die_number (type);
- name_attribute (type_tag (type));
- member_attribute (TYPE_CONTEXT (type));
-
- /* If this type has been completed, then give it a byte_size attribute
- and prepare to give a list of members. Otherwise, don't do either of
- these things. In the latter case, we will not be generating a list
- of members (since we don't have any idea what they might be for an
- incomplete type). */
-
- if (COMPLETE_TYPE_P (type))
- {
- dienum_push ();
- byte_size_attribute (type);
- }
-}
-
-/* Generate a special type of DIE used as a stand-in for a trailing ellipsis
- at the end of an (ANSI prototyped) formal parameters list. */
-
-static void
-output_unspecified_parameters_die (arg)
- void *arg;
-{
- tree decl_or_type = arg;
-
- ASM_OUTPUT_DWARF_TAG (asm_out_file, TAG_unspecified_parameters);
- sibling_attribute ();
-
- /* This kludge is here only for the sake of being compatible with what
- the USL CI5 C compiler does. The specification of Dwarf Version 1
- doesn't say that TAG_unspecified_parameters DIEs should contain any
- attributes other than the AT_sibling attribute, but they are certainly
- allowed to contain additional attributes, and the CI5 compiler
- generates AT_name, AT_fund_type, and AT_location attributes within
- TAG_unspecified_parameters DIEs which appear in the child lists for
- DIEs representing function definitions, so we do likewise here. */
-
- if (TREE_CODE (decl_or_type) == FUNCTION_DECL && DECL_INITIAL (decl_or_type))
- {
- name_attribute ("...");
- fund_type_attribute (FT_pointer);
- /* location_attribute (?); */
- }
-}
-
-static void
-output_padded_null_die (arg)
- void *arg ATTRIBUTE_UNUSED;
-{
- ASM_OUTPUT_ALIGN (asm_out_file, 2); /* 2**2 == 4 */
-}
-
-/*************************** end of DIEs *********************************/
-
-/* Generate some type of DIE. This routine generates the generic outer
- wrapper stuff which goes around all types of DIE's (regardless of their
- TAGs. All forms of DIEs start with a DIE-specific label, followed by a
- DIE-length word, followed by the guts of the DIE itself. After the guts
- of the DIE, there must always be a terminator label for the DIE. */
-
-static void
-output_die (die_specific_output_function, param)
- void (*die_specific_output_function) PARAMS ((void *));
- void *param;
-{
- char begin_label[MAX_ARTIFICIAL_LABEL_BYTES];
- char end_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- current_dienum = NEXT_DIE_NUM;
- NEXT_DIE_NUM = next_unused_dienum;
-
- sprintf (begin_label, DIE_BEGIN_LABEL_FMT, current_dienum);
- sprintf (end_label, DIE_END_LABEL_FMT, current_dienum);
-
- /* Write a label which will act as the name for the start of this DIE. */
-
- ASM_OUTPUT_LABEL (asm_out_file, begin_label);
-
- /* Write the DIE-length word. */
-
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file, end_label, begin_label);
-
- /* Fill in the guts of the DIE. */
-
- next_unused_dienum++;
- die_specific_output_function (param);
-
- /* Write a label which will act as the name for the end of this DIE. */
-
- ASM_OUTPUT_LABEL (asm_out_file, end_label);
-}
-
-static void
-end_sibling_chain ()
-{
- char begin_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- current_dienum = NEXT_DIE_NUM;
- NEXT_DIE_NUM = next_unused_dienum;
-
- sprintf (begin_label, DIE_BEGIN_LABEL_FMT, current_dienum);
-
- /* Write a label which will act as the name for the start of this DIE. */
-
- ASM_OUTPUT_LABEL (asm_out_file, begin_label);
-
- /* Write the DIE-length word. */
-
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, 4);
-
- dienum_pop ();
-}
-
-/* Generate a list of nameless TAG_formal_parameter DIEs (and perhaps a
- TAG_unspecified_parameters DIE) to represent the types of the formal
- parameters as specified in some function type specification (except
- for those which appear as part of a function *definition*).
-
- Note that we must be careful here to output all of the parameter
- DIEs *before* we output any DIEs needed to represent the types of
- the formal parameters. This keeps svr4 SDB happy because it
- (incorrectly) thinks that the first non-parameter DIE it sees ends
- the formal parameter list. */
-
-static void
-output_formal_types (function_or_method_type)
- tree function_or_method_type;
-{
- tree link;
- tree formal_type = NULL;
- tree first_parm_type = TYPE_ARG_TYPES (function_or_method_type);
-
- /* Set TREE_ASM_WRITTEN while processing the parameters, lest we
- get bogus recursion when outputting tagged types local to a
- function declaration. */
- int save_asm_written = TREE_ASM_WRITTEN (function_or_method_type);
- TREE_ASM_WRITTEN (function_or_method_type) = 1;
-
- /* In the case where we are generating a formal types list for a C++
- non-static member function type, skip over the first thing on the
- TYPE_ARG_TYPES list because it only represents the type of the
- hidden `this pointer'. The debugger should be able to figure
- out (without being explicitly told) that this non-static member
- function type takes a `this pointer' and should be able to figure
- what the type of that hidden parameter is from the AT_member
- attribute of the parent TAG_subroutine_type DIE. */
-
- if (TREE_CODE (function_or_method_type) == METHOD_TYPE)
- first_parm_type = TREE_CHAIN (first_parm_type);
-
- /* Make our first pass over the list of formal parameter types and output
- a TAG_formal_parameter DIE for each one. */
-
- for (link = first_parm_type; link; link = TREE_CHAIN (link))
- {
- formal_type = TREE_VALUE (link);
- if (formal_type == void_type_node)
- break;
-
- /* Output a (nameless) DIE to represent the formal parameter itself. */
-
- output_die (output_formal_parameter_die, formal_type);
- }
-
- /* If this function type has an ellipsis, add a TAG_unspecified_parameters
- DIE to the end of the parameter list. */
-
- if (formal_type != void_type_node)
- output_die (output_unspecified_parameters_die, function_or_method_type);
-
- /* Make our second (and final) pass over the list of formal parameter types
- and output DIEs to represent those types (as necessary). */
-
- for (link = TYPE_ARG_TYPES (function_or_method_type);
- link;
- link = TREE_CHAIN (link))
- {
- formal_type = TREE_VALUE (link);
- if (formal_type == void_type_node)
- break;
-
- output_type (formal_type, function_or_method_type);
- }
-
- TREE_ASM_WRITTEN (function_or_method_type) = save_asm_written;
-}
-
-/* Remember a type in the pending_types_list. */
-
-static void
-pend_type (type)
- tree type;
-{
- if (pending_types == pending_types_allocated)
- {
- pending_types_allocated += PENDING_TYPES_INCREMENT;
- pending_types_list
- = (tree *) xrealloc (pending_types_list,
- sizeof (tree) * pending_types_allocated);
- }
- pending_types_list[pending_types++] = type;
-
- /* Mark the pending type as having been output already (even though
- it hasn't been). This prevents the type from being added to the
- pending_types_list more than once. */
-
- TREE_ASM_WRITTEN (type) = 1;
-}
-
-/* Return nonzero if it is legitimate to output DIEs to represent a
- given type while we are generating the list of child DIEs for some
- DIE (e.g. a function or lexical block DIE) associated with a given scope.
-
- See the comments within the function for a description of when it is
- considered legitimate to output DIEs for various kinds of types.
-
- Note that TYPE_CONTEXT(type) may be NULL (to indicate global scope)
- or it may point to a BLOCK node (for types local to a block), or to a
- FUNCTION_DECL node (for types local to the heading of some function
- definition), or to a FUNCTION_TYPE node (for types local to the
- prototyped parameter list of a function type specification), or to a
- RECORD_TYPE, UNION_TYPE, or QUAL_UNION_TYPE node
- (in the case of C++ nested types).
-
- The `scope' parameter should likewise be NULL or should point to a
- BLOCK node, a FUNCTION_DECL node, a FUNCTION_TYPE node, a RECORD_TYPE
- node, a UNION_TYPE node, or a QUAL_UNION_TYPE node.
-
- This function is used only for deciding when to "pend" and when to
- "un-pend" types to/from the pending_types_list.
-
- Note that we sometimes make use of this "type pending" feature in a
- rather twisted way to temporarily delay the production of DIEs for the
- types of formal parameters. (We do this just to make svr4 SDB happy.)
- It order to delay the production of DIEs representing types of formal
- parameters, callers of this function supply `fake_containing_scope' as
- the `scope' parameter to this function. Given that fake_containing_scope
- is a tagged type which is *not* the containing scope for *any* other type,
- the desired effect is achieved, i.e. output of DIEs representing types
- is temporarily suspended, and any type DIEs which would have otherwise
- been output are instead placed onto the pending_types_list. Later on,
- we force these (temporarily pended) types to be output simply by calling
- `output_pending_types_for_scope' with an actual argument equal to the
- true scope of the types we temporarily pended. */
-
-static inline int
-type_ok_for_scope (type, scope)
- tree type;
- tree scope;
-{
- /* Tagged types (i.e. struct, union, and enum types) must always be
- output only in the scopes where they actually belong (or else the
- scoping of their own tag names and the scoping of their member
- names will be incorrect). Non-tagged-types on the other hand can
- generally be output anywhere, except that svr4 SDB really doesn't
- want to see them nested within struct or union types, so here we
- say it is always OK to immediately output any such a (non-tagged)
- type, so long as we are not within such a context. Note that the
- only kinds of non-tagged types which we will be dealing with here
- (for C and C++ anyway) will be array types and function types. */
-
- return is_tagged_type (type)
- ? (TYPE_CONTEXT (type) == scope
- /* Ignore namespaces for the moment. */
- || (scope == NULL_TREE
- && TREE_CODE (TYPE_CONTEXT (type)) == NAMESPACE_DECL)
- || (scope == NULL_TREE && is_tagged_type (TYPE_CONTEXT (type))
- && TREE_ASM_WRITTEN (TYPE_CONTEXT (type))))
- : (scope == NULL_TREE || ! is_tagged_type (scope));
-}
-
-/* Output any pending types (from the pending_types list) which we can output
- now (taking into account the scope that we are working on now).
-
- For each type output, remove the given type from the pending_types_list
- *before* we try to output it.
-
- Note that we have to process the list in beginning-to-end order,
- because the call made here to output_type may cause yet more types
- to be added to the end of the list, and we may have to output some
- of them too. */
-
-static void
-output_pending_types_for_scope (containing_scope)
- tree containing_scope;
-{
- unsigned i;
-
- for (i = 0; i < pending_types; )
- {
- tree type = pending_types_list[i];
-
- if (type_ok_for_scope (type, containing_scope))
- {
- tree *mover;
- tree *limit;
-
- pending_types--;
- limit = &pending_types_list[pending_types];
- for (mover = &pending_types_list[i]; mover < limit; mover++)
- *mover = *(mover+1);
-
- /* Un-mark the type as having been output already (because it
- hasn't been, really). Then call output_type to generate a
- Dwarf representation of it. */
-
- TREE_ASM_WRITTEN (type) = 0;
- output_type (type, containing_scope);
-
- /* Don't increment the loop counter in this case because we
- have shifted all of the subsequent pending types down one
- element in the pending_types_list array. */
- }
- else
- i++;
- }
-}
-
-/* Remember a type in the incomplete_types_list. */
-
-static void
-add_incomplete_type (type)
- tree type;
-{
- if (incomplete_types == incomplete_types_allocated)
- {
- incomplete_types_allocated += INCOMPLETE_TYPES_INCREMENT;
- incomplete_types_list
- = (tree *) xrealloc (incomplete_types_list,
- sizeof (tree) * incomplete_types_allocated);
- }
-
- incomplete_types_list[incomplete_types++] = type;
-}
-
-/* Walk through the list of incomplete types again, trying once more to
- emit full debugging info for them. */
-
-static void
-retry_incomplete_types ()
-{
- tree type;
-
- finalizing = 1;
- while (incomplete_types)
- {
- --incomplete_types;
- type = incomplete_types_list[incomplete_types];
- output_type (type, NULL_TREE);
- }
-}
-
-static void
-output_type (type, containing_scope)
- tree type;
- tree containing_scope;
-{
- if (type == 0 || type == error_mark_node)
- return;
-
- /* We are going to output a DIE to represent the unqualified version of
- this type (i.e. without any const or volatile qualifiers) so get
- the main variant (i.e. the unqualified version) of this type now. */
-
- type = type_main_variant (type);
-
- if (TREE_ASM_WRITTEN (type))
- {
- if (finalizing && AGGREGATE_TYPE_P (type))
- {
- tree member;
-
- /* Some of our nested types might not have been defined when we
- were written out before; force them out now. */
-
- for (member = TYPE_FIELDS (type); member;
- member = TREE_CHAIN (member))
- if (TREE_CODE (member) == TYPE_DECL
- && ! TREE_ASM_WRITTEN (TREE_TYPE (member)))
- output_type (TREE_TYPE (member), containing_scope);
- }
- return;
- }
-
- /* If this is a nested type whose containing class hasn't been
- written out yet, writing it out will cover this one, too. */
-
- if (TYPE_CONTEXT (type)
- && TYPE_P (TYPE_CONTEXT (type))
- && ! TREE_ASM_WRITTEN (TYPE_CONTEXT (type)))
- {
- output_type (TYPE_CONTEXT (type), containing_scope);
- return;
- }
-
- /* Don't generate any DIEs for this type now unless it is OK to do so
- (based upon what `type_ok_for_scope' tells us). */
-
- if (! type_ok_for_scope (type, containing_scope))
- {
- pend_type (type);
- return;
- }
-
- switch (TREE_CODE (type))
- {
- case ERROR_MARK:
- break;
-
- case VECTOR_TYPE:
- output_type (TYPE_DEBUG_REPRESENTATION_TYPE (type), containing_scope);
- break;
-
- case POINTER_TYPE:
- case REFERENCE_TYPE:
- /* Prevent infinite recursion in cases where this is a recursive
- type. Recursive types are possible in Ada. */
- TREE_ASM_WRITTEN (type) = 1;
- /* For these types, all that is required is that we output a DIE
- (or a set of DIEs) to represent the "basis" type. */
- output_type (TREE_TYPE (type), containing_scope);
- break;
-
- case OFFSET_TYPE:
- /* This code is used for C++ pointer-to-data-member types. */
- /* Output a description of the relevant class type. */
- output_type (TYPE_OFFSET_BASETYPE (type), containing_scope);
- /* Output a description of the type of the object pointed to. */
- output_type (TREE_TYPE (type), containing_scope);
- /* Now output a DIE to represent this pointer-to-data-member type
- itself. */
- output_die (output_ptr_to_mbr_type_die, type);
- break;
-
- case SET_TYPE:
- output_type (TYPE_DOMAIN (type), containing_scope);
- output_die (output_set_type_die, type);
- break;
-
- case FILE_TYPE:
- output_type (TREE_TYPE (type), containing_scope);
- abort (); /* No way to represent these in Dwarf yet! */
- break;
-
- case FUNCTION_TYPE:
- /* Force out return type (in case it wasn't forced out already). */
- output_type (TREE_TYPE (type), containing_scope);
- output_die (output_subroutine_type_die, type);
- output_formal_types (type);
- end_sibling_chain ();
- break;
-
- case METHOD_TYPE:
- /* Force out return type (in case it wasn't forced out already). */
- output_type (TREE_TYPE (type), containing_scope);
- output_die (output_subroutine_type_die, type);
- output_formal_types (type);
- end_sibling_chain ();
- break;
-
- case ARRAY_TYPE:
- if (TYPE_STRING_FLAG (type) && TREE_CODE(TREE_TYPE(type)) == CHAR_TYPE)
- {
- output_type (TREE_TYPE (type), containing_scope);
- output_die (output_string_type_die, type);
- }
- else
- {
- tree element_type;
-
- element_type = TREE_TYPE (type);
- while (TREE_CODE (element_type) == ARRAY_TYPE)
- element_type = TREE_TYPE (element_type);
-
- output_type (element_type, containing_scope);
- output_die (output_array_type_die, type);
- }
- break;
-
- case ENUMERAL_TYPE:
- case RECORD_TYPE:
- case UNION_TYPE:
- case QUAL_UNION_TYPE:
-
- /* For a non-file-scope tagged type, we can always go ahead and
- output a Dwarf description of this type right now, even if
- the type in question is still incomplete, because if this
- local type *was* ever completed anywhere within its scope,
- that complete definition would already have been attached to
- this RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE or ENUMERAL_TYPE
- node by the time we reach this point. That's true because of the
- way the front-end does its processing of file-scope declarations (of
- functions and class types) within which other types might be
- nested. The C and C++ front-ends always gobble up such "local
- scope" things en-mass before they try to output *any* debugging
- information for any of the stuff contained inside them and thus,
- we get the benefit here of what is (in effect) a pre-resolution
- of forward references to tagged types in local scopes.
-
- Note however that for file-scope tagged types we cannot assume
- that such pre-resolution of forward references has taken place.
- A given file-scope tagged type may appear to be incomplete when
- we reach this point, but it may yet be given a full definition
- (at file-scope) later on during compilation. In order to avoid
- generating a premature (and possibly incorrect) set of Dwarf
- DIEs for such (as yet incomplete) file-scope tagged types, we
- generate nothing at all for as-yet incomplete file-scope tagged
- types here unless we are making our special "finalization" pass
- for file-scope things at the very end of compilation. At that
- time, we will certainly know as much about each file-scope tagged
- type as we are ever going to know, so at that point in time, we
- can safely generate correct Dwarf descriptions for these file-
- scope tagged types. */
-
- if (!COMPLETE_TYPE_P (type)
- && (TYPE_CONTEXT (type) == NULL
- || AGGREGATE_TYPE_P (TYPE_CONTEXT (type))
- || TREE_CODE (TYPE_CONTEXT (type)) == NAMESPACE_DECL)
- && !finalizing)
- {
- /* We don't need to do this for function-local types. */
- if (! decl_function_context (TYPE_STUB_DECL (type)))
- add_incomplete_type (type);
- return; /* EARLY EXIT! Avoid setting TREE_ASM_WRITTEN. */
- }
-
- /* Prevent infinite recursion in cases where the type of some
- member of this type is expressed in terms of this type itself. */
-
- TREE_ASM_WRITTEN (type) = 1;
-
- /* Output a DIE to represent the tagged type itself. */
-
- switch (TREE_CODE (type))
- {
- case ENUMERAL_TYPE:
- output_die (output_enumeration_type_die, type);
- return; /* a special case -- nothing left to do so just return */
-
- case RECORD_TYPE:
- output_die (output_structure_type_die, type);
- break;
-
- case UNION_TYPE:
- case QUAL_UNION_TYPE:
- output_die (output_union_type_die, type);
- break;
-
- default:
- abort (); /* Should never happen. */
- }
-
- /* If this is not an incomplete type, output descriptions of
- each of its members.
-
- Note that as we output the DIEs necessary to represent the
- members of this record or union type, we will also be trying
- to output DIEs to represent the *types* of those members.
- However the `output_type' function (above) will specifically
- avoid generating type DIEs for member types *within* the list
- of member DIEs for this (containing) type except for those
- types (of members) which are explicitly marked as also being
- members of this (containing) type themselves. The g++ front-
- end can force any given type to be treated as a member of some
- other (containing) type by setting the TYPE_CONTEXT of the
- given (member) type to point to the TREE node representing the
- appropriate (containing) type.
- */
-
- if (COMPLETE_TYPE_P (type))
- {
- /* First output info about the base classes. */
- if (TYPE_BINFO (type) && TYPE_BINFO_BASETYPES (type))
- {
- register tree bases = TYPE_BINFO_BASETYPES (type);
- register int n_bases = TREE_VEC_LENGTH (bases);
- register int i;
-
- for (i = 0; i < n_bases; i++)
- {
- tree binfo = TREE_VEC_ELT (bases, i);
- output_type (BINFO_TYPE (binfo), containing_scope);
- output_die (output_inheritance_die, binfo);
- }
- }
-
- ++in_class;
-
- {
- tree normal_member;
-
- /* Now output info about the data members and type members. */
-
- for (normal_member = TYPE_FIELDS (type);
- normal_member;
- normal_member = TREE_CHAIN (normal_member))
- output_decl (normal_member, type);
- }
-
- {
- tree func_member;
-
- /* Now output info about the function members (if any). */
-
- for (func_member = TYPE_METHODS (type);
- func_member;
- func_member = TREE_CHAIN (func_member))
- {
- /* Don't include clones in the member list. */
- if (DECL_ABSTRACT_ORIGIN (func_member))
- continue;
-
- output_decl (func_member, type);
- }
- }
-
- --in_class;
-
- /* RECORD_TYPEs, UNION_TYPEs, and QUAL_UNION_TYPEs are themselves
- scopes (at least in C++) so we must now output any nested
- pending types which are local just to this type. */
-
- output_pending_types_for_scope (type);
-
- end_sibling_chain (); /* Terminate member chain. */
- }
-
- break;
-
- case VOID_TYPE:
- case INTEGER_TYPE:
- case REAL_TYPE:
- case COMPLEX_TYPE:
- case BOOLEAN_TYPE:
- case CHAR_TYPE:
- break; /* No DIEs needed for fundamental types. */
-
- case LANG_TYPE: /* No Dwarf representation currently defined. */
- break;
-
- default:
- abort ();
- }
-
- TREE_ASM_WRITTEN (type) = 1;
-}
-
-static void
-output_tagged_type_instantiation (type)
- tree type;
-{
- if (type == 0 || type == error_mark_node)
- return;
-
- /* We are going to output a DIE to represent the unqualified version of
- this type (i.e. without any const or volatile qualifiers) so make
- sure that we have the main variant (i.e. the unqualified version) of
- this type now. */
-
- if (type != type_main_variant (type))
- abort ();
-
- if (!TREE_ASM_WRITTEN (type))
- abort ();
-
- switch (TREE_CODE (type))
- {
- case ERROR_MARK:
- break;
-
- case ENUMERAL_TYPE:
- output_die (output_inlined_enumeration_type_die, type);
- break;
-
- case RECORD_TYPE:
- output_die (output_inlined_structure_type_die, type);
- break;
-
- case UNION_TYPE:
- case QUAL_UNION_TYPE:
- output_die (output_inlined_union_type_die, type);
- break;
-
- default:
- abort (); /* Should never happen. */
- }
-}
-
-/* Output a TAG_lexical_block DIE followed by DIEs to represent all of
- the things which are local to the given block. */
-
-static void
-output_block (stmt, depth)
- tree stmt;
- int depth;
-{
- int must_output_die = 0;
- tree origin;
- enum tree_code origin_code;
-
- /* Ignore blocks never really used to make RTL. */
-
- if (! stmt || ! TREE_USED (stmt)
- || (!TREE_ASM_WRITTEN (stmt) && !BLOCK_ABSTRACT (stmt)))
- return;
-
- /* Determine the "ultimate origin" of this block. This block may be an
- inlined instance of an inlined instance of inline function, so we
- have to trace all of the way back through the origin chain to find
- out what sort of node actually served as the original seed for the
- creation of the current block. */
-
- origin = block_ultimate_origin (stmt);
- origin_code = (origin != NULL) ? TREE_CODE (origin) : ERROR_MARK;
-
- /* Determine if we need to output any Dwarf DIEs at all to represent this
- block. */
-
- if (origin_code == FUNCTION_DECL)
- /* The outer scopes for inlinings *must* always be represented. We
- generate TAG_inlined_subroutine DIEs for them. (See below.) */
- must_output_die = 1;
- else
- {
- /* In the case where the current block represents an inlining of the
- "body block" of an inline function, we must *NOT* output any DIE
- for this block because we have already output a DIE to represent
- the whole inlined function scope and the "body block" of any
- function doesn't really represent a different scope according to
- ANSI C rules. So we check here to make sure that this block does
- not represent a "body block inlining" before trying to set the
- `must_output_die' flag. */
-
- if (! is_body_block (origin ? origin : stmt))
- {
- /* Determine if this block directly contains any "significant"
- local declarations which we will need to output DIEs for. */
-
- if (debug_info_level > DINFO_LEVEL_TERSE)
- /* We are not in terse mode so *any* local declaration counts
- as being a "significant" one. */
- must_output_die = (BLOCK_VARS (stmt) != NULL);
- else
- {
- tree decl;
-
- /* We are in terse mode, so only local (nested) function
- definitions count as "significant" local declarations. */
-
- for (decl = BLOCK_VARS (stmt); decl; decl = TREE_CHAIN (decl))
- if (TREE_CODE (decl) == FUNCTION_DECL && DECL_INITIAL (decl))
- {
- must_output_die = 1;
- break;
- }
- }
- }
- }
-
- /* It would be a waste of space to generate a Dwarf TAG_lexical_block
- DIE for any block which contains no significant local declarations
- at all. Rather, in such cases we just call `output_decls_for_scope'
- so that any needed Dwarf info for any sub-blocks will get properly
- generated. Note that in terse mode, our definition of what constitutes
- a "significant" local declaration gets restricted to include only
- inlined function instances and local (nested) function definitions. */
-
- if (origin_code == FUNCTION_DECL && BLOCK_ABSTRACT (stmt))
- /* We don't care about an abstract inlined subroutine. */;
- else if (must_output_die)
- {
- output_die ((origin_code == FUNCTION_DECL)
- ? output_inlined_subroutine_die
- : output_lexical_block_die,
- stmt);
- output_decls_for_scope (stmt, depth);
- end_sibling_chain ();
- }
- else
- output_decls_for_scope (stmt, depth);
-}
-
-/* Output all of the decls declared within a given scope (also called
- a `binding contour') and (recursively) all of it's sub-blocks. */
-
-static void
-output_decls_for_scope (stmt, depth)
- tree stmt;
- int depth;
-{
- /* Ignore blocks never really used to make RTL. */
-
- if (! stmt || ! TREE_USED (stmt))
- return;
-
- /* Output the DIEs to represent all of the data objects, functions,
- typedefs, and tagged types declared directly within this block
- but not within any nested sub-blocks. */
-
- {
- tree decl;
-
- for (decl = BLOCK_VARS (stmt); decl; decl = TREE_CHAIN (decl))
- output_decl (decl, stmt);
- }
-
- output_pending_types_for_scope (stmt);
-
- /* Output the DIEs to represent all sub-blocks (and the items declared
- therein) of this block. */
-
- {
- tree subblocks;
-
- for (subblocks = BLOCK_SUBBLOCKS (stmt);
- subblocks;
- subblocks = BLOCK_CHAIN (subblocks))
- output_block (subblocks, depth + 1);
- }
-}
-
-/* Is this a typedef we can avoid emitting? */
-
-static inline int
-is_redundant_typedef (decl)
- tree decl;
-{
- if (TYPE_DECL_IS_STUB (decl))
- return 1;
- if (DECL_ARTIFICIAL (decl)
- && DECL_CONTEXT (decl)
- && is_tagged_type (DECL_CONTEXT (decl))
- && TREE_CODE (TYPE_NAME (DECL_CONTEXT (decl))) == TYPE_DECL
- && DECL_NAME (decl) == DECL_NAME (TYPE_NAME (DECL_CONTEXT (decl))))
- /* Also ignore the artificial member typedef for the class name. */
- return 1;
- return 0;
-}
-
-/* Output Dwarf .debug information for a decl described by DECL. */
-
-static void
-output_decl (decl, containing_scope)
- tree decl;
- tree containing_scope;
-{
- /* Make a note of the decl node we are going to be working on. We may
- need to give the user the source coordinates of where it appeared in
- case we notice (later on) that something about it looks screwy. */
-
- dwarf_last_decl = decl;
-
- if (TREE_CODE (decl) == ERROR_MARK)
- return;
-
- /* If a structure is declared within an initialization, e.g. as the
- operand of a sizeof, then it will not have a name. We don't want
- to output a DIE for it, as the tree nodes are in the temporary obstack */
-
- if ((TREE_CODE (TREE_TYPE (decl)) == RECORD_TYPE
- || TREE_CODE (TREE_TYPE (decl)) == UNION_TYPE)
- && ((DECL_NAME (decl) == 0 && TYPE_NAME (TREE_TYPE (decl)) == 0)
- || (TYPE_FIELDS (TREE_TYPE (decl))
- && (TREE_CODE (TYPE_FIELDS (TREE_TYPE (decl))) == ERROR_MARK))))
- return;
-
- /* If this ..._DECL node is marked to be ignored, then ignore it. */
-
- if (DECL_IGNORED_P (decl))
- return;
-
- switch (TREE_CODE (decl))
- {
- case CONST_DECL:
- /* The individual enumerators of an enum type get output when we
- output the Dwarf representation of the relevant enum type itself. */
- break;
-
- case FUNCTION_DECL:
- /* If we are in terse mode, don't output any DIEs to represent
- mere function declarations. Also, if we are conforming
- to the DWARF version 1 specification, don't output DIEs for
- mere function declarations. */
-
- if (DECL_INITIAL (decl) == NULL_TREE)
-#if (DWARF_VERSION > 1)
- if (debug_info_level <= DINFO_LEVEL_TERSE)
-#endif
- break;
-
- /* Before we describe the FUNCTION_DECL itself, make sure that we
- have described its return type. */
-
- output_type (TREE_TYPE (TREE_TYPE (decl)), containing_scope);
-
- {
- /* And its containing type. */
- register tree origin = decl_class_context (decl);
- if (origin)
- output_type (origin, containing_scope);
- }
-
- /* If we're emitting an out-of-line copy of an inline function,
- set up to refer to the abstract instance emitted from
- dwarfout_deferred_inline_function. */
- if (DECL_INLINE (decl) && ! DECL_ABSTRACT (decl)
- && ! (containing_scope && TYPE_P (containing_scope)))
- set_decl_origin_self (decl);
-
- /* If the following DIE will represent a function definition for a
- function with "extern" linkage, output a special "pubnames" DIE
- label just ahead of the actual DIE. A reference to this label
- was already generated in the .debug_pubnames section sub-entry
- for this function definition. */
-
- if (TREE_PUBLIC (decl))
- {
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- sprintf (label, PUB_DIE_LABEL_FMT, next_pubname_number++);
- ASM_OUTPUT_LABEL (asm_out_file, label);
- }
-
- /* Now output a DIE to represent the function itself. */
-
- output_die (TREE_PUBLIC (decl) || DECL_EXTERNAL (decl)
- ? output_global_subroutine_die
- : output_local_subroutine_die,
- decl);
-
- /* Now output descriptions of the arguments for this function.
- This gets (unnecessarily?) complex because of the fact that
- the DECL_ARGUMENT list for a FUNCTION_DECL doesn't indicate
- cases where there was a trailing `...' at the end of the formal
- parameter list. In order to find out if there was a trailing
- ellipsis or not, we must instead look at the type associated
- with the FUNCTION_DECL. This will be a node of type FUNCTION_TYPE.
- If the chain of type nodes hanging off of this FUNCTION_TYPE node
- ends with a void_type_node then there should *not* be an ellipsis
- at the end. */
-
- /* In the case where we are describing a mere function declaration, all
- we need to do here (and all we *can* do here) is to describe
- the *types* of its formal parameters. */
-
- if (decl != current_function_decl || in_class)
- output_formal_types (TREE_TYPE (decl));
- else
- {
- /* Generate DIEs to represent all known formal parameters */
-
- tree arg_decls = DECL_ARGUMENTS (decl);
- tree parm;
-
- /* WARNING! Kludge zone ahead! Here we have a special
- hack for svr4 SDB compatibility. Instead of passing the
- current FUNCTION_DECL node as the second parameter (i.e.
- the `containing_scope' parameter) to `output_decl' (as
- we ought to) we instead pass a pointer to our own private
- fake_containing_scope node. That node is a RECORD_TYPE
- node which NO OTHER TYPE may ever actually be a member of.
-
- This pointer will ultimately get passed into `output_type'
- as its `containing_scope' parameter. `Output_type' will
- then perform its part in the hack... i.e. it will pend
- the type of the formal parameter onto the pending_types
- list. Later on, when we are done generating the whole
- sequence of formal parameter DIEs for this function
- definition, we will un-pend all previously pended types
- of formal parameters for this function definition.
-
- This whole kludge prevents any type DIEs from being
- mixed in with the formal parameter DIEs. That's good
- because svr4 SDB believes that the list of formal
- parameter DIEs for a function ends wherever the first
- non-formal-parameter DIE appears. Thus, we have to
- keep the formal parameter DIEs segregated. They must
- all appear (consecutively) at the start of the list of
- children for the DIE representing the function definition.
- Then (and only then) may we output any additional DIEs
- needed to represent the types of these formal parameters.
- */
-
- /*
- When generating DIEs, generate the unspecified_parameters
- DIE instead if we come across the arg "__builtin_va_alist"
- */
-
- for (parm = arg_decls; parm; parm = TREE_CHAIN (parm))
- if (TREE_CODE (parm) == PARM_DECL)
- {
- if (DECL_NAME(parm) &&
- !strcmp(IDENTIFIER_POINTER(DECL_NAME(parm)),
- "__builtin_va_alist") )
- output_die (output_unspecified_parameters_die, decl);
- else
- output_decl (parm, fake_containing_scope);
- }
-
- /*
- Now that we have finished generating all of the DIEs to
- represent the formal parameters themselves, force out
- any DIEs needed to represent their types. We do this
- simply by un-pending all previously pended types which
- can legitimately go into the chain of children DIEs for
- the current FUNCTION_DECL.
- */
-
- output_pending_types_for_scope (decl);
-
- /*
- Decide whether we need an unspecified_parameters DIE at the end.
- There are 2 more cases to do this for:
- 1) the ansi ... declaration - this is detectable when the end
- of the arg list is not a void_type_node
- 2) an unprototyped function declaration (not a definition). This
- just means that we have no info about the parameters at all.
- */
-
- {
- tree fn_arg_types = TYPE_ARG_TYPES (TREE_TYPE (decl));
-
- if (fn_arg_types)
- {
- /* this is the prototyped case, check for ... */
- if (TREE_VALUE (tree_last (fn_arg_types)) != void_type_node)
- output_die (output_unspecified_parameters_die, decl);
- }
- else
- {
- /* this is unprototyped, check for undefined (just declaration) */
- if (!DECL_INITIAL (decl))
- output_die (output_unspecified_parameters_die, decl);
- }
- }
-
- /* Output Dwarf info for all of the stuff within the body of the
- function (if it has one - it may be just a declaration). */
-
- {
- tree outer_scope = DECL_INITIAL (decl);
-
- if (outer_scope && TREE_CODE (outer_scope) != ERROR_MARK)
- {
- /* Note that here, `outer_scope' is a pointer to the outermost
- BLOCK node created to represent a function.
- This outermost BLOCK actually represents the outermost
- binding contour for the function, i.e. the contour in which
- the function's formal parameters and labels get declared.
-
- Curiously, it appears that the front end doesn't actually
- put the PARM_DECL nodes for the current function onto the
- BLOCK_VARS list for this outer scope. (They are strung
- off of the DECL_ARGUMENTS list for the function instead.)
- The BLOCK_VARS list for the `outer_scope' does provide us
- with a list of the LABEL_DECL nodes for the function however,
- and we output DWARF info for those here.
-
- Just within the `outer_scope' there will be a BLOCK node
- representing the function's outermost pair of curly braces,
- and any blocks used for the base and member initializers of
- a C++ constructor function. */
-
- output_decls_for_scope (outer_scope, 0);
-
- /* Finally, force out any pending types which are local to the
- outermost block of this function definition. These will
- all have a TYPE_CONTEXT which points to the FUNCTION_DECL
- node itself. */
-
- output_pending_types_for_scope (decl);
- }
- }
- }
-
- /* Generate a terminator for the list of stuff `owned' by this
- function. */
-
- end_sibling_chain ();
-
- break;
-
- case TYPE_DECL:
- /* If we are in terse mode, don't generate any DIEs to represent
- any actual typedefs. Note that even when we are in terse mode,
- we must still output DIEs to represent those tagged types which
- are used (directly or indirectly) in the specification of either
- a return type or a formal parameter type of some function. */
-
- if (debug_info_level <= DINFO_LEVEL_TERSE)
- if (! TYPE_DECL_IS_STUB (decl)
- || (! TYPE_USED_FOR_FUNCTION (TREE_TYPE (decl)) && ! in_class))
- return;
-
- /* In the special case of a TYPE_DECL node representing
- the declaration of some type tag, if the given TYPE_DECL is
- marked as having been instantiated from some other (original)
- TYPE_DECL node (e.g. one which was generated within the original
- definition of an inline function) we have to generate a special
- (abbreviated) TAG_structure_type, TAG_union_type, or
- TAG_enumeration-type DIE here. */
-
- if (TYPE_DECL_IS_STUB (decl) && DECL_ABSTRACT_ORIGIN (decl))
- {
- output_tagged_type_instantiation (TREE_TYPE (decl));
- return;
- }
-
- output_type (TREE_TYPE (decl), containing_scope);
-
- if (! is_redundant_typedef (decl))
- /* Output a DIE to represent the typedef itself. */
- output_die (output_typedef_die, decl);
- break;
-
- case LABEL_DECL:
- if (debug_info_level >= DINFO_LEVEL_NORMAL)
- output_die (output_label_die, decl);
- break;
-
- case VAR_DECL:
- /* If we are conforming to the DWARF version 1 specification, don't
- generated any DIEs to represent mere external object declarations. */
-
-#if (DWARF_VERSION <= 1)
- if (DECL_EXTERNAL (decl) && ! TREE_PUBLIC (decl))
- break;
-#endif
-
- /* If we are in terse mode, don't generate any DIEs to represent
- any variable declarations or definitions. */
-
- if (debug_info_level <= DINFO_LEVEL_TERSE)
- break;
-
- /* Output any DIEs that are needed to specify the type of this data
- object. */
-
- output_type (TREE_TYPE (decl), containing_scope);
-
- {
- /* And its containing type. */
- register tree origin = decl_class_context (decl);
- if (origin)
- output_type (origin, containing_scope);
- }
-
- /* If the following DIE will represent a data object definition for a
- data object with "extern" linkage, output a special "pubnames" DIE
- label just ahead of the actual DIE. A reference to this label
- was already generated in the .debug_pubnames section sub-entry
- for this data object definition. */
-
- if (TREE_PUBLIC (decl) && ! DECL_ABSTRACT (decl))
- {
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- sprintf (label, PUB_DIE_LABEL_FMT, next_pubname_number++);
- ASM_OUTPUT_LABEL (asm_out_file, label);
- }
-
- /* Now output the DIE to represent the data object itself. This gets
- complicated because of the possibility that the VAR_DECL really
- represents an inlined instance of a formal parameter for an inline
- function. */
-
- {
- void (*func) PARAMS ((void *));
- register tree origin = decl_ultimate_origin (decl);
-
- if (origin != NULL && TREE_CODE (origin) == PARM_DECL)
- func = output_formal_parameter_die;
- else
- {
- if (TREE_PUBLIC (decl) || DECL_EXTERNAL (decl))
- func = output_global_variable_die;
- else
- func = output_local_variable_die;
- }
- output_die (func, decl);
- }
- break;
-
- case FIELD_DECL:
- /* Ignore the nameless fields that are used to skip bits. */
- if (DECL_NAME (decl) != 0)
- {
- output_type (member_declared_type (decl), containing_scope);
- output_die (output_member_die, decl);
- }
- break;
-
- case PARM_DECL:
- /* Force out the type of this formal, if it was not forced out yet.
- Note that here we can run afoul of a bug in "classic" svr4 SDB.
- It should be able to grok the presence of type DIEs within a list
- of TAG_formal_parameter DIEs, but it doesn't. */
-
- output_type (TREE_TYPE (decl), containing_scope);
- output_die (output_formal_parameter_die, decl);
- break;
-
- case NAMESPACE_DECL:
- /* Ignore for now. */
- break;
-
- default:
- abort ();
- }
-}
-
-/* Output debug information for a function. */
-static void
-dwarfout_function_decl (decl)
- tree decl;
-{
- dwarfout_file_scope_decl (decl, 0);
-}
-
-/* Debug information for a global DECL. Called from toplev.c after
- compilation proper has finished. */
-static void
-dwarfout_global_decl (decl)
- tree decl;
-{
- /* Output DWARF information for file-scope tentative data object
- declarations, file-scope (extern) function declarations (which
- had no corresponding body) and file-scope tagged type
- declarations and definitions which have not yet been forced out. */
-
- if (TREE_CODE (decl) != FUNCTION_DECL || !DECL_INITIAL (decl))
- dwarfout_file_scope_decl (decl, 1);
-}
-
-/* DECL is an inline function, whose body is present, but which is not
- being output at this point. (We're putting that off until we need
- to do it.) */
-static void
-dwarfout_deferred_inline_function (decl)
- tree decl;
-{
- /* Generate the DWARF info for the "abstract" instance of a function
- which we may later generate inlined and/or out-of-line instances
- of. */
- if ((DECL_INLINE (decl) || DECL_ABSTRACT (decl))
- && ! DECL_ABSTRACT_ORIGIN (decl))
- {
- /* The front-end may not have set CURRENT_FUNCTION_DECL, but the
- DWARF code expects it to be set in this case. Intuitively,
- DECL is the function we just finished defining, so setting
- CURRENT_FUNCTION_DECL is sensible. */
- tree saved_cfd = current_function_decl;
- int was_abstract = DECL_ABSTRACT (decl);
- current_function_decl = decl;
-
- /* Let the DWARF code do its work. */
- set_decl_abstract_flags (decl, 1);
- dwarfout_file_scope_decl (decl, 0);
- if (! was_abstract)
- set_decl_abstract_flags (decl, 0);
-
- /* Reset CURRENT_FUNCTION_DECL. */
- current_function_decl = saved_cfd;
- }
-}
-
-static void
-dwarfout_file_scope_decl (decl, set_finalizing)
- tree decl;
- int set_finalizing;
-{
- if (TREE_CODE (decl) == ERROR_MARK)
- return;
-
- /* If this ..._DECL node is marked to be ignored, then ignore it. */
-
- if (DECL_IGNORED_P (decl))
- return;
-
- switch (TREE_CODE (decl))
- {
- case FUNCTION_DECL:
-
- /* Ignore this FUNCTION_DECL if it refers to a builtin declaration of
- a builtin function. Explicit programmer-supplied declarations of
- these same functions should NOT be ignored however. */
-
- if (DECL_EXTERNAL (decl) && DECL_FUNCTION_CODE (decl))
- return;
-
- /* What we would really like to do here is to filter out all mere
- file-scope declarations of file-scope functions which are never
- referenced later within this translation unit (and keep all of
- ones that *are* referenced later on) but we aren't clairvoyant,
- so we have no idea which functions will be referenced in the
- future (i.e. later on within the current translation unit).
- So here we just ignore all file-scope function declarations
- which are not also definitions. If and when the debugger needs
- to know something about these functions, it will have to hunt
- around and find the DWARF information associated with the
- *definition* of the function.
-
- Note that we can't just check `DECL_EXTERNAL' to find out which
- FUNCTION_DECL nodes represent definitions and which ones represent
- mere declarations. We have to check `DECL_INITIAL' instead. That's
- because the C front-end supports some weird semantics for "extern
- inline" function definitions. These can get inlined within the
- current translation unit (an thus, we need to generate DWARF info
- for their abstract instances so that the DWARF info for the
- concrete inlined instances can have something to refer to) but
- the compiler never generates any out-of-lines instances of such
- things (despite the fact that they *are* definitions). The
- important point is that the C front-end marks these "extern inline"
- functions as DECL_EXTERNAL, but we need to generate DWARF for them
- anyway.
-
- Note that the C++ front-end also plays some similar games for inline
- function definitions appearing within include files which also
- contain `#pragma interface' pragmas. */
-
- if (DECL_INITIAL (decl) == NULL_TREE)
- return;
-
- if (TREE_PUBLIC (decl)
- && ! DECL_EXTERNAL (decl)
- && ! DECL_ABSTRACT (decl))
- {
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- /* Output a .debug_pubnames entry for a public function
- defined in this compilation unit. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_PUBNAMES_SECTION);
- sprintf (label, PUB_DIE_LABEL_FMT, next_pubname_number);
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, label);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file,
- IDENTIFIER_POINTER (DECL_NAME (decl)));
- ASM_OUTPUT_POP_SECTION (asm_out_file);
- }
-
- break;
-
- case VAR_DECL:
-
- /* Ignore this VAR_DECL if it refers to a file-scope extern data
- object declaration and if the declaration was never even
- referenced from within this entire compilation unit. We
- suppress these DIEs in order to save space in the .debug section
- (by eliminating entries which are probably useless). Note that
- we must not suppress block-local extern declarations (whether
- used or not) because that would screw-up the debugger's name
- lookup mechanism and cause it to miss things which really ought
- to be in scope at a given point. */
-
- if (DECL_EXTERNAL (decl) && !TREE_USED (decl))
- return;
-
- if (TREE_PUBLIC (decl)
- && ! DECL_EXTERNAL (decl)
- && GET_CODE (DECL_RTL (decl)) == MEM
- && ! DECL_ABSTRACT (decl))
- {
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- if (debug_info_level >= DINFO_LEVEL_NORMAL)
- {
- /* Output a .debug_pubnames entry for a public variable
- defined in this compilation unit. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_PUBNAMES_SECTION);
- sprintf (label, PUB_DIE_LABEL_FMT, next_pubname_number);
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, label);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file,
- IDENTIFIER_POINTER (DECL_NAME (decl)));
- ASM_OUTPUT_POP_SECTION (asm_out_file);
- }
-
- if (DECL_INITIAL (decl) == NULL)
- {
- /* Output a .debug_aranges entry for a public variable
- which is tentatively defined in this compilation unit. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_ARANGES_SECTION);
- ASM_OUTPUT_DWARF_ADDR (asm_out_file,
- IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)));
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file,
- (unsigned) int_size_in_bytes (TREE_TYPE (decl)));
- ASM_OUTPUT_POP_SECTION (asm_out_file);
- }
- }
-
- /* If we are in terse mode, don't generate any DIEs to represent
- any variable declarations or definitions. */
-
- if (debug_info_level <= DINFO_LEVEL_TERSE)
- return;
-
- break;
-
- case TYPE_DECL:
- /* Don't bother trying to generate any DIEs to represent any of the
- normal built-in types for the language we are compiling, except
- in cases where the types in question are *not* DWARF fundamental
- types. We make an exception in the case of non-fundamental types
- for the sake of objective C (and perhaps C++) because the GNU
- front-ends for these languages may in fact create certain "built-in"
- types which are (for example) RECORD_TYPEs. In such cases, we
- really need to output these (non-fundamental) types because other
- DIEs may contain references to them. */
-
- /* Also ignore language dependent types here, because they are probably
- also built-in types. If we didn't ignore them, then we would get
- references to undefined labels because output_type doesn't support
- them. So, for now, we need to ignore them to avoid assembler
- errors. */
-
- /* ??? This code is different than the equivalent code in dwarf2out.c.
- The dwarf2out.c code is probably more correct. */
-
- if (DECL_SOURCE_LINE (decl) == 0
- && (type_is_fundamental (TREE_TYPE (decl))
- || TREE_CODE (TREE_TYPE (decl)) == LANG_TYPE))
- return;
-
- /* If we are in terse mode, don't generate any DIEs to represent
- any actual typedefs. Note that even when we are in terse mode,
- we must still output DIEs to represent those tagged types which
- are used (directly or indirectly) in the specification of either
- a return type or a formal parameter type of some function. */
-
- if (debug_info_level <= DINFO_LEVEL_TERSE)
- if (! TYPE_DECL_IS_STUB (decl)
- || ! TYPE_USED_FOR_FUNCTION (TREE_TYPE (decl)))
- return;
-
- break;
-
- default:
- return;
- }
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_SECTION);
- finalizing = set_finalizing;
- output_decl (decl, NULL_TREE);
-
- /* NOTE: The call above to `output_decl' may have caused one or more
- file-scope named types (i.e. tagged types) to be placed onto the
- pending_types_list. We have to get those types off of that list
- at some point, and this is the perfect time to do it. If we didn't
- take them off now, they might still be on the list when cc1 finally
- exits. That might be OK if it weren't for the fact that when we put
- types onto the pending_types_list, we set the TREE_ASM_WRITTEN flag
- for these types, and that causes them never to be output unless
- `output_pending_types_for_scope' takes them off of the list and un-sets
- their TREE_ASM_WRITTEN flags. */
-
- output_pending_types_for_scope (NULL_TREE);
-
- /* The above call should have totally emptied the pending_types_list
- if this is not a nested function or class. If this is a nested type,
- then the remaining pending_types will be emitted when the containing type
- is handled. */
-
- if (! DECL_CONTEXT (decl))
- {
- if (pending_types != 0)
- abort ();
- }
-
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-}
-
-/* Output a marker (i.e. a label) for the beginning of the generated code
- for a lexical block. */
-
-static void
-dwarfout_begin_block (line, blocknum)
- unsigned int line ATTRIBUTE_UNUSED;
- unsigned int blocknum;
-{
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- function_section (current_function_decl);
- sprintf (label, BLOCK_BEGIN_LABEL_FMT, blocknum);
- ASM_OUTPUT_LABEL (asm_out_file, label);
-}
-
-/* Output a marker (i.e. a label) for the end of the generated code
- for a lexical block. */
-
-static void
-dwarfout_end_block (line, blocknum)
- unsigned int line ATTRIBUTE_UNUSED;
- unsigned int blocknum;
-{
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- function_section (current_function_decl);
- sprintf (label, BLOCK_END_LABEL_FMT, blocknum);
- ASM_OUTPUT_LABEL (asm_out_file, label);
-}
-
-/* Output a marker (i.e. a label) for the point in the generated code where
- the real body of the function begins (after parameters have been moved
- to their home locations). */
-
-static void
-dwarfout_end_prologue (line, file)
- unsigned int line ATTRIBUTE_UNUSED;
- const char *file ATTRIBUTE_UNUSED;
-{
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- if (! use_gnu_debug_info_extensions)
- return;
-
- function_section (current_function_decl);
- sprintf (label, BODY_BEGIN_LABEL_FMT, current_function_funcdef_no);
- ASM_OUTPUT_LABEL (asm_out_file, label);
-}
-
-/* Output a marker (i.e. a label) for the point in the generated code where
- the real body of the function ends (just before the epilogue code). */
-
-static void
-dwarfout_end_function (line)
- unsigned int line ATTRIBUTE_UNUSED;
-{
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- if (! use_gnu_debug_info_extensions)
- return;
- function_section (current_function_decl);
- sprintf (label, BODY_END_LABEL_FMT, current_function_funcdef_no);
- ASM_OUTPUT_LABEL (asm_out_file, label);
-}
-
-/* Output a marker (i.e. a label) for the absolute end of the generated code
- for a function definition. This gets called *after* the epilogue code
- has been generated. */
-
-static void
-dwarfout_end_epilogue (line, file)
- unsigned int line ATTRIBUTE_UNUSED;
- const char *file ATTRIBUTE_UNUSED;
-{
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- /* Output a label to mark the endpoint of the code generated for this
- function. */
-
- sprintf (label, FUNC_END_LABEL_FMT, current_function_funcdef_no);
- ASM_OUTPUT_LABEL (asm_out_file, label);
-}
-
-static void
-shuffle_filename_entry (new_zeroth)
- filename_entry *new_zeroth;
-{
- filename_entry temp_entry;
- filename_entry *limit_p;
- filename_entry *move_p;
-
- if (new_zeroth == &filename_table[0])
- return;
-
- temp_entry = *new_zeroth;
-
- /* Shift entries up in the table to make room at [0]. */
-
- limit_p = &filename_table[0];
- for (move_p = new_zeroth; move_p > limit_p; move_p--)
- *move_p = *(move_p-1);
-
- /* Install the found entry at [0]. */
-
- filename_table[0] = temp_entry;
-}
-
-/* Create a new (string) entry for the .debug_sfnames section. */
-
-static void
-generate_new_sfname_entry ()
-{
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_SFNAMES_SECTION);
- sprintf (label, SFNAMES_ENTRY_LABEL_FMT, filename_table[0].number);
- ASM_OUTPUT_LABEL (asm_out_file, label);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file,
- filename_table[0].name
- ? filename_table[0].name
- : "");
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-}
-
-/* Lookup a filename (in the list of filenames that we know about here in
- dwarfout.c) and return its "index". The index of each (known) filename
- is just a unique number which is associated with only that one filename.
- We need such numbers for the sake of generating labels (in the
- .debug_sfnames section) and references to those unique labels (in the
- .debug_srcinfo and .debug_macinfo sections).
-
- If the filename given as an argument is not found in our current list,
- add it to the list and assign it the next available unique index number.
-
- Whatever we do (i.e. whether we find a pre-existing filename or add a new
- one), we shuffle the filename found (or added) up to the zeroth entry of
- our list of filenames (which is always searched linearly). We do this so
- as to optimize the most common case for these filename lookups within
- dwarfout.c. The most common case by far is the case where we call
- lookup_filename to lookup the very same filename that we did a lookup
- on the last time we called lookup_filename. We make sure that this
- common case is fast because such cases will constitute 99.9% of the
- lookups we ever do (in practice).
-
- If we add a new filename entry to our table, we go ahead and generate
- the corresponding entry in the .debug_sfnames section right away.
- Doing so allows us to avoid tickling an assembler bug (present in some
- m68k assemblers) which yields assembly-time errors in cases where the
- difference of two label addresses is taken and where the two labels
- are in a section *other* than the one where the difference is being
- calculated, and where at least one of the two symbol references is a
- forward reference. (This bug could be tickled by our .debug_srcinfo
- entries if we don't output their corresponding .debug_sfnames entries
- before them.) */
-
-static unsigned
-lookup_filename (file_name)
- const char *file_name;
-{
- filename_entry *search_p;
- filename_entry *limit_p = &filename_table[ft_entries];
-
- for (search_p = filename_table; search_p < limit_p; search_p++)
- if (!strcmp (file_name, search_p->name))
- {
- /* When we get here, we have found the filename that we were
- looking for in the filename_table. Now we want to make sure
- that it gets moved to the zero'th entry in the table (if it
- is not already there) so that subsequent attempts to find the
- same filename will find it as quickly as possible. */
-
- shuffle_filename_entry (search_p);
- return filename_table[0].number;
- }
-
- /* We come here whenever we have a new filename which is not registered
- in the current table. Here we add it to the table. */
-
- /* Prepare to add a new table entry by making sure there is enough space
- in the table to do so. If not, expand the current table. */
-
- if (ft_entries == ft_entries_allocated)
- {
- ft_entries_allocated += FT_ENTRIES_INCREMENT;
- filename_table
- = (filename_entry *)
- xrealloc (filename_table,
- ft_entries_allocated * sizeof (filename_entry));
- }
-
- /* Initially, add the new entry at the end of the filename table. */
-
- filename_table[ft_entries].number = ft_entries;
- filename_table[ft_entries].name = xstrdup (file_name);
-
- /* Shuffle the new entry into filename_table[0]. */
-
- shuffle_filename_entry (&filename_table[ft_entries]);
-
- if (debug_info_level >= DINFO_LEVEL_NORMAL)
- generate_new_sfname_entry ();
-
- ft_entries++;
- return filename_table[0].number;
-}
-
-static void
-generate_srcinfo_entry (line_entry_num, files_entry_num)
- unsigned line_entry_num;
- unsigned files_entry_num;
-{
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_SRCINFO_SECTION);
- sprintf (label, LINE_ENTRY_LABEL_FMT, line_entry_num);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file, label, LINE_BEGIN_LABEL);
- sprintf (label, SFNAMES_ENTRY_LABEL_FMT, files_entry_num);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file, label, SFNAMES_BEGIN_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-}
-
-static void
-dwarfout_source_line (line, filename)
- unsigned int line;
- const char *filename;
-{
- if (debug_info_level >= DINFO_LEVEL_NORMAL
- /* We can't emit line number info for functions in separate sections,
- because the assembler can't subtract labels in different sections. */
- && DECL_SECTION_NAME (current_function_decl) == NULL_TREE)
- {
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
- static unsigned last_line_entry_num = 0;
- static unsigned prev_file_entry_num = (unsigned) -1;
- unsigned this_file_entry_num;
-
- function_section (current_function_decl);
- sprintf (label, LINE_CODE_LABEL_FMT, ++last_line_entry_num);
- ASM_OUTPUT_LABEL (asm_out_file, label);
-
- fputc ('\n', asm_out_file);
-
- if (use_gnu_debug_info_extensions)
- this_file_entry_num = lookup_filename (filename);
- else
- this_file_entry_num = (unsigned) -1;
-
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, LINE_SECTION);
- if (this_file_entry_num != prev_file_entry_num)
- {
- char line_entry_label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- sprintf (line_entry_label, LINE_ENTRY_LABEL_FMT, last_line_entry_num);
- ASM_OUTPUT_LABEL (asm_out_file, line_entry_label);
- }
-
- {
- const char *tail = strrchr (filename, '/');
-
- if (tail != NULL)
- filename = tail;
- }
-
- dw2_asm_output_data (4, line, "%s:%u", filename, line);
- ASM_OUTPUT_DWARF_DATA2 (asm_out_file, 0xffff);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file, label, TEXT_BEGIN_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
- if (this_file_entry_num != prev_file_entry_num)
- generate_srcinfo_entry (last_line_entry_num, this_file_entry_num);
- prev_file_entry_num = this_file_entry_num;
- }
-}
-
-/* Generate an entry in the .debug_macinfo section. */
-
-static void
-generate_macinfo_entry (type, offset, string)
- unsigned int type;
- rtx offset;
- const char *string;
-{
- if (! use_gnu_debug_info_extensions)
- return;
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_MACINFO_SECTION);
- assemble_integer (gen_rtx_PLUS (SImode, GEN_INT (type << 24), offset),
- 4, BITS_PER_UNIT, 1);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, string);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-}
-
-/* Wrapper for toplev.c callback to check debug info level. */
-static void
-dwarfout_start_source_file_check (line, filename)
- unsigned int line;
- const char *filename;
-{
- if (debug_info_level == DINFO_LEVEL_VERBOSE)
- dwarfout_start_source_file (line, filename);
-}
-
-static void
-dwarfout_start_source_file (line, filename)
- unsigned int line ATTRIBUTE_UNUSED;
- const char *filename;
-{
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
- const char *label1, *label2;
-
- sprintf (label, SFNAMES_ENTRY_LABEL_FMT, lookup_filename (filename));
- label1 = (*label == '*') + label;
- label2 = (*SFNAMES_BEGIN_LABEL == '*') + SFNAMES_BEGIN_LABEL;
- generate_macinfo_entry (MACINFO_start,
- gen_rtx_MINUS (Pmode,
- gen_rtx_SYMBOL_REF (Pmode, label1),
- gen_rtx_SYMBOL_REF (Pmode, label2)),
- "");
-}
-
-/* Wrapper for toplev.c callback to check debug info level. */
-static void
-dwarfout_end_source_file_check (lineno)
- unsigned lineno;
-{
- if (debug_info_level == DINFO_LEVEL_VERBOSE)
- dwarfout_end_source_file (lineno);
-}
-
-static void
-dwarfout_end_source_file (lineno)
- unsigned lineno;
-{
- generate_macinfo_entry (MACINFO_resume, GEN_INT (lineno), "");
-}
-
-/* Called from check_newline in c-parse.y. The `buffer' parameter
- contains the tail part of the directive line, i.e. the part which
- is past the initial whitespace, #, whitespace, directive-name,
- whitespace part. */
-
-static void
-dwarfout_define (lineno, buffer)
- unsigned lineno;
- const char *buffer;
-{
- static int initialized = 0;
-
- if (!initialized)
- {
- dwarfout_start_source_file (0, primary_filename);
- initialized = 1;
- }
- generate_macinfo_entry (MACINFO_define, GEN_INT (lineno), buffer);
-}
-
-/* Called from check_newline in c-parse.y. The `buffer' parameter
- contains the tail part of the directive line, i.e. the part which
- is past the initial whitespace, #, whitespace, directive-name,
- whitespace part. */
-
-static void
-dwarfout_undef (lineno, buffer)
- unsigned lineno;
- const char *buffer;
-{
- generate_macinfo_entry (MACINFO_undef, GEN_INT (lineno), buffer);
-}
-
-/* Set up for Dwarf output at the start of compilation. */
-
-static void
-dwarfout_init (main_input_filename)
- const char *main_input_filename;
-{
- warning ("support for the DWARF1 debugging format is deprecated");
-
- /* Remember the name of the primary input file. */
-
- primary_filename = main_input_filename;
-
- /* Allocate the initial hunk of the pending_sibling_stack. */
-
- pending_sibling_stack
- = (unsigned *)
- xmalloc (PENDING_SIBLINGS_INCREMENT * sizeof (unsigned));
- pending_siblings_allocated = PENDING_SIBLINGS_INCREMENT;
- pending_siblings = 1;
-
- /* Allocate the initial hunk of the filename_table. */
-
- filename_table
- = (filename_entry *)
- xmalloc (FT_ENTRIES_INCREMENT * sizeof (filename_entry));
- ft_entries_allocated = FT_ENTRIES_INCREMENT;
- ft_entries = 0;
-
- /* Allocate the initial hunk of the pending_types_list. */
-
- pending_types_list
- = (tree *) xmalloc (PENDING_TYPES_INCREMENT * sizeof (tree));
- pending_types_allocated = PENDING_TYPES_INCREMENT;
- pending_types = 0;
-
- /* Create an artificial RECORD_TYPE node which we can use in our hack
- to get the DIEs representing types of formal parameters to come out
- only *after* the DIEs for the formal parameters themselves. */
-
- fake_containing_scope = make_node (RECORD_TYPE);
-
- /* Output a starting label for the .text section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, TEXT_SECTION_NAME);
- ASM_OUTPUT_LABEL (asm_out_file, TEXT_BEGIN_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
- /* Output a starting label for the .data section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DATA_SECTION_NAME);
- ASM_OUTPUT_LABEL (asm_out_file, DATA_BEGIN_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
-#if 0 /* GNU C doesn't currently use .data1. */
- /* Output a starting label for the .data1 section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DATA1_SECTION_NAME);
- ASM_OUTPUT_LABEL (asm_out_file, DATA1_BEGIN_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-#endif
-
- /* Output a starting label for the .rodata section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, RODATA_SECTION_NAME);
- ASM_OUTPUT_LABEL (asm_out_file, RODATA_BEGIN_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
-#if 0 /* GNU C doesn't currently use .rodata1. */
- /* Output a starting label for the .rodata1 section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, RODATA1_SECTION_NAME);
- ASM_OUTPUT_LABEL (asm_out_file, RODATA1_BEGIN_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-#endif
-
- /* Output a starting label for the .bss section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, BSS_SECTION_NAME);
- ASM_OUTPUT_LABEL (asm_out_file, BSS_BEGIN_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
- if (debug_info_level >= DINFO_LEVEL_NORMAL)
- {
- if (use_gnu_debug_info_extensions)
- {
- /* Output a starting label and an initial (compilation directory)
- entry for the .debug_sfnames section. The starting label will be
- referenced by the initial entry in the .debug_srcinfo section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_SFNAMES_SECTION);
- ASM_OUTPUT_LABEL (asm_out_file, SFNAMES_BEGIN_LABEL);
- {
- const char *pwd = getpwd ();
- char *dirname;
-
- if (!pwd)
- fatal_io_error ("can't get current directory");
-
- dirname = concat (pwd, "/", NULL);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, dirname);
- free (dirname);
- }
- ASM_OUTPUT_POP_SECTION (asm_out_file);
- }
-
- if (debug_info_level >= DINFO_LEVEL_VERBOSE
- && use_gnu_debug_info_extensions)
- {
- /* Output a starting label for the .debug_macinfo section. This
- label will be referenced by the AT_mac_info attribute in the
- TAG_compile_unit DIE. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_MACINFO_SECTION);
- ASM_OUTPUT_LABEL (asm_out_file, MACINFO_BEGIN_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
- }
-
- /* Generate the initial entry for the .line section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, LINE_SECTION);
- ASM_OUTPUT_LABEL (asm_out_file, LINE_BEGIN_LABEL);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file, LINE_END_LABEL, LINE_BEGIN_LABEL);
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, TEXT_BEGIN_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
- if (use_gnu_debug_info_extensions)
- {
- /* Generate the initial entry for the .debug_srcinfo section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_SRCINFO_SECTION);
- ASM_OUTPUT_LABEL (asm_out_file, SRCINFO_BEGIN_LABEL);
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, LINE_BEGIN_LABEL);
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, SFNAMES_BEGIN_LABEL);
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, TEXT_BEGIN_LABEL);
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, TEXT_END_LABEL);
-#ifdef DWARF_TIMESTAMPS
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, time (NULL));
-#else
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, -1);
-#endif
- ASM_OUTPUT_POP_SECTION (asm_out_file);
- }
-
- /* Generate the initial entry for the .debug_pubnames section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_PUBNAMES_SECTION);
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, DEBUG_BEGIN_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
- /* Generate the initial entry for the .debug_aranges section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_ARANGES_SECTION);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file,
- DEBUG_ARANGES_END_LABEL,
- DEBUG_ARANGES_BEGIN_LABEL);
- ASM_OUTPUT_LABEL (asm_out_file, DEBUG_ARANGES_BEGIN_LABEL);
- ASM_OUTPUT_DWARF_DATA1 (asm_out_file, 1);
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, DEBUG_BEGIN_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
- }
-
- /* Setup first DIE number == 1. */
- NEXT_DIE_NUM = next_unused_dienum++;
-
- /* Generate the initial DIE for the .debug section. Note that the
- (string) value given in the AT_name attribute of the TAG_compile_unit
- DIE will (typically) be a relative pathname and that this pathname
- should be taken as being relative to the directory from which the
- compiler was invoked when the given (base) source file was compiled. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_SECTION);
- ASM_OUTPUT_LABEL (asm_out_file, DEBUG_BEGIN_LABEL);
- output_die (output_compile_unit_die, (PTR) main_input_filename);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
- fputc ('\n', asm_out_file);
-}
-
-/* Output stuff that dwarf requires at the end of every file. */
-
-static void
-dwarfout_finish (main_input_filename)
- const char *main_input_filename ATTRIBUTE_UNUSED;
-{
- char label[MAX_ARTIFICIAL_LABEL_BYTES];
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_SECTION);
- retry_incomplete_types ();
- fputc ('\n', asm_out_file);
-
- /* Mark the end of the chain of siblings which represent all file-scope
- declarations in this compilation unit. */
-
- /* The (null) DIE which represents the terminator for the (sibling linked)
- list of file-scope items is *special*. Normally, we would just call
- end_sibling_chain at this point in order to output a word with the
- value `4' and that word would act as the terminator for the list of
- DIEs describing file-scope items. Unfortunately, if we were to simply
- do that, the label that would follow this DIE in the .debug section
- (i.e. `..D2') would *not* be properly aligned (as it must be on some
- machines) to a 4 byte boundary.
-
- In order to force the label `..D2' to get aligned to a 4 byte boundary,
- the trick used is to insert extra (otherwise useless) padding bytes
- into the (null) DIE that we know must precede the ..D2 label in the
- .debug section. The amount of padding required can be anywhere between
- 0 and 3 bytes. The length word at the start of this DIE (i.e. the one
- with the padding) would normally contain the value 4, but now it will
- also have to include the padding bytes, so it will instead have some
- value in the range 4..7.
-
- Fortunately, the rules of Dwarf say that any DIE whose length word
- contains *any* value less than 8 should be treated as a null DIE, so
- this trick works out nicely. Clever, eh? Don't give me any credit
- (or blame). I didn't think of this scheme. I just conformed to it.
- */
-
- output_die (output_padded_null_die, (void *) 0);
- dienum_pop ();
-
- sprintf (label, DIE_BEGIN_LABEL_FMT, NEXT_DIE_NUM);
- ASM_OUTPUT_LABEL (asm_out_file, label); /* should be ..D2 */
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
- /* Output a terminator label for the .text section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, TEXT_SECTION_NAME);
- ASM_OUTPUT_LABEL (asm_out_file, TEXT_END_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
- /* Output a terminator label for the .data section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DATA_SECTION_NAME);
- ASM_OUTPUT_LABEL (asm_out_file, DATA_END_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
-#if 0 /* GNU C doesn't currently use .data1. */
- /* Output a terminator label for the .data1 section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DATA1_SECTION_NAME);
- ASM_OUTPUT_LABEL (asm_out_file, DATA1_END_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-#endif
-
- /* Output a terminator label for the .rodata section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, RODATA_SECTION_NAME);
- ASM_OUTPUT_LABEL (asm_out_file, RODATA_END_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
-#if 0 /* GNU C doesn't currently use .rodata1. */
- /* Output a terminator label for the .rodata1 section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, RODATA1_SECTION_NAME);
- ASM_OUTPUT_LABEL (asm_out_file, RODATA1_END_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-#endif
-
- /* Output a terminator label for the .bss section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, BSS_SECTION_NAME);
- ASM_OUTPUT_LABEL (asm_out_file, BSS_END_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
- if (debug_info_level >= DINFO_LEVEL_NORMAL)
- {
- /* Output a terminating entry for the .line section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, LINE_SECTION);
- ASM_OUTPUT_LABEL (asm_out_file, LINE_LAST_ENTRY_LABEL);
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, 0);
- ASM_OUTPUT_DWARF_DATA2 (asm_out_file, 0xffff);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file, TEXT_END_LABEL, TEXT_BEGIN_LABEL);
- ASM_OUTPUT_LABEL (asm_out_file, LINE_END_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
- if (use_gnu_debug_info_extensions)
- {
- /* Output a terminating entry for the .debug_srcinfo section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_SRCINFO_SECTION);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file,
- LINE_LAST_ENTRY_LABEL, LINE_BEGIN_LABEL);
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, -1);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
- }
-
- if (debug_info_level >= DINFO_LEVEL_VERBOSE)
- {
- /* Output terminating entries for the .debug_macinfo section. */
-
- dwarfout_end_source_file (0);
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_MACINFO_SECTION);
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, 0);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, "");
- ASM_OUTPUT_POP_SECTION (asm_out_file);
- }
-
- /* Generate the terminating entry for the .debug_pubnames section. */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_PUBNAMES_SECTION);
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, 0);
- ASM_OUTPUT_DWARF_STRING_NEWLINE (asm_out_file, "");
- ASM_OUTPUT_POP_SECTION (asm_out_file);
-
- /* Generate the terminating entries for the .debug_aranges section.
-
- Note that we want to do this only *after* we have output the end
- labels (for the various program sections) which we are going to
- refer to here. This allows us to work around a bug in the m68k
- svr4 assembler. That assembler gives bogus assembly-time errors
- if (within any given section) you try to take the difference of
- two relocatable symbols, both of which are located within some
- other section, and if one (or both?) of the symbols involved is
- being forward-referenced. By generating the .debug_aranges
- entries at this late point in the assembly output, we skirt the
- issue simply by avoiding forward-references.
- */
-
- fputc ('\n', asm_out_file);
- ASM_OUTPUT_PUSH_SECTION (asm_out_file, DEBUG_ARANGES_SECTION);
-
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, TEXT_BEGIN_LABEL);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file, TEXT_END_LABEL, TEXT_BEGIN_LABEL);
-
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, DATA_BEGIN_LABEL);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file, DATA_END_LABEL, DATA_BEGIN_LABEL);
-
-#if 0 /* GNU C doesn't currently use .data1. */
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, DATA1_BEGIN_LABEL);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file, DATA1_END_LABEL,
- DATA1_BEGIN_LABEL);
-#endif
-
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, RODATA_BEGIN_LABEL);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file, RODATA_END_LABEL,
- RODATA_BEGIN_LABEL);
-
-#if 0 /* GNU C doesn't currently use .rodata1. */
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, RODATA1_BEGIN_LABEL);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file, RODATA1_END_LABEL,
- RODATA1_BEGIN_LABEL);
-#endif
-
- ASM_OUTPUT_DWARF_ADDR (asm_out_file, BSS_BEGIN_LABEL);
- ASM_OUTPUT_DWARF_DELTA4 (asm_out_file, BSS_END_LABEL, BSS_BEGIN_LABEL);
-
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, 0);
- ASM_OUTPUT_DWARF_DATA4 (asm_out_file, 0);
-
- ASM_OUTPUT_LABEL (asm_out_file, DEBUG_ARANGES_END_LABEL);
- ASM_OUTPUT_POP_SECTION (asm_out_file);
- }
-
- /* There should not be any pending types left at the end. We need
- this now because it may not have been checked on the last call to
- dwarfout_file_scope_decl. */
- if (pending_types != 0)
- abort ();
-}
-
-#endif /* DWARF_DEBUGGING_INFO */
diff --git a/contrib/gcc/f/README b/contrib/gcc/f/README
deleted file mode 100644
index fdebfdc..0000000
--- a/contrib/gcc/f/README
+++ /dev/null
@@ -1,7 +0,0 @@
-1995-02-15
-
-This directory is the f/ subdirectory, which is designed to
-be a subdirectory in a gcc development tree, i.e. named gcc/f/.
-
-Please see gcc/README.g77 for information on the contents of this
-directory.
diff --git a/contrib/gcc/f/lang-options.h b/contrib/gcc/f/lang-options.h
deleted file mode 100644
index b2821ed..0000000
--- a/contrib/gcc/f/lang-options.h
+++ /dev/null
@@ -1,239 +0,0 @@
-/* lang-options.h file for Fortran
- Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
- Contributed by James Craig Burley.
-
-This file is part of GNU Fortran.
-
-GNU Fortran 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, or (at your option)
-any later version.
-
-GNU Fortran 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 Fortran; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA.
-
-*/
-
-/* This is the contribution to the `documented_lang_options' array in
- toplev.c for g77. */
-
-#ifdef __STDC__ /* To be consistent with lang-specs.h. Maybe avoid
- overflowing some old compiler's tables, etc. */
-
-DEFINE_LANG_NAME ("Fortran")
-
- { "-fversion",
- N_("Print g77-specific compiler version info, run internal tests") },
-/*"-fident",*/
-/*"-fno-ident",*/
- { "-ff66",
- N_("Program is written in typical FORTRAN 66 dialect") },
- { "-fno-f66", "" },
- { "-ff77",
- N_("Program is written in typical Unix f77 dialect") },
- { "-fno-f77",
- N_("Program does not use Unix-f77 dialectal features") },
- { "-ff90",
- N_("Program is written in Fortran-90-ish dialect") },
- { "-fno-f90", "" },
- { "-fautomatic", "" },
- { "-fno-automatic",
- N_("Treat local vars and COMMON blocks as if they were named in SAVE statements") },
- { "-fdollar-ok",
- N_("Allow $ in symbol names") },
- { "-fno-dollar-ok", "" },
- { "-ff2c", "" },
- { "-fno-f2c",
- N_("f2c-compatible code need not be generated") },
- { "-ff2c-library", "" },
- { "-fno-f2c-library",
- N_("Unsupported; do not generate libf2c-calling code") },
- { "-fflatten-arrays",
- N_("Unsupported; affects code-generation of arrays") },
- { "-fno-flatten-arrays", "" },
- { "-ffree-form",
- N_("Program is written in Fortran-90-ish free form") },
- { "-fno-free-form", "" },
- { "-ffixed-form", "" },
- { "-fno-fixed-form", "" },
- { "-fpedantic",
- N_("Warn about use of (only a few for now) Fortran extensions") },
- { "-fno-pedantic", "" },
- { "-fvxt",
- N_("Program is written in VXT (Digital-like) FORTRAN") },
- { "-fno-vxt", "" },
- { "-fno-ugly",
- N_("Disallow all ugly features") },
- { "-fugly-args", "" },
- { "-fno-ugly-args",
- N_("Hollerith and typeless constants not passed as arguments") },
- { "-fugly-assign",
- N_("Allow ordinary copying of ASSIGN'ed vars") },
- { "-fno-ugly-assign", "" },
- { "-fugly-assumed",
- N_("Dummy array dimensioned to (1) is assumed-size") },
- { "-fno-ugly-assumed", "" },
- { "-fugly-comma",
- N_("Trailing comma in procedure call denotes null argument") },
- { "-fno-ugly-comma", "" },
- { "-fugly-complex",
- N_("Allow REAL(Z) and AIMAG(Z) given DOUBLE COMPLEX Z") },
- { "-fno-ugly-complex", "" },
- { "-fugly-init", "" },
- { "-fno-ugly-init",
- N_("Initialization via DATA and PARAMETER is type-compatible") },
- { "-fugly-logint",
- N_("Allow INTEGER and LOGICAL interchangeability") },
- { "-fno-ugly-logint", "" },
- { "-fxyzzy",
- N_("Print internal debugging-related info") },
- { "-fno-xyzzy", "" },
- { "-finit-local-zero",
- N_("Initialize local vars and arrays to zero") },
- { "-fno-init-local-zero", "" },
- { "-fbackslash", "" },
- { "-fno-backslash",
- N_("Backslashes in character/hollerith constants not special (C-style)") },
- { "-femulate-complex",
- N_("Have front end emulate COMPLEX arithmetic to avoid bugs") },
- { "-fno-emulate-complex", "" },
- { "-funderscoring", "" },
- { "-fno-underscoring",
- N_("Disable the appending of underscores to externals") },
- { "-fsecond-underscore", "" },
- { "-fno-second-underscore",
- N_("Never append a second underscore to externals") },
- { "-fintrin-case-initcap",
- N_("Intrinsics spelled as e.g. SqRt") },
- { "-fintrin-case-upper",
- N_("Intrinsics in uppercase") },
- { "-fintrin-case-lower", "" },
- { "-fintrin-case-any",
- N_("Intrinsics letters in arbitrary cases") },
- { "-fmatch-case-initcap",
- N_("Language keywords spelled as e.g. IOStat") },
- { "-fmatch-case-upper",
- N_("Language keywords in uppercase") },
- { "-fmatch-case-lower", "" },
- { "-fmatch-case-any",
- N_("Language keyword letters in arbitrary cases") },
- { "-fsource-case-upper",
- N_("Internally convert most source to uppercase") },
- { "-fsource-case-lower", "" },
- { "-fsource-case-preserve",
- N_("Internally preserve source case") },
- { "-fsymbol-case-initcap",
- N_("Symbol names spelled in mixed case") },
- { "-fsymbol-case-upper",
- N_("Symbol names in uppercase") },
- { "-fsymbol-case-lower",
- N_("Symbol names in lowercase") },
- { "-fsymbol-case-any", "" },
- { "-fcase-strict-upper",
- N_("Program written in uppercase") },
- { "-fcase-strict-lower",
- N_("Program written in lowercase") },
- { "-fcase-initcap",
- N_("Program written in strict mixed-case") },
- { "-fcase-upper",
- N_("Compile as if program written in uppercase") },
- { "-fcase-lower",
- N_("Compile as if program written in lowercase") },
- { "-fcase-preserve",
- N_("Preserve all spelling (case) used in program") },
- { "-fbadu77-intrinsics-delete",
- N_("Delete libU77 intrinsics with bad interfaces") },
- { "-fbadu77-intrinsics-disable",
- N_("Disable libU77 intrinsics with bad interfaces") },
- { "-fbadu77-intrinsics-enable", "" },
- { "-fbadu77-intrinsics-hide",
- N_("Hide libU77 intrinsics with bad interfaces") },
- { "-ff2c-intrinsics-delete",
- N_("Delete non-FORTRAN-77 intrinsics f2c supports") },
- { "-ff2c-intrinsics-disable",
- N_("Disable non-FORTRAN-77 intrinsics f2c supports") },
- { "-ff2c-intrinsics-enable", "" },
- { "-ff2c-intrinsics-hide",
- N_("Hide non-FORTRAN-77 intrinsics f2c supports") },
- { "-ff90-intrinsics-delete",
- N_("Delete non-FORTRAN-77 intrinsics F90 supports") },
- { "-ff90-intrinsics-disable",
- N_("Disable non-FORTRAN-77 intrinsics F90 supports") },
- { "-ff90-intrinsics-enable", "" },
- { "-ff90-intrinsics-hide",
- N_("Hide non-FORTRAN-77 intrinsics F90 supports") },
- { "-fgnu-intrinsics-delete",
- N_("Delete non-FORTRAN-77 intrinsics g77 supports") },
- { "-fgnu-intrinsics-disable",
- N_("Disable non-FORTRAN 77 intrinsics F90 supports") },
- { "-fgnu-intrinsics-enable", "" },
- { "-fgnu-intrinsics-hide",
- N_("Hide non-FORTRAN 77 intrinsics F90 supports") },
- { "-fmil-intrinsics-delete",
- N_("Delete MIL-STD 1753 intrinsics") },
- { "-fmil-intrinsics-disable",
- N_("Disable MIL-STD 1753 intrinsics") },
- { "-fmil-intrinsics-enable", "" },
- { "-fmil-intrinsics-hide",
- N_("Hide MIL-STD 1753 intrinsics") },
- { "-funix-intrinsics-delete",
- N_("Delete libU77 intrinsics") },
- { "-funix-intrinsics-disable",
- N_("Disable libU77 intrinsics") },
- { "-funix-intrinsics-enable", "" },
- { "-funix-intrinsics-hide",
- N_("Hide libU77 intrinsics") },
- { "-fvxt-intrinsics-delete",
- N_("Delete non-FORTRAN-77 intrinsics VXT FORTRAN supports") },
- { "-fvxt-intrinsics-disable",
- N_("Disable non-FORTRAN-77 intrinsics VXT FORTRAN supports") },
- { "-fvxt-intrinsics-enable", "" },
- { "-fvxt-intrinsics-hide",
- N_("Hide non-FORTRAN-77 intrinsics VXT FORTRAN supports") },
- { "-fzeros",
- N_("Treat initial values of 0 like non-zero values") },
- { "-fno-zeros", "" },
- { "-fdebug-kludge",
- N_("Emit special debugging information for COMMON and EQUIVALENCE (disabled)") },
- { "-fno-debug-kludge", "" },
- { "-fonetrip",
- N_("Take at least one trip through each iterative DO loop") },
- { "-fno-onetrip", "" },
- { "-fsilent", "" },
- { "-fno-silent",
- N_("Print names of program units as they are compiled") },
- { "-fglobals", "" },
- { "-fno-globals",
- N_("Disable fatal diagnostics about inter-procedural problems") },
- { "-ftypeless-boz",
- N_("Make prefix-radix non-decimal constants be typeless") },
- { "-fno-typeless-boz", "" },
- { "-fbounds-check",
- N_("Generate code to check subscript and substring bounds") },
- { "-fno-bounds-check", "" },
- { "-ffortran-bounds-check",
- N_("Fortran-specific form of -fbounds-check") },
- { "-fno-fortran-bounds-check", "" },
- { "-Wglobals", "" },
- { "-Wno-globals",
- N_("Disable warnings about inter-procedural problems") },
-/*"-Wimplicit",*/
-/*"-Wno-implicit",*/
- { "-Wsurprising",
- N_("Warn about constructs with surprising meanings") },
- { "-Wno-surprising", "" },
-/*"-Wall",*/
-/* Prefix options. */
- { "-I",
- N_("Add a directory for INCLUDE searching") },
- { "-ffixed-line-length-",
- N_("Set the maximum line length") },
-
-#endif
diff --git a/contrib/gcc/floatlib.c b/contrib/gcc/floatlib.c
deleted file mode 100644
index 929aef7..0000000
--- a/contrib/gcc/floatlib.c
+++ /dev/null
@@ -1,944 +0,0 @@
-/*
-** libgcc support for software floating point.
-** Copyright (C) 1991 by Pipeline Associates, Inc. All rights reserved.
-** Permission is granted to do *anything* you want with this file,
-** commercial or otherwise, provided this message remains intact. So there!
-** I would appreciate receiving any updates/patches/changes that anyone
-** makes, and am willing to be the repository for said changes (am I
-** making a big mistake?).
-
-Warning! Only single-precision is actually implemented. This file
-won't really be much use until double-precision is supported.
-
-However, once that is done, this file might make possible
-cross-compilation for an IEEE target machine from a non-IEEE
-host such as a VAX.
-
-If you'd like to work on completing this, please talk to rms@gnu.ai.mit.edu.
-
---> Double precision floating support added by James Carlson on 20 April 1998.
-
-**
-** Pat Wood
-** Pipeline Associates, Inc.
-** pipeline!phw@motown.com or
-** sun!pipeline!phw or
-** uunet!motown!pipeline!phw
-**
-** 05/01/91 -- V1.0 -- first release to gcc mailing lists
-** 05/04/91 -- V1.1 -- added float and double prototypes and return values
-** -- fixed problems with adding and subtracting zero
-** -- fixed rounding in truncdfsf2
-** -- fixed SWAP define and tested on 386
-*/
-
-/*
-** The following are routines that replace the libgcc soft floating point
-** routines that are called automatically when -msoft-float is selected.
-** The support single and double precision IEEE format, with provisions
-** for byte-swapped machines (tested on 386). Some of the double-precision
-** routines work at full precision, but most of the hard ones simply punt
-** and call the single precision routines, producing a loss of accuracy.
-** long long support is not assumed or included.
-** Overall accuracy is close to IEEE (actually 68882) for single-precision
-** arithmetic. I think there may still be a 1 in 1000 chance of a bit
-** being rounded the wrong way during a multiply. I'm not fussy enough to
-** bother with it, but if anyone is, knock yourself out.
-**
-** Efficiency has only been addressed where it was obvious that something
-** would make a big difference. Anyone who wants to do this right for
-** best speed should go in and rewrite in assembler.
-**
-** I have tested this only on a 68030 workstation and 386/ix integrated
-** in with -msoft-float.
-*/
-
-/* the following deal with IEEE single-precision numbers */
-#define EXCESS 126
-#define SIGNBIT 0x80000000
-#define HIDDEN (1 << 23)
-#define SIGN(fp) ((fp) & SIGNBIT)
-#define EXP(fp) (((fp) >> 23) & 0xFF)
-#define MANT(fp) (((fp) & 0x7FFFFF) | HIDDEN)
-#define PACK(s,e,m) ((s) | ((e) << 23) | (m))
-
-/* the following deal with IEEE double-precision numbers */
-#define EXCESSD 1022
-#define HIDDEND (1 << 20)
-#define EXPD(fp) (((fp.l.upper) >> 20) & 0x7FF)
-#define SIGND(fp) ((fp.l.upper) & SIGNBIT)
-#define MANTD(fp) (((((fp.l.upper) & 0xFFFFF) | HIDDEND) << 10) | \
- (fp.l.lower >> 22))
-#define HIDDEND_LL ((long long)1 << 52)
-#define MANTD_LL(fp) ((fp.ll & (HIDDEND_LL-1)) | HIDDEND_LL)
-#define PACKD_LL(s,e,m) (((long long)((s)+((e)<<20))<<32)|(m))
-
-/* define SWAP for 386/960 reverse-byte-order brain-damaged CPUs */
-union double_long {
- double d;
-#ifdef SWAP
- struct {
- unsigned long lower;
- long upper;
- } l;
-#else
- struct {
- long upper;
- unsigned long lower;
- } l;
-#endif
- long long ll;
-};
-
-union float_long
- {
- float f;
- long l;
- };
-
-/* add two floats */
-float
-__addsf3 (float a1, float a2)
-{
- long mant1, mant2;
- union float_long fl1, fl2;
- int exp1, exp2;
- int sign = 0;
-
- fl1.f = a1;
- fl2.f = a2;
-
- /* check for zero args */
- if (!fl1.l) {
- fl1.f = fl2.f;
- goto test_done;
- }
- if (!fl2.l)
- goto test_done;
-
- exp1 = EXP (fl1.l);
- exp2 = EXP (fl2.l);
-
- if (exp1 > exp2 + 25)
- goto test_done;
- if (exp2 > exp1 + 25) {
- fl1.f = fl2.f;
- goto test_done;
- }
-
- /* do everything in excess precision so's we can round later */
- mant1 = MANT (fl1.l) << 6;
- mant2 = MANT (fl2.l) << 6;
-
- if (SIGN (fl1.l))
- mant1 = -mant1;
- if (SIGN (fl2.l))
- mant2 = -mant2;
-
- if (exp1 > exp2)
- {
- mant2 >>= exp1 - exp2;
- }
- else
- {
- mant1 >>= exp2 - exp1;
- exp1 = exp2;
- }
- mant1 += mant2;
-
- if (mant1 < 0)
- {
- mant1 = -mant1;
- sign = SIGNBIT;
- }
- else if (!mant1) {
- fl1.f = 0;
- goto test_done;
- }
-
- /* normalize up */
- while (!(mant1 & 0xE0000000))
- {
- mant1 <<= 1;
- exp1--;
- }
-
- /* normalize down? */
- if (mant1 & (1 << 30))
- {
- mant1 >>= 1;
- exp1++;
- }
-
- /* round to even */
- mant1 += (mant1 & 0x40) ? 0x20 : 0x1F;
-
- /* normalize down? */
- if (mant1 & (1 << 30))
- {
- mant1 >>= 1;
- exp1++;
- }
-
- /* lose extra precision */
- mant1 >>= 6;
-
- /* turn off hidden bit */
- mant1 &= ~HIDDEN;
-
- /* pack up and go home */
- fl1.l = PACK (sign, exp1, mant1);
-test_done:
- return (fl1.f);
-}
-
-/* subtract two floats */
-float
-__subsf3 (float a1, float a2)
-{
- union float_long fl1, fl2;
-
- fl1.f = a1;
- fl2.f = a2;
-
- /* check for zero args */
- if (!fl2.l)
- return (fl1.f);
- if (!fl1.l)
- return (-fl2.f);
-
- /* twiddle sign bit and add */
- fl2.l ^= SIGNBIT;
- return __addsf3 (a1, fl2.f);
-}
-
-/* compare two floats */
-long
-__cmpsf2 (float a1, float a2)
-{
- union float_long fl1, fl2;
-
- fl1.f = a1;
- fl2.f = a2;
-
- if (SIGN (fl1.l) && SIGN (fl2.l))
- {
- fl1.l ^= SIGNBIT;
- fl2.l ^= SIGNBIT;
- }
- if (fl1.l < fl2.l)
- return (-1);
- if (fl1.l > fl2.l)
- return (1);
- return (0);
-}
-
-/* multiply two floats */
-float
-__mulsf3 (float a1, float a2)
-{
- union float_long fl1, fl2;
- unsigned long result;
- int exp;
- int sign;
-
- fl1.f = a1;
- fl2.f = a2;
-
- if (!fl1.l || !fl2.l) {
- fl1.f = 0;
- goto test_done;
- }
-
- /* compute sign and exponent */
- sign = SIGN (fl1.l) ^ SIGN (fl2.l);
- exp = EXP (fl1.l) - EXCESS;
- exp += EXP (fl2.l);
-
- fl1.l = MANT (fl1.l);
- fl2.l = MANT (fl2.l);
-
- /* the multiply is done as one 16x16 multiply and two 16x8 multiples */
- result = (fl1.l >> 8) * (fl2.l >> 8);
- result += ((fl1.l & 0xFF) * (fl2.l >> 8)) >> 8;
- result += ((fl2.l & 0xFF) * (fl1.l >> 8)) >> 8;
-
- result >>= 2;
- if (result & 0x20000000)
- {
- /* round */
- result += 0x20;
- result >>= 6;
- }
- else
- {
- /* round */
- result += 0x10;
- result >>= 5;
- exp--;
- }
- if (result & (HIDDEN<<1)) {
- result >>= 1;
- exp++;
- }
-
- result &= ~HIDDEN;
-
- /* pack up and go home */
- fl1.l = PACK (sign, exp, result);
-test_done:
- return (fl1.f);
-}
-
-/* divide two floats */
-float
-__divsf3 (float a1, float a2)
-{
- union float_long fl1, fl2;
- int result;
- int mask;
- int exp, sign;
-
- fl1.f = a1;
- fl2.f = a2;
-
- /* subtract exponents */
- exp = EXP (fl1.l) - EXP (fl2.l) + EXCESS;
-
- /* compute sign */
- sign = SIGN (fl1.l) ^ SIGN (fl2.l);
-
- /* divide by zero??? */
- if (!fl2.l)
- /* return NaN or -NaN */
- return (sign ? 0xFFFFFFFF : 0x7FFFFFFF);
-
- /* numerator zero??? */
- if (!fl1.l)
- return (0);
-
- /* now get mantissas */
- fl1.l = MANT (fl1.l);
- fl2.l = MANT (fl2.l);
-
- /* this assures we have 25 bits of precision in the end */
- if (fl1.l < fl2.l)
- {
- fl1.l <<= 1;
- exp--;
- }
-
- /* now we perform repeated subtraction of fl2.l from fl1.l */
- mask = 0x1000000;
- result = 0;
- while (mask)
- {
- if (fl1.l >= fl2.l)
- {
- result |= mask;
- fl1.l -= fl2.l;
- }
- fl1.l <<= 1;
- mask >>= 1;
- }
-
- /* round */
- result += 1;
-
- /* normalize down */
- exp++;
- result >>= 1;
-
- result &= ~HIDDEN;
-
- /* pack up and go home */
- fl1.l = PACK (sign, exp, result);
- return (fl1.f);
-}
-
-/* convert int to double */
-double
-__floatsidf (long a1)
-{
- int sign = 0, exp = 31 + EXCESSD;
- union double_long dl;
-
- if (!a1)
- {
- dl.l.upper = dl.l.lower = 0;
- return (dl.d);
- }
-
- if (a1 < 0)
- {
- sign = SIGNBIT;
- a1 = -a1;
- }
-
- while (a1 < 0x1000000)
- {
- a1 <<= 4;
- exp -= 4;
- }
-
- while (a1 < 0x40000000)
- {
- a1 <<= 1;
- exp--;
- }
-
- /* pack up and go home */
- dl.l.upper = sign;
- dl.l.upper |= exp << 20;
- dl.l.upper |= (a1 >> 10) & ~HIDDEND;
- dl.l.lower = a1 << 22;
-
- return (dl.d);
-}
-
-double
-__floatdidf (long long a1)
-{
- int exp = 63 + EXCESSD;
- union double_long dl;
-
- dl.l.upper = dl.l.lower = 0;
- if (a1 == 0)
- return (dl.d);
-
- if (a1 < 0) {
- dl.l.upper = SIGNBIT;
- a1 = -a1;
- }
-
- while (a1 < (long long)1<<54) {
- a1 <<= 8;
- exp -= 8;
- }
- while (a1 < (long long)1<<62) {
- a1 <<= 1;
- exp -= 1;
- }
-
- /* pack up and go home */
- dl.ll |= (a1 >> 10) & ~HIDDEND_LL;
- dl.l.upper |= exp << 20;
-
- return (dl.d);
-}
-
-float
-__floatsisf (long a1)
-{
- (float)__floatsidf(a1);
-}
-
-float
-__floatdisf (long long a1)
-{
- (float)__floatdidf(a1);
-}
-
-/* negate a float */
-float
-__negsf2 (float a1)
-{
- union float_long fl1;
-
- fl1.f = a1;
- if (!fl1.l)
- return (0);
-
- fl1.l ^= SIGNBIT;
- return (fl1.f);
-}
-
-/* negate a double */
-double
-__negdf2 (double a1)
-{
- union double_long dl1;
-
- dl1.d = a1;
-
- if (!dl1.l.upper && !dl1.l.lower)
- return (dl1.d);
-
- dl1.l.upper ^= SIGNBIT;
- return (dl1.d);
-}
-
-/* convert float to double */
-double
-__extendsfdf2 (float a1)
-{
- union float_long fl1;
- union double_long dl;
- int exp;
-
- fl1.f = a1;
-
- if (!fl1.l)
- {
- dl.l.upper = dl.l.lower = 0;
- return (dl.d);
- }
-
- dl.l.upper = SIGN (fl1.l);
- exp = EXP (fl1.l) - EXCESS + EXCESSD;
- dl.l.upper |= exp << 20;
- dl.l.upper |= (MANT (fl1.l) & ~HIDDEN) >> 3;
- dl.l.lower = MANT (fl1.l) << 29;
-
- return (dl.d);
-}
-
-/* convert double to float */
-float
-__truncdfsf2 (double a1)
-{
- int exp;
- long mant;
- union float_long fl;
- union double_long dl1;
-
- dl1.d = a1;
-
- if (!dl1.l.upper && !dl1.l.lower)
- return (float)(0);
-
- exp = EXPD (dl1) - EXCESSD + EXCESS;
-
- /* shift double mantissa 6 bits so we can round */
- mant = MANTD (dl1) >> 6;
-
- /* now round and shift down */
- mant += 1;
- mant >>= 1;
-
- /* did the round overflow? */
- if (mant & 0xFE000000)
- {
- mant >>= 1;
- exp++;
- }
-
- mant &= ~HIDDEN;
-
- /* pack up and go home */
- fl.l = PACK (SIGND (dl1), exp, mant);
- return (fl.f);
-}
-
-/* compare two doubles */
-long
-__cmpdf2 (double a1, double a2)
-{
- union double_long dl1, dl2;
-
- dl1.d = a1;
- dl2.d = a2;
-
- if (SIGND (dl1) && SIGND (dl2))
- {
- dl1.l.upper ^= SIGNBIT;
- dl2.l.upper ^= SIGNBIT;
- }
- if (dl1.l.upper < dl2.l.upper)
- return (-1);
- if (dl1.l.upper > dl2.l.upper)
- return (1);
- if (dl1.l.lower < dl2.l.lower)
- return (-1);
- if (dl1.l.lower > dl2.l.lower)
- return (1);
- return (0);
-}
-
-/* convert double to int */
-long
-__fixdfsi (double a1)
-{
- union double_long dl1;
- int exp;
- long l;
-
- dl1.d = a1;
-
- if (!dl1.l.upper && !dl1.l.lower)
- return (0);
-
- exp = EXPD (dl1) - EXCESSD - 31;
- l = MANTD (dl1);
-
- if (exp > 0)
- return SIGND(dl1) ? (1<<31) : ((1ul<<31)-1);
-
- /* shift down until exp = 0 or l = 0 */
- if (exp < 0 && exp > -32 && l)
- l >>= -exp;
- else
- return (0);
-
- return (SIGND (dl1) ? -l : l);
-}
-
-/* convert double to int */
-long long
-__fixdfdi (double a1)
-{
- union double_long dl1;
- int exp;
- long long l;
-
- dl1.d = a1;
-
- if (!dl1.l.upper && !dl1.l.lower)
- return (0);
-
- exp = EXPD (dl1) - EXCESSD - 64;
- l = MANTD_LL(dl1);
-
- if (exp > 0) {
- l = (long long)1<<63;
- if (!SIGND(dl1))
- l--;
- return l;
- }
-
- /* shift down until exp = 0 or l = 0 */
- if (exp < 0 && exp > -64 && l)
- l >>= -exp;
- else
- return (0);
-
- return (SIGND (dl1) ? -l : l);
-}
-
-/* convert double to unsigned int */
-unsigned long
-__fixunsdfsi (double a1)
-{
- union double_long dl1;
- int exp;
- unsigned long l;
-
- dl1.d = a1;
-
- if (!dl1.l.upper && !dl1.l.lower)
- return (0);
-
- exp = EXPD (dl1) - EXCESSD - 32;
- l = (((((dl1.l.upper) & 0xFFFFF) | HIDDEND) << 11) | (dl1.l.lower >> 21));
-
- if (exp > 0)
- return (0xFFFFFFFFul); /* largest integer */
-
- /* shift down until exp = 0 or l = 0 */
- if (exp < 0 && exp > -32 && l)
- l >>= -exp;
- else
- return (0);
-
- return (l);
-}
-
-/* convert double to unsigned int */
-unsigned long long
-__fixunsdfdi (double a1)
-{
- union double_long dl1;
- int exp;
- unsigned long long l;
-
- dl1.d = a1;
-
- if (dl1.ll == 0)
- return (0);
-
- exp = EXPD (dl1) - EXCESSD - 64;
-
- l = dl1.ll;
-
- if (exp > 0)
- return (unsigned long long)-1;
-
- /* shift down until exp = 0 or l = 0 */
- if (exp < 0 && exp > -64 && l)
- l >>= -exp;
- else
- return (0);
-
- return (l);
-}
-
-/* addtwo doubles */
-double
-__adddf3 (double a1, double a2)
-{
- long long mant1, mant2;
- union double_long fl1, fl2;
- int exp1, exp2;
- int sign = 0;
-
- fl1.d = a1;
- fl2.d = a2;
-
- /* check for zero args */
- if (!fl2.ll)
- goto test_done;
- if (!fl1.ll) {
- fl1.d = fl2.d;
- goto test_done;
- }
-
- exp1 = EXPD(fl1);
- exp2 = EXPD(fl2);
-
- if (exp1 > exp2 + 54)
- goto test_done;
- if (exp2 > exp1 + 54) {
- fl1.d = fl2.d;
- goto test_done;
- }
-
- /* do everything in excess precision so's we can round later */
- mant1 = MANTD_LL(fl1) << 9;
- mant2 = MANTD_LL(fl2) << 9;
-
- if (SIGND(fl1))
- mant1 = -mant1;
- if (SIGND(fl2))
- mant2 = -mant2;
-
- if (exp1 > exp2)
- mant2 >>= exp1 - exp2;
- else {
- mant1 >>= exp2 - exp1;
- exp1 = exp2;
- }
- mant1 += mant2;
-
- if (mant1 < 0) {
- mant1 = -mant1;
- sign = SIGNBIT;
- } else if (!mant1) {
- fl1.d = 0;
- goto test_done;
- }
-
- /* normalize up */
- while (!(mant1 & ((long long)7<<61))) {
- mant1 <<= 1;
- exp1--;
- }
-
- /* normalize down? */
- if (mant1 & ((long long)3<<62)) {
- mant1 >>= 1;
- exp1++;
- }
-
- /* round to even */
- mant1 += (mant1 & (1<<9)) ? (1<<8) : ((1<<8)-1);
-
- /* normalize down? */
- if (mant1 & ((long long)3<<62)) {
- mant1 >>= 1;
- exp1++;
- }
-
- /* lose extra precision */
- mant1 >>= 9;
-
- /* turn off hidden bit */
- mant1 &= ~HIDDEND_LL;
-
- /* pack up and go home */
- fl1.ll = PACKD_LL(sign,exp1,mant1);
-
-test_done:
- return (fl1.d);
-}
-
-/* subtract two doubles */
-double
-__subdf3 (double a1, double a2)
-{
- union double_long fl1, fl2;
-
- fl1.d = a1;
- fl2.d = a2;
-
- /* check for zero args */
- if (!fl2.ll)
- return (fl1.d);
- /* twiddle sign bit and add */
- fl2.l.upper ^= SIGNBIT;
- if (!fl1.ll)
- return (fl2.d);
- return __adddf3 (a1, fl2.d);
-}
-
-/* multiply two doubles */
-double
-__muldf3 (double a1, double a2)
-{
- union double_long fl1, fl2;
- unsigned long long result;
- int exp;
- int sign;
-
- fl1.d = a1;
- fl2.d = a2;
-
- if (!fl1.ll || !fl2.ll) {
- fl1.d = 0;
- goto test_done;
- }
-
- /* compute sign and exponent */
- sign = SIGND(fl1) ^ SIGND(fl2);
- exp = EXPD(fl1) - EXCESSD;
- exp += EXPD(fl2);
-
- fl1.ll = MANTD_LL(fl1);
- fl2.ll = MANTD_LL(fl2);
-
- /* the multiply is done as one 31x31 multiply and two 31x21 multiples */
- result = (fl1.ll >> 21) * (fl2.ll >> 21);
- result += ((fl1.ll & 0x1FFFFF) * (fl2.ll >> 21)) >> 21;
- result += ((fl2.ll & 0x1FFFFF) * (fl1.ll >> 21)) >> 21;
-
- result >>= 2;
- if (result & ((long long)1<<61)) {
- /* round */
- result += 1<<8;
- result >>= 9;
- } else {
- /* round */
- result += 1<<7;
- result >>= 8;
- exp--;
- }
- if (result & (HIDDEND_LL<<1)) {
- result >>= 1;
- exp++;
- }
-
- result &= ~HIDDEND_LL;
-
- /* pack up and go home */
- fl1.ll = PACKD_LL(sign,exp,result);
-test_done:
- return (fl1.d);
-}
-
-/* divide two doubles */
-double
-__divdf3 (double a1, double a2)
-{
- union double_long fl1, fl2;
- long long mask,result;
- int exp, sign;
-
- fl1.d = a1;
- fl2.d = a2;
-
- /* subtract exponents */
- exp = EXPD(fl1) - EXPD(fl2) + EXCESSD;
-
- /* compute sign */
- sign = SIGND(fl1) ^ SIGND(fl2);
-
- /* numerator zero??? */
- if (fl1.ll == 0) {
- /* divide by zero??? */
- if (fl2.ll == 0)
- fl1.ll = ((unsigned long long)1<<63)-1; /* NaN */
- else
- fl1.ll = 0;
- goto test_done;
- }
-
- /* return +Inf or -Inf */
- if (fl2.ll == 0) {
- fl1.ll = PACKD_LL(SIGND(fl1),2047,0);
- goto test_done;
- }
-
-
- /* now get mantissas */
- fl1.ll = MANTD_LL(fl1);
- fl2.ll = MANTD_LL(fl2);
-
- /* this assures we have 54 bits of precision in the end */
- if (fl1.ll < fl2.ll) {
- fl1.ll <<= 1;
- exp--;
- }
-
- /* now we perform repeated subtraction of fl2.ll from fl1.ll */
- mask = (long long)1<<53;
- result = 0;
- while (mask) {
- if (fl1.ll >= fl2.ll)
- {
- result |= mask;
- fl1.ll -= fl2.ll;
- }
- fl1.ll <<= 1;
- mask >>= 1;
- }
-
- /* round */
- result += 1;
-
- /* normalize down */
- exp++;
- result >>= 1;
-
- result &= ~HIDDEND_LL;
-
- /* pack up and go home */
- fl1.ll = PACKD_LL(sign, exp, result);
-
-test_done:
- return (fl1.d);
-}
-
-int
-__gtdf2 (double a1, double a2)
-{
- return __cmpdf2 ((float) a1, (float) a2) > 0;
-}
-
-int
-__gedf2 (double a1, double a2)
-{
- return (__cmpdf2 ((float) a1, (float) a2) >= 0) - 1;
-}
-
-int
-__ltdf2 (double a1, double a2)
-{
- return - (__cmpdf2 ((float) a1, (float) a2) < 0);
-}
-
-int
-__ledf2 (double a1, double a2)
-{
- return __cmpdf2 ((float) a1, (float) a2) > 0;
-}
-
-int
-__eqdf2 (double a1, double a2)
-{
- return *(long long *) &a1 == *(long long *) &a2;
-}
-
-int
-__nedf2 (double a1, double a2)
-{
- return *(long long *) &a1 != *(long long *) &a2;
-}
diff --git a/contrib/gcc/future.options b/contrib/gcc/future.options
deleted file mode 100644
index 6654dd0b..0000000
--- a/contrib/gcc/future.options
+++ /dev/null
@@ -1,40 +0,0 @@
-From: friedman@gnu.ai.mit.edu (Noah Friedman)
-To: roland@gnu.ai.mit.edu (Roland McGrath),
- rms@gnu.ai.mit.edu (Richard Stallman),
- jimb@gnu.ai.mit.edu (Jim Blandy),
- mib@gnu.ai.mit.edu (Michael Bushnell)
-Cc: cgw@sol.acs.unt.edu (chris williams),
- clc@gnu.ai.mit.edu (Christian Longshore Claiborn)
-Subject: Some gcc options we'd like to see.
-Date: Mon, 28 Jun 93 00:45:09 EST
-Reply-To: friedman@gnu.ai.mit.edu
-
--Waggravate-return
--Wcast-spell
--Wcaste-align
--Win
--Wmissing-protons
--Wredundant-repetitions
--antsy
--fbungee-jump
--fexpensive-operations
--fextra-strength
--fjesus-saves
--fkeep-programmers-inline
--fno-peeping-toms
--fruit-roll-ups
--fshort-enough
--mno-dialogue
--pedophile
--vomit-frame-pointer
-
-From: Alexandre Oliva <aoliva@redhat.com>
-Date: 06 Jan 2002 17:37:07 -0200
-
-On Jan 2, 2002, in a long, heated thread concerning the interpretation
-of certain passages of the C standard, jtv <jtv@xs4all.nl> wrote:
-
-> (Yes, I'm a pedant. I'm pining for the day when gcc will support the
-> options "-ffascist -Wanal")
-
-How about introducing the options `-flame -War' :-)
diff --git a/contrib/gcc/getopt.c b/contrib/gcc/getopt.c
deleted file mode 100644
index a1e4827..0000000
--- a/contrib/gcc/getopt.c
+++ /dev/null
@@ -1,1056 +0,0 @@
-/* Getopt for GNU.
- NOTE: getopt is now part of the C library, so if you don't know what
- "Keep this file name-space clean" means, talk to drepper@gnu.org
- before changing it!
-
- Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98
- Free Software Foundation, Inc.
-
- NOTE: This source is derived from an old version taken from the GNU C
- Library (glibc).
-
- 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 2, 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; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- USA. */
-
-/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
- Ditto for AIX 3.2 and <stdlib.h>. */
-#ifndef _NO_PROTO
-# define _NO_PROTO
-#endif
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if !defined __STDC__ || !__STDC__
-/* This is a separate conditional since some stdc systems
- reject `defined (const)'. */
-# ifndef const
-# define const
-# endif
-#endif
-
-#include <stdio.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
- actually compiling the library itself. This code is part of the GNU C
- Library, but also included in many other GNU distributions. Compiling
- and linking in this code is a waste when using the GNU C library
- (especially if it is a shared library). Rather than having every GNU
- program understand `configure --with-gnu-libc' and omit the object files,
- it is simpler to just do this in the source for each such file. */
-
-#define GETOPT_INTERFACE_VERSION 2
-#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
-# include <gnu-versions.h>
-# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
-# define ELIDE_CODE
-# endif
-#endif
-
-#ifndef ELIDE_CODE
-
-
-/* This needs to come after some library #include
- to get __GNU_LIBRARY__ defined. */
-#ifdef __GNU_LIBRARY__
-/* Don't include stdlib.h for non-GNU C libraries because some of them
- contain conflicting prototypes for getopt. */
-# include <stdlib.h>
-# include <unistd.h>
-#endif /* GNU C library. */
-
-#ifdef VMS
-# include <unixlib.h>
-# if HAVE_STRING_H - 0
-# include <string.h>
-# endif
-#endif
-
-#ifndef _
-/* This is for other GNU distributions with internationalized messages.
- When compiling libc, the _ macro is predefined. */
-# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
-# include <libintl.h>
-# define _(msgid) gettext (msgid)
-# else
-# define _(msgid) (msgid)
-# endif
-#endif
-
-/* This version of `getopt' appears to the caller like standard Unix `getopt'
- but it behaves differently for the user, since it allows the user
- to intersperse the options with the other arguments.
-
- As `getopt' works, it permutes the elements of ARGV so that,
- when it is done, all the options precede everything else. Thus
- all application programs are extended to handle flexible argument order.
-
- Setting the environment variable POSIXLY_CORRECT disables permutation.
- Then the behavior is completely standard.
-
- GNU application programs can use a third alternative mode in which
- they can distinguish the relative order of options and other arguments. */
-
-#include "getopt.h"
-
-/* For communication from `getopt' to the caller.
- When `getopt' finds an option that takes an argument,
- the argument value is returned here.
- Also, when `ordering' is RETURN_IN_ORDER,
- each non-option ARGV-element is returned here. */
-
-char *optarg = NULL;
-
-/* Index in ARGV of the next element to be scanned.
- This is used for communication to and from the caller
- and for communication between successive calls to `getopt'.
-
- On entry to `getopt', zero means this is the first call; initialize.
-
- When `getopt' returns -1, this is the index of the first of the
- non-option elements that the caller should itself scan.
-
- Otherwise, `optind' communicates from one call to the next
- how much of ARGV has been scanned so far. */
-
-/* 1003.2 says this must be 1 before any call. */
-int optind = 1;
-
-/* Formerly, initialization of getopt depended on optind==0, which
- causes problems with re-calling getopt as programs generally don't
- know that. */
-
-int __getopt_initialized = 0;
-
-/* The next char to be scanned in the option-element
- in which the last option character we returned was found.
- This allows us to pick up the scan where we left off.
-
- If this is zero, or a null string, it means resume the scan
- by advancing to the next ARGV-element. */
-
-static char *nextchar;
-
-/* Callers store zero here to inhibit the error message
- for unrecognized options. */
-
-int opterr = 1;
-
-/* Set to an option character which was unrecognized.
- This must be initialized on some systems to avoid linking in the
- system's own getopt implementation. */
-
-int optopt = '?';
-
-/* Describe how to deal with options that follow non-option ARGV-elements.
-
- If the caller did not specify anything,
- the default is REQUIRE_ORDER if the environment variable
- POSIXLY_CORRECT is defined, PERMUTE otherwise.
-
- REQUIRE_ORDER means don't recognize them as options;
- stop option processing when the first non-option is seen.
- This is what Unix does.
- This mode of operation is selected by either setting the environment
- variable POSIXLY_CORRECT, or using `+' as the first character
- of the list of option characters.
-
- PERMUTE is the default. We permute the contents of ARGV as we scan,
- so that eventually all the non-options are at the end. This allows options
- to be given in any order, even with programs that were not written to
- expect this.
-
- RETURN_IN_ORDER is an option available to programs that were written
- to expect options and other ARGV-elements in any order and that care about
- the ordering of the two. We describe each non-option ARGV-element
- as if it were the argument of an option with character code 1.
- Using `-' as the first character of the list of option characters
- selects this mode of operation.
-
- The special argument `--' forces an end of option-scanning regardless
- of the value of `ordering'. In the case of RETURN_IN_ORDER, only
- `--' can cause `getopt' to return -1 with `optind' != ARGC. */
-
-static enum
-{
- REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
-} ordering;
-
-/* Value of POSIXLY_CORRECT environment variable. */
-static char *posixly_correct;
-
-#ifdef __GNU_LIBRARY__
-/* We want to avoid inclusion of string.h with non-GNU libraries
- because there are many ways it can cause trouble.
- On some systems, it contains special magic macros that don't work
- in GCC. */
-# include <string.h>
-# define my_index strchr
-#else
-
-# if HAVE_STRING_H
-# include <string.h>
-# else
-# if HAVE_STRINGS_H
-# include <strings.h>
-# endif
-# endif
-
-/* Avoid depending on library functions or files
- whose names are inconsistent. */
-
-#ifndef getenv
-extern char *getenv ();
-#endif
-
-static char *
-my_index (str, chr)
- const char *str;
- int chr;
-{
- while (*str)
- {
- if (*str == chr)
- return (char *) str;
- str++;
- }
- return 0;
-}
-
-/* If using GCC, we can safely declare strlen this way.
- If not using GCC, it is ok not to declare it. */
-#ifdef __GNUC__
-/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
- That was relevant to code that was here before. */
-# if (!defined __STDC__ || !__STDC__) && !defined strlen
-/* gcc with -traditional declares the built-in strlen to return int,
- and has done so at least since version 2.4.5. -- rms. */
-extern int strlen (const char *);
-# endif /* not __STDC__ */
-#endif /* __GNUC__ */
-
-#endif /* not __GNU_LIBRARY__ */
-
-/* Handle permutation of arguments. */
-
-/* Describe the part of ARGV that contains non-options that have
- been skipped. `first_nonopt' is the index in ARGV of the first of them;
- `last_nonopt' is the index after the last of them. */
-
-static int first_nonopt;
-static int last_nonopt;
-
-#ifdef _LIBC
-/* Bash 2.0 gives us an environment variable containing flags
- indicating ARGV elements that should not be considered arguments. */
-
-/* Defined in getopt_init.c */
-extern char *__getopt_nonoption_flags;
-
-static int nonoption_flags_max_len;
-static int nonoption_flags_len;
-
-static int original_argc;
-static char *const *original_argv;
-
-/* Make sure the environment variable bash 2.0 puts in the environment
- is valid for the getopt call we must make sure that the ARGV passed
- to getopt is that one passed to the process. */
-static void
-__attribute__ ((unused))
-store_args_and_env (int argc, char *const *argv)
-{
- /* XXX This is no good solution. We should rather copy the args so
- that we can compare them later. But we must not use malloc(3). */
- original_argc = argc;
- original_argv = argv;
-}
-# ifdef text_set_element
-text_set_element (__libc_subinit, store_args_and_env);
-# endif /* text_set_element */
-
-# define SWAP_FLAGS(ch1, ch2) \
- if (nonoption_flags_len > 0) \
- { \
- char __tmp = __getopt_nonoption_flags[ch1]; \
- __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \
- __getopt_nonoption_flags[ch2] = __tmp; \
- }
-#else /* !_LIBC */
-# define SWAP_FLAGS(ch1, ch2)
-#endif /* _LIBC */
-
-/* Exchange two adjacent subsequences of ARGV.
- One subsequence is elements [first_nonopt,last_nonopt)
- which contains all the non-options that have been skipped so far.
- The other is elements [last_nonopt,optind), which contains all
- the options processed since those non-options were skipped.
-
- `first_nonopt' and `last_nonopt' are relocated so that they describe
- the new indices of the non-options in ARGV after they are moved. */
-
-#if defined __STDC__ && __STDC__
-static void exchange (char **);
-#endif
-
-static void
-exchange (argv)
- char **argv;
-{
- int bottom = first_nonopt;
- int middle = last_nonopt;
- int top = optind;
- char *tem;
-
- /* Exchange the shorter segment with the far end of the longer segment.
- That puts the shorter segment into the right place.
- It leaves the longer segment in the right place overall,
- but it consists of two parts that need to be swapped next. */
-
-#ifdef _LIBC
- /* First make sure the handling of the `__getopt_nonoption_flags'
- string can work normally. Our top argument must be in the range
- of the string. */
- if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
- {
- /* We must extend the array. The user plays games with us and
- presents new arguments. */
- char *new_str = malloc (top + 1);
- if (new_str == NULL)
- nonoption_flags_len = nonoption_flags_max_len = 0;
- else
- {
- memset (mempcpy (new_str, __getopt_nonoption_flags,
- nonoption_flags_max_len),
- '\0', top + 1 - nonoption_flags_max_len);
- nonoption_flags_max_len = top + 1;
- __getopt_nonoption_flags = new_str;
- }
- }
-#endif
-
- while (top > middle && middle > bottom)
- {
- if (top - middle > middle - bottom)
- {
- /* Bottom segment is the short one. */
- int len = middle - bottom;
- register int i;
-
- /* Swap it with the top part of the top segment. */
- for (i = 0; i < len; i++)
- {
- tem = argv[bottom + i];
- argv[bottom + i] = argv[top - (middle - bottom) + i];
- argv[top - (middle - bottom) + i] = tem;
- SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
- }
- /* Exclude the moved bottom segment from further swapping. */
- top -= len;
- }
- else
- {
- /* Top segment is the short one. */
- int len = top - middle;
- register int i;
-
- /* Swap it with the bottom part of the bottom segment. */
- for (i = 0; i < len; i++)
- {
- tem = argv[bottom + i];
- argv[bottom + i] = argv[middle + i];
- argv[middle + i] = tem;
- SWAP_FLAGS (bottom + i, middle + i);
- }
- /* Exclude the moved top segment from further swapping. */
- bottom += len;
- }
- }
-
- /* Update records for the slots the non-options now occupy. */
-
- first_nonopt += (optind - last_nonopt);
- last_nonopt = optind;
-}
-
-/* Initialize the internal data when the first call is made. */
-
-#if defined __STDC__ && __STDC__
-static const char *_getopt_initialize (int, char *const *, const char *);
-#endif
-static const char *
-_getopt_initialize (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
-{
- /* Start processing options with ARGV-element 1 (since ARGV-element 0
- is the program name); the sequence of previously skipped
- non-option ARGV-elements is empty. */
-
- first_nonopt = last_nonopt = optind;
-
- nextchar = NULL;
-
- posixly_correct = getenv ("POSIXLY_CORRECT");
-
- /* Determine how to handle the ordering of options and nonoptions. */
-
- if (optstring[0] == '-')
- {
- ordering = RETURN_IN_ORDER;
- ++optstring;
- }
- else if (optstring[0] == '+')
- {
- ordering = REQUIRE_ORDER;
- ++optstring;
- }
- else if (posixly_correct != NULL)
- ordering = REQUIRE_ORDER;
- else
- ordering = PERMUTE;
-
-#ifdef _LIBC
- if (posixly_correct == NULL
- && argc == original_argc && argv == original_argv)
- {
- if (nonoption_flags_max_len == 0)
- {
- if (__getopt_nonoption_flags == NULL
- || __getopt_nonoption_flags[0] == '\0')
- nonoption_flags_max_len = -1;
- else
- {
- const char *orig_str = __getopt_nonoption_flags;
- int len = nonoption_flags_max_len = strlen (orig_str);
- if (nonoption_flags_max_len < argc)
- nonoption_flags_max_len = argc;
- __getopt_nonoption_flags =
- (char *) malloc (nonoption_flags_max_len);
- if (__getopt_nonoption_flags == NULL)
- nonoption_flags_max_len = -1;
- else
- memset (mempcpy (__getopt_nonoption_flags, orig_str, len),
- '\0', nonoption_flags_max_len - len);
- }
- }
- nonoption_flags_len = nonoption_flags_max_len;
- }
- else
- nonoption_flags_len = 0;
-#endif
-
- return optstring;
-}
-
-/* Scan elements of ARGV (whose length is ARGC) for option characters
- given in OPTSTRING.
-
- If an element of ARGV starts with '-', and is not exactly "-" or "--",
- then it is an option element. The characters of this element
- (aside from the initial '-') are option characters. If `getopt'
- is called repeatedly, it returns successively each of the option characters
- from each of the option elements.
-
- If `getopt' finds another option character, it returns that character,
- updating `optind' and `nextchar' so that the next call to `getopt' can
- resume the scan with the following option character or ARGV-element.
-
- If there are no more option characters, `getopt' returns -1.
- Then `optind' is the index in ARGV of the first ARGV-element
- that is not an option. (The ARGV-elements have been permuted
- so that those that are not options now come last.)
-
- OPTSTRING is a string containing the legitimate option characters.
- If an option character is seen that is not listed in OPTSTRING,
- return '?' after printing an error message. If you set `opterr' to
- zero, the error message is suppressed but we still return '?'.
-
- If a char in OPTSTRING is followed by a colon, that means it wants an arg,
- so the following text in the same ARGV-element, or the text of the following
- ARGV-element, is returned in `optarg'. Two colons mean an option that
- wants an optional arg; if there is text in the current ARGV-element,
- it is returned in `optarg', otherwise `optarg' is set to zero.
-
- If OPTSTRING starts with `-' or `+', it requests different methods of
- handling the non-option ARGV-elements.
- See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
-
- Long-named options begin with `--' instead of `-'.
- Their names may be abbreviated as long as the abbreviation is unique
- or is an exact match for some defined option. If they have an
- argument, it follows the option name in the same ARGV-element, separated
- from the option name by a `=', or else the in next ARGV-element.
- When `getopt' finds a long-named option, it returns 0 if that option's
- `flag' field is nonzero, the value of the option's `val' field
- if the `flag' field is zero.
-
- The elements of ARGV aren't really const, because we permute them.
- But we pretend they're const in the prototype to be compatible
- with other systems.
-
- LONGOPTS is a vector of `struct option' terminated by an
- element containing a name which is zero.
-
- LONGIND returns the index in LONGOPT of the long-named option found.
- It is only valid when a long-named option has been found by the most
- recent call.
-
- If LONG_ONLY is nonzero, '-' as well as '--' can introduce
- long-named options. */
-
-int
-_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
- int argc;
- char *const *argv;
- const char *optstring;
- const struct option *longopts;
- int *longind;
- int long_only;
-{
- optarg = NULL;
-
- if (optind == 0 || !__getopt_initialized)
- {
- if (optind == 0)
- optind = 1; /* Don't scan ARGV[0], the program name. */
- optstring = _getopt_initialize (argc, argv, optstring);
- __getopt_initialized = 1;
- }
-
- /* Test whether ARGV[optind] points to a non-option argument.
- Either it does not have option syntax, or there is an environment flag
- from the shell indicating it is not an option. The later information
- is only used when the used in the GNU libc. */
-#ifdef _LIBC
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
- || (optind < nonoption_flags_len \
- && __getopt_nonoption_flags[optind] == '1'))
-#else
-# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
-#endif
-
- if (nextchar == NULL || *nextchar == '\0')
- {
- /* Advance to the next ARGV-element. */
-
- /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
- moved back by the user (who may also have changed the arguments). */
- if (last_nonopt > optind)
- last_nonopt = optind;
- if (first_nonopt > optind)
- first_nonopt = optind;
-
- if (ordering == PERMUTE)
- {
- /* If we have just processed some options following some non-options,
- exchange them so that the options come first. */
-
- if (first_nonopt != last_nonopt && last_nonopt != optind)
- exchange ((char **) argv);
- else if (last_nonopt != optind)
- first_nonopt = optind;
-
- /* Skip any additional non-options
- and extend the range of non-options previously skipped. */
-
- while (optind < argc && NONOPTION_P)
- optind++;
- last_nonopt = optind;
- }
-
- /* The special ARGV-element `--' means premature end of options.
- Skip it like a null option,
- then exchange with previous non-options as if it were an option,
- then skip everything else like a non-option. */
-
- if (optind != argc && !strcmp (argv[optind], "--"))
- {
- optind++;
-
- if (first_nonopt != last_nonopt && last_nonopt != optind)
- exchange ((char **) argv);
- else if (first_nonopt == last_nonopt)
- first_nonopt = optind;
- last_nonopt = argc;
-
- optind = argc;
- }
-
- /* If we have done all the ARGV-elements, stop the scan
- and back over any non-options that we skipped and permuted. */
-
- if (optind == argc)
- {
- /* Set the next-arg-index to point at the non-options
- that we previously skipped, so the caller will digest them. */
- if (first_nonopt != last_nonopt)
- optind = first_nonopt;
- return -1;
- }
-
- /* If we have come to a non-option and did not permute it,
- either stop the scan or describe it to the caller and pass it by. */
-
- if (NONOPTION_P)
- {
- if (ordering == REQUIRE_ORDER)
- return -1;
- optarg = argv[optind++];
- return 1;
- }
-
- /* We have found another option-ARGV-element.
- Skip the initial punctuation. */
-
- nextchar = (argv[optind] + 1
- + (longopts != NULL && argv[optind][1] == '-'));
- }
-
- /* Decode the current option-ARGV-element. */
-
- /* Check whether the ARGV-element is a long option.
-
- If long_only and the ARGV-element has the form "-f", where f is
- a valid short option, don't consider it an abbreviated form of
- a long option that starts with f. Otherwise there would be no
- way to give the -f short option.
-
- On the other hand, if there's a long option "fubar" and
- the ARGV-element is "-fu", do consider that an abbreviation of
- the long option, just like "--fu", and not "-f" with arg "u".
-
- This distinction seems to be the most useful approach. */
-
- if (longopts != NULL
- && (argv[optind][1] == '-'
- || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
- {
- char *nameend;
- const struct option *p;
- const struct option *pfound = NULL;
- int exact = 0;
- int ambig = 0;
- int indfound = -1;
- int option_index;
-
- for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
- /* Do nothing. */ ;
-
- /* Test all long options for either exact match
- or abbreviated matches. */
- for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp (p->name, nextchar, nameend - nextchar))
- {
- if ((unsigned int) (nameend - nextchar)
- == (unsigned int) strlen (p->name))
- {
- /* Exact match found. */
- pfound = p;
- indfound = option_index;
- exact = 1;
- break;
- }
- else if (pfound == NULL)
- {
- /* First nonexact match found. */
- pfound = p;
- indfound = option_index;
- }
- else
- /* Second or later nonexact match found. */
- ambig = 1;
- }
-
- if (ambig && !exact)
- {
- if (opterr)
- fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
- argv[0], argv[optind]);
- nextchar += strlen (nextchar);
- optind++;
- optopt = 0;
- return '?';
- }
-
- if (pfound != NULL)
- {
- option_index = indfound;
- optind++;
- if (*nameend)
- {
- /* Don't test has_arg with >, because some C compilers don't
- allow it to be used on enums. */
- if (pfound->has_arg)
- optarg = nameend + 1;
- else
- {
- if (opterr)
- {
- if (argv[optind - 1][1] == '-')
- /* --option */
- fprintf (stderr,
- _("%s: option `--%s' doesn't allow an argument\n"),
- argv[0], pfound->name);
- else
- /* +option or -option */
- fprintf (stderr,
- _("%s: option `%c%s' doesn't allow an argument\n"),
- argv[0], argv[optind - 1][0], pfound->name);
-
- nextchar += strlen (nextchar);
-
- optopt = pfound->val;
- return '?';
- }
- }
- }
- else if (pfound->has_arg == 1)
- {
- if (optind < argc)
- optarg = argv[optind++];
- else
- {
- if (opterr)
- fprintf (stderr,
- _("%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]);
- nextchar += strlen (nextchar);
- optopt = pfound->val;
- return optstring[0] == ':' ? ':' : '?';
- }
- }
- nextchar += strlen (nextchar);
- if (longind != NULL)
- *longind = option_index;
- if (pfound->flag)
- {
- *(pfound->flag) = pfound->val;
- return 0;
- }
- return pfound->val;
- }
-
- /* Can't find it as a long option. If this is not getopt_long_only,
- or the option starts with '--' or is not a valid short
- option, then it's an error.
- Otherwise interpret it as a short option. */
- if (!long_only || argv[optind][1] == '-'
- || my_index (optstring, *nextchar) == NULL)
- {
- if (opterr)
- {
- if (argv[optind][1] == '-')
- /* --option */
- fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
- argv[0], nextchar);
- else
- /* +option or -option */
- fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
- argv[0], argv[optind][0], nextchar);
- }
- nextchar = (char *) "";
- optind++;
- optopt = 0;
- return '?';
- }
- }
-
- /* Look at and handle the next short option-character. */
-
- {
- char c = *nextchar++;
- char *temp = my_index (optstring, c);
-
- /* Increment `optind' when we start to process its last character. */
- if (*nextchar == '\0')
- ++optind;
-
- if (temp == NULL || c == ':')
- {
- if (opterr)
- {
- if (posixly_correct)
- /* 1003.2 specifies the format of this message. */
- fprintf (stderr, _("%s: illegal option -- %c\n"),
- argv[0], c);
- else
- fprintf (stderr, _("%s: invalid option -- %c\n"),
- argv[0], c);
- }
- optopt = c;
- return '?';
- }
- /* Convenience. Treat POSIX -W foo same as long option --foo */
- if (temp[0] == 'W' && temp[1] == ';')
- {
- char *nameend;
- const struct option *p;
- const struct option *pfound = NULL;
- int exact = 0;
- int ambig = 0;
- int indfound = 0;
- int option_index;
-
- /* This is an option that requires an argument. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- /* If we end this ARGV-element by taking the rest as an arg,
- we must advance to the next element now. */
- optind++;
- }
- else if (optind == argc)
- {
- if (opterr)
- {
- /* 1003.2 specifies the format of this message. */
- fprintf (stderr, _("%s: option requires an argument -- %c\n"),
- argv[0], c);
- }
- optopt = c;
- if (optstring[0] == ':')
- c = ':';
- else
- c = '?';
- return c;
- }
- else
- /* We already incremented `optind' once;
- increment it again when taking next ARGV-elt as argument. */
- optarg = argv[optind++];
-
- /* optarg is now the argument, see if it's in the
- table of longopts. */
-
- for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
- /* Do nothing. */ ;
-
- /* Test all long options for either exact match
- or abbreviated matches. */
- for (p = longopts, option_index = 0; p->name; p++, option_index++)
- if (!strncmp (p->name, nextchar, nameend - nextchar))
- {
- if ((unsigned int) (nameend - nextchar) == strlen (p->name))
- {
- /* Exact match found. */
- pfound = p;
- indfound = option_index;
- exact = 1;
- break;
- }
- else if (pfound == NULL)
- {
- /* First nonexact match found. */
- pfound = p;
- indfound = option_index;
- }
- else
- /* Second or later nonexact match found. */
- ambig = 1;
- }
- if (ambig && !exact)
- {
- if (opterr)
- fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
- argv[0], argv[optind]);
- nextchar += strlen (nextchar);
- optind++;
- return '?';
- }
- if (pfound != NULL)
- {
- option_index = indfound;
- if (*nameend)
- {
- /* Don't test has_arg with >, because some C compilers don't
- allow it to be used on enums. */
- if (pfound->has_arg)
- optarg = nameend + 1;
- else
- {
- if (opterr)
- fprintf (stderr, _("\
-%s: option `-W %s' doesn't allow an argument\n"),
- argv[0], pfound->name);
-
- nextchar += strlen (nextchar);
- return '?';
- }
- }
- else if (pfound->has_arg == 1)
- {
- if (optind < argc)
- optarg = argv[optind++];
- else
- {
- if (opterr)
- fprintf (stderr,
- _("%s: option `%s' requires an argument\n"),
- argv[0], argv[optind - 1]);
- nextchar += strlen (nextchar);
- return optstring[0] == ':' ? ':' : '?';
- }
- }
- nextchar += strlen (nextchar);
- if (longind != NULL)
- *longind = option_index;
- if (pfound->flag)
- {
- *(pfound->flag) = pfound->val;
- return 0;
- }
- return pfound->val;
- }
- nextchar = NULL;
- return 'W'; /* Let the application handle it. */
- }
- if (temp[1] == ':')
- {
- if (temp[2] == ':')
- {
- /* This is an option that accepts an argument optionally. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- optind++;
- }
- else
- optarg = NULL;
- nextchar = NULL;
- }
- else
- {
- /* This is an option that requires an argument. */
- if (*nextchar != '\0')
- {
- optarg = nextchar;
- /* If we end this ARGV-element by taking the rest as an arg,
- we must advance to the next element now. */
- optind++;
- }
- else if (optind == argc)
- {
- if (opterr)
- {
- /* 1003.2 specifies the format of this message. */
- fprintf (stderr,
- _("%s: option requires an argument -- %c\n"),
- argv[0], c);
- }
- optopt = c;
- if (optstring[0] == ':')
- c = ':';
- else
- c = '?';
- }
- else
- /* We already incremented `optind' once;
- increment it again when taking next ARGV-elt as argument. */
- optarg = argv[optind++];
- nextchar = NULL;
- }
- }
- return c;
- }
-}
-
-int
-getopt (argc, argv, optstring)
- int argc;
- char *const *argv;
- const char *optstring;
-{
- return _getopt_internal (argc, argv, optstring,
- (const struct option *) 0,
- (int *) 0,
- 0);
-}
-
-#endif /* Not ELIDE_CODE. */
-
-#ifdef TEST
-
-/* Compile with -DTEST to make an executable for use in testing
- the above definition of `getopt'. */
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- int c;
- int digit_optind = 0;
-
- while (1)
- {
- int this_option_optind = optind ? optind : 1;
-
- c = getopt (argc, argv, "abc:d:0123456789");
- if (c == -1)
- break;
-
- switch (c)
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (digit_optind != 0 && digit_optind != this_option_optind)
- printf ("digits occur in two different argv-elements.\n");
- digit_optind = this_option_optind;
- printf ("option %c\n", c);
- break;
-
- case 'a':
- printf ("option a\n");
- break;
-
- case 'b':
- printf ("option b\n");
- break;
-
- case 'c':
- printf ("option c with value `%s'\n", optarg);
- break;
-
- case '?':
- break;
-
- default:
- printf ("?? getopt returned character code 0%o ??\n", c);
- }
- }
-
- if (optind < argc)
- {
- printf ("non-option ARGV-elements: ");
- while (optind < argc)
- printf ("%s ", argv[optind++]);
- printf ("\n");
- }
-
- exit (0);
-}
-
-#endif /* TEST */
diff --git a/contrib/gcc/getopt.h b/contrib/gcc/getopt.h
deleted file mode 100644
index a99a229..0000000
--- a/contrib/gcc/getopt.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/* Declarations for getopt.
- Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997, 1998, 2000,
- 2002 Free Software Foundation, Inc.
-
- NOTE: The canonical source of this file is maintained with the GNU C Library.
- Bugs can be reported to bug-glibc@gnu.org.
-
- 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 2, 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; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- USA. */
-
-#ifndef _GETOPT_H
-#define _GETOPT_H 1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* For communication from `getopt' to the caller.
- When `getopt' finds an option that takes an argument,
- the argument value is returned here.
- Also, when `ordering' is RETURN_IN_ORDER,
- each non-option ARGV-element is returned here. */
-
-extern char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
- This is used for communication to and from the caller
- and for communication between successive calls to `getopt'.
-
- On entry to `getopt', zero means this is the first call; initialize.
-
- When `getopt' returns -1, this is the index of the first of the
- non-option elements that the caller should itself scan.
-
- Otherwise, `optind' communicates from one call to the next
- how much of ARGV has been scanned so far. */
-
-extern int optind;
-
-/* Callers store zero here to inhibit the error message `getopt' prints
- for unrecognized options. */
-
-extern int opterr;
-
-/* Set to an option character which was unrecognized. */
-
-extern int optopt;
-
-/* Describe the long-named options requested by the application.
- The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
- of `struct option' terminated by an element containing a name which is
- zero.
-
- The field `has_arg' is:
- no_argument (or 0) if the option does not take an argument,
- required_argument (or 1) if the option requires an argument,
- optional_argument (or 2) if the option takes an optional argument.
-
- If the field `flag' is not NULL, it points to a variable that is set
- to the value given in the field `val' when the option is found, but
- left unchanged if the option is not found.
-
- To have a long-named option do something other than set an `int' to
- a compiled-in constant, such as set a value from `optarg', set the
- option's `flag' field to zero and its `val' field to a nonzero
- value (the equivalent single-letter option character, if there is
- one). For long options that have a zero `flag' field, `getopt'
- returns the contents of the `val' field. */
-
-struct option
-{
-#if defined (__STDC__) && __STDC__
- const char *name;
-#else
- char *name;
-#endif
- /* has_arg can't be an enum because some compilers complain about
- type mismatches in all the code that assumes it is an int. */
- int has_arg;
- int *flag;
- int val;
-};
-
-/* Names for the values of the `has_arg' field of `struct option'. */
-
-#define no_argument 0
-#define required_argument 1
-#define optional_argument 2
-
-#if defined (__STDC__) && __STDC__
-/* HAVE_DECL_* is a three-state macro: undefined, 0 or 1. If it is
- undefined, we haven't run the autoconf check so provide the
- declaration without arguments. If it is 0, we checked and failed
- to find the declaration so provide a fully prototyped one. If it
- is 1, we found it so don't provide any declaration at all. */
-#if !HAVE_DECL_GETOPT
-#if defined (__GNU_LIBRARY__) || defined (HAVE_DECL_GETOPT)
-/* Many other libraries have conflicting prototypes for getopt, with
- differences in the consts, in unistd.h. To avoid compilation
- errors, only prototype getopt for the GNU C library. */
-extern int getopt (int argc, char *const *argv, const char *shortopts);
-#else
-#ifndef __cplusplus
-extern int getopt ();
-#endif /* __cplusplus */
-#endif
-#endif /* !HAVE_DECL_GETOPT */
-
-extern int getopt_long (int argc, char *const *argv, const char *shortopts,
- const struct option *longopts, int *longind);
-extern int getopt_long_only (int argc, char *const *argv,
- const char *shortopts,
- const struct option *longopts, int *longind);
-
-/* Internal only. Users should not call this directly. */
-extern int _getopt_internal (int argc, char *const *argv,
- const char *shortopts,
- const struct option *longopts, int *longind,
- int long_only);
-#else /* not __STDC__ */
-extern int getopt ();
-extern int getopt_long ();
-extern int getopt_long_only ();
-
-extern int _getopt_internal ();
-#endif /* __STDC__ */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* getopt.h */
diff --git a/contrib/gcc/getopt1.c b/contrib/gcc/getopt1.c
deleted file mode 100644
index a3637c2..0000000
--- a/contrib/gcc/getopt1.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/* getopt_long and getopt_long_only entry points for GNU getopt.
- Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
- Free Software Foundation, Inc.
-
- NOTE: This source is derived from an old version taken from the GNU C
- Library (glibc).
-
- 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 2, 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; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- USA. */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "getopt.h"
-
-#if !defined __STDC__ || !__STDC__
-/* This is a separate conditional since some stdc systems
- reject `defined (const)'. */
-#ifndef const
-#define const
-#endif
-#endif
-
-#include <stdio.h>
-
-/* Comment out all this code if we are using the GNU C Library, and are not
- actually compiling the library itself. This code is part of the GNU C
- Library, but also included in many other GNU distributions. Compiling
- and linking in this code is a waste when using the GNU C library
- (especially if it is a shared library). Rather than having every GNU
- program understand `configure --with-gnu-libc' and omit the object files,
- it is simpler to just do this in the source for each such file. */
-
-#define GETOPT_INTERFACE_VERSION 2
-#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
-#include <gnu-versions.h>
-#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
-#define ELIDE_CODE
-#endif
-#endif
-
-#ifndef ELIDE_CODE
-
-
-/* This needs to come after some library #include
- to get __GNU_LIBRARY__ defined. */
-#ifdef __GNU_LIBRARY__
-#include <stdlib.h>
-#endif
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-int
-getopt_long (argc, argv, options, long_options, opt_index)
- int argc;
- char *const *argv;
- const char *options;
- const struct option *long_options;
- int *opt_index;
-{
- return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
-}
-
-/* Like getopt_long, but '-' as well as '--' can indicate a long option.
- If an option that starts with '-' (not '--') doesn't match a long option,
- but does match a short option, it is parsed as a short option
- instead. */
-
-int
-getopt_long_only (argc, argv, options, long_options, opt_index)
- int argc;
- char *const *argv;
- const char *options;
- const struct option *long_options;
- int *opt_index;
-{
- return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
-}
-
-
-#endif /* Not ELIDE_CODE. */
-
-#ifdef TEST
-
-#include <stdio.h>
-
-int
-main (argc, argv)
- int argc;
- char **argv;
-{
- int c;
- int digit_optind = 0;
-
- while (1)
- {
- int this_option_optind = optind ? optind : 1;
- int option_index = 0;
- static struct option long_options[] =
- {
- {"add", 1, 0, 0},
- {"append", 0, 0, 0},
- {"delete", 1, 0, 0},
- {"verbose", 0, 0, 0},
- {"create", 0, 0, 0},
- {"file", 1, 0, 0},
- {0, 0, 0, 0}
- };
-
- c = getopt_long (argc, argv, "abc:d:0123456789",
- long_options, &option_index);
- if (c == -1)
- break;
-
- switch (c)
- {
- case 0:
- printf ("option %s", long_options[option_index].name);
- if (optarg)
- printf (" with arg %s", optarg);
- printf ("\n");
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if (digit_optind != 0 && digit_optind != this_option_optind)
- printf ("digits occur in two different argv-elements.\n");
- digit_optind = this_option_optind;
- printf ("option %c\n", c);
- break;
-
- case 'a':
- printf ("option a\n");
- break;
-
- case 'b':
- printf ("option b\n");
- break;
-
- case 'c':
- printf ("option c with value `%s'\n", optarg);
- break;
-
- case 'd':
- printf ("option d with value `%s'\n", optarg);
- break;
-
- case '?':
- break;
-
- default:
- printf ("?? getopt returned character code 0%o ??\n", c);
- }
- }
-
- if (optind < argc)
- {
- printf ("non-option ARGV-elements: ");
- while (optind < argc)
- printf ("%s ", argv[optind++]);
- printf ("\n");
- }
-
- exit (0);
-}
-
-#endif /* TEST */
diff --git a/contrib/gcc/location.h b/contrib/gcc/location.h
deleted file mode 100644
index 1864f29..0000000
--- a/contrib/gcc/location.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Definition of location data type used in various part of GCC
- Copyright (C) 2002 Free Software Foundation, Inc.
- Contributed by Gabriel Dos Reis <gdr@codesourcery.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 2, 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; if not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
- In other words, you are welcome to use, share and improve this program.
- You are forbidden to forbid anyone else to use, share and improve
- what you give them. Help stamp out software-hoarding! */
-
-#ifndef GCC_LOCATION_H
-#define GCC_LOCATION_H
-
-/* The data structure used to record a location in a translation unit. */
-struct location_s GTY (())
-{
- /* The name of the source file involved. */
- const char *file;
-
- /* The line-location in the source file. */
- int line;
-};
-typedef struct location_s location_t;
-
-#endif
-
diff --git a/contrib/gcc/mbchar.c b/contrib/gcc/mbchar.c
deleted file mode 100644
index 4251736..0000000
--- a/contrib/gcc/mbchar.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/* Multibyte Character Functions.
- Copyright (C) 1998 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 2, 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, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
-
-/* Note regarding cross compilation:
-
- In general, translation of multibyte characters to wide characters can
- only work in a native compiler since the translation function (mbtowc)
- needs to know about both the source and target character encoding. However,
- this particular implementation for JIS, SJIS and EUCJP source characters
- will work for any compiler with a newlib target. Other targets may also
- work provided that their wchar_t implementation is 2 bytes and the encoding
- leaves the source character values unchanged (except for removing the
- state shifting markers). */
-
-#include "config.h"
-#ifdef MULTIBYTE_CHARS
-#include "system.h"
-#include "mbchar.h"
-#include <locale.h>
-
-typedef enum {ESCAPE, DOLLAR, BRACKET, AT, B, J, NUL, JIS_CHAR, OTHER,
- JIS_C_NUM} JIS_CHAR_TYPE;
-
-typedef enum {ASCII, A_ESC, A_ESC_DL, JIS, JIS_1, JIS_2, J_ESC, J_ESC_BR,
- J2_ESC, J2_ESC_BR, INV, JIS_S_NUM} JIS_STATE;
-
-typedef enum {COPYA, COPYJ, COPYJ2, MAKE_A, MAKE_J, NOOP,
- EMPTY, ERROR} JIS_ACTION;
-
-/* State/action tables for processing JIS encoding:
-
- Where possible, switches to JIS are grouped with proceding JIS characters
- and switches to ASCII are grouped with preceding JIS characters.
- Thus, maximum returned length is:
- 2 (switch to JIS) + 2 (JIS characters) + 2 (switch back to ASCII) = 6. */
-
-static const JIS_STATE JIS_state_table[JIS_S_NUM][JIS_C_NUM] = {
-/* ESCAPE DOLLAR BRACKET AT B J NUL JIS_CHAR OTH*/
-/*ASCII*/ { A_ESC, ASCII, ASCII, ASCII, ASCII, ASCII, ASCII,ASCII,ASCII},
-/*A_ESC*/ { ASCII, A_ESC_DL,ASCII, ASCII, ASCII, ASCII, ASCII,ASCII,ASCII},
-/*A_ESC_DL*/{ ASCII, ASCII, ASCII, JIS, JIS, ASCII, ASCII,ASCII,ASCII},
-/*JIS*/ { J_ESC, JIS_1, JIS_1, JIS_1, JIS_1, JIS_1, INV, JIS_1,INV },
-/*JIS_1*/ { INV, JIS_2, JIS_2, JIS_2, JIS_2, JIS_2, INV, JIS_2,INV },
-/*JIS_2*/ { J2_ESC,JIS, JIS, JIS, JIS, JIS, INV, JIS, JIS },
-/*J_ESC*/ { INV, INV, J_ESC_BR, INV, INV, INV, INV, INV, INV },
-/*J_ESC_BR*/{ INV, INV, INV, INV, ASCII, ASCII, INV, INV, INV },
-/*J2_ESC*/ { INV, INV, J2_ESC_BR,INV, INV, INV, INV, INV, INV },
-/*J2_ESC_BR*/{INV, INV, INV, INV, ASCII, ASCII, INV, INV, INV },
-};
-
-static const JIS_ACTION JIS_action_table[JIS_S_NUM][JIS_C_NUM] = {
-/* ESCAPE DOLLAR BRACKET AT B J NUL JIS_CHAR OTH */
-/*ASCII */ {NOOP, COPYA, COPYA, COPYA, COPYA, COPYA, EMPTY, COPYA, COPYA},
-/*A_ESC */ {COPYA, NOOP, COPYA, COPYA, COPYA, COPYA, COPYA, COPYA, COPYA},
-/*A_ESC_DL */{COPYA, COPYA, COPYA, MAKE_J, MAKE_J, COPYA, COPYA, COPYA, COPYA},
-/*JIS */ {NOOP, NOOP, NOOP, NOOP, NOOP, NOOP, ERROR, NOOP, ERROR},
-/*JIS_1 */ {ERROR, NOOP, NOOP, NOOP, NOOP, NOOP, ERROR, NOOP, ERROR},
-/*JIS_2 */ {NOOP, COPYJ2,COPYJ2,COPYJ2, COPYJ2, COPYJ2,ERROR, COPYJ2,COPYJ2},
-/*J_ESC */ {ERROR, ERROR, NOOP, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR},
-/*J_ESC_BR */{ERROR, ERROR, ERROR, ERROR, NOOP, NOOP, ERROR, ERROR, ERROR},
-/*J2_ESC */ {ERROR, ERROR, NOOP, ERROR, ERROR, ERROR, ERROR, ERROR, ERROR},
-/*J2_ESC_BR*/{ERROR, ERROR, ERROR, ERROR, COPYJ, COPYJ, ERROR, ERROR, ERROR},
-};
-
-
-const char *literal_codeset = NULL;
-
-/* Store into *PWC (if PWC is not null) the wide character
- corresponding to the multibyte character at the start of the
- buffer S of size N. Return the number of bytes in the multibyte
- character. Return -1 if the bytes do not form a valid character,
- or 0 if S is null or points to a null byte.
-
- This function behaves like the Standard C function mbtowc, except
- it treats locale names of the form "C-..." specially. */
-
-int
-local_mbtowc (pwc, s, n)
- wchar_t *pwc;
- const char *s;
- size_t n;
-{
- static JIS_STATE save_state = ASCII;
- JIS_STATE curr_state = save_state;
- const unsigned char *t = (const unsigned char *) s;
-
- if (s != NULL && n == 0)
- return -1;
-
- if (literal_codeset == NULL || strlen (literal_codeset) <= 1)
- /* This must be the "C" locale or unknown locale -- fall thru */
- ;
- else if (! strcmp (literal_codeset, "C-SJIS"))
- {
- int char1;
- if (s == NULL)
- /* Not state-dependent. */
- return 0;
-
- char1 = *t;
- if (ISSJIS1 (char1))
- {
- int char2 = t[1];
-
- if (n <= 1)
- return -1;
-
- if (ISSJIS2 (char2))
- {
- if (pwc != NULL)
- *pwc = (((wchar_t) *t) << 8) + (wchar_t) (*(t + 1));
- return 2;
- }
-
- return -1;
- }
-
- if (pwc != NULL)
- *pwc = (wchar_t) *t;
-
- if (*t == '\0')
- return 0;
-
- return 1;
- }
- else if (! strcmp (literal_codeset, "C-EUCJP"))
- {
- int char1;
-
- if (s == NULL)
- /* Not state-dependent. */
- return 0;
-
- char1 = *t;
- if (ISEUCJP (char1))
- {
- int char2 = t[1];
-
- if (n <= 1)
- return -1;
-
- if (ISEUCJP (char2))
- {
- if (pwc != NULL)
- *pwc = (((wchar_t) *t) << 8) + (wchar_t) (*(t + 1));
- return 2;
- }
-
- return -1;
- }
-
- if (pwc != NULL)
- *pwc = (wchar_t) *t;
-
- if (*t == '\0')
- return 0;
-
- return 1;
- }
- else if (! strcmp (literal_codeset, "C-JIS"))
- {
- JIS_ACTION action;
- JIS_CHAR_TYPE ch;
- const unsigned char *ptr;
- size_t i, curr_ch;
-
- if (s == NULL)
- {
- save_state = ASCII;
- /* State-dependent. */
- return 1;
- }
-
- ptr = t;
-
- for (i = 0; i < n; i++)
- {
- curr_ch = t[i];
- switch (curr_ch)
- {
- case JIS_ESC_CHAR:
- ch = ESCAPE;
- break;
- case '$':
- ch = DOLLAR;
- break;
- case '@':
- ch = AT;
- break;
- case '(':
- ch = BRACKET;
- break;
- case 'B':
- ch = B;
- break;
- case 'J':
- ch = J;
- break;
- case '\0':
- ch = NUL;
- break;
- default:
- if (ISJIS (curr_ch))
- ch = JIS_CHAR;
- else
- ch = OTHER;
- }
-
- action = JIS_action_table[curr_state][ch];
- curr_state = JIS_state_table[curr_state][ch];
-
- switch (action)
- {
- case NOOP:
- break;
-
- case EMPTY:
- if (pwc != NULL)
- *pwc = (wchar_t) 0;
-
- save_state = curr_state;
- return i;
-
- case COPYA:
- if (pwc != NULL)
- *pwc = (wchar_t) *ptr;
- save_state = curr_state;
- return i + 1;
-
- case COPYJ:
- if (pwc != NULL)
- *pwc = (((wchar_t) *ptr) << 8) + (wchar_t) (*(ptr + 1));
-
- save_state = curr_state;
- return i + 1;
-
- case COPYJ2:
- if (pwc != NULL)
- *pwc = (((wchar_t) *ptr) << 8) + (wchar_t) (*(ptr + 1));
-
- save_state = curr_state;
- return ptr - t + 2;
-
- case MAKE_A:
- case MAKE_J:
- ptr = (const unsigned char *) (t + i + 1);
- break;
-
- case ERROR:
- default:
- return -1;
- }
- }
-
- /* More than n bytes needed. */
- return -1;
- }
-
-#ifdef CROSS_COMPILE
- if (s == NULL)
- /* Not state-dependent. */
- return 0;
-
- if (pwc != NULL)
- *pwc = *s;
- return 1;
-#else
-
- /* This must be the "C" locale or unknown locale. */
- return mbtowc (pwc, s, n);
-#endif
-}
-
-/* Return the number of bytes in the multibyte character at the start
- of the buffer S of size N. Return -1 if the bytes do not form a
- valid character, or 0 if S is null or points to a null byte.
-
- This function behaves like the Standard C function mblen, except
- it treats locale names of the form "C-..." specially. */
-
-int
-local_mblen (s, n)
- const char *s;
- size_t n;
-{
- return local_mbtowc (NULL, s, n);
-}
-
-/* Return the maximum mumber of bytes in a multibyte character.
-
- This function returns the same value as the Standard C macro MB_CUR_MAX,
- except it treats locale names of the form "C-..." specially. */
-
-int
-local_mb_cur_max ()
-{
- if (literal_codeset == NULL || strlen (literal_codeset) <= 1)
- ;
- else if (! strcmp (literal_codeset, "C-SJIS"))
- return 2;
- else if (! strcmp (literal_codeset, "C-EUCJP"))
- return 2;
- else if (! strcmp (literal_codeset, "C-JIS"))
- return 8; /* 3 + 2 + 3 */
-
-#ifdef CROSS_COMPILE
- return 1;
-#else
- if (MB_CUR_MAX > 0)
- return MB_CUR_MAX;
-
- return 1; /* default */
-#endif
-}
-#else /* MULTIBYTE_CHARS */
-extern int dummy; /* silence 'ANSI C forbids an empty source file' warning */
-#endif /* MULTIBYTE_CHARS */
diff --git a/contrib/gcc/mbchar.h b/contrib/gcc/mbchar.h
deleted file mode 100644
index 44f8398..0000000
--- a/contrib/gcc/mbchar.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Various declarations for functions found in mbchar.c
- Copyright (C) 1998, 1999, 2000 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 2, 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, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
-
-#ifndef GCC_MBCHAR_H
-#define GCC_MBCHAR_H
-
-#ifdef MULTIBYTE_CHARS
-
-/* Escape character used for JIS encoding */
-#define JIS_ESC_CHAR 0x1b
-
-#define ISSJIS1(c) (((c) >= 0x81 && (c) <= 0x9f) || ((c) >= 0xe0 && (c) <= 0xef))
-#define ISSJIS2(c) (((c) >= 0x40 && (c) <= 0x7e) || ((c) >= 0x80 && (c) <= 0xfc))
-#define ISEUCJP(c) ((c) >= 0xa1 && (c) <= 0xfe)
-#define ISJIS(c) ((c) >= 0x21 && (c) <= 0x7e)
-
-extern int local_mbtowc PARAMS ((wchar_t *, const char *, size_t));
-extern int local_mblen PARAMS ((const char *, size_t));
-extern int local_mb_cur_max PARAMS ((void));
-
-/* The locale being used for multibyte characters in string/char literals. */
-extern const char *literal_codeset;
-#endif /* MULTIBYTE_CHARS */
-#endif /* ! GCC_MBCHAR_H */
diff --git a/contrib/gcc/objc/lang-options.h b/contrib/gcc/objc/lang-options.h
deleted file mode 100644
index 88e30e5..0000000
--- a/contrib/gcc/objc/lang-options.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Switch definitions for the GNU compiler for the Objective-C language.
- Copyright (C) 2000 Free Software Foundation, Inc.
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option)
-any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* This is the contribution to the `documented_lang_options' array in
- toplev.c for Objective-C. */
-
-DEFINE_LANG_NAME ("Objective C")
-
- { "-gen-decls",
- N_("Dump decls to a .decl file") },
- { "-fgnu-runtime",
- N_("Generate code for GNU runtime environment") },
- { "-fno-gnu-runtime", "" },
- { "-fnext-runtime",
- N_("Generate code for NeXT runtime environment") },
- { "-fno-next-runtime", "" },
- { "-Wselector",
- N_("Warn if a selector has multiple methods") },
- { "-Wno-selector", "" },
- { "-Wprotocol", "" },
- { "-Wno-protocol",
- N_("Do not warn if inherited methods are unimplemented") },
- { "-print-objc-runtime-info",
- N_("Generate C header of platform specific features") },
- { "-fconstant-string-class",
- N_("Specify the name of the class for constant strings") },
diff --git a/contrib/gcc/objc/sendmsg.c b/contrib/gcc/objc/sendmsg.c
deleted file mode 100644
index 245b8b9..0000000
--- a/contrib/gcc/objc/sendmsg.c
+++ /dev/null
@@ -1,651 +0,0 @@
-/* GNU Objective C Runtime message lookup
- Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
- Contributed by Kresten Krab Thorup
-
-This file is part of GNU CC.
-
-GNU CC 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, or (at your option) any later version.
-
-GNU CC 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 CC; see the file COPYING. If not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* As a special exception, if you link this library with files compiled with
- GCC to produce an executable, this does not cause the resulting executable
- to be covered by the GNU General Public License. This exception does not
- however invalidate any other reasons why the executable file might be
- covered by the GNU General Public License. */
-
-#include "../tconfig.h"
-#include "runtime.h"
-#include "sarray.h"
-#include "encoding.h"
-#include "runtime-info.h"
-
-/* this is how we hack STRUCT_VALUE to be 1 or 0 */
-#define gen_rtx(args...) 1
-#define gen_rtx_MEM(args...) 1
-#define rtx int
-
-#if !defined(STRUCT_VALUE) || STRUCT_VALUE == 0
-#define INVISIBLE_STRUCT_RETURN 1
-#else
-#define INVISIBLE_STRUCT_RETURN 0
-#endif
-
-/* The uninstalled dispatch table */
-struct sarray* __objc_uninstalled_dtable = 0; /* !T:MUTEX */
-
-/* Send +initialize to class */
-static void __objc_send_initialize(Class);
-
-static void __objc_install_dispatch_table_for_class (Class);
-
-/* Forward declare some functions */
-static void __objc_init_install_dtable(id, SEL);
-
-/* Various forwarding functions that are used based upon the
- return type for the selector.
- __objc_block_forward for structures.
- __objc_double_forward for floats/doubles.
- __objc_word_forward for pointers or types that fit in registers.
- */
-static double __objc_double_forward(id, SEL, ...);
-static id __objc_word_forward(id, SEL, ...);
-typedef struct { id many[8]; } __big;
-#if INVISIBLE_STRUCT_RETURN
-static __big
-#else
-static id
-#endif
-__objc_block_forward(id, SEL, ...);
-static Method_t search_for_method_in_hierarchy (Class class, SEL sel);
-Method_t search_for_method_in_list(MethodList_t list, SEL op);
-id nil_method(id, SEL, ...);
-
-/* Given a selector, return the proper forwarding implementation. */
-__inline__
-IMP
-__objc_get_forward_imp (SEL sel)
-{
- const char *t = sel->sel_types;
-
- if (t && (*t == '[' || *t == '(' || *t == '{')
-#ifdef OBJC_MAX_STRUCT_BY_VALUE
- && objc_sizeof_type(t) > OBJC_MAX_STRUCT_BY_VALUE
-#endif
- )
- return (IMP)__objc_block_forward;
- else if (t && (*t == 'f' || *t == 'd'))
- return (IMP)__objc_double_forward;
- else
- return (IMP)__objc_word_forward;
-}
-
-/* Given a class and selector, return the selector's implementation. */
-__inline__
-IMP
-get_imp (Class class, SEL sel)
-{
- void* res = sarray_get_safe (class->dtable, (size_t) sel->sel_id);
- if (res == 0)
- {
- /* Not a valid method */
- if(class->dtable == __objc_uninstalled_dtable)
- {
- /* The dispatch table needs to be installed. */
- objc_mutex_lock(__objc_runtime_mutex);
- __objc_install_dispatch_table_for_class (class);
- objc_mutex_unlock(__objc_runtime_mutex);
- /* Call ourselves with the installed dispatch table
- and get the real method */
- res = get_imp(class, sel);
- }
- else
- {
- /* The dispatch table has been installed so the
- method just doesn't exist for the class.
- Return the forwarding implementation. */
- res = __objc_get_forward_imp(sel);
- }
- }
- return res;
-}
-
-/* Query if an object can respond to a selector, returns YES if the
-object implements the selector otherwise NO. Does not check if the
-method can be forwarded. */
-__inline__
-BOOL
-__objc_responds_to (id object, SEL sel)
-{
- void* res;
-
- /* Install dispatch table if need be */
- if (object->class_pointer->dtable == __objc_uninstalled_dtable)
- {
- objc_mutex_lock(__objc_runtime_mutex);
- __objc_install_dispatch_table_for_class (object->class_pointer);
- objc_mutex_unlock(__objc_runtime_mutex);
- }
-
- /* Get the method from the dispatch table */
- res = sarray_get_safe (object->class_pointer->dtable, (size_t) sel->sel_id);
- return (res != 0);
-}
-
-/* This is the lookup function. All entries in the table are either a
- valid method *or* zero. If zero then either the dispatch table
- needs to be installed or it doesn't exist and forwarding is attempted. */
-__inline__
-IMP
-objc_msg_lookup(id receiver, SEL op)
-{
- IMP result;
- if(receiver)
- {
- result = sarray_get_safe (receiver->class_pointer->dtable,
- (sidx)op->sel_id);
- if (result == 0)
- {
- /* Not a valid method */
- if(receiver->class_pointer->dtable == __objc_uninstalled_dtable)
- {
- /* The dispatch table needs to be installed.
- This happens on the very first method call to the class. */
- __objc_init_install_dtable(receiver, op);
-
- /* Get real method for this in newly installed dtable */
- result = get_imp(receiver->class_pointer, op);
- }
- else
- {
- /* The dispatch table has been installed so the
- method just doesn't exist for the class.
- Attempt to forward the method. */
- result = __objc_get_forward_imp(op);
- }
- }
- return result;
- }
- else
- return nil_method;
-}
-
-IMP
-objc_msg_lookup_super (Super_t super, SEL sel)
-{
- if (super->self)
- return get_imp (super->class, sel);
- else
- return nil_method;
-}
-
-int method_get_sizeof_arguments (Method*);
-
-retval_t
-objc_msg_sendv(id object, SEL op, arglist_t arg_frame)
-{
- Method* m = class_get_instance_method(object->class_pointer, op);
- const char *type;
- *((id*)method_get_first_argument (m, arg_frame, &type)) = object;
- *((SEL*)method_get_next_argument (arg_frame, &type)) = op;
- return __builtin_apply((apply_t)m->method_imp,
- arg_frame,
- method_get_sizeof_arguments (m));
-}
-
-void
-__objc_init_dispatch_tables()
-{
- __objc_uninstalled_dtable
- = sarray_new(200, 0);
-}
-
-/* This function is called by objc_msg_lookup when the
- dispatch table needs to be installed; thus it is called once
- for each class, namely when the very first message is sent to it. */
-static void
-__objc_init_install_dtable(id receiver, SEL op)
-{
- /* This may happen, if the programmer has taken the address of a
- method before the dtable was initialized... too bad for him! */
- if(receiver->class_pointer->dtable != __objc_uninstalled_dtable)
- return;
-
- objc_mutex_lock(__objc_runtime_mutex);
-
- if(CLS_ISCLASS(receiver->class_pointer))
- {
- /* receiver is an ordinary object */
- assert(CLS_ISCLASS(receiver->class_pointer));
-
- /* install instance methods table */
- __objc_install_dispatch_table_for_class (receiver->class_pointer);
-
- /* call +initialize -- this will in turn install the factory
- dispatch table if not already done :-) */
- __objc_send_initialize(receiver->class_pointer);
- }
- else
- {
- /* receiver is a class object */
- assert(CLS_ISCLASS((Class)receiver));
- assert(CLS_ISMETA(receiver->class_pointer));
-
- /* Install real dtable for factory methods */
- __objc_install_dispatch_table_for_class (receiver->class_pointer);
-
- if (strcmp (sel_get_name (op), "initialize"))
- __objc_send_initialize((Class)receiver);
- else
- CLS_SETINITIALIZED((Class)receiver);
- }
- objc_mutex_unlock(__objc_runtime_mutex);
-}
-
-/* Install dummy table for class which causes the first message to
- that class (or instances hereof) to be initialized properly */
-void
-__objc_install_premature_dtable(Class class)
-{
- assert(__objc_uninstalled_dtable);
- class->dtable = __objc_uninstalled_dtable;
-}
-
-/* Send +initialize to class if not already done */
-static void
-__objc_send_initialize(Class class)
-{
- /* This *must* be a class object */
- assert(CLS_ISCLASS(class));
- assert(!CLS_ISMETA(class));
-
- if (!CLS_ISINITIALIZED(class))
- {
- CLS_SETINITIALIZED(class);
- CLS_SETINITIALIZED(class->class_pointer);
-
- if(class->super_class)
- __objc_send_initialize(class->super_class);
-
- {
- SEL op = sel_register_name ("initialize");
- Class tmpclass = class;
- IMP imp = 0;
-
- while (!imp && tmpclass) {
- MethodList_t method_list = tmpclass->class_pointer->methods;
-
- while(!imp && method_list) {
- int i;
- Method_t method;
-
- for (i=0;i<method_list->method_count;i++) {
- method = &(method_list->method_list[i]);
- if (method->method_name
- && method->method_name->sel_id == op->sel_id) {
- imp = method->method_imp;
- break;
- }
- }
-
- method_list = method_list->method_next;
-
- }
-
- tmpclass = tmpclass->super_class;
- }
- if (imp)
- (*imp)((id)class, op);
-
- }
- }
-}
-
-/* Walk on the methods list of class and install the methods in the reverse
- order of the lists. Since methods added by categories are before the methods
- of class in the methods list, this allows categories to substitute methods
- declared in class. However if more than one category replaces the same
- method nothing is guaranteed about what method will be used.
- Assumes that __objc_runtime_mutex is locked down. */
-static void
-__objc_install_methods_in_dtable (Class class, MethodList_t method_list)
-{
- int i;
-
- if (!method_list)
- return;
-
- if (method_list->method_next)
- __objc_install_methods_in_dtable (class, method_list->method_next);
-
- for (i = 0; i < method_list->method_count; i++)
- {
- Method_t method = &(method_list->method_list[i]);
- sarray_at_put_safe (class->dtable,
- (sidx) method->method_name->sel_id,
- method->method_imp);
- }
-}
-
-/* Assumes that __objc_runtime_mutex is locked down. */
-static void
-__objc_install_dispatch_table_for_class (Class class)
-{
- Class super;
-
- /* If the class has not yet had its class links resolved, we must
- re-compute all class links */
- if(!CLS_ISRESOLV(class))
- __objc_resolve_class_links();
-
- super = class->super_class;
-
- if (super != 0 && (super->dtable == __objc_uninstalled_dtable))
- __objc_install_dispatch_table_for_class (super);
-
- /* Allocate dtable if necessary */
- if (super == 0)
- {
- objc_mutex_lock(__objc_runtime_mutex);
- class->dtable = sarray_new (__objc_selector_max_index, 0);
- objc_mutex_unlock(__objc_runtime_mutex);
- }
- else
- class->dtable = sarray_lazy_copy (super->dtable);
-
- __objc_install_methods_in_dtable (class, class->methods);
-}
-
-void
-__objc_update_dispatch_table_for_class (Class class)
-{
- Class next;
- struct sarray *arr;
-
- /* not yet installed -- skip it */
- if (class->dtable == __objc_uninstalled_dtable)
- return;
-
- objc_mutex_lock(__objc_runtime_mutex);
-
- arr = class->dtable;
- __objc_install_premature_dtable (class); /* someone might require it... */
- sarray_free (arr); /* release memory */
-
- /* could have been lazy... */
- __objc_install_dispatch_table_for_class (class);
-
- if (class->subclass_list) /* Traverse subclasses */
- for (next = class->subclass_list; next; next = next->sibling_class)
- __objc_update_dispatch_table_for_class (next);
-
- objc_mutex_unlock(__objc_runtime_mutex);
-}
-
-
-/* This function adds a method list to a class. This function is
- typically called by another function specific to the run-time. As
- such this function does not worry about thread safe issues.
-
- This one is only called for categories. Class objects have their
- methods installed right away, and their selectors are made into
- SEL's by the function __objc_register_selectors_from_class. */
-void
-class_add_method_list (Class class, MethodList_t list)
-{
- int i;
-
- /* Passing of a linked list is not allowed. Do multiple calls. */
- assert (!list->method_next);
-
- /* Check for duplicates. */
- for (i = 0; i < list->method_count; ++i)
- {
- Method_t method = &list->method_list[i];
-
- if (method->method_name) /* Sometimes these are NULL */
- {
- /* This is where selector names are transmogrified to SEL's */
- method->method_name =
- sel_register_typed_name ((const char*)method->method_name,
- method->method_types);
- }
- }
-
- /* Add the methods to the class's method list. */
- list->method_next = class->methods;
- class->methods = list;
-
- /* Update the dispatch table of class */
- __objc_update_dispatch_table_for_class (class);
-}
-
-Method_t
-class_get_instance_method(Class class, SEL op)
-{
- return search_for_method_in_hierarchy(class, op);
-}
-
-Method_t
-class_get_class_method(MetaClass class, SEL op)
-{
- return search_for_method_in_hierarchy(class, op);
-}
-
-
-/* Search for a method starting from the current class up its hierarchy.
- Return a pointer to the method's method structure if found. NULL
- otherwise. */
-
-static Method_t
-search_for_method_in_hierarchy (Class cls, SEL sel)
-{
- Method_t method = NULL;
- Class class;
-
- if (! sel_is_mapped (sel))
- return NULL;
-
- /* Scan the method list of the class. If the method isn't found in the
- list then step to its super class. */
- for (class = cls; ((! method) && class); class = class->super_class)
- method = search_for_method_in_list (class->methods, sel);
-
- return method;
-}
-
-
-
-/* Given a linked list of method and a method's name. Search for the named
- method's method structure. Return a pointer to the method's method
- structure if found. NULL otherwise. */
-Method_t
-search_for_method_in_list (MethodList_t list, SEL op)
-{
- MethodList_t method_list = list;
-
- if (! sel_is_mapped (op))
- return NULL;
-
- /* If not found then we'll search the list. */
- while (method_list)
- {
- int i;
-
- /* Search the method list. */
- for (i = 0; i < method_list->method_count; ++i)
- {
- Method_t method = &method_list->method_list[i];
-
- if (method->method_name)
- if (method->method_name->sel_id == op->sel_id)
- return method;
- }
-
- /* The method wasn't found. Follow the link to the next list of
- methods. */
- method_list = method_list->method_next;
- }
-
- return NULL;
-}
-
-static retval_t __objc_forward (id object, SEL sel, arglist_t args);
-
-/* Forwarding pointers/integers through the normal registers */
-static id
-__objc_word_forward (id rcv, SEL op, ...)
-{
- void *args, *res;
-
- args = __builtin_apply_args ();
- res = __objc_forward (rcv, op, args);
- if (res)
- __builtin_return (res);
- else
- return res;
-}
-
-/* Specific routine for forwarding floats/double because of
- architectural differences on some processors. i386s for
- example which uses a floating point stack versus general
- registers for floating point numbers. This forward routine
- makes sure that GCC restores the proper return values */
-static double
-__objc_double_forward (id rcv, SEL op, ...)
-{
- void *args, *res;
-
- args = __builtin_apply_args ();
- res = __objc_forward (rcv, op, args);
- __builtin_return (res);
-}
-
-#if INVISIBLE_STRUCT_RETURN
-static __big
-#else
-static id
-#endif
-__objc_block_forward (id rcv, SEL op, ...)
-{
- void *args, *res;
-
- args = __builtin_apply_args ();
- res = __objc_forward (rcv, op, args);
- if (res)
- __builtin_return (res);
- else
-#if INVISIBLE_STRUCT_RETURN
- return (__big) {{0, 0, 0, 0, 0, 0, 0, 0}};
-#else
- return nil;
-#endif
-}
-
-
-/* This function is installed in the dispatch table for all methods which are
- not implemented. Thus, it is called when a selector is not recognized. */
-static retval_t
-__objc_forward (id object, SEL sel, arglist_t args)
-{
- IMP imp;
- static SEL frwd_sel = 0; /* !T:SAFE2 */
- SEL err_sel;
-
- /* first try if the object understands forward:: */
- if (!frwd_sel)
- frwd_sel = sel_get_any_uid("forward::");
-
- if (__objc_responds_to (object, frwd_sel))
- {
- imp = get_imp(object->class_pointer, frwd_sel);
- return (*imp)(object, frwd_sel, sel, args);
- }
-
- /* If the object recognizes the doesNotRecognize: method then we're going
- to send it. */
- err_sel = sel_get_any_uid ("doesNotRecognize:");
- if (__objc_responds_to (object, err_sel))
- {
- imp = get_imp (object->class_pointer, err_sel);
- return (*imp) (object, err_sel, sel);
- }
-
- /* The object doesn't recognize the method. Check for responding to
- error:. If it does then sent it. */
- {
- size_t strlen (const char*);
- char msg[256 + strlen ((const char*)sel_get_name (sel))
- + strlen ((const char*)object->class_pointer->name)];
-
- sprintf (msg, "(%s) %s does not recognize %s",
- (CLS_ISMETA(object->class_pointer)
- ? "class"
- : "instance" ),
- object->class_pointer->name, sel_get_name (sel));
-
- err_sel = sel_get_any_uid ("error:");
- if (__objc_responds_to (object, err_sel))
- {
- imp = get_imp (object->class_pointer, err_sel);
- return (*imp) (object, sel_get_any_uid ("error:"), msg);
- }
-
- /* The object doesn't respond to doesNotRecognize: or error:; Therefore,
- a default action is taken. */
- objc_error (object, OBJC_ERR_UNIMPLEMENTED, "%s\n", msg);
-
- return 0;
- }
-}
-
-void
-__objc_print_dtable_stats()
-{
- int total = 0;
-
- objc_mutex_lock(__objc_runtime_mutex);
-
- printf("memory usage: (%s)\n",
-#ifdef OBJC_SPARSE2
- "2-level sparse arrays"
-#else
- "3-level sparse arrays"
-#endif
- );
-
- printf("arrays: %d = %ld bytes\n", narrays,
- (long)narrays*sizeof(struct sarray));
- total += narrays*sizeof(struct sarray);
- printf("buckets: %d = %ld bytes\n", nbuckets,
- (long)nbuckets*sizeof(struct sbucket));
- total += nbuckets*sizeof(struct sbucket);
-
- printf("idxtables: %d = %ld bytes\n", idxsize, (long)idxsize*sizeof(void*));
- total += idxsize*sizeof(void*);
- printf("-----------------------------------\n");
- printf("total: %d bytes\n", total);
- printf("===================================\n");
-
- objc_mutex_unlock(__objc_runtime_mutex);
-}
-
-/* Returns the uninstalled dispatch table indicator.
- If a class' dispatch table points to __objc_uninstalled_dtable
- then that means it needs its dispatch table to be installed. */
-__inline__
-struct sarray*
-objc_get_uninstalled_dtable()
-{
- return __objc_uninstalled_dtable;
-}
diff --git a/contrib/gcc/pexecute.c b/contrib/gcc/pexecute.c
deleted file mode 100644
index 347c4db..0000000
--- a/contrib/gcc/pexecute.c
+++ /dev/null
@@ -1,792 +0,0 @@
-/* Utilities to execute a program in a subprocess (possibly linked by pipes
- with other subprocesses), and wait for it.
- Copyright (C) 1996-2000 Free Software Foundation, Inc.
-
-This file is part of the libiberty library.
-Libiberty is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public
-License as published by the Free Software Foundation; either
-version 2 of the License, or (at your option) any later version.
-
-Libiberty 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with libiberty; see the file COPYING.LIB. If not,
-write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-/* This file exports two functions: pexecute and pwait. */
-
-/* This file lives in at least two places: libiberty and gcc.
- Don't change one without the other. */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#ifdef NEED_DECLARATION_ERRNO
-extern int errno;
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-
-#include "libiberty.h"
-#include "safe-ctype.h"
-
-/* stdin file number. */
-#define STDIN_FILE_NO 0
-
-/* stdout file number. */
-#define STDOUT_FILE_NO 1
-
-/* value of `pipe': port index for reading. */
-#define READ_PORT 0
-
-/* value of `pipe': port index for writing. */
-#define WRITE_PORT 1
-
-static char *install_error_msg = "installation problem, cannot exec `%s'";
-
-/* pexecute: execute a program.
-
-@deftypefn Extension int pexecute (const char *@var{program}, char * const *@var{argv}, const char *@var{this_pname}, const char *@var{temp_base}, char **@var{errmsg_fmt}, char **@var{errmsg_arg}, int flags)
-
-Executes a program.
-
-@var{program} and @var{argv} are the arguments to
-@code{execv}/@code{execvp}.
-
-@var{this_pname} is name of the calling program (i.e., @code{argv[0]}).
-
-@var{temp_base} is the path name, sans suffix, of a temporary file to
-use if needed. This is currently only needed for MS-DOS ports that
-don't use @code{go32} (do any still exist?). Ports that don't need it
-can pass @code{NULL}.
-
-(@code{@var{flags} & PEXECUTE_SEARCH}) is non-zero if @env{PATH} should be searched
-(??? It's not clear that GCC passes this flag correctly). (@code{@var{flags} &
-PEXECUTE_FIRST}) is nonzero for the first process in chain.
-(@code{@var{flags} & PEXECUTE_FIRST}) is nonzero for the last process
-in chain. The first/last flags could be simplified to only mark the
-last of a chain of processes but that requires the caller to always
-mark the last one (and not give up early if some error occurs).
-It's more robust to require the caller to mark both ends of the chain.
-
-The result is the pid on systems like Unix where we
-@code{fork}/@code{exec} and on systems like WIN32 and OS/2 where we
-use @code{spawn}. It is up to the caller to wait for the child.
-
-The result is the @code{WEXITSTATUS} on systems like MS-DOS where we
-@code{spawn} and wait for the child here.
-
-Upon failure, @var{errmsg_fmt} and @var{errmsg_arg} are set to the
-text of the error message with an optional argument (if not needed,
-@var{errmsg_arg} is set to @code{NULL}), and @minus{}1 is returned.
-@code{errno} is available to the caller to use.
-
-@end deftypefn
-
-@deftypefn Extension int pwait (int @var{pid}, int *@var{status}, int @var{flags})
-
-Waits for a program started by @code{pexecute} to finish.
-
-@var{pid} is the process id of the task to wait for. @var{status} is
-the `status' argument to wait. @var{flags} is currently unused (allows
-future enhancement without breaking upward compatibility). Pass 0 for now.
-
-The result is the pid of the child reaped, or -1 for failure
-(@code{errno} says why).
-
-On systems that don't support waiting for a particular child, @var{pid} is
-ignored. On systems like MS-DOS that don't really multitask @code{pwait}
-is just a mechanism to provide a consistent interface for the caller.
-
-@end deftypefn
-
-@undocumented pfinish
-
- pfinish: finish generation of script
-
- pfinish is necessary for systems like MPW where a script is generated that
- runs the requested programs. */
-
-#ifdef __MSDOS__
-
-/* MSDOS doesn't multitask, but for the sake of a consistent interface
- the code behaves like it does. pexecute runs the program, tucks the
- exit code away, and returns a "pid". pwait must be called to fetch the
- exit code. */
-
-#include <process.h>
-
-/* For communicating information from pexecute to pwait. */
-static int last_pid = 0;
-static int last_status = 0;
-static int last_reaped = 0;
-
-int
-pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
- const char *program;
- char * const *argv;
- const char *this_pname;
- const char *temp_base;
- char **errmsg_fmt, **errmsg_arg;
- int flags;
-{
- int rc;
-
- last_pid++;
- if (last_pid < 0)
- last_pid = 1;
-
- if ((flags & PEXECUTE_ONE) != PEXECUTE_ONE)
- abort ();
-
-#ifdef __DJGPP__
- /* ??? What are the possible return values from spawnv? */
- rc = (flags & PEXECUTE_SEARCH ? spawnvp : spawnv) (P_WAIT, program, argv);
-#else
- char *scmd, *rf;
- FILE *argfile;
- int i, el = flags & PEXECUTE_SEARCH ? 4 : 0;
-
- if (temp_base == 0)
- temp_base = choose_temp_base ();
- scmd = (char *) xmalloc (strlen (program) + strlen (temp_base) + 6 + el);
- rf = scmd + strlen(program) + 2 + el;
- sprintf (scmd, "%s%s @%s.gp", program,
- (flags & PEXECUTE_SEARCH ? ".exe" : ""), temp_base);
- argfile = fopen (rf, "w");
- if (argfile == 0)
- {
- int errno_save = errno;
- free (scmd);
- errno = errno_save;
- *errmsg_fmt = "cannot open `%s.gp'";
- *errmsg_arg = temp_base;
- return -1;
- }
-
- for (i=1; argv[i]; i++)
- {
- char *cp;
- for (cp = argv[i]; *cp; cp++)
- {
- if (*cp == '"' || *cp == '\'' || *cp == '\\' || ISSPACE (*cp))
- fputc ('\\', argfile);
- fputc (*cp, argfile);
- }
- fputc ('\n', argfile);
- }
- fclose (argfile);
-
- rc = system (scmd);
-
- {
- int errno_save = errno;
- remove (rf);
- free (scmd);
- errno = errno_save;
- }
-#endif
-
- if (rc == -1)
- {
- *errmsg_fmt = install_error_msg;
- *errmsg_arg = (char *)program;
- return -1;
- }
-
- /* Tuck the status away for pwait, and return a "pid". */
- last_status = rc << 8;
- return last_pid;
-}
-
-/* Use ECHILD if available, otherwise use EINVAL. */
-#ifdef ECHILD
-#define PWAIT_ERROR ECHILD
-#else
-#define PWAIT_ERROR EINVAL
-#endif
-
-int
-pwait (pid, status, flags)
- int pid;
- int *status;
- int flags;
-{
- /* On MSDOS each pexecute must be followed by it's associated pwait. */
- if (pid != last_pid
- /* Called twice for the same child? */
- || pid == last_reaped)
- {
- errno = PWAIT_ERROR;
- return -1;
- }
- /* ??? Here's an opportunity to canonicalize the values in STATUS.
- Needed? */
-#ifdef __DJGPP__
- *status = (last_status >> 8);
-#else
- *status = last_status;
-#endif
- last_reaped = last_pid;
- return last_pid;
-}
-
-#endif /* MSDOS */
-
-#if defined (_WIN32) && ! defined (_UWIN)
-
-#include <process.h>
-
-#ifdef __CYGWIN__
-
-#define fix_argv(argvec) (argvec)
-
-extern int _spawnv ();
-extern int _spawnvp ();
-
-#else /* ! __CYGWIN__ */
-
-/* This is a kludge to get around the Microsoft C spawn functions' propensity
- to remove the outermost set of double quotes from all arguments. */
-
-static const char * const *
-fix_argv (argvec)
- char **argvec;
-{
- int i;
-
- for (i = 1; argvec[i] != 0; i++)
- {
- int len, j;
- char *temp, *newtemp;
-
- temp = argvec[i];
- len = strlen (temp);
- for (j = 0; j < len; j++)
- {
- if (temp[j] == '"')
- {
- newtemp = xmalloc (len + 2);
- strncpy (newtemp, temp, j);
- newtemp [j] = '\\';
- strncpy (&newtemp [j+1], &temp [j], len-j);
- newtemp [len+1] = 0;
- temp = newtemp;
- len++;
- j++;
- }
- }
-
- argvec[i] = temp;
- }
-
- for (i = 0; argvec[i] != 0; i++)
- {
- if (strpbrk (argvec[i], " \t"))
- {
- int len, trailing_backslash;
- char *temp;
-
- len = strlen (argvec[i]);
- trailing_backslash = 0;
-
- /* There is an added complication when an arg with embedded white
- space ends in a backslash (such as in the case of -iprefix arg
- passed to cpp). The resulting quoted strings gets misinterpreted
- by the command interpreter -- it thinks that the ending quote
- is escaped by the trailing backslash and things get confused.
- We handle this case by escaping the trailing backslash, provided
- it was not escaped in the first place. */
- if (len > 1
- && argvec[i][len-1] == '\\'
- && argvec[i][len-2] != '\\')
- {
- trailing_backslash = 1;
- ++len; /* to escape the final backslash. */
- }
-
- len += 2; /* and for the enclosing quotes. */
-
- temp = xmalloc (len + 1);
- temp[0] = '"';
- strcpy (temp + 1, argvec[i]);
- if (trailing_backslash)
- temp[len-2] = '\\';
- temp[len-1] = '"';
- temp[len] = '\0';
-
- argvec[i] = temp;
- }
- }
-
- return (const char * const *) argvec;
-}
-#endif /* __CYGWIN__ */
-
-#include <io.h>
-#include <fcntl.h>
-#include <signal.h>
-
-/* mingw32 headers may not define the following. */
-
-#ifndef _P_WAIT
-# define _P_WAIT 0
-# define _P_NOWAIT 1
-# define _P_OVERLAY 2
-# define _P_NOWAITO 3
-# define _P_DETACH 4
-
-# define WAIT_CHILD 0
-# define WAIT_GRANDCHILD 1
-#endif
-
-/* Win32 supports pipes */
-int
-pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
- const char *program;
- char * const *argv;
- const char *this_pname;
- const char *temp_base;
- char **errmsg_fmt, **errmsg_arg;
- int flags;
-{
- int pid;
- int pdes[2], org_stdin, org_stdout;
- int input_desc, output_desc;
- int retries, sleep_interval;
-
- /* Pipe waiting from last process, to be used as input for the next one.
- Value is STDIN_FILE_NO if no pipe is waiting
- (i.e. the next command is the first of a group). */
- static int last_pipe_input;
-
- /* If this is the first process, initialize. */
- if (flags & PEXECUTE_FIRST)
- last_pipe_input = STDIN_FILE_NO;
-
- input_desc = last_pipe_input;
-
- /* If this isn't the last process, make a pipe for its output,
- and record it as waiting to be the input to the next process. */
- if (! (flags & PEXECUTE_LAST))
- {
- if (_pipe (pdes, 256, O_BINARY) < 0)
- {
- *errmsg_fmt = "pipe";
- *errmsg_arg = NULL;
- return -1;
- }
- output_desc = pdes[WRITE_PORT];
- last_pipe_input = pdes[READ_PORT];
- }
- else
- {
- /* Last process. */
- output_desc = STDOUT_FILE_NO;
- last_pipe_input = STDIN_FILE_NO;
- }
-
- if (input_desc != STDIN_FILE_NO)
- {
- org_stdin = dup (STDIN_FILE_NO);
- dup2 (input_desc, STDIN_FILE_NO);
- close (input_desc);
- }
-
- if (output_desc != STDOUT_FILE_NO)
- {
- org_stdout = dup (STDOUT_FILE_NO);
- dup2 (output_desc, STDOUT_FILE_NO);
- close (output_desc);
- }
-
- pid = (flags & PEXECUTE_SEARCH ? _spawnvp : _spawnv)
- (_P_NOWAIT, program, fix_argv(argv));
-
- if (input_desc != STDIN_FILE_NO)
- {
- dup2 (org_stdin, STDIN_FILE_NO);
- close (org_stdin);
- }
-
- if (output_desc != STDOUT_FILE_NO)
- {
- dup2 (org_stdout, STDOUT_FILE_NO);
- close (org_stdout);
- }
-
- if (pid == -1)
- {
- *errmsg_fmt = install_error_msg;
- *errmsg_arg = program;
- return -1;
- }
-
- return pid;
-}
-
-/* MS CRTDLL doesn't return enough information in status to decide if the
- child exited due to a signal or not, rather it simply returns an
- integer with the exit code of the child; eg., if the child exited with
- an abort() call and didn't have a handler for SIGABRT, it simply returns
- with status = 3. We fix the status code to conform to the usual WIF*
- macros. Note that WIFSIGNALED will never be true under CRTDLL. */
-
-int
-pwait (pid, status, flags)
- int pid;
- int *status;
- int flags;
-{
-#ifdef __CYGWIN__
- return wait (status);
-#else
- int termstat;
-
- pid = _cwait (&termstat, pid, WAIT_CHILD);
-
- /* ??? Here's an opportunity to canonicalize the values in STATUS.
- Needed? */
-
- /* cwait returns the child process exit code in termstat.
- A value of 3 indicates that the child caught a signal, but not
- which one. Since only SIGABRT, SIGFPE and SIGINT do anything, we
- report SIGABRT. */
- if (termstat == 3)
- *status = SIGABRT;
- else
- *status = (((termstat) & 0xff) << 8);
-
- return pid;
-#endif /* __CYGWIN__ */
-}
-
-#endif /* _WIN32 && ! _UWIN */
-
-#ifdef OS2
-
-/* ??? Does OS2 have process.h? */
-extern int spawnv ();
-extern int spawnvp ();
-
-int
-pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
- const char *program;
- char * const *argv;
- const char *this_pname;
- const char *temp_base;
- char **errmsg_fmt, **errmsg_arg;
- int flags;
-{
- int pid;
-
- if ((flags & PEXECUTE_ONE) != PEXECUTE_ONE)
- abort ();
- /* ??? Presumably 1 == _P_NOWAIT. */
- pid = (flags & PEXECUTE_SEARCH ? spawnvp : spawnv) (1, program, argv);
- if (pid == -1)
- {
- *errmsg_fmt = install_error_msg;
- *errmsg_arg = program;
- return -1;
- }
- return pid;
-}
-
-int
-pwait (pid, status, flags)
- int pid;
- int *status;
- int flags;
-{
- /* ??? Here's an opportunity to canonicalize the values in STATUS.
- Needed? */
- int pid = wait (status);
- return pid;
-}
-
-#endif /* OS2 */
-
-#ifdef MPW
-
-/* MPW pexecute doesn't actually run anything; instead, it writes out
- script commands that, when run, will do the actual executing.
-
- For example, in GCC's case, GCC will write out several script commands:
-
- cpp ...
- cc1 ...
- as ...
- ld ...
-
- and then exit. None of the above programs will have run yet. The task
- that called GCC will then execute the script and cause cpp,etc. to run.
- The caller must invoke pfinish before calling exit. This adds
- the finishing touches to the generated script. */
-
-static int first_time = 1;
-
-int
-pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
- const char *program;
- char * const *argv;
- const char *this_pname;
- const char *temp_base;
- char **errmsg_fmt, **errmsg_arg;
- int flags;
-{
- char tmpprogram[255];
- char *cp, *tmpname;
- int i;
-
- mpwify_filename (program, tmpprogram);
- if (first_time)
- {
- printf ("Set Failed 0\n");
- first_time = 0;
- }
-
- fputs ("If {Failed} == 0\n", stdout);
- /* If being verbose, output a copy of the command. It should be
- accurate enough and escaped enough to be "clickable". */
- if (flags & PEXECUTE_VERBOSE)
- {
- fputs ("\tEcho ", stdout);
- fputc ('\'', stdout);
- fputs (tmpprogram, stdout);
- fputc ('\'', stdout);
- fputc (' ', stdout);
- for (i=1; argv[i]; i++)
- {
- fputc ('\'', stdout);
- /* See if we have an argument that needs fixing. */
- if (strchr(argv[i], '/'))
- {
- tmpname = (char *) xmalloc (256);
- mpwify_filename (argv[i], tmpname);
- argv[i] = tmpname;
- }
- for (cp = argv[i]; *cp; cp++)
- {
- /* Write an Option-d escape char in front of special chars. */
- if (strchr("'+", *cp))
- fputc ('\266', stdout);
- fputc (*cp, stdout);
- }
- fputc ('\'', stdout);
- fputc (' ', stdout);
- }
- fputs ("\n", stdout);
- }
- fputs ("\t", stdout);
- fputs (tmpprogram, stdout);
- fputc (' ', stdout);
-
- for (i=1; argv[i]; i++)
- {
- /* See if we have an argument that needs fixing. */
- if (strchr(argv[i], '/'))
- {
- tmpname = (char *) xmalloc (256);
- mpwify_filename (argv[i], tmpname);
- argv[i] = tmpname;
- }
- if (strchr (argv[i], ' '))
- fputc ('\'', stdout);
- for (cp = argv[i]; *cp; cp++)
- {
- /* Write an Option-d escape char in front of special chars. */
- if (strchr("'+", *cp))
- fputc ('\266', stdout);
- fputc (*cp, stdout);
- }
- if (strchr (argv[i], ' '))
- fputc ('\'', stdout);
- fputc (' ', stdout);
- }
-
- fputs ("\n", stdout);
-
- /* Output commands that arrange to clean up and exit if a failure occurs.
- We have to be careful to collect the status from the program that was
- run, rather than some other script command. Also, we don't exit
- immediately, since necessary cleanups are at the end of the script. */
- fputs ("\tSet TmpStatus {Status}\n", stdout);
- fputs ("\tIf {TmpStatus} != 0\n", stdout);
- fputs ("\t\tSet Failed {TmpStatus}\n", stdout);
- fputs ("\tEnd\n", stdout);
- fputs ("End\n", stdout);
-
- /* We're just composing a script, can't fail here. */
- return 0;
-}
-
-int
-pwait (pid, status, flags)
- int pid;
- int *status;
- int flags;
-{
- *status = 0;
- return 0;
-}
-
-/* Write out commands that will exit with the correct error code
- if something in the script failed. */
-
-void
-pfinish ()
-{
- printf ("\tExit \"{Failed}\"\n");
-}
-
-#endif /* MPW */
-
-/* include for Unix-like environments but not for Dos-like environments */
-#if ! defined (__MSDOS__) && ! defined (OS2) && ! defined (MPW) \
- && ! (defined (_WIN32) && ! defined (_UWIN))
-
-extern int execv ();
-extern int execvp ();
-
-int
-pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
- const char *program;
- char * const *argv;
- const char *this_pname;
- const char *temp_base ATTRIBUTE_UNUSED;
- char **errmsg_fmt, **errmsg_arg;
- int flags;
-{
- int (*func)() = (flags & PEXECUTE_SEARCH ? execvp : execv);
- int pid;
- int pdes[2];
- int input_desc, output_desc;
- int retries, sleep_interval;
- /* Pipe waiting from last process, to be used as input for the next one.
- Value is STDIN_FILE_NO if no pipe is waiting
- (i.e. the next command is the first of a group). */
- static int last_pipe_input;
-
- /* If this is the first process, initialize. */
- if (flags & PEXECUTE_FIRST)
- last_pipe_input = STDIN_FILE_NO;
-
- input_desc = last_pipe_input;
-
- /* If this isn't the last process, make a pipe for its output,
- and record it as waiting to be the input to the next process. */
- if (! (flags & PEXECUTE_LAST))
- {
- if (pipe (pdes) < 0)
- {
- *errmsg_fmt = "pipe";
- *errmsg_arg = NULL;
- return -1;
- }
- output_desc = pdes[WRITE_PORT];
- last_pipe_input = pdes[READ_PORT];
- }
- else
- {
- /* Last process. */
- output_desc = STDOUT_FILE_NO;
- last_pipe_input = STDIN_FILE_NO;
- }
-
- /* Fork a subprocess; wait and retry if it fails. */
- sleep_interval = 1;
- pid = -1;
- for (retries = 0; retries < 4; retries++)
- {
- pid = fork ();
- if (pid >= 0)
- break;
- sleep (sleep_interval);
- sleep_interval *= 2;
- }
-
- switch (pid)
- {
- case -1:
- *errmsg_fmt = "fork";
- *errmsg_arg = NULL;
- return -1;
-
- case 0: /* child */
- /* Move the input and output pipes into place, if necessary. */
- if (input_desc != STDIN_FILE_NO)
- {
- close (STDIN_FILE_NO);
- dup (input_desc);
- close (input_desc);
- }
- if (output_desc != STDOUT_FILE_NO)
- {
- close (STDOUT_FILE_NO);
- dup (output_desc);
- close (output_desc);
- }
-
- /* Close the parent's descs that aren't wanted here. */
- if (last_pipe_input != STDIN_FILE_NO)
- close (last_pipe_input);
-
- /* Exec the program. */
- (*func) (program, argv);
-
- fprintf (stderr, "%s: ", this_pname);
- fprintf (stderr, install_error_msg, program);
- fprintf (stderr, ": %s\n", xstrerror (errno));
- exit (-1);
- /* NOTREACHED */
- return 0;
-
- default:
- /* In the parent, after forking.
- Close the descriptors that we made for this child. */
- if (input_desc != STDIN_FILE_NO)
- close (input_desc);
- if (output_desc != STDOUT_FILE_NO)
- close (output_desc);
-
- /* Return child's process number. */
- return pid;
- }
-}
-
-int
-pwait (pid, status, flags)
- int pid;
- int *status;
- int flags ATTRIBUTE_UNUSED;
-{
- /* ??? Here's an opportunity to canonicalize the values in STATUS.
- Needed? */
-#ifdef VMS
- pid = waitpid (-1, status, 0);
-#else
- pid = wait (status);
-#endif
- return pid;
-}
-
-#endif /* ! __MSDOS__ && ! OS2 && ! MPW && ! (_WIN32 && ! _UWIN) */
diff --git a/contrib/gcc/profile.h b/contrib/gcc/profile.h
deleted file mode 100644
index 609b0d3..0000000
--- a/contrib/gcc/profile.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* profile.h - Defines data exported from profile.c to other passes.
- Copyright (C) 1998, 1999, 2000, 2001 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 2, 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, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
-
-#ifndef GCC_PROFILE_H
-#define GCC_PROFILE_H
-
-struct profile_info
- {
- /* Used by final, for allocating the proper amount of storage for the
- instrumented arc execution counts. */
-
- int count_instrumented_edges;
-
- /* Used by final, for writing correct # of instrumented edges
- in this function. */
-
- int count_edges_instrumented_now;
-
- /* Checksum of the cfg. Used for 'identification' of code.
- Used by final. */
-
- long current_function_cfg_checksum;
-
- /* Max. value of counter in program corresponding to the profile data
- for the current function. */
-
- gcov_type max_counter_in_program;
-
- /* The number of profiles merged to form the profile data for the current
- function. */
- int count_profiles_merged;
-
- };
-
-extern struct profile_info profile_info;
-
-#endif
diff --git a/contrib/gcc/ssa-ccp.c b/contrib/gcc/ssa-ccp.c
deleted file mode 100644
index 44f4921..0000000
--- a/contrib/gcc/ssa-ccp.c
+++ /dev/null
@@ -1,1219 +0,0 @@
-/* Conditional constant propagation pass for the GNU compiler.
- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
- Original framework by Daniel Berlin <dan@cgsoftware.com>
- Fleshed out and major cleanups by Jeff Law <law@redhat.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 2, 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, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
-
-/* Conditional constant propagation.
-
- References:
-
- Constant propagation with conditional branches,
- Wegman and Zadeck, ACM TOPLAS 13(2):181-210.
-
- Building an Optimizing Compiler,
- Robert Morgan, Butterworth-Heinemann, 1998, Section 8.9.
-
- Advanced Compiler Design and Implementation,
- Steven Muchnick, Morgan Kaufmann, 1997, Section 12.6
-
- The overall structure is as follows:
-
- 1. Run a simple SSA based DCE pass to remove any dead code.
- 2. Run CCP to compute what registers are known constants
- and what edges are not executable. Remove unexecutable
- edges from the CFG and simplify PHI nodes.
- 3. Replace registers with constants where possible.
- 4. Remove unreachable blocks computed in step #2.
- 5. Another simple SSA DCE pass to remove dead code exposed
- by CCP.
-
- When we exit, we are still in SSA form.
-
-
- Potential further enhancements:
-
- 1. Handle SUBREGs, STRICT_LOW_PART, etc in destinations more
- gracefully.
-
- 2. Handle insns with multiple outputs more gracefully.
-
- 3. Handle CONST_DOUBLE and symbolic constants.
-
- 4. Fold expressions after performing constant substitutions. */
-
-
-#include "config.h"
-#include "system.h"
-
-#include "rtl.h"
-#include "hard-reg-set.h"
-#include "basic-block.h"
-#include "ssa.h"
-#include "insn-config.h"
-#include "recog.h"
-#include "output.h"
-#include "errors.h"
-#include "ggc.h"
-#include "df.h"
-#include "function.h"
-
-/* Possible lattice values. */
-
-typedef enum
-{
- UNDEFINED,
- CONSTANT,
- VARYING
-} latticevalue;
-
-/* Main structure for CCP.
-
- Contains the lattice value and, if it's a constant, the constant
- value. */
-typedef struct
-{
- latticevalue lattice_val;
- rtx const_value;
-} value;
-
-/* Array of values indexed by register number. */
-static value *values;
-
-/* A bitmap to keep track of executable blocks in the CFG. */
-static sbitmap executable_blocks;
-
-/* A bitmap for all executable edges in the CFG. */
-static sbitmap executable_edges;
-
-/* Array of edges on the work list. */
-static edge *edge_info;
-
-/* We need an edge list to be able to get indexes easily. */
-static struct edge_list *edges;
-
-/* For building/following use-def and def-use chains. */
-static struct df *df_analyzer;
-
-/* Current edge we are operating on, from the worklist */
-static edge flow_edges;
-
-/* Bitmap of SSA edges which will need reexamination as their definition
- has changed. */
-static sbitmap ssa_edges;
-
-/* Simple macros to simplify code */
-#define SSA_NAME(x) REGNO (SET_DEST (x))
-#define EIE(x,y) EDGE_INDEX (edges, x, y)
-
-static void visit_phi_node PARAMS ((rtx, basic_block));
-static void visit_expression PARAMS ((rtx, basic_block));
-static void defs_to_undefined PARAMS ((rtx));
-static void defs_to_varying PARAMS ((rtx));
-static void examine_flow_edges PARAMS ((void));
-static int mark_references PARAMS ((rtx *, void *));
-static void follow_def_use_chains PARAMS ((void));
-static void optimize_unexecutable_edges PARAMS ((struct edge_list *, sbitmap));
-static void ssa_ccp_substitute_constants PARAMS ((void));
-static void ssa_ccp_df_delete_unreachable_insns PARAMS ((void));
-static void ssa_fast_dce PARAMS ((struct df *));
-
-/* Loop through the PHI_NODE's parameters for BLOCK and compare their
- lattice values to determine PHI_NODE's lattice value. */
-static void
-visit_phi_node (phi_node, block)
- rtx phi_node;
- basic_block block;
-{
- unsigned int i;
- rtx phi_node_expr = NULL;
- unsigned int phi_node_name = SSA_NAME (PATTERN (phi_node));
- latticevalue phi_node_lattice_val = UNDEFINED;
- rtx pat = PATTERN (phi_node);
- rtvec phi_vec = XVEC (SET_SRC (pat), 0);
- unsigned int num_elem = GET_NUM_ELEM (phi_vec);
-
- for (i = 0; i < num_elem; i += 2)
- {
- if (TEST_BIT (executable_edges,
- EIE (BASIC_BLOCK (INTVAL (RTVEC_ELT (phi_vec, i + 1))),
- block)))
- {
- unsigned int current_parm
- = REGNO (RTVEC_ELT (phi_vec, i));
-
- latticevalue current_parm_lattice_val
- = values[current_parm].lattice_val;
-
- /* If any node is VARYING, then new value of PHI_NODE
- is VARYING. */
- if (current_parm_lattice_val == VARYING)
- {
- phi_node_lattice_val = VARYING;
- phi_node_expr = NULL;
- break;
- }
-
- /* If we have more than one distinct constant, then the new
- value of PHI_NODE is VARYING. */
- if (current_parm_lattice_val == CONSTANT
- && phi_node_lattice_val == CONSTANT
- && values[current_parm].const_value != phi_node_expr)
- {
- phi_node_lattice_val = VARYING;
- phi_node_expr = NULL;
- break;
- }
-
- /* If the current value of PHI_NODE is UNDEFINED and one
- node in PHI_NODE is CONSTANT, then the new value of the
- PHI is that CONSTANT. Note this can turn into VARYING
- if we find another distinct constant later. */
- if (phi_node_lattice_val == UNDEFINED
- && phi_node_expr == NULL
- && current_parm_lattice_val == CONSTANT)
- {
- phi_node_expr = values[current_parm].const_value;
- phi_node_lattice_val = CONSTANT;
- continue;
- }
- }
- }
-
- /* If the value of PHI_NODE changed, then we will need to
- re-execute uses of the output of PHI_NODE. */
- if (phi_node_lattice_val != values[phi_node_name].lattice_val)
- {
- values[phi_node_name].lattice_val = phi_node_lattice_val;
- values[phi_node_name].const_value = phi_node_expr;
- SET_BIT (ssa_edges, phi_node_name);
- }
-}
-
-/* Sets all defs in an insn to UNDEFINED. */
-static void
-defs_to_undefined (insn)
- rtx insn;
-{
- struct df_link *currdef;
- for (currdef = DF_INSN_DEFS (df_analyzer, insn); currdef;
- currdef = currdef->next)
- {
- if (values[DF_REF_REGNO (currdef->ref)].lattice_val != UNDEFINED)
- SET_BIT (ssa_edges, DF_REF_REGNO (currdef->ref));
- values[DF_REF_REGNO (currdef->ref)].lattice_val = UNDEFINED;
- }
-}
-
-/* Sets all defs in an insn to VARYING. */
-static void
-defs_to_varying (insn)
- rtx insn;
-{
- struct df_link *currdef;
- for (currdef = DF_INSN_DEFS (df_analyzer, insn); currdef;
- currdef = currdef->next)
- {
- if (values[DF_REF_REGNO (currdef->ref)].lattice_val != VARYING)
- SET_BIT (ssa_edges, DF_REF_REGNO (currdef->ref));
- values[DF_REF_REGNO (currdef->ref)].lattice_val = VARYING;
- }
-}
-
-/* Go through the expression, call the appropriate evaluation routines
- to attempt cprop */
-static void
-visit_expression (insn, block)
- rtx insn;
- basic_block block;
-{
- rtx src, dest, set;
-
-
- /* Ugh. CALL_INSNs may end a basic block and have multiple edges
- leading out from them.
-
- Mark all the outgoing edges as executable, then fall into the
- normal processing below. */
- if (GET_CODE (insn) == CALL_INSN && block->end == insn)
- {
- edge curredge;
-
- for (curredge = block->succ; curredge;
- curredge = curredge->succ_next)
- {
- int index = EIE (curredge->src, curredge->dest);
-
- if (TEST_BIT (executable_edges, index))
- continue;
-
- SET_BIT (executable_edges, index);
- edge_info[index] = flow_edges;
- flow_edges = curredge;
- }
- }
-
- set = single_set (insn);
- if (! set)
- {
- defs_to_varying (insn);
- return;
- }
-
- src = SET_SRC (set);
- dest = SET_DEST (set);
-
- /* We may want to refine this some day. */
- if (GET_CODE (dest) != REG && dest != pc_rtx)
- {
- defs_to_varying (insn);
- return;
- }
-
- /* Hard registers are not put in SSA form and thus we must consider
- them varying. All the more reason to avoid hard registers in
- RTL until as late as possible in the compilation. */
- if (GET_CODE (dest) == REG && REGNO (dest) < FIRST_PSEUDO_REGISTER)
- {
- defs_to_varying (insn);
- return;
- }
-
- /* If this is assigning DEST to a constant, record that fact. */
- if (GET_CODE (src) == CONST_INT && GET_CODE (insn) == INSN)
- {
- unsigned int resultreg = REGNO (dest);
-
- values[resultreg].lattice_val = CONSTANT;
- values[resultreg].const_value = SET_SRC (PATTERN (insn));
- SET_BIT (ssa_edges, resultreg);
- }
-
- /* If this is a copy operation, then we can copy the lattice values. */
- else if (GET_CODE (src) == REG && GET_CODE (dest) == REG)
- {
- unsigned int old_value = REGNO (src);
- latticevalue old_lattice_value = values[old_value].lattice_val;
- unsigned int new_value = REGNO (dest);
-
- /* Unless the lattice value is going to change, don't bother
- adding the "new value" into the worklist. */
- if (values[new_value].lattice_val != old_lattice_value
- || values[new_value].const_value != values[old_value].const_value)
- SET_BIT (ssa_edges, new_value);
-
- /* Copy the old lattice node info into the new value lattice node. */
- values[new_value].lattice_val = old_lattice_value;
- values[new_value].const_value = values[old_value].const_value;
- }
-
- /* Handle jumps. */
- else if (GET_CODE (insn) == JUMP_INSN)
- {
- rtx x = pc_set (insn);
- if (GET_CODE (src) != IF_THEN_ELSE)
- {
- edge curredge;
-
- /* This is a computed jump, table jump, or an unconditional
- jump. For all these cases we want to mark all successor
- blocks as executable if they have not already been
- marked.
-
- One day we may try do better with swtich tables and
- other computed jumps. */
- for (curredge = block->succ; curredge;
- curredge = curredge->succ_next)
- {
- int index = EIE (curredge->src, curredge->dest);
-
- if (TEST_BIT (executable_edges, index))
- continue;
-
- SET_BIT (executable_edges, index);
- edge_info[index] = flow_edges;
- flow_edges = curredge;
- }
- }
- else
- {
- edge curredge;
- enum rtx_code comparison_code;
- rtx comparison_src0;
- rtx comparison_src1;
-
- comparison_code = GET_CODE (XEXP (src, 0));
- comparison_src0 = XEXP (XEXP (src, 0), 0);
- comparison_src1 = XEXP (XEXP (src, 0), 1);
-
- /* If either operand is undefined, then there is nothing to
- do right now. If/when operands are later defined we will
- revaluate the condition and take the appropriate action. */
- if ((GET_CODE (comparison_src0) == REG
- && values[REGNO (comparison_src0)].lattice_val == UNDEFINED)
- || (GET_CODE (comparison_src1) == REG
- && values[REGNO (comparison_src1)].lattice_val == UNDEFINED))
- return;
-
- /* If either operand is varying, then we must consider all
- paths as executable. */
- if ((GET_CODE (comparison_src0) == REG
- && values[REGNO (comparison_src0)].lattice_val == VARYING)
- || (GET_CODE (comparison_src1) == REG
- && values[REGNO (comparison_src1)].lattice_val == VARYING))
- {
- for (curredge = block->succ; curredge;
- curredge = curredge->succ_next)
- {
- int index = EIE (curredge->src, curredge->dest);
-
- if (TEST_BIT (executable_edges, index))
- continue;
-
- SET_BIT (executable_edges, index);
- edge_info[index] = flow_edges;
- flow_edges = curredge;
- }
- return;
- }
-
- /* Try to simplify the comparison. */
- if (GET_CODE (comparison_src0) == REG
- && values[REGNO (comparison_src0)].lattice_val == CONSTANT)
- comparison_src0 = values[REGNO (comparison_src0)].const_value;
-
- if (GET_CODE (comparison_src1) == REG
- && values[REGNO (comparison_src1)].lattice_val == CONSTANT)
- comparison_src1 = values[REGNO (comparison_src1)].const_value;
-
- x = simplify_ternary_operation (IF_THEN_ELSE,
- VOIDmode,
- GET_MODE (XEXP (src, 0)),
- gen_rtx (comparison_code,
- GET_MODE (XEXP (src, 0)),
- comparison_src0,
- comparison_src1),
- XEXP (src, 1),
- XEXP (src, 2));
-
- /* Walk through all the outgoing edges from this block and see
- which (if any) we should mark as executable. */
- for (curredge = block->succ; curredge;
- curredge = curredge->succ_next)
- {
- int index = EIE (curredge->src, curredge->dest);
-
- if (TEST_BIT (executable_edges, index))
- continue;
-
- /* If we were unable to simplify the expression at this
- point, it's highly unlikely we'll be able to simplify
- it later. So consider all edges as executable if the
- expression did not simplify.
-
- If the expression simplified to (pc), then we know we
- will take the fall-thru edge, so mark it. Similarly,
- if the expression simplified to (label_ref ...), then
- we know the branch will be taken and we mark that
- edge as taken. */
- if (!x
- || (x == pc_rtx
- && (curredge->flags & EDGE_FALLTHRU))
- || (GET_CODE (x) == LABEL_REF
- && ! (curredge->flags & EDGE_FALLTHRU)))
- {
- SET_BIT (executable_edges, index);
- edge_info[index] = flow_edges;
- flow_edges = curredge;
- }
- }
- }
- }
- else if (!PHI_NODE_P (insn))
- {
- rtx simplified = NULL;
-
- /* We've got some kind of INSN. If it's simple, try to evaluate
- it and record the results.
-
- We already know this insn is a single_set and that it sets
- a pseudo register. So we just need to extract the source
- arguments, simplify them to constants if possible, then
- simplify the expression as a whole if possible. */
- switch (GET_RTX_CLASS (GET_CODE (src)))
- {
- case '<':
- {
- rtx src0 = XEXP (src, 0);
- rtx src1 = XEXP (src, 1);
- enum machine_mode mode;
-
- /* If either is undefined, then the result is undefined. */
- if ((GET_CODE (src0) == REG
- && values[REGNO (src0)].lattice_val == UNDEFINED)
- || (GET_CODE (src1) == REG
- && values[REGNO (src1)].lattice_val == UNDEFINED))
- {
- defs_to_undefined (insn);
- break;
- }
-
- /* Determine the mode for the operation before we simplify
- our arguments to constants. */
- mode = GET_MODE (src0);
- if (mode == VOIDmode)
- mode = GET_MODE (src1);
-
- /* Simplify source operands to whatever known values they
- may have. */
- if (GET_CODE (src0) == REG
- && values[REGNO (src0)].lattice_val == CONSTANT)
- src0 = values[REGNO (src0)].const_value;
-
- if (GET_CODE (src1) == REG
- && values[REGNO (src1)].lattice_val == CONSTANT)
- src1 = values[REGNO (src1)].const_value;
-
- /* See if the simplifier can determine if this operation
- computes a constant value. */
- simplified = simplify_relational_operation (GET_CODE (src),
- mode, src0, src1);
- break;
-
- }
-
- case '1':
- {
- rtx src0 = XEXP (src, 0);
- enum machine_mode mode0 = GET_MODE (src0);
-
- /* If the operand is undefined, then the result is undefined. */
- if (GET_CODE (src0) == REG
- && values[REGNO (src0)].lattice_val == UNDEFINED)
- {
- defs_to_undefined (insn);
- break;
- }
-
- /* Simplify source operands to whatever known values they
- may have. */
- if (GET_CODE (src0) == REG
- && values[REGNO (src0)].lattice_val == CONSTANT)
- src0 = values[REGNO (src0)].const_value;
-
- /* See if the simplifier can determine if this operation
- computes a constant value. */
- simplified = simplify_unary_operation (GET_CODE (src),
- GET_MODE (src),
- src0,
- mode0);
- break;
- }
-
- case '2':
- case 'c':
- {
- rtx src0 = XEXP (src, 0);
- rtx src1 = XEXP (src, 1);
-
- /* If either is undefined, then the result is undefined. */
- if ((GET_CODE (src0) == REG
- && values[REGNO (src0)].lattice_val == UNDEFINED)
- || (GET_CODE (src1) == REG
- && values[REGNO (src1)].lattice_val == UNDEFINED))
- {
- defs_to_undefined (insn);
- break;
- }
-
- /* Simplify source operands to whatever known values they
- may have. */
- if (GET_CODE (src0) == REG
- && values[REGNO (src0)].lattice_val == CONSTANT)
- src0 = values[REGNO (src0)].const_value;
-
- if (GET_CODE (src1) == REG
- && values[REGNO (src1)].lattice_val == CONSTANT)
- src1 = values[REGNO (src1)].const_value;
-
- /* See if the simplifier can determine if this operation
- computes a constant value. */
- simplified = simplify_binary_operation (GET_CODE (src),
- GET_MODE (src),
- src0, src1);
- break;
- }
-
- case '3':
- case 'b':
- {
- rtx src0 = XEXP (src, 0);
- rtx src1 = XEXP (src, 1);
- rtx src2 = XEXP (src, 2);
-
- /* If either is undefined, then the result is undefined. */
- if ((GET_CODE (src0) == REG
- && values[REGNO (src0)].lattice_val == UNDEFINED)
- || (GET_CODE (src1) == REG
- && values[REGNO (src1)].lattice_val == UNDEFINED)
- || (GET_CODE (src2) == REG
- && values[REGNO (src2)].lattice_val == UNDEFINED))
- {
- defs_to_undefined (insn);
- break;
- }
-
- /* Simplify source operands to whatever known values they
- may have. */
- if (GET_CODE (src0) == REG
- && values[REGNO (src0)].lattice_val == CONSTANT)
- src0 = values[REGNO (src0)].const_value;
-
- if (GET_CODE (src1) == REG
- && values[REGNO (src1)].lattice_val == CONSTANT)
- src1 = values[REGNO (src1)].const_value;
-
- if (GET_CODE (src2) == REG
- && values[REGNO (src2)].lattice_val == CONSTANT)
- src2 = values[REGNO (src2)].const_value;
-
- /* See if the simplifier can determine if this operation
- computes a constant value. */
- simplified = simplify_ternary_operation (GET_CODE (src),
- GET_MODE (src),
- GET_MODE (src),
- src0, src1, src2);
- break;
- }
-
- default:
- defs_to_varying (insn);
- }
-
- if (simplified && GET_CODE (simplified) == CONST_INT)
- {
- if (values[REGNO (dest)].lattice_val != CONSTANT
- || values[REGNO (dest)].const_value != simplified)
- SET_BIT (ssa_edges, REGNO (dest));
-
- values[REGNO (dest)].lattice_val = CONSTANT;
- values[REGNO (dest)].const_value = simplified;
- }
- else
- defs_to_varying (insn);
- }
-}
-
-/* Iterate over the FLOW_EDGES work list. Simulate the target block
- for each edge. */
-static void
-examine_flow_edges ()
-{
- while (flow_edges != NULL)
- {
- basic_block succ_block;
- rtx curr_phi_node;
-
- /* Pull the next block to simulate off the worklist. */
- succ_block = flow_edges->dest;
- flow_edges = edge_info[EIE (flow_edges->src, flow_edges->dest)];
-
- /* There is nothing to do for the exit block. */
- if (succ_block == EXIT_BLOCK_PTR)
- continue;
-
- /* Always simulate PHI nodes, even if we have simulated this block
- before. Note that all PHI nodes are consecutive within a block. */
- for (curr_phi_node = first_insn_after_basic_block_note (succ_block);
- PHI_NODE_P (curr_phi_node);
- curr_phi_node = NEXT_INSN (curr_phi_node))
- visit_phi_node (curr_phi_node, succ_block);
-
- /* If this is the first time we've simulated this block, then we
- must simulate each of its insns. */
- if (!TEST_BIT (executable_blocks, succ_block->index))
- {
- rtx currinsn;
- edge succ_edge = succ_block->succ;
-
- /* Note that we have simulated this block. */
- SET_BIT (executable_blocks, succ_block->index);
-
- /* Simulate each insn within the block. */
- currinsn = succ_block->head;
- while (currinsn != succ_block->end)
- {
- if (INSN_P (currinsn))
- visit_expression (currinsn, succ_block);
-
- currinsn = NEXT_INSN (currinsn);
- }
-
- /* Don't forget the last insn in the block. */
- if (INSN_P (currinsn))
- visit_expression (currinsn, succ_block);
-
- /* If we haven't looked at the next block, and it has a
- single successor, add it onto the worklist. This is because
- if we only have one successor, we know it gets executed,
- so we don't have to wait for cprop to tell us. */
- if (succ_edge != NULL
- && succ_edge->succ_next == NULL
- && !TEST_BIT (executable_edges,
- EIE (succ_edge->src, succ_edge->dest)))
- {
- SET_BIT (executable_edges,
- EIE (succ_edge->src, succ_edge->dest));
- edge_info[EIE (succ_edge->src, succ_edge->dest)] = flow_edges;
- flow_edges = succ_edge;
- }
- }
- }
-}
-
-/* Follow the def-use chains for each definition on the worklist and
- simulate the uses of the definition. */
-
-static void
-follow_def_use_chains ()
-{
- /* Iterate over all the entries on the SSA_EDGES worklist. */
- while (sbitmap_first_set_bit (ssa_edges) >= 0)
- {
- int member;
- struct df_link *curruse;
-
- /* Pick an entry off the worklist (it does not matter which
- entry we pick). */
- member = sbitmap_first_set_bit (ssa_edges);
- RESET_BIT (ssa_edges, member);
-
- /* Iterate through all the uses of this entry. */
- for (curruse = df_analyzer->regs[member].uses; curruse;
- curruse = curruse->next)
- {
- rtx useinsn;
-
- useinsn = DF_REF_INSN (curruse->ref);
- if (PHI_NODE_P (useinsn))
- {
- if (TEST_BIT (executable_blocks, BLOCK_NUM (useinsn)))
- visit_phi_node (useinsn, BLOCK_FOR_INSN (useinsn));
- }
- else
- {
- if (TEST_BIT (executable_blocks, BLOCK_NUM (useinsn)))
- visit_expression (useinsn, BLOCK_FOR_INSN (useinsn));
- }
- }
- }
-}
-
-/* Examine each edge to see if we were able to prove any were
- not executable.
-
- If an edge is not executable, then we can remove its alternative
- in PHI nodes as the destination of the edge, we can simplify the
- conditional branch at the source of the edge, and we can remove
- the edge from the CFG. Note we do not delete unreachable blocks
- yet as the DF analyzer can not deal with that yet. */
-static void
-optimize_unexecutable_edges (edges, executable_edges)
- struct edge_list *edges;
- sbitmap executable_edges;
-{
- int i;
- basic_block bb;
-
- for (i = 0; i < NUM_EDGES (edges); i++)
- {
- if (!TEST_BIT (executable_edges, i))
- {
- edge edge = INDEX_EDGE (edges, i);
-
- if (edge->flags & EDGE_ABNORMAL)
- continue;
-
- /* We found an edge that is not executable. First simplify
- the PHI nodes in the target block. */
- if (edge->dest != EXIT_BLOCK_PTR)
- {
- rtx insn = first_insn_after_basic_block_note (edge->dest);
-
- while (PHI_NODE_P (insn))
- {
- remove_phi_alternative (PATTERN (insn), edge->src);
- if (rtl_dump_file)
- fprintf (rtl_dump_file,
- "Removing alternative for bb %d of phi %d\n",
- edge->src->index, SSA_NAME (PATTERN (insn)));
- insn = NEXT_INSN (insn);
- }
- }
- if (rtl_dump_file)
- fprintf (rtl_dump_file,
- "Removing unexecutable edge from %d to %d\n",
- edge->src->index, edge->dest->index);
- /* Since the edge was not executable, remove it from the CFG. */
- remove_edge (edge);
- }
- }
-
- /* We have removed all the unexecutable edges from the CFG. Fix up
- the conditional jumps at the end of any affected block.
-
- We have three cases to deal with:
-
- a. Both outgoing edges are not executable. This happens if the
- source block is not reachable. We will deal with this by
- deleting all the insns in the block later.
-
- b. The fall-thru edge is not executable. In this case we
- change the conditional jump into an unconditional jump and
- add a BARRIER after the unconditional jump. Note that since
- we are working on generic RTL we can change the jump in-place
- instead of dealing with the headache of reemitting the jump.
-
- c. The branch taken edge is not executable. In this case
- we turn the jump into (set (pc) (pc)) which is a nop-jump
- and we will remove the unrecognizable insn later.
-
- In cases B & C we are removing uses of registers, so make sure
- to note those changes for the DF analyzer. */
-
- FOR_EACH_BB (bb)
- {
- rtx insn = bb->end;
- edge edge = bb->succ;
-
- /* If we have no predecessors, then this block is unreachable and
- will be cleaned up when we remove unreachable blocks. */
- if (bb->pred == NULL || GET_CODE (insn) != JUMP_INSN)
- continue;
-
- /* If this block ends in a conditional jump, but only has one
- successor, then the jump needs adjustment. */
- if (condjump_p (insn) && ! simplejump_p (insn)
- && bb->succ && bb->succ->succ_next == NULL)
- {
- /* If the fallthru edge is the executable edge, then turn
- this jump into a nop jump, otherwise make it an unconditinoal
- jump to its target. */
- if (edge->flags & EDGE_FALLTHRU)
- {
- PUT_CODE (insn, NOTE);
- NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
- }
- else
- {
- SET_SRC (PATTERN (insn)) = gen_rtx_LABEL_REF (Pmode,
- JUMP_LABEL (insn));
- emit_barrier_after (insn);
- INSN_CODE (insn) = -1;
- }
-
- /* Inform the DF analyzer that this insn changed. */
- df_insn_modify (df_analyzer, BLOCK_FOR_INSN (insn), insn);
- }
- }
-}
-
-/* Perform substitution of known values for pseudo registers.
-
- ??? Note we do not do simplifications or constant folding here, it
- is unlikely that any significant simplifications can be done here
- anyway. Consider that if the simplification would result in an
- expression that produces a constant value that the value would
- have been discovered and recorded already.
-
- We perform two transformations. First, we initialize pseudos to their
- known constant values at their definition point. Second, we try to
- replace uses with the known constant value. */
-
-static void
-ssa_ccp_substitute_constants ()
-{
- unsigned int i;
-
- for (i = FIRST_PSEUDO_REGISTER; i < VARRAY_SIZE (ssa_definition); i++)
- {
- if (values[i].lattice_val == CONSTANT)
- {
- rtx def = VARRAY_RTX (ssa_definition, i);
- rtx set = single_set (def);
- struct df_link *curruse;
-
- if (! set)
- continue;
-
- /* Do not try to simplify PHI nodes down to a constant load.
- That will be done later as we translate out of SSA. Also,
- doing that here could violate the rule that all PHI nodes
- are consecutive at the start of the basic block.
-
- Don't do anything to nodes that were already sets to
- constants. */
- if (! PHI_NODE_P (def)
- && ! ((GET_CODE (def) == INSN
- && GET_CODE (SET_SRC (set)) == CONST_INT)))
- {
- if (rtl_dump_file)
- fprintf (rtl_dump_file,
- "Register %d is now set to a constant\n",
- SSA_NAME (PATTERN (def)));
- SET_SRC (set) = values[i].const_value;
- INSN_CODE (def) = -1;
- df_insn_modify (df_analyzer, BLOCK_FOR_INSN (def), def);
- }
-
- /* Iterate through all the uses of this entry and try replacements
- there too. Note it is not particularly profitable to try
- and fold/simplify expressions here as most of the common
- cases were handled above. */
- for (curruse = df_analyzer->regs[i].uses;
- curruse;
- curruse = curruse->next)
- {
- rtx useinsn;
-
- useinsn = DF_REF_INSN (curruse->ref);
-
- if (!INSN_DELETED_P (useinsn)
- && ! (GET_CODE (useinsn) == NOTE
- && NOTE_LINE_NUMBER (useinsn) == NOTE_INSN_DELETED)
- && (GET_CODE (useinsn) == INSN
- || GET_CODE (useinsn) == JUMP_INSN))
- {
-
- if (validate_replace_src (regno_reg_rtx [i],
- values[i].const_value,
- useinsn))
- {
- if (rtl_dump_file)
- fprintf (rtl_dump_file,
- "Register %d in insn %d replaced with constant\n",
- i, INSN_UID (useinsn));
- INSN_CODE (useinsn) = -1;
- df_insn_modify (df_analyzer,
- BLOCK_FOR_INSN (useinsn),
- useinsn);
- }
-
- }
- }
- }
- }
-}
-
-/* Now find all unreachable basic blocks. All the insns in those
- blocks are unreachable, so delete them and mark any necessary
- updates for the DF analyzer. */
-
-static void
-ssa_ccp_df_delete_unreachable_insns ()
-{
- basic_block b;
-
- /* Use the CFG to find all the reachable blocks. */
- find_unreachable_blocks ();
-
- /* Now we know what blocks are not reachable. Mark all the insns
- in those blocks as deleted for the DF analyzer. We'll let the
- normal flow code actually remove the unreachable blocks. */
- FOR_EACH_BB_REVERSE (b)
- {
- if (!(b->flags & BB_REACHABLE))
- {
- rtx start = b->head;
- rtx end = b->end;
- rtx tmp;
-
- /* Include any jump table following the basic block. */
- end = b->end;
- if (GET_CODE (end) == JUMP_INSN
- && (tmp = JUMP_LABEL (end)) != NULL_RTX
- && (tmp = NEXT_INSN (tmp)) != NULL_RTX
- && GET_CODE (tmp) == JUMP_INSN
- && (GET_CODE (PATTERN (tmp)) == ADDR_VEC
- || GET_CODE (PATTERN (tmp)) == ADDR_DIFF_VEC))
- end = tmp;
-
- while (1)
- {
- rtx next = NEXT_INSN (start);
-
- if (GET_CODE (start) == INSN
- || GET_CODE (start) == CALL_INSN
- || GET_CODE (start) == JUMP_INSN)
- df_insn_delete (df_analyzer, BLOCK_FOR_INSN (start), start);
-
- if (start == end)
- break;
- start = next;
- }
- }
- }
-}
-
-
-/* Main entry point for SSA Conditional Constant Propagation.
-
- Long term it should accept as input the specific flow graph to
- operate on so that it can be called for sub-graphs. */
-
-void
-ssa_const_prop ()
-{
- unsigned int i;
- edge curredge;
-
- /* We need alias analysis (for what?) */
- init_alias_analysis ();
-
- df_analyzer = df_init ();
- df_analyse (df_analyzer, 0,
- DF_RD_CHAIN | DF_RU_CHAIN | DF_REG_INFO | DF_HARD_REGS);
-
- /* Perform a quick and dirty dead code elimination pass. This is not
- as aggressive as it could be, but it's good enough to clean up a
- lot of unwanted junk and it is fast. */
- ssa_fast_dce (df_analyzer);
-
- /* Build an edge list from the CFG. */
- edges = create_edge_list ();
-
- /* Initialize the values array with everything as undefined. */
- values = (value *) xmalloc (VARRAY_SIZE (ssa_definition) * sizeof (value));
- for (i = 0; i < VARRAY_SIZE (ssa_definition); i++)
- {
- if (i < FIRST_PSEUDO_REGISTER)
- values[i].lattice_val = VARYING;
- else
- values[i].lattice_val = UNDEFINED;
- values[i].const_value = NULL;
- }
-
- ssa_edges = sbitmap_alloc (VARRAY_SIZE (ssa_definition));
- sbitmap_zero (ssa_edges);
-
- executable_blocks = sbitmap_alloc (last_basic_block);
- sbitmap_zero (executable_blocks);
-
- executable_edges = sbitmap_alloc (NUM_EDGES (edges));
- sbitmap_zero (executable_edges);
-
- edge_info = (edge *) xmalloc (NUM_EDGES (edges) * sizeof (edge));
- flow_edges = ENTRY_BLOCK_PTR->succ;
-
- /* Add the successors of the entry block to the edge worklist. That
- is enough of a seed to get SSA-CCP started. */
- for (curredge = ENTRY_BLOCK_PTR->succ; curredge;
- curredge = curredge->succ_next)
- {
- int index = EIE (curredge->src, curredge->dest);
- SET_BIT (executable_edges, index);
- edge_info[index] = curredge->succ_next;
- }
-
- /* Iterate until until the worklists are empty. */
- do
- {
- examine_flow_edges ();
- follow_def_use_chains ();
- }
- while (flow_edges != NULL);
-
- /* Now perform substitutions based on the known constant values. */
- ssa_ccp_substitute_constants ();
-
- /* Remove unexecutable edges from the CFG and make appropriate
- adjustments to PHI nodes. */
- optimize_unexecutable_edges (edges, executable_edges);
-
- /* Now remove all unreachable insns and update the DF information.
- as appropriate. */
- ssa_ccp_df_delete_unreachable_insns ();
-
-#if 0
- /* The DF analyzer expects the number of blocks to remain constant,
- so we can't remove unreachable blocks.
-
- Code the DF analyzer calls expects there to be no unreachable
- blocks in the CFG. So we can't leave unreachable blocks in the
- CFG.
-
- So, there is no way to do an incremental update of the DF data
- at this point. */
- df_analyse (df_analyzer, 0,
- DF_RD_CHAIN | DF_RU_CHAIN | DF_REG_INFO | DF_HARD_REGS);
-#endif
-
- /* Clean up any dead code exposed by SSA-CCP, do this after updating
- the dataflow information! */
- ssa_fast_dce (df_analyzer);
-
- free (values);
- values = NULL;
-
- free (edge_info);
- edge_info = NULL;
-
- sbitmap_free (executable_blocks);
- executable_blocks = NULL;
-
- sbitmap_free (ssa_edges);
- ssa_edges = NULL;
-
- free_edge_list (edges);
- edges = NULL;
-
- sbitmap_free (executable_edges);
- executable_edges = NULL;
-
- df_finish (df_analyzer);
- end_alias_analysis ();
-}
-
-static int
-mark_references (current_rtx, data)
- rtx *current_rtx;
- void *data;
-{
- rtx x = *current_rtx;
- sbitmap worklist = (sbitmap) data;
-
- if (x == NULL_RTX)
- return 0;
-
- if (GET_CODE (x) == SET)
- {
- rtx dest = SET_DEST (x);
-
- if (GET_CODE (dest) == STRICT_LOW_PART
- || GET_CODE (dest) == SUBREG
- || GET_CODE (dest) == SIGN_EXTRACT
- || GET_CODE (dest) == ZERO_EXTRACT)
- {
- rtx reg;
-
- reg = dest;
-
- while (GET_CODE (reg) == STRICT_LOW_PART
- || GET_CODE (reg) == SUBREG
- || GET_CODE (reg) == SIGN_EXTRACT
- || GET_CODE (reg) == ZERO_EXTRACT)
- reg = XEXP (reg, 0);
-
- if (GET_CODE (reg) == REG)
- SET_BIT (worklist, REGNO (reg));
- }
-
- if (GET_CODE (dest) == REG)
- {
- for_each_rtx (&SET_SRC (x), mark_references, data);
- return -1;
- }
-
- return 0;
- }
- else if (GET_CODE (x) == REG)
- {
- SET_BIT (worklist, REGNO (x));
- return -1;
- }
- else if (GET_CODE (x) == CLOBBER)
- return -1;
- else
- return 0;
-}
-
-static void
-ssa_fast_dce (df)
- struct df *df;
-{
- sbitmap worklist = sbitmap_alloc (VARRAY_SIZE (ssa_definition));
- sbitmap_ones (worklist);
-
- /* Iterate on the worklist until there's no definitions left to
- examine. */
- while (sbitmap_first_set_bit (worklist) >= 0)
- {
- struct df_link *curruse;
- int reg, found_use;
-
- /* Remove an item from the worklist. */
- reg = sbitmap_first_set_bit (worklist);
- RESET_BIT (worklist, reg);
-
- /* We never consider deleting assignments to hard regs or things
- which do not have SSA definitions, or things we have already
- deleted, or things with unusual side effects. */
- if (reg < FIRST_PSEUDO_REGISTER
- || ! VARRAY_RTX (ssa_definition, reg)
- || INSN_DELETED_P (VARRAY_RTX (ssa_definition, reg))
- || (GET_CODE (VARRAY_RTX (ssa_definition, reg)) == NOTE
- && (NOTE_LINE_NUMBER (VARRAY_RTX (ssa_definition, reg))
- == NOTE_INSN_DELETED))
- || side_effects_p (PATTERN (VARRAY_RTX (ssa_definition, reg))))
- continue;
-
- /* Iterate over the uses of this register. If we can not find
- any uses that have not been deleted, then the definition of
- this register is dead. */
- found_use = 0;
- for (curruse = df->regs[reg].uses; curruse; curruse = curruse->next)
- {
- if (curruse->ref
- && DF_REF_INSN (curruse->ref)
- && ! INSN_DELETED_P (DF_REF_INSN (curruse->ref))
- && ! (GET_CODE (DF_REF_INSN (curruse->ref)) == NOTE
- && (NOTE_LINE_NUMBER (DF_REF_INSN (curruse->ref))
- == NOTE_INSN_DELETED))
- && DF_REF_INSN (curruse->ref) != VARRAY_RTX (ssa_definition, reg))
- {
- found_use = 1;
- break;
- }
- }
-
- /* If we did not find a use of this register, then the definition
- of this register is dead. */
-
- if (! found_use)
- {
- rtx def = VARRAY_RTX (ssa_definition, reg);
-
- /* Add all registers referenced by INSN to the work
- list. */
- for_each_rtx (&PATTERN (def), mark_references, worklist);
-
- /* Inform the analyzer that this insn is going to be
- deleted. */
- df_insn_delete (df, BLOCK_FOR_INSN (def), def);
-
- VARRAY_RTX (ssa_definition, reg) = NULL;
- }
- }
-
- sbitmap_free (worklist);
-
- /* Update the use-def chains in the df_analyzer as needed. */
- df_analyse (df_analyzer, 0,
- DF_RD_CHAIN | DF_RU_CHAIN | DF_REG_INFO | DF_HARD_REGS);
-}
diff --git a/contrib/gcc/ssa-dce.c b/contrib/gcc/ssa-dce.c
deleted file mode 100644
index 09fcc7a..0000000
--- a/contrib/gcc/ssa-dce.c
+++ /dev/null
@@ -1,733 +0,0 @@
-/* Dead-code elimination pass for the GNU compiler.
- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
- Written by Jeffrey D. Oldham <oldham@codesourcery.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 2, 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, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
-
-/* Dead-code elimination is the removal of instructions which have no
- impact on the program's output. "Dead instructions" have no impact
- on the program's output, while "necessary instructions" may have
- impact on the output.
-
- The algorithm consists of three phases:
- 1) marking as necessary all instructions known to be necessary,
- e.g., writing a value to memory,
- 2) propagating necessary instructions, e.g., the instructions
- giving values to operands in necessary instructions, and
- 3) removing dead instructions (except replacing dead conditionals
- with unconditional jumps).
-
- Side Effects:
- The last step can require adding labels, deleting insns, and
- modifying basic block structures. Some conditional jumps may be
- converted to unconditional jumps so the control-flow graph may be
- out-of-date.
-
- Edges from some infinite loops to the exit block can be added to
- the control-flow graph, but will be removed after this pass is
- complete.
-
- It Does Not Perform:
- We decided to not simultaneously perform jump optimization and dead
- loop removal during dead-code elimination. Thus, all jump
- instructions originally present remain after dead-code elimination
- but 1) unnecessary conditional jump instructions are changed to
- unconditional jump instructions and 2) all unconditional jump
- instructions remain.
-
- Assumptions:
- 1) SSA has been performed.
- 2) The basic block and control-flow graph structures are accurate.
- 3) The flow graph permits constructing an edge_list.
- 4) note rtxes should be saved.
-
- Unfinished:
- When replacing unnecessary conditional jumps with unconditional
- jumps, the control-flow graph is not updated. It should be.
-
- References:
- Building an Optimizing Compiler
- Robert Morgan
- Butterworth-Heinemann, 1998
- Section 8.9
-*/
-
-#include "config.h"
-#include "system.h"
-
-#include "rtl.h"
-#include "hard-reg-set.h"
-#include "basic-block.h"
-#include "ssa.h"
-#include "insn-config.h"
-#include "recog.h"
-#include "output.h"
-
-
-/* A map from blocks to the edges on which they are control dependent. */
-typedef struct {
- /* An dynamically allocated array. The Nth element corresponds to
- the block with index N + 2. The Ith bit in the bitmap is set if
- that block is dependent on the Ith edge. */
- bitmap *data;
- /* The number of elements in the array. */
- int length;
-} control_dependent_block_to_edge_map_s, *control_dependent_block_to_edge_map;
-
-/* Local function prototypes. */
-static control_dependent_block_to_edge_map control_dependent_block_to_edge_map_create
- PARAMS((size_t num_basic_blocks));
-static void set_control_dependent_block_to_edge_map_bit
- PARAMS ((control_dependent_block_to_edge_map c, basic_block bb,
- int edge_index));
-static void control_dependent_block_to_edge_map_free
- PARAMS ((control_dependent_block_to_edge_map c));
-static void find_all_control_dependences
- PARAMS ((struct edge_list *el, dominance_info pdom,
- control_dependent_block_to_edge_map cdbte));
-static void find_control_dependence
- PARAMS ((struct edge_list *el, int edge_index, dominance_info pdom,
- control_dependent_block_to_edge_map cdbte));
-static basic_block find_pdom
- PARAMS ((dominance_info pdom, basic_block block));
-static int inherently_necessary_register_1
- PARAMS ((rtx *current_rtx, void *data));
-static int inherently_necessary_register
- PARAMS ((rtx current_rtx));
-static int find_inherently_necessary
- PARAMS ((rtx current_rtx));
-static int propagate_necessity_through_operand
- PARAMS ((rtx *current_rtx, void *data));
-static void note_inherently_necessary_set
- PARAMS ((rtx, rtx, void *));
-
-/* Unnecessary insns are indicated using insns' in_struct bit. */
-
-/* Indicate INSN is dead-code; returns nothing. */
-#define KILL_INSN(INSN) INSN_DEAD_CODE_P(INSN) = 1
-/* Indicate INSN is necessary, i.e., not dead-code; returns nothing. */
-#define RESURRECT_INSN(INSN) INSN_DEAD_CODE_P(INSN) = 0
-/* Return nonzero if INSN is unnecessary. */
-#define UNNECESSARY_P(INSN) INSN_DEAD_CODE_P(INSN)
-static void mark_all_insn_unnecessary
- PARAMS ((void));
-/* Execute CODE with free variable INSN for all unnecessary insns in
- an unspecified order, producing no output. */
-#define EXECUTE_IF_UNNECESSARY(INSN, CODE) \
-{ \
- rtx INSN; \
- \
- for (INSN = get_insns (); INSN != NULL_RTX; INSN = NEXT_INSN (INSN)) \
- if (INSN_DEAD_CODE_P (INSN)) { \
- CODE; \
- } \
-}
-/* Find the label beginning block BB. */
-static rtx find_block_label
- PARAMS ((basic_block bb));
-/* Remove INSN, updating its basic block structure. */
-static void delete_insn_bb
- PARAMS ((rtx insn));
-
-/* Recording which blocks are control dependent on which edges. We
- expect each block to be control dependent on very few edges so we
- use a bitmap for each block recording its edges. An array holds
- the bitmap. Its position 0 entry holds the bitmap for block
- INVALID_BLOCK+1 so that all blocks, including the entry and exit
- blocks can participate in the data structure. */
-
-/* Create a control_dependent_block_to_edge_map, given the number
- NUM_BASIC_BLOCKS of non-entry, non-exit basic blocks, e.g.,
- n_basic_blocks. This memory must be released using
- control_dependent_block_to_edge_map_free (). */
-
-static control_dependent_block_to_edge_map
-control_dependent_block_to_edge_map_create (num_basic_blocks)
- size_t num_basic_blocks;
-{
- int i;
- control_dependent_block_to_edge_map c
- = xmalloc (sizeof (control_dependent_block_to_edge_map_s));
- c->length = num_basic_blocks - (INVALID_BLOCK+1);
- c->data = xmalloc ((size_t) c->length*sizeof (bitmap));
- for (i = 0; i < c->length; ++i)
- c->data[i] = BITMAP_XMALLOC ();
-
- return c;
-}
-
-/* Indicate block BB is control dependent on an edge with index
- EDGE_INDEX in the mapping C of blocks to edges on which they are
- control-dependent. */
-
-static void
-set_control_dependent_block_to_edge_map_bit (c, bb, edge_index)
- control_dependent_block_to_edge_map c;
- basic_block bb;
- int edge_index;
-{
- if (bb->index - (INVALID_BLOCK+1) >= c->length)
- abort ();
-
- bitmap_set_bit (c->data[bb->index - (INVALID_BLOCK+1)],
- edge_index);
-}
-
-/* Execute CODE for each edge (given number EDGE_NUMBER within the
- CODE) for which the block containing INSN is control dependent,
- returning no output. CDBTE is the mapping of blocks to edges on
- which they are control-dependent. */
-
-#define EXECUTE_IF_CONTROL_DEPENDENT(CDBTE, INSN, EDGE_NUMBER, CODE) \
- EXECUTE_IF_SET_IN_BITMAP \
- (CDBTE->data[BLOCK_NUM (INSN) - (INVALID_BLOCK+1)], 0, \
- EDGE_NUMBER, CODE)
-
-/* Destroy a control_dependent_block_to_edge_map C. */
-
-static void
-control_dependent_block_to_edge_map_free (c)
- control_dependent_block_to_edge_map c;
-{
- int i;
- for (i = 0; i < c->length; ++i)
- BITMAP_XFREE (c->data[i]);
- free ((PTR) c);
-}
-
-/* Record all blocks' control dependences on all edges in the edge
- list EL, ala Morgan, Section 3.6. The mapping PDOM of blocks to
- their postdominators are used, and results are stored in CDBTE,
- which should be empty. */
-
-static void
-find_all_control_dependences (el, pdom, cdbte)
- struct edge_list *el;
- dominance_info pdom;
- control_dependent_block_to_edge_map cdbte;
-{
- int i;
-
- for (i = 0; i < NUM_EDGES (el); ++i)
- find_control_dependence (el, i, pdom, cdbte);
-}
-
-/* Determine all blocks' control dependences on the given edge with
- edge_list EL index EDGE_INDEX, ala Morgan, Section 3.6. The
- mapping PDOM of blocks to their postdominators are used, and
- results are stored in CDBTE, which is assumed to be initialized
- with zeros in each (block b', edge) position. */
-
-static void
-find_control_dependence (el, edge_index, pdom, cdbte)
- struct edge_list *el;
- int edge_index;
- dominance_info pdom;
- control_dependent_block_to_edge_map cdbte;
-{
- basic_block current_block;
- basic_block ending_block;
-
- if (INDEX_EDGE_PRED_BB (el, edge_index) == EXIT_BLOCK_PTR)
- abort ();
- ending_block =
- (INDEX_EDGE_PRED_BB (el, edge_index) == ENTRY_BLOCK_PTR)
- ? ENTRY_BLOCK_PTR->next_bb
- : find_pdom (pdom, INDEX_EDGE_PRED_BB (el, edge_index));
-
- for (current_block = INDEX_EDGE_SUCC_BB (el, edge_index);
- current_block != ending_block && current_block != EXIT_BLOCK_PTR;
- current_block = find_pdom (pdom, current_block))
- {
- set_control_dependent_block_to_edge_map_bit (cdbte,
- current_block,
- edge_index);
- }
-}
-
-/* Find the immediate postdominator PDOM of the specified basic block
- BLOCK. This function is necessary because some blocks have
- negative numbers. */
-
-static basic_block
-find_pdom (pdom, block)
- dominance_info pdom;
- basic_block block;
-{
- if (!block)
- abort ();
- if (block->index == INVALID_BLOCK)
- abort ();
-
- if (block == ENTRY_BLOCK_PTR)
- return ENTRY_BLOCK_PTR->next_bb;
- else if (block == EXIT_BLOCK_PTR)
- return EXIT_BLOCK_PTR;
- else
- {
- basic_block bb = get_immediate_dominator (pdom, block);
- if (!bb)
- return EXIT_BLOCK_PTR;
- return bb;
- }
-}
-
-/* Determine if the given CURRENT_RTX uses a hard register not
- converted to SSA. Returns nonzero only if it uses such a hard
- register. DATA is not used.
-
- The program counter (PC) is not considered inherently necessary
- since code should be position-independent and thus not depend on
- particular PC values. */
-
-static int
-inherently_necessary_register_1 (current_rtx, data)
- rtx *current_rtx;
- void *data ATTRIBUTE_UNUSED;
-{
- rtx x = *current_rtx;
-
- if (x == NULL_RTX)
- return 0;
- switch (GET_CODE (x))
- {
- case CLOBBER:
- /* Do not traverse the rest of the clobber. */
- return -1;
- break;
- case PC:
- return 0;
- break;
- case REG:
- if (CONVERT_REGISTER_TO_SSA_P (REGNO (x)) || x == pc_rtx)
- return 0;
- else
- return !0;
- break;
- default:
- return 0;
- break;
- }
-}
-
-/* Return nonzero if the insn CURRENT_RTX is inherently necessary. */
-
-static int
-inherently_necessary_register (current_rtx)
- rtx current_rtx;
-{
- return for_each_rtx (&current_rtx,
- &inherently_necessary_register_1, NULL);
-}
-
-
-/* Called via note_stores for each store in an insn. Note whether
- or not a particular store is inherently necessary. Store a
- nonzero value in inherently_necessary_p if such a store is found. */
-
-static void
-note_inherently_necessary_set (dest, set, data)
- rtx set ATTRIBUTE_UNUSED;
- rtx dest;
- void *data;
-{
- int *inherently_necessary_set_p = (int *) data;
-
- while (GET_CODE (dest) == SUBREG
- || GET_CODE (dest) == STRICT_LOW_PART
- || GET_CODE (dest) == ZERO_EXTRACT
- || GET_CODE (dest) == SIGN_EXTRACT)
- dest = XEXP (dest, 0);
-
- if (GET_CODE (dest) == MEM
- || GET_CODE (dest) == UNSPEC
- || GET_CODE (dest) == UNSPEC_VOLATILE)
- *inherently_necessary_set_p = 1;
-}
-
-/* Mark X as inherently necessary if appropriate. For example,
- function calls and storing values into memory are inherently
- necessary. This function is to be used with for_each_rtx ().
- Return nonzero iff inherently necessary. */
-
-static int
-find_inherently_necessary (x)
- rtx x;
-{
- if (x == NULL_RTX)
- return 0;
- else if (inherently_necessary_register (x))
- return !0;
- else
- switch (GET_CODE (x))
- {
- case CALL_INSN:
- case BARRIER:
- case PREFETCH:
- return !0;
- case CODE_LABEL:
- case NOTE:
- return 0;
- case JUMP_INSN:
- return JUMP_TABLE_DATA_P (x) || computed_jump_p (x) != 0;
- case INSN:
- {
- int inherently_necessary_set = 0;
- note_stores (PATTERN (x),
- note_inherently_necessary_set,
- &inherently_necessary_set);
-
- /* If we found an inherently necessary set or an asm
- instruction, then we consider this insn inherently
- necessary. */
- return (inherently_necessary_set
- || GET_CODE (PATTERN (x)) == ASM_INPUT
- || asm_noperands (PATTERN (x)) >= 0);
- }
- default:
- /* Found an impossible insn type. */
- abort ();
- break;
- }
-}
-
-/* Propagate necessity through REG and SUBREG operands of CURRENT_RTX.
- This function is called with for_each_rtx () on necessary
- instructions. The DATA must be a varray of unprocessed
- instructions. */
-
-static int
-propagate_necessity_through_operand (current_rtx, data)
- rtx *current_rtx;
- void *data;
-{
- rtx x = *current_rtx;
- varray_type *unprocessed_instructions = (varray_type *) data;
-
- if (x == NULL_RTX)
- return 0;
- switch ( GET_CODE (x))
- {
- case REG:
- if (CONVERT_REGISTER_TO_SSA_P (REGNO (x)))
- {
- rtx insn = VARRAY_RTX (ssa_definition, REGNO (x));
- if (insn != NULL_RTX && UNNECESSARY_P (insn))
- {
- RESURRECT_INSN (insn);
- VARRAY_PUSH_RTX (*unprocessed_instructions, insn);
- }
- }
- return 0;
-
- default:
- return 0;
- }
-}
-
-/* Indicate all insns initially assumed to be unnecessary. */
-
-static void
-mark_all_insn_unnecessary ()
-{
- rtx insn;
- for (insn = get_insns (); insn != NULL_RTX; insn = NEXT_INSN (insn))
- KILL_INSN (insn);
-}
-
-/* Find the label beginning block BB, adding one if necessary. */
-
-static rtx
-find_block_label (bb)
- basic_block bb;
-{
- rtx insn = bb->head;
- if (LABEL_P (insn))
- return insn;
- else
- {
- rtx new_label = emit_label_before (gen_label_rtx (), insn);
- if (insn == bb->head)
- bb->head = new_label;
- return new_label;
- }
-}
-
-/* Remove INSN, updating its basic block structure. */
-
-static void
-delete_insn_bb (insn)
- rtx insn;
-{
- if (!insn)
- abort ();
-
- /* Do not actually delete anything that is not an INSN.
-
- We can get here because we only consider INSNs as
- potentially necessary. We leave it to later passes
- to remove unnecessary notes, unused labels, etc. */
- if (! INSN_P (insn))
- return;
-
- delete_insn (insn);
-}
-
-/* Perform the dead-code elimination. */
-
-void
-ssa_eliminate_dead_code ()
-{
- rtx insn;
- basic_block bb;
- /* Necessary instructions with operands to explore. */
- varray_type unprocessed_instructions;
- /* Map element (b,e) is nonzero if the block is control dependent on
- edge. "cdbte" abbreviates control dependent block to edge. */
- control_dependent_block_to_edge_map cdbte;
- /* Element I is the immediate postdominator of block I. */
- dominance_info pdom;
- struct edge_list *el;
-
- /* Initialize the data structures. */
- mark_all_insn_unnecessary ();
- VARRAY_RTX_INIT (unprocessed_instructions, 64,
- "unprocessed instructions");
- cdbte = control_dependent_block_to_edge_map_create (last_basic_block);
-
- /* Prepare for use of BLOCK_NUM (). */
- connect_infinite_loops_to_exit ();
-
- /* Compute control dependence. */
- pdom = calculate_dominance_info (CDI_POST_DOMINATORS);
- el = create_edge_list ();
- find_all_control_dependences (el, pdom, cdbte);
-
- /* Find inherently necessary instructions. */
- for (insn = get_insns (); insn != NULL_RTX; insn = NEXT_INSN (insn))
- if (find_inherently_necessary (insn))
- {
- RESURRECT_INSN (insn);
- VARRAY_PUSH_RTX (unprocessed_instructions, insn);
- }
-
- /* Propagate necessity using the operands of necessary instructions. */
- while (VARRAY_ACTIVE_SIZE (unprocessed_instructions) > 0)
- {
- rtx current_instruction;
- int edge_number;
-
- current_instruction = VARRAY_TOP_RTX (unprocessed_instructions);
- VARRAY_POP (unprocessed_instructions);
-
- /* Make corresponding control dependent edges necessary. */
- /* Assume the only JUMP_INSN is the block's last insn. It appears
- that the last instruction of the program need not be a
- JUMP_INSN. */
-
- if (INSN_P (current_instruction)
- && !JUMP_TABLE_DATA_P (current_instruction))
- {
- /* Notes and labels contain no interesting operands. */
- EXECUTE_IF_CONTROL_DEPENDENT
- (cdbte, current_instruction, edge_number,
- {
- rtx jump_insn = (INDEX_EDGE_PRED_BB (el, edge_number))->end;
- if (GET_CODE (jump_insn) == JUMP_INSN
- && UNNECESSARY_P (jump_insn))
- {
- RESURRECT_INSN (jump_insn);
- VARRAY_PUSH_RTX (unprocessed_instructions, jump_insn);
- }
- });
-
- /* Propagate through the operands. */
- for_each_rtx (&current_instruction,
- &propagate_necessity_through_operand,
- (PTR) &unprocessed_instructions);
-
- /* PHI nodes are somewhat special in that each PHI alternative
- has data and control dependencies. The data dependencies
- are handled via propagate_necessity_through_operand. We
- handle the control dependency here.
-
- We consider the control dependent edges leading to the
- predecessor block associated with each PHI alternative
- as necessary. */
- if (PHI_NODE_P (current_instruction))
- {
- rtvec phi_vec = XVEC (SET_SRC (PATTERN (current_instruction)), 0);
- int num_elem = GET_NUM_ELEM (phi_vec);
- int v;
-
- for (v = num_elem - 2; v >= 0; v -= 2)
- {
- basic_block bb;
-
- bb = BASIC_BLOCK (INTVAL (RTVEC_ELT (phi_vec, v + 1)));
- EXECUTE_IF_CONTROL_DEPENDENT
- (cdbte, bb->end, edge_number,
- {
- rtx jump_insn;
-
- jump_insn = (INDEX_EDGE_PRED_BB (el, edge_number))->end;
- if (((GET_CODE (jump_insn) == JUMP_INSN))
- && UNNECESSARY_P (jump_insn))
- {
- RESURRECT_INSN (jump_insn);
- VARRAY_PUSH_RTX (unprocessed_instructions, jump_insn);
- }
- });
-
- }
- }
- }
- }
-
- /* Remove the unnecessary instructions. */
- EXECUTE_IF_UNNECESSARY (insn,
- {
- if (any_condjump_p (insn))
- {
- basic_block bb = BLOCK_FOR_INSN (insn);
- basic_block pdom_bb = find_pdom (pdom, bb);
- rtx lbl;
- edge e;
-
- /* Egad. The immediate post dominator is the exit block. We
- would like to optimize this conditional jump to jump directly
- to the exit block. That can be difficult as we may not have
- a suitable CODE_LABEL that allows us to fall unmolested into
- the exit block.
-
- So, we just delete the conditional branch by turning it into
- a deleted note. That is safe, but just not as optimal as
- it could be. */
- if (pdom_bb == EXIT_BLOCK_PTR)
- {
- /* Since we're going to just delete the branch, we need
- look at all the edges and remove all those which are not
- a fallthru edge. */
- e = bb->succ;
- while (e)
- {
- edge temp = e;
-
- e = e->succ_next;
- if ((temp->flags & EDGE_FALLTHRU) == 0)
- {
- /* We've found a non-fallthru edge, find any PHI nodes
- at the target and clean them up. */
- if (temp->dest != EXIT_BLOCK_PTR)
- {
- rtx insn
- = first_insn_after_basic_block_note (temp->dest);
-
- while (PHI_NODE_P (insn))
- {
- remove_phi_alternative (PATTERN (insn), temp->src);
- insn = NEXT_INSN (insn);
- }
- }
-
- remove_edge (temp);
- }
- }
-
- /* Now "delete" the conditional jump. */
- PUT_CODE (insn, NOTE);
- NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
- continue;
- }
-
- /* We've found a conditional branch that is unnecessary.
-
- First, remove all outgoing edges from this block, updating
- PHI nodes as appropriate. */
- e = bb->succ;
- while (e)
- {
- edge temp = e;
-
- e = e->succ_next;
-
- if (temp->flags & EDGE_ABNORMAL)
- continue;
-
- /* We found an edge that is not executable. First simplify
- the PHI nodes in the target block. */
- if (temp->dest != EXIT_BLOCK_PTR)
- {
- rtx insn = first_insn_after_basic_block_note (temp->dest);
-
- while (PHI_NODE_P (insn))
- {
- remove_phi_alternative (PATTERN (insn), temp->src);
- insn = NEXT_INSN (insn);
- }
- }
-
- remove_edge (temp);
- }
-
- /* Create an edge from this block to the post dominator.
- What about the PHI nodes at the target? */
- make_edge (bb, pdom_bb, 0);
-
- /* Third, transform this insn into an unconditional
- jump to the label for the immediate postdominator. */
- lbl = find_block_label (pdom_bb);
- SET_SRC (PATTERN (insn)) = gen_rtx_LABEL_REF (VOIDmode, lbl);
- INSN_CODE (insn) = -1;
- JUMP_LABEL (insn) = lbl;
- LABEL_NUSES (lbl)++;
-
- /* A barrier must follow any unconditional jump. Barriers
- are not in basic blocks so this must occur after
- deleting the conditional jump. */
- emit_barrier_after (insn);
- }
- else if (!JUMP_P (insn))
- delete_insn_bb (insn);
- });
-
- /* Remove fake edges from the CFG. */
- remove_fake_edges ();
-
- /* Find any blocks with no successors and ensure they are followed
- by a BARRIER. delete_insn has the nasty habit of deleting barriers
- when deleting insns. */
- FOR_EACH_BB (bb)
- {
- if (bb->succ == NULL)
- {
- rtx next = NEXT_INSN (bb->end);
-
- if (!next || GET_CODE (next) != BARRIER)
- emit_barrier_after (bb->end);
- }
- }
- /* Release allocated memory. */
- for (insn = get_insns (); insn != NULL_RTX; insn = NEXT_INSN (insn))
- RESURRECT_INSN (insn);
- if (VARRAY_ACTIVE_SIZE (unprocessed_instructions) != 0)
- abort ();
- control_dependent_block_to_edge_map_free (cdbte);
- free ((PTR) pdom);
- free_edge_list (el);
-}
diff --git a/contrib/gcc/ssa.c b/contrib/gcc/ssa.c
deleted file mode 100644
index b5c4992..0000000
--- a/contrib/gcc/ssa.c
+++ /dev/null
@@ -1,2334 +0,0 @@
-/* Static Single Assignment conversion routines for the GNU compiler.
- Copyright (C) 2000, 2001, 2002 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 2, 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, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
-
-/* References:
-
- Building an Optimizing Compiler
- Robert Morgan
- Butterworth-Heinemann, 1998
-
- Static Single Assignment Construction
- Preston Briggs, Tim Harvey, Taylor Simpson
- Technical Report, Rice University, 1995
- ftp://ftp.cs.rice.edu/public/preston/optimizer/SSA.ps.gz. */
-
-#include "config.h"
-#include "system.h"
-
-#include "rtl.h"
-#include "expr.h"
-#include "varray.h"
-#include "partition.h"
-#include "sbitmap.h"
-#include "hashtab.h"
-#include "regs.h"
-#include "hard-reg-set.h"
-#include "flags.h"
-#include "function.h"
-#include "real.h"
-#include "insn-config.h"
-#include "recog.h"
-#include "basic-block.h"
-#include "output.h"
-#include "ssa.h"
-
-/* TODO:
-
- Handle subregs better, maybe. For now, if a reg that's set in a
- subreg expression is duplicated going into SSA form, an extra copy
- is inserted first that copies the entire reg into the duplicate, so
- that the other bits are preserved. This isn't strictly SSA, since
- at least part of the reg is assigned in more than one place (though
- they are adjacent).
-
- ??? What to do about strict_low_part. Probably I'll have to split
- them out of their current instructions first thing.
-
- Actually the best solution may be to have a kind of "mid-level rtl"
- in which the RTL encodes exactly what we want, without exposing a
- lot of niggling processor details. At some later point we lower
- the representation, calling back into optabs to finish any necessary
- expansion. */
-
-/* All pseudo-registers and select hard registers are converted to SSA
- form. When converting out of SSA, these select hard registers are
- guaranteed to be mapped to their original register number. Each
- machine's .h file should define CONVERT_HARD_REGISTER_TO_SSA_P
- indicating which hard registers should be converted.
-
- When converting out of SSA, temporaries for all registers are
- partitioned. The partition is checked to ensure that all uses of
- the same hard register in the same machine mode are in the same
- class. */
-
-/* If conservative_reg_partition is nonzero, use a conservative
- register partitioning algorithm (which leaves more regs after
- emerging from SSA) instead of the coalescing one. This is being
- left in for a limited time only, as a debugging tool until the
- coalescing algorithm is validated. */
-
-static int conservative_reg_partition;
-
-/* This flag is set when the CFG is in SSA form. */
-int in_ssa_form = 0;
-
-/* Element I is the single instruction that sets register I. */
-varray_type ssa_definition;
-
-/* Element I-PSEUDO is the normal register that originated the ssa
- register in question. */
-varray_type ssa_rename_from;
-
-/* Element I is the normal register that originated the ssa
- register in question.
-
- A hash table stores the (register, rtl) pairs. These are each
- xmalloc'ed and deleted when the hash table is destroyed. */
-htab_t ssa_rename_from_ht;
-
-/* The running target ssa register for a given pseudo register.
- (Pseudo registers appear in only one mode.) */
-static rtx *ssa_rename_to_pseudo;
-/* Similar, but for hard registers. A hard register can appear in
- many modes, so we store an equivalent pseudo for each of the
- modes. */
-static rtx ssa_rename_to_hard[FIRST_PSEUDO_REGISTER][NUM_MACHINE_MODES];
-
-/* ssa_rename_from maps pseudo registers to the original corresponding
- RTL. It is implemented as using a hash table. */
-
-typedef struct {
- unsigned int reg;
- rtx original;
-} ssa_rename_from_pair;
-
-struct ssa_rename_from_hash_table_data {
- sbitmap canonical_elements;
- partition reg_partition;
-};
-
-static rtx gen_sequence
- PARAMS ((void));
-static void ssa_rename_from_initialize
- PARAMS ((void));
-static rtx ssa_rename_from_lookup
- PARAMS ((int reg));
-static unsigned int original_register
- PARAMS ((unsigned int regno));
-static void ssa_rename_from_insert
- PARAMS ((unsigned int reg, rtx r));
-static void ssa_rename_from_free
- PARAMS ((void));
-typedef int (*srf_trav) PARAMS ((int regno, rtx r, sbitmap canonical_elements, partition reg_partition));
-static void ssa_rename_from_traverse
- PARAMS ((htab_trav callback_function, sbitmap canonical_elements, partition reg_partition));
-/*static Avoid warnign message. */ void ssa_rename_from_print
- PARAMS ((void));
-static int ssa_rename_from_print_1
- PARAMS ((void **slot, void *data));
-static hashval_t ssa_rename_from_hash_function
- PARAMS ((const void * srfp));
-static int ssa_rename_from_equal
- PARAMS ((const void *srfp1, const void *srfp2));
-static void ssa_rename_from_delete
- PARAMS ((void *srfp));
-
-static rtx ssa_rename_to_lookup
- PARAMS ((rtx reg));
-static void ssa_rename_to_insert
- PARAMS ((rtx reg, rtx r));
-
-/* The number of registers that were live on entry to the SSA routines. */
-static unsigned int ssa_max_reg_num;
-
-/* Local function prototypes. */
-
-struct rename_context;
-
-static inline rtx * phi_alternative
- PARAMS ((rtx, int));
-static void compute_dominance_frontiers_1
- PARAMS ((sbitmap *frontiers, dominance_info idom, int bb, sbitmap done));
-static void find_evaluations_1
- PARAMS ((rtx dest, rtx set, void *data));
-static void find_evaluations
- PARAMS ((sbitmap *evals, int nregs));
-static void compute_iterated_dominance_frontiers
- PARAMS ((sbitmap *idfs, sbitmap *frontiers, sbitmap *evals, int nregs));
-static void insert_phi_node
- PARAMS ((int regno, int b));
-static void insert_phi_nodes
- PARAMS ((sbitmap *idfs, sbitmap *evals, int nregs));
-static void create_delayed_rename
- PARAMS ((struct rename_context *, rtx *));
-static void apply_delayed_renames
- PARAMS ((struct rename_context *));
-static int rename_insn_1
- PARAMS ((rtx *ptr, void *data));
-static void rename_block
- PARAMS ((int b, dominance_info dom));
-static void rename_registers
- PARAMS ((int nregs, dominance_info idom));
-
-static inline int ephi_add_node
- PARAMS ((rtx reg, rtx *nodes, int *n_nodes));
-static int * ephi_forward
- PARAMS ((int t, sbitmap visited, sbitmap *succ, int *tstack));
-static void ephi_backward
- PARAMS ((int t, sbitmap visited, sbitmap *pred, rtx *nodes));
-static void ephi_create
- PARAMS ((int t, sbitmap visited, sbitmap *pred, sbitmap *succ, rtx *nodes));
-static void eliminate_phi
- PARAMS ((edge e, partition reg_partition));
-static int make_regs_equivalent_over_bad_edges
- PARAMS ((int bb, partition reg_partition));
-
-/* These are used only in the conservative register partitioning
- algorithms. */
-static int make_equivalent_phi_alternatives_equivalent
- PARAMS ((int bb, partition reg_partition));
-static partition compute_conservative_reg_partition
- PARAMS ((void));
-static int record_canonical_element_1
- PARAMS ((void **srfp, void *data));
-static int check_hard_regs_in_partition
- PARAMS ((partition reg_partition));
-static int rename_equivalent_regs_in_insn
- PARAMS ((rtx *ptr, void *data));
-
-/* These are used in the register coalescing algorithm. */
-static int coalesce_if_unconflicting
- PARAMS ((partition p, conflict_graph conflicts, int reg1, int reg2));
-static int coalesce_regs_in_copies
- PARAMS ((basic_block bb, partition p, conflict_graph conflicts));
-static int coalesce_reg_in_phi
- PARAMS ((rtx, int dest_regno, int src_regno, void *data));
-static int coalesce_regs_in_successor_phi_nodes
- PARAMS ((basic_block bb, partition p, conflict_graph conflicts));
-static partition compute_coalesced_reg_partition
- PARAMS ((void));
-static int mark_reg_in_phi
- PARAMS ((rtx *ptr, void *data));
-static void mark_phi_and_copy_regs
- PARAMS ((regset phi_set));
-
-static int rename_equivalent_regs_in_insn
- PARAMS ((rtx *ptr, void *data));
-static void rename_equivalent_regs
- PARAMS ((partition reg_partition));
-
-/* Deal with hard registers. */
-static int conflicting_hard_regs_p
- PARAMS ((int reg1, int reg2));
-
-/* ssa_rename_to maps registers and machine modes to SSA pseudo registers. */
-
-/* Find the register associated with REG in the indicated mode. */
-
-static rtx
-ssa_rename_to_lookup (reg)
- rtx reg;
-{
- if (!HARD_REGISTER_P (reg))
- return ssa_rename_to_pseudo[REGNO (reg) - FIRST_PSEUDO_REGISTER];
- else
- return ssa_rename_to_hard[REGNO (reg)][GET_MODE (reg)];
-}
-
-/* Store a new value mapping REG to R in ssa_rename_to. */
-
-static void
-ssa_rename_to_insert(reg, r)
- rtx reg;
- rtx r;
-{
- if (!HARD_REGISTER_P (reg))
- ssa_rename_to_pseudo[REGNO (reg) - FIRST_PSEUDO_REGISTER] = r;
- else
- ssa_rename_to_hard[REGNO (reg)][GET_MODE (reg)] = r;
-}
-
-/* Prepare ssa_rename_from for use. */
-
-static void
-ssa_rename_from_initialize ()
-{
- /* We use an arbitrary initial hash table size of 64. */
- ssa_rename_from_ht = htab_create (64,
- &ssa_rename_from_hash_function,
- &ssa_rename_from_equal,
- &ssa_rename_from_delete);
-}
-
-/* Find the REG entry in ssa_rename_from. Return NULL_RTX if no entry is
- found. */
-
-static rtx
-ssa_rename_from_lookup (reg)
- int reg;
-{
- ssa_rename_from_pair srfp;
- ssa_rename_from_pair *answer;
- srfp.reg = reg;
- srfp.original = NULL_RTX;
- answer = (ssa_rename_from_pair *)
- htab_find_with_hash (ssa_rename_from_ht, (void *) &srfp, reg);
- return (answer == 0 ? NULL_RTX : answer->original);
-}
-
-/* Find the number of the original register specified by REGNO. If
- the register is a pseudo, return the original register's number.
- Otherwise, return this register number REGNO. */
-
-static unsigned int
-original_register (regno)
- unsigned int regno;
-{
- rtx original_rtx = ssa_rename_from_lookup (regno);
- return original_rtx != NULL_RTX ? REGNO (original_rtx) : regno;
-}
-
-/* Add mapping from R to REG to ssa_rename_from even if already present. */
-
-static void
-ssa_rename_from_insert (reg, r)
- unsigned int reg;
- rtx r;
-{
- void **slot;
- ssa_rename_from_pair *srfp = xmalloc (sizeof (ssa_rename_from_pair));
- srfp->reg = reg;
- srfp->original = r;
- slot = htab_find_slot_with_hash (ssa_rename_from_ht, (const void *) srfp,
- reg, INSERT);
- if (*slot != 0)
- free ((void *) *slot);
- *slot = srfp;
-}
-
-/* Apply the CALLBACK_FUNCTION to each element in ssa_rename_from.
- CANONICAL_ELEMENTS and REG_PARTITION pass data needed by the only
- current use of this function. */
-
-static void
-ssa_rename_from_traverse (callback_function,
- canonical_elements, reg_partition)
- htab_trav callback_function;
- sbitmap canonical_elements;
- partition reg_partition;
-{
- struct ssa_rename_from_hash_table_data srfhd;
- srfhd.canonical_elements = canonical_elements;
- srfhd.reg_partition = reg_partition;
- htab_traverse (ssa_rename_from_ht, callback_function, (void *) &srfhd);
-}
-
-/* Destroy ssa_rename_from. */
-
-static void
-ssa_rename_from_free ()
-{
- htab_delete (ssa_rename_from_ht);
-}
-
-/* Print the contents of ssa_rename_from. */
-
-/* static Avoid erroneous error message. */
-void
-ssa_rename_from_print ()
-{
- printf ("ssa_rename_from's hash table contents:\n");
- htab_traverse (ssa_rename_from_ht, &ssa_rename_from_print_1, NULL);
-}
-
-/* Print the contents of the hash table entry SLOT, passing the unused
- sttribute DATA. Used as a callback function with htab_traverse (). */
-
-static int
-ssa_rename_from_print_1 (slot, data)
- void **slot;
- void *data ATTRIBUTE_UNUSED;
-{
- ssa_rename_from_pair * p = *slot;
- printf ("ssa_rename_from maps pseudo %i to original %i.\n",
- p->reg, REGNO (p->original));
- return 1;
-}
-
-/* Given a hash entry SRFP, yield a hash value. */
-
-static hashval_t
-ssa_rename_from_hash_function (srfp)
- const void *srfp;
-{
- return ((const ssa_rename_from_pair *) srfp)->reg;
-}
-
-/* Test whether two hash table entries SRFP1 and SRFP2 are equal. */
-
-static int
-ssa_rename_from_equal (srfp1, srfp2)
- const void *srfp1;
- const void *srfp2;
-{
- return ssa_rename_from_hash_function (srfp1) ==
- ssa_rename_from_hash_function (srfp2);
-}
-
-/* Delete the hash table entry SRFP. */
-
-static void
-ssa_rename_from_delete (srfp)
- void *srfp;
-{
- free (srfp);
-}
-
-/* Given the SET of a PHI node, return the address of the alternative
- for predecessor block C. */
-
-static inline rtx *
-phi_alternative (set, c)
- rtx set;
- int c;
-{
- rtvec phi_vec = XVEC (SET_SRC (set), 0);
- int v;
-
- for (v = GET_NUM_ELEM (phi_vec) - 2; v >= 0; v -= 2)
- if (INTVAL (RTVEC_ELT (phi_vec, v + 1)) == c)
- return &RTVEC_ELT (phi_vec, v);
-
- return NULL;
-}
-
-/* Given the SET of a phi node, remove the alternative for predecessor
- block C. Return nonzero on success, or zero if no alternative is
- found for C. */
-
-int
-remove_phi_alternative (set, block)
- rtx set;
- basic_block block;
-{
- rtvec phi_vec = XVEC (SET_SRC (set), 0);
- int num_elem = GET_NUM_ELEM (phi_vec);
- int v, c;
-
- c = block->index;
- for (v = num_elem - 2; v >= 0; v -= 2)
- if (INTVAL (RTVEC_ELT (phi_vec, v + 1)) == c)
- {
- if (v < num_elem - 2)
- {
- RTVEC_ELT (phi_vec, v) = RTVEC_ELT (phi_vec, num_elem - 2);
- RTVEC_ELT (phi_vec, v + 1) = RTVEC_ELT (phi_vec, num_elem - 1);
- }
- PUT_NUM_ELEM (phi_vec, num_elem - 2);
- return 1;
- }
-
- return 0;
-}
-
-/* For all registers, find all blocks in which they are set.
-
- This is the transform of what would be local kill information that
- we ought to be getting from flow. */
-
-static sbitmap *fe_evals;
-static int fe_current_bb;
-
-static void
-find_evaluations_1 (dest, set, data)
- rtx dest;
- rtx set ATTRIBUTE_UNUSED;
- void *data ATTRIBUTE_UNUSED;
-{
- if (GET_CODE (dest) == REG
- && CONVERT_REGISTER_TO_SSA_P (REGNO (dest)))
- SET_BIT (fe_evals[REGNO (dest)], fe_current_bb);
-}
-
-static void
-find_evaluations (evals, nregs)
- sbitmap *evals;
- int nregs;
-{
- basic_block bb;
-
- sbitmap_vector_zero (evals, nregs);
- fe_evals = evals;
-
- FOR_EACH_BB_REVERSE (bb)
- {
- rtx p, last;
-
- fe_current_bb = bb->index;
- p = bb->head;
- last = bb->end;
- while (1)
- {
- if (INSN_P (p))
- note_stores (PATTERN (p), find_evaluations_1, NULL);
-
- if (p == last)
- break;
- p = NEXT_INSN (p);
- }
- }
-}
-
-/* Computing the Dominance Frontier:
-
- As decribed in Morgan, section 3.5, this may be done simply by
- walking the dominator tree bottom-up, computing the frontier for
- the children before the parent. When considering a block B,
- there are two cases:
-
- (1) A flow graph edge leaving B that does not lead to a child
- of B in the dominator tree must be a block that is either equal
- to B or not dominated by B. Such blocks belong in the frontier
- of B.
-
- (2) Consider a block X in the frontier of one of the children C
- of B. If X is not equal to B and is not dominated by B, it
- is in the frontier of B.
-*/
-
-static void
-compute_dominance_frontiers_1 (frontiers, idom, bb, done)
- sbitmap *frontiers;
- dominance_info idom;
- int bb;
- sbitmap done;
-{
- basic_block b = BASIC_BLOCK (bb);
- edge e;
- basic_block c;
-
- SET_BIT (done, bb);
- sbitmap_zero (frontiers[bb]);
-
- /* Do the frontier of the children first. Not all children in the
- dominator tree (blocks dominated by this one) are children in the
- CFG, so check all blocks. */
- FOR_EACH_BB (c)
- if (get_immediate_dominator (idom, c)->index == bb
- && ! TEST_BIT (done, c->index))
- compute_dominance_frontiers_1 (frontiers, idom, c->index, done);
-
- /* Find blocks conforming to rule (1) above. */
- for (e = b->succ; e; e = e->succ_next)
- {
- if (e->dest == EXIT_BLOCK_PTR)
- continue;
- if (get_immediate_dominator (idom, e->dest)->index != bb)
- SET_BIT (frontiers[bb], e->dest->index);
- }
-
- /* Find blocks conforming to rule (2). */
- FOR_EACH_BB (c)
- if (get_immediate_dominator (idom, c)->index == bb)
- {
- int x;
- EXECUTE_IF_SET_IN_SBITMAP (frontiers[c->index], 0, x,
- {
- if (get_immediate_dominator (idom, BASIC_BLOCK (x))->index != bb)
- SET_BIT (frontiers[bb], x);
- });
- }
-}
-
-void
-compute_dominance_frontiers (frontiers, idom)
- sbitmap *frontiers;
- dominance_info idom;
-{
- sbitmap done = sbitmap_alloc (last_basic_block);
- sbitmap_zero (done);
-
- compute_dominance_frontiers_1 (frontiers, idom, 0, done);
-
- sbitmap_free (done);
-}
-
-/* Computing the Iterated Dominance Frontier:
-
- This is the set of merge points for a given register.
-
- This is not particularly intuitive. See section 7.1 of Morgan, in
- particular figures 7.3 and 7.4 and the immediately surrounding text.
-*/
-
-static void
-compute_iterated_dominance_frontiers (idfs, frontiers, evals, nregs)
- sbitmap *idfs;
- sbitmap *frontiers;
- sbitmap *evals;
- int nregs;
-{
- sbitmap worklist;
- int reg, passes = 0;
-
- worklist = sbitmap_alloc (last_basic_block);
-
- for (reg = 0; reg < nregs; ++reg)
- {
- sbitmap idf = idfs[reg];
- int b, changed;
-
- /* Start the iterative process by considering those blocks that
- evaluate REG. We'll add their dominance frontiers to the
- IDF, and then consider the blocks we just added. */
- sbitmap_copy (worklist, evals[reg]);
-
- /* Morgan's algorithm is incorrect here. Blocks that evaluate
- REG aren't necessarily in REG's IDF. Start with an empty IDF. */
- sbitmap_zero (idf);
-
- /* Iterate until the worklist is empty. */
- do
- {
- changed = 0;
- passes++;
- EXECUTE_IF_SET_IN_SBITMAP (worklist, 0, b,
- {
- RESET_BIT (worklist, b);
- /* For each block on the worklist, add to the IDF all
- blocks on its dominance frontier that aren't already
- on the IDF. Every block that's added is also added
- to the worklist. */
- sbitmap_union_of_diff (worklist, worklist, frontiers[b], idf);
- sbitmap_a_or_b (idf, idf, frontiers[b]);
- changed = 1;
- });
- }
- while (changed);
- }
-
- sbitmap_free (worklist);
-
- if (rtl_dump_file)
- {
- fprintf (rtl_dump_file,
- "Iterated dominance frontier: %d passes on %d regs.\n",
- passes, nregs);
- }
-}
-
-/* Insert the phi nodes. */
-
-static void
-insert_phi_node (regno, bb)
- int regno, bb;
-{
- basic_block b = BASIC_BLOCK (bb);
- edge e;
- int npred, i;
- rtvec vec;
- rtx phi, reg;
- rtx insn;
- int end_p;
-
- /* Find out how many predecessors there are. */
- for (e = b->pred, npred = 0; e; e = e->pred_next)
- if (e->src != ENTRY_BLOCK_PTR)
- npred++;
-
- /* If this block has no "interesting" preds, then there is nothing to
- do. Consider a block that only has the entry block as a pred. */
- if (npred == 0)
- return;
-
- /* This is the register to which the phi function will be assigned. */
- reg = regno_reg_rtx[regno];
-
- /* Construct the arguments to the PHI node. The use of pc_rtx is just
- a placeholder; we'll insert the proper value in rename_registers. */
- vec = rtvec_alloc (npred * 2);
- for (e = b->pred, i = 0; e ; e = e->pred_next, i += 2)
- if (e->src != ENTRY_BLOCK_PTR)
- {
- RTVEC_ELT (vec, i + 0) = pc_rtx;
- RTVEC_ELT (vec, i + 1) = GEN_INT (e->src->index);
- }
-
- phi = gen_rtx_PHI (VOIDmode, vec);
- phi = gen_rtx_SET (VOIDmode, reg, phi);
-
- insn = first_insn_after_basic_block_note (b);
- end_p = PREV_INSN (insn) == b->end;
- emit_insn_before (phi, insn);
- if (end_p)
- b->end = PREV_INSN (insn);
-}
-
-static void
-insert_phi_nodes (idfs, evals, nregs)
- sbitmap *idfs;
- sbitmap *evals ATTRIBUTE_UNUSED;
- int nregs;
-{
- int reg;
-
- for (reg = 0; reg < nregs; ++reg)
- if (CONVERT_REGISTER_TO_SSA_P (reg))
- {
- int b;
- EXECUTE_IF_SET_IN_SBITMAP (idfs[reg], 0, b,
- {
- if (REGNO_REG_SET_P (BASIC_BLOCK (b)->global_live_at_start, reg))
- insert_phi_node (reg, b);
- });
- }
-}
-
-/* Rename the registers to conform to SSA.
-
- This is essentially the algorithm presented in Figure 7.8 of Morgan,
- with a few changes to reduce pattern search time in favor of a bit
- more memory usage. */
-
-/* One of these is created for each set. It will live in a list local
- to its basic block for the duration of that block's processing. */
-struct rename_set_data
-{
- struct rename_set_data *next;
- /* This is the SET_DEST of the (first) SET that sets the REG. */
- rtx *reg_loc;
- /* This is what used to be at *REG_LOC. */
- rtx old_reg;
- /* This is the REG that will replace OLD_REG. It's set only
- when the rename data is moved onto the DONE_RENAMES queue. */
- rtx new_reg;
- /* This is what to restore ssa_rename_to_lookup (old_reg) to. It is
- usually the previous contents of ssa_rename_to_lookup (old_reg). */
- rtx prev_reg;
- /* This is the insn that contains all the SETs of the REG. */
- rtx set_insn;
-};
-
-/* This struct is used to pass information to callback functions while
- renaming registers. */
-struct rename_context
-{
- struct rename_set_data *new_renames;
- struct rename_set_data *done_renames;
- rtx current_insn;
-};
-
-/* Queue the rename of *REG_LOC. */
-static void
-create_delayed_rename (c, reg_loc)
- struct rename_context *c;
- rtx *reg_loc;
-{
- struct rename_set_data *r;
- r = (struct rename_set_data *) xmalloc (sizeof(*r));
-
- if (GET_CODE (*reg_loc) != REG
- || !CONVERT_REGISTER_TO_SSA_P (REGNO (*reg_loc)))
- abort ();
-
- r->reg_loc = reg_loc;
- r->old_reg = *reg_loc;
- r->prev_reg = ssa_rename_to_lookup(r->old_reg);
- r->set_insn = c->current_insn;
- r->next = c->new_renames;
- c->new_renames = r;
-}
-
-/* This is part of a rather ugly hack to allow the pre-ssa regno to be
- reused. If, during processing, a register has not yet been touched,
- ssa_rename_to[regno][machno] will be NULL. Now, in the course of pushing
- and popping values from ssa_rename_to, when we would ordinarily
- pop NULL back in, we pop RENAME_NO_RTX. We treat this exactly the
- same as NULL, except that it signals that the original regno has
- already been reused. */
-#define RENAME_NO_RTX pc_rtx
-
-/* Move all the entries from NEW_RENAMES onto DONE_RENAMES by
- applying all the renames on NEW_RENAMES. */
-
-static void
-apply_delayed_renames (c)
- struct rename_context *c;
-{
- struct rename_set_data *r;
- struct rename_set_data *last_r = NULL;
-
- for (r = c->new_renames; r != NULL; r = r->next)
- {
- int new_regno;
-
- /* Failure here means that someone has a PARALLEL that sets
- a register twice (bad!). */
- if (ssa_rename_to_lookup (r->old_reg) != r->prev_reg)
- abort ();
- /* Failure here means we have changed REG_LOC before applying
- the rename. */
- /* For the first set we come across, reuse the original regno. */
- if (r->prev_reg == NULL_RTX && !HARD_REGISTER_P (r->old_reg))
- {
- r->new_reg = r->old_reg;
- /* We want to restore RENAME_NO_RTX rather than NULL_RTX. */
- r->prev_reg = RENAME_NO_RTX;
- }
- else
- r->new_reg = gen_reg_rtx (GET_MODE (r->old_reg));
- new_regno = REGNO (r->new_reg);
- ssa_rename_to_insert (r->old_reg, r->new_reg);
-
- if (new_regno >= (int) ssa_definition->num_elements)
- {
- int new_limit = new_regno * 5 / 4;
- VARRAY_GROW (ssa_definition, new_limit);
- }
-
- VARRAY_RTX (ssa_definition, new_regno) = r->set_insn;
- ssa_rename_from_insert (new_regno, r->old_reg);
- last_r = r;
- }
- if (last_r != NULL)
- {
- last_r->next = c->done_renames;
- c->done_renames = c->new_renames;
- c->new_renames = NULL;
- }
-}
-
-/* Part one of the first step of rename_block, called through for_each_rtx.
- Mark pseudos that are set for later update. Transform uses of pseudos. */
-
-static int
-rename_insn_1 (ptr, data)
- rtx *ptr;
- void *data;
-{
- rtx x = *ptr;
- struct rename_context *context = data;
-
- if (x == NULL_RTX)
- return 0;
-
- switch (GET_CODE (x))
- {
- case SET:
- {
- rtx *destp = &SET_DEST (x);
- rtx dest = SET_DEST (x);
-
- /* An assignment to a paradoxical SUBREG does not read from
- the destination operand, and thus does not need to be
- wrapped into a SEQUENCE when translating into SSA form.
- We merely strip off the SUBREG and proceed normally for
- this case. */
- if (GET_CODE (dest) == SUBREG
- && (GET_MODE_SIZE (GET_MODE (dest))
- > GET_MODE_SIZE (GET_MODE (SUBREG_REG (dest))))
- && GET_CODE (SUBREG_REG (dest)) == REG
- && CONVERT_REGISTER_TO_SSA_P (REGNO (SUBREG_REG (dest))))
- {
- destp = &XEXP (dest, 0);
- dest = XEXP (dest, 0);
- }
-
- /* Some SETs also use the REG specified in their LHS.
- These can be detected by the presence of
- STRICT_LOW_PART, SUBREG, SIGN_EXTRACT, and ZERO_EXTRACT
- in the LHS. Handle these by changing
- (set (subreg (reg foo)) ...)
- into
- (sequence [(set (reg foo_1) (reg foo))
- (set (subreg (reg foo_1)) ...)])
-
- FIXME: Much of the time this is too much. For some constructs
- we know that the output register is strictly an output
- (paradoxical SUBREGs and some libcalls for example).
-
- For those cases we are better off not making the false
- dependency. */
- if (GET_CODE (dest) == STRICT_LOW_PART
- || GET_CODE (dest) == SUBREG
- || GET_CODE (dest) == SIGN_EXTRACT
- || GET_CODE (dest) == ZERO_EXTRACT)
- {
- rtx i, reg;
- reg = dest;
-
- while (GET_CODE (reg) == STRICT_LOW_PART
- || GET_CODE (reg) == SUBREG
- || GET_CODE (reg) == SIGN_EXTRACT
- || GET_CODE (reg) == ZERO_EXTRACT)
- reg = XEXP (reg, 0);
-
- if (GET_CODE (reg) == REG
- && CONVERT_REGISTER_TO_SSA_P (REGNO (reg)))
- {
- /* Generate (set reg reg), and do renaming on it so
- that it becomes (set reg_1 reg_0), and we will
- replace reg with reg_1 in the SUBREG. */
-
- struct rename_set_data *saved_new_renames;
- saved_new_renames = context->new_renames;
- context->new_renames = NULL;
- i = emit_insn (gen_rtx_SET (VOIDmode, reg, reg));
- for_each_rtx (&i, rename_insn_1, data);
- apply_delayed_renames (context);
- context->new_renames = saved_new_renames;
- }
- }
- else if (GET_CODE (dest) == REG
- && CONVERT_REGISTER_TO_SSA_P (REGNO (dest)))
- {
- /* We found a genuine set of an interesting register. Tag
- it so that we can create a new name for it after we finish
- processing this insn. */
-
- create_delayed_rename (context, destp);
-
- /* Since we do not wish to (directly) traverse the
- SET_DEST, recurse through for_each_rtx for the SET_SRC
- and return. */
- if (GET_CODE (x) == SET)
- for_each_rtx (&SET_SRC (x), rename_insn_1, data);
- return -1;
- }
-
- /* Otherwise, this was not an interesting destination. Continue
- on, marking uses as normal. */
- return 0;
- }
-
- case REG:
- if (CONVERT_REGISTER_TO_SSA_P (REGNO (x))
- && REGNO (x) < ssa_max_reg_num)
- {
- rtx new_reg = ssa_rename_to_lookup (x);
-
- if (new_reg != RENAME_NO_RTX && new_reg != NULL_RTX)
- {
- if (GET_MODE (x) != GET_MODE (new_reg))
- abort ();
- *ptr = new_reg;
- }
- else
- {
- /* Undefined value used, rename it to a new pseudo register so
- that it cannot conflict with an existing register. */
- *ptr = gen_reg_rtx (GET_MODE (x));
- }
- }
- return -1;
-
- case CLOBBER:
- /* There is considerable debate on how CLOBBERs ought to be
- handled in SSA. For now, we're keeping the CLOBBERs, which
- means that we don't really have SSA form. There are a couple
- of proposals for how to fix this problem, but neither is
- implemented yet. */
- {
- rtx dest = XCEXP (x, 0, CLOBBER);
- if (REG_P (dest))
- {
- if (CONVERT_REGISTER_TO_SSA_P (REGNO (dest))
- && REGNO (dest) < ssa_max_reg_num)
- {
- rtx new_reg = ssa_rename_to_lookup (dest);
- if (new_reg != NULL_RTX && new_reg != RENAME_NO_RTX)
- XCEXP (x, 0, CLOBBER) = new_reg;
- }
- /* Stop traversing. */
- return -1;
- }
- else
- /* Continue traversing. */
- return 0;
- }
-
- case PHI:
- /* Never muck with the phi. We do that elsewhere, special-like. */
- return -1;
-
- default:
- /* Anything else, continue traversing. */
- return 0;
- }
-}
-
-static rtx
-gen_sequence ()
-{
- rtx first_insn = get_insns ();
- rtx result;
- rtx tem;
- int i;
- int len;
-
- /* Count the insns in the chain. */
- len = 0;
- for (tem = first_insn; tem; tem = NEXT_INSN (tem))
- len++;
-
- result = gen_rtx_SEQUENCE (VOIDmode, rtvec_alloc (len));
-
- for (i = 0, tem = first_insn; tem; tem = NEXT_INSN (tem), i++)
- XVECEXP (result, 0, i) = tem;
-
- return result;
-}
-
-static void
-rename_block (bb, idom)
- int bb;
- dominance_info idom;
-{
- basic_block b = BASIC_BLOCK (bb);
- edge e;
- rtx insn, next, last;
- struct rename_set_data *set_data = NULL;
- basic_block c;
-
- /* Step One: Walk the basic block, adding new names for sets and
- replacing uses. */
-
- next = b->head;
- last = b->end;
- do
- {
- insn = next;
- if (INSN_P (insn))
- {
- struct rename_context context;
- context.done_renames = set_data;
- context.new_renames = NULL;
- context.current_insn = insn;
-
- start_sequence ();
- for_each_rtx (&PATTERN (insn), rename_insn_1, &context);
- for_each_rtx (&REG_NOTES (insn), rename_insn_1, &context);
-
- /* Sometimes, we end up with a sequence of insns that
- SSA needs to treat as a single insn. Wrap these in a
- SEQUENCE. (Any notes now get attached to the SEQUENCE,
- not to the old version inner insn.) */
- if (get_insns () != NULL_RTX)
- {
- rtx seq;
- int i;
-
- emit (PATTERN (insn));
- seq = gen_sequence ();
- /* We really want a SEQUENCE of SETs, not a SEQUENCE
- of INSNs. */
- for (i = 0; i < XVECLEN (seq, 0); i++)
- XVECEXP (seq, 0, i) = PATTERN (XVECEXP (seq, 0, i));
- PATTERN (insn) = seq;
- }
- end_sequence ();
-
- apply_delayed_renames (&context);
- set_data = context.done_renames;
- }
-
- next = NEXT_INSN (insn);
- }
- while (insn != last);
-
- /* Step Two: Update the phi nodes of this block's successors. */
-
- for (e = b->succ; e; e = e->succ_next)
- {
- if (e->dest == EXIT_BLOCK_PTR)
- continue;
-
- insn = first_insn_after_basic_block_note (e->dest);
-
- while (PHI_NODE_P (insn))
- {
- rtx phi = PATTERN (insn);
- rtx reg;
-
- /* Find out which of our outgoing registers this node is
- intended to replace. Note that if this is not the first PHI
- node to have been created for this register, we have to
- jump through rename links to figure out which register
- we're talking about. This can easily be recognized by
- noting that the regno is new to this pass. */
- reg = SET_DEST (phi);
- if (REGNO (reg) >= ssa_max_reg_num)
- reg = ssa_rename_from_lookup (REGNO (reg));
- if (reg == NULL_RTX)
- abort ();
- reg = ssa_rename_to_lookup (reg);
-
- /* It is possible for the variable to be uninitialized on
- edges in. Reduce the arity of the PHI so that we don't
- consider those edges. */
- if (reg == NULL || reg == RENAME_NO_RTX)
- {
- if (! remove_phi_alternative (phi, b))
- abort ();
- }
- else
- {
- /* When we created the PHI nodes, we did not know what mode
- the register should be. Now that we've found an original,
- we can fill that in. */
- if (GET_MODE (SET_DEST (phi)) == VOIDmode)
- PUT_MODE (SET_DEST (phi), GET_MODE (reg));
- else if (GET_MODE (SET_DEST (phi)) != GET_MODE (reg))
- abort ();
-
- *phi_alternative (phi, bb) = reg;
- }
-
- insn = NEXT_INSN (insn);
- }
- }
-
- /* Step Three: Do the same to the children of this block in
- dominator order. */
-
- FOR_EACH_BB (c)
- if (get_immediate_dominator (idom, c)->index == bb)
- rename_block (c->index, idom);
-
- /* Step Four: Update the sets to refer to their new register,
- and restore ssa_rename_to to its previous state. */
-
- while (set_data)
- {
- struct rename_set_data *next;
- rtx old_reg = *set_data->reg_loc;
-
- if (*set_data->reg_loc != set_data->old_reg)
- abort ();
- *set_data->reg_loc = set_data->new_reg;
-
- ssa_rename_to_insert (old_reg, set_data->prev_reg);
-
- next = set_data->next;
- free (set_data);
- set_data = next;
- }
-}
-
-static void
-rename_registers (nregs, idom)
- int nregs;
- dominance_info idom;
-{
- VARRAY_RTX_INIT (ssa_definition, nregs * 3, "ssa_definition");
- ssa_rename_from_initialize ();
-
- ssa_rename_to_pseudo = (rtx *) alloca (nregs * sizeof(rtx));
- memset ((char *) ssa_rename_to_pseudo, 0, nregs * sizeof(rtx));
- memset ((char *) ssa_rename_to_hard, 0,
- FIRST_PSEUDO_REGISTER * NUM_MACHINE_MODES * sizeof (rtx));
-
- rename_block (0, idom);
-
- /* ??? Update basic_block_live_at_start, and other flow info
- as needed. */
-
- ssa_rename_to_pseudo = NULL;
-}
-
-/* The main entry point for moving to SSA. */
-
-void
-convert_to_ssa ()
-{
- /* Element I is the set of blocks that set register I. */
- sbitmap *evals;
-
- /* Dominator bitmaps. */
- sbitmap *dfs;
- sbitmap *idfs;
-
- /* Element I is the immediate dominator of block I. */
- dominance_info idom;
-
- int nregs;
-
- basic_block bb;
-
- /* Don't do it twice. */
- if (in_ssa_form)
- abort ();
-
- /* Need global_live_at_{start,end} up to date. Do not remove any
- dead code. We'll let the SSA optimizers do that. */
- life_analysis (get_insns (), NULL, 0);
-
- idom = calculate_dominance_info (CDI_DOMINATORS);
-
- if (rtl_dump_file)
- {
- fputs (";; Immediate Dominators:\n", rtl_dump_file);
- FOR_EACH_BB (bb)
- fprintf (rtl_dump_file, ";\t%3d = %3d\n", bb->index,
- get_immediate_dominator (idom, bb)->index);
- fflush (rtl_dump_file);
- }
-
- /* Compute dominance frontiers. */
-
- dfs = sbitmap_vector_alloc (last_basic_block, last_basic_block);
- compute_dominance_frontiers (dfs, idom);
-
- if (rtl_dump_file)
- {
- dump_sbitmap_vector (rtl_dump_file, ";; Dominance Frontiers:",
- "; Basic Block", dfs, last_basic_block);
- fflush (rtl_dump_file);
- }
-
- /* Compute register evaluations. */
-
- ssa_max_reg_num = max_reg_num ();
- nregs = ssa_max_reg_num;
- evals = sbitmap_vector_alloc (nregs, last_basic_block);
- find_evaluations (evals, nregs);
-
- /* Compute the iterated dominance frontier for each register. */
-
- idfs = sbitmap_vector_alloc (nregs, last_basic_block);
- compute_iterated_dominance_frontiers (idfs, dfs, evals, nregs);
-
- if (rtl_dump_file)
- {
- dump_sbitmap_vector (rtl_dump_file, ";; Iterated Dominance Frontiers:",
- "; Register", idfs, nregs);
- fflush (rtl_dump_file);
- }
-
- /* Insert the phi nodes. */
-
- insert_phi_nodes (idfs, evals, nregs);
-
- /* Rename the registers to satisfy SSA. */
-
- rename_registers (nregs, idom);
-
- /* All done! Clean up and go home. */
-
- sbitmap_vector_free (dfs);
- sbitmap_vector_free (evals);
- sbitmap_vector_free (idfs);
- in_ssa_form = 1;
-
- reg_scan (get_insns (), max_reg_num (), 1);
- free_dominance_info (idom);
-}
-
-/* REG is the representative temporary of its partition. Add it to the
- set of nodes to be processed, if it hasn't been already. Return the
- index of this register in the node set. */
-
-static inline int
-ephi_add_node (reg, nodes, n_nodes)
- rtx reg, *nodes;
- int *n_nodes;
-{
- int i;
- for (i = *n_nodes - 1; i >= 0; --i)
- if (REGNO (reg) == REGNO (nodes[i]))
- return i;
-
- nodes[i = (*n_nodes)++] = reg;
- return i;
-}
-
-/* Part one of the topological sort. This is a forward (downward) search
- through the graph collecting a stack of nodes to process. Assuming no
- cycles, the nodes at top of the stack when we are finished will have
- no other dependencies. */
-
-static int *
-ephi_forward (t, visited, succ, tstack)
- int t;
- sbitmap visited;
- sbitmap *succ;
- int *tstack;
-{
- int s;
-
- SET_BIT (visited, t);
-
- EXECUTE_IF_SET_IN_SBITMAP (succ[t], 0, s,
- {
- if (! TEST_BIT (visited, s))
- tstack = ephi_forward (s, visited, succ, tstack);
- });
-
- *tstack++ = t;
- return tstack;
-}
-
-/* Part two of the topological sort. The is a backward search through
- a cycle in the graph, copying the data forward as we go. */
-
-static void
-ephi_backward (t, visited, pred, nodes)
- int t;
- sbitmap visited, *pred;
- rtx *nodes;
-{
- int p;
-
- SET_BIT (visited, t);
-
- EXECUTE_IF_SET_IN_SBITMAP (pred[t], 0, p,
- {
- if (! TEST_BIT (visited, p))
- {
- ephi_backward (p, visited, pred, nodes);
- emit_move_insn (nodes[p], nodes[t]);
- }
- });
-}
-
-/* Part two of the topological sort. Create the copy for a register
- and any cycle of which it is a member. */
-
-static void
-ephi_create (t, visited, pred, succ, nodes)
- int t;
- sbitmap visited, *pred, *succ;
- rtx *nodes;
-{
- rtx reg_u = NULL_RTX;
- int unvisited_predecessors = 0;
- int p;
-
- /* Iterate through the predecessor list looking for unvisited nodes.
- If there are any, we have a cycle, and must deal with that. At
- the same time, look for a visited predecessor. If there is one,
- we won't need to create a temporary. */
-
- EXECUTE_IF_SET_IN_SBITMAP (pred[t], 0, p,
- {
- if (! TEST_BIT (visited, p))
- unvisited_predecessors = 1;
- else if (!reg_u)
- reg_u = nodes[p];
- });
-
- if (unvisited_predecessors)
- {
- /* We found a cycle. Copy out one element of the ring (if necessary),
- then traverse the ring copying as we go. */
-
- if (!reg_u)
- {
- reg_u = gen_reg_rtx (GET_MODE (nodes[t]));
- emit_move_insn (reg_u, nodes[t]);
- }
-
- EXECUTE_IF_SET_IN_SBITMAP (pred[t], 0, p,
- {
- if (! TEST_BIT (visited, p))
- {
- ephi_backward (p, visited, pred, nodes);
- emit_move_insn (nodes[p], reg_u);
- }
- });
- }
- else
- {
- /* No cycle. Just copy the value from a successor. */
-
- int s;
- EXECUTE_IF_SET_IN_SBITMAP (succ[t], 0, s,
- {
- SET_BIT (visited, t);
- emit_move_insn (nodes[t], nodes[s]);
- return;
- });
- }
-}
-
-/* Convert the edge to normal form. */
-
-static void
-eliminate_phi (e, reg_partition)
- edge e;
- partition reg_partition;
-{
- int n_nodes;
- sbitmap *pred, *succ;
- sbitmap visited;
- rtx *nodes;
- int *stack, *tstack;
- rtx insn;
- int i;
-
- /* Collect an upper bound on the number of registers needing processing. */
-
- insn = first_insn_after_basic_block_note (e->dest);
-
- n_nodes = 0;
- while (PHI_NODE_P (insn))
- {
- insn = next_nonnote_insn (insn);
- n_nodes += 2;
- }
-
- if (n_nodes == 0)
- return;
-
- /* Build the auxiliary graph R(B).
-
- The nodes of the graph are the members of the register partition
- present in Phi(B). There is an edge from FIND(T0)->FIND(T1) for
- each T0 = PHI(...,T1,...), where T1 is for the edge from block C. */
-
- nodes = (rtx *) alloca (n_nodes * sizeof(rtx));
- pred = sbitmap_vector_alloc (n_nodes, n_nodes);
- succ = sbitmap_vector_alloc (n_nodes, n_nodes);
- sbitmap_vector_zero (pred, n_nodes);
- sbitmap_vector_zero (succ, n_nodes);
-
- insn = first_insn_after_basic_block_note (e->dest);
-
- n_nodes = 0;
- for (; PHI_NODE_P (insn); insn = next_nonnote_insn (insn))
- {
- rtx* preg = phi_alternative (PATTERN (insn), e->src->index);
- rtx tgt = SET_DEST (PATTERN (insn));
- rtx reg;
-
- /* There may be no phi alternative corresponding to this edge.
- This indicates that the phi variable is undefined along this
- edge. */
- if (preg == NULL)
- continue;
- reg = *preg;
-
- if (GET_CODE (reg) != REG || GET_CODE (tgt) != REG)
- abort ();
-
- reg = regno_reg_rtx[partition_find (reg_partition, REGNO (reg))];
- tgt = regno_reg_rtx[partition_find (reg_partition, REGNO (tgt))];
- /* If the two registers are already in the same partition,
- nothing will need to be done. */
- if (reg != tgt)
- {
- int ireg, itgt;
-
- ireg = ephi_add_node (reg, nodes, &n_nodes);
- itgt = ephi_add_node (tgt, nodes, &n_nodes);
-
- SET_BIT (pred[ireg], itgt);
- SET_BIT (succ[itgt], ireg);
- }
- }
-
- if (n_nodes == 0)
- goto out;
-
- /* Begin a topological sort of the graph. */
-
- visited = sbitmap_alloc (n_nodes);
- sbitmap_zero (visited);
-
- tstack = stack = (int *) alloca (n_nodes * sizeof (int));
-
- for (i = 0; i < n_nodes; ++i)
- if (! TEST_BIT (visited, i))
- tstack = ephi_forward (i, visited, succ, tstack);
-
- sbitmap_zero (visited);
-
- /* As we find a solution to the tsort, collect the implementation
- insns in a sequence. */
- start_sequence ();
-
- while (tstack != stack)
- {
- i = *--tstack;
- if (! TEST_BIT (visited, i))
- ephi_create (i, visited, pred, succ, nodes);
- }
-
- insn = get_insns ();
- end_sequence ();
- insert_insn_on_edge (insn, e);
- if (rtl_dump_file)
- fprintf (rtl_dump_file, "Emitting copy on edge (%d,%d)\n",
- e->src->index, e->dest->index);
-
- sbitmap_free (visited);
-out:
- sbitmap_vector_free (pred);
- sbitmap_vector_free (succ);
-}
-
-/* For basic block B, consider all phi insns which provide an
- alternative corresponding to an incoming abnormal critical edge.
- Place the phi alternative corresponding to that abnormal critical
- edge in the same register class as the destination of the set.
-
- From Morgan, p. 178:
-
- For each abnormal critical edge (C, B),
- if T0 = phi (T1, ..., Ti, ..., Tm) is a phi node in B,
- and C is the ith predecessor of B,
- then T0 and Ti must be equivalent.
-
- Return nonzero iff any such cases were found for which the two
- regs were not already in the same class. */
-
-static int
-make_regs_equivalent_over_bad_edges (bb, reg_partition)
- int bb;
- partition reg_partition;
-{
- int changed = 0;
- basic_block b = BASIC_BLOCK (bb);
- rtx phi;
-
- /* Advance to the first phi node. */
- phi = first_insn_after_basic_block_note (b);
-
- /* Scan all the phi nodes. */
- for (;
- PHI_NODE_P (phi);
- phi = next_nonnote_insn (phi))
- {
- edge e;
- int tgt_regno;
- rtx set = PATTERN (phi);
- rtx tgt = SET_DEST (set);
-
- /* The set target is expected to be an SSA register. */
- if (GET_CODE (tgt) != REG
- || !CONVERT_REGISTER_TO_SSA_P (REGNO (tgt)))
- abort ();
- tgt_regno = REGNO (tgt);
-
- /* Scan incoming abnormal critical edges. */
- for (e = b->pred; e; e = e->pred_next)
- if ((e->flags & EDGE_ABNORMAL) && EDGE_CRITICAL_P (e))
- {
- rtx *alt = phi_alternative (set, e->src->index);
- int alt_regno;
-
- /* If there is no alternative corresponding to this edge,
- the value is undefined along the edge, so just go on. */
- if (alt == 0)
- continue;
-
- /* The phi alternative is expected to be an SSA register. */
- if (GET_CODE (*alt) != REG
- || !CONVERT_REGISTER_TO_SSA_P (REGNO (*alt)))
- abort ();
- alt_regno = REGNO (*alt);
-
- /* If the set destination and the phi alternative aren't
- already in the same class... */
- if (partition_find (reg_partition, tgt_regno)
- != partition_find (reg_partition, alt_regno))
- {
- /* ... make them such. */
- if (conflicting_hard_regs_p (tgt_regno, alt_regno))
- /* It is illegal to unify a hard register with a
- different register. */
- abort ();
-
- partition_union (reg_partition,
- tgt_regno, alt_regno);
- ++changed;
- }
- }
- }
-
- return changed;
-}
-
-/* Consider phi insns in basic block BB pairwise. If the set target
- of both isns are equivalent pseudos, make the corresponding phi
- alternatives in each phi corresponding equivalent.
-
- Return nonzero if any new register classes were unioned. */
-
-static int
-make_equivalent_phi_alternatives_equivalent (bb, reg_partition)
- int bb;
- partition reg_partition;
-{
- int changed = 0;
- basic_block b = BASIC_BLOCK (bb);
- rtx phi;
-
- /* Advance to the first phi node. */
- phi = first_insn_after_basic_block_note (b);
-
- /* Scan all the phi nodes. */
- for (;
- PHI_NODE_P (phi);
- phi = next_nonnote_insn (phi))
- {
- rtx set = PATTERN (phi);
- /* The regno of the destination of the set. */
- int tgt_regno = REGNO (SET_DEST (PATTERN (phi)));
-
- rtx phi2 = next_nonnote_insn (phi);
-
- /* Scan all phi nodes following this one. */
- for (;
- PHI_NODE_P (phi2);
- phi2 = next_nonnote_insn (phi2))
- {
- rtx set2 = PATTERN (phi2);
- /* The regno of the destination of the set. */
- int tgt2_regno = REGNO (SET_DEST (set2));
-
- /* Are the set destinations equivalent regs? */
- if (partition_find (reg_partition, tgt_regno) ==
- partition_find (reg_partition, tgt2_regno))
- {
- edge e;
- /* Scan over edges. */
- for (e = b->pred; e; e = e->pred_next)
- {
- int pred_block = e->src->index;
- /* Identify the phi alternatives from both phi
- nodes corresponding to this edge. */
- rtx *alt = phi_alternative (set, pred_block);
- rtx *alt2 = phi_alternative (set2, pred_block);
-
- /* If one of the phi nodes doesn't have a
- corresponding alternative, just skip it. */
- if (alt == 0 || alt2 == 0)
- continue;
-
- /* Both alternatives should be SSA registers. */
- if (GET_CODE (*alt) != REG
- || !CONVERT_REGISTER_TO_SSA_P (REGNO (*alt)))
- abort ();
- if (GET_CODE (*alt2) != REG
- || !CONVERT_REGISTER_TO_SSA_P (REGNO (*alt2)))
- abort ();
-
- /* If the alternatives aren't already in the same
- class ... */
- if (partition_find (reg_partition, REGNO (*alt))
- != partition_find (reg_partition, REGNO (*alt2)))
- {
- /* ... make them so. */
- if (conflicting_hard_regs_p (REGNO (*alt), REGNO (*alt2)))
- /* It is illegal to unify a hard register with
- a different register. */
- abort ();
-
- partition_union (reg_partition,
- REGNO (*alt), REGNO (*alt2));
- ++changed;
- }
- }
- }
- }
- }
-
- return changed;
-}
-
-/* Compute a conservative partition of outstanding pseudo registers.
- See Morgan 7.3.1. */
-
-static partition
-compute_conservative_reg_partition ()
-{
- basic_block bb;
- int changed = 0;
-
- /* We don't actually work with hard registers, but it's easier to
- carry them around anyway rather than constantly doing register
- number arithmetic. */
- partition p =
- partition_new (ssa_definition->num_elements);
-
- /* The first priority is to make sure registers that might have to
- be copied on abnormal critical edges are placed in the same
- partition. This saves us from having to split abnormal critical
- edges. */
- FOR_EACH_BB_REVERSE (bb)
- changed += make_regs_equivalent_over_bad_edges (bb->index, p);
-
- /* Now we have to insure that corresponding arguments of phi nodes
- assigning to corresponding regs are equivalent. Iterate until
- nothing changes. */
- while (changed > 0)
- {
- changed = 0;
- FOR_EACH_BB_REVERSE (bb)
- changed += make_equivalent_phi_alternatives_equivalent (bb->index, p);
- }
-
- return p;
-}
-
-/* The following functions compute a register partition that attempts
- to eliminate as many reg copies and phi node copies as possible by
- coalescing registers. This is the strategy:
-
- 1. As in the conservative case, the top priority is to coalesce
- registers that otherwise would cause copies to be placed on
- abnormal critical edges (which isn't possible).
-
- 2. Figure out which regs are involved (in the LHS or RHS) of
- copies and phi nodes. Compute conflicts among these regs.
-
- 3. Walk around the instruction stream, placing two regs in the
- same class of the partition if one appears on the LHS and the
- other on the RHS of a copy or phi node and the two regs don't
- conflict. The conflict information of course needs to be
- updated.
-
- 4. If anything has changed, there may be new opportunities to
- coalesce regs, so go back to 2.
-*/
-
-/* If REG1 and REG2 don't conflict in CONFLICTS, place them in the
- same class of partition P, if they aren't already. Update
- CONFLICTS appropriately.
-
- Returns one if REG1 and REG2 were placed in the same class but were
- not previously; zero otherwise.
-
- See Morgan figure 11.15. */
-
-static int
-coalesce_if_unconflicting (p, conflicts, reg1, reg2)
- partition p;
- conflict_graph conflicts;
- int reg1;
- int reg2;
-{
- int reg;
-
- /* Work only on SSA registers. */
- if (!CONVERT_REGISTER_TO_SSA_P (reg1) || !CONVERT_REGISTER_TO_SSA_P (reg2))
- return 0;
-
- /* Find the canonical regs for the classes containing REG1 and
- REG2. */
- reg1 = partition_find (p, reg1);
- reg2 = partition_find (p, reg2);
-
- /* If they're already in the same class, there's nothing to do. */
- if (reg1 == reg2)
- return 0;
-
- /* If the regs conflict, our hands are tied. */
- if (conflicting_hard_regs_p (reg1, reg2) ||
- conflict_graph_conflict_p (conflicts, reg1, reg2))
- return 0;
-
- /* We're good to go. Put the regs in the same partition. */
- partition_union (p, reg1, reg2);
-
- /* Find the new canonical reg for the merged class. */
- reg = partition_find (p, reg1);
-
- /* Merge conflicts from the two previous classes. */
- conflict_graph_merge_regs (conflicts, reg, reg1);
- conflict_graph_merge_regs (conflicts, reg, reg2);
-
- return 1;
-}
-
-/* For each register copy insn in basic block BB, place the LHS and
- RHS regs in the same class in partition P if they do not conflict
- according to CONFLICTS.
-
- Returns the number of changes that were made to P.
-
- See Morgan figure 11.14. */
-
-static int
-coalesce_regs_in_copies (bb, p, conflicts)
- basic_block bb;
- partition p;
- conflict_graph conflicts;
-{
- int changed = 0;
- rtx insn;
- rtx end = bb->end;
-
- /* Scan the instruction stream of the block. */
- for (insn = bb->head; insn != end; insn = NEXT_INSN (insn))
- {
- rtx pattern;
- rtx src;
- rtx dest;
-
- /* If this isn't a set insn, go to the next insn. */
- if (GET_CODE (insn) != INSN)
- continue;
- pattern = PATTERN (insn);
- if (GET_CODE (pattern) != SET)
- continue;
-
- src = SET_SRC (pattern);
- dest = SET_DEST (pattern);
-
- /* We're only looking for copies. */
- if (GET_CODE (src) != REG || GET_CODE (dest) != REG)
- continue;
-
- /* Coalesce only if the reg modes are the same. As long as
- each reg's rtx is unique, it can have only one mode, so two
- pseudos of different modes can't be coalesced into one.
-
- FIXME: We can probably get around this by inserting SUBREGs
- where appropriate, but for now we don't bother. */
- if (GET_MODE (src) != GET_MODE (dest))
- continue;
-
- /* Found a copy; see if we can use the same reg for both the
- source and destination (and thus eliminate the copy,
- ultimately). */
- changed += coalesce_if_unconflicting (p, conflicts,
- REGNO (src), REGNO (dest));
- }
-
- return changed;
-}
-
-struct phi_coalesce_context
-{
- partition p;
- conflict_graph conflicts;
- int changed;
-};
-
-/* Callback function for for_each_successor_phi. If the set
- destination and the phi alternative regs do not conflict, place
- them in the same paritition class. DATA is a pointer to a
- phi_coalesce_context struct. */
-
-static int
-coalesce_reg_in_phi (insn, dest_regno, src_regno, data)
- rtx insn ATTRIBUTE_UNUSED;
- int dest_regno;
- int src_regno;
- void *data;
-{
- struct phi_coalesce_context *context =
- (struct phi_coalesce_context *) data;
-
- /* Attempt to use the same reg, if they don't conflict. */
- context->changed
- += coalesce_if_unconflicting (context->p, context->conflicts,
- dest_regno, src_regno);
- return 0;
-}
-
-/* For each alternative in a phi function corresponding to basic block
- BB (in phi nodes in successor block to BB), place the reg in the
- phi alternative and the reg to which the phi value is set into the
- same class in partition P, if allowed by CONFLICTS.
-
- Return the number of changes that were made to P.
-
- See Morgan figure 11.14. */
-
-static int
-coalesce_regs_in_successor_phi_nodes (bb, p, conflicts)
- basic_block bb;
- partition p;
- conflict_graph conflicts;
-{
- struct phi_coalesce_context context;
- context.p = p;
- context.conflicts = conflicts;
- context.changed = 0;
-
- for_each_successor_phi (bb, &coalesce_reg_in_phi, &context);
-
- return context.changed;
-}
-
-/* Compute and return a partition of pseudos. Where possible,
- non-conflicting pseudos are placed in the same class.
-
- The caller is responsible for deallocating the returned partition. */
-
-static partition
-compute_coalesced_reg_partition ()
-{
- basic_block bb;
- int changed = 0;
- regset_head phi_set_head;
- regset phi_set = &phi_set_head;
-
- partition p =
- partition_new (ssa_definition->num_elements);
-
- /* The first priority is to make sure registers that might have to
- be copied on abnormal critical edges are placed in the same
- partition. This saves us from having to split abnormal critical
- edges (which can't be done). */
- FOR_EACH_BB_REVERSE (bb)
- make_regs_equivalent_over_bad_edges (bb->index, p);
-
- INIT_REG_SET (phi_set);
-
- do
- {
- conflict_graph conflicts;
-
- changed = 0;
-
- /* Build the set of registers involved in phi nodes, either as
- arguments to the phi function or as the target of a set. */
- CLEAR_REG_SET (phi_set);
- mark_phi_and_copy_regs (phi_set);
-
- /* Compute conflicts. */
- conflicts = conflict_graph_compute (phi_set, p);
-
- /* FIXME: Better would be to process most frequently executed
- blocks first, so that most frequently executed copies would
- be more likely to be removed by register coalescing. But any
- order will generate correct, if non-optimal, results. */
- FOR_EACH_BB_REVERSE (bb)
- {
- changed += coalesce_regs_in_copies (bb, p, conflicts);
- changed +=
- coalesce_regs_in_successor_phi_nodes (bb, p, conflicts);
- }
-
- conflict_graph_delete (conflicts);
- }
- while (changed > 0);
-
- FREE_REG_SET (phi_set);
-
- return p;
-}
-
-/* Mark the regs in a phi node. PTR is a phi expression or one of its
- components (a REG or a CONST_INT). DATA is a reg set in which to
- set all regs. Called from for_each_rtx. */
-
-static int
-mark_reg_in_phi (ptr, data)
- rtx *ptr;
- void *data;
-{
- rtx expr = *ptr;
- regset set = (regset) data;
-
- switch (GET_CODE (expr))
- {
- case REG:
- SET_REGNO_REG_SET (set, REGNO (expr));
- /* Fall through. */
- case CONST_INT:
- case PHI:
- return 0;
- default:
- abort ();
- }
-}
-
-/* Mark in PHI_SET all pseudos that are used in a phi node -- either
- set from a phi expression, or used as an argument in one. Also
- mark regs that are the source or target of a reg copy. Uses
- ssa_definition. */
-
-static void
-mark_phi_and_copy_regs (phi_set)
- regset phi_set;
-{
- unsigned int reg;
-
- /* Scan the definitions of all regs. */
- for (reg = 0; reg < VARRAY_SIZE (ssa_definition); ++reg)
- if (CONVERT_REGISTER_TO_SSA_P (reg))
- {
- rtx insn = VARRAY_RTX (ssa_definition, reg);
- rtx pattern;
- rtx src;
-
- if (insn == NULL
- || (GET_CODE (insn) == NOTE
- && NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED))
- continue;
- pattern = PATTERN (insn);
- /* Sometimes we get PARALLEL insns. These aren't phi nodes or
- copies. */
- if (GET_CODE (pattern) != SET)
- continue;
- src = SET_SRC (pattern);
-
- if (GET_CODE (src) == REG)
- {
- /* It's a reg copy. */
- SET_REGNO_REG_SET (phi_set, reg);
- SET_REGNO_REG_SET (phi_set, REGNO (src));
- }
- else if (GET_CODE (src) == PHI)
- {
- /* It's a phi node. Mark the reg being set. */
- SET_REGNO_REG_SET (phi_set, reg);
- /* Mark the regs used in the phi function. */
- for_each_rtx (&src, mark_reg_in_phi, phi_set);
- }
- /* ... else nothing to do. */
- }
-}
-
-/* Rename regs in insn PTR that are equivalent. DATA is the register
- partition which specifies equivalences. */
-
-static int
-rename_equivalent_regs_in_insn (ptr, data)
- rtx *ptr;
- void* data;
-{
- rtx x = *ptr;
- partition reg_partition = (partition) data;
-
- if (x == NULL_RTX)
- return 0;
-
- switch (GET_CODE (x))
- {
- case REG:
- if (CONVERT_REGISTER_TO_SSA_P (REGNO (x)))
- {
- unsigned int regno = REGNO (x);
- unsigned int new_regno = partition_find (reg_partition, regno);
- rtx canonical_element_rtx = ssa_rename_from_lookup (new_regno);
-
- if (canonical_element_rtx != NULL_RTX &&
- HARD_REGISTER_P (canonical_element_rtx))
- {
- if (REGNO (canonical_element_rtx) != regno)
- *ptr = canonical_element_rtx;
- }
- else if (regno != new_regno)
- {
- rtx new_reg = regno_reg_rtx[new_regno];
- if (GET_MODE (x) != GET_MODE (new_reg))
- abort ();
- *ptr = new_reg;
- }
- }
- return -1;
-
- case PHI:
- /* No need to rename the phi nodes. We'll check equivalence
- when inserting copies. */
- return -1;
-
- default:
- /* Anything else, continue traversing. */
- return 0;
- }
-}
-
-/* Record the register's canonical element stored in SRFP in the
- canonical_elements sbitmap packaged in DATA. This function is used
- as a callback function for traversing ssa_rename_from. */
-
-static int
-record_canonical_element_1 (srfp, data)
- void **srfp;
- void *data;
-{
- unsigned int reg = ((ssa_rename_from_pair *) *srfp)->reg;
- sbitmap canonical_elements =
- ((struct ssa_rename_from_hash_table_data *) data)->canonical_elements;
- partition reg_partition =
- ((struct ssa_rename_from_hash_table_data *) data)->reg_partition;
-
- SET_BIT (canonical_elements, partition_find (reg_partition, reg));
- return 1;
-}
-
-/* For each class in the REG_PARTITION corresponding to a particular
- hard register and machine mode, check that there are no other
- classes with the same hard register and machine mode. Returns
- nonzero if this is the case, i.e., the partition is acceptable. */
-
-static int
-check_hard_regs_in_partition (reg_partition)
- partition reg_partition;
-{
- /* CANONICAL_ELEMENTS has a nonzero bit if a class with the given register
- number and machine mode has already been seen. This is a
- problem with the partition. */
- sbitmap canonical_elements;
- int element_index;
- int already_seen[FIRST_PSEUDO_REGISTER][NUM_MACHINE_MODES];
- int reg;
- int mach_mode;
-
- /* Collect a list of canonical elements. */
- canonical_elements = sbitmap_alloc (max_reg_num ());
- sbitmap_zero (canonical_elements);
- ssa_rename_from_traverse (&record_canonical_element_1,
- canonical_elements, reg_partition);
-
- /* We have not seen any hard register uses. */
- for (reg = 0; reg < FIRST_PSEUDO_REGISTER; ++reg)
- for (mach_mode = 0; mach_mode < NUM_MACHINE_MODES; ++mach_mode)
- already_seen[reg][mach_mode] = 0;
-
- /* Check for classes with the same hard register and machine mode. */
- EXECUTE_IF_SET_IN_SBITMAP (canonical_elements, 0, element_index,
- {
- rtx hard_reg_rtx = ssa_rename_from_lookup (element_index);
- if (hard_reg_rtx != NULL_RTX &&
- HARD_REGISTER_P (hard_reg_rtx) &&
- already_seen[REGNO (hard_reg_rtx)][GET_MODE (hard_reg_rtx)] != 0)
- /* Two distinct partition classes should be mapped to the same
- hard register. */
- return 0;
- });
-
- sbitmap_free (canonical_elements);
-
- return 1;
-}
-
-/* Rename regs that are equivalent in REG_PARTITION. Also collapse
- any SEQUENCE insns. */
-
-static void
-rename_equivalent_regs (reg_partition)
- partition reg_partition;
-{
- basic_block b;
-
- FOR_EACH_BB_REVERSE (b)
- {
- rtx next = b->head;
- rtx last = b->end;
- rtx insn;
-
- do
- {
- insn = next;
- if (INSN_P (insn))
- {
- for_each_rtx (&PATTERN (insn),
- rename_equivalent_regs_in_insn,
- reg_partition);
- for_each_rtx (&REG_NOTES (insn),
- rename_equivalent_regs_in_insn,
- reg_partition);
-
- if (GET_CODE (PATTERN (insn)) == SEQUENCE)
- {
- rtx s = PATTERN (insn);
- int slen = XVECLEN (s, 0);
- int i;
-
- if (slen <= 1)
- abort ();
-
- PATTERN (insn) = XVECEXP (s, 0, slen-1);
- for (i = 0; i < slen - 1; i++)
- emit_insn_before (XVECEXP (s, 0, i), insn);
- }
- }
-
- next = NEXT_INSN (insn);
- }
- while (insn != last);
- }
-}
-
-/* The main entry point for moving from SSA. */
-
-void
-convert_from_ssa ()
-{
- basic_block b, bb;
- partition reg_partition;
- rtx insns = get_insns ();
-
- /* Need global_live_at_{start,end} up to date. There should not be
- any significant dead code at this point, except perhaps dead
- stores. So do not take the time to perform dead code elimination.
-
- Register coalescing needs death notes, so generate them. */
- life_analysis (insns, NULL, PROP_DEATH_NOTES);
-
- /* Figure out which regs in copies and phi nodes don't conflict and
- therefore can be coalesced. */
- if (conservative_reg_partition)
- reg_partition = compute_conservative_reg_partition ();
- else
- reg_partition = compute_coalesced_reg_partition ();
-
- if (!check_hard_regs_in_partition (reg_partition))
- /* Two separate partitions should correspond to the same hard
- register but do not. */
- abort ();
-
- rename_equivalent_regs (reg_partition);
-
- /* Eliminate the PHI nodes. */
- FOR_EACH_BB_REVERSE (b)
- {
- edge e;
-
- for (e = b->pred; e; e = e->pred_next)
- if (e->src != ENTRY_BLOCK_PTR)
- eliminate_phi (e, reg_partition);
- }
-
- partition_delete (reg_partition);
-
- /* Actually delete the PHI nodes. */
- FOR_EACH_BB_REVERSE (bb)
- {
- rtx insn = bb->head;
-
- while (1)
- {
- /* If this is a PHI node delete it. */
- if (PHI_NODE_P (insn))
- {
- if (insn == bb->end)
- bb->end = PREV_INSN (insn);
- insn = delete_insn (insn);
- }
- /* Since all the phi nodes come at the beginning of the
- block, if we find an ordinary insn, we can stop looking
- for more phi nodes. */
- else if (INSN_P (insn))
- break;
- /* If we've reached the end of the block, stop. */
- else if (insn == bb->end)
- break;
- else
- insn = NEXT_INSN (insn);
- }
- }
-
- /* Commit all the copy nodes needed to convert out of SSA form. */
- commit_edge_insertions ();
-
- in_ssa_form = 0;
-
- count_or_remove_death_notes (NULL, 1);
-
- /* Deallocate the data structures. */
- ssa_definition = 0;
- ssa_rename_from_free ();
-}
-
-/* Scan phi nodes in successors to BB. For each such phi node that
- has a phi alternative value corresponding to BB, invoke FN. FN
- is passed the entire phi node insn, the regno of the set
- destination, the regno of the phi argument corresponding to BB,
- and DATA.
-
- If FN ever returns nonzero, stops immediately and returns this
- value. Otherwise, returns zero. */
-
-int
-for_each_successor_phi (bb, fn, data)
- basic_block bb;
- successor_phi_fn fn;
- void *data;
-{
- edge e;
-
- if (bb == EXIT_BLOCK_PTR)
- return 0;
-
- /* Scan outgoing edges. */
- for (e = bb->succ; e != NULL; e = e->succ_next)
- {
- rtx insn;
-
- basic_block successor = e->dest;
- if (successor == ENTRY_BLOCK_PTR
- || successor == EXIT_BLOCK_PTR)
- continue;
-
- /* Advance to the first non-label insn of the successor block. */
- insn = first_insn_after_basic_block_note (successor);
-
- if (insn == NULL)
- continue;
-
- /* Scan phi nodes in the successor. */
- for ( ; PHI_NODE_P (insn); insn = NEXT_INSN (insn))
- {
- int result;
- rtx phi_set = PATTERN (insn);
- rtx *alternative = phi_alternative (phi_set, bb->index);
- rtx phi_src;
-
- /* This phi function may not have an alternative
- corresponding to the incoming edge, indicating the
- assigned variable is not defined along the edge. */
- if (alternative == NULL)
- continue;
- phi_src = *alternative;
-
- /* Invoke the callback. */
- result = (*fn) (insn, REGNO (SET_DEST (phi_set)),
- REGNO (phi_src), data);
-
- /* Terminate if requested. */
- if (result != 0)
- return result;
- }
- }
-
- return 0;
-}
-
-/* Assuming the ssa_rename_from mapping has been established, yields
- nonzero if 1) only one SSA register of REG1 and REG2 comes from a
- hard register or 2) both SSA registers REG1 and REG2 come from
- different hard registers. */
-
-static int
-conflicting_hard_regs_p (reg1, reg2)
- int reg1;
- int reg2;
-{
- int orig_reg1 = original_register (reg1);
- int orig_reg2 = original_register (reg2);
- if (HARD_REGISTER_NUM_P (orig_reg1) && HARD_REGISTER_NUM_P (orig_reg2)
- && orig_reg1 != orig_reg2)
- return 1;
- if (HARD_REGISTER_NUM_P (orig_reg1) && !HARD_REGISTER_NUM_P (orig_reg2))
- return 1;
- if (!HARD_REGISTER_NUM_P (orig_reg1) && HARD_REGISTER_NUM_P (orig_reg2))
- return 1;
-
- return 0;
-}
diff --git a/contrib/gcc/ssa.h b/contrib/gcc/ssa.h
deleted file mode 100644
index 115f77d..0000000
--- a/contrib/gcc/ssa.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Static Single Assignment (SSA) definitions for GNU C-Compiler
- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
- Written by Jeffrey D. Oldham <oldham@codesourcery.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 2, 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, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA. */
-
-
-/* Main SSA routines. */
-extern void convert_to_ssa PARAMS ((void));
-extern void convert_from_ssa PARAMS ((void));
-typedef int (*successor_phi_fn) PARAMS ((rtx, int, int, void *));
-extern int for_each_successor_phi PARAMS ((basic_block bb,
- successor_phi_fn,
- void *));
-void compute_dominance_frontiers PARAMS ((sbitmap *frontiers,
- dominance_info idom));
-extern int remove_phi_alternative PARAMS ((rtx, basic_block));
-
-
-/* Optimizations. */
-/* In ssa-dce.c */
-extern void ssa_eliminate_dead_code PARAMS ((void));
-
-/* In ssa-ccp.c */
-extern void ssa_const_prop PARAMS ((void));
-
-
-/* SSA definitions and uses. */
-/* This flag is set when the CFG is in SSA form. */
-extern int in_ssa_form;
-
-/* Element I is the single instruction that sets register I. */
-extern GTY(()) varray_type ssa_definition;
-
-/* Element I is an INSN_LIST of instructions that use register I. */
-extern varray_type ssa_uses;
-
-
-/* Specify which hard registers should be converted. */
-
-/* All pseudo-registers (having register number >=
- FIRST_PSEUDO_REGISTER) and hard registers satisfying
- CONVERT_HARD_REGISTER_TO_SSA_P are converted to SSA form. */
-
-/* Given a hard register number REG_NO, return nonzero if and only if
- the register should be converted to SSA. */
-
-#ifndef CONVERT_HARD_REGISTER_TO_SSA_P
-#define CONVERT_HARD_REGISTER_TO_SSA_P(REG_NO) (0) /* default of no hard registers */
-#endif /* CONVERT_HARD_REGISTER_TO_SSA_P */
-
-/* Given a register number REG_NO, return nonzero if and only if the
- register should be converted to SSA. */
-
-#define CONVERT_REGISTER_TO_SSA_P(REG_NO) \
- ((!HARD_REGISTER_NUM_P (REG_NO)) || \
- (CONVERT_HARD_REGISTER_TO_SSA_P (REG_NO)))
diff --git a/contrib/gcc/unwind-libunwind.c b/contrib/gcc/unwind-libunwind.c
deleted file mode 100644
index 2e53a59..0000000
--- a/contrib/gcc/unwind-libunwind.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/* Subroutines needed for unwinding stack frames via the libunwind API.
- Copyright (C) 2002, 2003
- Free Software Foundation, Inc.
- Contributed by David Mosberger-Tang <davidm@hpl.hp.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 2, 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, 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* As a special exception, if you link this library with other files,
- some of which are compiled with GCC, to produce an executable,
- this library does not by itself cause the resulting executable
- to be covered by the GNU General Public License.
- This exception does not however invalidate any other reasons why
- the executable file might be covered by the GNU General Public License. */
-
-#include "tconfig.h"
-#include "tsystem.h"
-#include "unwind.h"
-
-#ifndef __USING_SJLJ_EXCEPTIONS__
-
-#define UNW_LOCAL_ONLY
-
-#include <libunwind.h>
-
-typedef struct {
- _Unwind_Personality_Fn personality;
-} _Unwind_FrameState;
-
-struct _Unwind_Context {
- unw_cursor_t cursor;
-};
-
-
-/* First come the helper-routines that are needed by unwind.inc. */
-
-static _Unwind_Reason_Code
-uw_frame_state_for (struct _Unwind_Context *context, _Unwind_FrameState *fs)
-{
- unw_proc_info_t pi;
-
- if (unw_step (&context->cursor) <= 0)
- return _URC_END_OF_STACK;
-
- unw_get_proc_info(&context->cursor, &pi);
- fs->personality = (_Unwind_Personality_Fn) pi.handler;
-
- return _URC_NO_REASON;
-}
-
-#define uw_update_context(context,fs) do { ; } while (0)
-
-static inline _Unwind_Ptr
-uw_identify_context (struct _Unwind_Context *context)
-{
- unw_word_t ip;
- unw_get_reg (&context->cursor, UNW_REG_IP, &ip);
- return (_Unwind_Ptr) ip;
-}
-
-#define uw_init_context(context) \
-do \
- { \
- unw_context_t uc; \
- unw_getcontext (&uc); \
- unw_init_local (&(context)->cursor, &uc); \
- } \
-while (0)
-
-static inline void __attribute__ ((noreturn))
-uw_install_context (struct _Unwind_Context *current __attribute__ ((unused)),
- struct _Unwind_Context *target)
-{
- unw_resume (&(target)->cursor);
- abort ();
-}
-
-
-/* Now come the helper-routines which may be called from an exception
- handler. The interface for these routines are defined by the C++
- ABI. See: http://www.codesourcery.com/cxx-abi/abi-eh.html */
-
-_Unwind_Word
-_Unwind_GetGR (struct _Unwind_Context *context, int index)
-{
- unw_word_t ret;
-
- /* Note: here we depend on the fact that general registers are
- expected to start with register number 0! */
- unw_get_reg (&context->cursor, index, &ret);
- return ret;
-}
-
-/* Get the value of the CFA as saved in CONTEXT. */
-
-_Unwind_Word
-_Unwind_GetCFA (struct _Unwind_Context *context)
-{
- /* ??? Is there any way to get this information? */
- return NULL;
-}
-
-/* Overwrite the saved value for register REG in CONTEXT with VAL. */
-
-void
-_Unwind_SetGR (struct _Unwind_Context *context, int index, _Unwind_Word val)
-{
- /* Note: here we depend on the fact that general registers are
- expected to start with register number 0! */
- unw_set_reg (&context->cursor, index, val);
-}
-
-/* Retrieve the return address for CONTEXT. */
-
-inline _Unwind_Ptr
-_Unwind_GetIP (struct _Unwind_Context *context)
-{
- unw_word_t ret;
-
- unw_get_reg (&context->cursor, UNW_REG_IP, &ret);
- return ret;
-}
-
-/* Overwrite the return address for CONTEXT with VAL. */
-
-inline void
-_Unwind_SetIP (struct _Unwind_Context *context, _Unwind_Ptr val)
-{
- unw_set_reg (&context->cursor, UNW_REG_IP, val);
-}
-
-void *
-_Unwind_GetLanguageSpecificData (struct _Unwind_Context *context)
-{
- unw_proc_info_t pi;
-
- unw_get_proc_info(&context->cursor, &pi);
- return (void *) pi.lsda;
-}
-
-_Unwind_Ptr
-_Unwind_GetRegionStart (struct _Unwind_Context *context)
-{
- unw_proc_info_t pi;
-
- unw_get_proc_info(&context->cursor, &pi);
- return (_Unwind_Ptr) pi.start_ip;
-}
-
-void *
-_Unwind_FindEnclosingFunction (void *pc)
-{
- return NULL;
-}
-
-#include "unwind.inc"
-
-#endif /* !__USING_SJLJ_EXCEPTIONS__ */
diff --git a/contrib/libf2c/libU77/bes.c b/contrib/libf2c/libU77/bes.c
deleted file mode 100644
index 73373fd..0000000
--- a/contrib/libf2c/libU77/bes.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#if 0 /* Don't include these unless necessary -- jcb. */
-#include "f2c.h"
-#include <math.h>
-
-double
-G77_besj0_0 (const real * x)
-{
- return j0 (*x);
-}
-
-double
-G77_besj1_0 (const real * x)
-{
- return j1 (*x);
-}
-
-double
-G77_besjn_0 (const integer * n, real * x)
-{
- return jn (*n, *x);
-}
-
-double
-G77_besy0_0 (const real * x)
-{
- return y0 (*x);
-}
-
-double
-G77_besy1_0 (const real * x)
-{
- return y1 (*x);
-}
-
-double
-G77_besyn_0 (const integer * n, real * x)
-{
- return yn (*n, *x);
-}
-#endif
diff --git a/contrib/libf2c/libU77/dbes.c b/contrib/libf2c/libU77/dbes.c
deleted file mode 100644
index 8a31746..0000000
--- a/contrib/libf2c/libU77/dbes.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-This file is part of GNU Fortran libU77 library.
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the GNU Library General Public License as published
-by the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-GNU Fortran 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
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with GNU Fortran; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
-
-#if 0 /* Don't include these unless necessary -- dnp. */
-#include "f2c.h"
-#include <math.h>
-
-double
-G77_dbesj0_0 (const double *x)
-{
- return j0 (*x);
-}
-
-double
-G77_dbesj1_0 (const double *x)
-{
- return j1 (*x);
-}
-
-double
-G77_dbesjn_0 (const integer * n, double *x)
-{
- return jn (*n, *x);
-}
-
-double
-G77_dbesy0_0 (const double *x)
-{
- return y0 (*x);
-}
-
-double
-G77_dbesy1_0 (const double *x)
-{
- return y1 (*x);
-}
-
-double
-G77_dbesyn_0 (const integer * n, double *x)
-{
- return yn (*n, *x);
-}
-#endif
diff --git a/contrib/libstdc++/NEWS b/contrib/libstdc++/NEWS
deleted file mode 100644
index 89e866e..0000000
--- a/contrib/libstdc++/NEWS
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY OF RECENT MAJOR CHANGES to LIBSTDC++.
-(Also check ../libio/NEWS.)
-
-*** Noteworthy changes in libstdc++ for EGCS
-
-* EGCS includes the SGI STL implementation without changes.
-
-* As a result of these and other changes, libstc++ for EGCS is not binary
- compatible with previous releases of libstdc++.
diff --git a/contrib/libstdc++/cassert b/contrib/libstdc++/cassert
deleted file mode 100644
index b4165bf..0000000
--- a/contrib/libstdc++/cassert
+++ /dev/null
@@ -1,7 +0,0 @@
-// -*- C++ -*- forwarding header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CASSERT__
-#define __CASSERT__
-#include <assert.h>
-#endif
diff --git a/contrib/libstdc++/cctype b/contrib/libstdc++/cctype
deleted file mode 100644
index e2765ae..0000000
--- a/contrib/libstdc++/cctype
+++ /dev/null
@@ -1,7 +0,0 @@
-// The -*- C++ -*- character type header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CCTYPE__
-#define __CCTYPE__
-#include <ctype.h>
-#endif
diff --git a/contrib/libstdc++/cerrno b/contrib/libstdc++/cerrno
deleted file mode 100644
index ce49346..0000000
--- a/contrib/libstdc++/cerrno
+++ /dev/null
@@ -1,7 +0,0 @@
-// The -*- C++ -*- error number header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CERRNO__
-#define __CERRNO__
-#include <errno.h>
-#endif
diff --git a/contrib/libstdc++/cfloat b/contrib/libstdc++/cfloat
deleted file mode 100644
index cf59ead..0000000
--- a/contrib/libstdc++/cfloat
+++ /dev/null
@@ -1,7 +0,0 @@
-// -*- C++ -*- forwarding header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CFLOAT__
-#define __CFLOAT__
-#include <float.h>
-#endif
diff --git a/contrib/libstdc++/cinst.cc b/contrib/libstdc++/cinst.cc
deleted file mode 100644
index 983e8a9..0000000
--- a/contrib/libstdc++/cinst.cc
+++ /dev/null
@@ -1,154 +0,0 @@
-// Instantiation file for the -*- C++ -*- complex number classes.
-// Copyright (C) 1994 Free Software Foundation
-
-#ifdef F
-typedef float f;
-#endif
-#ifdef D
-typedef double f;
-#endif
-#ifdef LD
-typedef long double f;
-#endif
-
-#if defined (MAIN) && defined (__GNUG__)
-#ifdef F
-#pragma implementation "fcomplex"
-#endif
-#ifdef D
-#pragma implementation "dcomplex"
-#endif
-#ifdef LD
-#pragma implementation "ldcomplex"
-#endif
-#endif
-
-#if 0
-#define _G_NO_EXTERN_TEMPLATES
-#endif
-#include <std/complext.cc>
-
-typedef complex<f> c;
-typedef const c& ccr;
-
-#ifdef MAIN
-template c& __doapl (c*, ccr);
-template c& __doaml (c*, ccr);
-template c& __doami (c*, ccr);
-template c& __doadv (c*, ccr);
-#endif
-
-#ifdef ADDCC
-template c operator+ (ccr, ccr);
-#endif
-#ifdef ADDCF
-template c operator+ (ccr, f);
-#endif
-#ifdef ADDFC
-template c operator+ (f, ccr);
-#endif
-#ifdef SUBCC
-template c operator- (ccr, ccr);
-#endif
-#ifdef SUBCF
-template c operator- (ccr, f);
-#endif
-#ifdef SUBFC
-template c operator- (f, ccr);
-#endif
-#ifdef MULCC
-template c operator* (ccr, ccr);
-#endif
-#ifdef MULCF
-template c operator* (ccr, f);
-#endif
-#ifdef MULFC
-template c operator* (f, ccr);
-#endif
-#ifdef DIVCC
-template c operator/ (ccr, ccr);
-#endif
-#ifdef DIVCF
-template c operator/ (ccr, f);
-#endif
-#ifdef DIVFC
-template c operator/ (f, ccr);
-#endif
-#ifdef PLUS
-template c operator+ (ccr);
-#endif
-#ifdef MINUS
-template c operator- (ccr);
-#endif
-#ifdef EQCC
-template bool operator== (ccr, ccr);
-#endif
-#ifdef EQCF
-template bool operator== (ccr, f);
-#endif
-#ifdef EQFC
-template bool operator== (f, ccr);
-#endif
-#ifdef NECC
-template bool operator!= (ccr, ccr);
-#endif
-#ifdef NECF
-template bool operator!= (ccr, f);
-#endif
-#ifdef NEFC
-template bool operator!= (f, ccr);
-#endif
-#ifdef ABS
-template f abs (ccr);
-#endif
-#ifdef ARG
-template f arg (ccr);
-#endif
-#ifdef POLAR
-template c polar (f, f);
-#endif
-#ifdef CONJ
-template c conj (ccr);
-#endif
-#ifdef NORM
-template f norm (ccr);
-#endif
-#ifdef COS
-template c cos (ccr);
-#endif
-#ifdef COSH
-template c cosh (ccr);
-#endif
-#ifdef EXP
-template c exp (ccr);
-#endif
-#ifdef LOG
-template c log (ccr);
-#endif
-#ifdef POWCC
-template c pow (ccr, ccr);
-#endif
-#ifdef POWCF
-template c pow (ccr, f);
-#endif
-#ifdef POWCI
-template c pow (ccr, int);
-#endif
-#ifdef POWFC
-template c pow (f, ccr);
-#endif
-#ifdef SIN
-template c sin (ccr);
-#endif
-#ifdef SINH
-template c sinh (ccr);
-#endif
-#ifdef SQRT
-template c sqrt (ccr);
-#endif
-#ifdef EXTRACT
-template istream& operator>> (istream&, complex<f>&);
-#endif
-#ifdef INSERT
-template ostream& operator<< (ostream&, const complex<f>&);
-#endif
diff --git a/contrib/libstdc++/ciso646 b/contrib/libstdc++/ciso646
deleted file mode 100644
index 4d8200d..0000000
--- a/contrib/libstdc++/ciso646
+++ /dev/null
@@ -1,7 +0,0 @@
-// -*- C++ -*- forwarding header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CISO646__
-#define __CISO646__
-#include <iso646.h>
-#endif
diff --git a/contrib/libstdc++/climits b/contrib/libstdc++/climits
deleted file mode 100644
index 1b29b3a..0000000
--- a/contrib/libstdc++/climits
+++ /dev/null
@@ -1,7 +0,0 @@
-// -*- C++ -*- forwarding header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CLIMITS__
-#define __CLIMITS__
-#include <limits.h>
-#endif
diff --git a/contrib/libstdc++/clocale b/contrib/libstdc++/clocale
deleted file mode 100644
index b67cf31..0000000
--- a/contrib/libstdc++/clocale
+++ /dev/null
@@ -1,7 +0,0 @@
-// The -*- C++ -*- locale support header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CLOCALE__
-#define __CLOCALE__
-#include <locale.h>
-#endif
diff --git a/contrib/libstdc++/cmath b/contrib/libstdc++/cmath
deleted file mode 100644
index b18ea0b..0000000
--- a/contrib/libstdc++/cmath
+++ /dev/null
@@ -1,76 +0,0 @@
-// The -*- C++ -*- math functions header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CMATH__
-#define __CMATH__
-#include <_G_config.h>
-#include <math.h>
-
-#ifdef __GNUG__
-#pragma interface "cmath"
-#endif
-
-extern "C++" {
-#if 0
-float acos (float);
-float asin (float);
-float atan (float);
-float atan2(float, float);
-float ceil (float);
-float cos (float);
-float cosh (float);
-float exp (float);
-float fabs (float);
-float floor(float);
-float fmod (float, float);
-float frexp(float, int*);
-float modf (float, float*);
-float ldexp(float, int);
-float log (float);
-float log10(float);
-float pow (float, float);
-float pow (float, int);
-float sin (float);
-float sinh (float);
-float sqrt (float);
-float tan (float);
-float tanh (float);
-#endif
-
-inline float abs (float x) { return fabs (x); }
-#if ! _G_MATH_H_INLINES /* hpux and SCO define this in math.h */
-inline double abs (double x) { return fabs (x); }
-#endif
-
-#if 0
-double pow(double, int);
-
-long double acos (long double);
-long double asin (long double);
-long double atan (long double);
-long double atan2(long double, long double);
-long double ceil (long double);
-long double cos (long double);
-long double cosh (long double);
-long double exp (long double);
-long double fabs (long double);
-long double floor(long double);
-long double frexp(long double, int*);
-long double fmod (long double, long double);
-long double frexp(long double, int*);
-long double log (long double);
-long double log10(long double);
-long double modf (long double, long double*);
-long double pow (long double, long double);
-long double pow (long double, int);
-long double sin (long double);
-long double sinh (long double);
-long double sqrt (long double);
-long double tan (long double);
-long double tanh (long double);
-#endif
-inline long double abs (long double x) { return fabs (x); }
-
-} // extern "C++"
-
-#endif
diff --git a/contrib/libstdc++/cmathi.cc b/contrib/libstdc++/cmathi.cc
deleted file mode 100644
index afd740f..0000000
--- a/contrib/libstdc++/cmathi.cc
+++ /dev/null
@@ -1,7 +0,0 @@
-// Implementation file for the -*- C++ -*- math functions header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifdef __GNUG__
-#pragma implementation "cmath"
-#endif
-#include <cmath>
diff --git a/contrib/libstdc++/complex b/contrib/libstdc++/complex
deleted file mode 100644
index bfdd352..0000000
--- a/contrib/libstdc++/complex
+++ /dev/null
@@ -1,18 +0,0 @@
-// Main header for the -*- C++ -*- complex number classes.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __COMPLEX__
-#define __COMPLEX__
-
-#include <std/complext.h>
-
-extern "C++" {
-#define __STD_COMPLEX
-
-// ANSI complex types
-typedef complex<float> float_complex;
-typedef complex<double> double_complex;
-typedef complex<long double> long_double_complex;
-}
-
-#endif
diff --git a/contrib/libstdc++/complex.h b/contrib/libstdc++/complex.h
deleted file mode 100644
index 2e88de8..0000000
--- a/contrib/libstdc++/complex.h
+++ /dev/null
@@ -1,6 +0,0 @@
-// -*- C++ -*- backward compatiblity header.
-// Copyright (C) 1994 Free Software Foundation
-
-#ifndef __COMPLEX_H__
-#include <complex>
-#endif
diff --git a/contrib/libstdc++/config/abi/extract_symvers b/contrib/libstdc++/config/abi/extract_symvers
deleted file mode 100755
index e7b6645..0000000
--- a/contrib/libstdc++/config/abi/extract_symvers
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/sh
-
-# Copyright (C) 2002 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 2, 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 COPYING. If not, write to the Free
-# Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-# USA.
-#
-# As a special exception, you may use this file as part of a free software
-# library without restriction. Specifically, if other files instantiate
-# templates or use macros or inline functions from this file, or you compile
-# this file and link it with other files to produce an executable, this
-# file does not by itself cause the resulting executable to be covered by
-# the GNU General Public License. This exception does not however
-# invalidate any other reasons why the executable file might be covered by
-# the GNU General Public License.
-
-
-if test ${#} -lt 2 || test $1 = '--help'; then
- echo "Usage: extract_symvers shared_lib output_file" 1>&2
- exit 1
-fi
-
-lib=$1
-output=$2
-
-# GNU binutils, somewhere after version 2.11.2, requires -W/--wide to avoid
-# default line truncation. -W is not supported and truncation did not occur
-# by default before that point.
-readelf="readelf --symbols"
-if readelf --help | grep -- --wide > /dev/null; then
- readelf="$readelf --wide"
-fi
-
-# This avoids weird sorting problems later.
-export LC_ALL=C
-
-tmp=extract.$$
-
-${readelf} ${lib} | sed '/\.dynsym/,/^$/p;d' | egrep -v ' (LOCAL|UND) ' |\
-awk '{ if ($4 == "FUNC" || $4 == "NOTYPE")
- printf "%s:%s\n", $4, $8;
- else if ($4 == "OBJECT")
- printf "%s:%s:%s\n", $4, $3, $8;
- }' | sort | uniq > $tmp 2>&1
-# else printf "Huh? What is %s?\n", $8;
-
-
-# I think we'll be doing some more with this file, but for now, dump.
-mv $tmp $output
-
-exit 0
diff --git a/contrib/libstdc++/config/aix.ml b/contrib/libstdc++/config/aix.ml
deleted file mode 100644
index dec7a90..0000000
--- a/contrib/libstdc++/config/aix.ml
+++ /dev/null
@@ -1,9 +0,0 @@
-# AIX has wierd shared/non-shared libraries.
-
-ARLIB = libstdc++-ar.a.$(VERSION)
-ARLINK = libstdc++-ar.a
-SHLINK = libstdc++.a
-LIBS = $(ARLIB) $(ARLINK) $(SHLIB) $(SHLINK)
-DEPLIBS = ../$(SHLIB)
-SHDEPS = -lm
-SHFLAGS = -Wl,-unix
diff --git a/contrib/libstdc++/config/cpu/sparc/sparc32/bits/atomicity.h b/contrib/libstdc++/config/cpu/sparc/sparc32/bits/atomicity.h
deleted file mode 100644
index aa639e4..0000000
--- a/contrib/libstdc++/config/cpu/sparc/sparc32/bits/atomicity.h
+++ /dev/null
@@ -1,88 +0,0 @@
-// Low-level functions for atomic operations: Sparc32 version -*- C++ -*-
-
-// Copyright (C) 1999, 2000, 2001 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-#ifndef _BITS_ATOMICITY_H
-#define _BITS_ATOMICITY_H 1
-
-typedef int _Atomic_word;
-
-template <int __inst>
-struct __Atomicity_lock
-{
- static unsigned char _S_atomicity_lock;
-};
-
-template <int __inst>
-unsigned char __Atomicity_lock<__inst>::_S_atomicity_lock = 0;
-
-template unsigned char __Atomicity_lock<0>::_S_atomicity_lock;
-
-static int
-__attribute__ ((__unused__))
-__exchange_and_add (volatile _Atomic_word* __mem, int __val)
-{
- _Atomic_word __result, __tmp;
-
- __asm__ __volatile__("1: ldstub [%1], %0\n\t"
- " cmp %0, 0\n\t"
- " bne 1b\n\t"
- " nop"
- : "=&r" (__tmp)
- : "r" (&__Atomicity_lock<0>::_S_atomicity_lock)
- : "memory");
- __result = *__mem;
- *__mem += __val;
- __asm__ __volatile__("stb %%g0, [%0]"
- : /* no outputs */
- : "r" (&__Atomicity_lock<0>::_S_atomicity_lock)
- : "memory");
- return __result;
-}
-
-static void
-__attribute__ ((__unused__))
-__atomic_add (volatile _Atomic_word* __mem, int __val)
-{
- _Atomic_word __tmp;
-
- __asm__ __volatile__("1: ldstub [%1], %0\n\t"
- " cmp %0, 0\n\t"
- " bne 1b\n\t"
- " nop"
- : "=&r" (__tmp)
- : "r" (&__Atomicity_lock<0>::_S_atomicity_lock)
- : "memory");
- *__mem += __val;
- __asm__ __volatile__("stb %%g0, [%0]"
- : /* no outputs */
- : "r" (&__Atomicity_lock<0>::_S_atomicity_lock)
- : "memory");
-}
-
-#endif /* atomicity.h */
diff --git a/contrib/libstdc++/config/cpu/sparc/sparc64/bits/atomicity.h b/contrib/libstdc++/config/cpu/sparc/sparc64/bits/atomicity.h
deleted file mode 100644
index e13ca82..0000000
--- a/contrib/libstdc++/config/cpu/sparc/sparc64/bits/atomicity.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Low-level functions for atomic operations: Sparc64 version -*- C++ -*-
-
-// Copyright (C) 1999, 2000, 2001 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-#ifndef _BITS_ATOMICITY_H
-#define _BITS_ATOMICITY_H 1
-
-typedef long _Atomic_word;
-
-static inline _Atomic_word
-__attribute__ ((__unused__))
-__exchange_and_add (volatile _Atomic_word *__mem, int __val)
-{
- _Atomic_word __tmp1, __tmp2;
-
- __asm__ __volatile__("1: ldx [%2], %0\n\t"
- " add %0, %3, %1\n\t"
- " casx [%2], %0, %1\n\t"
- " sub %0, %1, %0\n\t"
- " brnz,pn %0, 1b\n\t"
- " nop"
- : "=&r" (__tmp1), "=&r" (__tmp2)
- : "r" (__mem), "r" (__val)
- : "memory");
- return __tmp2;
-}
-
-static inline void
-__attribute__ ((__unused__))
-__atomic_add (volatile _Atomic_word* __mem, int __val)
-{
- _Atomic_word __tmp1, __tmp2;
-
- __asm__ __volatile__("1: ldx [%2], %0\n\t"
- " add %0, %3, %1\n\t"
- " casx [%2], %0, %1\n\t"
- " sub %0, %1, %0\n\t"
- " brnz,pn %0, 1b\n\t"
- " nop"
- : "=&r" (__tmp1), "=&r" (__tmp2)
- : "r" (__mem), "r" (__val)
- : "memory");
-}
-
-#endif /* atomicity.h */
diff --git a/contrib/libstdc++/config/dec-osf.ml b/contrib/libstdc++/config/dec-osf.ml
deleted file mode 100644
index a11f373..0000000
--- a/contrib/libstdc++/config/dec-osf.ml
+++ /dev/null
@@ -1,6 +0,0 @@
-# We don't need -fpic on the alpha, so let's install both the shared and
-# non-shared versions.
-
-LIBS = $(ARLIB) $(ARLINK) $(SHLIB) $(SHLINK)
-DEPLIBS = ../$(SHLIB)
-SHDEPS = -lm
diff --git a/contrib/libstdc++/config/delta.mt b/contrib/libstdc++/config/delta.mt
deleted file mode 100644
index b0b36db..0000000
--- a/contrib/libstdc++/config/delta.mt
+++ /dev/null
@@ -1,2 +0,0 @@
-# If FPU instructions are generated by default, we have to use a special libm.a
-MLDLIBS = $(LDLIBS) `case "$(CXXFLAGS)" in *-m68000* | *-mc68000* | *-msoft-float* ) echo -lm ;; * ) echo -lm881 ;; esac`
diff --git a/contrib/libstdc++/config/elf.ml b/contrib/libstdc++/config/elf.ml
deleted file mode 100644
index bd711de..0000000
--- a/contrib/libstdc++/config/elf.ml
+++ /dev/null
@@ -1,8 +0,0 @@
-# Elf without shared libm -- we have to link with the archive library, even
-# for programs that don't use complex.
-
-LIBS = $(ARLIB) $(ARLINK) $(SHLIB) $(SHLINK)
-SHFLAGS = -h $(SHLIB)
-DEPLIBS = ../$(SHLIB)
-LDLIBS = -L.. -lstdc++ -lm
-MLDLIBS = -L.. -lstdc++ -lm
diff --git a/contrib/libstdc++/config/elfshlibm.ml b/contrib/libstdc++/config/elfshlibm.ml
deleted file mode 100644
index 826f0bc..0000000
--- a/contrib/libstdc++/config/elfshlibm.ml
+++ /dev/null
@@ -1,6 +0,0 @@
-# Elf with shared libm, so we can link it into the shared libstdc++.
-
-LIBS = $(ARLIB) $(ARLINK) $(SHLIB) $(SHLINK)
-SHFLAGS = -h $(SHLIB)
-SHDEPS = -lm
-DEPLIBS = ../$(SHLIB)
diff --git a/contrib/libstdc++/config/freebsd.ml b/contrib/libstdc++/config/freebsd.ml
deleted file mode 100644
index 3ee6826..0000000
--- a/contrib/libstdc++/config/freebsd.ml
+++ /dev/null
@@ -1,6 +0,0 @@
-# Elf with shared libm, so we can link it into the shared libstdc++.
-
-LIBS = $(ARLIB) $(ARLINK) $(SHLIB) $(SHLINK) mshlink
-SHFLAGS = -Wl,-soname,$(MSHLINK)
-SHDEPS = -lm
-DEPLIBS = ../$(SHLIB)
diff --git a/contrib/libstdc++/config/gnu.ml b/contrib/libstdc++/config/gnu.ml
deleted file mode 100644
index 2a03803..0000000
--- a/contrib/libstdc++/config/gnu.ml
+++ /dev/null
@@ -1,6 +0,0 @@
-# Elf with shared libm, so we can link it into the shared libstdc++.
-
-LIBS = $(ARLIB) $(ARLINK) $(SHLIB) $(SHLINK)
-SHFLAGS = -Wl,-soname,$(SHLIB)
-SHDEPS = -lm
-DEPLIBS = ../$(SHLIB)
diff --git a/contrib/libstdc++/config/hpux.ml b/contrib/libstdc++/config/hpux.ml
deleted file mode 100644
index a39602a..0000000
--- a/contrib/libstdc++/config/hpux.ml
+++ /dev/null
@@ -1,6 +0,0 @@
-# HPUX uses the .sl suffix for shared libraries.
-
-SHLIB = libstdc++.sl
-LIBS = $(ARLIB) $(ARLINK) $(SHLIB)
-DEPLIBS = ../$(SHLIB)
-SHFLAGS = $(PICFLAG)
diff --git a/contrib/libstdc++/config/io/basic_file_libio.cc b/contrib/libstdc++/config/io/basic_file_libio.cc
deleted file mode 100644
index 60eb006..0000000
--- a/contrib/libstdc++/config/io/basic_file_libio.cc
+++ /dev/null
@@ -1,194 +0,0 @@
-// Wrapper of C-language FILE struct -*- C++ -*-
-
-// Copyright (C) 2000, 2001 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-//
-// ISO C++ 14882: 27.8 File-based streams
-//
-
-#include <bits/basic_file.h>
-
-namespace std
-{
- // __basic_file<char> definitions
- __basic_file<char>::__basic_file(__c_lock* __lock)
- {
-#ifdef _IO_MTSAFE_IO
- _lock = __lock;
-#endif
- // Don't set the orientation of the stream when initializing.
-#ifdef _GLIBCPP_USE_WCHAR_T
- _IO_no_init(this, 0, 0, &_M_wfile, 0);
-#else /* !defined(_GLIBCPP_USE_WCHAR_T) */
- _IO_no_init(this, 0, 0, NULL, 0);
-#endif /* !defined(_GLIBCPP_USE_WCHAR_T) */
- _IO_JUMPS((_IO_FILE_plus *) this) = &_IO_file_jumps;
- _IO_file_init((_IO_FILE_plus*)this);
- }
-
- // NB: Unused.
- int
- __basic_file<char>::overflow(int __c)
- { return _IO_file_overflow(this, __c); }
-
- // NB: Unused.
- int
- __basic_file<char>::underflow()
- { return _IO_file_underflow(this); }
-
- // NB: Unused.
- int
- __basic_file<char>::uflow()
- { return _IO_default_uflow(this); }
-
- // NB: Unused.
- int
- __basic_file<char>::pbackfail(int __c)
- { return _IO_default_pbackfail(this, __c); }
-
- streamsize
- __basic_file<char>::xsputn(const char* __s, streamsize __n)
- { return _IO_file_xsputn(this, __s, __n); }
-
- streamoff
- __basic_file<char>::seekoff(streamoff __off, ios_base::seekdir __way,
- ios_base::openmode __mode)
- { return _IO_file_seekoff(this, __off, __way, __mode); }
-
- streamoff
- __basic_file<char>::seekpos(streamoff __pos, ios_base::openmode __mode)
- { return _IO_file_seekoff(this, __pos, ios_base::beg, __mode); }
-
- // NB: Unused.
- streambuf*
- __basic_file<char>::setbuf(char* __b, int __len)
- { return (streambuf*) _IO_file_setbuf(this,__b, __len); }
-
- int
- __basic_file<char>::sync()
- { return _IO_file_sync(this); }
-
- // NB: Unused.
- int
- __basic_file<char>::doallocate()
- { return _IO_file_doallocate(this); }
-
- // __basic_file<wchar_t> definitions
-#ifdef _GLIBCPP_USE_WCHAR_T
- __basic_file<wchar_t>::__basic_file(__c_lock* __lock)
- {
-#ifdef _IO_MTSAFE_IO
- _lock = __lock;
-#endif
- // Don't set the orientation of the stream when initializing.
- _IO_no_init(this, 0, 0, &_M_wfile, &_IO_wfile_jumps);
- _IO_JUMPS((_IO_FILE_plus *) this) = &_IO_wfile_jumps;
- _IO_file_init((_IO_FILE_plus*)this);
-
- // In addition, need to allocate the buffer...
- _IO_wdoallocbuf(this);
- // Setup initial positions for this buffer...
- // if (!(_flags & _IO_NO_READS))
- _IO_wsetg(this, _wide_data->_IO_buf_base, _wide_data->_IO_buf_base,
- _wide_data->_IO_buf_base);
- // if (!(_flags & _IO_NO_WRITES))
- _IO_wsetp(this, _wide_data->_IO_buf_base, _wide_data->_IO_buf_base);
-
- // Setup codecvt bits...
- _codecvt = &__c_libio_codecvt;
-
- // Do the same for narrow bits...
- if (_IO_write_base == NULL)
- {
- _IO_doallocbuf(this);
- // if (!(_flags & _IO_NO_READS))
- _IO_setg(this, _IO_buf_base, _IO_buf_base, _IO_buf_base);
- // if (!(_flags & _IO_NO_WRITES))
- _IO_setp(this, _IO_buf_base, _IO_buf_base);
- }
- }
-
- int
- __basic_file<wchar_t>::overflow(int __c)
- { return _IO_wfile_overflow(this, __c); }
-
- int
- __basic_file<wchar_t>::underflow()
- { return _IO_wfile_underflow(this); }
-
- // NB: Unused.
- int
- __basic_file<wchar_t>::uflow()
- { return _IO_wdefault_uflow(this); }
-
- // NB: Unused.
- int
- __basic_file<wchar_t>::pbackfail(int __c)
- { return _IO_wdefault_pbackfail(this, __c); }
-
- streamsize
- __basic_file<wchar_t>::xsputn(const wchar_t* __s, streamsize __n)
- { return _IO_wfile_xsputn(this, __s, __n); }
-
- streamoff
- __basic_file<wchar_t>::seekoff(streamoff __off, ios_base::seekdir __way,
- ios_base::openmode __mode)
- { return _IO_wfile_seekoff(this, __off, __way, __mode); }
-
- streamoff
- __basic_file<wchar_t>::seekpos(streamoff __pos, ios_base::openmode __mode)
- { return _IO_wfile_seekoff(this, __pos, ios_base::beg, __mode); }
-
- streambuf*
- __basic_file<wchar_t>::setbuf(wchar_t* __b, int __len)
- { return (streambuf*) _IO_wfile_setbuf(this,__b, __len); }
-
- int
- __basic_file<wchar_t>::sync()
- { return _IO_wfile_sync(this); }
-
- int
- __basic_file<wchar_t>::doallocate()
- { return _IO_wfile_doallocate(this); }
-#endif
-
- // Need to instantiate base class here for type-info bits, etc
- template struct __basic_file_base<char>;
- template class __basic_file<char>;
-#ifdef _GLIBCPP_USE_WCHAR_T
- template struct __basic_file_base<wchar_t>;
- template class __basic_file<wchar_t>;
-#endif
-} // namespace std
-
-
-
-
-
-
-
diff --git a/contrib/libstdc++/config/io/basic_file_libio.h b/contrib/libstdc++/config/io/basic_file_libio.h
deleted file mode 100644
index 57d83c4..0000000
--- a/contrib/libstdc++/config/io/basic_file_libio.h
+++ /dev/null
@@ -1,498 +0,0 @@
-// Wrapper of C-language FILE struct -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-//
-// ISO C++ 14882: 27.8 File-based streams
-//
-
-/** @file basic_file.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef _CPP_BASIC_FILE
-#define _CPP_BASIC_FILE 1
-
-#pragma GCC system_header
-
-#include <bits/c++config.h>
-#include <ios>
-#include <libioP.h>
-
-namespace std
-{
- // Ulrich is going to make some detailed comment here, explaining
- // all this unpleasantness, providing detailed performance analysis
- // as to why we have to do all this lame vtable hacking instead of a
- // sane, function-based approach. This verbiage will provide a clear
- // and detailed description of the whole object-layout,
- // vtable-swapping, sordid history of this hack.
- template<typename _CharT>
- struct __basic_file_base: public __c_file_type
- {
- virtual
- ~__basic_file_base() { };
-
- virtual int
- overflow(int __c = EOF) = 0;
-
- virtual int
- underflow() = 0;
-
- virtual int
- uflow() = 0;
-
- virtual int
- pbackfail(int __c) = 0;
-
- virtual streamsize
- xsputn(const _CharT* __s, streamsize __n) = 0;
-
- virtual streamsize
- xsgetn(_CharT* __s, streamsize __n) = 0;
-
- virtual streamoff
- seekoff(streamoff __off, ios_base::seekdir __way,
- ios_base::openmode __mode = ios_base::in | ios_base::out) = 0;
-
- virtual streamoff
- seekpos(streamoff __pos,
- ios_base::openmode __mode = ios_base::in | ios_base::out) = 0;
-
- virtual streambuf*
- setbuf(_CharT* __b, int __len) = 0;
-
- virtual int
- sync() = 0;
-
- virtual int
- doallocate() = 0;
-
- virtual streamsize
- sys_read(_CharT* __s, streamsize __n) = 0;
-
- virtual streamsize
- sys_write(const _CharT* __s, streamsize __n) = 0;
-
- virtual streamoff
- sys_seek(streamoff __off, ios_base::seekdir __way) = 0;
-
- virtual int
- sys_close() = 0;
-
- virtual int
- sys_stat(void* __v) = 0;
-
- virtual int
- showmanyc() = 0;
-
- virtual void
- imbue(void* __v) = 0;
- };
-
- // Some of these member functions are based on libio/filebuf.cc.
- // Also note that the order and number of virtual functions has to precisely
- // match the order and number in the _IO_jump_t struct defined in libioP.h.
- template<typename _CharT>
- class __basic_file: public __basic_file_base<_CharT>
- {
-# ifdef _GLIBCPP_USE_WCHAR_T
- __c_wfile_type _M_wfile;
-# endif
-
- public:
- __basic_file(__c_lock* __lock = 0);
-
- void
- _M_open_mode(ios_base::openmode __mode, int& __p_mode, int& __rw_mode,
- char* __c_mode);
-
- // Equivalent to the normal fopen function.
- __basic_file*
- open(const char* __name, ios_base::openmode __mode, int __prot = 0664);
-
- // Used for opening the standard streams, cin, cout, cerr, clog,
- // and their wide-stream equivalents. Instead of calling open, it
- // just sets
- // - for libio: __c_file_type->_fileno and the respective _flags bits
- // - for stdio: _M_cfile = __file and some internal flags
- // and returns.
- __basic_file*
- sys_open(__c_file_type* __file, ios_base::openmode __mode);
-
- _CharT
- sys_getc();
-
- _CharT
- sys_ungetc(_CharT);
-
- __basic_file*
- close();
-
- bool
- is_open();
-
- int
- fd();
-
- // NB: Must match FILE specific jump table starting here--this
- // means all virtual functions starting with the dtor must match,
- // slot by slot. For glibc-based dystems, this means the _IO_FILE
- // as the FILE struct and _IO_jump_t as the jump table.
- virtual
- ~__basic_file(); // Takes the place of __finish.
-
- virtual int
- overflow(int __c = EOF);
-
- virtual int
- underflow();
-
- virtual int
- uflow();
-
- virtual int
- pbackfail(int __c);
-
- // A complex "write" function that sets all of __c_file_type's
- // pointers and associated data members correctly and manages its
- // relation to the external byte sequence.
- virtual streamsize
- xsputn(const _CharT* __s, streamsize __n);
-
- // A complex "read" function that sets all of __c_file_type's
- // pointers and associated data members correctly and manages its
- // relation to the external byte sequence.
- virtual streamsize
- xsgetn(_CharT* __s, streamsize __n);
-
- // A complex "seekoff" function that sets all of __c_file_type's
- // pointers and associated data members correctly and manages its
- // relation to the external byte sequence.
- virtual streamoff
- seekoff(streamoff __off, ios_base::seekdir __way,
- ios_base::openmode __mode = ios_base::in | ios_base::out);
-
- // A complex "seekpos" function that sets all of __c_file_type's
- // pointers and associated data members correctly and manages its
- // relation to the external byte sequence.
- virtual streamoff
- seekpos(streamoff __pos,
- ios_base::openmode __mode = ios_base::in | ios_base::out);
-
- virtual streambuf*
- setbuf(_CharT* __b, int __len);
-
- virtual int
- sync();
-
- virtual int
- doallocate();
-
- // A simple read function for the external byte sequence, that
- // does no mucking around with or setting of the pointers or flags
- // in __c_file_type.
- virtual streamsize
- sys_read(_CharT* __s, streamsize __n);
-
- // A simple write function for the external byte sequence, that
- // does no mucking around with or setting of the pointers or flags
- // in __c_file_type.
- virtual streamsize
- sys_write(const _CharT* __s, streamsize __n);
-
- // A simple seek function for the external byte sequence, that
- // does no mucking around with or setting of the pointers or flags
- // in __c_file_type.
- virtual streamoff
- sys_seek(streamoff __off, ios_base::seekdir __way);
-
- virtual int
- sys_close();
-
- virtual int
- sys_stat(void* __v);
-
- virtual int
- showmanyc();
-
- virtual void
- imbue(void* __v);
- };
-
- // __basic_file<char> specializations
- template<>
- __basic_file<char>::__basic_file(__c_lock* __lock);
-
- template<>
- int
- __basic_file<char>::overflow(int __c);
-
- template<>
- int
- __basic_file<char>::underflow();
-
- template<>
- int
- __basic_file<char>::uflow();
-
- template<>
- int
- __basic_file<char>::pbackfail(int __c);
-
- template<>
- streamsize
- __basic_file<char>::xsputn(const char* __s, streamsize __n);
-
- template<>
- streamoff
- __basic_file<char>::seekoff(streamoff __off, ios_base::seekdir __way,
- ios_base::openmode __mode);
-
- template<>
- streamoff
- __basic_file<char>::seekpos(streamoff __pos, ios_base::openmode __mode);
-
- template<>
- streambuf*
- __basic_file<char>::setbuf(char* __b, int __len);
-
- template<>
- int
- __basic_file<char>::sync();
-
- template<>
- int
- __basic_file<char>::doallocate();
-
- // __basic_file<wchar_t> specializations
-#ifdef _GLIBCPP_USE_WCHAR_T
- template<>
- __basic_file<wchar_t>::__basic_file(__c_lock* __lock);
-
- template<>
- int
- __basic_file<wchar_t>::overflow(int __c);
-
- template<>
- int
- __basic_file<wchar_t>::underflow();
-
- template<>
- int
- __basic_file<wchar_t>::uflow();
-
- template<>
- int
- __basic_file<wchar_t>::pbackfail(int __c);
-
- template<>
- streamsize
- __basic_file<wchar_t>::xsputn(const wchar_t* __s, streamsize __n);
-
- template<>
- streamoff
- __basic_file<wchar_t>::seekoff(streamoff __off, ios_base::seekdir __way,
- ios_base::openmode __mode);
-
- template<>
- streamoff
- __basic_file<wchar_t>::seekpos(streamoff __pos, ios_base::openmode __mode);
-
- template<>
- streambuf*
- __basic_file<wchar_t>::setbuf(wchar_t* __b, int __len);
-
- template<>
- int
- __basic_file<wchar_t>::sync();
-
- template<>
- int
- __basic_file<wchar_t>::doallocate();
-#endif
-
- template<typename _CharT>
- __basic_file<_CharT>::~__basic_file()
- { _IO_file_finish(this, 0); }
-
- template<typename _CharT>
- void
- __basic_file<_CharT>::_M_open_mode(ios_base::openmode __mode,
- int& __p_mode, int& __rw_mode,
- char* /*__c_mode*/)
- {
-#ifdef O_BINARY
- bool __testb = __mode & ios_base::binary;
-#endif
- bool __testi = __mode & ios_base::in;
- bool __testo = __mode & ios_base::out;
- bool __testt = __mode & ios_base::trunc;
- bool __testa = __mode & ios_base::app;
-
- if (!__testi && __testo && !__testt && !__testa)
- {
- __p_mode = O_WRONLY | O_TRUNC | O_CREAT;
- __rw_mode = _IO_NO_READS;
- }
- if (!__testi && __testo && !__testt && __testa)
- {
- __p_mode = O_WRONLY | O_APPEND | O_CREAT;
- __rw_mode = _IO_NO_READS | _IO_IS_APPENDING;
- }
- if (!__testi && __testo && __testt && !__testa)
- {
- __p_mode = O_WRONLY | O_TRUNC | O_CREAT;
- __rw_mode = _IO_NO_READS;
- }
- if (__testi && !__testo && !__testt && !__testa)
- {
- __p_mode = O_RDONLY;
- __rw_mode = _IO_NO_WRITES;
- }
- if (__testi && __testo && !__testt && !__testa)
- {
- __p_mode = O_RDWR;
- __rw_mode = 0;
- }
- if (__testi && __testo && __testt && !__testa)
- {
- __p_mode = O_RDWR | O_TRUNC | O_CREAT;
- __rw_mode = 0;
- }
-#ifdef O_BINARY
- if (__testb)
- __p_mode |= O_BINARY;
-#endif
- }
-
- template<typename _CharT>
- __basic_file<_CharT>*
- __basic_file<_CharT>::sys_open(__c_file_type* __f,
- ios_base::openmode __mode)
- {
- __basic_file* __ret = NULL;
- int __fd = fileno(__f);
- int __p_mode = 0;
- int __rw_mode = _IO_NO_READS + _IO_NO_WRITES;
- char __c_mode[4];
-
- _M_open_mode(__mode, __p_mode, __rw_mode, __c_mode);
-
- if (!_IO_file_is_open(this))
- {
- _fileno = __fd;
- _flags &= ~(_IO_NO_READS + _IO_NO_WRITES);
- _flags |= _IO_DELETE_DONT_CLOSE;
- _offset = _IO_pos_BAD;
- int __mask = _IO_NO_READS + _IO_NO_WRITES + _IO_IS_APPENDING;
- _IO_mask_flags(this, __rw_mode, __mask);
- }
-
- return __ret;
- }
-
- template<typename _CharT>
- __basic_file<_CharT>*
- __basic_file<_CharT>::open(const char* __name, ios_base::openmode __mode,
- int __prot)
- {
- __basic_file* __ret = NULL;
- int __p_mode = 0;
- int __rw_mode = _IO_NO_READS + _IO_NO_WRITES;
- char __c_mode[4];
-
- _M_open_mode(__mode, __p_mode, __rw_mode, __c_mode);
- if (!_IO_file_is_open(this))
- {
- __c_file_type* __f;
- __f = _IO_file_open(this, __name, __p_mode, __prot, __rw_mode, 0);
- __ret = __f ? this: NULL;
- }
- return __ret;
- }
-
- template<typename _CharT>
- bool
- __basic_file<_CharT>::is_open() { return _fileno >= 0; }
-
- template<typename _CharT>
- __basic_file<_CharT>*
- __basic_file<_CharT>::close()
- {
- return _IO_file_close_it(this) ? static_cast<__basic_file*>(NULL) : this;
- }
-
- template<typename _CharT>
- streamsize
- __basic_file<_CharT>::xsgetn(_CharT* __s, streamsize __n)
- { return _IO_file_xsgetn(this, __s, __n); }
-
- // NB: Unused.
- template<typename _CharT>
- streamsize
- __basic_file<_CharT>::sys_read(_CharT* __s, streamsize __n)
- { return _IO_file_read(this, __s, __n); }
-
- // NB: Unused.
- template<typename _CharT>
- streamsize
- __basic_file<_CharT>::sys_write(const _CharT* __s, streamsize __n)
- { return _IO_file_write(this, __s, __n); }
-
- // NB: Unused.
- template<typename _CharT>
- streamoff
- __basic_file<_CharT>::sys_seek(streamoff __pos, ios_base::seekdir __way)
- { return _IO_file_seek(this, __pos, __way); }
-
- // NB: Unused.
- template<typename _CharT>
- int
- __basic_file<_CharT>::sys_close()
- { return _IO_file_close(this); }
-
- // NB: Unused.
- template<typename _CharT>
- int
- __basic_file<_CharT>::sys_stat(void* __v)
- { return _IO_file_stat(this, __v); }
-
- // NB: Unused.
- template<typename _CharT>
- int
- __basic_file<_CharT>::showmanyc() { return EOF; }
-
- // NB: Unused.
- template<typename _CharT>
- void
- __basic_file<_CharT>::imbue(void* /*__v*/) { }
-} // namespace std
-
-#endif // _CPP_BASIC_FILE
diff --git a/contrib/libstdc++/config/io/c_io_libio.h b/contrib/libstdc++/config/io/c_io_libio.h
deleted file mode 100644
index acf6520..0000000
--- a/contrib/libstdc++/config/io/c_io_libio.h
+++ /dev/null
@@ -1,113 +0,0 @@
-// underlying io library -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// c_io_libio.h - Defines for using the GNU libio
-
-#ifndef _CPP_IO_LIBIO_H
-#define _CPP_IO_LIBIO_H 1
-
-#include <libio.h>
-
-namespace std
-{
-// from fpos.h
- typedef _IO_ssize_t streamsize; // Signed integral type
- typedef _IO_ssize_t wstreamsize;
-
-#if defined(_G_IO_IO_FILE_VERSION) && _G_IO_IO_FILE_VERSION == 0x20001
- typedef _IO_off64_t streamoff;
- typedef _IO_fpos64_t __c_streampos;
-#else
- typedef _IO_off_t streamoff;
- typedef _IO_fpos_t __c_streampos;
-#endif
-
-#ifdef _GLIBCPP_USE_THREADS
- typedef _IO_lock_t __c_lock;
-#else
- typedef int __c_lock;
-#endif
-
-// from basic_file.h
- typedef _IO_FILE __c_file_type;
- typedef _IO_wide_data __c_wfile_type;
-
-#ifdef _GLIBCPP_USE_WCHAR_T
- extern "C" _IO_codecvt __c_libio_codecvt;
-#endif
-
-// from ios_base.h
- struct __ios_flags
- {
- typedef short __int_type;
-
- static const __int_type _S_boolalpha = _IO_BAD_SEEN;
- static const __int_type _S_dec = _IO_DEC;
- static const __int_type _S_fixed = _IO_FIXED;
- static const __int_type _S_hex = _IO_HEX;
- static const __int_type _S_internal = _IO_INTERNAL;
- static const __int_type _S_left = _IO_LEFT;
- static const __int_type _S_oct = _IO_OCT;
- static const __int_type _S_right = _IO_RIGHT;
- static const __int_type _S_scientific = _IO_SCIENTIFIC;
- static const __int_type _S_showbase = _IO_SHOWBASE;
- static const __int_type _S_showpoint = _IO_SHOWPOINT;
- static const __int_type _S_showpos = _IO_SHOWPOS;
- static const __int_type _S_skipws = _IO_SKIPWS;
- static const __int_type _S_unitbuf = _IO_UNITBUF;
- static const __int_type _S_uppercase = _IO_UPPERCASE;
- static const __int_type _S_adjustfield = _IO_LEFT | _IO_RIGHT
- | _IO_INTERNAL;
- static const __int_type _S_basefield = _IO_DEC | _IO_OCT | _IO_HEX;
- static const __int_type _S_floatfield = _IO_SCIENTIFIC | _IO_FIXED;
-
- // 27.4.2.1.3 Type ios_base::iostate
- static const __int_type _S_badbit = _IO_BAD_SEEN;
- static const __int_type _S_eofbit = _IO_EOF_SEEN;
- static const __int_type _S_failbit = _IO_ERR_SEEN;
-
- // 27.4.2.1.4 Type openmode
- static const __int_type _S_app = _IOS_APPEND;
- static const __int_type _S_ate = _IOS_ATEND;
- static const __int_type _S_bin = _IOS_BIN;
- static const __int_type _S_in = _IOS_INPUT;
- static const __int_type _S_out = _IOS_OUTPUT;
- static const __int_type _S_trunc = _IOS_TRUNC;
- };
-}
-
-#endif // _CPP_IO_LIBIO_H
-
-
-
-
-
-
-
-
diff --git a/contrib/libstdc++/config/io/c_io_libio_codecvt.c b/contrib/libstdc++/config/io/c_io_libio_codecvt.c
deleted file mode 100644
index 38d8b55..0000000
--- a/contrib/libstdc++/config/io/c_io_libio_codecvt.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
- This file is part of the GNU IO 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 2, 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 COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, if you link this library with files
- compiled with a GNU compiler to produce an executable, this does
- not cause the resulting executable to be covered by the GNU General
- Public License. This exception does not however invalidate any
- other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* Slightly modified from glibc/libio/iofwide.c */
-
-#include <libio.h>
-
-#ifdef _GLIBCPP_USE_WCHAR_T
-
-/* Prototypes of libio's codecvt functions. */
-static enum __codecvt_result
-do_out(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
- const wchar_t *from_start, const wchar_t *from_end,
- const wchar_t **from_stop, char *to_start, char *to_end,
- char **to_stop);
-
-static enum __codecvt_result
-do_unshift(struct _IO_codecvt *codecvt, __c_mbstate_t *statep, char *to_start,
- char *to_end, char **to_stop);
-
-static enum __codecvt_result
-do_in(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
- const char *from_start, const char *from_end, const char **from_stop,
- wchar_t *to_start, wchar_t *to_end, wchar_t **to_stop);
-
-static int
-do_encoding(struct _IO_codecvt *codecvt);
-
-static int
-do_length(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
- const char *from_start, const char *from_end, _IO_size_t max);
-
-static int
-do_max_length(struct _IO_codecvt *codecvt);
-
-static int
-do_always_noconv(struct _IO_codecvt *codecvt);
-
-
-/* The functions used in `codecvt' for libio are always the same. */
-struct _IO_codecvt __c_libio_codecvt =
-{
- .__codecvt_destr = NULL, /* Destructor, never used. */
- .__codecvt_do_out = do_out,
- .__codecvt_do_unshift = do_unshift,
- .__codecvt_do_in = do_in,
- .__codecvt_do_encoding = do_encoding,
- .__codecvt_do_always_noconv = do_always_noconv,
- .__codecvt_do_length = do_length,
- .__codecvt_do_max_length = do_max_length
-};
-
-static enum __codecvt_result
-do_out(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
- const wchar_t *from_start, const wchar_t *from_end,
- const wchar_t **from_stop, char *to_start, char *to_end,
- char **to_stop)
-{
- enum __codecvt_result res = __codecvt_ok;
-
- while (from_start < from_end)
- {
- if (to_start >= to_end)
- {
- res = __codecvt_partial;
- break;
- }
- *to_start++ = (char) *from_start++;
- }
-
- *from_stop = from_start;
- *to_stop = to_start;
-
- return res;
-}
-
-
-static enum __codecvt_result
-do_unshift(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
- char *to_start, char *to_end, char **to_stop)
-{
- *to_stop = to_start;
- return __codecvt_ok;
-}
-
-
-static enum __codecvt_result
-do_in(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
- const char *from_start, const char *from_end, const char **from_stop,
- wchar_t *to_start, wchar_t *to_end, wchar_t **to_stop)
-{
- enum __codecvt_result res = __codecvt_ok;
-
- while (from_start < from_end)
- {
- if (to_start >= to_end)
- {
- res = __codecvt_partial;
- break;
- }
- *to_start++ = (wchar_t) *from_start++;
- }
-
- *from_stop = from_start;
- *to_stop = to_start;
-
- return res;
-}
-
-
-static int
-do_encoding(struct _IO_codecvt *codecvt)
-{ return 1; }
-
-
-static int
-do_always_noconv(struct _IO_codecvt *codecvt)
-{ return 0; }
-
-
-static int
-do_length(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
- const char *from_start, const char *from_end, _IO_size_t max)
-{ return from_end - from_start; }
-
-
-static int
-do_max_length(struct _IO_codecvt *codecvt)
-{ return 1; }
-
-#endif /* _GLIBCPP_USE_WCHAR_T */
diff --git a/contrib/libstdc++/config/irix5.ml b/contrib/libstdc++/config/irix5.ml
deleted file mode 100644
index 055c832..0000000
--- a/contrib/libstdc++/config/irix5.ml
+++ /dev/null
@@ -1,6 +0,0 @@
-# We don't need -fpic on IRIX, so let's install both the shared and
-# non-shared versions.
-
-LIBS = $(ARLIB) $(ARLINK) $(SHLIB) $(SHLINK)
-DEPLIBS = ../$(SHLIB)
-SHDEPS = -lm
diff --git a/contrib/libstdc++/config/linux.ml b/contrib/libstdc++/config/linux.ml
deleted file mode 100644
index 14dcb45..0000000
--- a/contrib/libstdc++/config/linux.ml
+++ /dev/null
@@ -1,11 +0,0 @@
-# Elf with shared libm, so we can link it into the shared libstdc++.
-
-ARLIB = libstdc++-$(LIBSTDCXX_INTERFACE)$(LIBC_INTERFACE)$(CXX_INTERFACE)-$(VERSION).a
-MARLINK = libstdc++$(LIBC_INTERFACE)$(CXX_INTERFACE).a.$(LIBSTDCXX_INTERFACE)
-SHLIB = libstdc++-$(LIBSTDCXX_INTERFACE)$(LIBC_INTERFACE)$(CXX_INTERFACE)-$(VERSION).so
-MSHLINK = libstdc++$(LIBC_INTERFACE)$(CXX_INTERFACE).so.$(LIBSTDCXX_INTERFACE)
-
-LIBS = $(ARLIB) marlink $(ARLINK) $(SHLIB) mshlink $(SHLINK)
-SHFLAGS = -Wl,-soname,$(MSHLINK)
-SHDEPS = -lm
-DEPLIBS = ../$(SHLIB)
diff --git a/contrib/libstdc++/config/linux.mt b/contrib/libstdc++/config/linux.mt
deleted file mode 100644
index 5848851..0000000
--- a/contrib/libstdc++/config/linux.mt
+++ /dev/null
@@ -1,2 +0,0 @@
-# tell we want the mt-safe version
-MT_CFLAGS = -D_IO_MTSAFE_IO
diff --git a/contrib/libstdc++/config/openbsd.ml b/contrib/libstdc++/config/openbsd.ml
deleted file mode 100644
index 09c4023..0000000
--- a/contrib/libstdc++/config/openbsd.ml
+++ /dev/null
@@ -1,7 +0,0 @@
-# Base shared lib for OpenBSD i386
-
-LIBS = $(ARLIB) $(ARLINK) $(SHLIB) $(SHLINK) mshlink
-SHFLAGS = -nostdlib -Wl,-Bshareable,-Bforcearchive
-SHDEPS = -lm
-DEPLIBS = ../$(SHLIB)
-
diff --git a/contrib/libstdc++/config/openbsd.mt b/contrib/libstdc++/config/openbsd.mt
deleted file mode 100644
index 29da11c..0000000
--- a/contrib/libstdc++/config/openbsd.mt
+++ /dev/null
@@ -1,3 +0,0 @@
-# tell we want the mt-safe version
-MT_CFLAGS = -D_IO_MTSAFE_IO -D_PTHREADS
-
diff --git a/contrib/libstdc++/config/posix.mt b/contrib/libstdc++/config/posix.mt
deleted file mode 100644
index 6afe1e5..0000000
--- a/contrib/libstdc++/config/posix.mt
+++ /dev/null
@@ -1 +0,0 @@
-MT_CFLAGS = -D_PTHREADS
diff --git a/contrib/libstdc++/config/sol2pth.mt b/contrib/libstdc++/config/sol2pth.mt
deleted file mode 100644
index 6afe1e5..0000000
--- a/contrib/libstdc++/config/sol2pth.mt
+++ /dev/null
@@ -1 +0,0 @@
-MT_CFLAGS = -D_PTHREADS
diff --git a/contrib/libstdc++/config/sol2shm.ml b/contrib/libstdc++/config/sol2shm.ml
deleted file mode 100644
index e87f079..0000000
--- a/contrib/libstdc++/config/sol2shm.ml
+++ /dev/null
@@ -1,6 +0,0 @@
-# Solaris2 with shared libm, so we can link it into the shared libstdc++.
-
-LIBS = $(ARLIB) $(ARLINK) $(SHLIB) $(SHLINK)
-SHFLAGS = -h $(SHLIB)
-SHDEPS = -lm
-DEPLIBS = ../$(SHLIB)
diff --git a/contrib/libstdc++/config/sol2solth.mt b/contrib/libstdc++/config/sol2solth.mt
deleted file mode 100644
index f809d0a..0000000
--- a/contrib/libstdc++/config/sol2solth.mt
+++ /dev/null
@@ -1 +0,0 @@
-MT_CFLAGS = -D_SOLTHREADS
diff --git a/contrib/libstdc++/config/sunos4.ml b/contrib/libstdc++/config/sunos4.ml
deleted file mode 100644
index 3c5de27..0000000
--- a/contrib/libstdc++/config/sunos4.ml
+++ /dev/null
@@ -1,9 +0,0 @@
-# SunOS doesn't provide a shared libm, so we have to link with the archive
-# library, even for programs that don't use complex.
-# SunOS requires a version number in shared library filenames.
-
-LIBS = $(ARLIB) $(ARLINK) $(SHLIB)
-SHFLAGS = $(PICFLAG)
-DEPLIBS = ../$(SHLIB)
-LDLIBS = -L.. -lstdc++ -lm
-MLDLIBS = -L.. -lstdc++ -lm
diff --git a/contrib/libstdc++/config/x86-interix.ml b/contrib/libstdc++/config/x86-interix.ml
deleted file mode 100644
index 8b8774e..0000000
--- a/contrib/libstdc++/config/x86-interix.ml
+++ /dev/null
@@ -1,9 +0,0 @@
-# x86 Interix. SHLINK is defined to be .dummy to avoid running into
-# the lack of symbolic links.
-
-SHLINK = .dummy
-SHLIB = libstdc++.so
-LIBS = $(ARLIB) $(SHLIB)
-DEPLIBS = ../$(SHLIB)
-SHFLAGS = $(PICFLAG)
-
diff --git a/contrib/libstdc++/configure.in b/contrib/libstdc++/configure.in
deleted file mode 100644
index b8d895f..0000000
--- a/contrib/libstdc++/configure.in
+++ /dev/null
@@ -1,554 +0,0 @@
-# Process this file with autoconf to produce a configure script, like so:
-# aclocal && autoconf && autoheader && automake
-
-AC_PREREQ(2.13)
-AC_INIT(src/ios.cc)
-
-# This works around the fact that libtool configuration may change LD
-# for this particular configuration, but some shells, instead of
-# keeping the changes in LD private, export them just because LD is
-# exported. Only used at the end of this file.
-ORIGINAL_LD_FOR_MULTILIBS=$LD
-
-PACKAGE=libstdc++
-AC_SUBST(PACKAGE)
-# For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=5:5:0
-AC_SUBST(libtool_VERSION)
-
-GLIBCPP_TOPREL_CONFIGURE
-
-# Gets build, host, target, *_vendor, *_cpu, *_os, etc.
-#
-# You will slowly go insane if you do not grok the following fact: when
-# building v3 as part of the compiler, the top-level /target/ becomes the
-# library's /host/. `configure' then causes --target to default to --host,
-# exactly like any other package using autoconf. Therefore, 'target' and
-# 'host' will always be the same. This makes sense both for native and
-# cross compilers, just think about it for a little while. :-)
-#
-# Also, if v3 is being configured as part of a cross compiler, the top-level
-# configure script will pass the "real" host as $with_cross_host.
-#
-# AC 2.5x sets target_alias iff the user specified --target, but we use it
-# everywhere, so we set it here just to be sure. In AC 2.13
-# AC_CANONICAL_TARGET was known as AC_CANONICAL_SYSTEM.
-AC_CANONICAL_SYSTEM
-target_alias=${target_alias-$target}
-AC_SUBST(target_alias)
-
-# Runs configure.target, finds CC, CXX and assorted other critical bits.
-# Must run this before the GLIBCPP_ENABLE_* macros below.
-GLIBCPP_CONFIGURE(.)
-
-AM_INIT_AUTOMAKE($PACKAGE, $gcc_version)
-AM_CONFIG_HEADER(config.h)
-
-AC_LIBTOOL_DLOPEN
-AM_PROG_LIBTOOL
-AC_SUBST(enable_shared)
-AC_SUBST(enable_static)
-
-# Check for c++ or library specific bits that don't require linking.
-#GLIBCPP_CHECK_COMPILER_VERSION
-GLIBCPP_CHECK_GNU_MAKE
-
-# Enable all the variable C++ stuff. C_MBCHAR must come early.
-GLIBCPP_ENABLE_CSTDIO
-GLIBCPP_ENABLE_CLOCALE
-GLIBCPP_ENABLE_CHEADERS([$c_model])
-GLIBCPP_ENABLE_C_MBCHAR([yes])
-GLIBCPP_ENABLE_C99([yes])
-GLIBCPP_ENABLE_LONG_LONG([yes])
-GLIBCPP_ENABLE_THREADS
-GLIBCPP_ENABLE_SJLJ_EXCEPTIONS
-GLIBCPP_ENABLE_LIBUNWIND_EXCEPTIONS
-GLIBCPP_ENABLE_CONCEPT_CHECKS
-GLIBCPP_ENABLE_CXX_FLAGS
-GLIBCPP_ENABLE_DEBUG([no])
-GLIBCPP_ENABLE_DEBUG_FLAGS([none])
-
-# Check for headers necessary for libsupc++ using dyn-string.c/cxa_demangle.c
-AC_CHECK_HEADERS(string.h stdlib.h)
-
-# No surprises, no surprises...
-if test $ATOMICITYH = cpu/generic ; then
- AC_MSG_WARN([No native atomic operations are provided yet for this platform.])
- if test $target_thread_file = single; then
- AC_MSG_WARN([They cannot be faked when thread support is disabled.])
- AC_MSG_WARN([Thread-safety of certain classes is not guaranteed.])
- else
- AC_MSG_WARN([They will be faked using a mutex.])
- AC_MSG_WARN([Performance of certain classes will degrade as a result.])
- fi
-fi
-
-
-if test -n "$with_cross_host" || test x"$build" != x"$host"; then
-
- # We are being configured with some form of cross compiler.
- GLIBCPP_IS_CROSS_COMPILING=true
-
- # This lets us hard-code the functionality we know we'll have in the cross
- # target environment. "Let" is a sugar-coated word placed on an especially
- # dull and tedious hack, actually.
- #
- # Here's why GLIBCPP_CHECK_MATH_SUPPORT, and other autoconf macros
- # that involve linking, can't be used:
- # "cannot open sim-crt0.o"
- # "cannot open crt0.o"
- # etc. All this is because there currently exists no unified, consistent
- # way for top level CC information to be passed down to target directories:
- # newlib includes, newlib linking info, libgloss versus newlib crt0.o, etc.
- # When all of that is done, all of this hokey, excessive AC_DEFINE junk for
- # crosses can be removed.
-
- # If Canadian cross, then don't pick up tools from the build directory.
- # Used in GLIBCPP_EXPORT_INCLUDES (and nowhere else?).
- if test -n "$with_cross_host" && test x"$build" != x"$with_cross_host"; then
- CANADIAN=yes
- else
- CANADIAN=no
- fi
-
- # Construct crosses by hand, eliminating bits that need ld...
- # GLIBCPP_CHECK_COMPILER_FEATURES
- # GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT
- # GLIBCPP_CHECK_MATH_SUPPORT
-
- case "$target" in
- *-linux*)
- os_include_dir="os/gnu-linux"
- AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
- machine/endian.h machine/param.h sys/machine.h sys/types.h \
- fp.h locale.h float.h inttypes.h])
- SECTION_FLAGS='-ffunction-sections -fdata-sections'
- AC_SUBST(SECTION_FLAGS)
- GLIBCPP_CHECK_LINKER_FEATURES
- GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
- GLIBCPP_CHECK_WCHAR_T_SUPPORT
- AC_DEFINE(HAVE_COPYSIGN)
- AC_DEFINE(HAVE_COPYSIGNF)
- AC_DEFINE(HAVE_FINITE)
- AC_DEFINE(HAVE_FINITEF)
- AC_DEFINE(HAVE_FREXPF)
- AC_DEFINE(HAVE_HYPOTF)
- AC_DEFINE(HAVE_ISINF)
- AC_DEFINE(HAVE_ISINFF)
- AC_DEFINE(HAVE_ISNAN)
- AC_DEFINE(HAVE_ISNANF)
- AC_DEFINE(HAVE_SINCOS)
- AC_DEFINE(HAVE_SINCOSF)
- if test x"long_double_math_on_this_cpu" = x"yes"; then
- AC_DEFINE(HAVE_FINITEL)
- AC_DEFINE(HAVE_HYPOTL)
- AC_DEFINE(HAVE_ISINFL)
- AC_DEFINE(HAVE_ISNANL)
- fi
- ;;
- *-hpux*)
- # Check for available headers.
- AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
- machine/endian.h machine/param.h sys/machine.h sys/types.h \
- fp.h locale.h float.h inttypes.h])
- SECTION_FLAGS='-ffunction-sections -fdata-sections'
- AC_SUBST(SECTION_FLAGS)
- GLIBCPP_CHECK_LINKER_FEATURES
- GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
- GLIBCPP_CHECK_WCHAR_T_SUPPORT
- os_include_dir="os/hpux"
- AC_DEFINE(HAVE_COPYSIGN)
- AC_DEFINE(HAVE_COPYSIGNF)
- AC_DEFINE(HAVE_FREXPF)
- AC_DEFINE(HAVE_HYPOT)
- case "$target" in
- *-hpux10*)
- AC_DEFINE(HAVE_FINITE)
- AC_DEFINE(HAVE_FINITEF)
- AC_DEFINE(HAVE_ISINF)
- AC_DEFINE(HAVE_ISINFF)
- AC_DEFINE(HAVE_ISNAN)
- AC_DEFINE(HAVE_ISNANF)
- ;;
- esac
-
- ;;
- *-netbsd*)
- # Check for available headers.
- AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
- machine/endian.h machine/param.h sys/machine.h sys/types.h \
- fp.h locale.h float.h inttypes.h])
- SECTION_FLAGS='-ffunction-sections -fdata-sections'
- AC_SUBST(SECTION_FLAGS)
- GLIBCPP_CHECK_LINKER_FEATURES
- GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
- GLIBCPP_CHECK_WCHAR_T_SUPPORT
- os_include_dir="os/bsd/netbsd"
- AC_DEFINE(HAVE_COPYSIGN)
- AC_DEFINE(HAVE_COPYSIGNF)
- AC_DEFINE(HAVE_FINITEF)
- AC_DEFINE(HAVE_FINITE)
- AC_DEFINE(HAVE_FREXPF)
- AC_DEFINE(HAVE_HYPOTF)
- AC_DEFINE(HAVE_ISINF)
- AC_DEFINE(HAVE_ISINFF)
- AC_DEFINE(HAVE_ISNAN)
- AC_DEFINE(HAVE_ISNANF)
- if test x"long_double_math_on_this_cpu" = x"yes"; then
- AC_DEFINE(HAVE_FINITEL)
- AC_DEFINE(HAVE_ISINFL)
- AC_DEFINE(HAVE_ISNANL)
- fi
- ;;
- *-freebsd*)
- # Check for available headers.
- AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
- machine/endian.h machine/param.h sys/machine.h sys/types.h \
- fp.h locale.h float.h inttypes.h sys/resource.h sys/stat.h \
- sys/time.h unistd.h])
- SECTION_FLAGS='-ffunction-sections -fdata-sections'
- AC_SUBST(SECTION_FLAGS)
- GLIBCPP_CHECK_LINKER_FEATURES
- GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
- GLIBCPP_CHECK_WCHAR_T_SUPPORT
- os_include_dir="os/bsd/freebsd"
- AC_DEFINE(HAVE_LC_MESSAGES)
- AC_DEFINE(HAVE_DRAND48)
- AC_DEFINE(HAVE_GETPAGESIZE)
- AC_DEFINE(HAVE_SETENV)
- AC_DEFINE(HAVE_SIGSETJMP)
- AC_DEFINE(HAVE_COPYSIGN)
- AC_DEFINE(HAVE_COPYSIGNF)
- AC_DEFINE(HAVE_FINITEF)
- AC_DEFINE(HAVE_FINITE)
- AC_DEFINE(HAVE_FREXPF)
- AC_DEFINE(HAVE_HYPOT)
- AC_DEFINE(HAVE_HYPOTF)
- AC_DEFINE(HAVE_ISINF)
- AC_DEFINE(HAVE_ISNAN)
- AC_DEFINE(HAVE_ISNANF)
- if test x"long_double_math_on_this_cpu" = x"yes"; then
- AC_DEFINE(HAVE_FINITEL)
- AC_DEFINE(HAVE_ISINFL)
- AC_DEFINE(HAVE_ISNANL)
- fi
- ;;
- *-mingw32*)
- AC_CHECK_HEADERS([sys/types.h locale.h float.h])
- GLIBCPP_CHECK_LINKER_FEATURES
- GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
- GLIBCPP_CHECK_WCHAR_T_SUPPORT
- os_include_dir="os/mingw32"
- ;;
- *-windiss*)
- os_include_dir="os/windiss"
- ;;
-changequote(,)dnl
- *-qnx6.[12]*)
-changequote([,])dnl
- SECTION_FLAGS='-ffunction-sections -fdata-sections'
- AC_SUBST(SECTION_FLAGS)
- GLIBCPP_CHECK_LINKER_FEATURES
- GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
- GLIBCPP_CHECK_WCHAR_T_SUPPORT
- os_include_dir="os/qnx/qnx6.1"
- AC_DEFINE(HAVE_COSF)
- AC_DEFINE(HAVE_COSL)
- AC_DEFINE(HAVE_COSHF)
- AC_DEFINE(HAVE_COSHL)
- AC_DEFINE(HAVE_LOGF)
- AC_DEFINE(HAVE_LOGL)
- AC_DEFINE(HAVE_LOG10F)
- AC_DEFINE(HAVE_LOG10L)
- AC_DEFINE(HAVE_SINF)
- AC_DEFINE(HAVE_SINL)
- AC_DEFINE(HAVE_SINHF)
- AC_DEFINE(HAVE_SINHL)
- ;;
- *)
- os_include_dir="os/newlib"
- AC_DEFINE(HAVE_HYPOT)
- ;;
- esac
-
- case "$target" in
- *-mingw32*)
- ;;
- *-windiss*)
- AC_DEFINE(HAVE_ACOSF)
- AC_DEFINE(HAVE_ASINF)
- AC_DEFINE(HAVE_ATAN2F)
- AC_DEFINE(HAVE_ATANF)
- AC_DEFINE(HAVE_CEILF)
- AC_DEFINE(HAVE_COPYSIGN)
- AC_DEFINE(HAVE_COPYSIGNF)
- AC_DEFINE(HAVE_COSF)
- AC_DEFINE(HAVE_COSHF)
- AC_DEFINE(HAVE_EXPF)
- AC_DEFINE(HAVE_FABSF)
- AC_DEFINE(HAVE_FLOORF)
- AC_DEFINE(HAVE_FMODF)
- AC_DEFINE(HAVE_FREXPF)
- AC_DEFINE(HAVE_LDEXPF)
- AC_DEFINE(HAVE_LOG10F)
- AC_DEFINE(HAVE_LOGF)
- AC_DEFINE(HAVE_MODFF)
- AC_DEFINE(HAVE_POWF)
- AC_DEFINE(HAVE_SINF)
- AC_DEFINE(HAVE_SINHF)
- AC_DEFINE(HAVE_SQRTF)
- AC_DEFINE(HAVE_TANF)
- AC_DEFINE(HAVE_TANHF)
- ;;
- *-freebsd*)
- # Must replicate generic section since we don't have strtof or strtold.
- AC_DEFINE(HAVE_MMAP)
- AC_DEFINE(HAVE_ACOSF)
- AC_DEFINE(HAVE_ASINF)
- AC_DEFINE(HAVE_ATAN2F)
- AC_DEFINE(HAVE_ATANF)
- AC_DEFINE(HAVE_CEILF)
- AC_DEFINE(HAVE_COPYSIGN)
- AC_DEFINE(HAVE_COPYSIGNF)
- AC_DEFINE(HAVE_COSF)
- AC_DEFINE(HAVE_COSHF)
- AC_DEFINE(HAVE_EXPF)
- AC_DEFINE(HAVE_FABSF)
- AC_DEFINE(HAVE_FLOORF)
- AC_DEFINE(HAVE_FMODF)
- AC_DEFINE(HAVE_FREXPF)
- AC_DEFINE(HAVE_LDEXPF)
- AC_DEFINE(HAVE_LOG10F)
- AC_DEFINE(HAVE_LOGF)
- AC_DEFINE(HAVE_MODFF)
- AC_DEFINE(HAVE_POWF)
- AC_DEFINE(HAVE_SINF)
- AC_DEFINE(HAVE_SINHF)
- AC_DEFINE(HAVE_SQRTF)
- AC_DEFINE(HAVE_TANF)
- AC_DEFINE(HAVE_TANHF)
- ;;
- *)
- # GLIBCPP_CHECK_STDLIB_SUPPORT
- AC_DEFINE(HAVE_STRTOF)
- AC_DEFINE(HAVE_STRTOLD)
- # AC_FUNC_MMAP
- AC_DEFINE(HAVE_MMAP)
-
- AC_DEFINE(HAVE_ACOSF)
- AC_DEFINE(HAVE_ASINF)
- AC_DEFINE(HAVE_ATAN2F)
- AC_DEFINE(HAVE_ATANF)
- AC_DEFINE(HAVE_CEILF)
- AC_DEFINE(HAVE_COPYSIGN)
- AC_DEFINE(HAVE_COPYSIGNF)
- AC_DEFINE(HAVE_COSF)
- AC_DEFINE(HAVE_COSHF)
- AC_DEFINE(HAVE_EXPF)
- AC_DEFINE(HAVE_FABSF)
- AC_DEFINE(HAVE_FLOORF)
- AC_DEFINE(HAVE_FMODF)
- AC_DEFINE(HAVE_FREXPF)
- AC_DEFINE(HAVE_LDEXPF)
- AC_DEFINE(HAVE_LOG10F)
- AC_DEFINE(HAVE_LOGF)
- AC_DEFINE(HAVE_MODFF)
- AC_DEFINE(HAVE_POWF)
- AC_DEFINE(HAVE_SINF)
- AC_DEFINE(HAVE_SINHF)
- AC_DEFINE(HAVE_SQRTF)
- AC_DEFINE(HAVE_TANF)
- AC_DEFINE(HAVE_TANHF)
- ;;
- esac
-
- # At some point, we should differentiate between architectures
- # like x86, which have long double versions, and alpha/powerpc/etc.,
- # which don't. For the time being, punt.
- if test x"long_double_math_on_this_cpu" = x"yes"; then
- AC_DEFINE(HAVE_ACOSL)
- AC_DEFINE(HAVE_ASINL)
- AC_DEFINE(HAVE_ATAN2L)
- AC_DEFINE(HAVE_ATANL)
- AC_DEFINE(HAVE_CEILL)
- AC_DEFINE(HAVE_COPYSIGNL)
- AC_DEFINE(HAVE_COSL)
- AC_DEFINE(HAVE_COSHL)
- AC_DEFINE(HAVE_EXPL)
- AC_DEFINE(HAVE_FABSL)
- AC_DEFINE(HAVE_FLOORL)
- AC_DEFINE(HAVE_FMODL)
- AC_DEFINE(HAVE_FREXPL)
- AC_DEFINE(HAVE_LDEXPL)
- AC_DEFINE(HAVE_LOG10L)
- AC_DEFINE(HAVE_LOGL)
- AC_DEFINE(HAVE_MODFL)
- AC_DEFINE(HAVE_POWL)
- AC_DEFINE(HAVE_SINCOSL)
- AC_DEFINE(HAVE_SINL)
- AC_DEFINE(HAVE_SINHL)
- AC_DEFINE(HAVE_SQRTL)
- AC_DEFINE(HAVE_TANL)
- AC_DEFINE(HAVE_TANHL)
- fi
-
-else
-
- # We are being configured natively. We can do more elaborate tests
- # that include AC_TRY_COMPILE now, as the linker is assumed to be
- # working.
- GLIBCPP_IS_CROSS_COMPILING=false
- CANADIAN=no
-
- # Check for available headers.
- AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \
- machine/param.h sys/machine.h fp.h locale.h float.h inttypes.h gconv.h sys/types.h])
-
- GLIBCPP_CHECK_COMPILER_FEATURES
- GLIBCPP_CHECK_LINKER_FEATURES
- GLIBCPP_CHECK_BUILTIN_MATH_SUPPORT
- GLIBCPP_CHECK_MATH_SUPPORT
- GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT
- GLIBCPP_CHECK_WCHAR_T_SUPPORT
- GLIBCPP_CHECK_STDLIB_SUPPORT
- GLIBCPP_CHECK_UNISTD_SUPPORT
-
- # For showmanyc_helper().
- AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
- GLIBCPP_CHECK_POLL
- GLIBCPP_CHECK_S_ISREG_OR_S_IFREG
-
- AC_LC_MESSAGES
-
- AC_TRY_COMPILE([
- #include <setjmp.h>
- ], [sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);],
- [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available. ])
- ])
-
- AC_FUNC_MMAP
-
-fi
-
-# This depends on GLIBCPP_CHECK_LINKER_FEATURES, but without it assumes no.
-GLIBCPP_ENABLE_SYMVERS([yes])
-
-# This depends on GLIBCPP_ENABLE_SYMVERS and GLIBCPP_IS_CROSS_COMPILING.
-GLIBCPP_CONFIGURE_TESTSUITE
-
-# Propagate the target-specific source directories through the build chain.
-# (Nothing currently uses cpu_include_dir directly; only ATOMICITYH
-# uses it, and it only gets used in this file.)
-OS_INC_SRCDIR=config/${os_include_dir}
-ATOMICITY_INC_SRCDIR=config/${ATOMICITYH}
-AC_SUBST(OS_INC_SRCDIR)
-AC_SUBST(ATOMICITY_INC_SRCDIR)
-
-# Set up cross-compile flags
-AC_SUBST(GLIBCPP_IS_CROSS_COMPILING) dnl Unused so far.
-AM_CONDITIONAL(CANADIAN, test "$CANADIAN" = yes)
-
-AC_CACHE_SAVE
-
-if test "${multilib}" = "yes"; then
- multilib_arg="--enable-multilib"
-else
- multilib_arg=
-fi
-
-# Export all the install information
-GLIBCPP_EXPORT_INSTALL_INFO
-
-# Export all the include and flag information to makefiles.
-GLIBCPP_EXPORT_INCLUDES
-GLIBCPP_EXPORT_FLAGS
-
-if ${CONFIG_SHELL-/bin/sh} ./libtool --tag CXX --features |
- grep "enable shared" > /dev/null; then
- LIBSUPCXX_PICFLAGS=-prefer-pic
-else
- LIBSUPCXX_PICFLAGS=
-fi
-AC_SUBST(LIBSUPCXX_PICFLAGS)
-
-# Generate the various Makefiles, include files, and scripts.
-# NB: Multilibs need MULTISUBDIR defined correctly in src/Makefile.am
-# libsupc++/Makefile.am and testsuite/Makefile.am so that multilib installs
-# will end up installed in the correct place. To work around this not being
-# passed down from config-ml.in -> top_srcdir/Makefile.am ->
-# top_srcdir/{src,libsupc++}/Makefile.am, manually append it here.
-AC_OUTPUT(Makefile \
- include/Makefile src/Makefile \
- libmath/Makefile libio/Makefile libsupc++/Makefile \
- po/Makefile testsuite/Makefile mkcheck testsuite_flags,
-[if test -n "$CONFIG_FILES"; then
- LD="${ORIGINAL_LD_FOR_MULTILIBS}"
- ac_file=Makefile . ${glibcpp_basedir}/../config-ml.in
- grep '^MULTISUBDIR =' Makefile >> src/Makefile
- grep '^MULTISUBDIR =' Makefile >> libsupc++/Makefile
- grep '^MULTISUBDIR =' Makefile >> testsuite/Makefile
-fi
-chmod +x mkcheck
-chmod +x testsuite_flags
-],
-srcdir=${srcdir}
-host=${host}
-target=${target}
-with_multisubdir=${with_multisubdir}
-ac_configure_args="${multilib_arg} ${ac_configure_args}"
-CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-glibcpp_basedir=${glibcpp_basedir}
-CC="${CC}"
-CXX="${CXX}"
-ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}"
-)
-dnl In autoconf 2.5x, AC_OUTPUT is replaced by three AC_ macros:
-dnl AC_CONFIG_FILES(Makefile \
-dnl include/Makefile src/Makefile \
-dnl libmath/Makefile libio/Makefile libsupc++/Makefile \
-dnl po/Makefile testsuite/Makefile mkcheck testsuite_flags)
-dnl AC_CONFIG_COMMANDS([default],
-dnl [if test -n "$CONFIG_FILES"; then
-dnl ac_file=Makefile . ${glibcpp_basedir}/../config-ml.in
-dnl grep '^MULTISUBDIR =' Makefile >> src/Makefile
-dnl grep '^MULTISUBDIR =' Makefile >> libsupc++/Makefile
-dnl grep '^MULTISUBDIR =' Makefile >> testsuite/Makefile
-dnl fi
-dnl chmod +x mkcheck
-dnl chmod +x testsuite_flags
-dnl ],
-dnl srcdir=${srcdir}
-dnl host=${host}
-dnl target=${target}
-dnl with_multisubdir=${with_multisubdir}
-dnl ac_configure_args="${multilib_arg} ${ac_configure_args}"
-dnl CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-dnl glibcpp_basedir=${glibcpp_basedir}
-dnl CC="${CC}"
-dnl CXX="${CXX}"
-dnl )
-dnl AC_OUTPUT
-
-
-# Sanity checking & User-visible messages.
-# Checks down here, otherwise they get scrolled off before
-# the user will notice.
-
-# Trying to get more people to read documentation. Possibly remove
-# check and warn all the time. There is no "informational" AC_MSG_
-# macro, so these are going to be printed even when --quiet/--silent
-# is given.
-if test ! -f stamp-sanity-warned; then
- touch stamp-sanity-warned
- echo ""
- echo "Please make certain that you read the installation information here:"
- echo " faster => ${srcdir}/docs/html/install.html"
- echo " slower => <URL:http://gcc.gnu.org/onlinedocs/libstdc++/install.html>"
- echo ""
- echo "and the configuration information here:"
- echo " faster => ${srcdir}/docs/html/configopts.html"
- echo " slower => <URL:http://gcc.gnu.org/onlinedocs/libstdc++/configopts.html>"
- echo ""
- echo "before proceeding with ${_cv_gnu_make_command}."
- echo ""
-fi
diff --git a/contrib/libstdc++/configure.target b/contrib/libstdc++/configure.target
deleted file mode 100644
index c1d1cb1..0000000
--- a/contrib/libstdc++/configure.target
+++ /dev/null
@@ -1,200 +0,0 @@
-# configure.target
-#
-# This shell script handles all target based configuration for libstdc++.
-# It sets various shell variables based on the the target and the
-# configuration options. You can modify this shell script without needing
-# to rerun autoconf/aclocal/etc. This file is "sourced" not executed.
-#
-# You should read docs/html/17_intro/porting.* to make sense of this file.
-#
-#
-# It uses the following shell variables as set by config.guess:
-# target The configuration target (full CPU-vendor-OS triplet)
-# target_cpu The configuration target CPU
-# target_os The configuration target OS
-#
-#
-# It sets the following shell variables:
-#
-# cpu_include_dir CPU-specific directory, defaults to cpu/generic
-# if cpu/target_cpu doesn't exist. This is
-# used to set ATOMICITYH.
-#
-# os_include_dir OS-specific directory, defaults to os/generic.
-#
-# c_model the model to use for "C" headers, defaults to c_std.
-#
-# c_compatibility if "C" compatibility headers are necessary,
-# defaults to no.
-#
-# abi_baseline_pair directory name for ABI compat testing,
-# defaults to target (as per config.guess)
-#
-# ATOMICITYH location of atomicity.h,
-# defaults to cpu_include_dir
-#
-# It possibly modifies the following variables:
-#
-# OPT_LDFLAGS extra flags to pass when linking the library, of
-# the form '-Wl,blah'
-# (defaults to empty in acinclude.m4)
-#
-#
-# If the defaults will not work for your platform, you need only change the
-# variables that won't work, i.e., you do not need to explicitly set a
-# working variable to its default. Most targets only need to change the two
-# *_include_dir variables.
-
-
-# DEFAULTS
-# Try to guess a default cpu_include_dir based on the name of the CPU. We
-# cannot do this for os_include_dir; there are too many portable operating
-# systems out there. :-)
-c_model=c_std
-c_compatibility=no
-
-
-# TARGET-SPECIFIC OVERRIDES
-# Set any CPU-dependent bits.
-# Here we override defaults and catch more general cases due to naming
-# conventions (e.g., chip_name* to catch all variants).
-# THIS TABLE IS SORTED. KEEP IT THAT WAY.
-
-case "${target_cpu}" in
- alpha*)
- try_cpu=alpha
- ;;
- athlon* | i586 | i686 | i786 | x86_64)
- try_cpu=i486
- ;;
- hppa*)
- try_cpu=hppa
- ;;
- m680[246]0)
- try_cpu=m68k
- ;;
- powerpc* | rs6000)
- try_cpu=powerpc
- ;;
- s390x)
- try_cpu=s390
- ;;
- sparc* | ultrasparc)
- try_cpu=sparc
- ;;
- *)
- if test -d ${glibcpp_srcdir}/config/cpu/${target_cpu}; then
- try_cpu=${target_cpu}
- else
- try_cpu=generic
- fi
- ;;
-esac
-
-
-# Now look for the file(s) usually tied to a CPU model, and make
-# default choices for those if they haven't been explicitly set
-# already.
-cpu_include_dir="cpu/${try_cpu}"
-ATOMICITYH=$cpu_include_dir
-abi_baseline_pair=${try_cpu}-${host_os}
-
-# Set any OS-dependent bits.
-# Set the os_include_dir.
-# Set c_model, c_compatibility here.
-# If atomic ops and/or numeric limits are OS-specific rather than
-# CPU-specifc, set those here too.
-# THIS TABLE IS SORTED. KEEP IT THAT WAY.
-case "${target_os}" in
- aix4.[3456789]* | aix[56789]*)
- # We set os_include_dir to os/aix only on AIX 4.3 and newer, but
- # os/aix/atomicity.h works on earlier versions of AIX 4.*, so we
- # explicitly duplicate the directory for 4.[<3].
- os_include_dir="os/aix"
- ATOMICITYH="os/aix"
- OPT_LDFLAGS="-Wl,-G"
- ;;
- aix4.*)
- ATOMICITYH="os/aix"
- ;;
- aix*)
- ATOMICITYH="cpu/generic"
- ;;
- bsd*)
- # Plain BSD attempts to share FreeBSD files.
- os_include_dir="os/bsd/freebsd"
- ;;
- cygwin*)
- os_include_dir="os/newlib"
- ;;
- *djgpp*) # leading * picks up "msdosdjgpp"
- os_include_dir="os/djgpp"
- ;;
- freebsd*)
- os_include_dir="os/bsd/freebsd"
- ;;
- gnu* | linux*)
- os_include_dir="os/gnu-linux"
- ;;
- hpux*)
- os_include_dir="os/hpux"
- ;;
- irix[1-6] | irix[1-5].* | irix6.[0-4]*)
- # This is known to work on at least IRIX 5.2 and 6.3.
- os_include_dir="os/irix/irix5.2"
- ATOMICITYH=$os_include_dir
- ;;
- irix6.5*)
- os_include_dir="os/irix/irix6.5"
- ATOMICITYH=$os_include_dir
- ;;
- mingw32*)
- os_include_dir="os/mingw32"
- ;;
- netbsd*)
- os_include_dir="os/bsd/netbsd"
- ;;
- solaris2.5 | solaris2.5.[0-9])
- os_include_dir="os/solaris/solaris2.5"
- ;;
- solaris2.6)
- os_include_dir="os/solaris/solaris2.6"
- ;;
- solaris2.[789] | solaris2.1[0-9])
- os_include_dir="os/solaris/solaris2.7"
- ;;
- windiss*)
- os_include_dir="os/windiss"
- ;;
- qnx6.[12]*)
- os_include_dir="os/qnx/qnx6.1"
- c_model=c
- ;;
- *)
- os_include_dir="os/generic"
- ;;
-esac
-
-
-# Set any OS-dependent and CPU-dependent bits.
-# THIS TABLE IS SORTED. KEEP IT THAT WAY.
-case "${target}" in
- mips*-*-linux*)
- ATOMICITYH="cpu/mips"
- ;;
- x86_64-*-linux*)
- abi_baseline_pair="x86_64-linux-gnu"
- ;;
- alpha*-*-freebsd5*)
- abi_baseline_pair="alpha-freebsd5"
- ;;
- i*86-*-freebsd4*)
- abi_baseline_pair="i386-freebsd4"
- ;;
- i*86-*-freebsd5*)
- abi_baseline_pair="i386-freebsd5"
- ;;
- sparc*-*-freebsd5*)
- abi_baseline_pair="sparc-freebsd5"
- ;;
-esac
diff --git a/contrib/libstdc++/csetjmp b/contrib/libstdc++/csetjmp
deleted file mode 100644
index 4bba048..0000000
--- a/contrib/libstdc++/csetjmp
+++ /dev/null
@@ -1,8 +0,0 @@
-// The -*- C++ -*- setjmp/longjmp header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CSETJMP__
-#define __CSETJMP__
-#include <setjmp.h>
-#endif
-
diff --git a/contrib/libstdc++/csignal b/contrib/libstdc++/csignal
deleted file mode 100644
index 6febfb7..0000000
--- a/contrib/libstdc++/csignal
+++ /dev/null
@@ -1,7 +0,0 @@
-// The -*- C++ -*- signal handling header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CSIGNAL__
-#define __CSIGNAL__
-#include <signal.h>
-#endif
diff --git a/contrib/libstdc++/cstdarg b/contrib/libstdc++/cstdarg
deleted file mode 100644
index 324f5a1..0000000
--- a/contrib/libstdc++/cstdarg
+++ /dev/null
@@ -1,7 +0,0 @@
-// -*- C++ -*- forwarding header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CSTDARG__
-#define __CSTDARG__
-#include <stdarg.h>
-#endif
diff --git a/contrib/libstdc++/cstddef b/contrib/libstdc++/cstddef
deleted file mode 100644
index db5cbe4..0000000
--- a/contrib/libstdc++/cstddef
+++ /dev/null
@@ -1,7 +0,0 @@
-// -*- C++ -*- forwarding header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CSTDDEF__
-#define __CSTDDEF__
-#include <stddef.h>
-#endif
diff --git a/contrib/libstdc++/cstdio b/contrib/libstdc++/cstdio
deleted file mode 100644
index 1fe1456..0000000
--- a/contrib/libstdc++/cstdio
+++ /dev/null
@@ -1,7 +0,0 @@
-// The -*- C++ -*- standard I/O header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CSTDIO__
-#define __CSTDIO__
-#include <stdio.h>
-#endif
diff --git a/contrib/libstdc++/cstdlib b/contrib/libstdc++/cstdlib
deleted file mode 100644
index e7c1a51..0000000
--- a/contrib/libstdc++/cstdlib
+++ /dev/null
@@ -1,23 +0,0 @@
-// The -*- C++ -*- standard library header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CSTDLIB__
-#define __CSTDLIB__
-#include <stdlib.h>
-
-#ifdef __GNUG__
-#pragma interface "cstdlib"
-#endif
-
-extern "C++" {
-
-#if _G_HAS_LABS
-inline long abs(long x) { return labs (x); }
-#else
-inline long abs(long x) { return x >= 0 ? x : -x; }
-#endif
-//inline ldiv_t div(long x, long y) { return ldiv (x, y); }
-
-} // extern "C++"
-
-#endif
diff --git a/contrib/libstdc++/cstdlibi.cc b/contrib/libstdc++/cstdlibi.cc
deleted file mode 100644
index abbfa03..0000000
--- a/contrib/libstdc++/cstdlibi.cc
+++ /dev/null
@@ -1,7 +0,0 @@
-// Implementation file for the -*- C++ -*- standard library header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifdef __GNUG__
-#pragma implementation "cstdlib"
-#endif
-#include <cstdlib>
diff --git a/contrib/libstdc++/cstring b/contrib/libstdc++/cstring
deleted file mode 100644
index d8d03a7..0000000
--- a/contrib/libstdc++/cstring
+++ /dev/null
@@ -1,96 +0,0 @@
-// The -*- C++ -*- null-terminated string header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CSTRING__
-#define __CSTRING__
-
-#include <string.h>
-
-#if 0 // Let's not bother with this just yet.
-#include <cstddef>
-
-#ifdef __GNUG__
-#pragma interface "cstring"
-#endif
-
-// The ANSI C prototypes for these functions have a const argument type and
-// non-const return type, so we can't use them.
-
-extern "C++" {
-extern inline const char *
-_G_strchr (const char *s, int c)
-{
- return strchr (s, c);
-}
-
-extern inline char *
-_G_strchr (char *s, int c)
-{
- return const_cast<char *> (strchr (s, c));
-}
-
-extern inline const char *
-_G_strpbrk (const char *s1, const char *s2)
-{
- return strpbrk (s1, s2);
-}
-
-extern inline char *
-_G_strpbrk (char *s1, const char *s2)
-{
- return const_cast<char *> (strpbrk (s1, s2));
-}
-
-extern inline const char *
-_G_strrchr (const char *s, int c)
-{
- return strrchr (s, c);
-}
-
-extern inline char *
-_G_strrchr (char *s, int c)
-{
- return const_cast<char *> (strrchr (s, c));
-}
-
-extern inline const char *
-_G_strstr (const char *s1, const char *s2)
-{
- return strstr (s1, s2);
-}
-
-extern inline char *
-_G_strstr (char *s1, const char *s2)
-{
- return const_cast<char *> (strstr (s1, s2));
-}
-
-extern inline const void *
-_G_memchr (const void *s, int c, size_t n)
-{
- return memchr (s, c, n);
-}
-
-extern inline void *
-_G_memchr (void *s, int c, size_t n)
-{
- return const_cast<void *> (memchr (s, c, n));
-}
-} // extern "C++"
-
-// Lose any vendor macros for these functions.
-#undef strchr
-#undef strpbrk
-#undef strrchr
-#undef strstr
-#undef memchr
-
-// Ewww, namespace pollution. Anyone have a better idea?
-#define strchr _G_strchr
-#define strpbrk _G_strpbrk
-#define strrchr _G_strrchr
-#define strstr _G_strstr
-#define memchr _G_memchr
-#endif // 0
-
-#endif // !defined (__CSTRING__)
diff --git a/contrib/libstdc++/cstringi.cc b/contrib/libstdc++/cstringi.cc
deleted file mode 100644
index 2676feb..0000000
--- a/contrib/libstdc++/cstringi.cc
+++ /dev/null
@@ -1,7 +0,0 @@
-// Implementation file for the -*- C++ -*- null-terminated string header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifdef __GNUG__
-#pragma implementation "cstring"
-#endif
-#include <cstring>
diff --git a/contrib/libstdc++/ctime b/contrib/libstdc++/ctime
deleted file mode 100644
index 0184da5..0000000
--- a/contrib/libstdc++/ctime
+++ /dev/null
@@ -1,7 +0,0 @@
-// The -*- C++ -*- time header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CTIME__
-#define __CTIME__
-#include <time.h>
-#endif
diff --git a/contrib/libstdc++/cwchar b/contrib/libstdc++/cwchar
deleted file mode 100644
index 1674c12..0000000
--- a/contrib/libstdc++/cwchar
+++ /dev/null
@@ -1,7 +0,0 @@
-// The -*- C++ -*- wide character header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CWCHAR__
-#define __CWCHAR__
-#include <wchar.h>
-#endif
diff --git a/contrib/libstdc++/cwctype b/contrib/libstdc++/cwctype
deleted file mode 100644
index 8112201..0000000
--- a/contrib/libstdc++/cwctype
+++ /dev/null
@@ -1,7 +0,0 @@
-// The -*- C++ -*- wide character type header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __CWCTYPE__
-#define __CWCTYPE__
-#include <wctype.h>
-#endif
diff --git a/contrib/libstdc++/fstream b/contrib/libstdc++/fstream
deleted file mode 100644
index 2c35ca9..0000000
--- a/contrib/libstdc++/fstream
+++ /dev/null
@@ -1,7 +0,0 @@
-// -*- C++ -*- forwarding header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __FSTREAM__
-#define __FSTREAM__
-#include <fstream.h>
-#endif
diff --git a/contrib/libstdc++/include/bits/fpos.h b/contrib/libstdc++/include/bits/fpos.h
deleted file mode 100644
index 5432527..0000000
--- a/contrib/libstdc++/include/bits/fpos.h
+++ /dev/null
@@ -1,127 +0,0 @@
-// File position object and stream types
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2001 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-//
-// ISO C++ 14882: 27 Input/output library
-//
-
-/** @file fpos.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef _CPP_BITS_FPOS_H
-#define _CPP_BITS_FPOS_H 1
-
-#pragma GCC system_header
-
-#include <bits/c++io.h>
-#include <cwchar> // For mbstate_t.
-
-namespace std
-{
- // 27.4.1 Types
-
- // [27.4.3] template class fpos
- /**
- * @doctodo
- */
- template<typename _StateT>
- class fpos
- {
- public:
- // Types:
- typedef _StateT __state_type;
-
- private:
- streamoff _M_off;
- __state_type _M_st;
-
- public:
- __state_type
- state() const { return _M_st; }
-
- void
- state(__state_type __st) { _M_st = __st; }
-
- // NB: The standard defines only the implicit copy ctor and the
- // previous two members. The rest is a "conforming extension".
- fpos(): _M_off(streamoff()), _M_st(__state_type()) { }
-
- fpos(streamoff __off, __state_type __st = __state_type())
- : _M_off(__off), _M_st(__st) { }
-
- operator streamoff() const { return _M_off; }
-
- fpos&
- operator+=(streamoff __off) { _M_off += __off; return *this; }
-
- fpos&
- operator-=(streamoff __off) { _M_off -= __off; return *this; }
-
- fpos
- operator+(streamoff __off)
- {
- fpos __t(*this);
- __t += __off;
- return __t;
- }
-
- fpos
- operator-(streamoff __off)
- {
- fpos __t(*this);
- __t -= __off;
- return __t;
- }
-
- bool
- operator==(const fpos& __pos) const
- { return _M_off == __pos._M_off; }
-
- bool
- operator!=(const fpos& __pos) const
- { return _M_off != __pos._M_off; }
-
- streamoff
- _M_position() const { return _M_off; }
-
- void
- _M_position(streamoff __off) { _M_off = __off; }
- };
-
- /// 27.2, paragraph 10 about fpos/char_traits circularity
- typedef fpos<mbstate_t> streampos;
-# ifdef _GLIBCPP_USE_WCHAR_T
- /// 27.2, paragraph 10 about fpos/char_traits circularity
- typedef fpos<mbstate_t> wstreampos;
-# endif
-} // namespace std
-
-#endif
diff --git a/contrib/libstdc++/include/bits/pthread_allocimpl.h b/contrib/libstdc++/include/bits/pthread_allocimpl.h
deleted file mode 100644
index 050b206..0000000
--- a/contrib/libstdc++/include/bits/pthread_allocimpl.h
+++ /dev/null
@@ -1,525 +0,0 @@
-// POSIX thread-related memory allocation -*- C++ -*-
-
-// Copyright (C) 2001 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-/*
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/** @file pthread_allocimpl.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef _CPP_BITS_PTHREAD_ALLOCIMPL_H
-#define _CPP_BITS_PTHREAD_ALLOCIMPL_H 1
-
-// Pthread-specific node allocator.
-// This is similar to the default allocator, except that free-list
-// information is kept separately for each thread, avoiding locking.
-// This should be reasonably fast even in the presence of threads.
-// The down side is that storage may not be well-utilized.
-// It is not an error to allocate memory in thread A and deallocate
-// it in thread B. But this effectively transfers ownership of the memory,
-// so that it can only be reallocated by thread B. Thus this can effectively
-// result in a storage leak if it's done on a regular basis.
-// It can also result in frequent sharing of
-// cache lines among processors, with potentially serious performance
-// consequences.
-
-#include <bits/c++config.h>
-#include <cerrno>
-#include <bits/stl_alloc.h>
-#ifndef __RESTRICT
-# define __RESTRICT
-#endif
-
-#include <new>
-
-namespace std
-{
-
-#define __STL_DATA_ALIGNMENT 8
-
-union _Pthread_alloc_obj {
- union _Pthread_alloc_obj * __free_list_link;
- char __client_data[__STL_DATA_ALIGNMENT]; /* The client sees this. */
-};
-
-// Pthread allocators don't appear to the client to have meaningful
-// instances. We do in fact need to associate some state with each
-// thread. That state is represented by
-// _Pthread_alloc_per_thread_state<_Max_size>.
-
-template<size_t _Max_size>
-struct _Pthread_alloc_per_thread_state {
- typedef _Pthread_alloc_obj __obj;
- enum { _S_NFREELISTS = _Max_size/__STL_DATA_ALIGNMENT };
- _Pthread_alloc_obj* volatile __free_list[_S_NFREELISTS];
- _Pthread_alloc_per_thread_state<_Max_size> * __next;
- // Free list link for list of available per thread structures.
- // When one of these becomes available for reuse due to thread
- // termination, any objects in its free list remain associated
- // with it. The whole structure may then be used by a newly
- // created thread.
- _Pthread_alloc_per_thread_state() : __next(0)
- {
- memset((void *)__free_list, 0, (size_t) _S_NFREELISTS * sizeof(__obj *));
- }
- // Returns an object of size __n, and possibly adds to size n free list.
- void *_M_refill(size_t __n);
-};
-
-// Pthread-specific allocator.
-// The argument specifies the largest object size allocated from per-thread
-// free lists. Larger objects are allocated using malloc_alloc.
-// Max_size must be a power of 2.
-template <size_t _Max_size = 128>
-class _Pthread_alloc_template {
-
-public: // but only for internal use:
-
- typedef _Pthread_alloc_obj __obj;
-
- // Allocates a chunk for nobjs of size size. nobjs may be reduced
- // if it is inconvenient to allocate the requested number.
- static char *_S_chunk_alloc(size_t __size, int &__nobjs);
-
- enum {_S_ALIGN = __STL_DATA_ALIGNMENT};
-
- static size_t _S_round_up(size_t __bytes) {
- return (((__bytes) + (int) _S_ALIGN-1) & ~((int) _S_ALIGN - 1));
- }
- static size_t _S_freelist_index(size_t __bytes) {
- return (((__bytes) + (int) _S_ALIGN-1)/(int)_S_ALIGN - 1);
- }
-
-private:
- // Chunk allocation state. And other shared state.
- // Protected by _S_chunk_allocator_lock.
- static pthread_mutex_t _S_chunk_allocator_lock;
- static char *_S_start_free;
- static char *_S_end_free;
- static size_t _S_heap_size;
- static _Pthread_alloc_per_thread_state<_Max_size>* _S_free_per_thread_states;
- static pthread_key_t _S_key;
- static bool _S_key_initialized;
- // Pthread key under which per thread state is stored.
- // Allocator instances that are currently unclaimed by any thread.
- static void _S_destructor(void *instance);
- // Function to be called on thread exit to reclaim per thread
- // state.
- static _Pthread_alloc_per_thread_state<_Max_size> *_S_new_per_thread_state();
- // Return a recycled or new per thread state.
- static _Pthread_alloc_per_thread_state<_Max_size> *_S_get_per_thread_state();
- // ensure that the current thread has an associated
- // per thread state.
- class _M_lock;
- friend class _M_lock;
- class _M_lock {
- public:
- _M_lock () { pthread_mutex_lock(&_S_chunk_allocator_lock); }
- ~_M_lock () { pthread_mutex_unlock(&_S_chunk_allocator_lock); }
- };
-
-public:
-
- /* n must be > 0 */
- static void * allocate(size_t __n)
- {
- __obj * volatile * __my_free_list;
- __obj * __RESTRICT __result;
- _Pthread_alloc_per_thread_state<_Max_size>* __a;
-
- if (__n > _Max_size) {
- return(malloc_alloc::allocate(__n));
- }
- if (!_S_key_initialized ||
- !(__a = (_Pthread_alloc_per_thread_state<_Max_size>*)
- pthread_getspecific(_S_key))) {
- __a = _S_get_per_thread_state();
- }
- __my_free_list = __a -> __free_list + _S_freelist_index(__n);
- __result = *__my_free_list;
- if (__result == 0) {
- void *__r = __a -> _M_refill(_S_round_up(__n));
- return __r;
- }
- *__my_free_list = __result -> __free_list_link;
- return (__result);
- };
-
- /* p may not be 0 */
- static void deallocate(void *__p, size_t __n)
- {
- __obj *__q = (__obj *)__p;
- __obj * volatile * __my_free_list;
- _Pthread_alloc_per_thread_state<_Max_size>* __a;
-
- if (__n > _Max_size) {
- malloc_alloc::deallocate(__p, __n);
- return;
- }
- if (!_S_key_initialized ||
- !(__a = (_Pthread_alloc_per_thread_state<_Max_size> *)
- pthread_getspecific(_S_key))) {
- __a = _S_get_per_thread_state();
- }
- __my_free_list = __a->__free_list + _S_freelist_index(__n);
- __q -> __free_list_link = *__my_free_list;
- *__my_free_list = __q;
- }
-
- static void * reallocate(void *__p, size_t __old_sz, size_t __new_sz);
-
-} ;
-
-typedef _Pthread_alloc_template<> pthread_alloc;
-
-
-template <size_t _Max_size>
-void _Pthread_alloc_template<_Max_size>::_S_destructor(void * __instance)
-{
- _M_lock __lock_instance; // Need to acquire lock here.
- _Pthread_alloc_per_thread_state<_Max_size>* __s =
- (_Pthread_alloc_per_thread_state<_Max_size> *)__instance;
- __s -> __next = _S_free_per_thread_states;
- _S_free_per_thread_states = __s;
-}
-
-template <size_t _Max_size>
-_Pthread_alloc_per_thread_state<_Max_size> *
-_Pthread_alloc_template<_Max_size>::_S_new_per_thread_state()
-{
- /* lock already held here. */
- if (0 != _S_free_per_thread_states) {
- _Pthread_alloc_per_thread_state<_Max_size> *__result =
- _S_free_per_thread_states;
- _S_free_per_thread_states = _S_free_per_thread_states -> __next;
- return __result;
- } else {
- return new _Pthread_alloc_per_thread_state<_Max_size>;
- }
-}
-
-template <size_t _Max_size>
-_Pthread_alloc_per_thread_state<_Max_size> *
-_Pthread_alloc_template<_Max_size>::_S_get_per_thread_state()
-{
- /*REFERENCED*/
- _M_lock __lock_instance; // Need to acquire lock here.
- int __ret_code;
- _Pthread_alloc_per_thread_state<_Max_size> * __result;
- if (!_S_key_initialized) {
- if (pthread_key_create(&_S_key, _S_destructor)) {
- std::__throw_bad_alloc(); // defined in funcexcept.h
- }
- _S_key_initialized = true;
- }
- __result = _S_new_per_thread_state();
- __ret_code = pthread_setspecific(_S_key, __result);
- if (__ret_code) {
- if (__ret_code == ENOMEM) {
- std::__throw_bad_alloc();
- } else {
- // EINVAL
- abort();
- }
- }
- return __result;
-}
-
-/* We allocate memory in large chunks in order to avoid fragmenting */
-/* the malloc heap too much. */
-/* We assume that size is properly aligned. */
-template <size_t _Max_size>
-char *_Pthread_alloc_template<_Max_size>
-::_S_chunk_alloc(size_t __size, int &__nobjs)
-{
- {
- char * __result;
- size_t __total_bytes;
- size_t __bytes_left;
- /*REFERENCED*/
- _M_lock __lock_instance; // Acquire lock for this routine
-
- __total_bytes = __size * __nobjs;
- __bytes_left = _S_end_free - _S_start_free;
- if (__bytes_left >= __total_bytes) {
- __result = _S_start_free;
- _S_start_free += __total_bytes;
- return(__result);
- } else if (__bytes_left >= __size) {
- __nobjs = __bytes_left/__size;
- __total_bytes = __size * __nobjs;
- __result = _S_start_free;
- _S_start_free += __total_bytes;
- return(__result);
- } else {
- size_t __bytes_to_get =
- 2 * __total_bytes + _S_round_up(_S_heap_size >> 4);
- // Try to make use of the left-over piece.
- if (__bytes_left > 0) {
- _Pthread_alloc_per_thread_state<_Max_size>* __a =
- (_Pthread_alloc_per_thread_state<_Max_size>*)
- pthread_getspecific(_S_key);
- __obj * volatile * __my_free_list =
- __a->__free_list + _S_freelist_index(__bytes_left);
-
- ((__obj *)_S_start_free) -> __free_list_link = *__my_free_list;
- *__my_free_list = (__obj *)_S_start_free;
- }
-# ifdef _SGI_SOURCE
- // Try to get memory that's aligned on something like a
- // cache line boundary, so as to avoid parceling out
- // parts of the same line to different threads and thus
- // possibly different processors.
- {
- const int __cache_line_size = 128; // probable upper bound
- __bytes_to_get &= ~(__cache_line_size-1);
- _S_start_free = (char *)memalign(__cache_line_size, __bytes_to_get);
- if (0 == _S_start_free) {
- _S_start_free = (char *)malloc_alloc::allocate(__bytes_to_get);
- }
- }
-# else /* !SGI_SOURCE */
- _S_start_free = (char *)malloc_alloc::allocate(__bytes_to_get);
-# endif
- _S_heap_size += __bytes_to_get;
- _S_end_free = _S_start_free + __bytes_to_get;
- }
- }
- // lock is released here
- return(_S_chunk_alloc(__size, __nobjs));
-}
-
-
-/* Returns an object of size n, and optionally adds to size n free list.*/
-/* We assume that n is properly aligned. */
-/* We hold the allocation lock. */
-template <size_t _Max_size>
-void *_Pthread_alloc_per_thread_state<_Max_size>
-::_M_refill(size_t __n)
-{
- int __nobjs = 128;
- char * __chunk =
- _Pthread_alloc_template<_Max_size>::_S_chunk_alloc(__n, __nobjs);
- __obj * volatile * __my_free_list;
- __obj * __result;
- __obj * __current_obj, * __next_obj;
- int __i;
-
- if (1 == __nobjs) {
- return(__chunk);
- }
- __my_free_list = __free_list
- + _Pthread_alloc_template<_Max_size>::_S_freelist_index(__n);
-
- /* Build free list in chunk */
- __result = (__obj *)__chunk;
- *__my_free_list = __next_obj = (__obj *)(__chunk + __n);
- for (__i = 1; ; __i++) {
- __current_obj = __next_obj;
- __next_obj = (__obj *)((char *)__next_obj + __n);
- if (__nobjs - 1 == __i) {
- __current_obj -> __free_list_link = 0;
- break;
- } else {
- __current_obj -> __free_list_link = __next_obj;
- }
- }
- return(__result);
-}
-
-template <size_t _Max_size>
-void *_Pthread_alloc_template<_Max_size>
-::reallocate(void *__p, size_t __old_sz, size_t __new_sz)
-{
- void * __result;
- size_t __copy_sz;
-
- if (__old_sz > _Max_size
- && __new_sz > _Max_size) {
- return(realloc(__p, __new_sz));
- }
- if (_S_round_up(__old_sz) == _S_round_up(__new_sz)) return(__p);
- __result = allocate(__new_sz);
- __copy_sz = __new_sz > __old_sz? __old_sz : __new_sz;
- memcpy(__result, __p, __copy_sz);
- deallocate(__p, __old_sz);
- return(__result);
-}
-
-template <size_t _Max_size>
-_Pthread_alloc_per_thread_state<_Max_size> *
-_Pthread_alloc_template<_Max_size>::_S_free_per_thread_states = 0;
-
-template <size_t _Max_size>
-pthread_key_t _Pthread_alloc_template<_Max_size>::_S_key;
-
-template <size_t _Max_size>
-bool _Pthread_alloc_template<_Max_size>::_S_key_initialized = false;
-
-template <size_t _Max_size>
-pthread_mutex_t _Pthread_alloc_template<_Max_size>::_S_chunk_allocator_lock
-= PTHREAD_MUTEX_INITIALIZER;
-
-template <size_t _Max_size>
-char *_Pthread_alloc_template<_Max_size>
-::_S_start_free = 0;
-
-template <size_t _Max_size>
-char *_Pthread_alloc_template<_Max_size>
-::_S_end_free = 0;
-
-template <size_t _Max_size>
-size_t _Pthread_alloc_template<_Max_size>
-::_S_heap_size = 0;
-
-
-template <class _Tp>
-class pthread_allocator {
- typedef pthread_alloc _S_Alloc; // The underlying allocator.
-public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
-
- template <class _NewType> struct rebind {
- typedef pthread_allocator<_NewType> other;
- };
-
- pthread_allocator() throw() {}
- pthread_allocator(const pthread_allocator& a) throw() {}
- template <class _OtherType>
- pthread_allocator(const pthread_allocator<_OtherType>&)
- throw() {}
- ~pthread_allocator() throw() {}
-
- pointer address(reference __x) const { return &__x; }
- const_pointer address(const_reference __x) const { return &__x; }
-
- // __n is permitted to be 0. The C++ standard says nothing about what
- // the return value is when __n == 0.
- _Tp* allocate(size_type __n, const void* = 0) {
- return __n != 0 ? static_cast<_Tp*>(_S_Alloc::allocate(__n * sizeof(_Tp)))
- : 0;
- }
-
- // p is not permitted to be a null pointer.
- void deallocate(pointer __p, size_type __n)
- { _S_Alloc::deallocate(__p, __n * sizeof(_Tp)); }
-
- size_type max_size() const throw()
- { return size_t(-1) / sizeof(_Tp); }
-
- void construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); }
- void destroy(pointer _p) { _p->~_Tp(); }
-};
-
-template<>
-class pthread_allocator<void> {
-public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef void* pointer;
- typedef const void* const_pointer;
- typedef void value_type;
-
- template <class _NewType> struct rebind {
- typedef pthread_allocator<_NewType> other;
- };
-};
-
-template <size_t _Max_size>
-inline bool operator==(const _Pthread_alloc_template<_Max_size>&,
- const _Pthread_alloc_template<_Max_size>&)
-{
- return true;
-}
-
-template <class _T1, class _T2>
-inline bool operator==(const pthread_allocator<_T1>&,
- const pthread_allocator<_T2>& a2)
-{
- return true;
-}
-
-template <class _T1, class _T2>
-inline bool operator!=(const pthread_allocator<_T1>&,
- const pthread_allocator<_T2>&)
-{
- return false;
-}
-
-template <class _Tp, size_t _Max_size>
-struct _Alloc_traits<_Tp, _Pthread_alloc_template<_Max_size> >
-{
- static const bool _S_instanceless = true;
- typedef simple_alloc<_Tp, _Pthread_alloc_template<_Max_size> > _Alloc_type;
- typedef __allocator<_Tp, _Pthread_alloc_template<_Max_size> >
- allocator_type;
-};
-
-template <class _Tp, class _Atype, size_t _Max>
-struct _Alloc_traits<_Tp, __allocator<_Atype, _Pthread_alloc_template<_Max> > >
-{
- static const bool _S_instanceless = true;
- typedef simple_alloc<_Tp, _Pthread_alloc_template<_Max> > _Alloc_type;
- typedef __allocator<_Tp, _Pthread_alloc_template<_Max> > allocator_type;
-};
-
-template <class _Tp, class _Atype>
-struct _Alloc_traits<_Tp, pthread_allocator<_Atype> >
-{
- static const bool _S_instanceless = true;
- typedef simple_alloc<_Tp, _Pthread_alloc_template<> > _Alloc_type;
- typedef pthread_allocator<_Tp> allocator_type;
-};
-
-
-} // namespace std
-
-#endif /* _CPP_BITS_PTHREAD_ALLOCIMPL_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/include/bits/stl_alloc.h b/contrib/libstdc++/include/bits/stl_alloc.h
deleted file mode 100644
index 9677c3e..0000000
--- a/contrib/libstdc++/include/bits/stl_alloc.h
+++ /dev/null
@@ -1,974 +0,0 @@
-// Allocators -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-/*
- * Copyright (c) 1996-1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/** @file stl_alloc.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __GLIBCPP_INTERNAL_ALLOC_H
-#define __GLIBCPP_INTERNAL_ALLOC_H
-
-/**
- * @defgroup Allocators Memory Allocators
- * @if maint
- * stl_alloc.h implements some node allocators. These are NOT the same as
- * allocators in the C++ standard, nor in the original H-P STL. They do not
- * encapsulate different pointer types; we assume that there is only one
- * pointer type. The C++ standard allocators are intended to allocate
- * individual objects, not pools or arenas.
- *
- * In this file allocators are of two different styles: "standard" and
- * "SGI" (quotes included). "Standard" allocators conform to 20.4. "SGI"
- * allocators differ in AT LEAST the following ways (add to this list as you
- * discover them):
- *
- * - "Standard" allocate() takes two parameters (n_count,hint=0) but "SGI"
- * allocate() takes one paramter (n_size).
- * - Likewise, "standard" deallocate()'s argument is a count, but in "SGI"
- * is a byte size.
- * - max_size(), construct(), and destroy() are missing in "SGI" allocators.
- * - reallocate(p,oldsz,newsz) is added in "SGI", and behaves as
- * if p=realloc(p,newsz).
- *
- * "SGI" allocators may be wrapped in __allocator to convert the interface
- * into a "standard" one.
- * @endif
- *
- * @note The @c reallocate member functions have been deprecated for 3.2
- * and will be removed in 3.4. You must define @c _GLIBCPP_DEPRECATED
- * to make this visible in 3.2; see c++config.h.
- *
- * The canonical description of these classes is in docs/html/ext/howto.html
- * or online at http://gcc.gnu.org/onlinedocs/libstdc++/ext/howto.html#3
-*/
-
-#include <cstddef>
-#include <cstdlib>
-#include <cstring>
-#include <bits/functexcept.h> // For __throw_bad_alloc
-#include <bits/stl_threads.h>
-
-#include <bits/atomicity.h>
-
-namespace std
-{
- /**
- * @if maint
- * A new-based allocator, as required by the standard. Allocation and
- * deallocation forward to global new and delete. "SGI" style, minus
- * reallocate().
- * @endif
- * (See @link Allocators allocators info @endlink for more.)
- */
- class __new_alloc
- {
- public:
- static void*
- allocate(size_t __n)
- { return ::operator new(__n); }
-
- static void
- deallocate(void* __p, size_t)
- { ::operator delete(__p); }
- };
-
-
- /**
- * @if maint
- * A malloc-based allocator. Typically slower than the
- * __default_alloc_template (below). Typically thread-safe and more
- * storage efficient. The template argument is unused and is only present
- * to permit multiple instantiations (but see __default_alloc_template
- * for caveats). "SGI" style, plus __set_malloc_handler for OOM conditions.
- * @endif
- * (See @link Allocators allocators info @endlink for more.)
- */
- template<int __inst>
- class __malloc_alloc_template
- {
- private:
- static void* _S_oom_malloc(size_t);
- static void* _S_oom_realloc(void*, size_t);
- static void (* __malloc_alloc_oom_handler)();
-
- public:
- static void*
- allocate(size_t __n)
- {
- void* __result = malloc(__n);
- if (__builtin_expect(__result == 0, 0))
- __result = _S_oom_malloc(__n);
- return __result;
- }
-
- static void
- deallocate(void* __p, size_t /* __n */)
- { free(__p); }
-
- static void*
- reallocate(void* __p, size_t /* old_sz */, size_t __new_sz)
- {
- void* __result = realloc(__p, __new_sz);
- if (__builtin_expect(__result == 0, 0))
- __result = _S_oom_realloc(__p, __new_sz);
- return __result;
- }
-
- static void (* __set_malloc_handler(void (*__f)()))()
- {
- void (* __old)() = __malloc_alloc_oom_handler;
- __malloc_alloc_oom_handler = __f;
- return __old;
- }
- };
-
- // malloc_alloc out-of-memory handling
- template<int __inst>
- void (* __malloc_alloc_template<__inst>::__malloc_alloc_oom_handler)() = 0;
-
- template<int __inst>
- void*
- __malloc_alloc_template<__inst>::
- _S_oom_malloc(size_t __n)
- {
- void (* __my_malloc_handler)();
- void* __result;
-
- for (;;)
- {
- __my_malloc_handler = __malloc_alloc_oom_handler;
- if (__builtin_expect(__my_malloc_handler == 0, 0))
- __throw_bad_alloc();
- (*__my_malloc_handler)();
- __result = malloc(__n);
- if (__result)
- return __result;
- }
- }
-
- template<int __inst>
- void*
- __malloc_alloc_template<__inst>::
- _S_oom_realloc(void* __p, size_t __n)
- {
- void (* __my_malloc_handler)();
- void* __result;
-
- for (;;)
- {
- __my_malloc_handler = __malloc_alloc_oom_handler;
- if (__builtin_expect(__my_malloc_handler == 0, 0))
- __throw_bad_alloc();
- (*__my_malloc_handler)();
- __result = realloc(__p, __n);
- if (__result)
- return __result;
- }
- }
-
- // Should not be referenced within the library anymore.
- typedef __new_alloc __mem_interface;
-
- /**
- * @if maint
- * This is used primarily (only?) in _Alloc_traits and other places to
- * help provide the _Alloc_type typedef. All it does is forward the
- * requests after some minimal checking.
- *
- * This is neither "standard"-conforming nor "SGI". The _Alloc parameter
- * must be "SGI" style.
- * @endif
- * (See @link Allocators allocators info @endlink for more.)
- */
- template<typename _Tp, typename _Alloc>
- class __simple_alloc
- {
- public:
- static _Tp*
- allocate(size_t __n)
- {
- _Tp* __ret = 0;
- if (__n)
- __ret = static_cast<_Tp*>(_Alloc::allocate(__n * sizeof(_Tp)));
- return __ret;
- }
-
- static _Tp*
- allocate()
- { return (_Tp*) _Alloc::allocate(sizeof (_Tp)); }
-
- static void
- deallocate(_Tp* __p, size_t __n)
- { if (0 != __n) _Alloc::deallocate(__p, __n * sizeof (_Tp)); }
-
- static void
- deallocate(_Tp* __p)
- { _Alloc::deallocate(__p, sizeof (_Tp)); }
- };
-
-
- /**
- * @if maint
- * An adaptor for an underlying allocator (_Alloc) to check the size
- * arguments for debugging.
- *
- * "There is some evidence that this can confuse Purify." - SGI comment
- *
- * This adaptor is "SGI" style. The _Alloc parameter must also be "SGI".
- * @endif
- * (See @link Allocators allocators info @endlink for more.)
- */
- template<typename _Alloc>
- class __debug_alloc
- {
- private:
- // Size of space used to store size. Note that this must be
- // large enough to preserve alignment.
- enum {_S_extra = 8};
-
- public:
- static void*
- allocate(size_t __n)
- {
- char* __result = (char*)_Alloc::allocate(__n + (int) _S_extra);
- *(size_t*)__result = __n;
- return __result + (int) _S_extra;
- }
-
- static void
- deallocate(void* __p, size_t __n)
- {
- char* __real_p = (char*)__p - (int) _S_extra;
- if (*(size_t*)__real_p != __n)
- abort();
- _Alloc::deallocate(__real_p, __n + (int) _S_extra);
- }
-
- static void*
- reallocate(void* __p, size_t __old_sz, size_t __new_sz)
- {
- char* __real_p = (char*)__p - (int) _S_extra;
- if (*(size_t*)__real_p != __old_sz)
- abort();
- char* __result = (char*) _Alloc::reallocate(__real_p,
- __old_sz + (int) _S_extra,
- __new_sz + (int) _S_extra);
- *(size_t*)__result = __new_sz;
- return __result + (int) _S_extra;
- }
- };
-
-
- /**
- * @if maint
- * Default node allocator. "SGI" style. Uses various allocators to
- * fulfill underlying requests (and makes as few requests as possible
- * when in default high-speed pool mode).
- *
- * Important implementation properties:
- * 0. If globally mandated, then allocate objects from __new_alloc
- * 1. If the clients request an object of size > _MAX_BYTES, the resulting
- * object will be obtained directly from __new_alloc
- * 2. In all other cases, we allocate an object of size exactly
- * _S_round_up(requested_size). Thus the client has enough size
- * information that we can return the object to the proper free list
- * without permanently losing part of the object.
- *
- * The first template parameter specifies whether more than one thread may
- * use this allocator. It is safe to allocate an object from one instance
- * of a default_alloc and deallocate it with another one. This effectively
- * transfers its ownership to the second one. This may have undesirable
- * effects on reference locality.
- *
- * The second parameter is unused and serves only to allow the creation of
- * multiple default_alloc instances. Note that containers built on different
- * allocator instances have different types, limiting the utility of this
- * approach. If you do not wish to share the free lists with the main
- * default_alloc instance, instantiate this with a non-zero __inst.
- *
- * @endif
- * (See @link Allocators allocators info @endlink for more.)
- */
- template<bool __threads, int __inst>
- class __default_alloc_template
- {
- private:
- enum {_ALIGN = 8};
- enum {_MAX_BYTES = 128};
- enum {_NFREELISTS = _MAX_BYTES / _ALIGN};
-
- union _Obj
- {
- union _Obj* _M_free_list_link;
- char _M_client_data[1]; // The client sees this.
- };
-
- static _Obj* volatile _S_free_list[_NFREELISTS];
-
- // Chunk allocation state.
- static char* _S_start_free;
- static char* _S_end_free;
- static size_t _S_heap_size;
-
- static _STL_mutex_lock _S_node_allocator_lock;
-
- static size_t
- _S_round_up(size_t __bytes)
- { return (((__bytes) + (size_t) _ALIGN-1) & ~((size_t) _ALIGN - 1)); }
-
- static size_t
- _S_freelist_index(size_t __bytes)
- { return (((__bytes) + (size_t)_ALIGN - 1)/(size_t)_ALIGN - 1); }
-
- // Returns an object of size __n, and optionally adds to size __n
- // free list.
- static void*
- _S_refill(size_t __n);
-
- // Allocates a chunk for nobjs of size size. nobjs may be reduced
- // if it is inconvenient to allocate the requested number.
- static char*
- _S_chunk_alloc(size_t __size, int& __nobjs);
-
- // It would be nice to use _STL_auto_lock here. But we need a
- // test whether threads are in use.
- struct _Lock
- {
- _Lock() { if (__threads) _S_node_allocator_lock._M_acquire_lock(); }
- ~_Lock() { if (__threads) _S_node_allocator_lock._M_release_lock(); }
- } __attribute__ ((__unused__));
- friend struct _Lock;
-
- static _Atomic_word _S_force_new;
-
- public:
- // __n must be > 0
- static void*
- allocate(size_t __n)
- {
- void* __ret = 0;
-
- // If there is a race through here, assume answer from getenv
- // will resolve in same direction. Inspired by techniques
- // to efficiently support threading found in basic_string.h.
- if (_S_force_new == 0)
- {
- if (getenv("GLIBCPP_FORCE_NEW"))
- __atomic_add(&_S_force_new, 1);
- else
- __atomic_add(&_S_force_new, -1);
- }
-
- if ((__n > (size_t) _MAX_BYTES) || (_S_force_new > 0))
- __ret = __new_alloc::allocate(__n);
- else
- {
- _Obj* volatile* __my_free_list = _S_free_list
- + _S_freelist_index(__n);
- // Acquire the lock here with a constructor call. This
- // ensures that it is released in exit or during stack
- // unwinding.
- _Lock __lock_instance;
- _Obj* __restrict__ __result = *__my_free_list;
- if (__builtin_expect(__result == 0, 0))
- __ret = _S_refill(_S_round_up(__n));
- else
- {
- *__my_free_list = __result -> _M_free_list_link;
- __ret = __result;
- }
- if (__builtin_expect(__ret == 0, 0))
- __throw_bad_alloc();
- }
- return __ret;
- }
-
- // __p may not be 0
- static void
- deallocate(void* __p, size_t __n)
- {
- if ((__n > (size_t) _MAX_BYTES) || (_S_force_new > 0))
- __new_alloc::deallocate(__p, __n);
- else
- {
- _Obj* volatile* __my_free_list = _S_free_list
- + _S_freelist_index(__n);
- _Obj* __q = (_Obj*)__p;
-
- // Acquire the lock here with a constructor call. This
- // ensures that it is released in exit or during stack
- // unwinding.
- _Lock __lock_instance;
- __q -> _M_free_list_link = *__my_free_list;
- *__my_free_list = __q;
- }
- }
-
- static void*
- reallocate(void* __p, size_t __old_sz, size_t __new_sz);
- };
-
- template<bool __threads, int __inst> _Atomic_word
- __default_alloc_template<__threads, __inst>::_S_force_new = 0;
-
- template<bool __threads, int __inst>
- inline bool
- operator==(const __default_alloc_template<__threads,__inst>&,
- const __default_alloc_template<__threads,__inst>&)
- { return true; }
-
- template<bool __threads, int __inst>
- inline bool
- operator!=(const __default_alloc_template<__threads,__inst>&,
- const __default_alloc_template<__threads,__inst>&)
- { return false; }
-
-
- // We allocate memory in large chunks in order to avoid fragmenting the
- // heap too much. We assume that __size is properly aligned. We hold
- // the allocation lock.
- template<bool __threads, int __inst>
- char*
- __default_alloc_template<__threads, __inst>::
- _S_chunk_alloc(size_t __size, int& __nobjs)
- {
- char* __result;
- size_t __total_bytes = __size * __nobjs;
- size_t __bytes_left = _S_end_free - _S_start_free;
-
- if (__bytes_left >= __total_bytes)
- {
- __result = _S_start_free;
- _S_start_free += __total_bytes;
- return __result ;
- }
- else if (__bytes_left >= __size)
- {
- __nobjs = (int)(__bytes_left/__size);
- __total_bytes = __size * __nobjs;
- __result = _S_start_free;
- _S_start_free += __total_bytes;
- return __result;
- }
- else
- {
- size_t __bytes_to_get =
- 2 * __total_bytes + _S_round_up(_S_heap_size >> 4);
- // Try to make use of the left-over piece.
- if (__bytes_left > 0)
- {
- _Obj* volatile* __my_free_list =
- _S_free_list + _S_freelist_index(__bytes_left);
-
- ((_Obj*)(void*)_S_start_free) -> _M_free_list_link = *__my_free_list;
- *__my_free_list = (_Obj*)(void*)_S_start_free;
- }
- _S_start_free = (char*) __new_alloc::allocate(__bytes_to_get);
- if (_S_start_free == 0)
- {
- size_t __i;
- _Obj* volatile* __my_free_list;
- _Obj* __p;
- // Try to make do with what we have. That can't hurt. We
- // do not try smaller requests, since that tends to result
- // in disaster on multi-process machines.
- __i = __size;
- for (; __i <= (size_t) _MAX_BYTES; __i += (size_t) _ALIGN)
- {
- __my_free_list = _S_free_list + _S_freelist_index(__i);
- __p = *__my_free_list;
- if (__p != 0)
- {
- *__my_free_list = __p -> _M_free_list_link;
- _S_start_free = (char*)__p;
- _S_end_free = _S_start_free + __i;
- return _S_chunk_alloc(__size, __nobjs);
- // Any leftover piece will eventually make it to the
- // right free list.
- }
- }
- _S_end_free = 0; // In case of exception.
- _S_start_free = (char*)__new_alloc::allocate(__bytes_to_get);
- // This should either throw an exception or remedy the situation.
- // Thus we assume it succeeded.
- }
- _S_heap_size += __bytes_to_get;
- _S_end_free = _S_start_free + __bytes_to_get;
- return _S_chunk_alloc(__size, __nobjs);
- }
- }
-
-
- // Returns an object of size __n, and optionally adds to "size
- // __n"'s free list. We assume that __n is properly aligned. We
- // hold the allocation lock.
- template<bool __threads, int __inst>
- void*
- __default_alloc_template<__threads, __inst>::_S_refill(size_t __n)
- {
- int __nobjs = 20;
- char* __chunk = _S_chunk_alloc(__n, __nobjs);
- _Obj* volatile* __my_free_list;
- _Obj* __result;
- _Obj* __current_obj;
- _Obj* __next_obj;
- int __i;
-
- if (1 == __nobjs)
- return __chunk;
- __my_free_list = _S_free_list + _S_freelist_index(__n);
-
- // Build free list in chunk.
- __result = (_Obj*)(void*)__chunk;
- *__my_free_list = __next_obj = (_Obj*)(void*)(__chunk + __n);
- for (__i = 1; ; __i++)
- {
- __current_obj = __next_obj;
- __next_obj = (_Obj*)(void*)((char*)__next_obj + __n);
- if (__nobjs - 1 == __i)
- {
- __current_obj -> _M_free_list_link = 0;
- break;
- }
- else
- __current_obj -> _M_free_list_link = __next_obj;
- }
- return __result;
- }
-
-
- template<bool threads, int inst>
- void*
- __default_alloc_template<threads, inst>::
- reallocate(void* __p, size_t __old_sz, size_t __new_sz)
- {
- void* __result;
- size_t __copy_sz;
-
- if (__old_sz > (size_t) _MAX_BYTES && __new_sz > (size_t) _MAX_BYTES)
- return(realloc(__p, __new_sz));
- if (_S_round_up(__old_sz) == _S_round_up(__new_sz))
- return(__p);
- __result = allocate(__new_sz);
- __copy_sz = __new_sz > __old_sz? __old_sz : __new_sz;
- memcpy(__result, __p, __copy_sz);
- deallocate(__p, __old_sz);
- return __result;
- }
-
- template<bool __threads, int __inst>
- _STL_mutex_lock
- __default_alloc_template<__threads,__inst>::_S_node_allocator_lock
- __STL_MUTEX_INITIALIZER;
-
- template<bool __threads, int __inst>
- char* __default_alloc_template<__threads,__inst>::_S_start_free = 0;
-
- template<bool __threads, int __inst>
- char* __default_alloc_template<__threads,__inst>::_S_end_free = 0;
-
- template<bool __threads, int __inst>
- size_t __default_alloc_template<__threads,__inst>::_S_heap_size = 0;
-
- template<bool __threads, int __inst>
- typename __default_alloc_template<__threads,__inst>::_Obj* volatile
- __default_alloc_template<__threads,__inst>::_S_free_list[_NFREELISTS];
-
- typedef __default_alloc_template<true,0> __alloc;
- typedef __default_alloc_template<false,0> __single_client_alloc;
-
-
- /**
- * @brief The "standard" allocator, as per [20.4].
- *
- * The private _Alloc is "SGI" style. (See comments at the top
- * of stl_alloc.h.)
- *
- * The underlying allocator behaves as follows.
- * - __default_alloc_template is used via two typedefs
- * - "__single_client_alloc" typedef does no locking for threads
- * - "__alloc" typedef is threadsafe via the locks
- * - __new_alloc is used for memory requests
- *
- * (See @link Allocators allocators info @endlink for more.)
- */
- template<typename _Tp>
- class allocator
- {
- typedef __alloc _Alloc; // The underlying allocator.
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
-
- template<typename _Tp1>
- struct rebind
- { typedef allocator<_Tp1> other; };
-
- allocator() throw() {}
- allocator(const allocator&) throw() {}
- template<typename _Tp1>
- allocator(const allocator<_Tp1>&) throw() {}
- ~allocator() throw() {}
-
- pointer
- address(reference __x) const { return &__x; }
-
- const_pointer
- address(const_reference __x) const { return &__x; }
-
- // NB: __n is permitted to be 0. The C++ standard says nothing
- // about what the return value is when __n == 0.
- _Tp*
- allocate(size_type __n, const void* = 0)
- {
- _Tp* __ret = 0;
- if (__n)
- {
- if (__n <= this->max_size())
- __ret = static_cast<_Tp*>(_Alloc::allocate(__n * sizeof(_Tp)));
- else
- __throw_bad_alloc();
- }
- return __ret;
- }
-
- // __p is not permitted to be a null pointer.
- void
- deallocate(pointer __p, size_type __n)
- { _Alloc::deallocate(__p, __n * sizeof(_Tp)); }
-
- size_type
- max_size() const throw() { return size_t(-1) / sizeof(_Tp); }
-
- void construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); }
- void destroy(pointer __p) { __p->~_Tp(); }
- };
-
- template<>
- class allocator<void>
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef void* pointer;
- typedef const void* const_pointer;
- typedef void value_type;
-
- template<typename _Tp1>
- struct rebind
- { typedef allocator<_Tp1> other; };
- };
-
-
- template<typename _T1, typename _T2>
- inline bool
- operator==(const allocator<_T1>&, const allocator<_T2>&)
- { return true; }
-
- template<typename _T1, typename _T2>
- inline bool
- operator!=(const allocator<_T1>&, const allocator<_T2>&)
- { return false; }
-
-
- /**
- * @if maint
- * Allocator adaptor to turn an "SGI" style allocator (e.g.,
- * __alloc, __malloc_alloc_template) into a "standard" conforming
- * allocator. Note that this adaptor does *not* assume that all
- * objects of the underlying alloc class are identical, nor does it
- * assume that all of the underlying alloc's member functions are
- * static member functions. Note, also, that __allocator<_Tp,
- * __alloc> is essentially the same thing as allocator<_Tp>.
- * @endif
- * (See @link Allocators allocators info @endlink for more.)
- */
- template<typename _Tp, typename _Alloc>
- struct __allocator
- {
- _Alloc __underlying_alloc;
-
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
-
- template<typename _Tp1>
- struct rebind
- { typedef __allocator<_Tp1, _Alloc> other; };
-
- __allocator() throw() {}
- __allocator(const __allocator& __a) throw()
- : __underlying_alloc(__a.__underlying_alloc) {}
-
- template<typename _Tp1>
- __allocator(const __allocator<_Tp1, _Alloc>& __a) throw()
- : __underlying_alloc(__a.__underlying_alloc) {}
-
- ~__allocator() throw() {}
-
- pointer
- address(reference __x) const { return &__x; }
-
- const_pointer
- address(const_reference __x) const { return &__x; }
-
- // NB: __n is permitted to be 0. The C++ standard says nothing
- // about what the return value is when __n == 0.
- _Tp*
- allocate(size_type __n, const void* = 0)
- {
- _Tp* __ret = 0;
- if (__n)
- __ret = static_cast<_Tp*>(_Alloc::allocate(__n * sizeof(_Tp)));
- return __ret;
- }
-
- // __p is not permitted to be a null pointer.
- void
- deallocate(pointer __p, size_type __n)
- { __underlying_alloc.deallocate(__p, __n * sizeof(_Tp)); }
-
- size_type
- max_size() const throw() { return size_t(-1) / sizeof(_Tp); }
-
- void
- construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); }
-
- void
- destroy(pointer __p) { __p->~_Tp(); }
- };
-
- template<typename _Alloc>
- struct __allocator<void, _Alloc>
- {
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef void* pointer;
- typedef const void* const_pointer;
- typedef void value_type;
-
- template<typename _Tp1>
- struct rebind
- { typedef __allocator<_Tp1, _Alloc> other; };
- };
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator==(const __allocator<_Tp,_Alloc>& __a1,
- const __allocator<_Tp,_Alloc>& __a2)
- { return __a1.__underlying_alloc == __a2.__underlying_alloc; }
-
- template<typename _Tp, typename _Alloc>
- inline bool
- operator!=(const __allocator<_Tp, _Alloc>& __a1,
- const __allocator<_Tp, _Alloc>& __a2)
- { return __a1.__underlying_alloc != __a2.__underlying_alloc; }
-
-
- //@{
- /** Comparison operators for all of the predifined SGI-style allocators.
- * This ensures that __allocator<malloc_alloc> (for example) will work
- * correctly. As required, all allocators compare equal.
- */
- template<int inst>
- inline bool
- operator==(const __malloc_alloc_template<inst>&,
- const __malloc_alloc_template<inst>&)
- { return true; }
-
- template<int __inst>
- inline bool
- operator!=(const __malloc_alloc_template<__inst>&,
- const __malloc_alloc_template<__inst>&)
- { return false; }
-
- template<typename _Alloc>
- inline bool
- operator==(const __debug_alloc<_Alloc>&, const __debug_alloc<_Alloc>&)
- { return true; }
-
- template<typename _Alloc>
- inline bool
- operator!=(const __debug_alloc<_Alloc>&, const __debug_alloc<_Alloc>&)
- { return false; }
- //@}
-
-
- /**
- * @if maint
- * Another allocator adaptor: _Alloc_traits. This serves two purposes.
- * First, make it possible to write containers that can use either "SGI"
- * style allocators or "standard" allocators. Second, provide a mechanism
- * so that containers can query whether or not the allocator has distinct
- * instances. If not, the container can avoid wasting a word of memory to
- * store an empty object. For examples of use, see stl_vector.h, etc, or
- * any of the other classes derived from this one.
- *
- * This adaptor uses partial specialization. The general case of
- * _Alloc_traits<_Tp, _Alloc> assumes that _Alloc is a
- * standard-conforming allocator, possibly with non-equal instances and
- * non-static members. (It still behaves correctly even if _Alloc has
- * static member and if all instances are equal. Refinements affect
- * performance, not correctness.)
- *
- * There are always two members: allocator_type, which is a standard-
- * conforming allocator type for allocating objects of type _Tp, and
- * _S_instanceless, a static const member of type bool. If
- * _S_instanceless is true, this means that there is no difference
- * between any two instances of type allocator_type. Furthermore, if
- * _S_instanceless is true, then _Alloc_traits has one additional
- * member: _Alloc_type. This type encapsulates allocation and
- * deallocation of objects of type _Tp through a static interface; it
- * has two member functions, whose signatures are
- *
- * - static _Tp* allocate(size_t)
- * - static void deallocate(_Tp*, size_t)
- *
- * The size_t parameters are "standard" style (see top of stl_alloc.h) in
- * that they take counts, not sizes.
- *
- * @endif
- * (See @link Allocators allocators info @endlink for more.)
- */
- //@{
- // The fully general version.
- template<typename _Tp, typename _Allocator>
- struct _Alloc_traits
- {
- static const bool _S_instanceless = false;
- typedef typename _Allocator::template rebind<_Tp>::other allocator_type;
- };
-
- template<typename _Tp, typename _Allocator>
- const bool _Alloc_traits<_Tp, _Allocator>::_S_instanceless;
-
- /// The version for the default allocator.
- template<typename _Tp, typename _Tp1>
- struct _Alloc_traits<_Tp, allocator<_Tp1> >
- {
- static const bool _S_instanceless = true;
- typedef __simple_alloc<_Tp, __alloc> _Alloc_type;
- typedef allocator<_Tp> allocator_type;
- };
- //@}
-
- //@{
- /// Versions for the predefined "SGI" style allocators.
- template<typename _Tp, int __inst>
- struct _Alloc_traits<_Tp, __malloc_alloc_template<__inst> >
- {
- static const bool _S_instanceless = true;
- typedef __simple_alloc<_Tp, __malloc_alloc_template<__inst> > _Alloc_type;
- typedef __allocator<_Tp, __malloc_alloc_template<__inst> > allocator_type;
- };
-
- template<typename _Tp, bool __threads, int __inst>
- struct _Alloc_traits<_Tp, __default_alloc_template<__threads, __inst> >
- {
- static const bool _S_instanceless = true;
- typedef __simple_alloc<_Tp, __default_alloc_template<__threads, __inst> >
- _Alloc_type;
- typedef __allocator<_Tp, __default_alloc_template<__threads, __inst> >
- allocator_type;
- };
-
- template<typename _Tp, typename _Alloc>
- struct _Alloc_traits<_Tp, __debug_alloc<_Alloc> >
- {
- static const bool _S_instanceless = true;
- typedef __simple_alloc<_Tp, __debug_alloc<_Alloc> > _Alloc_type;
- typedef __allocator<_Tp, __debug_alloc<_Alloc> > allocator_type;
- };
- //@}
-
- //@{
- /// Versions for the __allocator adaptor used with the predefined
- /// "SGI" style allocators.
- template<typename _Tp, typename _Tp1, int __inst>
- struct _Alloc_traits<_Tp,
- __allocator<_Tp1, __malloc_alloc_template<__inst> > >
- {
- static const bool _S_instanceless = true;
- typedef __simple_alloc<_Tp, __malloc_alloc_template<__inst> > _Alloc_type;
- typedef __allocator<_Tp, __malloc_alloc_template<__inst> > allocator_type;
- };
-
- template<typename _Tp, typename _Tp1, bool __thr, int __inst>
- struct _Alloc_traits<_Tp, __allocator<_Tp1, __default_alloc_template<__thr, __inst> > >
- {
- static const bool _S_instanceless = true;
- typedef __simple_alloc<_Tp, __default_alloc_template<__thr,__inst> >
- _Alloc_type;
- typedef __allocator<_Tp, __default_alloc_template<__thr,__inst> >
- allocator_type;
- };
-
- template<typename _Tp, typename _Tp1, typename _Alloc>
- struct _Alloc_traits<_Tp, __allocator<_Tp1, __debug_alloc<_Alloc> > >
- {
- static const bool _S_instanceless = true;
- typedef __simple_alloc<_Tp, __debug_alloc<_Alloc> > _Alloc_type;
- typedef __allocator<_Tp, __debug_alloc<_Alloc> > allocator_type;
- };
- //@}
-
- // Inhibit implicit instantiations for required instantiations,
- // which are defined via explicit instantiations elsewhere.
- // NB: This syntax is a GNU extension.
-#if _GLIBCPP_EXTERN_TEMPLATE
- extern template class allocator<char>;
- extern template class allocator<wchar_t>;
- extern template class __default_alloc_template<true,0>;
-#endif
-} // namespace std
-
-#endif
diff --git a/contrib/libstdc++/include/bits/stl_pthread_alloc.h b/contrib/libstdc++/include/bits/stl_pthread_alloc.h
deleted file mode 100644
index 09b7d72..0000000
--- a/contrib/libstdc++/include/bits/stl_pthread_alloc.h
+++ /dev/null
@@ -1,60 +0,0 @@
-// Wrapper of pthread allocation header -*- C++ -*-
-
-// Copyright (C) 2001 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-/*
- * Copyright (c) 1996-1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/** @file stl_pthread_alloc.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef _CPP_BITS_STL_PTHREAD_ALLOC_H
-#define _CPP_BITS_STL_PTHREAD_ALLOC_H 1
-
-#include <bits/pthread_allocimpl.h>
-
-using std::_Pthread_alloc_template;
-using std::pthread_alloc;
-
-#endif /* _CPP_BITS_STL_PTHREAD_ALLOC_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/include/bits/valarray_meta.h b/contrib/libstdc++/include/bits/valarray_meta.h
deleted file mode 100644
index 29a2dac..0000000
--- a/contrib/libstdc++/include/bits/valarray_meta.h
+++ /dev/null
@@ -1,1147 +0,0 @@
-// The template and inlines for the -*- C++ -*- internal _Meta class.
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2001 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr>
-
-/** @file valarray_meta.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef _CPP_VALARRAY_META_H
-#define _CPP_VALARRAY_META_H 1
-
-#pragma GCC system_header
-
-namespace std
-{
- //
- // Implementing a loosened valarray return value is tricky.
- // First we need to meet 26.3.1/3: we should not add more than
- // two levels of template nesting. Therefore we resort to template
- // template to "flatten" loosened return value types.
- // At some point we use partial specialization to remove one level
- // template nesting due to _Expr<>
- //
-
- // This class is NOT defined. It doesn't need to.
- template<typename _Tp1, typename _Tp2> class _Constant;
-
- // Implementations of unary functions applied to valarray<>s.
- // I use hard-coded object functions here instead of a generic
- // approach like pointers to function:
- // 1) correctness: some functions take references, others values.
- // we can't deduce the correct type afterwards.
- // 2) efficiency -- object functions can be easily inlined
- // 3) be Koenig-lookup-friendly
-
- struct __abs
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return abs(__t); }
- };
-
- struct __cos
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return cos(__t); }
- };
-
- struct __acos
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return acos(__t); }
- };
-
- struct __cosh
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return cosh(__t); }
- };
-
- struct __sin
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return sin(__t); }
- };
-
- struct __asin
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return asin(__t); }
- };
-
- struct __sinh
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return sinh(__t); }
- };
-
- struct __tan
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return tan(__t); }
- };
-
- struct __atan
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return atan(__t); }
- };
-
- struct __tanh
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return tanh(__t); }
- };
-
- struct __exp
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return exp(__t); }
- };
-
- struct __log
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return log(__t); }
- };
-
- struct __log10
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return log10(__t); }
- };
-
- struct __sqrt
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return sqrt(__t); }
- };
-
- // In the past, we used to tailor operator applications semantics
- // to the specialization of standard function objects (i.e. plus<>, etc.)
- // That is incorrect. Therefore we provide our own surrogates.
-
- struct __unary_plus
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return +__t; }
- };
-
- struct __negate
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return -__t; }
- };
-
- struct __bitwise_not
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __t) const { return ~__t; }
- };
-
- struct __plus
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __x, const _Tp& __y) const
- { return __x + __y; }
- };
-
- struct __minus
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __x, const _Tp& __y) const
- { return __x - __y; }
- };
-
- struct __multiplies
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __x, const _Tp& __y) const
- { return __x * __y; }
- };
-
- struct __divides
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __x, const _Tp& __y) const
- { return __x / __y; }
- };
-
- struct __modulus
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __x, const _Tp& __y) const
- { return __x % __y; }
- };
-
- struct __bitwise_xor
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __x, const _Tp& __y) const
- { return __x ^ __y; }
- };
-
- struct __bitwise_and
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __x, const _Tp& __y) const
- { return __x & __y; }
- };
-
- struct __bitwise_or
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __x, const _Tp& __y) const
- { return __x | __y; }
- };
-
- struct __shift_left
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __x, const _Tp& __y) const
- { return __x << __y; }
- };
-
- struct __shift_right
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __x, const _Tp& __y) const
- { return __x >> __y; }
- };
-
- struct __logical_and
- {
- template<typename _Tp>
- bool operator()(const _Tp& __x, const _Tp& __y) const
- { return __x && __y; }
- };
-
- struct __logical_or
- {
- template<typename _Tp>
- bool operator()(const _Tp& __x, const _Tp& __y) const
- { return __x || __y; }
- };
-
- struct __logical_not
- {
- template<typename _Tp>
- bool operator()(const _Tp& __x) const { return !__x; }
- };
-
- struct __equal_to
- {
- template<typename _Tp>
- bool operator()(const _Tp& __x, const _Tp& __y) const
- { return __x == __y; }
- };
-
- struct __not_equal_to
- {
- template<typename _Tp>
- bool operator()(const _Tp& __x, const _Tp& __y) const
- { return __x != __y; }
- };
-
- struct __less
- {
- template<typename _Tp>
- bool operator()(const _Tp& __x, const _Tp& __y) const
- { return __x < __y; }
- };
-
- struct __greater
- {
- template<typename _Tp>
- bool operator()(const _Tp& __x, const _Tp& __y) const
- { return __x > __y; }
- };
-
- struct __less_equal
- {
- template<typename _Tp>
- bool operator()(const _Tp& __x, const _Tp& __y) const
- { return __x <= __y; }
- };
-
- struct __greater_equal
- {
- template<typename _Tp>
- bool operator()(const _Tp& __x, const _Tp& __y) const
- { return __x >= __y; }
- };
-
- // The few binary functions we miss.
- struct __atan2
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __x, const _Tp& __y) const
- { return atan2(__x, __y); }
- };
-
- struct __pow
- {
- template<typename _Tp>
- _Tp operator()(const _Tp& __x, const _Tp& __y) const
- { return pow(__x, __y); }
- };
-
-
- // We need these bits in order to recover the return type of
- // some functions/operators now that we're no longer using
- // function templates.
- template<typename, typename _Tp>
- struct __fun
- {
- typedef _Tp result_type;
- };
-
- // several specializations for relational operators.
- template<typename _Tp>
- struct __fun<__logical_not, _Tp>
- {
- typedef bool result_type;
- };
-
- template<typename _Tp>
- struct __fun<__logical_and, _Tp>
- {
- typedef bool result_type;
- };
-
- template<typename _Tp>
- struct __fun<__logical_or, _Tp>
- {
- typedef bool result_type;
- };
-
- template<typename _Tp>
- struct __fun<__less, _Tp>
- {
- typedef bool result_type;
- };
-
- template<typename _Tp>
- struct __fun<__greater, _Tp>
- {
- typedef bool result_type;
- };
-
- template<typename _Tp>
- struct __fun<__less_equal, _Tp>
- {
- typedef bool result_type;
- };
-
- template<typename _Tp>
- struct __fun<__greater_equal, _Tp>
- {
- typedef bool result_type;
- };
-
- template<typename _Tp>
- struct __fun<__equal_to, _Tp>
- {
- typedef bool result_type;
- };
-
- template<typename _Tp>
- struct __fun<__not_equal_to, _Tp>
- {
- typedef bool result_type;
- };
-
- //
- // Apply function taking a value/const reference closure
- //
-
- template<typename _Dom, typename _Arg>
- class _FunBase
- {
- public:
- typedef typename _Dom::value_type value_type;
-
- _FunBase(const _Dom& __e, value_type __f(_Arg))
- : _M_expr(__e), _M_func(__f) {}
-
- value_type operator[](size_t __i) const
- { return _M_func (_M_expr[__i]); }
-
- size_t size() const { return _M_expr.size ();}
-
- private:
- const _Dom& _M_expr;
- value_type (*_M_func)(_Arg);
- };
-
- template<class _Dom>
- struct _ValFunClos<_Expr,_Dom> : _FunBase<_Dom, typename _Dom::value_type>
- {
- typedef _FunBase<_Dom, typename _Dom::value_type> _Base;
- typedef typename _Base::value_type value_type;
- typedef value_type _Tp;
-
- _ValFunClos(const _Dom& __e, _Tp __f(_Tp)) : _Base(__e, __f) {}
- };
-
- template<typename _Tp>
- struct _ValFunClos<_ValArray,_Tp> : _FunBase<valarray<_Tp>, _Tp>
- {
- typedef _FunBase<valarray<_Tp>, _Tp> _Base;
- typedef _Tp value_type;
-
- _ValFunClos(const valarray<_Tp>& __v, _Tp __f(_Tp)) : _Base(__v, __f) {}
- };
-
- template<class _Dom>
- struct _RefFunClos<_Expr,_Dom> :
- _FunBase<_Dom, const typename _Dom::value_type&>
- {
- typedef _FunBase<_Dom, const typename _Dom::value_type&> _Base;
- typedef typename _Base::value_type value_type;
- typedef value_type _Tp;
-
- _RefFunClos(const _Dom& __e, _Tp __f(const _Tp&))
- : _Base(__e, __f) {}
- };
-
- template<typename _Tp>
- struct _RefFunClos<_ValArray,_Tp> : _FunBase<valarray<_Tp>, const _Tp&>
- {
- typedef _FunBase<valarray<_Tp>, const _Tp&> _Base;
- typedef _Tp value_type;
-
- _RefFunClos(const valarray<_Tp>& __v, _Tp __f(const _Tp&))
- : _Base(__v, __f) {}
- };
-
- //
- // Unary expression closure.
- //
-
- template<class _Oper, class _Arg>
- class _UnBase
- {
- public:
- typedef typename _Arg::value_type _Vt;
- typedef typename __fun<_Oper, _Vt>::result_type value_type;
-
- _UnBase(const _Arg& __e) : _M_expr(__e) {}
-
- value_type operator[](size_t __i) const
- { return _Oper()(_M_expr[__i]); }
-
- size_t size() const { return _M_expr.size(); }
-
- private:
- const _Arg& _M_expr;
- };
-
- template<class _Oper, class _Dom>
- struct _UnClos<_Oper, _Expr, _Dom> : _UnBase<_Oper, _Dom>
- {
- typedef _Dom _Arg;
- typedef _UnBase<_Oper, _Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _UnClos(const _Arg& __e) : _Base(__e) {}
- };
-
- template<class _Oper, typename _Tp>
- struct _UnClos<_Oper, _ValArray, _Tp> : _UnBase<_Oper, valarray<_Tp> >
- {
- typedef valarray<_Tp> _Arg;
- typedef _UnBase<_Oper, valarray<_Tp> > _Base;
- typedef typename _Base::value_type value_type;
-
- _UnClos(const _Arg& __e) : _Base(__e) {}
- };
-
-
- //
- // Binary expression closure.
- //
-
- template<class _Oper, class _FirstArg, class _SecondArg>
- class _BinBase
- {
- public:
- typedef typename _FirstArg::value_type _Vt;
- typedef typename __fun<_Oper, _Vt>::result_type value_type;
-
- _BinBase(const _FirstArg& __e1, const _SecondArg& __e2)
- : _M_expr1(__e1), _M_expr2(__e2) {}
-
- value_type operator[](size_t __i) const
- { return _Oper()(_M_expr1[__i], _M_expr2[__i]); }
-
- size_t size() const { return _M_expr1.size(); }
-
- private:
- const _FirstArg& _M_expr1;
- const _SecondArg& _M_expr2;
- };
-
-
- template<class _Oper, class _Clos>
- class _BinBase2
- {
- public:
- typedef typename _Clos::value_type _Vt;
- typedef typename __fun<_Oper, _Vt>::result_type value_type;
-
- _BinBase2(const _Clos& __e, const _Vt& __t)
- : _M_expr1(__e), _M_expr2(__t) {}
-
- value_type operator[](size_t __i) const
- { return _Oper()(_M_expr1[__i], _M_expr2); }
-
- size_t size() const { return _M_expr1.size(); }
-
- private:
- const _Clos& _M_expr1;
- const _Vt& _M_expr2;
- };
-
- template<class _Oper, class _Clos>
- class _BinBase1
- {
- public:
- typedef typename _Clos::value_type _Vt;
- typedef typename __fun<_Oper, _Vt>::result_type value_type;
-
- _BinBase1(const _Vt& __t, const _Clos& __e)
- : _M_expr1(__t), _M_expr2(__e) {}
-
- value_type operator[](size_t __i) const
- { return _Oper()(_M_expr1, _M_expr2[__i]); }
-
- size_t size() const { return _M_expr2.size(); }
-
- private:
- const _Vt& _M_expr1;
- const _Clos& _M_expr2;
- };
-
- template<class _Oper, class _Dom1, class _Dom2>
- struct _BinClos<_Oper, _Expr, _Expr, _Dom1, _Dom2>
- : _BinBase<_Oper,_Dom1,_Dom2>
- {
- typedef _BinBase<_Oper,_Dom1,_Dom2> _Base;
- typedef typename _Base::value_type value_type;
-
- _BinClos(const _Dom1& __e1, const _Dom2& __e2) : _Base(__e1, __e2) {}
- };
-
- template<class _Oper, typename _Tp>
- struct _BinClos<_Oper,_ValArray,_ValArray,_Tp,_Tp>
- : _BinBase<_Oper,valarray<_Tp>,valarray<_Tp> >
- {
- typedef _BinBase<_Oper,valarray<_Tp>,valarray<_Tp> > _Base;
- typedef _Tp value_type;
-
- _BinClos(const valarray<_Tp>& __v, const valarray<_Tp>& __w)
- : _Base(__v, __w) {}
- };
-
- template<class _Oper, class _Dom>
- struct _BinClos<_Oper,_Expr,_ValArray,_Dom,typename _Dom::value_type>
- : _BinBase<_Oper,_Dom,valarray<typename _Dom::value_type> >
- {
- typedef typename _Dom::value_type _Tp;
- typedef _BinBase<_Oper,_Dom,valarray<_Tp> > _Base;
- typedef typename _Base::value_type value_type;
-
- _BinClos(const _Dom& __e1, const valarray<_Tp>& __e2)
- : _Base(__e1, __e2) {}
- };
-
- template<class _Oper, class _Dom>
- struct _BinClos<_Oper,_ValArray,_Expr,typename _Dom::value_type,_Dom>
- : _BinBase<_Oper,valarray<typename _Dom::value_type>,_Dom>
- {
- typedef typename _Dom::value_type _Tp;
- typedef _BinBase<_Oper,valarray<_Tp>,_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _BinClos(const valarray<_Tp>& __e1, const _Dom& __e2)
- : _Base(__e1, __e2) {}
- };
-
- template<class _Oper, class _Dom>
- struct _BinClos<_Oper,_Expr,_Constant,_Dom,typename _Dom::value_type>
- : _BinBase2<_Oper,_Dom>
- {
- typedef typename _Dom::value_type _Tp;
- typedef _BinBase2<_Oper,_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _BinClos(const _Dom& __e1, const _Tp& __e2) : _Base(__e1, __e2) {}
- };
-
- template<class _Oper, class _Dom>
- struct _BinClos<_Oper,_Constant,_Expr,typename _Dom::value_type,_Dom>
- : _BinBase1<_Oper,_Dom>
- {
- typedef typename _Dom::value_type _Tp;
- typedef _BinBase1<_Oper,_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _BinClos(const _Tp& __e1, const _Dom& __e2) : _Base(__e1, __e2) {}
- };
-
- template<class _Oper, typename _Tp>
- struct _BinClos<_Oper,_ValArray,_Constant,_Tp,_Tp>
- : _BinBase2<_Oper,valarray<_Tp> >
- {
- typedef _BinBase2<_Oper,valarray<_Tp> > _Base;
- typedef typename _Base::value_type value_type;
-
- _BinClos(const valarray<_Tp>& __v, const _Tp& __t) : _Base(__v, __t) {}
- };
-
- template<class _Oper, typename _Tp>
- struct _BinClos<_Oper,_Constant,_ValArray,_Tp,_Tp>
- : _BinBase1<_Oper,valarray<_Tp> >
- {
- typedef _BinBase1<_Oper,valarray<_Tp> > _Base;
- typedef typename _Base::value_type value_type;
-
- _BinClos(const _Tp& __t, const valarray<_Tp>& __v) : _Base(__t, __v) {}
- };
-
-
- //
- // slice_array closure.
- //
- template<typename _Dom> class _SBase {
- public:
- typedef typename _Dom::value_type value_type;
-
- _SBase (const _Dom& __e, const slice& __s)
- : _M_expr (__e), _M_slice (__s) {}
- value_type operator[] (size_t __i) const
- { return _M_expr[_M_slice.start () + __i * _M_slice.stride ()]; }
- size_t size() const { return _M_slice.size (); }
-
- private:
- const _Dom& _M_expr;
- const slice& _M_slice;
- };
-
- template<typename _Tp> class _SBase<_Array<_Tp> > {
- public:
- typedef _Tp value_type;
-
- _SBase (_Array<_Tp> __a, const slice& __s)
- : _M_array (__a._M_data+__s.start()), _M_size (__s.size()),
- _M_stride (__s.stride()) {}
- value_type operator[] (size_t __i) const
- { return _M_array._M_data[__i * _M_stride]; }
- size_t size() const { return _M_size; }
-
- private:
- const _Array<_Tp> _M_array;
- const size_t _M_size;
- const size_t _M_stride;
- };
-
- template<class _Dom> struct _SClos<_Expr,_Dom> : _SBase<_Dom> {
- typedef _SBase<_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _SClos (const _Dom& __e, const slice& __s) : _Base (__e, __s) {}
- };
-
- template<typename _Tp>
- struct _SClos<_ValArray,_Tp> : _SBase<_Array<_Tp> > {
- typedef _SBase<_Array<_Tp> > _Base;
- typedef _Tp value_type;
-
- _SClos (_Array<_Tp> __a, const slice& __s) : _Base (__a, __s) {}
- };
-
- //
- // gslice_array closure.
- //
- template<class _Dom> class _GBase {
- public:
- typedef typename _Dom::value_type value_type;
-
- _GBase (const _Dom& __e, const valarray<size_t>& __i)
- : _M_expr (__e), _M_index(__i) {}
- value_type operator[] (size_t __i) const
- { return _M_expr[_M_index[__i]]; }
- size_t size () const { return _M_index.size(); }
-
- private:
- const _Dom& _M_expr;
- const valarray<size_t>& _M_index;
- };
-
- template<typename _Tp> class _GBase<_Array<_Tp> > {
- public:
- typedef _Tp value_type;
-
- _GBase (_Array<_Tp> __a, const valarray<size_t>& __i)
- : _M_array (__a), _M_index(__i) {}
- value_type operator[] (size_t __i) const
- { return _M_array._M_data[_M_index[__i]]; }
- size_t size () const { return _M_index.size(); }
-
- private:
- const _Array<_Tp> _M_array;
- const valarray<size_t>& _M_index;
- };
-
- template<class _Dom> struct _GClos<_Expr,_Dom> : _GBase<_Dom> {
- typedef _GBase<_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _GClos (const _Dom& __e, const valarray<size_t>& __i)
- : _Base (__e, __i) {}
- };
-
- template<typename _Tp>
- struct _GClos<_ValArray,_Tp> : _GBase<_Array<_Tp> > {
- typedef _GBase<_Array<_Tp> > _Base;
- typedef typename _Base::value_type value_type;
-
- _GClos (_Array<_Tp> __a, const valarray<size_t>& __i)
- : _Base (__a, __i) {}
- };
-
- //
- // indirect_array closure
- //
-
- template<class _Dom> class _IBase {
- public:
- typedef typename _Dom::value_type value_type;
-
- _IBase (const _Dom& __e, const valarray<size_t>& __i)
- : _M_expr (__e), _M_index (__i) {}
- value_type operator[] (size_t __i) const
- { return _M_expr[_M_index[__i]]; }
- size_t size() const { return _M_index.size(); }
-
- private:
- const _Dom& _M_expr;
- const valarray<size_t>& _M_index;
- };
-
- template<class _Dom> struct _IClos<_Expr,_Dom> : _IBase<_Dom> {
- typedef _IBase<_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _IClos (const _Dom& __e, const valarray<size_t>& __i)
- : _Base (__e, __i) {}
- };
-
- template<typename _Tp>
- struct _IClos<_ValArray,_Tp> : _IBase<valarray<_Tp> > {
- typedef _IBase<valarray<_Tp> > _Base;
- typedef _Tp value_type;
-
- _IClos (const valarray<_Tp>& __a, const valarray<size_t>& __i)
- : _Base (__a, __i) {}
- };
-
- //
- // class _Expr
- //
- template<class _Clos, typename _Tp>
- class _Expr
- {
- public:
- typedef _Tp value_type;
-
- _Expr(const _Clos&);
-
- const _Clos& operator()() const;
-
- value_type operator[](size_t) const;
- valarray<value_type> operator[](slice) const;
- valarray<value_type> operator[](const gslice&) const;
- valarray<value_type> operator[](const valarray<bool>&) const;
- valarray<value_type> operator[](const valarray<size_t>&) const;
-
- _Expr<_UnClos<__unary_plus,std::_Expr,_Clos>, value_type>
- operator+() const;
-
- _Expr<_UnClos<__negate,std::_Expr,_Clos>, value_type>
- operator-() const;
-
- _Expr<_UnClos<__bitwise_not,std::_Expr,_Clos>, value_type>
- operator~() const;
-
- _Expr<_UnClos<__logical_not,std::_Expr,_Clos>, bool>
- operator!() const;
-
- size_t size() const;
- value_type sum() const;
-
- valarray<value_type> shift(int) const;
- valarray<value_type> cshift(int) const;
-
- value_type min() const;
- value_type max() const;
-
- valarray<value_type> apply(value_type (*)(const value_type&)) const;
- valarray<value_type> apply(value_type (*)(value_type)) const;
-
- private:
- const _Clos _M_closure;
- };
-
- template<class _Clos, typename _Tp>
- inline
- _Expr<_Clos,_Tp>::_Expr(const _Clos& __c) : _M_closure(__c) {}
-
- template<class _Clos, typename _Tp>
- inline const _Clos&
- _Expr<_Clos,_Tp>::operator()() const
- { return _M_closure; }
-
- template<class _Clos, typename _Tp>
- inline _Tp
- _Expr<_Clos,_Tp>::operator[](size_t __i) const
- { return _M_closure[__i]; }
-
- template<class _Clos, typename _Tp>
- inline valarray<_Tp>
- _Expr<_Clos,_Tp>::operator[](slice __s) const
- { return _M_closure[__s]; }
-
- template<class _Clos, typename _Tp>
- inline valarray<_Tp>
- _Expr<_Clos,_Tp>::operator[](const gslice& __gs) const
- { return _M_closure[__gs]; }
-
- template<class _Clos, typename _Tp>
- inline valarray<_Tp>
- _Expr<_Clos,_Tp>::operator[](const valarray<bool>& __m) const
- { return _M_closure[__m]; }
-
- template<class _Clos, typename _Tp>
- inline valarray<_Tp>
- _Expr<_Clos,_Tp>::operator[](const valarray<size_t>& __i) const
- { return _M_closure[__i]; }
-
- template<class _Clos, typename _Tp>
- inline size_t
- _Expr<_Clos,_Tp>::size() const { return _M_closure.size (); }
-
- template<class _Clos, typename _Tp>
- inline valarray<_Tp>
- _Expr<_Clos, _Tp>::shift(int __n) const
- { return valarray<_Tp>(_M_closure).shift(__n); }
-
- template<class _Clos, typename _Tp>
- inline valarray<_Tp>
- _Expr<_Clos, _Tp>::cshift(int __n) const
- { return valarray<_Tp>(_M_closure).cshift(__n); }
-
- template<class _Clos, typename _Tp>
- inline valarray<_Tp>
- _Expr<_Clos, _Tp>::apply(_Tp __f(const _Tp&)) const
- { return valarray<_Tp>(_M_closure).apply(__f); }
-
- template<class _Clos, typename _Tp>
- inline valarray<_Tp>
- _Expr<_Clos, _Tp>::apply(_Tp __f(_Tp)) const
- { return valarray<_Tp>(_M_closure).apply(__f); }
-
- // XXX: replace this with a more robust summation algorithm.
- template<class _Clos, typename _Tp>
- inline _Tp
- _Expr<_Clos,_Tp>::sum() const
- {
- size_t __n = _M_closure.size();
- if (__n == 0)
- return _Tp();
- else
- {
- _Tp __s = _M_closure[--__n];
- while (__n != 0)
- __s += _M_closure[--__n];
- return __s;
- }
- }
-
- template<class _Clos, typename _Tp>
- inline _Tp
- _Expr<_Clos, _Tp>::min() const
- { return __valarray_min(_M_closure); }
-
- template<class _Clos, typename _Tp>
- inline _Tp
- _Expr<_Clos, _Tp>::max() const
- { return __valarray_max(_M_closure); }
-
- template<class _Dom, typename _Tp>
- inline _Expr<_UnClos<__logical_not,_Expr,_Dom>, bool>
- _Expr<_Dom,_Tp>::operator!() const
- {
- typedef _UnClos<__logical_not,std::_Expr,_Dom> _Closure;
- return _Expr<_Closure,_Tp>(_Closure(this->_M_closure));
- }
-
-#define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name) \
- template<class _Dom, typename _Tp> \
- inline _Expr<_UnClos<_Name,std::_Expr,_Dom>,_Tp> \
- _Expr<_Dom,_Tp>::operator _Op() const \
- { \
- typedef _UnClos<_Name,std::_Expr,_Dom> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(this->_M_closure)); \
- }
-
- _DEFINE_EXPR_UNARY_OPERATOR(+, __unary_plus)
- _DEFINE_EXPR_UNARY_OPERATOR(-, __negate)
- _DEFINE_EXPR_UNARY_OPERATOR(~, __bitwise_not)
-
-#undef _DEFINE_EXPR_UNARY_OPERATOR
-
-
-#define _DEFINE_EXPR_BINARY_OPERATOR(_Op, _Name) \
- template<class _Dom1, class _Dom2> \
- inline _Expr<_BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2>, \
- typename __fun<_Name, typename _Dom1::value_type>::result_type>\
- operator _Op(const _Expr<_Dom1,typename _Dom1::value_type>& __v, \
- const _Expr<_Dom2,typename _Dom2::value_type>& __w) \
- { \
- typedef typename _Dom1::value_type _Arg; \
- typedef typename __fun<_Name, _Arg>::result_type _Value; \
- typedef _BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2> _Closure; \
- return _Expr<_Closure,_Value>(_Closure(__v(), __w())); \
- } \
- \
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_Expr,_Constant,_Dom,typename _Dom::value_type>,\
- typename __fun<_Name, typename _Dom::value_type>::result_type>\
-operator _Op(const _Expr<_Dom,typename _Dom::value_type>& __v, \
- const typename _Dom::value_type& __t) \
-{ \
- typedef typename _Dom::value_type _Arg; \
- typedef typename __fun<_Name, _Arg>::result_type _Value; \
- typedef _BinClos<_Name,_Expr,_Constant,_Dom,_Arg> _Closure; \
- return _Expr<_Closure,_Value>(_Closure(__v(), __t)); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_Constant,_Expr,typename _Dom::value_type,_Dom>,\
- typename __fun<_Name, typename _Dom::value_type>::result_type>\
-operator _Op(const typename _Dom::value_type& __t, \
- const _Expr<_Dom,typename _Dom::value_type>& __v) \
-{ \
- typedef typename _Dom::value_type _Arg; \
- typedef typename __fun<_Name, _Arg>::result_type _Value; \
- typedef _BinClos<_Name,_Constant,_Expr,_Arg,_Dom> _Closure; \
- return _Expr<_Closure,_Value>(_Closure(__t, __v())); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_Expr,_ValArray,_Dom,typename _Dom::value_type>,\
- typename __fun<_Name, typename _Dom::value_type>::result_type>\
-operator _Op(const _Expr<_Dom,typename _Dom::value_type>& __e, \
- const valarray<typename _Dom::value_type>& __v) \
-{ \
- typedef typename _Dom::value_type _Arg; \
- typedef typename __fun<_Name, _Arg>::result_type _Value; \
- typedef _BinClos<_Name,_Expr,_ValArray,_Dom,_Arg> _Closure; \
- return _Expr<_Closure,_Value>(_Closure(__e(), __v)); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_ValArray,_Expr,typename _Dom::value_type,_Dom>,\
- typename __fun<_Name, typename _Dom::value_type>::result_type>\
-operator _Op(const valarray<typename _Dom::value_type>& __v, \
- const _Expr<_Dom,typename _Dom::value_type>& __e) \
-{ \
- typedef typename _Dom::value_type _Tp; \
- typedef typename __fun<_Name, _Tp>::result_type _Value; \
- typedef _BinClos<_Name,_ValArray,_Expr,_Tp,_Dom> _Closure; \
- return _Expr<_Closure,_Value> (_Closure (__v, __e ())); \
-}
-
- _DEFINE_EXPR_BINARY_OPERATOR(+, __plus)
- _DEFINE_EXPR_BINARY_OPERATOR(-, __minus)
- _DEFINE_EXPR_BINARY_OPERATOR(*, __multiplies)
- _DEFINE_EXPR_BINARY_OPERATOR(/, __divides)
- _DEFINE_EXPR_BINARY_OPERATOR(%, __modulus)
- _DEFINE_EXPR_BINARY_OPERATOR(^, __bitwise_xor)
- _DEFINE_EXPR_BINARY_OPERATOR(&, __bitwise_and)
- _DEFINE_EXPR_BINARY_OPERATOR(|, __bitwise_or)
- _DEFINE_EXPR_BINARY_OPERATOR(<<, __shift_left)
- _DEFINE_EXPR_BINARY_OPERATOR(>>, __shift_right)
- _DEFINE_EXPR_BINARY_OPERATOR(&&, __logical_and)
- _DEFINE_EXPR_BINARY_OPERATOR(||, __logical_or)
- _DEFINE_EXPR_BINARY_OPERATOR(==, __equal_to)
- _DEFINE_EXPR_BINARY_OPERATOR(!=, __not_equal_to)
- _DEFINE_EXPR_BINARY_OPERATOR(<, __less)
- _DEFINE_EXPR_BINARY_OPERATOR(>, __greater)
- _DEFINE_EXPR_BINARY_OPERATOR(<=, __less_equal)
- _DEFINE_EXPR_BINARY_OPERATOR(>=, __greater_equal)
-
-#undef _DEFINE_EXPR_BINARY_OPERATOR
-
-#define _DEFINE_EXPR_UNARY_FUNCTION(_Name) \
- template<class _Dom> \
- inline _Expr<_UnClos<__##_Name,_Expr,_Dom>,typename _Dom::value_type>\
- _Name(const _Expr<_Dom,typename _Dom::value_type>& __e) \
- { \
- typedef typename _Dom::value_type _Tp; \
- typedef _UnClos<__##_Name,_Expr,_Dom> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__e())); \
- } \
- \
- template<typename _Tp> \
- inline _Expr<_UnClos<__##_Name,_ValArray,_Tp>,_Tp> \
- _Name(const valarray<_Tp>& __v) \
- { \
- typedef _UnClos<__##_Name,_ValArray,_Tp> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__v)); \
- }
-
- _DEFINE_EXPR_UNARY_FUNCTION(abs)
- _DEFINE_EXPR_UNARY_FUNCTION(cos)
- _DEFINE_EXPR_UNARY_FUNCTION(acos)
- _DEFINE_EXPR_UNARY_FUNCTION(cosh)
- _DEFINE_EXPR_UNARY_FUNCTION(sin)
- _DEFINE_EXPR_UNARY_FUNCTION(asin)
- _DEFINE_EXPR_UNARY_FUNCTION(sinh)
- _DEFINE_EXPR_UNARY_FUNCTION(tan)
- _DEFINE_EXPR_UNARY_FUNCTION(tanh)
- _DEFINE_EXPR_UNARY_FUNCTION(atan)
- _DEFINE_EXPR_UNARY_FUNCTION(exp)
- _DEFINE_EXPR_UNARY_FUNCTION(log)
- _DEFINE_EXPR_UNARY_FUNCTION(log10)
- _DEFINE_EXPR_UNARY_FUNCTION(sqrt)
-
-#undef _DEFINE_EXPR_UNARY_FUNCTION
-
-#define _DEFINE_EXPR_BINARY_FUNCTION(_Fun) \
- template<class _Dom1, class _Dom2> \
- inline _Expr<_BinClos<__##_Fun,_Expr,_Expr,_Dom1,_Dom2>, \
- typename _Dom1::value_type> \
- _Fun(const _Expr<_Dom1,typename _Dom1::value_type>& __e1, \
- const _Expr<_Dom2,typename _Dom2::value_type>& __e2) \
- { \
- typedef typename _Dom1::value_type _Tp; \
- typedef _BinClos<__##_Fun,_Expr,_Expr,_Dom1,_Dom2> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__e1(), __e2())); \
- } \
- \
- template<class _Dom> \
- inline _Expr<_BinClos<__##_Fun, _Expr, _ValArray, _Dom, \
- typename _Dom::value_type>, \
- typename _Dom::value_type> \
- _Fun(const _Expr<_Dom,typename _Dom::value_type>& __e, \
- const valarray<typename _Dom::value_type>& __v) \
- { \
- typedef typename _Dom::value_type _Tp; \
- typedef _BinClos<__##_Fun, _Expr, _ValArray, _Dom, _Tp> _Closure;\
- return _Expr<_Closure,_Tp>(_Closure(__e(), __v)); \
- } \
- \
- template<class _Dom> \
- inline _Expr<_BinClos<__##_Fun, _ValArray, _Expr, \
- typename _Dom::value_type,_Dom>, \
- typename _Dom::value_type> \
- _Fun(const valarray<typename _Dom::valarray>& __v, \
- const _Expr<_Dom,typename _Dom::value_type>& __e) \
- { \
- typedef typename _Dom::value_type _Tp; \
- typedef _BinClos<__##_Fun,_ValArray,_Expr,_Tp,_Dom> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__v, __e())); \
- } \
- \
- template<class _Dom> \
- inline _Expr<_BinClos<__##_Fun,_Expr,_Constant,_Dom, \
- typename _Dom::value_type>, \
- typename _Dom::value_type> \
- _Fun(const _Expr<_Dom, typename _Dom::value_type>& __e, \
- const typename _Dom::value_type& __t) \
- { \
- typedef typename _Dom::value_type _Tp; \
- typedef _BinClos<__##_Fun,_Expr,_Constant,_Dom,_Tp> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__e(), __t)); \
- } \
- \
- template<class _Dom> \
- inline _Expr<_BinClos<__##_Fun,_Constant,_Expr, \
- typename _Dom::value_type,_Dom>, \
- typename _Dom::value_type> \
- _Fun(const typename _Dom::value_type& __t, \
- const _Expr<_Dom,typename _Dom::value_type>& __e) \
- { \
- typedef typename _Dom::value_type _Tp; \
- typedef _BinClos<__##_Fun, _Constant,_Expr,_Tp,_Dom> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__t, __e())); \
- } \
- \
- template<typename _Tp> \
- inline _Expr<_BinClos<__##_Fun,_ValArray,_ValArray,_Tp,_Tp>, _Tp> \
- _Fun(const valarray<_Tp>& __v, const valarray<_Tp>& __w) \
- { \
- typedef _BinClos<__##_Fun,_ValArray,_ValArray,_Tp,_Tp> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__v, __w)); \
- } \
- \
- template<typename _Tp> \
- inline _Expr<_BinClos<__##_Fun,_ValArray,_Constant,_Tp,_Tp>,_Tp> \
- _Fun(const valarray<_Tp>& __v, const _Tp& __t) \
- { \
- typedef _BinClos<__##_Fun,_ValArray,_Constant,_Tp,_Tp> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__v, __t)); \
- } \
- \
- template<typename _Tp> \
- inline _Expr<_BinClos<__##_Fun,_Constant,_ValArray,_Tp,_Tp>,_Tp> \
- _Fun(const _Tp& __t, const valarray<_Tp>& __v) \
- { \
- typedef _BinClos<__##_Fun,_Constant,_ValArray,_Tp,_Tp> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__t, __v)); \
- }
-
-_DEFINE_EXPR_BINARY_FUNCTION(atan2)
-_DEFINE_EXPR_BINARY_FUNCTION(pow)
-
-#undef _DEFINE_EXPR_BINARY_FUNCTION
-
-} // std::
-
-
-#endif /* _CPP_VALARRAY_META_H */
-
-// Local Variables:
-// mode:c++
-// End:
diff --git a/contrib/libstdc++/include/ext/stl_hash_fun.h b/contrib/libstdc++/include/ext/stl_hash_fun.h
deleted file mode 100644
index 562fe7a..0000000
--- a/contrib/libstdc++/include/ext/stl_hash_fun.h
+++ /dev/null
@@ -1,126 +0,0 @@
-// 'struct hash' from SGI -*- C++ -*-
-
-// Copyright (C) 2001, 2002 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-/*
- * Copyright (c) 1996-1998
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-/** @file ext/stl_hash_fun.h
- * This file is a GNU extension to the Standard C++ Library (possibly
- * containing extensions from the HP/SGI STL subset). You should only
- * include this header if you are using GCC 3 or later.
- */
-
-#ifndef _CPP_BITS_STL_HASH_FUN_H
-#define _CPP_BITS_STL_HASH_FUN_H 1
-
-#include <cstddef>
-
-namespace __gnu_cxx
-{
-using std::size_t;
-
-template <class _Key> struct hash { };
-
-inline size_t __stl_hash_string(const char* __s)
-{
- unsigned long __h = 0;
- for ( ; *__s; ++__s)
- __h = 5*__h + *__s;
-
- return size_t(__h);
-}
-
-template<> struct hash<char*>
-{
- size_t operator()(const char* __s) const { return __stl_hash_string(__s); }
-};
-
-template<> struct hash<const char*>
-{
- size_t operator()(const char* __s) const { return __stl_hash_string(__s); }
-};
-
-template<> struct hash<char> {
- size_t operator()(char __x) const { return __x; }
-};
-template<> struct hash<unsigned char> {
- size_t operator()(unsigned char __x) const { return __x; }
-};
-template<> struct hash<signed char> {
- size_t operator()(unsigned char __x) const { return __x; }
-};
-template<> struct hash<short> {
- size_t operator()(short __x) const { return __x; }
-};
-template<> struct hash<unsigned short> {
- size_t operator()(unsigned short __x) const { return __x; }
-};
-template<> struct hash<int> {
- size_t operator()(int __x) const { return __x; }
-};
-template<> struct hash<unsigned int> {
- size_t operator()(unsigned int __x) const { return __x; }
-};
-template<> struct hash<long> {
- size_t operator()(long __x) const { return __x; }
-};
-template<> struct hash<unsigned long> {
- size_t operator()(unsigned long __x) const { return __x; }
-};
-
-} // namespace __gnu_cxx
-
-#endif /* _CPP_BITS_STL_HASH_FUN_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/include/ext/stl_hashtable.h b/contrib/libstdc++/include/ext/stl_hashtable.h
deleted file mode 100644
index b41c821..0000000
--- a/contrib/libstdc++/include/ext/stl_hashtable.h
+++ /dev/null
@@ -1,996 +0,0 @@
-// Hashtable implementation used by containers -*- C++ -*-
-
-// Copyright (C) 2001, 2002 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-/*
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-/** @file ext/stl_hashtable.h
- * This file is a GNU extension to the Standard C++ Library (possibly
- * containing extensions from the HP/SGI STL subset). You should only
- * include this header if you are using GCC 3 or later.
- */
-
-#ifndef __SGI_STL_INTERNAL_HASHTABLE_H
-#define __SGI_STL_INTERNAL_HASHTABLE_H
-
-// Hashtable class, used to implement the hashed associative containers
-// hash_set, hash_map, hash_multiset, and hash_multimap.
-
-#include <vector>
-#include <iterator>
-#include <bits/stl_algo.h>
-#include <bits/stl_function.h>
-#include <ext/stl_hash_fun.h>
-
-namespace __gnu_cxx
-{
-using std::size_t;
-using std::ptrdiff_t;
-using std::forward_iterator_tag;
-using std::input_iterator_tag;
-using std::_Alloc_traits;
-using std::_Construct;
-using std::_Destroy;
-using std::distance;
-using std::vector;
-using std::pair;
-using std::__iterator_category;
-
-template <class _Val>
-struct _Hashtable_node
-{
- _Hashtable_node* _M_next;
- _Val _M_val;
-};
-
-template <class _Val, class _Key, class _HashFcn,
- class _ExtractKey, class _EqualKey, class _Alloc = std::__alloc>
-class hashtable;
-
-template <class _Val, class _Key, class _HashFcn,
- class _ExtractKey, class _EqualKey, class _Alloc>
-struct _Hashtable_iterator;
-
-template <class _Val, class _Key, class _HashFcn,
- class _ExtractKey, class _EqualKey, class _Alloc>
-struct _Hashtable_const_iterator;
-
-template <class _Val, class _Key, class _HashFcn,
- class _ExtractKey, class _EqualKey, class _Alloc>
-struct _Hashtable_iterator {
- typedef hashtable<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>
- _Hashtable;
- typedef _Hashtable_iterator<_Val, _Key, _HashFcn,
- _ExtractKey, _EqualKey, _Alloc>
- iterator;
- typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn,
- _ExtractKey, _EqualKey, _Alloc>
- const_iterator;
- typedef _Hashtable_node<_Val> _Node;
-
- typedef forward_iterator_tag iterator_category;
- typedef _Val value_type;
- typedef ptrdiff_t difference_type;
- typedef size_t size_type;
- typedef _Val& reference;
- typedef _Val* pointer;
-
- _Node* _M_cur;
- _Hashtable* _M_ht;
-
- _Hashtable_iterator(_Node* __n, _Hashtable* __tab)
- : _M_cur(__n), _M_ht(__tab) {}
- _Hashtable_iterator() {}
- reference operator*() const { return _M_cur->_M_val; }
- pointer operator->() const { return &(operator*()); }
- iterator& operator++();
- iterator operator++(int);
- bool operator==(const iterator& __it) const
- { return _M_cur == __it._M_cur; }
- bool operator!=(const iterator& __it) const
- { return _M_cur != __it._M_cur; }
-};
-
-
-template <class _Val, class _Key, class _HashFcn,
- class _ExtractKey, class _EqualKey, class _Alloc>
-struct _Hashtable_const_iterator {
- typedef hashtable<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>
- _Hashtable;
- typedef _Hashtable_iterator<_Val,_Key,_HashFcn,
- _ExtractKey,_EqualKey,_Alloc>
- iterator;
- typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn,
- _ExtractKey, _EqualKey, _Alloc>
- const_iterator;
- typedef _Hashtable_node<_Val> _Node;
-
- typedef forward_iterator_tag iterator_category;
- typedef _Val value_type;
- typedef ptrdiff_t difference_type;
- typedef size_t size_type;
- typedef const _Val& reference;
- typedef const _Val* pointer;
-
- const _Node* _M_cur;
- const _Hashtable* _M_ht;
-
- _Hashtable_const_iterator(const _Node* __n, const _Hashtable* __tab)
- : _M_cur(__n), _M_ht(__tab) {}
- _Hashtable_const_iterator() {}
- _Hashtable_const_iterator(const iterator& __it)
- : _M_cur(__it._M_cur), _M_ht(__it._M_ht) {}
- reference operator*() const { return _M_cur->_M_val; }
- pointer operator->() const { return &(operator*()); }
- const_iterator& operator++();
- const_iterator operator++(int);
- bool operator==(const const_iterator& __it) const
- { return _M_cur == __it._M_cur; }
- bool operator!=(const const_iterator& __it) const
- { return _M_cur != __it._M_cur; }
-};
-
-// Note: assumes long is at least 32 bits.
-enum { __stl_num_primes = 28 };
-
-static const unsigned long __stl_prime_list[__stl_num_primes] =
-{
- 53ul, 97ul, 193ul, 389ul, 769ul,
- 1543ul, 3079ul, 6151ul, 12289ul, 24593ul,
- 49157ul, 98317ul, 196613ul, 393241ul, 786433ul,
- 1572869ul, 3145739ul, 6291469ul, 12582917ul, 25165843ul,
- 50331653ul, 100663319ul, 201326611ul, 402653189ul, 805306457ul,
- 1610612741ul, 3221225473ul, 4294967291ul
-};
-
-inline unsigned long __stl_next_prime(unsigned long __n)
-{
- const unsigned long* __first = __stl_prime_list;
- const unsigned long* __last = __stl_prime_list + (int)__stl_num_primes;
- const unsigned long* pos = std::lower_bound(__first, __last, __n);
- return pos == __last ? *(__last - 1) : *pos;
-}
-
-// Forward declaration of operator==.
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-class hashtable;
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-bool operator==(const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht1,
- const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht2);
-
-
-// Hashtables handle allocators a bit differently than other containers
-// do. If we're using standard-conforming allocators, then a hashtable
-// unconditionally has a member variable to hold its allocator, even if
-// it so happens that all instances of the allocator type are identical.
-// This is because, for hashtables, this extra storage is negligible.
-// Additionally, a base class wouldn't serve any other purposes; it
-// wouldn't, for example, simplify the exception-handling code.
-
-template <class _Val, class _Key, class _HashFcn,
- class _ExtractKey, class _EqualKey, class _Alloc>
-class hashtable {
-public:
- typedef _Key key_type;
- typedef _Val value_type;
- typedef _HashFcn hasher;
- typedef _EqualKey key_equal;
-
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type& reference;
- typedef const value_type& const_reference;
-
- hasher hash_funct() const { return _M_hash; }
- key_equal key_eq() const { return _M_equals; }
-
-private:
- typedef _Hashtable_node<_Val> _Node;
-
-public:
- typedef typename _Alloc_traits<_Val,_Alloc>::allocator_type allocator_type;
- allocator_type get_allocator() const { return _M_node_allocator; }
-private:
- typename _Alloc_traits<_Node, _Alloc>::allocator_type _M_node_allocator;
- _Node* _M_get_node() { return _M_node_allocator.allocate(1); }
- void _M_put_node(_Node* __p) { _M_node_allocator.deallocate(__p, 1); }
-
-private:
- hasher _M_hash;
- key_equal _M_equals;
- _ExtractKey _M_get_key;
- vector<_Node*,_Alloc> _M_buckets;
- size_type _M_num_elements;
-
-public:
- typedef _Hashtable_iterator<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>
- iterator;
- typedef _Hashtable_const_iterator<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,
- _Alloc>
- const_iterator;
-
- friend struct
- _Hashtable_iterator<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>;
- friend struct
- _Hashtable_const_iterator<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>;
-
-public:
- hashtable(size_type __n,
- const _HashFcn& __hf,
- const _EqualKey& __eql,
- const _ExtractKey& __ext,
- const allocator_type& __a = allocator_type())
- : _M_node_allocator(__a),
- _M_hash(__hf),
- _M_equals(__eql),
- _M_get_key(__ext),
- _M_buckets(__a),
- _M_num_elements(0)
- {
- _M_initialize_buckets(__n);
- }
-
- hashtable(size_type __n,
- const _HashFcn& __hf,
- const _EqualKey& __eql,
- const allocator_type& __a = allocator_type())
- : _M_node_allocator(__a),
- _M_hash(__hf),
- _M_equals(__eql),
- _M_get_key(_ExtractKey()),
- _M_buckets(__a),
- _M_num_elements(0)
- {
- _M_initialize_buckets(__n);
- }
-
- hashtable(const hashtable& __ht)
- : _M_node_allocator(__ht.get_allocator()),
- _M_hash(__ht._M_hash),
- _M_equals(__ht._M_equals),
- _M_get_key(__ht._M_get_key),
- _M_buckets(__ht.get_allocator()),
- _M_num_elements(0)
- {
- _M_copy_from(__ht);
- }
-
- hashtable& operator= (const hashtable& __ht)
- {
- if (&__ht != this) {
- clear();
- _M_hash = __ht._M_hash;
- _M_equals = __ht._M_equals;
- _M_get_key = __ht._M_get_key;
- _M_copy_from(__ht);
- }
- return *this;
- }
-
- ~hashtable() { clear(); }
-
- size_type size() const { return _M_num_elements; }
- size_type max_size() const { return size_type(-1); }
- bool empty() const { return size() == 0; }
-
- void swap(hashtable& __ht)
- {
- std::swap(_M_hash, __ht._M_hash);
- std::swap(_M_equals, __ht._M_equals);
- std::swap(_M_get_key, __ht._M_get_key);
- _M_buckets.swap(__ht._M_buckets);
- std::swap(_M_num_elements, __ht._M_num_elements);
- }
-
- iterator begin()
- {
- for (size_type __n = 0; __n < _M_buckets.size(); ++__n)
- if (_M_buckets[__n])
- return iterator(_M_buckets[__n], this);
- return end();
- }
-
- iterator end() { return iterator(0, this); }
-
- const_iterator begin() const
- {
- for (size_type __n = 0; __n < _M_buckets.size(); ++__n)
- if (_M_buckets[__n])
- return const_iterator(_M_buckets[__n], this);
- return end();
- }
-
- const_iterator end() const { return const_iterator(0, this); }
-
- template <class _Vl, class _Ky, class _HF, class _Ex, class _Eq, class _Al>
- friend bool operator== (const hashtable<_Vl, _Ky, _HF, _Ex, _Eq, _Al>&,
- const hashtable<_Vl, _Ky, _HF, _Ex, _Eq, _Al>&);
-public:
-
- size_type bucket_count() const { return _M_buckets.size(); }
-
- size_type max_bucket_count() const
- { return __stl_prime_list[(int)__stl_num_primes - 1]; }
-
- size_type elems_in_bucket(size_type __bucket) const
- {
- size_type __result = 0;
- for (_Node* __cur = _M_buckets[__bucket]; __cur; __cur = __cur->_M_next)
- __result += 1;
- return __result;
- }
-
- pair<iterator, bool> insert_unique(const value_type& __obj)
- {
- resize(_M_num_elements + 1);
- return insert_unique_noresize(__obj);
- }
-
- iterator insert_equal(const value_type& __obj)
- {
- resize(_M_num_elements + 1);
- return insert_equal_noresize(__obj);
- }
-
- pair<iterator, bool> insert_unique_noresize(const value_type& __obj);
- iterator insert_equal_noresize(const value_type& __obj);
-
- template <class _InputIterator>
- void insert_unique(_InputIterator __f, _InputIterator __l)
- {
- insert_unique(__f, __l, __iterator_category(__f));
- }
-
- template <class _InputIterator>
- void insert_equal(_InputIterator __f, _InputIterator __l)
- {
- insert_equal(__f, __l, __iterator_category(__f));
- }
-
- template <class _InputIterator>
- void insert_unique(_InputIterator __f, _InputIterator __l,
- input_iterator_tag)
- {
- for ( ; __f != __l; ++__f)
- insert_unique(*__f);
- }
-
- template <class _InputIterator>
- void insert_equal(_InputIterator __f, _InputIterator __l,
- input_iterator_tag)
- {
- for ( ; __f != __l; ++__f)
- insert_equal(*__f);
- }
-
- template <class _ForwardIterator>
- void insert_unique(_ForwardIterator __f, _ForwardIterator __l,
- forward_iterator_tag)
- {
- size_type __n = distance(__f, __l);
- resize(_M_num_elements + __n);
- for ( ; __n > 0; --__n, ++__f)
- insert_unique_noresize(*__f);
- }
-
- template <class _ForwardIterator>
- void insert_equal(_ForwardIterator __f, _ForwardIterator __l,
- forward_iterator_tag)
- {
- size_type __n = distance(__f, __l);
- resize(_M_num_elements + __n);
- for ( ; __n > 0; --__n, ++__f)
- insert_equal_noresize(*__f);
- }
-
- reference find_or_insert(const value_type& __obj);
-
- iterator find(const key_type& __key)
- {
- size_type __n = _M_bkt_num_key(__key);
- _Node* __first;
- for ( __first = _M_buckets[__n];
- __first && !_M_equals(_M_get_key(__first->_M_val), __key);
- __first = __first->_M_next)
- {}
- return iterator(__first, this);
- }
-
- const_iterator find(const key_type& __key) const
- {
- size_type __n = _M_bkt_num_key(__key);
- const _Node* __first;
- for ( __first = _M_buckets[__n];
- __first && !_M_equals(_M_get_key(__first->_M_val), __key);
- __first = __first->_M_next)
- {}
- return const_iterator(__first, this);
- }
-
- size_type count(const key_type& __key) const
- {
- const size_type __n = _M_bkt_num_key(__key);
- size_type __result = 0;
-
- for (const _Node* __cur = _M_buckets[__n]; __cur; __cur = __cur->_M_next)
- if (_M_equals(_M_get_key(__cur->_M_val), __key))
- ++__result;
- return __result;
- }
-
- pair<iterator, iterator>
- equal_range(const key_type& __key);
-
- pair<const_iterator, const_iterator>
- equal_range(const key_type& __key) const;
-
- size_type erase(const key_type& __key);
- void erase(const iterator& __it);
- void erase(iterator __first, iterator __last);
-
- void erase(const const_iterator& __it);
- void erase(const_iterator __first, const_iterator __last);
-
- void resize(size_type __num_elements_hint);
- void clear();
-
-private:
- size_type _M_next_size(size_type __n) const
- { return __stl_next_prime(__n); }
-
- void _M_initialize_buckets(size_type __n)
- {
- const size_type __n_buckets = _M_next_size(__n);
- _M_buckets.reserve(__n_buckets);
- _M_buckets.insert(_M_buckets.end(), __n_buckets, (_Node*) 0);
- _M_num_elements = 0;
- }
-
- size_type _M_bkt_num_key(const key_type& __key) const
- {
- return _M_bkt_num_key(__key, _M_buckets.size());
- }
-
- size_type _M_bkt_num(const value_type& __obj) const
- {
- return _M_bkt_num_key(_M_get_key(__obj));
- }
-
- size_type _M_bkt_num_key(const key_type& __key, size_t __n) const
- {
- return _M_hash(__key) % __n;
- }
-
- size_type _M_bkt_num(const value_type& __obj, size_t __n) const
- {
- return _M_bkt_num_key(_M_get_key(__obj), __n);
- }
-
- _Node* _M_new_node(const value_type& __obj)
- {
- _Node* __n = _M_get_node();
- __n->_M_next = 0;
- try {
- _Construct(&__n->_M_val, __obj);
- return __n;
- }
- catch(...)
- {
- _M_put_node(__n);
- __throw_exception_again;
- }
- }
-
- void _M_delete_node(_Node* __n)
- {
- _Destroy(&__n->_M_val);
- _M_put_node(__n);
- }
-
- void _M_erase_bucket(const size_type __n, _Node* __first, _Node* __last);
- void _M_erase_bucket(const size_type __n, _Node* __last);
-
- void _M_copy_from(const hashtable& __ht);
-
-};
-
-template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
- class _All>
-_Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>&
-_Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++()
-{
- const _Node* __old = _M_cur;
- _M_cur = _M_cur->_M_next;
- if (!_M_cur) {
- size_type __bucket = _M_ht->_M_bkt_num(__old->_M_val);
- while (!_M_cur && ++__bucket < _M_ht->_M_buckets.size())
- _M_cur = _M_ht->_M_buckets[__bucket];
- }
- return *this;
-}
-
-template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
- class _All>
-inline _Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>
-_Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++(int)
-{
- iterator __tmp = *this;
- ++*this;
- return __tmp;
-}
-
-template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
- class _All>
-_Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>&
-_Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++()
-{
- const _Node* __old = _M_cur;
- _M_cur = _M_cur->_M_next;
- if (!_M_cur) {
- size_type __bucket = _M_ht->_M_bkt_num(__old->_M_val);
- while (!_M_cur && ++__bucket < _M_ht->_M_buckets.size())
- _M_cur = _M_ht->_M_buckets[__bucket];
- }
- return *this;
-}
-
-template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
- class _All>
-inline _Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>
-_Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++(int)
-{
- const_iterator __tmp = *this;
- ++*this;
- return __tmp;
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-bool operator==(const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht1,
- const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht2)
-{
- typedef typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::_Node _Node;
- if (__ht1._M_buckets.size() != __ht2._M_buckets.size())
- return false;
- for (size_t __n = 0; __n < __ht1._M_buckets.size(); ++__n) {
- _Node* __cur1 = __ht1._M_buckets[__n];
- _Node* __cur2 = __ht2._M_buckets[__n];
- // Check same length of lists
- for ( ; __cur1 && __cur2;
- __cur1 = __cur1->_M_next, __cur2 = __cur2->_M_next)
- {}
- if (__cur1 || __cur2)
- return false;
- // Now check one's elements are in the other
- for (__cur1 = __ht1._M_buckets[__n] ; __cur1; __cur1 = __cur1->_M_next)
- {
- bool _found__cur1 = false;
- for (_Node* __cur2 = __ht2._M_buckets[__n];
- __cur2; __cur2 = __cur2->_M_next)
- {
- if (__cur1->_M_val == __cur2->_M_val)
- {
- _found__cur1 = true;
- break;
- }
- }
- if (!_found__cur1)
- return false;
- }
- }
- return true;
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-inline bool operator!=(const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht1,
- const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht2) {
- return !(__ht1 == __ht2);
-}
-
-template <class _Val, class _Key, class _HF, class _Extract, class _EqKey,
- class _All>
-inline void swap(hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht1,
- hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht2) {
- __ht1.swap(__ht2);
-}
-
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-pair<typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::iterator, bool>
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::insert_unique_noresize(const value_type& __obj)
-{
- const size_type __n = _M_bkt_num(__obj);
- _Node* __first = _M_buckets[__n];
-
- for (_Node* __cur = __first; __cur; __cur = __cur->_M_next)
- if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj)))
- return pair<iterator, bool>(iterator(__cur, this), false);
-
- _Node* __tmp = _M_new_node(__obj);
- __tmp->_M_next = __first;
- _M_buckets[__n] = __tmp;
- ++_M_num_elements;
- return pair<iterator, bool>(iterator(__tmp, this), true);
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::iterator
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::insert_equal_noresize(const value_type& __obj)
-{
- const size_type __n = _M_bkt_num(__obj);
- _Node* __first = _M_buckets[__n];
-
- for (_Node* __cur = __first; __cur; __cur = __cur->_M_next)
- if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj))) {
- _Node* __tmp = _M_new_node(__obj);
- __tmp->_M_next = __cur->_M_next;
- __cur->_M_next = __tmp;
- ++_M_num_elements;
- return iterator(__tmp, this);
- }
-
- _Node* __tmp = _M_new_node(__obj);
- __tmp->_M_next = __first;
- _M_buckets[__n] = __tmp;
- ++_M_num_elements;
- return iterator(__tmp, this);
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::reference
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::find_or_insert(const value_type& __obj)
-{
- resize(_M_num_elements + 1);
-
- size_type __n = _M_bkt_num(__obj);
- _Node* __first = _M_buckets[__n];
-
- for (_Node* __cur = __first; __cur; __cur = __cur->_M_next)
- if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj)))
- return __cur->_M_val;
-
- _Node* __tmp = _M_new_node(__obj);
- __tmp->_M_next = __first;
- _M_buckets[__n] = __tmp;
- ++_M_num_elements;
- return __tmp->_M_val;
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-pair<typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::iterator,
- typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::iterator>
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::equal_range(const key_type& __key)
-{
- typedef pair<iterator, iterator> _Pii;
- const size_type __n = _M_bkt_num_key(__key);
-
- for (_Node* __first = _M_buckets[__n]; __first; __first = __first->_M_next)
- if (_M_equals(_M_get_key(__first->_M_val), __key)) {
- for (_Node* __cur = __first->_M_next; __cur; __cur = __cur->_M_next)
- if (!_M_equals(_M_get_key(__cur->_M_val), __key))
- return _Pii(iterator(__first, this), iterator(__cur, this));
- for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m)
- if (_M_buckets[__m])
- return _Pii(iterator(__first, this),
- iterator(_M_buckets[__m], this));
- return _Pii(iterator(__first, this), end());
- }
- return _Pii(end(), end());
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-pair<typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::const_iterator,
- typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::const_iterator>
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::equal_range(const key_type& __key) const
-{
- typedef pair<const_iterator, const_iterator> _Pii;
- const size_type __n = _M_bkt_num_key(__key);
-
- for (const _Node* __first = _M_buckets[__n] ;
- __first;
- __first = __first->_M_next) {
- if (_M_equals(_M_get_key(__first->_M_val), __key)) {
- for (const _Node* __cur = __first->_M_next;
- __cur;
- __cur = __cur->_M_next)
- if (!_M_equals(_M_get_key(__cur->_M_val), __key))
- return _Pii(const_iterator(__first, this),
- const_iterator(__cur, this));
- for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m)
- if (_M_buckets[__m])
- return _Pii(const_iterator(__first, this),
- const_iterator(_M_buckets[__m], this));
- return _Pii(const_iterator(__first, this), end());
- }
- }
- return _Pii(end(), end());
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::size_type
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const key_type& __key)
-{
- const size_type __n = _M_bkt_num_key(__key);
- _Node* __first = _M_buckets[__n];
- size_type __erased = 0;
-
- if (__first) {
- _Node* __cur = __first;
- _Node* __next = __cur->_M_next;
- while (__next) {
- if (_M_equals(_M_get_key(__next->_M_val), __key)) {
- __cur->_M_next = __next->_M_next;
- _M_delete_node(__next);
- __next = __cur->_M_next;
- ++__erased;
- --_M_num_elements;
- }
- else {
- __cur = __next;
- __next = __cur->_M_next;
- }
- }
- if (_M_equals(_M_get_key(__first->_M_val), __key)) {
- _M_buckets[__n] = __first->_M_next;
- _M_delete_node(__first);
- ++__erased;
- --_M_num_elements;
- }
- }
- return __erased;
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const iterator& __it)
-{
- _Node* __p = __it._M_cur;
- if (__p) {
- const size_type __n = _M_bkt_num(__p->_M_val);
- _Node* __cur = _M_buckets[__n];
-
- if (__cur == __p) {
- _M_buckets[__n] = __cur->_M_next;
- _M_delete_node(__cur);
- --_M_num_elements;
- }
- else {
- _Node* __next = __cur->_M_next;
- while (__next) {
- if (__next == __p) {
- __cur->_M_next = __next->_M_next;
- _M_delete_node(__next);
- --_M_num_elements;
- break;
- }
- else {
- __cur = __next;
- __next = __cur->_M_next;
- }
- }
- }
- }
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::erase(iterator __first, iterator __last)
-{
- size_type __f_bucket = __first._M_cur ?
- _M_bkt_num(__first._M_cur->_M_val) : _M_buckets.size();
- size_type __l_bucket = __last._M_cur ?
- _M_bkt_num(__last._M_cur->_M_val) : _M_buckets.size();
-
- if (__first._M_cur == __last._M_cur)
- return;
- else if (__f_bucket == __l_bucket)
- _M_erase_bucket(__f_bucket, __first._M_cur, __last._M_cur);
- else {
- _M_erase_bucket(__f_bucket, __first._M_cur, 0);
- for (size_type __n = __f_bucket + 1; __n < __l_bucket; ++__n)
- _M_erase_bucket(__n, 0);
- if (__l_bucket != _M_buckets.size())
- _M_erase_bucket(__l_bucket, __last._M_cur);
- }
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-inline void
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const_iterator __first,
- const_iterator __last)
-{
- erase(iterator(const_cast<_Node*>(__first._M_cur),
- const_cast<hashtable*>(__first._M_ht)),
- iterator(const_cast<_Node*>(__last._M_cur),
- const_cast<hashtable*>(__last._M_ht)));
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-inline void
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const const_iterator& __it)
-{
- erase(iterator(const_cast<_Node*>(__it._M_cur),
- const_cast<hashtable*>(__it._M_ht)));
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::resize(size_type __num_elements_hint)
-{
- const size_type __old_n = _M_buckets.size();
- if (__num_elements_hint > __old_n) {
- const size_type __n = _M_next_size(__num_elements_hint);
- if (__n > __old_n) {
- vector<_Node*, _All> __tmp(__n, (_Node*)(0),
- _M_buckets.get_allocator());
- try {
- for (size_type __bucket = 0; __bucket < __old_n; ++__bucket) {
- _Node* __first = _M_buckets[__bucket];
- while (__first) {
- size_type __new_bucket = _M_bkt_num(__first->_M_val, __n);
- _M_buckets[__bucket] = __first->_M_next;
- __first->_M_next = __tmp[__new_bucket];
- __tmp[__new_bucket] = __first;
- __first = _M_buckets[__bucket];
- }
- }
- _M_buckets.swap(__tmp);
- }
- catch(...) {
- for (size_type __bucket = 0; __bucket < __tmp.size(); ++__bucket) {
- while (__tmp[__bucket]) {
- _Node* __next = __tmp[__bucket]->_M_next;
- _M_delete_node(__tmp[__bucket]);
- __tmp[__bucket] = __next;
- }
- }
- __throw_exception_again;
- }
- }
- }
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::_M_erase_bucket(const size_type __n, _Node* __first, _Node* __last)
-{
- _Node* __cur = _M_buckets[__n];
- if (__cur == __first)
- _M_erase_bucket(__n, __last);
- else {
- _Node* __next;
- for (__next = __cur->_M_next;
- __next != __first;
- __cur = __next, __next = __cur->_M_next)
- ;
- while (__next != __last) {
- __cur->_M_next = __next->_M_next;
- _M_delete_node(__next);
- __next = __cur->_M_next;
- --_M_num_elements;
- }
- }
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::_M_erase_bucket(const size_type __n, _Node* __last)
-{
- _Node* __cur = _M_buckets[__n];
- while (__cur != __last) {
- _Node* __next = __cur->_M_next;
- _M_delete_node(__cur);
- __cur = __next;
- _M_buckets[__n] = __cur;
- --_M_num_elements;
- }
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::clear()
-{
- for (size_type __i = 0; __i < _M_buckets.size(); ++__i) {
- _Node* __cur = _M_buckets[__i];
- while (__cur != 0) {
- _Node* __next = __cur->_M_next;
- _M_delete_node(__cur);
- __cur = __next;
- }
- _M_buckets[__i] = 0;
- }
- _M_num_elements = 0;
-}
-
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::_M_copy_from(const hashtable& __ht)
-{
- _M_buckets.clear();
- _M_buckets.reserve(__ht._M_buckets.size());
- _M_buckets.insert(_M_buckets.end(), __ht._M_buckets.size(), (_Node*) 0);
- try {
- for (size_type __i = 0; __i < __ht._M_buckets.size(); ++__i) {
- const _Node* __cur = __ht._M_buckets[__i];
- if (__cur) {
- _Node* __local_copy = _M_new_node(__cur->_M_val);
- _M_buckets[__i] = __local_copy;
-
- for (_Node* __next = __cur->_M_next;
- __next;
- __cur = __next, __next = __cur->_M_next) {
- __local_copy->_M_next = _M_new_node(__next->_M_val);
- __local_copy = __local_copy->_M_next;
- }
- }
- }
- _M_num_elements = __ht._M_num_elements;
- }
- catch(...)
- {
- clear();
- __throw_exception_again;
- }
-}
-
-} // namespace __gnu_cxx
-
-#endif /* __SGI_STL_INTERNAL_HASHTABLE_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/include/ext/stl_rope.h b/contrib/libstdc++/include/ext/stl_rope.h
deleted file mode 100644
index eae2613..0000000
--- a/contrib/libstdc++/include/ext/stl_rope.h
+++ /dev/null
@@ -1,2503 +0,0 @@
-// SGI's rope implementation -*- C++ -*-
-
-// Copyright (C) 2001, 2002 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-/*
- * Copyright (c) 1997-1998
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/** @file ext/stl_rope.h
- * This file is a GNU extension to the Standard C++ Library (possibly
- * containing extensions from the HP/SGI STL subset). You should only
- * include this header if you are using GCC 3 or later.
- */
-
-// rope<_CharT,_Alloc> is a sequence of _CharT.
-// Ropes appear to be mutable, but update operations
-// really copy enough of the data structure to leave the original
-// valid. Thus ropes can be logically copied by just copying
-// a pointer value.
-
-#ifndef __SGI_STL_INTERNAL_ROPE_H
-# define __SGI_STL_INTERNAL_ROPE_H
-
-# ifdef __GC
-# define __GC_CONST const
-# else
-# include <bits/stl_threads.h>
-# define __GC_CONST // constant except for deallocation
-# endif
-
-#include <ext/memory> // For uninitialized_copy_n
-
-namespace __gnu_cxx
-{
-using std::size_t;
-using std::ptrdiff_t;
-using std::allocator;
-using std::iterator;
-using std::reverse_iterator;
-using std::_Alloc_traits;
-using std::_Destroy;
-using std::_Refcount_Base;
-
-// The _S_eos function is used for those functions that
-// convert to/from C-like strings to detect the end of the string.
-
-// The end-of-C-string character.
-// This is what the draft standard says it should be.
-template <class _CharT>
-inline _CharT _S_eos(_CharT*) { return _CharT(); }
-
-// Test for basic character types.
-// For basic character types leaves having a trailing eos.
-template <class _CharT>
-inline bool _S_is_basic_char_type(_CharT*) { return false; }
-template <class _CharT>
-inline bool _S_is_one_byte_char_type(_CharT*) { return false; }
-
-inline bool _S_is_basic_char_type(char*) { return true; }
-inline bool _S_is_one_byte_char_type(char*) { return true; }
-inline bool _S_is_basic_char_type(wchar_t*) { return true; }
-
-// Store an eos iff _CharT is a basic character type.
-// Do not reference _S_eos if it isn't.
-template <class _CharT>
-inline void _S_cond_store_eos(_CharT&) {}
-
-inline void _S_cond_store_eos(char& __c) { __c = 0; }
-inline void _S_cond_store_eos(wchar_t& __c) { __c = 0; }
-
-// char_producers are logically functions that generate a section of
-// a string. These can be convereted to ropes. The resulting rope
-// invokes the char_producer on demand. This allows, for example,
-// files to be viewed as ropes without reading the entire file.
-template <class _CharT>
-class char_producer {
- public:
- virtual ~char_producer() {};
- virtual void operator()(size_t __start_pos, size_t __len,
- _CharT* __buffer) = 0;
- // Buffer should really be an arbitrary output iterator.
- // That way we could flatten directly into an ostream, etc.
- // This is thoroughly impossible, since iterator types don't
- // have runtime descriptions.
-};
-
-// Sequence buffers:
-//
-// Sequence must provide an append operation that appends an
-// array to the sequence. Sequence buffers are useful only if
-// appending an entire array is cheaper than appending element by element.
-// This is true for many string representations.
-// This should perhaps inherit from ostream<sequence::value_type>
-// and be implemented correspondingly, so that they can be used
-// for formatted. For the sake of portability, we don't do this yet.
-//
-// For now, sequence buffers behave as output iterators. But they also
-// behave a little like basic_ostringstream<sequence::value_type> and a
-// little like containers.
-
-template<class _Sequence, size_t _Buf_sz = 100>
-class sequence_buffer : public iterator<std::output_iterator_tag,void,void,void,void>
-{
- public:
- typedef typename _Sequence::value_type value_type;
- protected:
- _Sequence* _M_prefix;
- value_type _M_buffer[_Buf_sz];
- size_t _M_buf_count;
- public:
- void flush() {
- _M_prefix->append(_M_buffer, _M_buffer + _M_buf_count);
- _M_buf_count = 0;
- }
- ~sequence_buffer() { flush(); }
- sequence_buffer() : _M_prefix(0), _M_buf_count(0) {}
- sequence_buffer(const sequence_buffer& __x) {
- _M_prefix = __x._M_prefix;
- _M_buf_count = __x._M_buf_count;
- copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer);
- }
- sequence_buffer(sequence_buffer& __x) {
- __x.flush();
- _M_prefix = __x._M_prefix;
- _M_buf_count = 0;
- }
- sequence_buffer(_Sequence& __s) : _M_prefix(&__s), _M_buf_count(0) {}
- sequence_buffer& operator= (sequence_buffer& __x) {
- __x.flush();
- _M_prefix = __x._M_prefix;
- _M_buf_count = 0;
- return *this;
- }
- sequence_buffer& operator= (const sequence_buffer& __x) {
- _M_prefix = __x._M_prefix;
- _M_buf_count = __x._M_buf_count;
- copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer);
- return *this;
- }
- void push_back(value_type __x)
- {
- if (_M_buf_count < _Buf_sz) {
- _M_buffer[_M_buf_count] = __x;
- ++_M_buf_count;
- } else {
- flush();
- _M_buffer[0] = __x;
- _M_buf_count = 1;
- }
- }
- void append(value_type* __s, size_t __len)
- {
- if (__len + _M_buf_count <= _Buf_sz) {
- size_t __i = _M_buf_count;
- size_t __j = 0;
- for (; __j < __len; __i++, __j++) {
- _M_buffer[__i] = __s[__j];
- }
- _M_buf_count += __len;
- } else if (0 == _M_buf_count) {
- _M_prefix->append(__s, __s + __len);
- } else {
- flush();
- append(__s, __len);
- }
- }
- sequence_buffer& write(value_type* __s, size_t __len)
- {
- append(__s, __len);
- return *this;
- }
- sequence_buffer& put(value_type __x)
- {
- push_back(__x);
- return *this;
- }
- sequence_buffer& operator=(const value_type& __rhs)
- {
- push_back(__rhs);
- return *this;
- }
- sequence_buffer& operator*() { return *this; }
- sequence_buffer& operator++() { return *this; }
- sequence_buffer& operator++(int) { return *this; }
-};
-
-// The following should be treated as private, at least for now.
-template<class _CharT>
-class _Rope_char_consumer {
- public:
- // If we had member templates, these should not be virtual.
- // For now we need to use run-time parametrization where
- // compile-time would do. Hence this should all be private
- // for now.
- // The symmetry with char_producer is accidental and temporary.
- virtual ~_Rope_char_consumer() {};
- virtual bool operator()(const _CharT* __buffer, size_t __len) = 0;
-};
-
-// First a lot of forward declarations. The standard seems to require
-// much stricter "declaration before use" than many of the implementations
-// that preceded it.
-template<class _CharT, class _Alloc=allocator<_CharT> > class rope;
-template<class _CharT, class _Alloc> struct _Rope_RopeConcatenation;
-template<class _CharT, class _Alloc> struct _Rope_RopeLeaf;
-template<class _CharT, class _Alloc> struct _Rope_RopeFunction;
-template<class _CharT, class _Alloc> struct _Rope_RopeSubstring;
-template<class _CharT, class _Alloc> class _Rope_iterator;
-template<class _CharT, class _Alloc> class _Rope_const_iterator;
-template<class _CharT, class _Alloc> class _Rope_char_ref_proxy;
-template<class _CharT, class _Alloc> class _Rope_char_ptr_proxy;
-
-template<class _CharT, class _Alloc>
-bool operator== (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x,
- const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y);
-
-template<class _CharT, class _Alloc>
-_Rope_const_iterator<_CharT,_Alloc> operator-
- (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- ptrdiff_t __n);
-
-template<class _CharT, class _Alloc>
-_Rope_const_iterator<_CharT,_Alloc> operator+
- (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- ptrdiff_t __n);
-
-template<class _CharT, class _Alloc>
-_Rope_const_iterator<_CharT,_Alloc> operator+
- (ptrdiff_t __n,
- const _Rope_const_iterator<_CharT,_Alloc>& __x);
-
-template<class _CharT, class _Alloc>
-bool operator==
- (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y);
-
-template<class _CharT, class _Alloc>
-bool operator<
- (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y);
-
-template<class _CharT, class _Alloc>
-ptrdiff_t operator-
- (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y);
-
-template<class _CharT, class _Alloc>
-_Rope_iterator<_CharT,_Alloc> operator-
- (const _Rope_iterator<_CharT,_Alloc>& __x,
- ptrdiff_t __n);
-
-template<class _CharT, class _Alloc>
-_Rope_iterator<_CharT,_Alloc> operator+
- (const _Rope_iterator<_CharT,_Alloc>& __x,
- ptrdiff_t __n);
-
-template<class _CharT, class _Alloc>
-_Rope_iterator<_CharT,_Alloc> operator+
- (ptrdiff_t __n,
- const _Rope_iterator<_CharT,_Alloc>& __x);
-
-template<class _CharT, class _Alloc>
-bool operator==
- (const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y);
-
-template<class _CharT, class _Alloc>
-bool operator<
- (const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y);
-
-template<class _CharT, class _Alloc>
-ptrdiff_t operator-
- (const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y);
-
-template<class _CharT, class _Alloc>
-rope<_CharT,_Alloc> operator+ (const rope<_CharT,_Alloc>& __left,
- const rope<_CharT,_Alloc>& __right);
-
-template<class _CharT, class _Alloc>
-rope<_CharT,_Alloc> operator+ (const rope<_CharT,_Alloc>& __left,
- const _CharT* __right);
-
-template<class _CharT, class _Alloc>
-rope<_CharT,_Alloc> operator+ (const rope<_CharT,_Alloc>& __left,
- _CharT __right);
-
-// Some helpers, so we can use power on ropes.
-// See below for why this isn't local to the implementation.
-
-// This uses a nonstandard refcount convention.
-// The result has refcount 0.
-template<class _CharT, class _Alloc>
-struct _Rope_Concat_fn
- : public std::binary_function<rope<_CharT,_Alloc>, rope<_CharT,_Alloc>,
- rope<_CharT,_Alloc> > {
- rope<_CharT,_Alloc> operator() (const rope<_CharT,_Alloc>& __x,
- const rope<_CharT,_Alloc>& __y) {
- return __x + __y;
- }
-};
-
-template <class _CharT, class _Alloc>
-inline
-rope<_CharT,_Alloc>
-identity_element(_Rope_Concat_fn<_CharT, _Alloc>)
-{
- return rope<_CharT,_Alloc>();
-}
-
-
-//
-// What follows should really be local to rope. Unfortunately,
-// that doesn't work, since it makes it impossible to define generic
-// equality on rope iterators. According to the draft standard, the
-// template parameters for such an equality operator cannot be inferred
-// from the occurrence of a member class as a parameter.
-// (SGI compilers in fact allow this, but the __result wouldn't be
-// portable.)
-// Similarly, some of the static member functions are member functions
-// only to avoid polluting the global namespace, and to circumvent
-// restrictions on type inference for template functions.
-//
-
-//
-// The internal data structure for representing a rope. This is
-// private to the implementation. A rope is really just a pointer
-// to one of these.
-//
-// A few basic functions for manipulating this data structure
-// are members of _RopeRep. Most of the more complex algorithms
-// are implemented as rope members.
-//
-// Some of the static member functions of _RopeRep have identically
-// named functions in rope that simply invoke the _RopeRep versions.
-//
-// A macro to introduce various allocation and deallocation functions
-// These need to be defined differently depending on whether or not
-// we are using standard conforming allocators, and whether the allocator
-// instances have real state. Thus this macro is invoked repeatedly
-// with different definitions of __ROPE_DEFINE_ALLOC.
-// __ROPE_DEFINE_ALLOC(type,name) defines
-// type * name_allocate(size_t) and
-// void name_deallocate(tipe *, size_t)
-// Both functions may or may not be static.
-
-#define __ROPE_DEFINE_ALLOCS(__a) \
- __ROPE_DEFINE_ALLOC(_CharT,_Data) /* character data */ \
- typedef _Rope_RopeConcatenation<_CharT,__a> __C; \
- __ROPE_DEFINE_ALLOC(__C,_C) \
- typedef _Rope_RopeLeaf<_CharT,__a> __L; \
- __ROPE_DEFINE_ALLOC(__L,_L) \
- typedef _Rope_RopeFunction<_CharT,__a> __F; \
- __ROPE_DEFINE_ALLOC(__F,_F) \
- typedef _Rope_RopeSubstring<_CharT,__a> __S; \
- __ROPE_DEFINE_ALLOC(__S,_S)
-
-// Internal rope nodes potentially store a copy of the allocator
-// instance used to allocate them. This is mostly redundant.
-// But the alternative would be to pass allocator instances around
-// in some form to nearly all internal functions, since any pointer
-// assignment may result in a zero reference count and thus require
-// deallocation.
-// The _Rope_rep_base class encapsulates
-// the differences between SGI-style allocators and standard-conforming
-// allocators.
-
-#define __STATIC_IF_SGI_ALLOC /* not static */
-
-// Base class for ordinary allocators.
-template <class _CharT, class _Allocator, bool _IsStatic>
-class _Rope_rep_alloc_base {
-public:
- typedef typename _Alloc_traits<_CharT,_Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return _M_data_allocator; }
- _Rope_rep_alloc_base(size_t __size, const allocator_type& __a)
- : _M_size(__size), _M_data_allocator(__a) {}
- size_t _M_size; // This is here only to avoid wasting space
- // for an otherwise empty base class.
-
-
-protected:
- allocator_type _M_data_allocator;
-
-# define __ROPE_DEFINE_ALLOC(_Tp, __name) \
- typedef typename \
- _Alloc_traits<_Tp,_Allocator>::allocator_type __name##Allocator; \
- /*static*/ _Tp * __name##_allocate(size_t __n) \
- { return __name##Allocator(_M_data_allocator).allocate(__n); } \
- void __name##_deallocate(_Tp* __p, size_t __n) \
- { __name##Allocator(_M_data_allocator).deallocate(__p, __n); }
- __ROPE_DEFINE_ALLOCS(_Allocator);
-# undef __ROPE_DEFINE_ALLOC
-};
-
-// Specialization for allocators that have the property that we don't
-// actually have to store an allocator object.
-template <class _CharT, class _Allocator>
-class _Rope_rep_alloc_base<_CharT,_Allocator,true> {
-public:
- typedef typename _Alloc_traits<_CharT,_Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
- _Rope_rep_alloc_base(size_t __size, const allocator_type&)
- : _M_size(__size) {}
- size_t _M_size;
-
-protected:
-
-# define __ROPE_DEFINE_ALLOC(_Tp, __name) \
- typedef typename \
- _Alloc_traits<_Tp,_Allocator>::_Alloc_type __name##Alloc; \
- typedef typename \
- _Alloc_traits<_Tp,_Allocator>::allocator_type __name##Allocator; \
- static _Tp* __name##_allocate(size_t __n) \
- { return __name##Alloc::allocate(__n); } \
- void __name##_deallocate(_Tp *__p, size_t __n) \
- { __name##Alloc::deallocate(__p, __n); }
- __ROPE_DEFINE_ALLOCS(_Allocator);
-# undef __ROPE_DEFINE_ALLOC
-};
-
-template <class _CharT, class _Alloc>
-struct _Rope_rep_base
- : public _Rope_rep_alloc_base<_CharT,_Alloc,
- _Alloc_traits<_CharT,_Alloc>::_S_instanceless>
-{
- typedef _Rope_rep_alloc_base<_CharT,_Alloc,
- _Alloc_traits<_CharT,_Alloc>::_S_instanceless>
- _Base;
- typedef typename _Base::allocator_type allocator_type;
- _Rope_rep_base(size_t __size, const allocator_type& __a)
- : _Base(__size, __a) {}
-};
-
-
-template<class _CharT, class _Alloc>
-struct _Rope_RopeRep : public _Rope_rep_base<_CharT,_Alloc>
-# ifndef __GC
- , _Refcount_Base
-# endif
-{
- public:
- enum { _S_max_rope_depth = 45 };
- enum _Tag {_S_leaf, _S_concat, _S_substringfn, _S_function};
- _Tag _M_tag:8;
- bool _M_is_balanced:8;
- unsigned char _M_depth;
- __GC_CONST _CharT* _M_c_string;
- /* Flattened version of string, if needed. */
- /* typically 0. */
- /* If it's not 0, then the memory is owned */
- /* by this node. */
- /* In the case of a leaf, this may point to */
- /* the same memory as the data field. */
- typedef typename _Rope_rep_base<_CharT,_Alloc>::allocator_type
- allocator_type;
- _Rope_RopeRep(_Tag __t, int __d, bool __b, size_t __size,
- allocator_type __a)
- : _Rope_rep_base<_CharT,_Alloc>(__size, __a),
-# ifndef __GC
- _Refcount_Base(1),
-# endif
- _M_tag(__t), _M_is_balanced(__b), _M_depth(__d), _M_c_string(0)
- { }
-# ifdef __GC
- void _M_incr () {}
-# endif
- static void _S_free_string(__GC_CONST _CharT*, size_t __len,
- allocator_type __a);
-# define __STL_FREE_STRING(__s, __l, __a) _S_free_string(__s, __l, __a);
- // Deallocate data section of a leaf.
- // This shouldn't be a member function.
- // But its hard to do anything else at the
- // moment, because it's templatized w.r.t.
- // an allocator.
- // Does nothing if __GC is defined.
-# ifndef __GC
- void _M_free_c_string();
- void _M_free_tree();
- // Deallocate t. Assumes t is not 0.
- void _M_unref_nonnil()
- {
- if (0 == _M_decr()) _M_free_tree();
- }
- void _M_ref_nonnil()
- {
- _M_incr();
- }
- static void _S_unref(_Rope_RopeRep* __t)
- {
- if (0 != __t) {
- __t->_M_unref_nonnil();
- }
- }
- static void _S_ref(_Rope_RopeRep* __t)
- {
- if (0 != __t) __t->_M_incr();
- }
- static void _S_free_if_unref(_Rope_RopeRep* __t)
- {
- if (0 != __t && 0 == __t->_M_ref_count) __t->_M_free_tree();
- }
-# else /* __GC */
- void _M_unref_nonnil() {}
- void _M_ref_nonnil() {}
- static void _S_unref(_Rope_RopeRep*) {}
- static void _S_ref(_Rope_RopeRep*) {}
- static void _S_free_if_unref(_Rope_RopeRep*) {}
-# endif
-
-};
-
-template<class _CharT, class _Alloc>
-struct _Rope_RopeLeaf : public _Rope_RopeRep<_CharT,_Alloc> {
- public:
- // Apparently needed by VC++
- // The data fields of leaves are allocated with some
- // extra space, to accommodate future growth and for basic
- // character types, to hold a trailing eos character.
- enum { _S_alloc_granularity = 8 };
- static size_t _S_rounded_up_size(size_t __n) {
- size_t __size_with_eos;
-
- if (_S_is_basic_char_type((_CharT*)0)) {
- __size_with_eos = __n + 1;
- } else {
- __size_with_eos = __n;
- }
-# ifdef __GC
- return __size_with_eos;
-# else
- // Allow slop for in-place expansion.
- return (__size_with_eos + _S_alloc_granularity-1)
- &~ (_S_alloc_granularity-1);
-# endif
- }
- __GC_CONST _CharT* _M_data; /* Not necessarily 0 terminated. */
- /* The allocated size is */
- /* _S_rounded_up_size(size), except */
- /* in the GC case, in which it */
- /* doesn't matter. */
- typedef typename _Rope_rep_base<_CharT,_Alloc>::allocator_type
- allocator_type;
- _Rope_RopeLeaf(__GC_CONST _CharT* __d, size_t __size, allocator_type __a)
- : _Rope_RopeRep<_CharT,_Alloc>(_S_leaf, 0, true, __size, __a),
- _M_data(__d)
- {
- if (_S_is_basic_char_type((_CharT *)0)) {
- // already eos terminated.
- _M_c_string = __d;
- }
- }
- // The constructor assumes that d has been allocated with
- // the proper allocator and the properly padded size.
- // In contrast, the destructor deallocates the data:
-# ifndef __GC
- ~_Rope_RopeLeaf() {
- if (_M_data != _M_c_string) {
- _M_free_c_string();
- }
- __STL_FREE_STRING(_M_data, _M_size, get_allocator());
- }
-# endif
-};
-
-template<class _CharT, class _Alloc>
-struct _Rope_RopeConcatenation : public _Rope_RopeRep<_CharT,_Alloc> {
- public:
- _Rope_RopeRep<_CharT,_Alloc>* _M_left;
- _Rope_RopeRep<_CharT,_Alloc>* _M_right;
- typedef typename _Rope_rep_base<_CharT,_Alloc>::allocator_type
- allocator_type;
- _Rope_RopeConcatenation(_Rope_RopeRep<_CharT,_Alloc>* __l,
- _Rope_RopeRep<_CharT,_Alloc>* __r,
- allocator_type __a)
-
- : _Rope_RopeRep<_CharT,_Alloc>(_S_concat,
- std::max(__l->_M_depth, __r->_M_depth) + 1,
- false,
- __l->_M_size + __r->_M_size, __a),
- _M_left(__l), _M_right(__r)
- {}
-# ifndef __GC
- ~_Rope_RopeConcatenation() {
- _M_free_c_string();
- _M_left->_M_unref_nonnil();
- _M_right->_M_unref_nonnil();
- }
-# endif
-};
-
-template<class _CharT, class _Alloc>
-struct _Rope_RopeFunction : public _Rope_RopeRep<_CharT,_Alloc> {
- public:
- char_producer<_CharT>* _M_fn;
-# ifndef __GC
- bool _M_delete_when_done; // Char_producer is owned by the
- // rope and should be explicitly
- // deleted when the rope becomes
- // inaccessible.
-# else
- // In the GC case, we either register the rope for
- // finalization, or not. Thus the field is unnecessary;
- // the information is stored in the collector data structures.
- // We do need a finalization procedure to be invoked by the
- // collector.
- static void _S_fn_finalization_proc(void * __tree, void *) {
- delete ((_Rope_RopeFunction *)__tree) -> _M_fn;
- }
-# endif
- typedef typename _Rope_rep_base<_CharT,_Alloc>::allocator_type
- allocator_type;
- _Rope_RopeFunction(char_producer<_CharT>* __f, size_t __size,
- bool __d, allocator_type __a)
- : _Rope_RopeRep<_CharT,_Alloc>(_S_function, 0, true, __size, __a)
- , _M_fn(__f)
-# ifndef __GC
- , _M_delete_when_done(__d)
-# endif
- {
-# ifdef __GC
- if (__d) {
- GC_REGISTER_FINALIZER(
- this, _Rope_RopeFunction::_S_fn_finalization_proc, 0, 0, 0);
- }
-# endif
- }
-# ifndef __GC
- ~_Rope_RopeFunction() {
- _M_free_c_string();
- if (_M_delete_when_done) {
- delete _M_fn;
- }
- }
-# endif
-};
-// Substring results are usually represented using just
-// concatenation nodes. But in the case of very long flat ropes
-// or ropes with a functional representation that isn't practical.
-// In that case, we represent the __result as a special case of
-// RopeFunction, whose char_producer points back to the rope itself.
-// In all cases except repeated substring operations and
-// deallocation, we treat the __result as a RopeFunction.
-template<class _CharT, class _Alloc>
-struct _Rope_RopeSubstring : public _Rope_RopeFunction<_CharT,_Alloc>,
- public char_producer<_CharT> {
- public:
- // XXX this whole class should be rewritten.
- _Rope_RopeRep<_CharT,_Alloc>* _M_base; // not 0
- size_t _M_start;
- virtual void operator()(size_t __start_pos, size_t __req_len,
- _CharT* __buffer) {
- switch(_M_base->_M_tag) {
- case _S_function:
- case _S_substringfn:
- {
- char_producer<_CharT>* __fn =
- ((_Rope_RopeFunction<_CharT,_Alloc>*)_M_base)->_M_fn;
- (*__fn)(__start_pos + _M_start, __req_len, __buffer);
- }
- break;
- case _S_leaf:
- {
- __GC_CONST _CharT* __s =
- ((_Rope_RopeLeaf<_CharT,_Alloc>*)_M_base)->_M_data;
- uninitialized_copy_n(__s + __start_pos + _M_start, __req_len,
- __buffer);
- }
- break;
- default:
- break;
- }
- }
- typedef typename _Rope_rep_base<_CharT,_Alloc>::allocator_type
- allocator_type;
- _Rope_RopeSubstring(_Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
- size_t __l, allocator_type __a)
- : _Rope_RopeFunction<_CharT,_Alloc>(this, __l, false, __a),
- char_producer<_CharT>(),
- _M_base(__b),
- _M_start(__s)
- {
-# ifndef __GC
- _M_base->_M_ref_nonnil();
-# endif
- _M_tag = _S_substringfn;
- }
- virtual ~_Rope_RopeSubstring()
- {
-# ifndef __GC
- _M_base->_M_unref_nonnil();
- // _M_free_c_string(); -- done by parent class
-# endif
- }
-};
-
-
-// Self-destructing pointers to Rope_rep.
-// These are not conventional smart pointers. Their
-// only purpose in life is to ensure that unref is called
-// on the pointer either at normal exit or if an exception
-// is raised. It is the caller's responsibility to
-// adjust reference counts when these pointers are initialized
-// or assigned to. (This convention significantly reduces
-// the number of potentially expensive reference count
-// updates.)
-#ifndef __GC
- template<class _CharT, class _Alloc>
- struct _Rope_self_destruct_ptr {
- _Rope_RopeRep<_CharT,_Alloc>* _M_ptr;
- ~_Rope_self_destruct_ptr()
- { _Rope_RopeRep<_CharT,_Alloc>::_S_unref(_M_ptr); }
-#ifdef __EXCEPTIONS
- _Rope_self_destruct_ptr() : _M_ptr(0) {};
-#else
- _Rope_self_destruct_ptr() {};
-#endif
- _Rope_self_destruct_ptr(_Rope_RopeRep<_CharT,_Alloc>* __p) : _M_ptr(__p) {}
- _Rope_RopeRep<_CharT,_Alloc>& operator*() { return *_M_ptr; }
- _Rope_RopeRep<_CharT,_Alloc>* operator->() { return _M_ptr; }
- operator _Rope_RopeRep<_CharT,_Alloc>*() { return _M_ptr; }
- _Rope_self_destruct_ptr& operator= (_Rope_RopeRep<_CharT,_Alloc>* __x)
- { _M_ptr = __x; return *this; }
- };
-#endif
-
-// Dereferencing a nonconst iterator has to return something
-// that behaves almost like a reference. It's not possible to
-// return an actual reference since assignment requires extra
-// work. And we would get into the same problems as with the
-// CD2 version of basic_string.
-template<class _CharT, class _Alloc>
-class _Rope_char_ref_proxy {
- friend class rope<_CharT,_Alloc>;
- friend class _Rope_iterator<_CharT,_Alloc>;
- friend class _Rope_char_ptr_proxy<_CharT,_Alloc>;
-# ifdef __GC
- typedef _Rope_RopeRep<_CharT,_Alloc>* _Self_destruct_ptr;
-# else
- typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr;
-# endif
- typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
- typedef rope<_CharT,_Alloc> _My_rope;
- size_t _M_pos;
- _CharT _M_current;
- bool _M_current_valid;
- _My_rope* _M_root; // The whole rope.
- public:
- _Rope_char_ref_proxy(_My_rope* __r, size_t __p)
- : _M_pos(__p), _M_current_valid(false), _M_root(__r) {}
- _Rope_char_ref_proxy(const _Rope_char_ref_proxy& __x)
- : _M_pos(__x._M_pos), _M_current_valid(false), _M_root(__x._M_root) {}
- // Don't preserve cache if the reference can outlive the
- // expression. We claim that's not possible without calling
- // a copy constructor or generating reference to a proxy
- // reference. We declare the latter to have undefined semantics.
- _Rope_char_ref_proxy(_My_rope* __r, size_t __p, _CharT __c)
- : _M_pos(__p), _M_current(__c), _M_current_valid(true), _M_root(__r) {}
- inline operator _CharT () const;
- _Rope_char_ref_proxy& operator= (_CharT __c);
- _Rope_char_ptr_proxy<_CharT,_Alloc> operator& () const;
- _Rope_char_ref_proxy& operator= (const _Rope_char_ref_proxy& __c) {
- return operator=((_CharT)__c);
- }
-};
-
-template<class _CharT, class __Alloc>
-inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a,
- _Rope_char_ref_proxy <_CharT, __Alloc > __b) {
- _CharT __tmp = __a;
- __a = __b;
- __b = __tmp;
-}
-
-template<class _CharT, class _Alloc>
-class _Rope_char_ptr_proxy {
- // XXX this class should be rewritten.
- friend class _Rope_char_ref_proxy<_CharT,_Alloc>;
- size_t _M_pos;
- rope<_CharT,_Alloc>* _M_root; // The whole rope.
- public:
- _Rope_char_ptr_proxy(const _Rope_char_ref_proxy<_CharT,_Alloc>& __x)
- : _M_pos(__x._M_pos), _M_root(__x._M_root) {}
- _Rope_char_ptr_proxy(const _Rope_char_ptr_proxy& __x)
- : _M_pos(__x._M_pos), _M_root(__x._M_root) {}
- _Rope_char_ptr_proxy() {}
- _Rope_char_ptr_proxy(_CharT* __x) : _M_root(0), _M_pos(0) {
- }
- _Rope_char_ptr_proxy&
- operator= (const _Rope_char_ptr_proxy& __x) {
- _M_pos = __x._M_pos;
- _M_root = __x._M_root;
- return *this;
- }
- template<class _CharT2, class _Alloc2>
- friend bool operator== (const _Rope_char_ptr_proxy<_CharT2,_Alloc2>& __x,
- const _Rope_char_ptr_proxy<_CharT2,_Alloc2>& __y);
- _Rope_char_ref_proxy<_CharT,_Alloc> operator*() const {
- return _Rope_char_ref_proxy<_CharT,_Alloc>(_M_root, _M_pos);
- }
-};
-
-
-// Rope iterators:
-// Unlike in the C version, we cache only part of the stack
-// for rope iterators, since they must be efficiently copyable.
-// When we run out of cache, we have to reconstruct the iterator
-// value.
-// Pointers from iterators are not included in reference counts.
-// Iterators are assumed to be thread private. Ropes can
-// be shared.
-
-template<class _CharT, class _Alloc>
-class _Rope_iterator_base
- : public iterator<std::random_access_iterator_tag, _CharT>
-{
- friend class rope<_CharT,_Alloc>;
- public:
- typedef _Alloc _allocator_type; // used in _Rope_rotate, VC++ workaround
- typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
- // Borland doesn't want this to be protected.
- protected:
- enum { _S_path_cache_len = 4 }; // Must be <= 9.
- enum { _S_iterator_buf_len = 15 };
- size_t _M_current_pos;
- _RopeRep* _M_root; // The whole rope.
- size_t _M_leaf_pos; // Starting position for current leaf
- __GC_CONST _CharT* _M_buf_start;
- // Buffer possibly
- // containing current char.
- __GC_CONST _CharT* _M_buf_ptr;
- // Pointer to current char in buffer.
- // != 0 ==> buffer valid.
- __GC_CONST _CharT* _M_buf_end;
- // One past __last valid char in buffer.
- // What follows is the path cache. We go out of our
- // way to make this compact.
- // Path_end contains the bottom section of the path from
- // the root to the current leaf.
- const _RopeRep* _M_path_end[_S_path_cache_len];
- int _M_leaf_index; // Last valid __pos in path_end;
- // _M_path_end[0] ... _M_path_end[leaf_index-1]
- // point to concatenation nodes.
- unsigned char _M_path_directions;
- // (path_directions >> __i) & 1 is 1
- // iff we got from _M_path_end[leaf_index - __i - 1]
- // to _M_path_end[leaf_index - __i] by going to the
- // __right. Assumes path_cache_len <= 9.
- _CharT _M_tmp_buf[_S_iterator_buf_len];
- // Short buffer for surrounding chars.
- // This is useful primarily for
- // RopeFunctions. We put the buffer
- // here to avoid locking in the
- // multithreaded case.
- // The cached path is generally assumed to be valid
- // only if the buffer is valid.
- static void _S_setbuf(_Rope_iterator_base& __x);
- // Set buffer contents given
- // path cache.
- static void _S_setcache(_Rope_iterator_base& __x);
- // Set buffer contents and
- // path cache.
- static void _S_setcache_for_incr(_Rope_iterator_base& __x);
- // As above, but assumes path
- // cache is valid for previous posn.
- _Rope_iterator_base() {}
- _Rope_iterator_base(_RopeRep* __root, size_t __pos)
- : _M_current_pos(__pos), _M_root(__root), _M_buf_ptr(0) {}
- void _M_incr(size_t __n);
- void _M_decr(size_t __n);
- public:
- size_t index() const { return _M_current_pos; }
- _Rope_iterator_base(const _Rope_iterator_base& __x) {
- if (0 != __x._M_buf_ptr) {
- *this = __x;
- } else {
- _M_current_pos = __x._M_current_pos;
- _M_root = __x._M_root;
- _M_buf_ptr = 0;
- }
- }
-};
-
-template<class _CharT, class _Alloc> class _Rope_iterator;
-
-template<class _CharT, class _Alloc>
-class _Rope_const_iterator : public _Rope_iterator_base<_CharT,_Alloc> {
- friend class rope<_CharT,_Alloc>;
- protected:
- typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
- // The one from the base class may not be directly visible.
- _Rope_const_iterator(const _RopeRep* __root, size_t __pos):
- _Rope_iterator_base<_CharT,_Alloc>(
- const_cast<_RopeRep*>(__root), __pos)
- // Only nonconst iterators modify root ref count
- {}
- public:
- typedef _CharT reference; // Really a value. Returning a reference
- // Would be a mess, since it would have
- // to be included in refcount.
- typedef const _CharT* pointer;
-
- public:
- _Rope_const_iterator() {};
- _Rope_const_iterator(const _Rope_const_iterator& __x) :
- _Rope_iterator_base<_CharT,_Alloc>(__x) { }
- _Rope_const_iterator(const _Rope_iterator<_CharT,_Alloc>& __x);
- _Rope_const_iterator(const rope<_CharT,_Alloc>& __r, size_t __pos) :
- _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr, __pos) {}
- _Rope_const_iterator& operator= (const _Rope_const_iterator& __x) {
- if (0 != __x._M_buf_ptr) {
- *(static_cast<_Rope_iterator_base<_CharT,_Alloc>*>(this)) = __x;
- } else {
- _M_current_pos = __x._M_current_pos;
- _M_root = __x._M_root;
- _M_buf_ptr = 0;
- }
- return(*this);
- }
- reference operator*() {
- if (0 == _M_buf_ptr) _S_setcache(*this);
- return *_M_buf_ptr;
- }
- _Rope_const_iterator& operator++() {
- __GC_CONST _CharT* __next;
- if (0 != _M_buf_ptr && (__next = _M_buf_ptr + 1) < _M_buf_end) {
- _M_buf_ptr = __next;
- ++_M_current_pos;
- } else {
- _M_incr(1);
- }
- return *this;
- }
- _Rope_const_iterator& operator+=(ptrdiff_t __n) {
- if (__n >= 0) {
- _M_incr(__n);
- } else {
- _M_decr(-__n);
- }
- return *this;
- }
- _Rope_const_iterator& operator--() {
- _M_decr(1);
- return *this;
- }
- _Rope_const_iterator& operator-=(ptrdiff_t __n) {
- if (__n >= 0) {
- _M_decr(__n);
- } else {
- _M_incr(-__n);
- }
- return *this;
- }
- _Rope_const_iterator operator++(int) {
- size_t __old_pos = _M_current_pos;
- _M_incr(1);
- return _Rope_const_iterator<_CharT,_Alloc>(_M_root, __old_pos);
- // This makes a subsequent dereference expensive.
- // Perhaps we should instead copy the iterator
- // if it has a valid cache?
- }
- _Rope_const_iterator operator--(int) {
- size_t __old_pos = _M_current_pos;
- _M_decr(1);
- return _Rope_const_iterator<_CharT,_Alloc>(_M_root, __old_pos);
- }
- template<class _CharT2, class _Alloc2>
- friend _Rope_const_iterator<_CharT2,_Alloc2> operator-
- (const _Rope_const_iterator<_CharT2,_Alloc2>& __x,
- ptrdiff_t __n);
- template<class _CharT2, class _Alloc2>
- friend _Rope_const_iterator<_CharT2,_Alloc2> operator+
- (const _Rope_const_iterator<_CharT2,_Alloc2>& __x,
- ptrdiff_t __n);
- template<class _CharT2, class _Alloc2>
- friend _Rope_const_iterator<_CharT2,_Alloc2> operator+
- (ptrdiff_t __n,
- const _Rope_const_iterator<_CharT2,_Alloc2>& __x);
- reference operator[](size_t __n) {
- return rope<_CharT,_Alloc>::_S_fetch(_M_root, _M_current_pos + __n);
- }
-
- template<class _CharT2, class _Alloc2>
- friend bool operator==
- (const _Rope_const_iterator<_CharT2,_Alloc2>& __x,
- const _Rope_const_iterator<_CharT2,_Alloc2>& __y);
- template<class _CharT2, class _Alloc2>
- friend bool operator<
- (const _Rope_const_iterator<_CharT2,_Alloc2>& __x,
- const _Rope_const_iterator<_CharT2,_Alloc2>& __y);
- template<class _CharT2, class _Alloc2>
- friend ptrdiff_t operator-
- (const _Rope_const_iterator<_CharT2,_Alloc2>& __x,
- const _Rope_const_iterator<_CharT2,_Alloc2>& __y);
-};
-
-template<class _CharT, class _Alloc>
-class _Rope_iterator : public _Rope_iterator_base<_CharT,_Alloc> {
- friend class rope<_CharT,_Alloc>;
- protected:
- typedef typename _Rope_iterator_base<_CharT,_Alloc>::_RopeRep _RopeRep;
- rope<_CharT,_Alloc>* _M_root_rope;
- // root is treated as a cached version of this,
- // and is used to detect changes to the underlying
- // rope.
- // Root is included in the reference count.
- // This is necessary so that we can detect changes reliably.
- // Unfortunately, it requires careful bookkeeping for the
- // nonGC case.
- _Rope_iterator(rope<_CharT,_Alloc>* __r, size_t __pos)
- : _Rope_iterator_base<_CharT,_Alloc>(__r->_M_tree_ptr, __pos),
- _M_root_rope(__r)
- { _RopeRep::_S_ref(_M_root); if (!(__r -> empty()))_S_setcache(*this); }
-
- void _M_check();
- public:
- typedef _Rope_char_ref_proxy<_CharT,_Alloc> reference;
- typedef _Rope_char_ref_proxy<_CharT,_Alloc>* pointer;
-
- public:
- rope<_CharT,_Alloc>& container() { return *_M_root_rope; }
- _Rope_iterator() {
- _M_root = 0; // Needed for reference counting.
- };
- _Rope_iterator(const _Rope_iterator& __x) :
- _Rope_iterator_base<_CharT,_Alloc>(__x) {
- _M_root_rope = __x._M_root_rope;
- _RopeRep::_S_ref(_M_root);
- }
- _Rope_iterator(rope<_CharT,_Alloc>& __r, size_t __pos);
- ~_Rope_iterator() {
- _RopeRep::_S_unref(_M_root);
- }
- _Rope_iterator& operator= (const _Rope_iterator& __x) {
- _RopeRep* __old = _M_root;
-
- _RopeRep::_S_ref(__x._M_root);
- if (0 != __x._M_buf_ptr) {
- _M_root_rope = __x._M_root_rope;
- *(static_cast<_Rope_iterator_base<_CharT,_Alloc>*>(this)) = __x;
- } else {
- _M_current_pos = __x._M_current_pos;
- _M_root = __x._M_root;
- _M_root_rope = __x._M_root_rope;
- _M_buf_ptr = 0;
- }
- _RopeRep::_S_unref(__old);
- return(*this);
- }
- reference operator*() {
- _M_check();
- if (0 == _M_buf_ptr) {
- return _Rope_char_ref_proxy<_CharT,_Alloc>(
- _M_root_rope, _M_current_pos);
- } else {
- return _Rope_char_ref_proxy<_CharT,_Alloc>(
- _M_root_rope, _M_current_pos, *_M_buf_ptr);
- }
- }
- _Rope_iterator& operator++() {
- _M_incr(1);
- return *this;
- }
- _Rope_iterator& operator+=(ptrdiff_t __n) {
- if (__n >= 0) {
- _M_incr(__n);
- } else {
- _M_decr(-__n);
- }
- return *this;
- }
- _Rope_iterator& operator--() {
- _M_decr(1);
- return *this;
- }
- _Rope_iterator& operator-=(ptrdiff_t __n) {
- if (__n >= 0) {
- _M_decr(__n);
- } else {
- _M_incr(-__n);
- }
- return *this;
- }
- _Rope_iterator operator++(int) {
- size_t __old_pos = _M_current_pos;
- _M_incr(1);
- return _Rope_iterator<_CharT,_Alloc>(_M_root_rope, __old_pos);
- }
- _Rope_iterator operator--(int) {
- size_t __old_pos = _M_current_pos;
- _M_decr(1);
- return _Rope_iterator<_CharT,_Alloc>(_M_root_rope, __old_pos);
- }
- reference operator[](ptrdiff_t __n) {
- return _Rope_char_ref_proxy<_CharT,_Alloc>(
- _M_root_rope, _M_current_pos + __n);
- }
-
- template<class _CharT2, class _Alloc2>
- friend bool operator==
- (const _Rope_iterator<_CharT2,_Alloc2>& __x,
- const _Rope_iterator<_CharT2,_Alloc2>& __y);
- template<class _CharT2, class _Alloc2>
- friend bool operator<
- (const _Rope_iterator<_CharT2,_Alloc2>& __x,
- const _Rope_iterator<_CharT2,_Alloc2>& __y);
- template<class _CharT2, class _Alloc2>
- friend ptrdiff_t operator-
- (const _Rope_iterator<_CharT2,_Alloc2>& __x,
- const _Rope_iterator<_CharT2,_Alloc2>& __y);
- template<class _CharT2, class _Alloc2>
- friend _Rope_iterator<_CharT2,_Alloc2> operator-
- (const _Rope_iterator<_CharT2,_Alloc2>& __x,
- ptrdiff_t __n);
- template<class _CharT2, class _Alloc2>
- friend _Rope_iterator<_CharT2,_Alloc2> operator+
- (const _Rope_iterator<_CharT2,_Alloc2>& __x,
- ptrdiff_t __n);
- template<class _CharT2, class _Alloc2>
- friend _Rope_iterator<_CharT2,_Alloc2> operator+
- (ptrdiff_t __n,
- const _Rope_iterator<_CharT2,_Alloc2>& __x);
-};
-
-// The rope base class encapsulates
-// the differences between SGI-style allocators and standard-conforming
-// allocators.
-
-// Base class for ordinary allocators.
-template <class _CharT, class _Allocator, bool _IsStatic>
-class _Rope_alloc_base {
-public:
- typedef _Rope_RopeRep<_CharT,_Allocator> _RopeRep;
- typedef typename _Alloc_traits<_CharT,_Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return _M_data_allocator; }
- _Rope_alloc_base(_RopeRep *__t, const allocator_type& __a)
- : _M_tree_ptr(__t), _M_data_allocator(__a) {}
- _Rope_alloc_base(const allocator_type& __a)
- : _M_data_allocator(__a) {}
-
-protected:
- // The only data members of a rope:
- allocator_type _M_data_allocator;
- _RopeRep* _M_tree_ptr;
-
-# define __ROPE_DEFINE_ALLOC(_Tp, __name) \
- typedef typename \
- _Alloc_traits<_Tp,_Allocator>::allocator_type __name##Allocator; \
- _Tp* __name##_allocate(size_t __n) const \
- { return __name##Allocator(_M_data_allocator).allocate(__n); } \
- void __name##_deallocate(_Tp *__p, size_t __n) const \
- { __name##Allocator(_M_data_allocator).deallocate(__p, __n); }
- __ROPE_DEFINE_ALLOCS(_Allocator)
-# undef __ROPE_DEFINE_ALLOC
-};
-
-// Specialization for allocators that have the property that we don't
-// actually have to store an allocator object.
-template <class _CharT, class _Allocator>
-class _Rope_alloc_base<_CharT,_Allocator,true> {
-public:
- typedef _Rope_RopeRep<_CharT,_Allocator> _RopeRep;
- typedef typename _Alloc_traits<_CharT,_Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
- _Rope_alloc_base(_RopeRep *__t, const allocator_type&)
- : _M_tree_ptr(__t) {}
- _Rope_alloc_base(const allocator_type&) {}
-
-protected:
- // The only data member of a rope:
- _RopeRep *_M_tree_ptr;
-
-# define __ROPE_DEFINE_ALLOC(_Tp, __name) \
- typedef typename \
- _Alloc_traits<_Tp,_Allocator>::_Alloc_type __name##Alloc; \
- typedef typename \
- _Alloc_traits<_Tp,_Allocator>::allocator_type __name##Allocator; \
- static _Tp* __name##_allocate(size_t __n) \
- { return __name##Alloc::allocate(__n); } \
- static void __name##_deallocate(_Tp *__p, size_t __n) \
- { __name##Alloc::deallocate(__p, __n); }
- __ROPE_DEFINE_ALLOCS(_Allocator)
-# undef __ROPE_DEFINE_ALLOC
-};
-
-template <class _CharT, class _Alloc>
-struct _Rope_base
- : public _Rope_alloc_base<_CharT,_Alloc,
- _Alloc_traits<_CharT,_Alloc>::_S_instanceless>
-{
- typedef _Rope_alloc_base<_CharT,_Alloc,
- _Alloc_traits<_CharT,_Alloc>::_S_instanceless>
- _Base;
- typedef typename _Base::allocator_type allocator_type;
- typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
- // The one in _Base may not be visible due to template rules.
- _Rope_base(_RopeRep* __t, const allocator_type& __a) : _Base(__t, __a) {}
- _Rope_base(const allocator_type& __a) : _Base(__a) {}
-};
-
-
-/**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
-*/
-template <class _CharT, class _Alloc>
-class rope : public _Rope_base<_CharT,_Alloc> {
- public:
- typedef _CharT value_type;
- typedef ptrdiff_t difference_type;
- typedef size_t size_type;
- typedef _CharT const_reference;
- typedef const _CharT* const_pointer;
- typedef _Rope_iterator<_CharT,_Alloc> iterator;
- typedef _Rope_const_iterator<_CharT,_Alloc> const_iterator;
- typedef _Rope_char_ref_proxy<_CharT,_Alloc> reference;
- typedef _Rope_char_ptr_proxy<_CharT,_Alloc> pointer;
-
- friend class _Rope_iterator<_CharT,_Alloc>;
- friend class _Rope_const_iterator<_CharT,_Alloc>;
- friend struct _Rope_RopeRep<_CharT,_Alloc>;
- friend class _Rope_iterator_base<_CharT,_Alloc>;
- friend class _Rope_char_ptr_proxy<_CharT,_Alloc>;
- friend class _Rope_char_ref_proxy<_CharT,_Alloc>;
- friend struct _Rope_RopeSubstring<_CharT,_Alloc>;
-
- protected:
- typedef _Rope_base<_CharT,_Alloc> _Base;
- typedef typename _Base::allocator_type allocator_type;
- using _Base::_M_tree_ptr;
- typedef __GC_CONST _CharT* _Cstrptr;
-
- static _CharT _S_empty_c_str[1];
-
- static bool _S_is0(_CharT __c) { return __c == _S_eos((_CharT*)0); }
- enum { _S_copy_max = 23 };
- // For strings shorter than _S_copy_max, we copy to
- // concatenate.
-
- typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
- typedef _Rope_RopeConcatenation<_CharT,_Alloc> _RopeConcatenation;
- typedef _Rope_RopeLeaf<_CharT,_Alloc> _RopeLeaf;
- typedef _Rope_RopeFunction<_CharT,_Alloc> _RopeFunction;
- typedef _Rope_RopeSubstring<_CharT,_Alloc> _RopeSubstring;
-
- // Retrieve a character at the indicated position.
- static _CharT _S_fetch(_RopeRep* __r, size_type __pos);
-
-# ifndef __GC
- // Obtain a pointer to the character at the indicated position.
- // The pointer can be used to change the character.
- // If such a pointer cannot be produced, as is frequently the
- // case, 0 is returned instead.
- // (Returns nonzero only if all nodes in the path have a refcount
- // of 1.)
- static _CharT* _S_fetch_ptr(_RopeRep* __r, size_type __pos);
-# endif
-
- static bool _S_apply_to_pieces(
- // should be template parameter
- _Rope_char_consumer<_CharT>& __c,
- const _RopeRep* __r,
- size_t __begin, size_t __end);
- // begin and end are assumed to be in range.
-
-# ifndef __GC
- static void _S_unref(_RopeRep* __t)
- {
- _RopeRep::_S_unref(__t);
- }
- static void _S_ref(_RopeRep* __t)
- {
- _RopeRep::_S_ref(__t);
- }
-# else /* __GC */
- static void _S_unref(_RopeRep*) {}
- static void _S_ref(_RopeRep*) {}
-# endif
-
-
-# ifdef __GC
- typedef _Rope_RopeRep<_CharT,_Alloc>* _Self_destruct_ptr;
-# else
- typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr;
-# endif
-
- // _Result is counted in refcount.
- static _RopeRep* _S_substring(_RopeRep* __base,
- size_t __start, size_t __endp1);
-
- static _RopeRep* _S_concat_char_iter(_RopeRep* __r,
- const _CharT* __iter, size_t __slen);
- // Concatenate rope and char ptr, copying __s.
- // Should really take an arbitrary iterator.
- // Result is counted in refcount.
- static _RopeRep* _S_destr_concat_char_iter(_RopeRep* __r,
- const _CharT* __iter, size_t __slen)
- // As above, but one reference to __r is about to be
- // destroyed. Thus the pieces may be recycled if all
- // relevant reference counts are 1.
-# ifdef __GC
- // We can't really do anything since refcounts are unavailable.
- { return _S_concat_char_iter(__r, __iter, __slen); }
-# else
- ;
-# endif
-
- static _RopeRep* _S_concat(_RopeRep* __left, _RopeRep* __right);
- // General concatenation on _RopeRep. _Result
- // has refcount of 1. Adjusts argument refcounts.
-
- public:
- void apply_to_pieces( size_t __begin, size_t __end,
- _Rope_char_consumer<_CharT>& __c) const {
- _S_apply_to_pieces(__c, _M_tree_ptr, __begin, __end);
- }
-
-
- protected:
-
- static size_t _S_rounded_up_size(size_t __n) {
- return _RopeLeaf::_S_rounded_up_size(__n);
- }
-
- static size_t _S_allocated_capacity(size_t __n) {
- if (_S_is_basic_char_type((_CharT*)0)) {
- return _S_rounded_up_size(__n) - 1;
- } else {
- return _S_rounded_up_size(__n);
- }
- }
-
- // Allocate and construct a RopeLeaf using the supplied allocator
- // Takes ownership of s instead of copying.
- static _RopeLeaf* _S_new_RopeLeaf(__GC_CONST _CharT *__s,
- size_t __size, allocator_type __a)
- {
- _RopeLeaf* __space = typename _Base::_LAllocator(__a).allocate(1);
- return new(__space) _RopeLeaf(__s, __size, __a);
- }
-
- static _RopeConcatenation* _S_new_RopeConcatenation(
- _RopeRep* __left, _RopeRep* __right,
- allocator_type __a)
- {
- _RopeConcatenation* __space = typename _Base::_CAllocator(__a).allocate(1);
- return new(__space) _RopeConcatenation(__left, __right, __a);
- }
-
- static _RopeFunction* _S_new_RopeFunction(char_producer<_CharT>* __f,
- size_t __size, bool __d, allocator_type __a)
- {
- _RopeFunction* __space = typename _Base::_FAllocator(__a).allocate(1);
- return new(__space) _RopeFunction(__f, __size, __d, __a);
- }
-
- static _RopeSubstring* _S_new_RopeSubstring(
- _Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
- size_t __l, allocator_type __a)
- {
- _RopeSubstring* __space = typename _Base::_SAllocator(__a).allocate(1);
- return new(__space) _RopeSubstring(__b, __s, __l, __a);
- }
-
- static
- _RopeLeaf* _S_RopeLeaf_from_unowned_char_ptr(const _CharT *__s,
- size_t __size, allocator_type __a)
-# define __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __size, __a) \
- _S_RopeLeaf_from_unowned_char_ptr(__s, __size, __a)
- {
- if (0 == __size) return 0;
- _CharT* __buf = __a.allocate(_S_rounded_up_size(__size));
-
- uninitialized_copy_n(__s, __size, __buf);
- _S_cond_store_eos(__buf[__size]);
- try {
- return _S_new_RopeLeaf(__buf, __size, __a);
- }
- catch(...)
- {
- _RopeRep::__STL_FREE_STRING(__buf, __size, __a);
- __throw_exception_again;
- }
- }
-
-
- // Concatenation of nonempty strings.
- // Always builds a concatenation node.
- // Rebalances if the result is too deep.
- // Result has refcount 1.
- // Does not increment left and right ref counts even though
- // they are referenced.
- static _RopeRep*
- _S_tree_concat(_RopeRep* __left, _RopeRep* __right);
-
- // Concatenation helper functions
- static _RopeLeaf*
- _S_leaf_concat_char_iter(_RopeLeaf* __r,
- const _CharT* __iter, size_t __slen);
- // Concatenate by copying leaf.
- // should take an arbitrary iterator
- // result has refcount 1.
-# ifndef __GC
- static _RopeLeaf* _S_destr_leaf_concat_char_iter
- (_RopeLeaf* __r, const _CharT* __iter, size_t __slen);
- // A version that potentially clobbers __r if __r->_M_ref_count == 1.
-# endif
-
- private:
-
- static size_t _S_char_ptr_len(const _CharT* __s);
- // slightly generalized strlen
-
- rope(_RopeRep* __t, const allocator_type& __a = allocator_type())
- : _Base(__t,__a) { }
-
-
- // Copy __r to the _CharT buffer.
- // Returns __buffer + __r->_M_size.
- // Assumes that buffer is uninitialized.
- static _CharT* _S_flatten(_RopeRep* __r, _CharT* __buffer);
-
- // Again, with explicit starting position and length.
- // Assumes that buffer is uninitialized.
- static _CharT* _S_flatten(_RopeRep* __r,
- size_t __start, size_t __len,
- _CharT* __buffer);
-
- static const unsigned long
- _S_min_len[_RopeRep::_S_max_rope_depth + 1];
-
- static bool _S_is_balanced(_RopeRep* __r)
- { return (__r->_M_size >= _S_min_len[__r->_M_depth]); }
-
- static bool _S_is_almost_balanced(_RopeRep* __r)
- { return (__r->_M_depth == 0 ||
- __r->_M_size >= _S_min_len[__r->_M_depth - 1]); }
-
- static bool _S_is_roughly_balanced(_RopeRep* __r)
- { return (__r->_M_depth <= 1 ||
- __r->_M_size >= _S_min_len[__r->_M_depth - 2]); }
-
- // Assumes the result is not empty.
- static _RopeRep* _S_concat_and_set_balanced(_RopeRep* __left,
- _RopeRep* __right)
- {
- _RopeRep* __result = _S_concat(__left, __right);
- if (_S_is_balanced(__result)) __result->_M_is_balanced = true;
- return __result;
- }
-
- // The basic rebalancing operation. Logically copies the
- // rope. The result has refcount of 1. The client will
- // usually decrement the reference count of __r.
- // The result is within height 2 of balanced by the above
- // definition.
- static _RopeRep* _S_balance(_RopeRep* __r);
-
- // Add all unbalanced subtrees to the forest of balanceed trees.
- // Used only by balance.
- static void _S_add_to_forest(_RopeRep*__r, _RopeRep** __forest);
-
- // Add __r to forest, assuming __r is already balanced.
- static void _S_add_leaf_to_forest(_RopeRep* __r, _RopeRep** __forest);
-
- // Print to stdout, exposing structure
- static void _S_dump(_RopeRep* __r, int __indent = 0);
-
- // Return -1, 0, or 1 if __x < __y, __x == __y, or __x > __y resp.
- static int _S_compare(const _RopeRep* __x, const _RopeRep* __y);
-
- public:
- bool empty() const { return 0 == _M_tree_ptr; }
-
- // Comparison member function. This is public only for those
- // clients that need a ternary comparison. Others
- // should use the comparison operators below.
- int compare(const rope& __y) const {
- return _S_compare(_M_tree_ptr, __y._M_tree_ptr);
- }
-
- rope(const _CharT* __s, const allocator_type& __a = allocator_type())
- : _Base(__STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, _S_char_ptr_len(__s),
- __a),__a)
- { }
-
- rope(const _CharT* __s, size_t __len,
- const allocator_type& __a = allocator_type())
- : _Base(__STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __len, __a), __a)
- { }
-
- // Should perhaps be templatized with respect to the iterator type
- // and use Sequence_buffer. (It should perhaps use sequence_buffer
- // even now.)
- rope(const _CharT *__s, const _CharT *__e,
- const allocator_type& __a = allocator_type())
- : _Base(__STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __e - __s, __a), __a)
- { }
-
- rope(const const_iterator& __s, const const_iterator& __e,
- const allocator_type& __a = allocator_type())
- : _Base(_S_substring(__s._M_root, __s._M_current_pos,
- __e._M_current_pos), __a)
- { }
-
- rope(const iterator& __s, const iterator& __e,
- const allocator_type& __a = allocator_type())
- : _Base(_S_substring(__s._M_root, __s._M_current_pos,
- __e._M_current_pos), __a)
- { }
-
- rope(_CharT __c, const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- _CharT* __buf = _Data_allocate(_S_rounded_up_size(1));
-
- std::_Construct(__buf, __c);
- try {
- _M_tree_ptr = _S_new_RopeLeaf(__buf, 1, __a);
- }
- catch(...)
- {
- _RopeRep::__STL_FREE_STRING(__buf, 1, __a);
- __throw_exception_again;
- }
- }
-
- rope(size_t __n, _CharT __c,
- const allocator_type& __a = allocator_type());
-
- rope(const allocator_type& __a = allocator_type())
- : _Base(0, __a) {}
-
- // Construct a rope from a function that can compute its members
- rope(char_producer<_CharT> *__fn, size_t __len, bool __delete_fn,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- _M_tree_ptr = (0 == __len) ?
- 0 : _S_new_RopeFunction(__fn, __len, __delete_fn, __a);
- }
-
- rope(const rope& __x, const allocator_type& __a = allocator_type())
- : _Base(__x._M_tree_ptr, __a)
- {
- _S_ref(_M_tree_ptr);
- }
-
- ~rope()
- {
- _S_unref(_M_tree_ptr);
- }
-
- rope& operator=(const rope& __x)
- {
- _RopeRep* __old = _M_tree_ptr;
- _M_tree_ptr = __x._M_tree_ptr;
- _S_ref(_M_tree_ptr);
- _S_unref(__old);
- return(*this);
- }
-
- void clear()
- {
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = 0;
- }
-
- void push_back(_CharT __x)
- {
- _RopeRep* __old = _M_tree_ptr;
- _M_tree_ptr = _S_destr_concat_char_iter(_M_tree_ptr, &__x, 1);
- _S_unref(__old);
- }
-
- void pop_back()
- {
- _RopeRep* __old = _M_tree_ptr;
- _M_tree_ptr =
- _S_substring(_M_tree_ptr, 0, _M_tree_ptr->_M_size - 1);
- _S_unref(__old);
- }
-
- _CharT back() const
- {
- return _S_fetch(_M_tree_ptr, _M_tree_ptr->_M_size - 1);
- }
-
- void push_front(_CharT __x)
- {
- _RopeRep* __old = _M_tree_ptr;
- _RopeRep* __left =
- __STL_ROPE_FROM_UNOWNED_CHAR_PTR(&__x, 1, get_allocator());
- try {
- _M_tree_ptr = _S_concat(__left, _M_tree_ptr);
- _S_unref(__old);
- _S_unref(__left);
- }
- catch(...)
- {
- _S_unref(__left);
- __throw_exception_again;
- }
- }
-
- void pop_front()
- {
- _RopeRep* __old = _M_tree_ptr;
- _M_tree_ptr = _S_substring(_M_tree_ptr, 1, _M_tree_ptr->_M_size);
- _S_unref(__old);
- }
-
- _CharT front() const
- {
- return _S_fetch(_M_tree_ptr, 0);
- }
-
- void balance()
- {
- _RopeRep* __old = _M_tree_ptr;
- _M_tree_ptr = _S_balance(_M_tree_ptr);
- _S_unref(__old);
- }
-
- void copy(_CharT* __buffer) const {
- _Destroy(__buffer, __buffer + size());
- _S_flatten(_M_tree_ptr, __buffer);
- }
-
- // This is the copy function from the standard, but
- // with the arguments reordered to make it consistent with the
- // rest of the interface.
- // Note that this guaranteed not to compile if the draft standard
- // order is assumed.
- size_type copy(size_type __pos, size_type __n, _CharT* __buffer) const
- {
- size_t __size = size();
- size_t __len = (__pos + __n > __size? __size - __pos : __n);
-
- _Destroy(__buffer, __buffer + __len);
- _S_flatten(_M_tree_ptr, __pos, __len, __buffer);
- return __len;
- }
-
- // Print to stdout, exposing structure. May be useful for
- // performance debugging.
- void dump() {
- _S_dump(_M_tree_ptr);
- }
-
- // Convert to 0 terminated string in new allocated memory.
- // Embedded 0s in the input do not terminate the copy.
- const _CharT* c_str() const;
-
- // As above, but lso use the flattened representation as the
- // the new rope representation.
- const _CharT* replace_with_c_str();
-
- // Reclaim memory for the c_str generated flattened string.
- // Intentionally undocumented, since it's hard to say when this
- // is safe for multiple threads.
- void delete_c_str () {
- if (0 == _M_tree_ptr) return;
- if (_RopeRep::_S_leaf == _M_tree_ptr->_M_tag &&
- ((_RopeLeaf*)_M_tree_ptr)->_M_data ==
- _M_tree_ptr->_M_c_string) {
- // Representation shared
- return;
- }
-# ifndef __GC
- _M_tree_ptr->_M_free_c_string();
-# endif
- _M_tree_ptr->_M_c_string = 0;
- }
-
- _CharT operator[] (size_type __pos) const {
- return _S_fetch(_M_tree_ptr, __pos);
- }
-
- _CharT at(size_type __pos) const {
- // if (__pos >= size()) throw out_of_range; // XXX
- return (*this)[__pos];
- }
-
- const_iterator begin() const {
- return(const_iterator(_M_tree_ptr, 0));
- }
-
- // An easy way to get a const iterator from a non-const container.
- const_iterator const_begin() const {
- return(const_iterator(_M_tree_ptr, 0));
- }
-
- const_iterator end() const {
- return(const_iterator(_M_tree_ptr, size()));
- }
-
- const_iterator const_end() const {
- return(const_iterator(_M_tree_ptr, size()));
- }
-
- size_type size() const {
- return(0 == _M_tree_ptr? 0 : _M_tree_ptr->_M_size);
- }
-
- size_type length() const {
- return size();
- }
-
- size_type max_size() const {
- return _S_min_len[_RopeRep::_S_max_rope_depth-1] - 1;
- // Guarantees that the result can be sufficirntly
- // balanced. Longer ropes will probably still work,
- // but it's harder to make guarantees.
- }
-
- typedef reverse_iterator<const_iterator> const_reverse_iterator;
-
- const_reverse_iterator rbegin() const {
- return const_reverse_iterator(end());
- }
-
- const_reverse_iterator const_rbegin() const {
- return const_reverse_iterator(end());
- }
-
- const_reverse_iterator rend() const {
- return const_reverse_iterator(begin());
- }
-
- const_reverse_iterator const_rend() const {
- return const_reverse_iterator(begin());
- }
-
- template<class _CharT2, class _Alloc2>
- friend rope<_CharT2,_Alloc2>
- operator+ (const rope<_CharT2,_Alloc2>& __left,
- const rope<_CharT2,_Alloc2>& __right);
-
- template<class _CharT2, class _Alloc2>
- friend rope<_CharT2,_Alloc2>
- operator+ (const rope<_CharT2,_Alloc2>& __left,
- const _CharT2* __right);
-
- template<class _CharT2, class _Alloc2>
- friend rope<_CharT2,_Alloc2>
- operator+ (const rope<_CharT2,_Alloc2>& __left, _CharT2 __right);
- // The symmetric cases are intentionally omitted, since they're presumed
- // to be less common, and we don't handle them as well.
-
- // The following should really be templatized.
- // The first argument should be an input iterator or
- // forward iterator with value_type _CharT.
- rope& append(const _CharT* __iter, size_t __n) {
- _RopeRep* __result =
- _S_destr_concat_char_iter(_M_tree_ptr, __iter, __n);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- return *this;
- }
-
- rope& append(const _CharT* __c_string) {
- size_t __len = _S_char_ptr_len(__c_string);
- append(__c_string, __len);
- return(*this);
- }
-
- rope& append(const _CharT* __s, const _CharT* __e) {
- _RopeRep* __result =
- _S_destr_concat_char_iter(_M_tree_ptr, __s, __e - __s);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- return *this;
- }
-
- rope& append(const_iterator __s, const_iterator __e) {
- _Self_destruct_ptr __appendee(_S_substring(
- __s._M_root, __s._M_current_pos, __e._M_current_pos));
- _RopeRep* __result =
- _S_concat(_M_tree_ptr, (_RopeRep*)__appendee);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- return *this;
- }
-
- rope& append(_CharT __c) {
- _RopeRep* __result =
- _S_destr_concat_char_iter(_M_tree_ptr, &__c, 1);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- return *this;
- }
-
- rope& append() { return append(_CharT()); } // XXX why?
-
- rope& append(const rope& __y) {
- _RopeRep* __result = _S_concat(_M_tree_ptr, __y._M_tree_ptr);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- return *this;
- }
-
- rope& append(size_t __n, _CharT __c) {
- rope<_CharT,_Alloc> __last(__n, __c);
- return append(__last);
- }
-
- void swap(rope& __b) {
- _RopeRep* __tmp = _M_tree_ptr;
- _M_tree_ptr = __b._M_tree_ptr;
- __b._M_tree_ptr = __tmp;
- }
-
-
- protected:
- // Result is included in refcount.
- static _RopeRep* replace(_RopeRep* __old, size_t __pos1,
- size_t __pos2, _RopeRep* __r) {
- if (0 == __old) { _S_ref(__r); return __r; }
- _Self_destruct_ptr __left(
- _S_substring(__old, 0, __pos1));
- _Self_destruct_ptr __right(
- _S_substring(__old, __pos2, __old->_M_size));
- _RopeRep* __result;
-
- if (0 == __r) {
- __result = _S_concat(__left, __right);
- } else {
- _Self_destruct_ptr __left_result(_S_concat(__left, __r));
- __result = _S_concat(__left_result, __right);
- }
- return __result;
- }
-
- public:
- void insert(size_t __p, const rope& __r) {
- _RopeRep* __result =
- replace(_M_tree_ptr, __p, __p, __r._M_tree_ptr);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- }
-
- void insert(size_t __p, size_t __n, _CharT __c) {
- rope<_CharT,_Alloc> __r(__n,__c);
- insert(__p, __r);
- }
-
- void insert(size_t __p, const _CharT* __i, size_t __n) {
- _Self_destruct_ptr __left(_S_substring(_M_tree_ptr, 0, __p));
- _Self_destruct_ptr __right(_S_substring(_M_tree_ptr, __p, size()));
- _Self_destruct_ptr __left_result(
- _S_concat_char_iter(__left, __i, __n));
- // _S_ destr_concat_char_iter should be safe here.
- // But as it stands it's probably not a win, since __left
- // is likely to have additional references.
- _RopeRep* __result = _S_concat(__left_result, __right);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- }
-
- void insert(size_t __p, const _CharT* __c_string) {
- insert(__p, __c_string, _S_char_ptr_len(__c_string));
- }
-
- void insert(size_t __p, _CharT __c) {
- insert(__p, &__c, 1);
- }
-
- void insert(size_t __p) {
- _CharT __c = _CharT();
- insert(__p, &__c, 1);
- }
-
- void insert(size_t __p, const _CharT* __i, const _CharT* __j) {
- rope __r(__i, __j);
- insert(__p, __r);
- }
-
- void insert(size_t __p, const const_iterator& __i,
- const const_iterator& __j) {
- rope __r(__i, __j);
- insert(__p, __r);
- }
-
- void insert(size_t __p, const iterator& __i,
- const iterator& __j) {
- rope __r(__i, __j);
- insert(__p, __r);
- }
-
- // (position, length) versions of replace operations:
-
- void replace(size_t __p, size_t __n, const rope& __r) {
- _RopeRep* __result =
- replace(_M_tree_ptr, __p, __p + __n, __r._M_tree_ptr);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- }
-
- void replace(size_t __p, size_t __n,
- const _CharT* __i, size_t __i_len) {
- rope __r(__i, __i_len);
- replace(__p, __n, __r);
- }
-
- void replace(size_t __p, size_t __n, _CharT __c) {
- rope __r(__c);
- replace(__p, __n, __r);
- }
-
- void replace(size_t __p, size_t __n, const _CharT* __c_string) {
- rope __r(__c_string);
- replace(__p, __n, __r);
- }
-
- void replace(size_t __p, size_t __n,
- const _CharT* __i, const _CharT* __j) {
- rope __r(__i, __j);
- replace(__p, __n, __r);
- }
-
- void replace(size_t __p, size_t __n,
- const const_iterator& __i, const const_iterator& __j) {
- rope __r(__i, __j);
- replace(__p, __n, __r);
- }
-
- void replace(size_t __p, size_t __n,
- const iterator& __i, const iterator& __j) {
- rope __r(__i, __j);
- replace(__p, __n, __r);
- }
-
- // Single character variants:
- void replace(size_t __p, _CharT __c) {
- iterator __i(this, __p);
- *__i = __c;
- }
-
- void replace(size_t __p, const rope& __r) {
- replace(__p, 1, __r);
- }
-
- void replace(size_t __p, const _CharT* __i, size_t __i_len) {
- replace(__p, 1, __i, __i_len);
- }
-
- void replace(size_t __p, const _CharT* __c_string) {
- replace(__p, 1, __c_string);
- }
-
- void replace(size_t __p, const _CharT* __i, const _CharT* __j) {
- replace(__p, 1, __i, __j);
- }
-
- void replace(size_t __p, const const_iterator& __i,
- const const_iterator& __j) {
- replace(__p, 1, __i, __j);
- }
-
- void replace(size_t __p, const iterator& __i,
- const iterator& __j) {
- replace(__p, 1, __i, __j);
- }
-
- // Erase, (position, size) variant.
- void erase(size_t __p, size_t __n) {
- _RopeRep* __result = replace(_M_tree_ptr, __p, __p + __n, 0);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- }
-
- // Erase, single character
- void erase(size_t __p) {
- erase(__p, __p + 1);
- }
-
- // Insert, iterator variants.
- iterator insert(const iterator& __p, const rope& __r)
- { insert(__p.index(), __r); return __p; }
- iterator insert(const iterator& __p, size_t __n, _CharT __c)
- { insert(__p.index(), __n, __c); return __p; }
- iterator insert(const iterator& __p, _CharT __c)
- { insert(__p.index(), __c); return __p; }
- iterator insert(const iterator& __p )
- { insert(__p.index()); return __p; }
- iterator insert(const iterator& __p, const _CharT* c_string)
- { insert(__p.index(), c_string); return __p; }
- iterator insert(const iterator& __p, const _CharT* __i, size_t __n)
- { insert(__p.index(), __i, __n); return __p; }
- iterator insert(const iterator& __p, const _CharT* __i,
- const _CharT* __j)
- { insert(__p.index(), __i, __j); return __p; }
- iterator insert(const iterator& __p,
- const const_iterator& __i, const const_iterator& __j)
- { insert(__p.index(), __i, __j); return __p; }
- iterator insert(const iterator& __p,
- const iterator& __i, const iterator& __j)
- { insert(__p.index(), __i, __j); return __p; }
-
- // Replace, range variants.
- void replace(const iterator& __p, const iterator& __q,
- const rope& __r)
- { replace(__p.index(), __q.index() - __p.index(), __r); }
- void replace(const iterator& __p, const iterator& __q, _CharT __c)
- { replace(__p.index(), __q.index() - __p.index(), __c); }
- void replace(const iterator& __p, const iterator& __q,
- const _CharT* __c_string)
- { replace(__p.index(), __q.index() - __p.index(), __c_string); }
- void replace(const iterator& __p, const iterator& __q,
- const _CharT* __i, size_t __n)
- { replace(__p.index(), __q.index() - __p.index(), __i, __n); }
- void replace(const iterator& __p, const iterator& __q,
- const _CharT* __i, const _CharT* __j)
- { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
- void replace(const iterator& __p, const iterator& __q,
- const const_iterator& __i, const const_iterator& __j)
- { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
- void replace(const iterator& __p, const iterator& __q,
- const iterator& __i, const iterator& __j)
- { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
-
- // Replace, iterator variants.
- void replace(const iterator& __p, const rope& __r)
- { replace(__p.index(), __r); }
- void replace(const iterator& __p, _CharT __c)
- { replace(__p.index(), __c); }
- void replace(const iterator& __p, const _CharT* __c_string)
- { replace(__p.index(), __c_string); }
- void replace(const iterator& __p, const _CharT* __i, size_t __n)
- { replace(__p.index(), __i, __n); }
- void replace(const iterator& __p, const _CharT* __i, const _CharT* __j)
- { replace(__p.index(), __i, __j); }
- void replace(const iterator& __p, const_iterator __i,
- const_iterator __j)
- { replace(__p.index(), __i, __j); }
- void replace(const iterator& __p, iterator __i, iterator __j)
- { replace(__p.index(), __i, __j); }
-
- // Iterator and range variants of erase
- iterator erase(const iterator& __p, const iterator& __q) {
- size_t __p_index = __p.index();
- erase(__p_index, __q.index() - __p_index);
- return iterator(this, __p_index);
- }
- iterator erase(const iterator& __p) {
- size_t __p_index = __p.index();
- erase(__p_index, 1);
- return iterator(this, __p_index);
- }
-
- rope substr(size_t __start, size_t __len = 1) const {
- return rope<_CharT,_Alloc>(
- _S_substring(_M_tree_ptr, __start, __start + __len));
- }
-
- rope substr(iterator __start, iterator __end) const {
- return rope<_CharT,_Alloc>(
- _S_substring(_M_tree_ptr, __start.index(), __end.index()));
- }
-
- rope substr(iterator __start) const {
- size_t __pos = __start.index();
- return rope<_CharT,_Alloc>(
- _S_substring(_M_tree_ptr, __pos, __pos + 1));
- }
-
- rope substr(const_iterator __start, const_iterator __end) const {
- // This might eventually take advantage of the cache in the
- // iterator.
- return rope<_CharT,_Alloc>(
- _S_substring(_M_tree_ptr, __start.index(), __end.index()));
- }
-
- rope<_CharT,_Alloc> substr(const_iterator __start) {
- size_t __pos = __start.index();
- return rope<_CharT,_Alloc>(
- _S_substring(_M_tree_ptr, __pos, __pos + 1));
- }
-
- static const size_type npos;
-
- size_type find(_CharT __c, size_type __pos = 0) const;
- size_type find(const _CharT* __s, size_type __pos = 0) const {
- size_type __result_pos;
- const_iterator __result =
- std::search(const_begin() + __pos, const_end(),
- __s, __s + _S_char_ptr_len(__s));
- __result_pos = __result.index();
-# ifndef __STL_OLD_ROPE_SEMANTICS
- if (__result_pos == size()) __result_pos = npos;
-# endif
- return __result_pos;
- }
-
- iterator mutable_begin() {
- return(iterator(this, 0));
- }
-
- iterator mutable_end() {
- return(iterator(this, size()));
- }
-
- typedef reverse_iterator<iterator> reverse_iterator;
-
- reverse_iterator mutable_rbegin() {
- return reverse_iterator(mutable_end());
- }
-
- reverse_iterator mutable_rend() {
- return reverse_iterator(mutable_begin());
- }
-
- reference mutable_reference_at(size_type __pos) {
- return reference(this, __pos);
- }
-
-# ifdef __STD_STUFF
- reference operator[] (size_type __pos) {
- return _char_ref_proxy(this, __pos);
- }
-
- reference at(size_type __pos) {
- // if (__pos >= size()) throw out_of_range; // XXX
- return (*this)[__pos];
- }
-
- void resize(size_type __n, _CharT __c) {}
- void resize(size_type __n) {}
- void reserve(size_type __res_arg = 0) {}
- size_type capacity() const {
- return max_size();
- }
-
- // Stuff below this line is dangerous because it's error prone.
- // I would really like to get rid of it.
- // copy function with funny arg ordering.
- size_type copy(_CharT* __buffer, size_type __n,
- size_type __pos = 0) const {
- return copy(__pos, __n, __buffer);
- }
-
- iterator end() { return mutable_end(); }
-
- iterator begin() { return mutable_begin(); }
-
- reverse_iterator rend() { return mutable_rend(); }
-
- reverse_iterator rbegin() { return mutable_rbegin(); }
-
-# else
-
- const_iterator end() { return const_end(); }
-
- const_iterator begin() { return const_begin(); }
-
- const_reverse_iterator rend() { return const_rend(); }
-
- const_reverse_iterator rbegin() { return const_rbegin(); }
-
-# endif
-
-};
-
-template <class _CharT, class _Alloc>
-const typename rope<_CharT, _Alloc>::size_type rope<_CharT, _Alloc>::npos =
- (size_type)(-1);
-
-template <class _CharT, class _Alloc>
-inline bool operator== (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y) {
- return (__x._M_current_pos == __y._M_current_pos &&
- __x._M_root == __y._M_root);
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator< (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y) {
- return (__x._M_current_pos < __y._M_current_pos);
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator!= (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y) {
- return !(__x == __y);
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator> (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y) {
- return __y < __x;
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator<= (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y) {
- return !(__y < __x);
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator>= (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y) {
- return !(__x < __y);
-}
-
-template <class _CharT, class _Alloc>
-inline ptrdiff_t operator-(const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y) {
- return (ptrdiff_t)__x._M_current_pos - (ptrdiff_t)__y._M_current_pos;
-}
-
-template <class _CharT, class _Alloc>
-inline _Rope_const_iterator<_CharT,_Alloc>
-operator-(const _Rope_const_iterator<_CharT,_Alloc>& __x, ptrdiff_t __n) {
- return _Rope_const_iterator<_CharT,_Alloc>(
- __x._M_root, __x._M_current_pos - __n);
-}
-
-template <class _CharT, class _Alloc>
-inline _Rope_const_iterator<_CharT,_Alloc>
-operator+(const _Rope_const_iterator<_CharT,_Alloc>& __x, ptrdiff_t __n) {
- return _Rope_const_iterator<_CharT,_Alloc>(
- __x._M_root, __x._M_current_pos + __n);
-}
-
-template <class _CharT, class _Alloc>
-inline _Rope_const_iterator<_CharT,_Alloc>
-operator+(ptrdiff_t __n, const _Rope_const_iterator<_CharT,_Alloc>& __x) {
- return _Rope_const_iterator<_CharT,_Alloc>(
- __x._M_root, __x._M_current_pos + __n);
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator== (const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y) {
- return (__x._M_current_pos == __y._M_current_pos &&
- __x._M_root_rope == __y._M_root_rope);
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator< (const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y) {
- return (__x._M_current_pos < __y._M_current_pos);
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator!= (const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y) {
- return !(__x == __y);
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator> (const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y) {
- return __y < __x;
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator<= (const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y) {
- return !(__y < __x);
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator>= (const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y) {
- return !(__x < __y);
-}
-
-template <class _CharT, class _Alloc>
-inline ptrdiff_t operator-(const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y) {
- return (ptrdiff_t)__x._M_current_pos - (ptrdiff_t)__y._M_current_pos;
-}
-
-template <class _CharT, class _Alloc>
-inline _Rope_iterator<_CharT,_Alloc>
-operator-(const _Rope_iterator<_CharT,_Alloc>& __x,
- ptrdiff_t __n) {
- return _Rope_iterator<_CharT,_Alloc>(
- __x._M_root_rope, __x._M_current_pos - __n);
-}
-
-template <class _CharT, class _Alloc>
-inline _Rope_iterator<_CharT,_Alloc>
-operator+(const _Rope_iterator<_CharT,_Alloc>& __x,
- ptrdiff_t __n) {
- return _Rope_iterator<_CharT,_Alloc>(
- __x._M_root_rope, __x._M_current_pos + __n);
-}
-
-template <class _CharT, class _Alloc>
-inline _Rope_iterator<_CharT,_Alloc>
-operator+(ptrdiff_t __n, const _Rope_iterator<_CharT,_Alloc>& __x) {
- return _Rope_iterator<_CharT,_Alloc>(
- __x._M_root_rope, __x._M_current_pos + __n);
-}
-
-template <class _CharT, class _Alloc>
-inline
-rope<_CharT,_Alloc>
-operator+ (const rope<_CharT,_Alloc>& __left,
- const rope<_CharT,_Alloc>& __right)
-{
- return rope<_CharT,_Alloc>(
- rope<_CharT,_Alloc>::_S_concat(__left._M_tree_ptr, __right._M_tree_ptr));
- // Inlining this should make it possible to keep __left and
- // __right in registers.
-}
-
-template <class _CharT, class _Alloc>
-inline
-rope<_CharT,_Alloc>&
-operator+= (rope<_CharT,_Alloc>& __left,
- const rope<_CharT,_Alloc>& __right)
-{
- __left.append(__right);
- return __left;
-}
-
-template <class _CharT, class _Alloc>
-inline
-rope<_CharT,_Alloc>
-operator+ (const rope<_CharT,_Alloc>& __left,
- const _CharT* __right) {
- size_t __rlen = rope<_CharT,_Alloc>::_S_char_ptr_len(__right);
- return rope<_CharT,_Alloc>(
- rope<_CharT,_Alloc>::_S_concat_char_iter(
- __left._M_tree_ptr, __right, __rlen));
-}
-
-template <class _CharT, class _Alloc>
-inline
-rope<_CharT,_Alloc>&
-operator+= (rope<_CharT,_Alloc>& __left,
- const _CharT* __right) {
- __left.append(__right);
- return __left;
-}
-
-template <class _CharT, class _Alloc>
-inline
-rope<_CharT,_Alloc>
-operator+ (const rope<_CharT,_Alloc>& __left, _CharT __right) {
- return rope<_CharT,_Alloc>(
- rope<_CharT,_Alloc>::_S_concat_char_iter(
- __left._M_tree_ptr, &__right, 1));
-}
-
-template <class _CharT, class _Alloc>
-inline
-rope<_CharT,_Alloc>&
-operator+= (rope<_CharT,_Alloc>& __left, _CharT __right) {
- __left.append(__right);
- return __left;
-}
-
-template <class _CharT, class _Alloc>
-bool
-operator< (const rope<_CharT,_Alloc>& __left,
- const rope<_CharT,_Alloc>& __right) {
- return __left.compare(__right) < 0;
-}
-
-template <class _CharT, class _Alloc>
-bool
-operator== (const rope<_CharT,_Alloc>& __left,
- const rope<_CharT,_Alloc>& __right) {
- return __left.compare(__right) == 0;
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator== (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x,
- const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y) {
- return (__x._M_pos == __y._M_pos && __x._M_root == __y._M_root);
-}
-
-template <class _CharT, class _Alloc>
-inline bool
-operator!= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
- return !(__x == __y);
-}
-
-template <class _CharT, class _Alloc>
-inline bool
-operator> (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
- return __y < __x;
-}
-
-template <class _CharT, class _Alloc>
-inline bool
-operator<= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
- return !(__y < __x);
-}
-
-template <class _CharT, class _Alloc>
-inline bool
-operator>= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
- return !(__x < __y);
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator!= (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x,
- const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y) {
- return !(__x == __y);
-}
-
-template<class _CharT, class _Traits, class _Alloc>
-std::basic_ostream<_CharT, _Traits>& operator<<
- (std::basic_ostream<_CharT, _Traits>& __o,
- const rope<_CharT, _Alloc>& __r);
-
-typedef rope<char> crope;
-typedef rope<wchar_t> wrope;
-
-inline crope::reference __mutable_reference_at(crope& __c, size_t __i)
-{
- return __c.mutable_reference_at(__i);
-}
-
-inline wrope::reference __mutable_reference_at(wrope& __c, size_t __i)
-{
- return __c.mutable_reference_at(__i);
-}
-
-template <class _CharT, class _Alloc>
-inline void swap(rope<_CharT,_Alloc>& __x, rope<_CharT,_Alloc>& __y) {
- __x.swap(__y);
-}
-
-// Hash functions should probably be revisited later:
-template<> struct hash<crope>
-{
- size_t operator()(const crope& __str) const
- {
- size_t __size = __str.size();
-
- if (0 == __size) return 0;
- return 13*__str[0] + 5*__str[__size - 1] + __size;
- }
-};
-
-
-template<> struct hash<wrope>
-{
- size_t operator()(const wrope& __str) const
- {
- size_t __size = __str.size();
-
- if (0 == __size) return 0;
- return 13*__str[0] + 5*__str[__size - 1] + __size;
- }
-};
-
-} // namespace __gnu_cxx
-
-# include <ext/ropeimpl.h>
-
-# endif /* __SGI_STL_INTERNAL_ROPE_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/iomanip b/contrib/libstdc++/iomanip
deleted file mode 100644
index 8179485..0000000
--- a/contrib/libstdc++/iomanip
+++ /dev/null
@@ -1,7 +0,0 @@
-// -*- C++ -*- forwarding header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __IOMANIP__
-#define __IOMANIP__
-#include <iomanip.h>
-#endif
diff --git a/contrib/libstdc++/iosfwd b/contrib/libstdc++/iosfwd
deleted file mode 100644
index 8314cf7..0000000
--- a/contrib/libstdc++/iosfwd
+++ /dev/null
@@ -1,15 +0,0 @@
-// -*- C++ -*- I/O forward declaration header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __IOSFWD__
-#define __IOSFWD__
-class ios;
-class streambuf;
-class istream;
-class ostream;
-class iostream;
-class filebuf;
-class ifstream;
-class ofstream;
-class fstream;
-#endif
diff --git a/contrib/libstdc++/iostream b/contrib/libstdc++/iostream
deleted file mode 100644
index 7ecba6e..0000000
--- a/contrib/libstdc++/iostream
+++ /dev/null
@@ -1,7 +0,0 @@
-// -*- C++ -*- forwarding header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __IOSTREAM__
-#define __IOSTREAM__
-#include <iostream.h>
-#endif
diff --git a/contrib/libstdc++/libio/ChangeLog b/contrib/libstdc++/libio/ChangeLog
deleted file mode 100644
index d0055fd..0000000
--- a/contrib/libstdc++/libio/ChangeLog
+++ /dev/null
@@ -1,2802 +0,0 @@
-2002-11-19 Release Manager
-
- * GCC 3.2.1 Released.
-
-2002-11-19 Release Manager
-
- * GCC 3.2.1 Released.
-
-2002-11-18 Release Manager
-
- * GCC 3.2.1 Released.
-
-2002-08-14 Release Manager
-
- * GCC 3.2 Released.
-
-2002-07-25 Release Manager
-
- * GCC 3.1.1 Released.
-
-2002-05-14 Release Manager
-
- * GCC 3.1 Released.
-
-2002-05-14 Release Manager
-
- * GCC 3.1 Released.
-
-2001-02-03 Alexandre Oliva <aoliva@redhat.com>
- Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
-
- * Makefile.am (mkinstalldirs): Set.
-
-2001-01-28 Benjamin Kosnik <bkoz@gnu.org>
-
- * Makefile.am (LIBIO_SRCS): Remove stdio.c.
-
-2000-10-29 Benjamin Kosnik <bkoz@gnu.org>
-
- * Makefile.am (INCLUDES): Change to $(top_builddir)/include.
-
-2000-10-29 Mark Mitchell <mark@codesourcery.com>
-
- * iofopen.c (_IO_new_fopen): Don't define `_IO_wide_data wd'
- if _GLIBCPP_USE_WCHAR_T is not defined.
- * iofwide.c: Don't define codecvt functions when
- _GLIBCPP_USE_WCHAR_T is not defined.
- (_IO_fwide): Don't try to put the stream in wide mode when
- _GLIBCPP_USE_WCHAR_T is not defined.
- * libio.h (_IO_wide_data): Define it as an incomplete struct
- when _GLIBCPP_USE_WCHAR_T is not defined.
- * wfiledoalloc.c: Don't define anything when
- _GLIBCPP_USE_WCHAR_T is not defined.
- * wfileops.c: Likewise.
- * wgenops.c: Likewise.
-
- * _G_config.h (_G_USING_THUNKS): Allow overrides from
- OS-configuration files.
- * libioP.h: Test _G_USING_THUNKS with #if, rather than #ifdef.
-
-2000-10-17 Benjamin Kosnik <bkoz@gnu.org>
-
- * libioP.h: Break up extern "C" bits around includes.
- * libio.h: Only include C headers, or else _C_legacy namespaces
- will be nested.
- * libioP.h: Same here.
-
-2000-10-11 Benjamin Kosnik <bkoz@gnu.org>
-
- * Makefile.am: Add includes from GLIBCPP_EXPORT_INCLUDES.
-
-2000-10-10 Benjamin Kosnik <bkoz@gnu.org>
-
- * _G_config.h (__need_ptrdiff_t): Add.
-
-2000-10-08 Benjamin Kosnik <bkoz@gnu.org>
-
- * Makefile.am (INCLUDES): Simplify.
- * libioP.h (JUMP1): If compiling c++, use std headers.
- * _G_config.h: Same.
-
-2000-10-07 Benjamin Kosnik <bkoz@gnu.org>
-
- * Makefile.am (CONFIG_INCLUDES): Remove.
-
-2000-10-06 Benjamin Kosnik <bkoz@gnu.org>
-
- * Makefile.am (libio_la_DEPENDENCIES): Remove extaneous cruft.
- (libio_la_SOURCES): Remove.
-
-2000-10-05 Benjamin Kosnik <bkoz@gnu.org>
-
- * Makefile.am (INCLUDES): Add glibcpp_includedir.
-
-2000-10-04 Benjamin Kosnik <bkoz@gnu.org>
-
- * _G_config.h : Re-guard the __mbstate_t declaration.
-
-2000-09-27 Benjamin Kosnik <bkoz@gnu.org>
-
- * libioP.h: Remove fcntl.h include.
-
-2000-08-22 Benjamin Kosnik <bkoz@gnu.org>
-
- * iofwide.c (_IO_fwide): Simplify, as nl_langinfo is assumed.
-
-2000-08-14 Benjamin Kosnik <bkoz@gnu.org>
-
- * *: Merge with mainline glibc sources.
- * filedoalloc.c (_IO_file_doallocate): Don't call
- _IO_cleanup_registration_needed, even if not libc.
- * iofwide.c (_IO_fwide): Correct placement of defines.
- * cleanup.c: Remove.
-
-2000-08-04 benjamin kosnik <bkoz@haight.constant.com>
-
- * genops.c (_IO_unbuffer_write): Don't call _IO_SETBUF if the
- stream is not orientated.
-
-2000-08-04 Benjamin Kosnik <bkoz@gnu.org>
-
- * Makefile.am (LIBIO_SRCS): Add c_codecvt.c
-
-2000-07-12 benjamin kosnik <bkoz@gnu.org>
-
- * _G_config.h: Smoke less crack, don't define _G_HAVE_ST_BLKSIZE.
-
-2000-04-25 Benjamin Kosnik <bkoz@gnu.org>
-
- * libio.h: Change decls for seekoff/seekpos.
- * Makefile.am: Add bits to not generate _G_config.h on linux.
- * gen-params: Remove sigset_t declaration.
-
-2000-02-29 Benjamin Kosnik <bkoz@gnu.org>
-
- * Makefile.am (libio_headers): Strip out deadweight.
-
-2000-02-21 Benjamin Kosnik <bkoz@cygnus.com>
-
- * gen-params (CONFIG_NM): Specifically add in nm as the
- default CONFIG_NM.
-
-2000-02-10 Benjamin Kosnik <bkoz@gnu.org>
-
- * Makefile.am: Add bits for _G_config.h generation.
- * gen-params: New file.
-
-2000-02-07 Benjamin Kosnik <bkoz@gnu.org>
-
- * Makefile.am: Change license.
-
-1999-07-28 Benjamin Kosnik <bkoz@gnu.org>
-
- * Makefile.am (libio_la_SOURCES): Remove cleanup.c, so that
- _IO_cleanup will not be undefined.
-
-1998-11-26 Manfred Hollstein <manfred@s-direktnet.de>
-
- * configure.in (compiler_name): Add check to detect if this
- language's compiler has been built.
-
-1998-10-12 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * config.shared (depend.new): delete libc-lock.h from
- dependencies, and fix _G_config.h -> $(_G_CONFIG_H) rule
- * depend: Rebuilt.
-
-Sun Oct 11 01:51:42 1998 Jeffrey A Law (law@cygnus.com)
-
- * config.shared (depend.new): Fix typo.
- * depend: Rebuilt.
-
-1998-09-09 Manfred Hollstein <manfred@s-direktnet.de>
-
- * configure.in (INSTALLDIR): Fix comment about changing INSTALLDIR's
- value; don't change its value if --enable-version-specific-runtime-libs
- has been specified.
-
-Wed Sep 2 21:05:39 1998 H.J. Lu (hjl@gnu.org)
-
- * configure.in: Fix INSTALLDIR replacement for cross-compile.
-
-Sun Aug 30 22:27:02 1998 Lutz Wohlrab <lutz.wohlrab@informatik.tu-chemnitz.de>
-
- * dbz/Makefile.in: Avoid assumptions about "tr" behaves when
- LANG is set to something other than English.
-
-Sun Aug 30 22:17:00 1998 H.J. Lu (hjl@gnu.org)
-
- * config.shared: Set libsubdir.
-
-1998-08-25 14:34 Ulrich Drepper <drepper@cygnus.com>
-
- * libio/iogetline.c (_IO_getline_info): Don't read anything for
- N == 0. Patch by HJ Lu.
-
-1998-08-23 Mark Mitchell <mark@markmitchell.com>
-
- * iomanip.h: Use __extension__ for `extern' explicit template
- instantiations.
-
-1998-08-17 Ulrich Drepper <drepper@cygnus.com>
-
- * strfile.h: Define __PMT if not already defined.
-
-1998-08-03 Andreas Jaeger <aj@arthur.rhein-neckar.de>
-
- * libioP.h: Use __PMT in typedefs.
- * strfile.h: Likewise.
-
-1998-06-29 Ulrich Drepper <drepper@cygnus.com>
-
- * libio.h: Rewrite __PMT change so that it works with platforms
- defining __P but not __PMT.
-
- * libio.h (__PMT): New macro. Defined like __P. Use is for
- function pointers.
-
-1998-06-27 Manfred Hollstein <manfred@s-direktnet.de>
-
- * Makefile.in (install): Remove superfluous /include.
-
-1998-06-26 Manfred Hollstein <manfred@s-direktnet.de>
-
- * config.shared (FLAGS_TO_PASS): Add gcc_version_trigger.
- (Makefile): Add dependency upon $(gcc_version_trigger).
-
-1998-06-24 Manfred Hollstein <manfred@s-direktnet.de>
-
- * Makefile.in (install): Install _G_config.h depending on new flag
- --enable-version-specific-runtime-libs.
- * config/linux.mt (gxx_include_dir): Remove definition here as we use
- gcc's default anyway.
-
-1998-06-24 Manfred Hollstein <manfred@s-direktnet.de>
-
- * config.shared (FLAGS_TO_PASS): Add gcc_version.
-
-1998-06-19 Manfred Hollstein <manfred@s-direktnet.de>
-
- * config.shared (FLAGS_TO_PASS): Add libsubdir.
-
-1998-06-07 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * genops.c (__underflow): Read character from read pointer as unsigned.
- (__uflow): Likewise.
-
-1998-05-22 Ulrich Drepper <drepper@cygnus.com>
-
- * strops.c (_IO_str_underflow): Read newly available character
- from buffer as unsigned.
-
-Sun Apr 19 22:13:36 1998 H.J. Lu (hjl@gnu.org)
-
- * isgetline.cc (istream::get): Fix a typo.
-
-Thu Mar 5 09:23:28 1998 Manfred Hollstein <manfred@s-direktnet.de>
-
- * configure.in: Make locating frag files failsafe even for the
- special case if configuring and building in srcdir.
-
-1998-02-24 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- Changes for _G_IO_IO_FILE_VERSION == 0x20001:
- * libioP.h (_IO_showmanyc_t, _IO_SHOWMANYC, _IO_imbue_t,
- _IO_IMBUE): New definitions.
- (struct _IO_jump_t): Add __showmanyc and __imbue fields.
- (_IO_file_fopen): Add new fourth argument.
- * filebuf.cc (filebuf::open): Pass new fourth argument to
- _IO_file_fopen.
- * iolibio.h (_IO_freopen): Likewise.
- * streambuf.cc (streambuf::showmanyc, streambuf::imbue): New
- functions.
- * streambuf.h (_IO_wchar_t): Define to _G_wchar_t.
- (ios::fill): Remove casts.
- (struct streambuf): Add showmanyc and imbue members.
-
- * iostream.cc (ostream::operator<<(double n)) [__GLIBC_MINOR__ >=
- 1]: Initialize new fields is_char of struct printf_info.
- (ostream::operator<<(long double n)) [__GLIBC_MINOR__ >= 1]:
- Likewise.
-
-Sun Feb 22 17:24:53 1998 Jeffrey A Law (law@cygnus.com)
-
- * config.shared: Bring back changes from Ian and Fred that were
- accidentally clobbered. Should eliminate the need for Dave's
- recent change.
-
-Tue Feb 17 21:56:25 1998 H.J. Lu (hjl@gnu.org)
-
- * config/linux.mt (IO_OBJECTS): Add iogetline.o.
- * config/linuxlibc1.mt: Ditto.
-
- * iogetline.c (_IO_getline_info): Renamed from _IO_getline.
- (_IO_getline): Just call _IO_getline_info.
-
- * isgetline.cc (istream::getline, istream::get, _sb_readline):
- Call _IO_getline_info instead of _IO_getline and get the EOF
- information.
- * sbgetline.cc (streambuf::sgetline): Ditto.
-
- * libioP.h (_IO_getline_info): New declaration.
-
- * iogetline.c (_IO_getline): Handle the case when there is no
- buffer.
-
-Fri Feb 13 00:57:20 1998 Krister Walfridsson (cato@df.lth.se)
-
- * fileops.c: #include <unistd.h>.
- * ioprims.c: Likewise.
-
-1998-02-10 Mark Mitchell <mmitchell@usa.net>
-
- * iostream.cc (ostream::operator<<(long double)): Don't use
- labeled initializers.
-
-Fri Feb 6 01:35:56 1998 Manfred Hollstein <manfred@s-direktnet.de>
-
- * config.shared (FLAGS_TO_PASS): Don't emit PICFLAG.
- (.c.o): Check value of enable_shared, not PICFLAG.
- (.C.o): Dito.
- (.cc.o): Dito.
- (stamp-picdir): Dito.
-
-Thu Feb 5 17:41:26 1998 Dave Brolley <brolley@cygnus.com>
-
- * config.shared (LIBS): Change to -L../../libstdc++ (was -L../libstdc++)
- if ${DOING_GPERF} is true.
-
-1998-01-20 Andreas Schwab (schwab@issan.informatik.uni-dortmund.de)
-
- * iostream.cc (istream::operator>>(long double&))
- [!_G_HAVE_LONG_DOUBLE_IO]: Scan value into separate variable, in
- case long double is bigger than double.
- (ostream::operator<<(double)) [_G_HAVE_PRINTF_FP]: Fix order of
- initializers of struct printf_info to match declaration order,
- to work around g++ bug.
- (ostream::operator<<(long double)) [_G_HAVE_PRINTF_FP]: Likewise.
-
- * gen-params: Add missing quotes. Avoid useless use of command
- substitution.
-
-Sun Feb 1 13:29:47 1998 H.J. Lu (hjl@gnu.org)
-
- * filebuf.cc (filebuf::open): Call _IO_file_open if
- _G_HAVE_IO_FILE_OPEN is 1.
-
- * libio.h (_IO_fpos64_t, _IO_off64_t): Defined if
- _G_IO_IO_FILE_VERSION == 0x20001.
-
- * libioP.h (_IO_file_open): New declaration.
-
- * libio.h (_IO_FILE, _IO_stdin_, _IO_stdout_, _IO_stderr_,
- _IO_seekoff, _IO_seekpos): Add support for libio in glibc 2.1.
- * libioP.h (_IO_seekoff_t, _IO_seekpos_t, _IO_seek_t,
- _IO_seekoff, _IO_seekpos, _IO_default_seekoff,
- _IO_default_seekpos, _IO_default_seek, _IO_file_seekoff,
- _IO_file_seek, _IO_str_seekoff, _IO_pos_BAD, _IO_pos_as_off,
- _IO_pos_0): Ditto.
- * streambuf.h (streamoff, streampos): Ditto.
-
- * gen-params (__extension__): Use only if gcc version >= 2.8.
-
-Sun Feb 1 13:08:18 1998 Krister Walfridsson (cato@df.lth.se)
-
- * dbz/dbz.c (putconf): Handle systems which use "long long" as type
- for "off_t".
- * dbz/dbzmain.c (mkfiles): Likewise.
-
-Wed Jan 28 10:27:11 1998 Manfred Hollstein <manfred@s-direktnet.de>
-
- * config.shared (FLAGS_TO_PASS): Add gxx_include_dir.
-
- * stdio/configure.in, tests/configure.in: Update with yesterday's
- toplevel configure.in changes.
- * testsuite/configure.in: Likewise.
-
- * config.shared: Fix typo in yesterday's changes.
-
-Tue Jan 27 23:26:07 1998 Manfred Hollstein <manfred@s-direktnet.de>
-
- * config.shared: Emit everything which needs to be re-definable
- via file descriptor 1; the generic stuff is emitted using redirection
- onto fd 2.
-
- * configure.in (package_makefile_rules_frag): New variable
- which is used in the call to config.shared; redirect file descriptor 2
- to ${package_makefile_rules_frag}.
-
-Tue Jan 27 10:35:22 1998 H.J. Lu (hjl@gnu.org)
-
- * configure.in (topsrcdir): New.
- (CHECK_SUBDIRS, configdirs): Check ${topsrcdir}/gcc instead.
- (config-ml.in): Use ${topsrcdir}/config-ml.in.
-
- * tests/configure.in (topsrcdir): New.
- (CHECK): Check ${topsrcdir}/gcc instead.
-
-Fri Jan 16 00:48:03 1998 Manfred Hollstein <manfred@lts.sel.alcatel.de>
-
- * config.shared (FLAGS_TO_PASS): Add SHELL.
-
-Thu Jan 15 00:21:58 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: For *-*-cygwin32*, add a -I for winsup to both
- XCINCLUDES and XCXXINCLUDES.
- * config.shared: Use ${host_includes} when setting CXXINCLUDES in
- the DOING_LIBGXX case.
- * Makefile.in (_G_config.h): Pass $(CINCLUDES) in CC and
- $(CXXINCLUDES) in CXX when running gen-params.
-
-Tue Jan 13 21:32:08 1998 H.J. Lu (hjl@gnu.org)
-
- * configure.in (CHECK_SUBDIRS): Set to testsuite only if
- ${srcdir}/../gcc exists.
- (configdirs): Include testsuite only if ${srcdir}/../gcc exists.
-
- * tests/Makefile.in (check): Depend on $(CHECK).
-
- * tests/configure.in (CHECK): Set to "check-iostream
- check-stdio" if ${srcdir}/../../gcc doesn't exists.
-
-Thu Jan 8 18:09:03 1998 Fred Fish <fnf@cygnus.com>
-
- * config.shared (THIS_FILE): Really found via TOLIBIO instead
- of TOLIBCXX, which is empty when configuring gperf.
- (LIBS): When linking gperf, find libstdc++ relative to TO_TOPDIR
- instead of hardcoded "../".
-
-1997-12-12 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- Don't make gperf depend upon libg++.
- * config.shared (TOLIBGCXX) [DOING_GPERF]: Delete.
- (LIBS) [DOING_GPERF]: Make it just `-L../libstdc++ -lstdc++'.
-
-Thu Dec 11 11:20:59 1997 H.J. Lu (hjl@gnu.org)
-
- * configure.in (target frags): Add *-linux-gnu.
-
-Fri Dec 5 16:22:15 1997 H.J. Lu (hjl@gnu.org)
-
- * streambuf.cc (streambuf::~streambuf): Don't delete _lock
- for _IO_stdin/_IO_stdout/_IO_stderr.
-
-Thu Nov 27 01:32:43 1997 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in (install): Change gxx_includedir to gcc_include_dir.
- * config.shared (gxx_includedir): Remove default definition.
- * config/linux.mt: Change gxx_includedir to gxx_include_dir.
- * config/linuxaxp1.mt: Likewise.
-
-Wed Nov 26 16:08:50 1997 Richard Henderson (rth@cygnus.com)
-
- * configure.in (target frags): Add powerpc*-linux-gnulibc1.
- (stdio-lock): Similarly.
-
- * configure.in (target frags): Add alpha*-linux-gnulibc1.
- (pic frags): Its alpha*- not alpha-.
- (stdio-lock): Kill everything. Add alpha*-linux-gnulibc1.
- * libio.h: Check __GLIBC_MINOR__ to find stdio-lock.h. If not
- _IO_MTSAFE_IO & GLIBC, make sure the lock pointer is still there.
- * libioP.h: Check __GLIBC_MINOR__ to find libc-lock.h.
-
- * config/linuxaxp1-libc-lock.h: New file.
- * config/linuxaxp1-stdio-lock.h: New file.
- * config/linuxaxp1.mt: New file.
-
- * gen-params (va_list): Check for and use __gnuc_va_list.
- (NULL): Work around some linux kernel headers and redefine NULL.
-
-Mon Nov 24 17:04:18 1997 Michael Meissner <meissner@cygnus.com>
-
- * stdiostream.cc (sys_read): Declare ch with int type, rather than
- without a type.
-
-Tue Nov 18 09:53:58 1997 H.J. Lu (hjl@gnu.ai.mit.edu)
-
- * stdstrbufs.cc (DEF_STDFILE): Use STD_VTABLE.
-
-Tue Nov 11 01:40:17 1997 Oleg Krivosheev <kriol@fnal.gov>
-
- * iomanip.h: Fix guiding decls.
-
-1997-11-05 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * libio.h (__P): Name its arg `p' instead of `params'.
- Avoids problems with an unchanged Solaris math.h header.
-
-Wed Oct 29 23:01:47 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * gen-params: Override NULL.
-
-1997-10-27 03:53 Ulrich Drepper <drepper@cygnus.com>
-
- * stdio-lock.h: Removed. Was never needed.
-
-Wed Oct 22 19:19:32 1997 H.J. Lu (hjl@gnu.ai.mit.edu)
-
- * libio.h (_IO_LOCK_T): Handle glibc 2 when _IO_MTSAFE_IO is
- not defined.
-
- * iovsscanf.c (vsscanf): Make it weak alias of _IO_vsscanf if
- __linux__ is defined instead of __ELF__
-
- * config/linuxlibc1.mt (USER_INCLUDES): Add libio.h.
-
-1997-10-15 Ulrich Drepper <drepper@cygnus.com>
-
- * configure.in: Create compatibility code in bits/libc-lock.h file.
-
-Thu Oct 9 07:08:41 1997 H.J. Lu (hjl@gnu.ai.mit.edu)
-
- * libio.h (_IO_LOCK_T): Handle glibc 2 when _IO_MTSAFE_IO is
- not defined.
-
- * filedoalloc.c (_IO_file_doallocate): Don't call
- _IO_cleanup_registration_needed if __linux__ is defined.
-
- * iofclose.c (fclose): Make it weak alias of _IO_fclose if
- __ELF__ is defined.
-
- * iovsprintf.c (vsprintf): Make it weak alias of _IO_vsprintf
- if __ELF__ is defined.
-
- * iovsscanf.c (vsscanf): Make it weak alias of _IO_vsscanf if
- __ELF__ is defined.
-
- * config/linuxlibc1.mt (MT_CFLAGS): Defined as -D_G_HAVE_MMAP.
- (IO_OBJECTS): Add filedoalloc.o fileops.o genops.o iofclose.o
- iovsprintf.o iovsscanf.o strops.o.
-
-Fri Oct 3 10:13:13 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * iostream.cc, libio.h: Convert other uses of #ifdef
- _G_HAVE_PRINTF_FP to #if.
-
-1997-10-02 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * iostream.cc (operator<<): Use `#if _G_HAVE_PRINTF_FP', not ifdef.
-
-Thu Oct 2 10:36:49 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * gen-params: Fix __printf_fp test.
- * config/linuxlibc1.mt (gxx_includedir): Don't define.
-
-Thu Oct 2 10:36:26 1997 Ulrich Drepper <drepper@rtl.cygnus.com>
-
- * config/linuxlibc1.mt (_G_CONFIG_H): Don't define.
- * gen-params: Add test for __printf_fp.
-
-Sun Sep 28 12:09:04 1997 Mark Mitchell <mmitchell@usa.net>
-
- * iomanip.h: Use new friend <> syntax.
-
-Sun Sep 28 12:04:21 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * libio.h: Don't use _IO_LOCK_T if it's not defined.
-
-Fri Sep 26 20:56:41 1997
-
- Based on a patch by H.J. Lu (hjl@gnu.ai.mit.edu).
-
- * Makefile.in (STDIO_OBJECTS): New. Defined as stdfiles.o.
- (LIBIO_OBJECTS): Add $(STDIO_OBJECTS).
- (PICFLAG): New, empty. moved to here from config.shared.
-
- * config.shared (DISTCLEAN): Add target-mkfrag.
- (PICFLAG): Removed.
-
- * configure.in (*-linux-gnulibc1): Remove warning.
- (*-linux-gnu): Use linux.mt mtsafe.mt.
- (alpha-*-linux*): Use mh-elfalphapic.
-
- * gen-params (_G_ullong): Also check unsigned long long int.
- (_G_llong): Also check long long int.
-
- * libio.h (_IO_lock_t): Add support for the Linux libc 5.
- (_IO_peekc): Defined as _IO_peekc_unlocked if _IO_MTSAFE_IO
- is not defined.
-
- * iostream.cc (__cvt_double): Fix a typo in declaration.
- (info): Use expr != 0 to initialize the bit fields. Don't
- initialize "extra" for the Linux libc 5.
-
- * streambuf.h (_G_NEED_STDARG_H): Changed from _IO_NEED_STDARG_H.
-
- * config/linux.mt (STDIO_OBJECTS): New, empty.
- (MT_CFLAGS): Removed.
-
- * config/linuxlibc1.mt: Rewrite. it's identical to linux.mt but
- IO_OBJECTS mentions files not in early libc5 versions.
-
- * config/mtsafe.mt: New.
-
- * dbz/Makefile.in (check): Support make -j.
-
- * tests/tFile.cc (tempfile): Fix a typo.
-
-1997-09-19 11:52 Jim Wilson <wilson@cygnus.com>
-
- * Makefile.in (LIBIO_OBJECTS): Depend on _G_CONFIG_H.
-
-1997-09-17 04:08 Ulrich Drepper <drepper@cygnus.com>
-
- * iostream.cc: Add forward declaration for __cvt_double.
- * libio.h: Define _IO_USE_DTOA is _G_HAVE_PRINTF_FP is not defined.
- * strops.c (_IO_str_count): Correct last change.
-
-1997-09-17 02:50 Ulrich Drepper <drepper@cygnus.com>
-
- * libioP.h: Define __set_errno if not already defined.
-
-1997-09-15 02:37 Ulrich Drepper <drepper@cygnus.com>
-
- * config/linux.mt: Rewrite for use with glibc 2.
- * config/linuxlibc1.mt: Old content of linux.mt, fir libc4 and
- libc5.
-
- * config.shared (COMPILE.c): Allow new flags in MT_CFLAGS be
- passed.
- (COMPILE.cc): Likewise.
-
- * configure.in (*-linux*): Remove goal. We now have...
- (*-linux-gnulibc1): For libc4 and libc5. Emit warning.
- (*-linux-gnu)): For glibc 2.
- Create links to find headers for multi-threading if necessary.
-
- * fileops.c: Make thread-safe by using _IO_cleanup_region_start
- etc to handle cancelation. Acquire locks in functions which are
- called directly.
- (_IO_file_read, _IO_file_write): Remove dead code.
-
- * include/empty.h: Define stub macros for locking.
-
- * iolibio.h: Add prototypes for obstack printing functions.
-
- * ioseekoff.c (_IO_seekoff): Lock stream before working.
- * ioseekpos.c (_IO_seekpos): Likewise.
-
- * iostream.cc: Add support for long double I/O.
- Use __printf_fp from glibc is available.
- Use _IO_cleanup_region_start to handle cancelation correctly.
- * iostream.h (class ostream): Change opfx and osfx to lock/unlock
- stream
- (class istream): Likewise for ipfx, ipfx0, ipfx1, and isfx.
- Declare new function lock and unlock for ostream and istream.
- * osform.cc: Use _IO_cleanup_region_start to handle cancelation
- correctly.
-
- * libio.h: Update from glibc version. Pretty printing.
- * libioP.h: Likewise.
-
- * outfloat.c: Only compile if _IO_USE_DTOA is defined.
-
- * stdio/feof.c: Make thread safe.
- * stdio/ferror.c: Likewise.
- * stdio/getc.c : Likewise.
- * stdio/putc.c : Likewise.
- * stdio/stdio.h: Declare function of thread-safe API.
-
- * stdio/obprintf.c: New file.
- * stdio/vasprintf.c: New file.
-
- * stdio-lock.h: Removed.
-
- * stdstrbufs.c: Add definitions for thread-safe streams.
-
- * streambuf.cc: Initialize lock.
-
- * strops.c (_IO_str_count): Undo last change.
-
- * tests/tFile.cc: Support parallel builds by avoiding fixed
- name for test file.
-
-Thu Sep 11 18:43:56 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * Makefile.in (iostream.list): Remove STDIO_WRAP_OBJECTS.
-
-Mon Sep 8 01:30:27 1997 Weiwen Liu <liu@hepunix.physics.yale.edu>
-
- * libio.h: Fix typo.
-
-Sun Sep 7 23:00:18 1997 Jim Wilson (wilson@cygnus.com)
-
- * linux.mt (LIBIOSTREAM_DEP): Change stdio.list to stmp-stdio.
-
-Fri Sep 5 09:58:43 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * Makefile.in (iostream.list): Instead of adding stdio.list, add
- STDIO_WRAP_OBJECTS.
- (iostream.list): Lose dependency on stmp-stdio, not necessary for
- our stuff. The stdio stuff is present here just for uniformity
- with glibc.
-
-Thu Sep 4 17:26:22 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * parsestream.cc (general_parsebuf): Cast return of malloc to char*.
-
-1997-09-04 16:11 Ulrich Drepper <drepper@cygnus.com>
-
- Change compared to version initially intended to in:
- * strops.c (_IO_str_count): Still use _IO_write_ptr, not
- _IO_write_end, for now.
-
- * iofeof.c, ioferror.c, iofflush_u.c, iogetc.c, ioputc.c, peekc.c,
- stdio-lock.h: New files.
-
- * include: New dir.
- * include/empty.h: New header.
-
- * filedoalloc.c: Update and reformat copyright.
- Don't use DEFUN.
- Use __set_errno throughout the code to support multi-threaded
- programs.
- Correct layout to follow the Coding Standard.
- Add casts to prevent warnings.
- * fileops.c: Likewise.
- * genops.c: Likewise.
- * iofclose.c: Likewise.
- * iofdopen.c: Likewise.
- * iofflush.c: Likewise.
- * iofgetpos.c: Likewise.
- * iofgets.c: Likewise.
- * iofopen.c: Likewise.
- * iofprintf.c: Likewise.
- * iofputs.c: Likewise.
- * iofread.c: Likewise.
- * iofsetpos.c: Likewise.
- * ioftell.c: Likewise.
- * iofwrite.c: Likewise.
- * iogetdelim.c: Likewise.
- * iogetline.c: Likewise.
- * iogets.c: Likewise.
- * iopadn.c: Likewise.
- * iopopen.c: Likewise.
- * ioputs.c: Likewise.
- * ioseekoff.c: Likewise.
- * iosetbuffer.c: Likewise.
- * iosetvbuf.c: Likewise.
- * iosprintf.c: Likewise.
- * ioungetc.c: Likewise.
- * iovsprintf.c: Likewise.
- * iovsscanf.c: Likewise.
- * libio.h: Likewise.
- * libioP.h: Likewise.
- * stdfiles.c: Likewise.
- * strfile.h: Likewise.
- * strops.c: Likewise.
-
- * Makefile.in (IO_OBJECTS): Add peekc.o, iogetc.o, ioputc.o,
- iofeof.o, and ioferror.o.
- (iostream.list): Depend upon stmp-stdio. Add the entries
- from stdio.list to iostream.list.
- (stmp-stdio): New name for what was the stdio/stdio.list rule.
- All it now does is cd down into stdio and build stdio.list.
-
- * configure.in (ALL): Add libiostream.a.
-
- * libio.h [_IO_MTSFE_IO]: Include header declaring locking code.
- Otherwise define opaque _IO_lock_t.
- Define _IO_cookie_file.
- Rename _IO_getc to _IO_getc_unlocked, _IO_peekc to _IO_peekc_unlocked,
- _IO_putc to _IO_putc_unlocked, _IO_feof to _IO_feof_unclocked, and
- _IO_ferror to _IO_ferror_unlocked.
- Add prototypes for _IO_getc, _IO_putc, _IO_feof, _IO_ferror,
- and _IO_peekc_locked.
- Add declarations for _IO_flockfile, _IO_funlockfile, and
- _IO_ftrylockfile. If !_IO_MTSAFE_IO define _IO_flockfile,
- _IO_funlockfile, _IO_ftrylockfile, _IO_cleanup_region_start, and
- _IO_cleanup_region_end as empty macros.
-
- * libioP.h: Change type of finish function to take an additional int
- argument and change declaration of finish functions.
- Add prototypes for _IO_seekoff and _IO_seekpos.
- If _G_HAVE_MMAP is defined use stream buffers allocated with mmap.
- Redefine FREE_BUF and ALLOC_BUF macros to help in both situations.
- (FILEBUF_LITERAL): If we compile for a thread-safe library also
- initialize lock member.
-
- * filedoalloc.c: Take care for systems already defining _POSIX_SOURCE.
- Keep name space clean on systems which require this.
- (_IO_file_doallocate): Adopt ALLOC_BUF call for changed semantic.
-
- * fileops.c: Keep name space clean on systems which require this.
- (_IO_file_attach): Don't fail if seek failed because it's used on a
- pipe.
- (_IO_file_underflow): Update buffer pointers before calling `read'
- since the `read' might not return anymore.
- (_IO_file_overflow): If stream allows no writes set error flag.
- (_IO_seekoff): Make sure that after flushing the file pointer in
- the underlying file is exact.
- (_IO_file_read): Don't restart `read' syscall if it return EINTR.
- This violates POSIX.
- (_IO_file_write): Likewise for `write'.
- (_IO_cleanup): Install as exit handler in glibc.
-
- * genops.c (_IO_setb): Correctly use FREE_BUF.
- (_IO_default_doallocate): Correctly use ALLOC_BUF.
- (_IO_init): Initialize lock in stream structure.
- (_IO_default_finish): Destroy lock.
- (_IO_get_column): Don't compile since it's not needed.
- (_IO_nobackup_default): Likewise.
-
- * iopopen.c: Take care for systems already defining _POSIX_SOURCE.
- Correct _IO_fork and _IO_dup2 prototypes.
-
- * iofclose.c: Acquire lock before starting the work.
- * iofflush.c: Likewise.
- * iofgetpos.c: Likewise.
- * iofgets.c: Likewise.
- * iofputs.c: Likewise.
- * iofread.c: Likewise.
- * iofsetpos.c: Likewise.
- * ioftell.c: Likewise.
- * iofwrite.c: Likewise.
- * iogetdelim.c: Likewise.
- * iogets.c: Likewise.
- * ioputs.c: Likewise.
- * iosetbuffer.c: Likewise.
- * iosetvbuf.c: Likewise.
- * ioungetc.c: Likewise.
-
- * iofdopen.c: Create and initialize lock for new stream.
- * iofopen.c: Likewise.
- * iopopen.c (_IO_popen): Likewise.
- * iovsprintf.c: Likewise.
- * iovsscanf.c: Likewise.
-
- * genops.c: Make weak aliases for various functions.
- * iofclose.c: Likewise.
- * iofdopen.c: Likewise.
- * iofflush.c: Likewise.
- * iofgetpos.c: Likewise.
- * iofgets.c: Likewise.
- * iofopen.c: Likewise.
- * iofputs.c: Likewise.
- * iofread.c: Likewise.
- * iofsetpos.c: Likewise.
- * ioftell.c: Likewise.
- * iofwrite.c: Likewise.
- * iogetdelim.c: Likewise.
- * iogets.c: Likewise.
- * ioputs.c: Likewise.
- * iosetbuffer.c: Likewise.
- * iosetvbuf.c: Likewise.
- * ioungetc.c: Likewise.
- * iovsprintf.c: Likewise.
- * iovsscanf.c: Likewise.
-
- * iofflush_u.c: New file. fflush_unlocked implementation.
-
- * iostream.h [_G_HAVE_LONG_DOUBLE_IO]: Declare real long double
- output operator.
-
- * peekc.c: New file. Implement _IO_peekc_locked function.
-
- * stdfiles.c: If we compile for a thread-safe library also define
- lock variable.
-
-Tue Aug 26 12:24:01 1997 H.J. Lu (hjl@gnu.ai.mit.edu)
-
- * testsuite/Makefile.in (check): Don't depend on site.exp.
- (just-check): Depend on site.exp.
-
-Wed Aug 20 02:01:34 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * iostream.h: Add copy assignment ops for _IO_?stream_withassign.
-
-Tue Jul 22 10:31:41 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * config.shared (CHECK_SUBDIRS): Use install-sh, not install.sh.
-
-Wed Jun 25 12:20:55 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * config.shared (DOING_GPERF): Look for this, defining TOLIBGXX
- and LIBS for it.
-
-Wed Jun 18 11:03:34 1997 Bob Manson <manson@charmed.cygnus.com>
-
- * config.shared (FLAGS_TO_PASS): Don't include RUNTEST.
-
-Tue Jun 17 22:23:48 1997 Bob Manson <manson@charmed.cygnus.com>
-
- * config.shared (FLAGS_TO_PASS): Pass RUNTEST and RUNTESTFLAGS.
-
-Fri May 16 21:08:53 1997 Bob Manson <manson@charmed.cygnus.com>
-
- * iovfprintf.c: Declare __cvt_double before use.
-
- * floatconv.c (d2b): Use _G_int32_t instead of int for the
- e and bits parameters.
- (_IO_strtod): Use _G_int32_t.
-
- * gen-params: Look for NO_USE_DTOA and USE_INT32_FLAGS.
-
- * strops.c (_IO_str_init_static): use _G_int32_t appropriately.
-
- * libio.h: If _G_NO_USE_DTOA is set, then don't define
- _IO_USE_DTOA.
-
- * config/mn10200.mt: Don't use dtoa, it only works
- for "real" doubles.
-
-Thu May 15 17:44:12 1997 Bob Manson <manson@charmed.cygnus.com>
-
- * configure.in: Set CHECK_SUBDIRS to testsuite if we're doing
- a cross compile.
-
- * config.shared(check): Only run make check in the directories
- specified by CHECK_SUBDIRS. Set CHECK_SUBDIRS to SUBDIRS
- if it has no previous value.
-
-Thu May 1 17:35:19 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * Makefile.in (test, tpipe): Add $(CFLAGS).
-
-Wed Apr 30 12:16:29 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * configure.in: Don't turn on multilib here.
-
-Sat Apr 26 13:38:21 1997 Bob Manson <manson@charmed.cygnus.com>
-
- * configure.in (configdirs): Add testsuite directory.
-
- * testsuite/ChangeLog:
- * testsuite/Makefile.in:
- * testsuite/libio.tests/tiomanip.exp:
- * testsuite/libio.tests/tstdiomisc.exp:
- * testsuite/libio.tests/tiomisc.exp:
- * testsuite/libio.tests/tFile.exp:
- * testsuite/libio.tests/tfformat.exp:
- * testsuite/libio.tests/tiformat.exp:
- * testsuite/libio.tests/hounddog.exp:
- * testsuite/libio.tests/putbackdog.exp:
- * testsuite/configure.in:
- * testsuite/lib/libio.exp:
- * testsuite/config/default.exp:
- New files for DejaGnu-style testsuite.
-
-Fri Apr 4 03:16:44 1997 Ulrich Drepper <drepepr@cygnus.com>
-
- * configure.in: Enable multilibing by default.
- Update multilib template to read config-ml.in.
-
- * floatconv.c: Enable use in cross targets which use the
- newlib ieeefp.h header.
-
-Thu Jan 23 09:16:16 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * libioP.h (_IO_file_attach): Delete redundant decl.
-
-Tue Jan 21 22:13:45 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * streambuf.h (class ios): Take out STREAMSIZE member, since we
- only need (and should only have) the global one.
-
-Tue Jan 7 14:02:40 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * iostream.h (long long fns): Use __extension__.
-
- * gen-params: Use _G_llong and _G_ullong instead of long long for
- deduced types.
-
-Fri Dec 6 13:13:30 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * dbz/dbz.c: Use off_t.
-
-Sat Nov 23 15:44:37 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * Makefile.in (install): Don't install _G_config.h with other headers.
-
-Mon Nov 18 17:12:41 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * config.shared (SUBDIRS): Use -O instead of -O3 for debugging.
-
-Sun Nov 3 12:43:34 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * iostream.cc (write_int): Treat string literals as const.
-
-Thu Sep 26 10:09:18 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * depend: Regenerate.
-
-Wed Sep 25 22:54:45 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * config.shared (depend.new): Deal with headers that don't end in .h.
-
-Thu Aug 29 17:05:53 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * configure.in (i[345]86-*-*): Recognize i686 for pentium pro.
-
-Mon Aug 5 01:26:32 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * config{ure.in,.shared} (DISTCLEAN): Add multilib.out.
-
-Fri Aug 2 17:39:35 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * libio.h (NULL): Use __null.
- * libioP.h (NULL): Ditto.
- * streambuf.h (NULL): Ditto.
- * ioextend.cc (get_array_element): Use NULL instead of (void*)0.
-
-Fri Jul 5 18:26:41 1996 Jim Wilson <wilson@cygnus.com>
-
- * strfile.h (struct _IO_streambuf): New struct type.
- (struct _IO_strfile): Use it.
-
-Tue Jun 18 18:24:21 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * fstream.h (fstreambase): Make __my_fb mutable.
- From Joe Buck.
-
-Tue Jun 18 11:03:53 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * dbz/fake.c (main): Set return type to int.
- * dbz/dbzmain.c (main): Likewise.
- * dbz/byteflip.c (main): Likewise.
-
-Mon Jun 17 14:05:36 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * gen-params: Check if clog conflicts with system libraries.
- * stdstreams.cc: If it does, use __IO_clog.
- * iostream.h: Likewise.
-
-Tue Jun 11 13:39:31 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * stdiostream.h (istdiostream (FILE*)): Put istream base
- initializer before init for __f.
- (ostdiostream (FILE*)): Likewise for ostream base init.
-
-Tue May 14 11:47:21 1996 Per Bothner <bothner@andros.cygnus.com>
-
- * strfile.h (_IO_str_fields): Removed _len field.
- (_IO_STR_DYNAMIC, _IO_STR_FROZEN): new macros.
- * strstream.h (strstreambuf::is_static): Removed.
- (strstreambuf::frozen): Use _IO_STR_DYNAMIC instead of is_static.
- * strstream.h, strstream.cc: Remove support for !_IO_NEW_STREAMS.
- * strstream.cc (strstreambuf::init_dynamic): Don't set _s._len.
- * strops.c (_IO_str_init_static): Better handling of the
- negative (== unbounded) size case.
- (_IO_str_overflow, _IO_str_underflow, _IO_str_count): Re-write
- to not use _s._len, and otherwise cleanup/fix.
- * strstream.h, strstream.cc (strstreambase::strstreambase()): Call
- ios::init here.
- (other constructors): Simplify - init already called.
-
-Tue May 14 10:55:21 1996 Per Bothner <bothner@deneb.cygnus.com>
-
- Change so that strstreambuf default constructor does no allocation.
- * strstream.h (strstreambuf::init_dynamic): Default initial size = 0.
- * strstream.cc (strstreambuf::init_dynamic): Don't allocate a
- buffer (yet) if initial_size is 0.
- * strops.c (_IO_str_overflow): Add 100 to size of re-allocated
- buffer, to handle case when initial size is 0.
-
- * iostdio.h (remove, rename, tmpfile, tempnam): Comment out.
-
-Mon May 13 23:19:39 1996 Per Bothner <bothner@deneb.cygnus.com>
-
- * fileops.c (_IO_file_close_it): Just call _IO_do_flush rather
- than _IO_file_sync, to avoid useless lseek.
-
-Tue May 14 10:48:48 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * floatconv.c (_IO_strtod): Force rv into the stack.
-
- * config.shared (gxx_includedir): Now $(includedir)/g++.
-
-Sat Apr 27 02:37:49 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * libioP.h (JUMP*): Implement for thunks.
- (_IO_jump_t): Add second dummy field for thunks.
-
-Thu Apr 25 13:20:00 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * config.shared (CXX): Use gcc, not g++.
-
-Wed Apr 24 10:29:50 1996 Doug Evans <dje@blues.cygnus.com>
-
- * config.shared (depend.new): Delete $(srcdir)/ from foo.{c,cc}
- for SunOS VPATH.
- * depend: Regenerated.
-
-Fri Apr 19 17:24:51 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * Version 2.8.0b3.
-
-Wed Apr 10 17:16:01 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * configure.in (ALL): Don't build iostream.a.
-
-Mon Apr 8 14:44:11 1996 Per Bothner <bothner@kalessin.cygnus.com>
-
- * iosetvbuf.c (_IO_setvbuf): Clear _IO_UNBUFFERED unless _IONBF.
-
-Mon Apr 8 15:08:23 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Permit --enable-shared to specify a list of
- directories.
-
-Fri Apr 5 17:48:56 1996 Per Bothner <bothner@kalessin.cygnus.com>
-
- * config.shared (MOSTLYCLEAN): Also remove ${EXTRA_MOSTLYCLEAN}.
-
-Fri Mar 22 23:25:00 1996 Ulrich Drepper <drepepr@gnu.ai.mit.edu>
-
- * genops.c (_IO_sputbackc, _IO_sungetc): Clear EOF flag if putsh
- back was successful.
-
-Wed Mar 27 11:54:08 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * Version 2.8.0b2.
-
-Fri Mar 22 15:39:36 1996 Per Bothner <bothner@kalessin.cygnus.com>
-
- * fileops.c (_IO_do_write): Revert previous fix. (It fails to
- handle the case that fp->_IO_read_end != fp->_IO_write_base.)
- (_IO_file_overflow): Instead, if _IO_read_ptr is at the end of
- the buffer, reset all the read pointers to _IO_buf_base.
-
-Tue Mar 12 12:03:17 1996 Per Bothner <bothner@kalessin.cygnus.com>
-
- * fileops.c (_IO_do_write): Even if to_do==0, must re-set buffer
- pointers. Bug and solution from Luke Blanshard <luke@cs.wisc.edu>.
-
-Wed Feb 28 10:00:24 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * Version 2.8.0b1.
-
-Tue Feb 27 18:08:16 1996 Per Bothner <bothner@kalessin.cygnus.com>
-
- * iopopen.c (_IO_proc_open): Use (char*)0 rather than imprecise NULL.
-
- * streambuf.h (ios): Add ios::binary; deprecate ios::bin.
- * filebuf.cc (filebuf::open): Handle ios::binary.
-
-Fri Feb 9 12:40:19 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * cleanup.c (_IO_cleanup_registration_needed) [!_G_HAVE_ATEXIT]: Init
- to NULL.
- * filedoalloc.c (_IO_cleanup_registration_needed): Remove decl.
-
-Thu Feb 8 08:12:50 1996 Brendan Kehoe <brendan@cygnus.com>
-
- * filedoalloc.c (_IO_cleanup_registration_needed): Revert previous
- change, since cleanup.c only defines it if _G_HAVE_ATEXIT.
-
-Wed Feb 7 15:10:17 1996 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * filedoalloc.c (_IO_cleanup_registration_needed): Declare as extern.
-
-Tue Dec 12 17:21:13 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * indstream.h, instream.cc (indirectbuf::uflow): New method.
- * indstream.cc (indirectbuf::underflow): Fix to use sgetc, not sbumpc.
- Fixes bug reported by Kevin Beyer <beyer@cs.wisc.edu>.
-
- * indstream.cc (indirectbuf::seekpos): Add paranoia test.
-
-Fri Dec 8 14:55:34 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * stream.h: Add warning to not use these functions.
- * stream.cc (str, chr): Re-implement here (from libg++).
-
-Tue Nov 28 15:07:01 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * config.shared: Use test instead of [ to avoid DEC Unix lossage.
-
-Thu Nov 23 14:51:43 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * iopopen.c: Move #include <sys/types.h> ahead of #include <signal.h>
- to deal with BSDI's literal implementation of Posix.
-
-Sat Nov 25 11:21:55 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * Makefile.in (install): Set rootme.
- * config.shared (TOPDIR): Set with ${foo-...} rather than ${foo=...}.
- (INSTALL): Handle absolute, dot, relative-not-dot values of srcdir.
- (TEXIDIR): Likewise.
-
-Tue Nov 21 14:12:05 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Check ${with_cross_host} rather than comparing
- ${host} and ${target}.
-
-Mon Nov 20 13:55:29 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * configure.in: Match *-sco3.2v[45]*.
-
-Wed Nov 15 20:19:31 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * config.shared (FLAGS_TO_PASS): Also pass SHLIB and SHCURSES.
-
-Tue Nov 14 01:41:08 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * config.shared (TO_REAL_TOPDIR): Define.
- (MULTITOP): Deleted.
- (MULTISRCTOP, MULTIBUILDTOP): New.
- (TOPDIR): Change MULTITOP to MULTIBUILDTOP, and use TO_REAL_TOPDIR.
- (INSTALL): Add with_multisrctop, TO_REAL_TOPDIR.
- (TEXIDIR): Use TO_REAL_TOPDIR.
- (LIBS): Delete MULTITOP.
- (FLAGS_TO_PASS): Add NM.
- (CXXINCLUDES): Delete MULTITOP.
- (depend.new): Delete adding MULTITOP to ../ build tree references.
- Add MULTISRCTOP to ../ source tree references.
- * configure.in: Delete call to cfg-ml-com.in. Call config-ml.in
- instead of cfg-ml-pos.in.
-
-Sun Nov 12 16:30:48 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * Makefile.in (VERSION): Set to 2.7.1.
- * configure.in: Add warning for Linux.
- * config.shared (DISTCLEAN): Add EXTRA_DISTCLEAN.
-
- * editbuf.h (edit_mark::index_in_buffer): Avoid unused param warning.
-
- * iostream.cc (istream::operator>> (char*)): Improve ANSI compliance.
-
-Fri Nov 10 08:41:37 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * config.shared (check): Add missing semicolon.
-
-Thu Nov 9 17:27:22 1995 Jason Merrill <jason@yorick.cygnus.com>
-
- * configure.in (ALL): Remove $(OSPRIM_OBJECTS).
- * config.shared (check): Set LD_LIBRARY_PATH.
- * NEWS: Fix typo.
- * iogetdelim.c (_IO_getdelim): Index *lineptr, rather than lineptr.
- From alan@spri.levels.unisa.edu.au (Alan Modra).
-
-Mon Nov 6 15:03:33 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * streambuf.cc, editbuf.cc, isgetline.cc, parsestream.cc:
- Fixes to avoid -Wall warnings.
-
-Fri Nov 3 16:41:41 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * gen-params [!__STDC__]: Include varargs.h instead of stdarg.h.
-
-Thu Nov 2 15:04:03 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * config.shared: Re-write if X then Y else true fi to (not X) || Y.
-
-Wed Nov 1 13:26:44 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * iostream.h (istream::ipfx): Add default argument value.
- Reported by Yotam Medini <yotam_medini@tmai.com>.
-
- * libioP.h (_IO_blen): Fix typo.
- Reported by Bryan T. Vold <btv@ldl.healthpartners.com>.
-
-Fri Oct 27 19:26:20 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * Makefile.in (_G_config.h): Set CC to $(CC) rather than to $(CXX),
- now that CXX defaults to g++ and CC default to gcc (when found).
- * config.shared: Simplify CXX and CC, since they get overridden
- by ../configure anyway.
-
-Wed Oct 25 19:45:50 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * iostdio.h: Wrap including the file with #ifndef _IOSTDIO_H.
-
-Wed Oct 25 11:14:25 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * libio.h (_IO_seekoff, _IO_seekpos): New declarations.
- * libioP.h (_IO_seekoff, _IO_seekpos): Remove declarations.
- * libioP.h: Cleanup; remove old !_IO_UNIFIED_JUMPTABLES stuff.
-
- * filebuf.cc (filebuf::~filebuf): Only call SYSYCLOSE if currently
- open. Bug found by Martin Gerbershagen <ger@ezis-ulm.de>.
-
- * streambuf.h (streambuf::pubseekoff, streambuf::pubseekpos):
- Added, from ANSI draft.
- * filebuf.cc (filebuf::open), iostream.cc (variables places), SFile.cc:
- Use pubseekoff/pubseekpos rather than sseekoff/sseekpos.
-
- * Makefile.in (install): Don't install libiostream.a.
-
- * filedoalloc.c: Also #include <unistd.h>.
-
-Mon Oct 9 18:09:54 1995 Jason Molenda <crash@phydeaux.cygnus.com>
-
- * config.shared (SUFFIXES): add .c.
-
-Tue Sep 26 16:08:01 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * procbuf.cc: Move #pragma implementation to beginning.
-
-Wed Sep 20 17:53:33 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * procbuf.h, procbuf.cc: Add #pragma interface/implementation stuff.
-
-Wed Sep 20 18:59:00 1995 John Eaton <jwe@bevo.che.wisc.edu>
-
- * procbuf.h: Protect from being included multiple times.
-
-Wed Sep 20 15:47:14 1995 John Eaton <jwe@bevo.che.wisc.edu>
-
- * procbuf.h (procbuf): Add '_next' pointer field for compatibility
- with _IO_proc_file.
-
-Wed Sep 20 13:54:02 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * config.shared: Add support for maintainer-clean target as a
- synonym for realclean.
- * dbz/Makefile.in: Likewise.
-
-Mon Sep 11 12:11:19 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * iopopen.c: #include <sys/types.h> before <sys/wait.h>.
- This is in accordance with Posix, and needed for ISC.
-
-Fri Sep 8 00:11:55 1995 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * gen-params: Use double quotes in the eval setting $TYPE to
- $VALUE, to preserve any single quotes in $VALUE.
-
-Mon Aug 21 11:39:09 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * gen-params: Test for an appropriate version of gcc before using
- mode attributes.
-
- * config.shared: Add $(PICDIR) to $ALL.
-
-Mon Aug 7 17:51:40 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * gen-params: Generate new macro _G_HAVE_SYS_CDEFS.
- * libio.h: If _G_HAVE_SYS_CDEFS, get __P from <sys/cdefs.h>.
-
-Fri Aug 4 23:21:17 1995 Paul Eggert <eggert@twinsun.com>
-
- * gen-params: When following typedef changes, allow typedefs
- that do not have a space before the defined type name,
- e.g. `typedef void *__gnuc_va_list;' as in Linux. Also,
- not require a space in the definiens, e.g. `typedef void*foo;'.
-
-Thu Aug 3 17:54:15 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * iostream.h, iostream.cc (istream::sync): Added missing method.
-
-Thu Aug 3 17:49:34 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * configure.in: Remove netbsd special case.
- * config/netbsd.mt: Removed; no longer used.
-
-Tue Jun 20 16:07:12 1995 Paul Eggert <eggert@twinsun.com>
-
- * gen-params: Take transitive closure of `typedef' relation.
- This is needed for BSD/OS 2.0, which has
- fpos_t -> off_t -> quad_t -> long long.
-
-Mon Jul 24 18:28:10 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * config.shared (TOPDIR): Delete extra '/', $rootme may be empty.
-
-Sat Jul 22 13:27:45 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * config.shared (depend.new): Fix quoting in DO NOT EDIT line.
-
- * Makefile.in (_G_config.h): Add multilib support.
- (install): Likewise.
- * config.shared: Likewise.
- * configure.in: Likewise.
-
-Wed Jun 28 17:40:25 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * PlotFile.h, SFile.h, builtinbuf.h, editbuf.h, fstream.h,
- indstream.h, iomanip.h, iostream.h, parsestream.h, pfstream.h,
- procbuf.h, stdiostream.h, stream.h, streambuf.h, strstream.h: Wrap
- with extern "C++".
-
-Thu Jun 22 04:34:01 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * gen-params: Surround attributes with __.
-
-Mon Jun 19 00:33:22 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * config.shared (SUBDIRS): Massage broken shells that require
- 'else true'.
-
-Sat Jun 17 11:25:38 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * streambuf.h: Declare inline members inline in class.
-
-Thu Jun 15 20:45:13 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * Makefile.in (VERSION): Update to version 2.7.0.
-
-Wed Jun 14 21:41:11 1995 Jason Merrill <jason@python.cygnus.com>
-
- * Makefile.in (STDIO_WRAP_OBJECTS): Remove stdfiles.o.
- (LIBIO_OBJECTS): Add stdfiles.o.
-
-Wed Jun 7 16:11:36 1995 Jason Merrill <jason@python.cygnus.com>
-
- * config.shared (all): Appease bash.
-
-Wed Jun 7 11:16:38 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * configure.in (MOSTLYCLEAN): Remove stamp-picdir.
-
- * config.shared (MOSTLYCLEAN): Ditto.
- (CLEAN): Don't.
-
-Mon Jun 5 18:29:39 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * config/mh-*pic: Removed.
-
- * configure.in (MOSTLYCLEAN): Remove pic objects.
- (frags): Use toplevel pic fragments.
-
- * config.shared (CXXFLAGS): Use -O3.
- (PICFLAG, PICDIR): New macros.
- (all): Depend on $(PICDIR).
- (FLAGS_TO_PASS): Pass PICFLAG.
- (.x.o): Also build pic object.
- (stamp-picdir): Create directory for pic objects.
- (MOSTLYCLEAN): Remove pic objects.
- (CLEAN): Remove stamp-picdir.
-
- * Makefile.in (iostream.list): Depend on stamp-picdir.
- (c++clean): Don't remove _G_config.h.
-
-Mon Jun 5 15:03:47 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * strstream.h, strstream.cc (strstream::strstream()): Re-implement to
- be like ostrstream::ostrestream(), and not leak memory.
-
- * streambuf.h: Use #if !_IO_UNIFIED_JUMPTABLES instead of #ifndef.
-
- * iolibio.h (_IO_rewind): Add missing flags when calling _IO_seekoff.
-
-Thu May 25 22:30:21 1995 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * config/netbsd.mt (G_CONFIG_ARGS): Add defn for off_t. Another
- layer of typedefs has been added and the gen-params script can
- not handle it.
-
-Wed May 10 03:02:58 1995 Jason Merrill <jason@python.cygnus.com>
-
- * iolibio.h (_IO_rewind): Add new argument to _IO_seekoff.
-
- * config/linux.mt (LIBIOSTREAM_OBJECTS): Include $(STDIO_WRAP_OBJECTS).
- (LIBIOSTREAM_DEP): Include stdio.list.
- (LIBIOSTREAM_USE): Include `cat stdio.list`.
-
- * Makefile.in (LIBIOSTREAM_DEP): New variable.
- (LIBIOSTREAM_USE): Ditto.
- (libiostream.a): Use them.
- (iostream.list): Ditto.
- (stdio.list): New rule.
- (stdio/stdio.list): Ditto.
-
-Tue May 9 18:29:38 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * libioP.h (_IO_jump_t): Change TYPE for __dummy from int to
- _G_size_t.
-
-Sat May 6 13:50:37 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * libio.h (_IO_UNIFIED_JUMPTABLES): #define as true.
- (_IO_FILE): Remove _jumps field (#if _IO_UNIFIED_JUMPTABLES).
-
- * libioP.h (enum _IO_seekflags_): Removed.
-
- * libioP.h (_IO_setbuf_t): Change return value of setpos jumptable
- function to match C++ streambuf::setpos. (Return NULL on failure.)
- * fileops.c (_IO_file_setbuf), genops.c (_IO_default_setbuf),
- filebuf.cc, iosetvbuf.c: Update to use new setbuf conventions.
-
- * streambuf.h (streambuf): Re-order virtual functions more logically.
- * streambuf.cc (streambuf::uflow), streambuf.h: New virtual.
- * libioP.h (struct _IO_jump_t): Define using new JUMP_FIELD macro.
- And re-order in more logical order consistent with streambuf vtable.
- * fileops.c (_IO_file_jumps), iopopen.c (_IO_proc_jumps), iovfprintf.c
- (_IO_helper_jumps), streambuf.cc (_IO_streambuf_jumps), strops.c
- (_IO_str_jumps): Update accordingly, using JUMP_INIT macro.
- * stdfiles.c: Set vtable to point to _IO_file_jumps.
- * filebuf.cc, iopopen.c, iovfprintf.c (helper_vfprintf), iovsprintf.c,
- iovsscanf.c: Use macros and #if to set jumptables.
-
- * streambuf.c: _IO_streambuf_jumps and the _IO_sb_* methods are not
- needed #if _IO_UNIFIED_JUMPTABLES.
- * filebuf.cc (filebuf::__new): Also no longer needed.
- * fstream.cc (fstreambase::__fb_init, fstreambase::fstreambase): Fix.
- * stdstrbufs.c: Use filebuf vtable instead of builtinbuf's.
- * builtinbuf.h, builtinbuf.cc (builtinbuf): Commented out #if
- _IO_UNIFIED_JUMPTABLES - no longer needed.
- * strstream.cc (SET_STR_JUMPS): Does nothing now.
-
- * builtinbuf.cc, fileops.c, genops.c, iofgetpos.c, iofsetpos.c,
- ioftell.c, iopopen.c, ioseekoff.c, ioseekpos.c, iosetvbuf.c,
- iovfprintf.c, iovfscanf.c, strops.c: Use DEFUN and DEFUN_VOID.
- * filebuf.cc, fileops.c, genops.c, iopopen.c, ioseekoff.c, ioseekpos.c,
- iosetvbuf.c, iovfscanf.c: Use new JUMP_* and IO_OVERFLOW/... macros.
-
- * libioP.h (_IO_seekpos_t): Third arg is now an int (using _IOS_INPUT
- and _IOS_OUTPUT), not an enum _IO_seekflags_. Flags values are
- changed, and their sense inverted (to match streambuf::seekpos).
- * libioP.h (_IO_seekoff_t): Similarly match streambuf::seekoff.
- * filebuf.cc, fileops.c (_IO_file_fopen, _IO_file_seekoff), genops.c
- (_IO_default_seekpos, _IO_default_seekpos), iofgetpos.c, iofsetpos.c,
- iolibio.h (_IO_fseek), ioftell.c, ioseekoff.c, ioseekpos.c,
- iostream.cc, streambuf.cc, strops.c (_IO_str_seekoff), strstream.cc:
- New seekpos/seekoff conventions.
- * iostreamP.h (convert_to_seekflags): Removed - no longer needed.
-
- * iolibio.h (_IO_fread): New declaration.
-
- * dbz/Makefile.in: Re-arrange for cleaner dependencies.
-
-Fri May 5 15:55:22 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * libioP.h (_IO_JUMPS. JUMP_FIELD, JUMP0, JUMP1, JUMP2, JUMP3,
- JUMP_INIT, _IO_FINISH, _IO_OVERFLOW, ... _IO_SYSSTAT): New macros
- in preparation for new unified jumptable/vtable implementation.
- * cleanup.c, filedoalloc.c, iofclose.c, iofflush.c, iofiledoalloc.c,
- ioprims.c, iosetbuffer.c, iostrerror.c, ioungetc.c: Use DEFUN.
- * filedoalloc.c, iofclose, iofflush, iosetbuffer.c: Use new macros.
-
- * iofopen.c, iofdopen.c: Use macros and #if for new jumptables.
-
- * gen-params: Do not #include <sys/types.h>.
- Add missing quote in 'eval'.
- Do add #include <sys/types.h> in test for <sys/resource.h>.
- * config/netbsd.mt: New file, defining _G_CONFIG_ARGS (for fpos_t).
- * configure.in: Use netbsd.mt for NetBSD.
-
-Wed May 3 15:03:47 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * libioP.h (DEFUN, DEFUN_VOID, AND): New macros, from ansidecl.h.
- * iofdopen.c, iofgets.c, iofopen.c, iofputs.c, iofread.c, iofwrite.c,
- iogetdelim.c, iogetline.c, iogets.c, ioignore.c, iopadn.c, ioperror.c,
- ioputs.c, iovsprintf.c, iovsscanf.c, outfloat.c: Use DEFUN.
-
-Mon May 1 16:22:30 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * gen-params: #include <sys/types.h>. Don't use __WCHAR_TYPE__ in
- definition of _G_wchar_t. Use __attribute__ ((mode)) to get
- specific-sized ints under gcc, don't worry about int8 or int64
- otherwise. Provide defaults if deduction fails.
-
-Thu Apr 27 18:27:53 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * streambuf.h (ios::~ios): Delete _arrays.
- (_IO_NEW_STREAMS): Turn on.
- * libio.h (__adjust_column): Remove bogus declaration.
- * genops.c (_IO_set_column): Fix typo (in commented-out code).
-
-Tue Apr 25 17:14:29 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * config.shared (CXXINCLUDES): Use a shell variable with a
- different name from the make variable.
- * configure.in: Update accordingly.
-
-Mon Apr 17 17:19:40 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * streambuf.h (__adjust_column): Remove redundant declaration.
-
-Sat Apr 15 11:39:25 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * config.shared (do-clean-dvi): Also remove *.cps.
-
- * gen-params: Use ${SED} instead of sed.
-
- * libio.h: Remove #if'd out stuff (confuses makedepend).
-
- * stdstreams.cc (STD_STR): Standard streams start with ios::dec set.
-
-Fri Apr 14 23:46:31 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * iostream.h, iostream.cc (istream::read, ostream::write):
- Use streamsize for the length parameter.
-
- * streambuf.h: Removed redundant __overflow and __underflow.
-
- * fstream.h, fstream.cc: Add void fstreambase::attach(int).
-
- * iosscanf.c (_IO_sscanf): Fix non-__STDC__ missing declaration.
-
-Mon Apr 3 15:40:55 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * indstream.*: Fix prototypes of xsputn and xsgetn.
-
- * fileops.c: Avoid ??? trigraph.
-
-Mon Mar 27 16:16:38 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * iomanip.h (operator<< (ostream&, const omanip<TP>&): Define
- separately.
- (operator>> (istream&, const imanip<TP>&): Ditto.
-
-Mon Mar 27 08:56:00 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
-
- * builtinbuf.cc (builtinbuf::setbuf): Cast NULL to streambuf*, to
- avoid warning/error about conversion from void*.
- * indstream.cc (indirectbuf::seekoff): Likewise.
- (indirectbuf::seekpos): Likewise.
- * filebuf.cc (filebuf::setbuf): Likewise.
- (filebuf::close): Cast NULL to filebuf*.
-
-Wed Mar 1 14:23:18 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * configure.in (DISTCLEAN): Add, with target-mkfrag.
-
-Fri Feb 24 01:01:08 1995 Jason Merrill <jason@python.cygnus.com>
-
- * configure.in (frags): Don't require so many dashes in the
- canonical target name.
-
-Sat Feb 18 13:18:30 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * streambuf.cc (streambuf::sync): Always return 0, even for
- non-flushed output. This is required by the ANSI/ISO draft.
- * genops.c (_IO_sync): Likewise always return 0.
-
-Fri Feb 17 16:33:28 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * fileops.c (_IO_file_close_it): Call _IO_file_sync, rather
- than _IO_do_flush, because we want to adjust the file pointer
- if reading and not at end (as in SVR4, and as in fflush).
- Also, make sure to return error indication if sync fails.
- (_IO_file_sync): Ignore seek error if it is ESPIPE.
- (_IO_file_seekoff): If not readable, do dumb lseek.
- * iofclose.c (_IO_fclose): If closing a non-filebuf, return -1
- if _IO_ERR_SEEN.
-
-Fri Feb 17 19:31:00 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * gen-params: Check for struct tms in <sys/times.h>, defining
- HAVE_SYS_TIMES accordingly.
-
-Wed Feb 15 21:05:11 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * strops.c (_IO_str_count): Use LEN macro.
- (_IO_str_seekoff): Update _len field.
-
-Mon Feb 6 19:29:00 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * gen-params: Default to short, long and long long for 16, 32 and
- 64 bit types, in case detection fails.
-
-Wed Jan 25 18:07:30 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * gen-params (_G_wint_t): Allow for broken promotions.
-
-Tue Jan 24 16:15:40 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * stdstrbufs.cc (_IO_fake_stdiobufs): Add an extra layer of struct,
- to force correct alignment on i960s.
- (DEF_STDIOBUF, _IO_{stdin,stdout,stderr}_buf): Update accordingly.
-
-Thu Jan 19 18:30:53 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * config.shared (CXXINCLUDES): Add libstdc++ to includes for
- building libg++.
- (LIBS): Also link with libstdc++ when building libg++ toys.
- Don't set EXPORT_ALL_VARIABLES; users will have to set
- LD_LIBRARY_PATH themselves.
-
-Fri Dec 30 16:38:13 1994 Mike Stump <mrs@cygnus.com>
-
- * config/linux.mt: Fix build problem on linux 1.0.8.
-
-Thu Dec 22 11:49:45 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
-
- * config/netware.mt: Use gcc to pre-link iostream.nlm's objects
- instead of using nlmconv, so that references to functions in
- libgcc.a are resolved.
-
- * configure.in: Append .mt to target makefile fragment file names.
-
- * floatconv.c (tens, tinytens, bigtens): Added const qualifier.
-
-Tue Dec 20 09:59:50 1994 Mike Stump <mrs@cygnus.com>
-
- * gen-params (VTABLE_LABEL_PREFIX): Since some systems have GNU nm
- as nm, and they demangle by default, we have to notice this, and
- try --no-cplus (linux) or --no-demangle when running nm.
-
-Wed Dec 14 18:13:58 1994 Per Bothner <bothner@kalessin.cygnus.com>
-
- * gen-params: To determine vt-name-mangling using dummy.C add
- #include and #prama interface/implementation to avoid problem with
- assemblers that don't emit local symbols. Reported under HPUX 8
- by Thomas Arend <arend@blasius.Chemietechnik.Uni-Dortmund.DE>.
-
- * streambuf.h (ios::ios): Move inline definition after
- that of ios::init (which ios::ios calls).
-
-Sun Dec 4 19:50:32 1994 Per Bothner <bothner@kalessin.cygnus.com>
-
- * fileops.c (_IO_file_init, _IO_file_close_it, _IO_file_sync):
- Set _offset to _IO_pos_BAD, to support applications that follow
- POSIX.1 rules on mixing file handles.
-
- * fileops.c (_IO_file_overflow): Handle case that buffer was
- allocated (perhaps by setvbuf) but _IO_write_base is still 0.
-
- * iostdio.h (setbuffer): #define as _IO_setbuffer.
- * streambuf.h, filebuf.cc: Removed filebuf::do_write.
-
-Tue Nov 29 23:38:57 1994 Per Bothner (bothner@rtl.cygnus.com)
-
- * floatconv.c (setword0, setword1): Fix typo.
-
-Tue Nov 29 15:37:29 1994 Per Bothner <bothner@kalessin.cygnus.com>
-
- * config.shared: Move -fno-implicit-template from CXXFLAGS
- to LIBCXXFLAGS. Tests are better run without it.
-
- * floatconv.c (word0, word1): Re-place/re-implement using unions
- instead of casts to avoid optimizer problems.
-
- * dbz/dbzmain.c: Renamed dirname -> dir_name to avoid OSF
- header file braindamage.
-
-Sat Nov 5 19:44:00 1994 Jason Merrill (jason@phydeaux.cygnus.com)
-
- * config.shared (LIBCFLAGS): Define.
- (LIBCXXFLAGS): Define.
- (DOING_LIBGXX): Define TOLIBGXX. Change LIBS to use -lg++. Add
- LD_LIBRARY_PATH and .EXPORT_ALL_VARIABLES:.
- (FLAGS_TO_PASS): Add LIBC{,XX}FLAGS.
- (XC{,XX}FLAGS): Set to LIBCFLAGS or CFLAGS depending on $LIBDIR.
- (COMPILE.c): Define, use in .c.o rule.
- (COMPILE.cc): Define, use in .cc.o rule.
-
-Sat Nov 5 15:12:12 1994 Per Bothner <bothner@kalessin.cygnus.com>
-
- * Makefile.in (VERSION): Update to 0.67.
-
- * streambuf.h (ios::dont_close): Is now set by default.
- * fstream.h, fstream.cc (__fb_init): New function. Clears
- ios::dont_close. Change fstreambase constructors to call it.
- * strstream.cc: *strstream constructors must clear ios::dont_close.
- * iostream.cc: Simplify - don't need to set ios::dont_close.
- * ioassign.cc: Simplify - assume ios::dont_close is always set.
-
- * fstream.h, fstream.cc: If _IO_NEW_STREAMS, put the
- filebuf as a member __my_fb.
- * strstream.{h,cc}: Likewile use a strstreambuf member __my_sb.
- * streambuf.h, stdstreams.cc, ioextend.cc:
- Fix if _IO_NEW_STREAMS to not use ios::dont_close.
-
- * streambuf.h (class ios): Move rdbuf later, to avoid
- inability of g++ to inline.
- * filebuf.cc (filebuf::~filebuf): Call _IO_do_flush.
-
- * config.shared: Emit rules to make depend.
- * depend: New file.
-
-Fri Nov 4 17:19:11 1994 Per Bothner <bothner@kalessin.cygnus.com>
-
- * README: Fix typos.
- * libio.h: Add comment. Update Copyright notice.
-
-Fri Nov 4 21:46:30 1994 Paul Eggert <eggert@twinsun.com>
-
- * libio.h (__P): Change argument name spelling from
- `paramlist' to `protos' for compatibility with BSDI 1.1.
-
-Thu Nov 3 00:45:16 1994 Jason Merrill (jason@phydeaux.cygnus.com)
-
- * config.shared (CXXFLAGS): Add -fno-implicit-templates.
-
-Mon Oct 24 15:57:35 1994 Per Bothner <bothner@kalessin.cygnus.com>
-
- * config.shared: Define NOSTDIC and use it for libio too.
-
-Thu Oct 20 19:45:35 1994 Jason Merrill (jason@phydeaux.cygnus.com)
-
- * iogetdelim.c: #include <stdlib.h>.
-
-Thu Oct 20 17:09:52 1994 Per Bothner <bothner@kalessin.cygnus.com>
-
- * iostream.h: Add classes _IO_istream_withassign and
- _IO_ostream_withassign. Re-type cin, cout, cerr, clog.
- (class iostream): Don't add extra _gcount field.
- * ioassign.cc: New file. Implement operator= for cin etc.
- * streambuf.h (class ios): Change return type of operator=.
- * Makefile.in (IOSTREAM_OBJECTS): Add ioassign.o.
-
- * Makefile.in: Re-arrange, so linux.mt overrides can work.
-
- * fileops.c (_IO_file_seekoff): Optimize seeks within buffer.
-
-Wed Oct 19 14:25:47 1994 Jason Merrill (jason@phydeaux.cygnus.com)
-
- * gen-params (wint_t): Return to using __WCHAR_TYPE__ for
- compatibility with gcc versions prior to 2.6.1.
-
-Tue Oct 18 17:08:18 1994 Per Bothner <bothner@kalessin.cygnus.com>
-
- * Makefile.in: Define _G_CONFOG_H as _G_config.h for Linux. Use it.
- (IO_OBJECTS): Add iogetdelim.o.
- * config/linux.mt: New file.
- * configure.in: Select config/linux.mt if Linux.
- * iogetdelim.c: Verious cleanups, many from
- Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>.
- * libioP.h: Add _IO_getdelim. Use (void) for no-parameter functions.
-
-Thu Oct 13 16:30:56 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * libio.h: Rename USE_DTOA to _IO_USE_DTOA for namespace reasons.
- * iostream.cc, iovfscanf.c, iovfprintf, floatconv.c:
- Update USE_DTOA -> _IO_USE_DTOA.
-
- * libio.h (_IO_feof, _IO_ferror): Move to here ...
- * iolibio: ... from here
-
- * iostream.cc (istream::get, istream::ignore, istream::read):
- Set _gcount to 0 if ipfx0 failed.
-
- * iostream.cc (flush): Do virtual function call, rather than
- going through jumptable. (To get correct method in derived class.)
- Bug and fix from John Wiegley <jw@cis.ohio-state.edu>.
-
- * iofdopen.c (O_ACCMODE): Define using O_RDWR, not O_RDWRITE.
-
- * streambuf.h (ios::rdbuf(streambuf*)): New.
- * streambuf.h (ios::operator=): Make private (i.e. dis-allow).
-
-Wed Oct 12 19:09:20 1994 Jason Merrill (jason@phydeaux.cygnus.com)
-
- * gen-params: Define _G_NO_NRV and _G_NO_EXTERN_TEMPLATES if not
- compiling with g++.
-
-Thu Oct 6 16:03:43 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iostream.texi (ostrstream::str): Note that NUL is not written
- automatically.
-
-Wed Oct 5 17:28:29 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iogetdelim.c (_IO_getdelim): New function.
-
-Wed Oct 5 15:40:22 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
-
- * config/netware.mt: New file, first cut at Netware NLM support.
- * configure.in (*-*-netware*): Use config/netware.mt.
-
- * config.shared (NLMCONV, LD): New definition.
-
- * gen-params: check for nm in ${binutils}/nm.new.
- * config.shared: Likewise.
-
-Tue Oct 4 12:20:01 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iomanip.h (omanip::operator<<): Make 2nd arg be const.
- Bug and fix reported by Greg McGary <gkm@magilla.cichlid.com>.
-
- * strstream.cc (strstreambuf::pcount): Simplify, to match
- ANSI/ISO specification.
-
-Mon Sep 26 15:19:52 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * gen-params: Include <wchar.h> and <wctype.h> if they exist.
-
-Thu Sep 8 14:41:41 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * iostream.h (class istream): Declare operator>>(long double&).
- (class ostream): Define operator<<(long double).
-
- * iostream.cc (istream::operator>>(long double&)): Define.
-
-Wed Sep 7 14:42:29 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iostream.texi (Overflow): Fix bugs in example.
-
-Fri Sep 2 17:45:57 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iostream.tex: Document a little on how to write your
- own streambuf-derived class, with an example.
-
-Tue Aug 30 13:03:57 1994 Brendan Kehoe (brendan@lisa.cygnus.com)
-
- * floatconv.c (s2b): Declare X and Y to be _G_int32_t.
- (diff, quorem): Declare BORROW, Y, and Z likewise.
- (ulp): Declare L likewise.
- (_IO_strtod): Declare L and AADJ likewise.
- (_IO_dtoa): Declare L and D likewise. Cast division of D by DS to
- _G_int32_t.
-
-Mon Aug 29 16:01:54 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iosetvbuf.c (_IO_setvbuf): If setting _IOFBF and no
- buffer was specified, call __doallocate.
-
- * fileops.c, floatconv.c: Add a bunch of parentheses to
- shut up gcc warnings. Patch from H.J.Lu.
-
- * stdiostream.cc (stdiobuf::sys_read): Inline call to getc
- for the normal case (size==1).
-
-Sat Aug 20 12:14:52 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * Makefile.in (VERSION): Increase to 0.66.
-
-Fri Aug 19 17:28:41 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iolibio.h: Added _IO_printf prototype.
- Added extern "C" { ... } wrappers #ifdef __cplusplus.
- Bugs reported by Neal Becker <neal@ctd.comsat.com>.
-
-Wed Aug 17 18:17:15 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * fileops.c (_IO_file_seekoff): For _IO_seek_cur, adjust for
- read-ahead before jumping to label dumb.
-
-Wed Aug 3 13:15:01 1994 H.J. Lu (hjl@nynexst.com)
-
- * libioP.h (CHECK_FILE(FILE,RET)): new, which checks for
- FILE == NULL and _IO_MAGIC_MASK.
- (COERCE_FILE(FILE)): merged into CHECK_FILE(FILE,RET)
- with typo fixes.
-
- * iofread.c, iofwrite.c: add CHECK_FILE(fp, 0);
- * iofclose.c: add CHECK_FILE(fp, EOF); remove _IO_MAGIC_MASK check.
-
- * iofflush.c, iofgetpos.c, iofputs.c, iofscanf.c,
- iofsetpos.c, iofvbuf.c, ioungetc.c:
- Add CHECK_FILE(fp, EOF) and remove COERCE_FILE(fp).
-
- * iofgets.c: add CHECK_FILE(fp, NULL) and remove COERCE_FILE(fp).
- * iofprintf.c: add CHECK_FILE(fp, -1) and remove COERCE_FILE(fp).
- * ioftell.c: add CHECK_FILE(fp, -1L) and remove COERCE_FILE(fp).
- * iosetbuffer.c: add CHECK_FILE(fp, ) and remove COERCE_FILE(fp).
-
-Fri Aug 12 15:35:39 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iofdopen.c (_IO_fdopen): #define O_ACCMODE if it isn't.
- Still set O_APPEND if "a" is given, but don't unset it
- if it isn't. Added comment.
-
-Mon Aug 8 13:11:00 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * gen-params (VTABLE_LABEL_PREFIX): Changes in the implementation.
- For look for _*vt[$_.]7*filebuf in the nm output, because that
- matches what g++ produces and has produced. Thus it should be
- somewhat more robust.
-
-Sun Aug 7 22:52:49 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * gen-params (CC): Remove no-longer-needed -I options
- passed to xgcc (now they are implied by the -B options).
-
-Wed Jul 20 16:41:13 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * Makefile.in (tooldir): Added definition, so we can do
- 'make install' in this directory.
- Bug reported by Klamer Schutte <schutte@tpd.tno.nl>.
-
-Mon Jul 18 18:02:34 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * gen-params (VTABLE_LABEL_PREFIX): Remove filename sppearing
- by itself. Add comment explaining what is going on.
-
-Tue Dec 21 13:02:48 1993 H.J. Lu (hjl@jalod)
-
- * libio.h: define _IO_uid_t and _IO_HAVE_ST_BLKSIZE
- as _G_xxxxxxxx.
-
-Tue Dec 21 13:02:48 1993 H.J. Lu (hjl@jalod)
-
- * iopopen.c: Don't include <errno.h>. It is included in "libioP.h".
-
- * iopopen.c (_IO_proc_close) : check if fp is on the list
- before close it.
-
-Thu Jul 14 16:38:47 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * gen-params (CONFIG_NM): Make sed scripts to find vtable name
- mangling more robost for different forms of nm output.
-
-Tue Dec 21 13:02:48 1993 H.J. Lu (hjl@jalod)
-
- * iofopen.c (_IO_fopen): don't check [redundantly] fp == NULL after
- IO_file_init(&fp->_file).
-
- * iomanip.h (template<class TP> class iapp):
- change ostream to istream.
-
-Tue Jul 12 14:09:02 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * Makefile.in (VERSION): Increase to 0.65.
- * libioP.h (builtinbuf_vtable): Only define #ifdef __cplusplus.
-
- * gen-params (_G_int8_t): Only define if defined(__STDC__),
- because K&R C compilers don't have signed char.
- (_G_int64_t, _G_uint64_t): Only define if defined(__GNUC__)
- because other compilers may not have long long.
-
-Sun Mar 06 13:10:21 1994 H.J. Lu (hjl@nynexst.com)
-
- * floatconv.c (_IO_dtoa ()): fix a small memory leak, set the
- "on_stack" field to be 0 if "result" is not NULL.
-
-Sat Mar 05 13:18:20 1994 H.J. Lu (hjl@nynexst.com)
-
- * floatconv.c (_IO_dtoa ()): if the number of digits of the
- floating point number is more than the previous one, free the
- old string and allocate a new one.
- [Minor optimization to avoid Bcopy. -PB]
-
-Mon Jul 11 10:53:41 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * fileops.c (_IO_file_underflow): 'count' should be unsigned,
- since it contains the return value of read. Reported by
- Teemu Torma <tot@trema.fi>.
-
-Tue Dec 21 13:02:48 1993 H.J. Lu (hjl@nynexst.com)
-
- * floatconv.c (_IO_strtod ()): make "+" and "-" as error.
-
-Sat Jul 9 15:09:21 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- Make sure _IO_FILE::_flags is always initialized correctly, for the
- C functions (fopen, fdopen, popen), and not just the C++ functions.
- * fileops.c (_IO_file_init): Set _flags to CLOSED_FILEBUF_FLAGS.
- * fileops.c (_IO_file_fopen): Remove bogus assignment.
- * filebuf.cc (filebuf constructors): Don't pass CLOSED_FILEBUF_FLAGS
- to streambuf constructor - _IO_file_init does it instead.
- * filebuf.cc (CLOSED_FILEBUF_FLAGS): Removed.
- * iopopen.c (_IO_proc_open): Use _IO_mask_flags.
-
-Thu Jun 30 08:49:53 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * dbz/Makefile.in (mostlyclean): Add target.
-
-Wed Jun 29 09:30:12 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * gen-params: Woops, can't run a C program to determine target
- characteristics. Sigh.
-
-Tue Jun 28 03:11:33 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * gen-params: Add _G_{,u}int{8,16,64}_t, use a short C program to
- determine what all these should be rather than trying to compare
- the MAX numbers in the shell.
-
-Sun Jun 26 21:04:24 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * stdiostream.h, stdiostream.cc (stdiobuf::xsgetn): Removed.
- Too hairy. If we want to optimize it, we should do so in
- filebuf::xsgetn (or rather _IO_file_xsgetn).
-
- * stdiostream.h (class stdiobuf), stdiostream.cc: Fix parameter
- and return types of virtual function to matcher base types (Oops!).
- * streamstream.cc (stdiobuf::xsgetn, stdiobuf::xsputn):
- Optimize to call fread.fwrite directly if !buffered.
- * fileops.c: Fix comment.
-
-Fri Jun 24 11:28:18 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * stdiostream.h (istdiostream, ostdiostream): New classes.
-
- More robust final cleanup.
- * cleanup.c (_IO_register_cleanup): Register _IO_cleanup,
- rather than _IO_flush_all.
- * filedoalloc.c: Update comment.
- * genops.c (_IO_unbuffer_all): New. Makes all files unbuffered.
- * genops.c (_IO_cleanup), libioP.h: New function. Call
- _IO_flush_all, and then _IO_unbuffer_all. This is in case C++
- destructors try to do output *after* _IO_cleanup is called.
-
- Construct standard stdiobufs statically (using type punning).
- * stdstrbufs.c; Unless _STDIO_USES_IOSTREAM declare standard
- stdiobufs (for stdin, stdout, and stderr), using type punning
- (struct _IO_fake_stdiobuf). This avoids constructor-time problems.
- * stdstreams.cc: Remove the declarations of the stdiobufs.
- Instead use the new (fake) ones in stdstrbufs.cc. We no longer
- have to call ios::sync_with_stdio at constructor time.
-
- Preliminary support for new ANSI streambuf::uflow virtual.
- * libioP.h (struct _IO_jump_t): Add __uflow field.
- * genops.c (_IO_default_uflow), libioP.h: New function.
- * fileops.c (_IO_file_jumps), iopopen.c (IO_proc_jumps),
- iovfprintf.c (_IO_helper_jumps), strops.c (_IO_str_jumps),
- streambuf.cc (_IO_streambuf_jumps): Add _IO_default_uflow.
- * genops.c (__uflow): New function.
- (save_for_backup): New function. Some code shared by
- __underflow and __uflow, moved out from the former.
- (_IO_default_uflow): New function.
- * libio.h (_IO_getc): Call __uflow, not __underflow.
-
-Wed Jun 22 20:22:49 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- Make sure that the vtable of a streambuf is always valid,
- which makes ios::rdbuf simpler and faster.
- * gen-params: Add code to determine _G_VTABLE_LABEL_HAS_LENGTH,
- _G_VTABLE_LABEL_PREFIX, _G_VTABLE_LABEL_PREFIX_ID, and
- _G_USING_THUNKS, which describe how virtual function tables are named.
- * stdfiles.c (FILEBUF_LITERAL): Moved to libioP.h.
- * libioP.h (builtinbuf_vtable): New (complicated) declaration.
- * filebuf.cc (filebuf::__new), strstream.cc (SET_STR_JUMPS):
- Initialize vtable to builtinbuf_vtable, not NULL.
- * stdstrbufs.cc: New file. Same as stdfiles.c, except that
- vtable is initialized to builtinbuf_vtable, not NULL.
- * streambuf.h (ios::rdbuf): Can now simplify/optimize, due to
- above changes. Always, just return _strbuf.
- * builtinbuf.h, builtinbuf.cc (builtinbuf::vtable,
- builtinbuf::get_builtin_vtable): Removed. No longer needed.
- * streambuf.h, builtinbuf.cc (ios::_IO_fix_vtable): No longer needed.
- Only defined #ifdef _STREAM_COMPAT, for binary compatibility.
- * Makefile.in: Move stdfiles.o from IO_OBJECTS to STDIO_WRAP_OBJECTS.
- (IOSTREAM_OBJECT): Add stdstrbufs.o.
- * Makefile.in (_G_config.h): Pass $(CXXFLAGS) as part of $(CXX).
-
-Fri Feb 11 11:08:01 1994 SBPM Marc GINGOLD (marc@david.saclay.cea.fr)
-
- * iovfprintf.c (helper_vfprintf): add
- hp->_IO_file_flags = _IO_MAGIC|(_IO_IS_FILEBUF+_IO_NO_READS);
- [This is needed because _IO_vfprintf checks for _IO_UNBUFFERED. -PB]
- [Actually: don't set _IO_IS_FILEBUF. -PB]
-
-Wed Jun 22 13:49:22 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * stdiostream.cc, stdiostream.h (stdiobuf::buffered): New methods.
-
- * iofdopen.c (_IO_fdopen): Various minor improvements.
-
- * iovfscanf.c: Don't return EOF on control_failure.
-
-Tue Dec 21 13:02:48 1993 H.J. Lu (hjl@nynexst.com)
-
- * iovfscanf.c: Enforce the sequence of the conversion specifications.
-
-Fri Jun 17 20:57:22 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iofdopen.c: Use fcntl to check that requested access mode is
- compatible with existing access mode, and to change the
- O_APPEND file status flag if need be.
-
-Thu Jun 16 17:33:50 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * streambuf.h (ios::init): Initialize all the fields.
- This may be overkill, but the current ANSI working paper requires it.
- * streambuf.h (ios::ios): Reimplement in terms of ios::init.
- * iostream.cc (Non-default constructors istream::istream,
- ostream::ostream, iostream::iostream): Cannot use a mem-initializer,
- because it is ignored if initializing a derived class. Instead,
- call ios::init.
-
-Wed Jun 15 13:35:37 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * stdstreams.cc (ISTREAM_DEF): Fix typo (it's a _fake_istream, not
- a _fake_ostream). Reported by Jason Shirk <jshirk@gomez.intel.com>.
-
- * stdiostream.h, stdiostream.cc (stdiobuf::~stdiobuf): New.
- Call _IO_do_flush.
- * stdiostream.cc (stdiobuf::sync): Call _IO_do_flush rather
- than filebuf::sync (to avoid bad seeks).
-
- * libioP.h (_IO_do_flush): Add missing parentheses.
-
-Fri Jun 3 19:16:57 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * config.shared (CXXFLAGS): Remove -fno-implicit-templates.
-
- * iomanip.h: Add explicit external instantiations.
-
-Wed Jun 1 14:14:44 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * libio.h (struct _IO_FILE_plus): Move definition from here ...
- * libioP.h (struct _IO_FILE_plus): ... to here. Since this
- file is private to the implementation, we can rename the fields
- from the implementor's to the user's name anme space.
- (This avoids a lossage on SCO, whose stdio.h has a #define _file.)
- * iofdopen.c, iofopen.c, stdfiles.c: Fix field references accordingly.
- * iopopen.c (struct_IO_proc_file): Rename fields from
- implementor's name space to user's, and update usages.
- * streambuf.h (streambuf::_vtable): Re-implement to not need
- struct _IO_FILE_plus.
- * strfile.h (struct _IO_strfile_): Likewise.
-
-Wed Jun 1 13:57:48 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * config.shared (CXXFLAGS): Use -fno-implicit-templates instead of
- -fexternal-templates.
-
-Tue May 31 08:49:28 1994 Mike Stump (mrs@cygnus.com)
-
- * genops.c, iofclose.c, iofdopen.c, iofopen.c, iopopen.c: Be
- consistent about protecting #include <stdlib.h>.
-
- * ioputs.c: Add #include <string.h>, to avoid warning on alpha.
-
- * iofdopen.c: Add #include <stdlib.h>, so that malloc works on
- machines where sizeof(int) != sizeof(void *).
-
-Mon May 30 17:26:49 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * pfstream.cc (ipfstream::ipfstream, opfstream::opfstream):
- Reverse sense of test of return value of procbuf::open.
- (It returns NULL on failure.)
-
- * filedoalloc.c (_IO_file_doallocate): Remove dead code for
- USE_MALLOC_BUF. Add code to return EOF if ALLOC_BUF fails.
-
-Sat May 28 13:47:47 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * iomanip.cc: Explicitly instantiate smanip<int> and
- smanip<ios::fmtflags>.
-
-Wed May 25 16:04:12 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * strfile.h: Use __P instead of _PARAMS.
-
-Fri May 20 11:42:17 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * libio.h: Rename _PARAMS macro to __P for better glibc and BSD
- compatibility. (Also define _PARAMS for backwards compatibility.)
- * cleanup.c, iolibio.h, ioperror.c, iovfprintf.c, iovfscanf.c,
- libioP.h: Use __P instead of _PARAMS.
- * iostdio.h: Use __P instead of _ARGS.
-
- * fileops.c (_IO_file_read): Minor stylistic tweak. (It is
- preferable to test errno *after* the error return.)
-
-Fri May 13 15:25:36 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * iostream.*: Add insertor and extractor for bool (just pretend
- it's an int).
-
-Fri May 13 14:12:03 1994 Mike Stump (mrs@cygnus.com)
-
- * gen-params: Check for builtin bool support.
-
-Wed May 11 00:48:35 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- Make libg++ build with gcc -ansi -pedantic-errors
- * gen-params: #ifdef __STRICT_ANSI__, #define _G_NO_NRV.
- * pfstream.cc (ipfstream::ipfstream): Wrap use of variable-size
- array in #ifndef __STRICT_ANSI__.
-
-Fri May 6 12:42:21 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * Makefile.in (VERSION): Increase to 0.64.
-
- * isgetline.cc (istream::getline): The delimiter should *not*
- be included in the gcount().
-
- * filedoalloc.c: #include <stdlib.h> (If __STDC__) to get malloc.
- * iostream.h (ostream::put): Remove overloaded versions, to match
- new working paper. (Actually just put inside _STREAM_COMPAT, for now.)
-
-Tue May 3 14:14:57 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * genops.c (_IO_default_finish): Make robust when called
- multiple times on the same _IO_FILE*. (One way this can
- happen is by the builtinbuf destructor being followed by the
- streambuf destructor.)
-
-Mon May 2 13:55:26 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * gen-params: Actually determine wint_t rather than depending on
- cpp to provide it or defaulting to the underlying type for
- wchar_t.
-
-Sat Apr 30 14:47:30 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * gen-params: Add _G_wint_t, allow __*_TYPE__ to override values
- at compile time, fix definition of _G_ARGS.
-
-Fri Apr 29 16:55:37 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * libio.h: Remove #pragma interface. (There is no implementation.)
-
-Mon Mar 28 14:22:26 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iostream.cc (ostream::operator<<(double)): Add/fix support
- for printing '+' when ios::showpos is set.
- (Fixes bug reported by Doug Moore <dougm@cs.rice.edu>.)
- * iostream.cc (istream::read): Set eofbit as well as failbit on eof.
- * iostream.cc (ostream::operator<<(int)): Fix conversion
- to unsigned (used to lose on INT_MIN).
- * iostream.cc (ostream::operator<<(long)): Use (unsigned long),
- rather than (unsigned) for temporary.
-
- * config.shared, Makefile.in: Remove definitions and uses
- of XTRAFLAGS. It is no longer needed, since it is
- now implied by the -B flag.
-
-Fri Mar 25 00:31:22 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * builtinbuf.h: Add put /**/ around comment on trailing #endif.
-
- * Makefile.in (c++clean): Make clean in tests subdir, too.
-
-Wed Mar 23 16:42:09 1994 Doug Evans (dje@canuck.cygnus.com)
-
- * configure.in: Remove Makefile.tem before creating it.
- Needed when configuring from read-only source trees.
-
-Wed Mar 16 14:06:42 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * stdstreams.cc: Fix so that stdiobuf are used for cin/cout/cerr,
- unless _STDIO_USES_IOSTREAM is defined.
- * filebuf.cc (filebuf::setbuf): Fix confusion about return
- value from _IO_file_setbuf.
-
-Sun Mar 13 00:54:12 1994 Paul Eggert (eggert@twinsun.com)
-
- * config.shared: Ensure that `all' precedes `.PHONY';
- BSDI 1.1 needs this.
-
-Sat Mar 12 03:58:00 1994 Paul Eggert (eggert@twinsun.com)
-
- * config.shared: Output a definition of INSTALL that uses
- $${rootme}, not ${rootme}. Most `make's don't care, but BSDI
- 1.1 `make' does.
-
-Fri Mar 4 17:33:01 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iopopen.c: #define _POSIX_SOURCE.
- * isgetline.c (istream::getline): Various fixes.
-
-Thu Mar 3 17:58:20 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iostream.cc (write_int): Fix test for when to add initial '0'
- when ios::oct and ios::showbase are set.
- For hex, showbase adds initial 0x (or 0X) regardless of val==0.
- Bugs reported by Phil Roth <proth@cs.uiuc.edu>.
-
-Mon Feb 21 13:18:20 1994 H.J. Lu (hjl@nynexst.com)
-
- * libio.h (_IO_PENDING_OUTPUT_COUNT(_fp)): return the
- pending output count in _fp.
-
-Fri Feb 25 09:26:57 1994 Ian Lance Taylor (ian@cygnus.com)
-
- * gen-params: For HAVE_SYS_WAIT, compile dummy.c, not dummy.C.
-
-Tue Feb 22 11:19:09 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * streambuf.h, genops.c, libioP.h: Rename references to
- _IO_FILE fields other_gbase => _IO_save_base,
- _aux_limit => _IO_backup_base, and _other_egptr => _IO_save_end.
- * libio.h: Remove no-longer needed macros _other_gbase,
- _aux_limit, and _other_egptr.
- * genops.c (__underflow, _IO_default_finishh, _IO_unsave_markers):
- Check _IO_save_base for NULL before FREEing it or calling
- _IO_free_backup_area.
-
-Thu Feb 17 15:26:59 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * gen-params: Improve deduction of _G_uint32 and _G_int32.
- Should now work for 16-bit, 32-bit, or 64-bit targets.
- * gen-params: Check for sys/wait.h using ${CC}, since it's
- now used in a C file, not a C++ file.
- * floatconv.c: Typedef _G_uint32_t as unsigned32, and use
- unsigned32 in place of unsigned long. (Needed for Alpha.)
-
-Tue Feb 8 13:40:15 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * fileops.c (_IO_file_close_it): Simplify by using _IO_do_flush.
- * fileops.c (_IO_file_finish): Don't call _IO_file_close_it -
- do it inline. Call _IO_do_flush even if _IO_DELETE_DONT_CLOSE.
- * fileops.c (_IO_file_attach): Set _IO_DELETE_DONT_CLOSE.
- * genops.c (_IO_flush_all): Only call overflow if there is
- something to write.
- * iofclose.c (_IO_fclose): Check that magic number is correct,
- and clear it when done. Avoids crashing some buggy applications.
- * iogetline.c (_IO_getline): Don't gratuitously increment old_len.
- * iogets.c (_IO_gets): Take care to get required ANSi semantics.
-
-Sun Feb 6 19:50:39 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * iomanip.cc: Explicitly instantiate operator<< and >>.
-
-Fri Feb 4 12:28:22 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * config.shared (CXXFLAGS): Use -fexternal-templates.
-
- * iomanip.h: Uncomment #pragma interface.
-
-Thu Jan 20 13:48:40 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- If no characters are read by fgets, ANSI C doesn't allow '\0' to
- be written to the buffer, but it is required by ANSI C++
- for istream::get and istream::getline. Both use _IO_getline ...
- * iogetline.c (_IO_getline): Don't write a '\0' at the end
- of the read data. The input buffer length does not include
- space for a '\0'.
- * iofgets.c, iogets.c: Change appropriately.
- Also check for _IO_ERR_SEEN, as required by ANSI.
- * isgetline.cc: Update accordingly.
-
-Mon Jan 17 13:24:26 1994 Jason Merrill (jason@deneb.cygnus.com)
-
- * Makefile.in (c++clean): Added target for compiler testing
- (i.e. make c++clean all).
-
-Mon Jan 10 11:20:42 1994 Per Bothner (bothner@kalessin.cygnus.com)
-
- * libio.h (_IO_putc): Add parentheses.
- Patch from Rik Faith <faith@cs.unc.edu>.
-
-Tue Jan 4 01:32:28 1993 Hongjiu Lu (hjl@nynexst.com)
-
- * genops.c (_IO_default_xsputn):
- (_IO_default_xsgetn):
- * ioignore.c: change "_IO_size_t count" to
- "_IO_ssize_t count".
- * iogetline.c: change "_IO_size_t len" to
- "_IO_ssize_t len".
-
-Mon Dec 20 00:31:21 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * config.shared (CXXINCLUDES): Fix quoting of $(NOSTDINC).
-
-Sun Dec 19 21:03:45 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * Makefile.in (VERSION): Increase to 0.63.
-
-Fri Dec 17 13:02:44 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iofread.c (_IO_fread): Return 0 if either size or count is 0.
- * iofwrite.c (_IO_fwrite): Return 0 if either size or count is 0.
- (This is consistent with fread, and most implementations, but not
- with a literal reading of the ANSI spec.)
- * iovfscanf.c (_IO_vfscanf): If got EOF while skipping spaces,
- set seen_eof and break (instead of returning).
- * sbscan.cc (streambuf::vscan): Set error state before returning.
- * streambuf.h: Add a forward declarations for class istream
- to work around a g++ vtable name mangling bug. (Patch from
- harry@pdsrc.hilco.com via Jeffrey A Law <law@snake.cs.utah.edu>.)
- * NEWS: New file.
-
-Sat Dec 11 16:21:08 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iovfprintf.c (struct helper_file, _IO_helper_overflow,
- helper_vfprintf, _IO_helper_jumps): New structs and functions.
- (_IO_vfprintf): Use helper_vfprintf to make printing to
- unbuffered files more efficient.
- * genops.c (_IO_default_underflow), libioP.h: New function.
-
- * iovsscanf.c (_IO_vsscanf): The input string's length marks
- its logical end-of-file.
-
-Wed Dec 8 13:20:46 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * indstream.cc (indirectbuf::sync()): Don't crash if get_stream()
- or put_stream() are NULL; sync() both streams even if error.
-
-Sun Dec 5 19:24:29 1993 Brendan Kehoe (brendan@lisa.cygnus.com)
-
- * iostreamP.h (convert_to_seekflags): Use _IO_seek_set instead of
- 0 inside the conditial expressions.
-
- * iofsetpos.c (_IO_fsetpos): Delete unused var `pos'.
-
-Sat Dec 4 15:57:26 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * filedoalloc.c (_IO_file_doallocate): Change type of couldbetty
- to int, and type of size to _IO_size_t, instead of size_t.
- (Change needed for Ultrix, which incorrectly deliberately doesn't
- define size_t in <sys/types.h> if _POSIX_SOURCE is defined.)
-
-Thu Dec 2 22:43:03 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * fileops.c (_IO_file_finish): Remove redundant call to _IO_un_link.
- * iofclose.c (_IO_fclose): Don't call fp->_jumps->__close; it's
- too low-level. Instead call _IO_file_close_it.
- * dbz/Makefile.in (rclean, distclean): Add some missing files.
-
-Wed Dec 1 13:19:14 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * config/hpux.mt (MATH_H_INLINES): No longer define.
- Patch from Jeffrey A Law <law@snake.cs.utah.edu>.
-
-Fri Nov 26 13:28:36 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * config.shared (CINCLUDES): Define default if libg++.
- * iofread.c: Use _IO_sgetn.c.
- * iolibio.h (_IO_clearerr): Fix typo.
- * genops.c (_IO_seekmark): Return 0 on success.
- * floactconv.c (Binit): Change to static.
- * iofclose.c (_IO_fclose): Check if file is _IO_stdin, _IO_stdout,
- or _IO_stderr; if so don't try to free it. Fix from hjl@nynexst.com.
-
- * genops.c (_IO_default_sync), libioP.h: New function.
- * libioP.h (_IO_default_close): Use _IO_default_sync -same interface.
-
- * Makefile.in: Increase version to 0.62.
- * iopopen.c (_IO_proc_close): Use waitpid (available in libibarty,
- if needed), rather than wait. Don't block/ignore SIGINT etc,
- as this is counter to Posix.2.
- * iopopen.c: Chain open proc_files, and have the child close
- the ones that are open (as required by Posix.2).
-
- * fstream.h (fstreambase::rdbuf), strstream.h (strstreambase
- ::rdbuf): Call ios::rdbuf() instead of getting _strbuf directly.
-
- * sbscan.cc (streambuf::vscan): Comment out duplicate default arg.
- * floatconv.c: Recognize Alpha and i860 as little-endian.
- * streambuf.cc: Return two bogus value returns from void functions.
- * iolibio.h, iofwrite.c: Fix buffer type to (const void*).
- * libio.h: Predefine of struct _IO_FILE to help non-g++-compilers.
- * libioP.h, pfstream.cc, stdfiles.c, iovfscanf.c: Cleanup syntax junk.
- * stdstreams.cc: Minor simplification.
- * streambuf.h, builtinbuf.cc: Add non-const ios::_IO_fix_vtable()
- for temporary binary compatibility.
-
- * filedoalloc.c, fileops.c: Add _POSIX_SOURCE.
- * fileops.c, iofopen.c, iofputs.c, iostream.cc, strops.c,
- strstream.cc, genops.c: Add some missing #includes.
- * iofopen.c, iofdopen.c: Return NULL if malloc fails.
- * iovfscanf.c: Fix return type in strtol prototype.
- * fwrite.c: Remove bogus file.
-
-Wed Nov 17 14:09:42 1993 Per Bothner (bothner@cygnus.com)
-
- * builtinbuf.cc (ios::_IO_fix_vtable), streambuf.h: Make method
- const, to reduce problems with -Wcast-qual.
-
-Tue Nov 16 19:30:42 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
-
- * config.shared (CXXINCLUDE): use ${} instead of $() for NOSTDINC
-
-Tue Nov 16 14:15:45 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iopopen.c (_IO_proc_close): Re-structure to avoid
- declarations after statements.
- * floatconv.c: If not __STDC__, #define DBL_MANT_DIG.
- * config/isc.mt (G_CONFIG_ARGS): Remove bogus spaces.
- Patch from David A. Avery <daa@nic.cerf.net>.
-
-Tue Nov 16 15:58:31 1993 Mark Eichin (eichin@cygnus.com)
-
- * Makefile.in (_G_config.h): explicitly use $(SHELL) to run
- gen-params, since we know it is a script (we're explicitly looking
- in ${srcdir} for it) and /bin/sh might not be good enough.
-
-Mon Nov 15 13:26:22 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * builtinbuf.cc: Don't depend on initialization of static
- variable builtinbuf::vtable, since that might happen after
- we need it (for a static constructor). Instead, initialize
- it when needed by inlining the code from get_builtin_vtable
- into ios::_IO_fix_vtable().
-
- * floatconv.c: Avoid using #elif, which some C compilers lack.
- * iogetline.c, libioP.h: Make char parameter be int, to avoid
- some default promotion anomalies.
-
-Fri Nov 5 11:49:46 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * config.shared (do-clean-dvi): Remove TeX work files.
- * iopopen.c (extern _IO_fork): Don't use parameter type void.
- * strops.c (_IO_str_init_static): Clear the allocate_buffer
- function pointer, to mark the strfile as being static.
- Bug fix from Mike Raisbeck <mike@pudding.rtr.COM>.
-
-Thu Nov 4 10:44:24 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * filebuf.cc (filebuf:): Use sseekoff rather than seekoff
- (which loses if vtable pointer is NULL).
-
- * iostream.cc (ostream::operator<<(long long n)): Fix thinko.
-
- * Makefile.in (VERSION): Increase to 0.60.
- * Makefile.in (IO_OBJECTS): Added iopopen.o.
- * config.shared (DISTCLEAN): Also remove Make.pack.
- * config.shared (CXXINCLUDES): Add $(NOSTDINC).
-
- * config.shared (INSTALL): Fix so it ues the correct install.sh
- whether $srcdir is absolute or relative.
-
- * floatconv.c (DBL_MAX_10_EXP): Fix default value.
-
-Wed Nov 3 10:20:49 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * gen-params: Make more robust to allow random junk (NeXT
- has spaces) before typedefs.
-
- * fileops.c (_IO_file_overflow): Reduce code duplication.
- * Makefile.in (IO_OBJECTS): Remove ioputs.o.
-
- * iovfscanf.c, libio.h: Extra parameter to _IO_vfscanf,
- for optionally setting an error indication..
- * iofscanf.c, ioscanf.c, iofscanf.c, iovsscanf.c: Fix calls to
- _IO_vfscanf to pass an extra NULL.
- * sbscan.cc (streambuf::vscan): If passed an extra stream,
- set its error state (using new _IO_vfscanf parameter.
-
- * filedoalloc.c, fileops.c, genops.c, iogetline.c, ioignore.c,
- libio.h, libioP.h, streambuf.cc streambuf.h, strfile.h, strops.c,
- strstream.cc: Replace macros (_base, _ebuf, _eback, _gptr, _egptr,
- _pbase, _pptr, _epptr) by field names (_IO_buf_base, _IO_buf_end,
- _IO_read_base, _IO_read_pre, IO_read_end, _IO_write_base,
- _IO_write_ptr, _IO_write_end).
- * libio.h: Remove the old macros (which fixes a conflict.
-
-Mon Nov 1 15:22:12 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iostream.cc: Use _IO_sputn instead of sputn. _IO_sputn does
- not require a vtable pointer, and is also slightly faster.
-
- * builtinbuf.{h,cc} (builtinbuf::setbuf): Fix return and
- parameter types.
-
-Mon Oct 25 12:56:33 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- Kludge to make sure _IO_FILE buffers get flushed before exit.
- * dbz/dbzmain.c, dbz/fake.c, dbz/byteflip.c:
- Invoke DBZ_FINISH macro (if defined) before (normal) exits.
- * dbz/Makefile.in (CFLAGS): Define DBZ_FINISH to call _IO_flush_all.
-
-Sat Oct 23 22:10:53 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * Makefile.in (VERSION): Set to 0.60 for libg++ release.
- * fileops.c (_IO_file_attach): Set _offset to _IO_pos_BAD.
- * iostream.cc (ostream::flush): Fix thinkp.
- * editbuf.cc, isgetsb.cc, isscan.cc, osform.cc, parsestream.cc,
- pfstream.cc, sbform.cc, sbscan.cc, stdstreams.cc, stream.cc:
- Replace #include "ioprivate.h" by #include "libioP.h" (and
- sometimes stdarg.h, stdlib.h and/or string.h).
- * ioprivate.h: Removed.
-
-
-Thu Oct 21 19:24:02 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * PlotFile.h, SFile.h, editbuf.cc, editbuf.h, filebuf.cc,
- fstream.cc, fstream.h, indstream.cc, indstream.h, iomanip.cc,
- iomanip.h, ioprivate.h, iostream.cc, iostream.h, isgetline.cc,
- isgetsb.cc, parsestream.cc, parsestream.h, pfstream.cc,
- pfstream.h, procbuf.cc, procbuf.h, stdiostream.cc, stdiostream.h,
- stdstreams.cc, streambuf.cc, streambuf.h, strstream.cc,
- strstream.h: Remove old (duplicate) copyright notices.
-
- * iostream.cc: Fix calls to sync() to be safe in the presence
- of vtable-less streambufs.
-
-Wed Oct 20 15:22:04 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * streambuf.h (streambuf::underflow, streambuf::overflow):
- Don't make virtual functions pure.
- * streambuf.cc (streambuf::underflow, streambuf::overflow):
- Default definitions (return EOF).
- * fstream.h: Add new (int fd, char* buf, int len) constructors.
- These are deprecated, but added for AT&T compatibility.
- * fstream.cc fstreambase::fstreambase(int fd, char *p, int l): New.
-
-Thu Oct 14 14:57:01 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
-
- * configure.in: use 'mv -f' instead of 'mv'
-
-Tue Oct 12 05:01:44 1993 Mike Stump (mrs@cygnus.com)
-
- * floatconv.c: Fix typo, change __STDC to __STDC__.
-
-Mon Oct 11 17:03:12 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * cleanup.c: It should be #if _G_HAVE_ATEXIT, not #ifdef.
-
- * floatconv.c, iostrerror.c, iovfprintf.c, iovfscanf.c, libioP.h:
- Bunch of fixes to allow use of non-ANSI (K&R) C compilers.
-
- * Makefile.in (iostream.list): Use CC=$(CXX) to force use of gcc.
- * README: New file.
-
-Fri Oct 8 16:19:58 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * Makefile.in: Move ioungetc.o from STDIO_WRAP_OBJECTS to
- IO_OBJECTS (since it is needed for iovfscanf.c).
- * iostrerror.c: Add declaration of strerror.
-
-Thu Oct 7 12:02:28 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * cleanup.c: New file, to cause flushing at exit.
- * filedoalloc.c: Cause flushing on exit.
- * Makefile.in (OSPRIM_OBJECTS): Add cleanup.o.
- * gen-params: Check for atexit.
-
-Tue Oct 5 19:11:14 1993 Mike Stump (mrs@cygnus.com)
-
- * ioperror.c (_IO_strerror): Add missing ()s in _PARAMS usage.
-
-Tue Oct 5 10:33:37 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iofprintf.c, iofscanf.c, ioprintf.c, ioscanf.c, iosprintf.c,
- iosscanf.c: Remove bogus semi-colon after va_dcl.
- * ioperror.c: Fix typos in declaration.
-
-Mon Oct 4 17:12:22 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * configure.in (CLEAN): Define (as _G_config.h *.a).
-
- * fileops.c (_IO_file_read): Don't assume EINTR is defined.
- * iosetbuf.c: Replace by generalized ...
- * iosetbuffer.c: ... variant, derived from BSD.
- * Makefile.in (STDIO_WRAP_OBJECTS): Change correspondingly.
- * iosetvbuf.c (iosetvbuf): Minor ANSI tweak.
- * iostdio.h (setbuf, setlinebuf): New #defines.
- * iolibio.h (_IO_setbuf, _IO_setlinebuf): (Re-)define as macros.
- * Makefile.in (LIBIO_OBJECTS): New macro.
-
-Tue Sep 28 14:15:52 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * libioP.h (_IO_proc_open, _IO_proc_close): Add missing return types.
- * procbuf.cc: Belated fixes.
-
-Mon Sep 27 14:04:47 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * Makefile.in: List new files. Add STDIO_WRAP_OBJECTS macro.
- * floatconv.c (d2b): Use Exp_msk11 instead of Exp_msk1.
- * iofgetpos.c (_IO_fgetpos), iofsetpos.c (_IO_fsetpos): Clean up.
- * iolibio.h: New file. Declarations of _IO_foo, for most foo
- where foo is a stdio function. (Remove these from libio.h.)
- * iostream.h (istream::istreambuf, ostream::ostreambuf): Move
- obsolete functions inside #ifdef _STREAM_COMPAT.
- * libio.h, libioP.h, streambuf.h, parsestream.h, stdiostream.h:
- Use _IO_fpos_t rather than _IO_pos_t.
- * iopopen.c: New file type, for pipe (popen-like) streams.
- * procbuf.cc: Now just a C++ wrapper for the files in iopopen.c.
- * streambuf.h (ios::unsetf): Return complete old value of flags.
- * iogets.c (_IO_gets(), ioungetc.c (_IO_ungetc), ioperror.c
- (_IO_perror), iostrerror.c (_IO_strerror): New files and
- functions, for stdio implementation.
- * iostdio.h: Add declarations for various recently-added functions.
-
-Sun Sep 12 14:24:55 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * streambuf.h (ios::showpos):: Fix typo.
-
-Fri Aug 27 12:05:47 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iopadn.c (_IO_padn): Change to return count of chars written.
- * outfloat.c, iovfprintf.c: Change for new _IO_padn interface.
- * iostream.cc (ostream::operator<<): Make sure to set badbit
- on a failure (many places). Use _IO_padn more.
- * iostream.cc (ostream& ostream::operator<<(const void *p): Move to
- * osform.cc: ... here, to reduce linking-in-the-world syndrome.
- * osform.cc: Use rdbuf(), instead of _strbuf directly.
-
- * genops.c (_IO_sgetn), libio.h: New function.
- * streambuf.h (streambuf.h::sgetn): Use _IO_sgetn.
- * SFile.cc (SFile::operator[]): Use sseekoff, not seekoff.
-
-Thu Aug 26 10:16:31 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
-
- * config.shared (SUBDIRS): only recurse if the directory is configured
-
-Wed Aug 25 12:56:12 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * config/{hpux.mt, isc.mt, sco4.mt}:
- Moved from ../libg++/config (since they affect _G_config.h).
- * configure.in: Set target_make_frag to one of the above files.
-
-Fri Aug 20 00:53:14 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * iofopen.c (iofopen): Fix type passed to _IO_un_link().
- * Makefile.in (_G_config.h): Pass $CC (not $CXX) as CC.
-
- * configure.in (configdirs): Add dbz and stdio.
- * fileops.c (_IO_file_seekoff): Convert more old functionality.
- * iofdopen.c: Use mode parameter to set _flags.
- * iofscanf.c, ioputs.c, ioscanf.c, iosprintf.c: New files.
- * Makefile.in (IO_OBJECTS): Added new objects.
- * iostdio.h: Add feof. fscanf, puts, sprintf, vsprintf.
- * libio.h: Add _IO_vprintf macro.
- * iofopen.c: Invoke _IO_un_link if failure.
- * iovsprintf.c: Write terminating NUL.
-
- * libioP.h: Add COERCE_FILE macro (by default does nothing).
- * iofclose.c, iofflush.c, iofgets.c, iofprintf.c, iofputs.c,
- iofread.c, ioftell.c, iofwrite.c, iosetbuf.c, iosetvbuf.c:
- Invoke COERCE_FILE macro.
- * ioftell.c: Use _IO_seekoff.
-
-Wed Aug 18 22:49:56 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * sbform.cc (streambuf::form), sbscan.cc (streambuf::scan):
- Remove cast to _IO_va_list. (Loses if array type.)
-
- * libio.h: Handle _IO_va_list for systems that need <stdarg.h>.
- * floatconv.h: Fix typo (reported by H.J.Lu).
-
-Wed Aug 18 19:34:04 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
-
- * configure.in (INSTALLDIR): handle native vs. cross case
-
- * Makefile.in (install): don't use $TARGETLIB, set INSTALLDIR to
- $(libdir)
-
-Wed Aug 18 12:10:03 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * Makefile.in: Rename iostream-files to iostream.list.
- * configure.in: Add iostream.list to MOSTLYCLEAN.
-
-Tue Aug 17 18:56:59 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- * Makefile.in: Depend on _G_config.h where appropriate.
- * config.shared (CXXINCLUDES): If doing libg++, search ../libio.
-
-Tue Aug 17 17:34:24 1993 Per Bothner (bothner@kalessin.cygnus.com)
-
- New directory. Based on old libg++/iostream code,
- but extensively re-written.
diff --git a/contrib/libstdc++/libio/Makefile.am b/contrib/libstdc++/libio/Makefile.am
deleted file mode 100644
index dbba6ff..0000000
--- a/contrib/libstdc++/libio/Makefile.am
+++ /dev/null
@@ -1,67 +0,0 @@
-## Makefile for the libio subdirectory of the GNU C++ Standard library.
-##
-## Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-##
-## This file is part of the libstdc++ version 3 distribution.
-## Process this file with automake to produce Makefile.in.
-
-## 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 2, 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 COPYING. If not, write to the Free
-## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-## USA.
-
-AUTOMAKE_OPTIONS = 1.3 cygnus
-
-mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
-
-if GLIBCPP_BUILD_LIBIO
-noinst_LTLIBRARIES = libio.la
-else
-noinst_LTLIBRARIES =
-endif
-
-# Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES
-GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@
-TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
-LIBIO_INCLUDES = @LIBIO_INCLUDES@
-
-INCLUDES = \
- -nostdinc++ \
- $(GLIBCPP_INCLUDES) $(LIBIO_INCLUDES) $(TOPLEVEL_INCLUDES)
-
-libio_headers = \
- libio.h libioP.h iolibio.h
-
-if GLIBCPP_NEED_LIBIO
-LIBIO_SRCS = \
- filedoalloc.c genops.c fileops.c stdfiles.c c_codecvt.c \
- iofclose.c iofopen.c
-else
-LIBIO_SRCS =
-endif
-
-if GLIBCPP_NEED_WLIBIO
-LIBIO_WSRCS = \
- wfiledoalloc.c wfileops.c wgenops.c iofwide.c
-else
-LIBIO_WSRCS =
-endif
-
-
-EXTRA_DIST = iostreamP.h
-
-libio_la_SOURCES = $(LIBIO_SRCS) $(LIBIO_WSRCS)
-
-
-AM_CFLAGS = -D_GNU_SOURCE @DEBUG_FLAGS@
diff --git a/contrib/libstdc++/libio/Makefile.in b/contrib/libstdc++/libio/Makefile.in
deleted file mode 100644
index a5384b8..0000000
--- a/contrib/libstdc++/libio/Makefile.in
+++ /dev/null
@@ -1,406 +0,0 @@
-# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-
-# Copyright (C) 1994, 1995-8, 1999, 2001 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.
-
-
-SHELL = @SHELL@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-sbindir = @sbindir@
-libexecdir = @libexecdir@
-datadir = @datadir@
-sysconfdir = @sysconfdir@
-sharedstatedir = @sharedstatedir@
-localstatedir = @localstatedir@
-libdir = @libdir@
-infodir = @infodir@
-mandir = @mandir@
-includedir = @includedir@
-oldincludedir = /usr/include
-
-DESTDIR =
-
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-
-top_builddir = ..
-
-ACLOCAL = @ACLOCAL@
-AUTOCONF = @AUTOCONF@
-AUTOMAKE = @AUTOMAKE@
-AUTOHEADER = @AUTOHEADER@
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-transform = @program_transform_name@
-
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_alias = @build_alias@
-build_triplet = @build@
-host_alias = @host_alias@
-host_triplet = @host@
-target_alias = @target_alias@
-target_triplet = @target@
-AR = @AR@
-AS = @AS@
-ATOMICITY_INC_SRCDIR = @ATOMICITY_INC_SRCDIR@
-AWK = @AWK@
-BASIC_FILE_H = @BASIC_FILE_H@
-CC = @CC@
-CCODECVT_C = @CCODECVT_C@
-CCODECVT_H = @CCODECVT_H@
-CLOCALE_H = @CLOCALE_H@
-CMESSAGES_H = @CMESSAGES_H@
-CPP = @CPP@
-CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@
-CSTDIO_H = @CSTDIO_H@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-C_INCLUDE_DIR = @C_INCLUDE_DIR@
-DEBUG_FLAGS = @DEBUG_FLAGS@
-DLLTOOL = @DLLTOOL@
-EXEEXT = @EXEEXT@
-EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
-GCJ = @GCJ@
-GCJFLAGS = @GCJFLAGS@
-GLIBCPP_IS_CROSS_COMPILING = @GLIBCPP_IS_CROSS_COMPILING@
-LIBMATHOBJS = @LIBMATHOBJS@
-LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
-LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
-LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
-LIBTOOL = @LIBTOOL@
-LIBUNWIND_FLAG = @LIBUNWIND_FLAG@
-LN_S = @LN_S@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
-OPT_LDFLAGS = @OPT_LDFLAGS@
-OS_INC_SRCDIR = @OS_INC_SRCDIR@
-PACKAGE = @PACKAGE@
-RANLIB = @RANLIB@
-SECTION_FLAGS = @SECTION_FLAGS@
-SECTION_LDFLAGS = @SECTION_LDFLAGS@
-STRIP = @STRIP@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-WARN_FLAGS = @WARN_FLAGS@
-WERROR = @WERROR@
-baseline_file = @baseline_file@
-check_msgfmt = @check_msgfmt@
-enable_shared = @enable_shared@
-enable_static = @enable_static@
-glibcpp_CXX = @glibcpp_CXX@
-glibcpp_MOFILES = @glibcpp_MOFILES@
-glibcpp_POFILES = @glibcpp_POFILES@
-glibcpp_basedir = @glibcpp_basedir@
-glibcpp_builddir = @glibcpp_builddir@
-glibcpp_localedir = @glibcpp_localedir@
-glibcpp_prefixdir = @glibcpp_prefixdir@
-glibcpp_srcdir = @glibcpp_srcdir@
-glibcpp_thread_h = @glibcpp_thread_h@
-glibcpp_toolexecdir = @glibcpp_toolexecdir@
-glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@
-gxx_include_dir = @gxx_include_dir@
-ifGNUmake = @ifGNUmake@
-libio_la = @libio_la@
-libtool_VERSION = @libtool_VERSION@
-toplevel_srcdir = @toplevel_srcdir@
-
-AUTOMAKE_OPTIONS = 1.3 cygnus
-
-mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
-@GLIBCPP_BUILD_LIBIO_TRUE@noinst_LTLIBRARIES = @GLIBCPP_BUILD_LIBIO_TRUE@libio.la
-@GLIBCPP_BUILD_LIBIO_FALSE@noinst_LTLIBRARIES =
-
-# Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES
-GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@
-TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
-LIBIO_INCLUDES = @LIBIO_INCLUDES@
-
-INCLUDES = \
- -nostdinc++ \
- $(GLIBCPP_INCLUDES) $(LIBIO_INCLUDES) $(TOPLEVEL_INCLUDES)
-
-
-libio_headers = \
- libio.h libioP.h iolibio.h
-
-@GLIBCPP_NEED_LIBIO_TRUE@LIBIO_SRCS = @GLIBCPP_NEED_LIBIO_TRUE@\
-@GLIBCPP_NEED_LIBIO_TRUE@ filedoalloc.c genops.c fileops.c stdfiles.c c_codecvt.c \
-@GLIBCPP_NEED_LIBIO_TRUE@ iofclose.c iofopen.c
-@GLIBCPP_NEED_LIBIO_FALSE@LIBIO_SRCS =
-@GLIBCPP_NEED_WLIBIO_TRUE@LIBIO_WSRCS = @GLIBCPP_NEED_WLIBIO_TRUE@\
-@GLIBCPP_NEED_WLIBIO_TRUE@ wfiledoalloc.c wfileops.c wgenops.c iofwide.c
-@GLIBCPP_NEED_WLIBIO_FALSE@LIBIO_WSRCS =
-
-EXTRA_DIST = iostreamP.h
-
-libio_la_SOURCES = $(LIBIO_SRCS) $(LIBIO_WSRCS)
-
-AM_CFLAGS = -D_GNU_SOURCE @DEBUG_FLAGS@
-CONFIG_HEADER = ../config.h
-CONFIG_CLEAN_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-
-
-DEFS = @DEFS@ -I. -I$(srcdir) -I..
-CPPFLAGS = @CPPFLAGS@
-LDFLAGS = @LDFLAGS@
-LIBS = @LIBS@
-libio_la_LDFLAGS =
-libio_la_LIBADD =
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@libio_la_OBJECTS = \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@filedoalloc.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@genops.lo fileops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@stdfiles.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@c_codecvt.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@iofclose.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@iofopen.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@wfiledoalloc.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@wfileops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@wgenops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_TRUE@iofwide.lo
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@libio_la_OBJECTS = \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@wfiledoalloc.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@wfileops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@wgenops.lo \
-@GLIBCPP_NEED_WLIBIO_TRUE@@GLIBCPP_NEED_LIBIO_FALSE@iofwide.lo
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@libio_la_OBJECTS = \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@filedoalloc.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@genops.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@fileops.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@stdfiles.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@c_codecvt.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@iofclose.lo \
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_TRUE@iofopen.lo
-@GLIBCPP_NEED_WLIBIO_FALSE@@GLIBCPP_NEED_LIBIO_FALSE@libio_la_OBJECTS =
-CFLAGS = @CFLAGS@
-COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
-DIST_COMMON = ChangeLog Makefile.am Makefile.in
-
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
-TAR = gtar
-GZIP_ENV = --best
-SOURCES = $(libio_la_SOURCES)
-OBJECTS = $(libio_la_OBJECTS)
-
-all: all-redirect
-.SUFFIXES:
-.SUFFIXES: .S .c .lo .o .obj .s
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
- cd $(top_srcdir) && $(AUTOMAKE) --cygnus libio/Makefile
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-
-mostlyclean-noinstLTLIBRARIES:
-
-clean-noinstLTLIBRARIES:
- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-
-distclean-noinstLTLIBRARIES:
-
-maintainer-clean-noinstLTLIBRARIES:
-
-.c.o:
- $(COMPILE) -c $<
-
-# FIXME: We should only use cygpath when building on Windows,
-# and only if it is available.
-.c.obj:
- $(COMPILE) -c `cygpath -w $<`
-
-.s.o:
- $(COMPILE) -c $<
-
-.S.o:
- $(COMPILE) -c $<
-
-mostlyclean-compile:
- -rm -f *.o core *.core
- -rm -f *.$(OBJEXT)
-
-clean-compile:
-
-distclean-compile:
- -rm -f *.tab.c
-
-maintainer-clean-compile:
-
-.c.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-.s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-.S.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
-
-maintainer-clean-libtool:
-
-libio.la: $(libio_la_OBJECTS) $(libio_la_DEPENDENCIES)
- $(LINK) $(libio_la_LDFLAGS) $(libio_la_OBJECTS) $(libio_la_LIBADD) $(LIBS)
-
-tags: TAGS
-
-ID: $(HEADERS) $(SOURCES) $(LISP)
- list='$(SOURCES) $(HEADERS)'; \
- unique=`for i in $$list; do echo $$i; done | \
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- here=`pwd` && cd $(srcdir) \
- && mkid -f$$here/ID $$unique $(LISP)
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS)'; \
- unique=`for i in $$list; do echo $$i; done | \
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-
-mostlyclean-tags:
-
-clean-tags:
-
-distclean-tags:
- -rm -f TAGS ID
-
-maintainer-clean-tags:
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-
-subdir = libio
-
-distdir: $(DISTFILES)
- @for file in $(DISTFILES); do \
- if test -f $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- cp -pr $$d/$$file $(distdir)/$$file; \
- else \
- test -f $(distdir)/$$file \
- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
-info-am:
-info: info-am
-dvi-am:
-dvi: dvi-am
-check-am:
-check: check-am
-installcheck-am:
-installcheck: installcheck-am
-install-info-am:
-install-info: install-info-am
-install-exec-am:
-install-exec: install-exec-am
-
-install-data-am:
-install-data: install-data-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-install: install-am
-uninstall-am:
-uninstall: uninstall-am
-all-am: Makefile $(LTLIBRARIES)
-all-redirect: all-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-installdirs:
-
-
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -rm -f Makefile $(CONFIG_CLEAN_FILES)
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-
-maintainer-clean-generic:
-mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \
- mostlyclean-libtool mostlyclean-tags \
- mostlyclean-generic
-
-mostlyclean: mostlyclean-am
-
-clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \
- clean-tags clean-generic mostlyclean-am
-
-clean: clean-am
-
-distclean-am: distclean-noinstLTLIBRARIES distclean-compile \
- distclean-libtool distclean-tags distclean-generic \
- clean-am
- -rm -f libtool
-
-distclean: distclean-am
-
-maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \
- maintainer-clean-compile maintainer-clean-libtool \
- maintainer-clean-tags maintainer-clean-generic \
- distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-maintainer-clean: maintainer-clean-am
-
-.PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \
-clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \
-mostlyclean-compile distclean-compile clean-compile \
-maintainer-clean-compile mostlyclean-libtool distclean-libtool \
-clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
-distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
-dvi-am dvi check check-am installcheck-am installcheck install-info-am \
-install-info install-exec-am install-exec install-data-am install-data \
-install-am install uninstall-am uninstall all-redirect all-am all \
-installdirs mostlyclean-generic distclean-generic clean-generic \
-maintainer-clean-generic clean mostlyclean distclean maintainer-clean
-
-
-# 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/contrib/libstdc++/libio/_G_config.h b/contrib/libstdc++/libio/_G_config.h
deleted file mode 100644
index d6738c2..0000000
--- a/contrib/libstdc++/libio/_G_config.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/* This file is needed by libio to define various configuration parameters.
- These are always the same in the GNU C library. */
-
-#ifndef _G_config_h
-#define _G_config_h 1
-
-#ifndef _LIBC
-# include <bits/c++config.h>
-# ifdef _GLIBCPP_USE_THREADS
-# define _IO_MTSAFE_IO
-# endif
-#endif
-
-/* Define types for libio in terms of the standard internal type names. */
-
-#include <sys/types.h>
-#define __need_size_t
-#define __need_wchar_t
-#define __need_wint_t
-#define __need_NULL
-#define __need_ptrdiff_t
-#ifdef __cplusplus
-# include <cstddef>
-#else
-# include <stddef.h>
-#endif
-
-
-#ifndef _WINT_T
-/* Integral type unchanged by default argument promotions that can
- hold any value corresponding to members of the extended character
- set, as well as at least one value that does not correspond to any
- member of the extended character set. */
-# define _WINT_T
-typedef unsigned int wint_t;
-#endif
-
-/* For use as part of glibc (native) or as part of libstdc++ (maybe
- not glibc) */
-#ifndef __c_mbstate_t_defined
-# define __c_mbstate_t_defined 1
-/*# ifdef _GLIBCPP_USE_WCHAR_T*/
-typedef struct
-{
- int count;
- wint_t value;
-}__c_mbstate_t;
-/*# endif*/
-#endif
-#undef __need_mbstate_t
-
-typedef size_t _G_size_t;
-
-
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-typedef struct
-{
- __off_t __pos;
- __c_mbstate_t __state;
-} _G_fpos_t;
-
-typedef struct
-{
- __off64_t __pos;
- __c_mbstate_t __state;
-} _G_fpos64_t;
-#else
-typedef __off_t _G_fpos_t;
-typedef __off64_t _G_fpos64_t;
-#endif
-#define _G_ssize_t __ssize_t
-#define _G_off_t __off_t
-#define _G_off64_t __off64_t
-#define _G_pid_t __pid_t
-#define _G_uid_t __uid_t
-#define _G_wchar_t wchar_t
-#define _G_wint_t wint_t
-#define _G_stat64 stat64
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-# include <iconv.h>
-typedef iconv_t _G_iconv_t;
-#endif
-
-typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
-typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
-typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
-typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
-
-#define _G_HAVE_BOOL 1
-
-
-/* These library features are always available in the GNU C library. */
-#define _G_HAVE_ATEXIT 1
-#define _G_HAVE_SYS_CDEFS 1
-#define _G_HAVE_SYS_WAIT 1
-#define _G_NEED_STDARG_H 1
-#define _G_va_list __gnuc_va_list
-
-#define _G_HAVE_PRINTF_FP 1
-#define _G_HAVE_MMAP 1
-#define _G_HAVE_LONG_DOUBLE_IO 1
-#define _G_HAVE_IO_FILE_OPEN 1
-#define _G_HAVE_IO_GETLINE_INFO 1
-
-#define _G_IO_IO_FILE_VERSION 0x20001
-
-//#define _G_OPEN64 __open64
-//#define _G_LSEEK64 __lseek64
-//#define _G_FSTAT64(fd,buf) __fxstat64 (_STAT_VER, fd, buf)
-
-/* This is defined by <bits/stat.h> if `st_blksize' exists. */
-/*#define _G_HAVE_ST_BLKSIZE defined (_STATBUF_ST_BLKSIZE)*/
-
-#define _G_BUFSIZ 8192
-
-/* These are the vtbl details for ELF. */
-#define _G_NAMES_HAVE_UNDERSCORE 0
-#define _G_VTABLE_LABEL_HAS_LENGTH 1
-#ifndef _G_USING_THUNKS
-# define _G_USING_THUNKS 1
-#endif /* _G_USING_THUNKS */
-#define _G_VTABLE_LABEL_PREFIX "__vt_"
-#define _G_VTABLE_LABEL_PREFIX_ID __vt_
-
-#define _G_INTERNAL_CCS "UCS4"
-#define _G_HAVE_WEAK_SYMBOL 1
-#define _G_STDIO_USES_LIBIO 1
-
-#if defined __cplusplus || defined __STDC__
-# define _G_ARGS(ARGLIST) ARGLIST
-#else
-# define _G_ARGS(ARGLIST) ()
-#endif
-
-#endif /* _G_config.h */
-
diff --git a/contrib/libstdc++/libio/filedoalloc.c b/contrib/libstdc++/libio/filedoalloc.c
deleted file mode 100644
index 12c1135..0000000
--- a/contrib/libstdc++/libio/filedoalloc.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/* Copyright (C) 1993, 1997 Free Software Foundation, Inc.
- This file is part of the GNU IO 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 2, 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 COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, if you link this library with files
- compiled with a GNU compiler to produce an executable, this does
- not cause the resulting executable to be covered by the GNU General
- Public License. This exception does not however invalidate any
- other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/* Modified for GNU iostream by Per Bothner 1991, 1992. */
-
-#ifndef _POSIX_SOURCE
-# define _POSIX_SOURCE
-#endif
-#include "libioP.h"
-#include <sys/types.h>
-#include <sys/stat.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#include <unistd.h>
-#endif
-
-#ifdef _LIBC
-# undef isatty
-# define isatty(Fd) __isatty (Fd)
-#endif
-
-/*
- * Allocate a file buffer, or switch to unbuffered I/O.
- * Per the ANSI C standard, ALL tty devices default to line buffered.
- *
- * As a side effect, we set __SOPT or __SNPT (en/dis-able fseek
- * optimisation) right after the _fstat() that finds the buffer size.
- */
-
-int
-_IO_file_doallocate (fp)
- _IO_FILE *fp;
-{
- _IO_size_t size;
- int couldbetty;
- char *p;
- struct _G_stat64 st;
-
- if (fp->_fileno < 0 || _IO_SYSSTAT (fp, &st) < 0)
- {
- couldbetty = 0;
- size = _IO_BUFSIZ;
-#if 0
- /* do not try to optimise fseek() */
- fp->_flags |= __SNPT;
-#endif
- }
- else
- {
- couldbetty = S_ISCHR (st.st_mode);
-#if _IO_HAVE_ST_BLKSIZE
- size = st.st_blksize <= 0 ? _IO_BUFSIZ : st.st_blksize;
-#else
- size = _IO_BUFSIZ;
-#endif
- }
- ALLOC_BUF (p, size, EOF);
- _IO_setb (fp, p, p + size, 1);
- if (couldbetty && isatty (fp->_fileno))
- fp->_flags |= _IO_LINE_BUF;
- return 1;
-}
diff --git a/contrib/libstdc++/libio/fileops.c b/contrib/libstdc++/libio/fileops.c
deleted file mode 100644
index a830b5c..0000000
--- a/contrib/libstdc++/libio/fileops.c
+++ /dev/null
@@ -1,1049 +0,0 @@
-/* Copyright (C) 1993, 1995, 1997-1999, 2000 Free Software Foundation, Inc.
- This file is part of the GNU IO Library.
- Written by Per Bothner <bothner@cygnus.com>.
-
- 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 2, 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 COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, if you link this library with files
- compiled with a GNU compiler to produce an executable, this does
- not cause the resulting executable to be covered by the GNU General
- Public License. This exception does not however invalidate any
- other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-
-#ifndef _POSIX_SOURCE
-# define _POSIX_SOURCE
-#endif
-#include "libioP.h"
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <string.h>
-#include <errno.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#if _LIBC
-# include "../wcsmbs/wcsmbsload.h"
-# include <shlib-compat.h>
-#endif
-#ifndef errno
-extern int errno;
-#endif
-#ifndef __set_errno
-# define __set_errno(Val) errno = (Val)
-#endif
-
-
-#ifdef _LIBC
-# define open(Name, Flags, Prot) __open (Name, Flags, Prot)
-# define close(FD) __close (FD)
-# define lseek(FD, Offset, Whence) __lseek (FD, Offset, Whence)
-# define read(FD, Buf, NBytes) __read (FD, Buf, NBytes)
-# define write(FD, Buf, NBytes) __write (FD, Buf, NBytes)
-#else
-# define _IO_new_do_write _IO_do_write
-# define _IO_new_file_attach _IO_file_attach
-# define _IO_new_file_close_it _IO_file_close_it
-# define _IO_new_file_finish _IO_file_finish
-# define _IO_new_file_fopen _IO_file_fopen
-# define _IO_new_file_init _IO_file_init
-# define _IO_new_file_setbuf _IO_file_setbuf
-# define _IO_new_file_sync _IO_file_sync
-# define _IO_new_file_overflow _IO_file_overflow
-# define _IO_new_file_seekoff _IO_file_seekoff
-# define _IO_new_file_underflow _IO_file_underflow
-# define _IO_new_file_write _IO_file_write
-# define _IO_new_file_xsputn _IO_file_xsputn
-#endif
-
-/* An fstream can be in at most one of put mode, get mode, or putback mode.
- Putback mode is a variant of get mode.
-
- In a filebuf, there is only one current position, instead of two
- separate get and put pointers. In get mode, the current position
- is that of gptr(); in put mode that of pptr().
-
- The position in the buffer that corresponds to the position
- in external file system is normally _IO_read_end, except in putback
- mode, when it is _IO_save_end.
- If the field _fb._offset is >= 0, it gives the offset in
- the file as a whole corresponding to eGptr(). (?)
-
- PUT MODE:
- If a filebuf is in put mode, then all of _IO_read_ptr, _IO_read_end,
- and _IO_read_base are equal to each other. These are usually equal
- to _IO_buf_base, though not necessarily if we have switched from
- get mode to put mode. (The reason is to maintain the invariant
- that _IO_read_end corresponds to the external file position.)
- _IO_write_base is non-NULL and usually equal to _IO_base_base.
- We also have _IO_write_end == _IO_buf_end, but only in fully buffered mode.
- The un-flushed character are those between _IO_write_base and _IO_write_ptr.
-
- GET MODE:
- If a filebuf is in get or putback mode, eback() != egptr().
- In get mode, the unread characters are between gptr() and egptr().
- The OS file position corresponds to that of egptr().
-
- PUTBACK MODE:
- Putback mode is used to remember "excess" characters that have
- been sputbackc'd in a separate putback buffer.
- In putback mode, the get buffer points to the special putback buffer.
- The unread characters are the characters between gptr() and egptr()
- in the putback buffer, as well as the area between save_gptr()
- and save_egptr(), which point into the original reserve buffer.
- (The pointers save_gptr() and save_egptr() are the values
- of gptr() and egptr() at the time putback mode was entered.)
- The OS position corresponds to that of save_egptr().
-
- LINE BUFFERED OUTPUT:
- During line buffered output, _IO_write_base==base() && epptr()==base().
- However, ptr() may be anywhere between base() and ebuf().
- This forces a call to filebuf::overflow(int C) on every put.
- If there is more space in the buffer, and C is not a '\n',
- then C is inserted, and pptr() incremented.
-
- UNBUFFERED STREAMS:
- If a filebuf is unbuffered(), the _shortbuf[1] is used as the buffer.
-*/
-
-#define CLOSED_FILEBUF_FLAGS \
- (_IO_IS_FILEBUF+_IO_NO_READS+_IO_NO_WRITES+_IO_TIED_PUT_GET)
-
-
-void
-_IO_new_file_init (fp)
- struct _IO_FILE_plus *fp;
-{
- /* POSIX.1 allows another file handle to be used to change the position
- of our file descriptor. Hence we actually don't know the actual
- position before we do the first fseek (and until a following fflush). */
- fp->file._offset = _IO_pos_BAD;
- fp->file._IO_file_flags |= CLOSED_FILEBUF_FLAGS;
-
- _IO_link_in (fp);
- fp->file._fileno = -1;
-}
-
-int
-_IO_new_file_close_it (fp)
- _IO_FILE *fp;
-{
- int write_status, close_status;
- if (!_IO_file_is_open (fp))
- return EOF;
-
- write_status = _IO_do_flush (fp);
-
- _IO_unsave_markers(fp);
-
- close_status = _IO_SYSCLOSE (fp);
-
- /* Free buffer. */
- if (fp->_mode <= 0)
- {
- _IO_setb (fp, NULL, NULL, 0);
- _IO_setg (fp, NULL, NULL, NULL);
- _IO_setp (fp, NULL, NULL);
- }
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- else
- {
- _IO_wsetb (fp, NULL, NULL, 0);
- _IO_wsetg (fp, NULL, NULL, NULL);
- _IO_wsetp (fp, NULL, NULL);
- }
-#endif
-
- _IO_un_link ((struct _IO_FILE_plus *) fp);
- fp->_flags = _IO_MAGIC|CLOSED_FILEBUF_FLAGS;
- fp->_fileno = -1;
- fp->_offset = _IO_pos_BAD;
-
- return close_status ? close_status : write_status;
-}
-
-void
-_IO_new_file_finish (fp, dummy)
- _IO_FILE *fp;
- int dummy;
-{
- if (_IO_file_is_open (fp))
- {
- _IO_do_flush (fp);
- if (!(fp->_flags & _IO_DELETE_DONT_CLOSE))
- _IO_SYSCLOSE (fp);
- }
- _IO_default_finish (fp, 0);
-}
-
-#if defined __GNUC__ && __GNUC__ >= 2
-__inline__
-#endif
-_IO_FILE *
-_IO_file_open (fp, filename, posix_mode, prot, read_write, is32not64)
- _IO_FILE *fp;
- const char *filename;
- int posix_mode;
- int prot;
- int read_write;
- int is32not64;
-{
- int fdesc;
-#ifdef _G_OPEN64
- fdesc = (is32not64
- ? open (filename, posix_mode, prot)
- : _G_OPEN64 (filename, posix_mode, prot));
-#else
- fdesc = open (filename, posix_mode, prot);
-#endif
- if (fdesc < 0)
- return NULL;
- fp->_fileno = fdesc;
- _IO_mask_flags (fp, read_write,_IO_NO_READS+_IO_NO_WRITES+_IO_IS_APPENDING);
- if (read_write & _IO_IS_APPENDING)
- if (_IO_SEEKOFF (fp, (_IO_off64_t)0, _IO_seek_end, _IOS_INPUT|_IOS_OUTPUT)
- == _IO_pos_BAD && errno != ESPIPE)
- return NULL;
- _IO_link_in ((struct _IO_FILE_plus *) fp);
- return fp;
-}
-
-_IO_FILE *
-_IO_new_file_fopen (fp, filename, mode, is32not64)
- _IO_FILE *fp;
- const char *filename;
- const char *mode;
- int is32not64;
-{
- int oflags = 0, omode;
- int read_write;
- int oprot = 0666;
- int i;
- _IO_FILE *result;
-#if _LIBC
- const char *cs;
-#endif
-
- if (_IO_file_is_open (fp))
- return 0;
- switch (*mode)
- {
- case 'r':
- omode = O_RDONLY;
- read_write = _IO_NO_WRITES;
- break;
- case 'w':
- omode = O_WRONLY;
- oflags = O_CREAT|O_TRUNC;
- read_write = _IO_NO_READS;
- break;
- case 'a':
- omode = O_WRONLY;
- oflags = O_CREAT|O_APPEND;
- read_write = _IO_NO_READS|_IO_IS_APPENDING;
- break;
- default:
- __set_errno (EINVAL);
- return NULL;
- }
- for (i = 1; i < 4; ++i)
- {
- switch (*++mode)
- {
- case '\0':
- break;
- case '+':
- omode = O_RDWR;
- read_write &= _IO_IS_APPENDING;
- continue;
- case 'x':
- oflags |= O_EXCL;
- continue;
- case 'b':
- default:
- /* Ignore. */
- continue;
- }
- break;
- }
-
- result = _IO_file_open (fp, filename, omode|oflags, oprot, read_write,
- is32not64);
-
-
-#if _LIBC
- /* Test whether the mode string specifies the conversion. */
- cs = strstr (mode, ",ccs=");
- if (cs != NULL)
- {
- /* Yep. Load the appropriate conversions and set the orientation
- to wide. */
- struct gconv_fcts fcts;
- struct _IO_codecvt *cc;
-
- if (! _IO_CHECK_WIDE (fp) || __wcsmbs_named_conv (&fcts, cs + 5) != 0)
- {
- /* Something went wrong, we cannot load the conversion modules.
- This means we cannot proceed since the user explicitly asked
- for these. */
- _IO_new_fclose (result);
- return NULL;
- }
-
- cc = fp->_codecvt = &fp->_wide_data->_codecvt;
-
- /* The functions are always the same. */
- *cc = __libio_codecvt;
-
- cc->__cd_in.__cd.__nsteps = 1; /* Only one step allowed. */
- cc->__cd_in.__cd.__steps = fcts.towc;
-
- cc->__cd_in.__cd.__data[0].__invocation_counter = 0;
- cc->__cd_in.__cd.__data[0].__internal_use = 1;
- cc->__cd_in.__cd.__data[0].__flags = __GCONV_IS_LAST;
- cc->__cd_in.__cd.__data[0].__statep = &result->_wide_data->_IO_state;
-
- cc->__cd_out.__cd.__nsteps = 1; /* Only one step allowed. */
- cc->__cd_out.__cd.__steps = fcts.tomb;
-
- cc->__cd_out.__cd.__data[0].__invocation_counter = 0;
- cc->__cd_out.__cd.__data[0].__internal_use = 1;
- cc->__cd_out.__cd.__data[0].__flags = __GCONV_IS_LAST;
- cc->__cd_out.__cd.__data[0].__statep = &result->_wide_data->_IO_state;
-
- /* Set the mode now. */
- result->_mode = 1;
- }
-#endif /* GNU libc */
-
- return result;
-}
-
-_IO_FILE *
-_IO_new_file_attach (fp, fd)
- _IO_FILE *fp;
- int fd;
-{
- if (_IO_file_is_open (fp))
- return NULL;
- fp->_fileno = fd;
- fp->_flags &= ~(_IO_NO_READS+_IO_NO_WRITES);
- fp->_flags |= _IO_DELETE_DONT_CLOSE;
- /* Get the current position of the file. */
- /* We have to do that since that may be junk. */
- fp->_offset = _IO_pos_BAD;
- if (_IO_SEEKOFF (fp, (_IO_off64_t)0, _IO_seek_cur, _IOS_INPUT|_IOS_OUTPUT)
- == _IO_pos_BAD && errno != ESPIPE)
- return NULL;
- return fp;
-}
-
-_IO_FILE *
-_IO_new_file_setbuf (fp, p, len)
- _IO_FILE *fp;
- char *p;
- _IO_ssize_t len;
-{
- if (_IO_default_setbuf (fp, p, len) == NULL)
- return NULL;
-
- fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_write_end
- = fp->_IO_buf_base;
- _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base);
-
- return fp;
-}
-
-static int new_do_write __P ((_IO_FILE *, const char *, _IO_size_t));
-
-/* Write TO_DO bytes from DATA to FP.
- Then mark FP as having empty buffers. */
-
-int
-_IO_new_do_write (fp, data, to_do)
- _IO_FILE *fp;
- const char *data;
- _IO_size_t to_do;
-{
- return (to_do == 0 || new_do_write (fp, data, to_do) == to_do) ? 0 : EOF;
-}
-
-static
-int
-new_do_write (fp, data, to_do)
- _IO_FILE *fp;
- const char *data;
- _IO_size_t to_do;
-{
- _IO_size_t count;
- if (fp->_flags & _IO_IS_APPENDING)
- /* On a system without a proper O_APPEND implementation,
- you would need to sys_seek(0, SEEK_END) here, but is
- is not needed nor desirable for Unix- or Posix-like systems.
- Instead, just indicate that offset (before and after) is
- unpredictable. */
- fp->_offset = _IO_pos_BAD;
- else if (fp->_IO_read_end != fp->_IO_write_base)
- {
- _IO_off64_t new_pos
- = _IO_SYSSEEK (fp, fp->_IO_write_base - fp->_IO_read_end, 1);
- if (new_pos == _IO_pos_BAD)
- return 0;
- fp->_offset = new_pos;
- }
- count = _IO_SYSWRITE (fp, data, to_do);
- if (fp->_cur_column && count)
- fp->_cur_column = _IO_adjust_column (fp->_cur_column - 1, data, count) + 1;
- _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base);
- fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_buf_base;
- fp->_IO_write_end = (fp->_mode < 0
- && (fp->_flags & (_IO_LINE_BUF+_IO_UNBUFFERED))
- ? fp->_IO_buf_base : fp->_IO_buf_end);
- return count;
-}
-
-int
-_IO_new_file_underflow (fp)
- _IO_FILE *fp;
-{
- _IO_ssize_t count;
-#if 0
- /* SysV does not make this test; take it out for compatibility */
- if (fp->_flags & _IO_EOF_SEEN)
- return (EOF);
-#endif
-
- if (fp->_flags & _IO_NO_READS)
- {
- fp->_flags |= _IO_ERR_SEEN;
- __set_errno (EBADF);
- return EOF;
- }
- if (fp->_IO_read_ptr < fp->_IO_read_end)
- return *(unsigned char *) fp->_IO_read_ptr;
-
- if (fp->_IO_buf_base == NULL)
- {
- /* Maybe we already have a push back pointer. */
- if (fp->_IO_save_base != NULL)
- {
- free (fp->_IO_save_base);
- fp->_flags &= ~_IO_IN_BACKUP;
- }
- _IO_doallocbuf (fp);
- }
-
- /* Flush all line buffered files before reading. */
- /* FIXME This can/should be moved to genops ?? */
- if (fp->_flags & (_IO_LINE_BUF|_IO_UNBUFFERED))
- _IO_flush_all_linebuffered ();
-
- _IO_switch_to_get_mode (fp);
-
- /* This is very tricky. We have to adjust those
- pointers before we call _IO_SYSREAD () since
- we may longjump () out while waiting for
- input. Those pointers may be screwed up. H.J. */
- fp->_IO_read_base = fp->_IO_read_ptr = fp->_IO_buf_base;
- fp->_IO_read_end = fp->_IO_buf_base;
- fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_write_end
- = fp->_IO_buf_base;
-
- count = _IO_SYSREAD (fp, fp->_IO_buf_base,
- fp->_IO_buf_end - fp->_IO_buf_base);
- if (count <= 0)
- {
- if (count == 0)
- fp->_flags |= _IO_EOF_SEEN;
- else
- fp->_flags |= _IO_ERR_SEEN, count = 0;
- }
- fp->_IO_read_end += count;
- if (count == 0)
- return EOF;
- if (fp->_offset != _IO_pos_BAD)
- _IO_pos_adjust (fp->_offset, count);
- return *(unsigned char *) fp->_IO_read_ptr;
-}
-
-int
-_IO_new_file_overflow (f, ch)
- _IO_FILE *f;
- int ch;
-{
- if (f->_flags & _IO_NO_WRITES) /* SET ERROR */
- {
- f->_flags |= _IO_ERR_SEEN;
- __set_errno (EBADF);
- return EOF;
- }
- /* If currently reading or no buffer allocated. */
- if ((f->_flags & _IO_CURRENTLY_PUTTING) == 0 || f->_IO_write_base == 0)
- {
- /* Allocate a buffer if needed. */
- if (f->_IO_write_base == 0)
- {
- _IO_doallocbuf (f);
- _IO_setg (f, f->_IO_buf_base, f->_IO_buf_base, f->_IO_buf_base);
- }
- /* Otherwise must be currently reading.
- If _IO_read_ptr (and hence also _IO_read_end) is at the buffer end,
- logically slide the buffer forwards one block (by setting the
- read pointers to all point at the beginning of the block). This
- makes room for subsequent output.
- Otherwise, set the read pointers to _IO_read_end (leaving that
- alone, so it can continue to correspond to the external position). */
- if (f->_IO_read_ptr == f->_IO_buf_end)
- f->_IO_read_end = f->_IO_read_ptr = f->_IO_buf_base;
- f->_IO_write_ptr = f->_IO_read_ptr;
- f->_IO_write_base = f->_IO_write_ptr;
- f->_IO_write_end = f->_IO_buf_end;
- f->_IO_read_base = f->_IO_read_ptr = f->_IO_read_end;
-
- f->_flags |= _IO_CURRENTLY_PUTTING;
- if (f->_mode < 0 && f->_flags & (_IO_LINE_BUF+_IO_UNBUFFERED))
- f->_IO_write_end = f->_IO_write_ptr;
- }
- if (ch == EOF)
- return _IO_new_do_write(f, f->_IO_write_base,
- f->_IO_write_ptr - f->_IO_write_base);
- if (f->_IO_write_ptr == f->_IO_buf_end ) /* Buffer is really full */
- if (_IO_do_flush (f) == EOF)
- return EOF;
- *f->_IO_write_ptr++ = ch;
- if ((f->_flags & _IO_UNBUFFERED)
- || ((f->_flags & _IO_LINE_BUF) && ch == '\n'))
- if (_IO_new_do_write(f, f->_IO_write_base,
- f->_IO_write_ptr - f->_IO_write_base) == EOF)
- return EOF;
- return (unsigned char) ch;
-}
-
-int
-_IO_new_file_sync (fp)
- _IO_FILE *fp;
-{
- _IO_ssize_t delta;
- int retval = 0;
-
- /* char* ptr = cur_ptr(); */
- if (fp->_IO_write_ptr > fp->_IO_write_base)
- if (_IO_do_flush(fp)) return EOF;
- delta = fp->_IO_read_ptr - fp->_IO_read_end;
- if (delta != 0)
- {
-#ifdef TODO
- if (_IO_in_backup (fp))
- delta -= eGptr () - Gbase ();
-#endif
- _IO_off64_t new_pos = _IO_SYSSEEK (fp, delta, 1);
- if (new_pos != (_IO_off64_t) EOF)
- fp->_IO_read_end = fp->_IO_read_ptr;
-#ifdef ESPIPE
- else if (errno == ESPIPE)
- ; /* Ignore error from unseekable devices. */
-#endif
- else
- retval = EOF;
- }
- if (retval != EOF)
- fp->_offset = _IO_pos_BAD;
- /* FIXME: Cleanup - can this be shared? */
- /* setg(base(), ptr, ptr); */
- return retval;
-}
-
-_IO_off64_t
-_IO_new_file_seekoff (fp, offset, dir, mode)
- _IO_FILE *fp;
- _IO_off64_t offset;
- int dir;
- int mode;
-{
- _IO_off64_t result;
- _IO_off64_t delta, new_offset;
- long count;
- /* POSIX.1 8.2.3.7 says that after a call the fflush() the file
- offset of the underlying file must be exact. */
- int must_be_exact = (fp->_IO_read_base == fp->_IO_read_end
- && fp->_IO_write_base == fp->_IO_write_ptr);
-
- if (mode == 0)
- dir = _IO_seek_cur, offset = 0; /* Don't move any pointers. */
-
- /* Flush unwritten characters.
- (This may do an unneeded write if we seek within the buffer.
- But to be able to switch to reading, we would need to set
- egptr to ptr. That can't be done in the current design,
- which assumes file_ptr() is eGptr. Anyway, since we probably
- end up flushing when we close(), it doesn't make much difference.)
- FIXME: simulate mem-papped files. */
-
- if (fp->_IO_write_ptr > fp->_IO_write_base || _IO_in_put_mode (fp))
- if (_IO_switch_to_get_mode (fp))
- return EOF;
-
- if (fp->_IO_buf_base == NULL)
- {
- /* It could be that we already have a pushback buffer. */
- if (fp->_IO_read_base != NULL)
- {
- free (fp->_IO_read_base);
- fp->_flags &= ~_IO_IN_BACKUP;
- }
- _IO_doallocbuf (fp);
- _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
- _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base);
- }
-
- switch (dir)
- {
- case _IO_seek_cur:
- /* Adjust for read-ahead (bytes is buffer). */
- offset -= fp->_IO_read_end - fp->_IO_read_ptr;
- if (fp->_offset == _IO_pos_BAD)
- goto dumb;
- /* Make offset absolute, assuming current pointer is file_ptr(). */
- offset += fp->_offset;
-
- dir = _IO_seek_set;
- break;
- case _IO_seek_set:
- break;
- case _IO_seek_end:
- {
- struct _G_stat64 st;
- if (_IO_SYSSTAT (fp, &st) == 0 && S_ISREG (st.st_mode))
- {
- offset += st.st_size;
- dir = _IO_seek_set;
- }
- else
- goto dumb;
- }
- }
- /* At this point, dir==_IO_seek_set. */
-
- /* If we are only interested in the current position we've found it now. */
- if (mode == 0)
- return offset;
-
- /* If destination is within current buffer, optimize: */
- if (fp->_offset != _IO_pos_BAD && fp->_IO_read_base != NULL
- && !_IO_in_backup (fp))
- {
- /* Offset relative to start of main get area. */
- _IO_off64_t rel_offset = (offset - fp->_offset
- + (fp->_IO_read_end - fp->_IO_read_base));
- if (rel_offset >= 0)
- {
-#if 0
- if (_IO_in_backup (fp))
- _IO_switch_to_main_get_area (fp);
-#endif
- if (rel_offset <= fp->_IO_read_end - fp->_IO_read_base)
- {
- _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base + rel_offset,
- fp->_IO_read_end);
- _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
- {
- _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- goto resync;
- }
- }
-#ifdef TODO
- /* If we have streammarkers, seek forward by reading ahead. */
- if (_IO_have_markers (fp))
- {
- int to_skip = rel_offset
- - (fp->_IO_read_ptr - fp->_IO_read_base);
- if (ignore (to_skip) != to_skip)
- goto dumb;
- _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- goto resync;
- }
-#endif
- }
-#ifdef TODO
- if (rel_offset < 0 && rel_offset >= Bbase () - Bptr ())
- {
- if (!_IO_in_backup (fp))
- _IO_switch_to_backup_area (fp);
- gbump (fp->_IO_read_end + rel_offset - fp->_IO_read_ptr);
- _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- goto resync;
- }
-#endif
- }
-
-#ifdef TODO
- _IO_unsave_markers (fp);
-#endif
-
- if (fp->_flags & _IO_NO_READS)
- goto dumb;
-
- /* Try to seek to a block boundary, to improve kernel page management. */
- new_offset = offset & ~(fp->_IO_buf_end - fp->_IO_buf_base - 1);
- delta = offset - new_offset;
- if (delta > fp->_IO_buf_end - fp->_IO_buf_base)
- {
- new_offset = offset;
- delta = 0;
- }
- result = _IO_SYSSEEK (fp, new_offset, 0);
- if (result < 0)
- return EOF;
- if (delta == 0)
- count = 0;
- else
- {
- count = _IO_SYSREAD (fp, fp->_IO_buf_base,
- (must_be_exact
- ? delta : fp->_IO_buf_end - fp->_IO_buf_base));
- if (count < delta)
- {
- /* We weren't allowed to read, but try to seek the remainder. */
- offset = count == EOF ? delta : delta-count;
- dir = _IO_seek_cur;
- goto dumb;
- }
- }
- _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base + delta,
- fp->_IO_buf_base + count);
- _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
- fp->_offset = result + count;
- _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- return offset;
- dumb:
-
- _IO_unsave_markers (fp);
- result = _IO_SYSSEEK (fp, offset, dir);
- if (result != EOF)
- {
- _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- fp->_offset = result;
- _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base);
- _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
- }
- return result;
-
-resync:
- /* We need to do it since it is possible that the file offset in
- the kernel may be changed behind our back. It may happen when
- we fopen a file and then do a fork. One process may access the
- the file and the kernel file offset will be changed. */
- if (fp->_offset >= 0)
- _IO_SYSSEEK (fp, fp->_offset, 0);
-
- return offset;
-}
-
-_IO_ssize_t
-_IO_file_read (fp, buf, size)
- _IO_FILE *fp;
- void *buf;
- _IO_ssize_t size;
-{
- return read (fp->_fileno, buf, size);
-}
-
-_IO_off64_t
-_IO_file_seek (fp, offset, dir)
- _IO_FILE *fp;
- _IO_off64_t offset;
- int dir;
-{
-#ifdef _G_LSEEK64
- return _G_LSEEK64 (fp->_fileno, offset, dir);
-#else
- return lseek (fp->_fileno, offset, dir);
-#endif
-}
-
-int
-_IO_file_stat (fp, st)
- _IO_FILE *fp;
- void *st;
-{
-#ifdef _G_FSTAT64
- return _G_FSTAT64 (fp->_fileno, (struct _G_stat64 *) st);
-#else
- return fstat (fp->_fileno, (struct stat *) st);
-#endif
-}
-
-int
-_IO_file_close (fp)
- _IO_FILE *fp;
-{
- return close (fp->_fileno);
-}
-
-_IO_ssize_t
-_IO_new_file_write (f, data, n)
- _IO_FILE *f;
- const void *data;
- _IO_ssize_t n;
-{
- _IO_ssize_t to_do = n;
- while (to_do > 0)
- {
- _IO_ssize_t count = write (f->_fileno, data, to_do);
- if (count < 0)
- {
- f->_flags |= _IO_ERR_SEEN;
- break;
- }
- to_do -= count;
- data = (void *) ((char *) data + count);
- }
- n -= to_do;
- if (f->_offset >= 0)
- f->_offset += n;
- return n;
-}
-
-_IO_size_t
-_IO_new_file_xsputn (f, data, n)
- _IO_FILE *f;
- const void *data;
- _IO_size_t n;
-{
- register const char *s = (const char *) data;
- _IO_size_t to_do = n;
- int must_flush = 0;
- _IO_size_t count;
-
- if (n <= 0)
- return 0;
- /* This is an optimized implementation.
- If the amount to be written straddles a block boundary
- (or the filebuf is unbuffered), use sys_write directly. */
-
- /* First figure out how much space is available in the buffer. */
- count = f->_IO_write_end - f->_IO_write_ptr; /* Space available. */
- if ((f->_flags & _IO_LINE_BUF) && (f->_flags & _IO_CURRENTLY_PUTTING))
- {
- count = f->_IO_buf_end - f->_IO_write_ptr;
- if (count >= n)
- {
- register const char *p;
- for (p = s + n; p > s; )
- {
- if (*--p == '\n')
- {
- count = p - s + 1;
- must_flush = 1;
- break;
- }
- }
- }
- }
- /* Then fill the buffer. */
- if (count > 0)
- {
- if (count > to_do)
- count = to_do;
- if (count > 20)
- {
-#ifdef _LIBC
- f->_IO_write_ptr = __mempcpy (f->_IO_write_ptr, s, count);
-#else
- memcpy (f->_IO_write_ptr, s, count);
- f->_IO_write_ptr += count;
-#endif
- s += count;
- }
- else
- {
- register char *p = f->_IO_write_ptr;
- register int i = (int) count;
- while (--i >= 0)
- *p++ = *s++;
- f->_IO_write_ptr = p;
- }
- to_do -= count;
- }
- if (to_do + must_flush > 0)
- {
- _IO_size_t block_size, do_write;
- /* Next flush the (full) buffer. */
- if (_IO_OVERFLOW (f, EOF) == EOF)
- return n - to_do;
-
- /* Try to maintain alignment: write a whole number of blocks.
- dont_write is what gets left over. */
- block_size = f->_IO_buf_end - f->_IO_buf_base;
- do_write = to_do - (block_size >= 128 ? to_do % block_size : 0);
-
- if (do_write)
- {
- count = new_do_write (f, s, do_write);
- to_do -= count;
- if (count < do_write)
- return n - to_do;
- }
-
- /* Now write out the remainder. Normally, this will fit in the
- buffer, but it's somewhat messier for line-buffered files,
- so we let _IO_default_xsputn handle the general case. */
- if (to_do)
- to_do -= _IO_default_xsputn (f, s+do_write, to_do);
- }
- return n - to_do;
-}
-
-_IO_size_t
-_IO_file_xsgetn (fp, data, n)
- _IO_FILE *fp;
- void *data;
- _IO_size_t n;
-{
- register _IO_size_t want, have;
- register _IO_ssize_t count;
- register char *s = data;
-
- want = n;
-
- if (fp->_IO_buf_base == NULL)
- {
- /* Maybe we already have a push back pointer. */
- if (fp->_IO_save_base != NULL)
- {
- free (fp->_IO_save_base);
- fp->_flags &= ~_IO_IN_BACKUP;
- }
- _IO_doallocbuf (fp);
- }
-
- while (want > 0)
- {
- have = fp->_IO_read_end - fp->_IO_read_ptr;
- if (want <= have)
- {
- memcpy (s, fp->_IO_read_ptr, want);
- fp->_IO_read_ptr += want;
- want = 0;
- }
- else
- {
- if (have > 0)
- {
-#ifdef _LIBC
- s = __mempcpy (s, fp->_IO_read_ptr, have);
-#else
- memcpy (s, fp->_IO_read_ptr, have);
- s += have;
-#endif
- want -= have;
- fp->_IO_read_ptr += have;
- }
-
- /* Check for backup and repeat */
- if (_IO_in_backup (fp))
- {
- _IO_switch_to_main_get_area (fp);
- continue;
- }
-
- /* If we now want less than a buffer, underflow and repeat
- the copy. Otherwise, _IO_SYSREAD directly to
- the user buffer. */
- if (fp->_IO_buf_base && want < fp->_IO_buf_end - fp->_IO_buf_base)
- {
- if (__underflow (fp) == EOF)
- break;
-
- continue;
- }
-
- /* These must be set before the sysread as we might longjmp out
- waiting for input. */
- _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base);
- _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
-
- /* Try to maintain alignment: read a whole number of blocks. */
- count = want;
- if (fp->_IO_buf_base)
- {
- _IO_size_t block_size = fp->_IO_buf_end - fp->_IO_buf_base;
- if (block_size >= 128)
- count -= want % block_size;
- }
-
- count = _IO_SYSREAD (fp, s, count);
- if (count <= 0)
- {
- if (count == 0)
- fp->_flags |= _IO_EOF_SEEN;
- else
- fp->_flags |= _IO_ERR_SEEN;
-
- break;
- }
-
- s += count;
- want -= count;
- if (fp->_offset != _IO_pos_BAD)
- _IO_pos_adjust (fp->_offset, count);
- }
- }
-
- return n - want;
-}
-
-struct _IO_jump_t _IO_file_jumps =
-{
- JUMP_INIT_DUMMY,
- JUMP_INIT(finish, _IO_new_file_finish),
- JUMP_INIT(overflow, _IO_new_file_overflow),
- JUMP_INIT(underflow, _IO_new_file_underflow),
- JUMP_INIT(uflow, _IO_default_uflow),
- JUMP_INIT(pbackfail, _IO_default_pbackfail),
- JUMP_INIT(xsputn, _IO_new_file_xsputn),
- JUMP_INIT(xsgetn, _IO_file_xsgetn),
- JUMP_INIT(seekoff, _IO_new_file_seekoff),
- JUMP_INIT(seekpos, _IO_default_seekpos),
- JUMP_INIT(setbuf, _IO_new_file_setbuf),
- JUMP_INIT(sync, _IO_new_file_sync),
- JUMP_INIT(doallocate, _IO_file_doallocate),
- JUMP_INIT(read, _IO_file_read),
- JUMP_INIT(write, _IO_new_file_write),
- JUMP_INIT(seek, _IO_file_seek),
- JUMP_INIT(close, _IO_file_close),
- JUMP_INIT(stat, _IO_file_stat),
- JUMP_INIT(showmanyc, _IO_default_showmanyc),
- JUMP_INIT(imbue, _IO_default_imbue)
-};
-
-#ifdef _LIBC
-versioned_symbol (libc, _IO_new_do_write, _IO_do_write, GLIBC_2_1);
-versioned_symbol (libc, _IO_new_file_attach, _IO_file_attach, GLIBC_2_1);
-versioned_symbol (libc, _IO_new_file_close_it, _IO_file_close_it, GLIBC_2_1);
-versioned_symbol (libc, _IO_new_file_finish, _IO_file_finish, GLIBC_2_1);
-versioned_symbol (libc, _IO_new_file_fopen, _IO_file_fopen, GLIBC_2_1);
-versioned_symbol (libc, _IO_new_file_init, _IO_file_init, GLIBC_2_1);
-versioned_symbol (libc, _IO_new_file_setbuf, _IO_file_setbuf, GLIBC_2_1);
-versioned_symbol (libc, _IO_new_file_sync, _IO_file_sync, GLIBC_2_1);
-versioned_symbol (libc, _IO_new_file_overflow, _IO_file_overflow, GLIBC_2_1);
-versioned_symbol (libc, _IO_new_file_seekoff, _IO_file_seekoff, GLIBC_2_1);
-versioned_symbol (libc, _IO_new_file_underflow, _IO_file_underflow, GLIBC_2_1);
-versioned_symbol (libc, _IO_new_file_write, _IO_file_write, GLIBC_2_1);
-versioned_symbol (libc, _IO_new_file_xsputn, _IO_file_xsputn, GLIBC_2_1);
-#endif
diff --git a/contrib/libstdc++/libio/genops.c b/contrib/libstdc++/libio/genops.c
deleted file mode 100644
index b1ae5af..0000000
--- a/contrib/libstdc++/libio/genops.c
+++ /dev/null
@@ -1,1123 +0,0 @@
-/* Copyright (C) 1993, 1995, 1997-1999, 2000 Free Software Foundation, Inc.
- This file is part of the GNU IO 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 2, 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 COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, if you link this library with files
- compiled with a GNU compiler to produce an executable, this does
- not cause the resulting executable to be covered by the GNU General
- Public License. This exception does not however invalidate any
- other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* Generic or default I/O operations. */
-
-#include "libioP.h"
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#include <string.h>
-
-#ifdef _IO_MTSAFE_IO
-static _IO_lock_t list_all_lock = _IO_lock_initializer;
-#endif
-
-void
-_IO_un_link (fp)
- struct _IO_FILE_plus *fp;
-{
- if (fp->file._flags & _IO_LINKED)
- {
- struct _IO_FILE_plus **f;
-#ifdef _IO_MTSAFE_IO
- _IO_lock_lock (list_all_lock);
-#endif
- for (f = &_IO_list_all; *f; f = (struct _IO_FILE_plus **) &(*f)->file._chain)
- {
- if (*f == fp)
- {
- *f = (struct _IO_FILE_plus *) fp->file._chain;
- break;
- }
- }
-#ifdef _IO_MTSAFE_IO
- _IO_lock_unlock (list_all_lock);
-#endif
- fp->file._flags &= ~_IO_LINKED;
- }
-}
-
-void
-_IO_link_in (fp)
- struct _IO_FILE_plus *fp;
-{
- if ((fp->file._flags & _IO_LINKED) == 0)
- {
- fp->file._flags |= _IO_LINKED;
-#ifdef _IO_MTSAFE_IO
- _IO_lock_lock (list_all_lock);
-#endif
- fp->file._chain = (_IO_FILE *) _IO_list_all;
- _IO_list_all = fp;
-#ifdef _IO_MTSAFE_IO
- _IO_lock_unlock (list_all_lock);
-#endif
- }
-}
-
-/* Return minimum _pos markers
- Assumes the current get area is the main get area. */
-_IO_ssize_t _IO_least_marker __P ((_IO_FILE *fp, char *end_p));
-
-_IO_ssize_t
-_IO_least_marker (fp, end_p)
- _IO_FILE *fp;
- char *end_p;
-{
- _IO_ssize_t least_so_far = end_p - fp->_IO_read_base;
- struct _IO_marker *mark;
- for (mark = fp->_markers; mark != NULL; mark = mark->_next)
- if (mark->_pos < least_so_far)
- least_so_far = mark->_pos;
- return least_so_far;
-}
-
-/* Switch current get area from backup buffer to (start of) main get area. */
-
-void
-_IO_switch_to_main_get_area (fp)
- _IO_FILE *fp;
-{
- char *tmp;
- fp->_flags &= ~_IO_IN_BACKUP;
- /* Swap _IO_read_end and _IO_save_end. */
- tmp = fp->_IO_read_end;
- fp->_IO_read_end = fp->_IO_save_end;
- fp->_IO_save_end= tmp;
- /* Swap _IO_read_base and _IO_save_base. */
- tmp = fp->_IO_read_base;
- fp->_IO_read_base = fp->_IO_save_base;
- fp->_IO_save_base = tmp;
- /* Set _IO_read_ptr. */
- fp->_IO_read_ptr = fp->_IO_read_base;
-}
-
-/* Switch current get area from main get area to (end of) backup area. */
-
-void
-_IO_switch_to_backup_area (fp)
- _IO_FILE *fp;
-{
- char *tmp;
- fp->_flags |= _IO_IN_BACKUP;
- /* Swap _IO_read_end and _IO_save_end. */
- tmp = fp->_IO_read_end;
- fp->_IO_read_end = fp->_IO_save_end;
- fp->_IO_save_end = tmp;
- /* Swap _IO_read_base and _IO_save_base. */
- tmp = fp->_IO_read_base;
- fp->_IO_read_base = fp->_IO_save_base;
- fp->_IO_save_base = tmp;
- /* Set _IO_read_ptr. */
- fp->_IO_read_ptr = fp->_IO_read_end;
-}
-
-int
-_IO_switch_to_get_mode (fp)
- _IO_FILE *fp;
-{
- if (fp->_IO_write_ptr > fp->_IO_write_base)
- if (_IO_OVERFLOW (fp, EOF) == EOF)
- return EOF;
- if (_IO_in_backup (fp))
- fp->_IO_read_base = fp->_IO_backup_base;
- else
- {
- fp->_IO_read_base = fp->_IO_buf_base;
- if (fp->_IO_write_ptr > fp->_IO_read_end)
- fp->_IO_read_end = fp->_IO_write_ptr;
- }
- fp->_IO_read_ptr = fp->_IO_write_ptr;
-
- fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_write_end = fp->_IO_read_ptr;
-
- fp->_flags &= ~_IO_CURRENTLY_PUTTING;
- return 0;
-}
-
-void
-_IO_free_backup_area (fp)
- _IO_FILE *fp;
-{
- if (_IO_in_backup (fp))
- _IO_switch_to_main_get_area (fp); /* Just in case. */
- free (fp->_IO_save_base);
- fp->_IO_save_base = NULL;
- fp->_IO_save_end = NULL;
- fp->_IO_backup_base = NULL;
-}
-
-#if 0
-int
-_IO_switch_to_put_mode (fp)
- _IO_FILE *fp;
-{
- fp->_IO_write_base = fp->_IO_read_ptr;
- fp->_IO_write_ptr = fp->_IO_read_ptr;
- /* Following is wrong if line- or un-buffered? */
- fp->_IO_write_end = (fp->_flags & _IO_IN_BACKUP
- ? fp->_IO_read_end : fp->_IO_buf_end);
-
- fp->_IO_read_ptr = fp->_IO_read_end;
- fp->_IO_read_base = fp->_IO_read_end;
-
- fp->_flags |= _IO_CURRENTLY_PUTTING;
- return 0;
-}
-#endif
-
-int
-__overflow (f, ch)
- _IO_FILE *f;
- int ch;
-{
- /* This is a single-byte stream. */
- if (f->_mode == 0)
- _IO_fwide (f, -1);
- return _IO_OVERFLOW (f, ch);
-}
-
-static int save_for_backup __P ((_IO_FILE *fp, char *end_p))
-#ifdef _LIBC
- internal_function
-#endif
- ;
-
-static int
-#ifdef _LIBC
-internal_function
-#endif
-save_for_backup (fp, end_p)
- _IO_FILE *fp;
- char *end_p;
-{
- /* Append [_IO_read_base..end_p] to backup area. */
- _IO_ssize_t least_mark = _IO_least_marker (fp, end_p);
- /* needed_size is how much space we need in the backup area. */
- _IO_size_t needed_size = (end_p - fp->_IO_read_base) - least_mark;
- /* FIXME: Dubious arithmetic if pointers are NULL */
- _IO_size_t current_Bsize = fp->_IO_save_end - fp->_IO_save_base;
- _IO_size_t avail; /* Extra space available for future expansion. */
- _IO_ssize_t delta;
- struct _IO_marker *mark;
- if (needed_size > current_Bsize)
- {
- char *new_buffer;
- avail = 100;
- new_buffer = (char *) malloc (avail + needed_size);
- if (new_buffer == NULL)
- return EOF; /* FIXME */
- if (least_mark < 0)
- {
-#ifdef _LIBC
- __mempcpy (__mempcpy (new_buffer + avail,
- fp->_IO_save_end + least_mark,
- -least_mark),
- fp->_IO_read_base,
- end_p - fp->_IO_read_base);
-#else
- memcpy (new_buffer + avail,
- fp->_IO_save_end + least_mark,
- -least_mark);
- memcpy (new_buffer + avail - least_mark,
- fp->_IO_read_base,
- end_p - fp->_IO_read_base);
-#endif
- }
- else
- memcpy (new_buffer + avail,
- fp->_IO_read_base + least_mark,
- needed_size);
- if (fp->_IO_save_base)
- free (fp->_IO_save_base);
- fp->_IO_save_base = new_buffer;
- fp->_IO_save_end = new_buffer + avail + needed_size;
- }
- else
- {
- avail = current_Bsize - needed_size;
- if (least_mark < 0)
- {
- memmove (fp->_IO_save_base + avail,
- fp->_IO_save_end + least_mark,
- -least_mark);
- memcpy (fp->_IO_save_base + avail - least_mark,
- fp->_IO_read_base,
- end_p - fp->_IO_read_base);
- }
- else if (needed_size > 0)
- memcpy (fp->_IO_save_base + avail,
- fp->_IO_read_base + least_mark,
- needed_size);
- }
- fp->_IO_backup_base = fp->_IO_save_base + avail;
- /* Adjust all the streammarkers. */
- delta = end_p - fp->_IO_read_base;
- for (mark = fp->_markers; mark != NULL; mark = mark->_next)
- mark->_pos -= delta;
- return 0;
-}
-
-int
-__underflow (fp)
- _IO_FILE *fp;
-{
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- if (fp->_vtable_offset == 0 && _IO_fwide (fp, -1) != -1)
- return EOF;
-#endif
-
- if (fp->_mode == 0)
- _IO_fwide (fp, -1);
- if (_IO_in_put_mode (fp))
- if (_IO_switch_to_get_mode (fp) == EOF)
- return EOF;
- if (fp->_IO_read_ptr < fp->_IO_read_end)
- return *(unsigned char *) fp->_IO_read_ptr;
- if (_IO_in_backup (fp))
- {
- _IO_switch_to_main_get_area (fp);
- if (fp->_IO_read_ptr < fp->_IO_read_end)
- return *(unsigned char *) fp->_IO_read_ptr;
- }
- if (_IO_have_markers (fp))
- {
- if (save_for_backup (fp, fp->_IO_read_end))
- return EOF;
- }
- else if (_IO_have_backup (fp))
- _IO_free_backup_area (fp);
- return _IO_UNDERFLOW (fp);
-}
-
-int
-__uflow (fp)
- _IO_FILE *fp;
-{
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- if (fp->_vtable_offset == 0 && _IO_fwide (fp, -1) != -1)
- return EOF;
-#endif
-
- if (fp->_mode == 0)
- _IO_fwide (fp, -11);
- if (_IO_in_put_mode (fp))
- if (_IO_switch_to_get_mode (fp) == EOF)
- return EOF;
- if (fp->_IO_read_ptr < fp->_IO_read_end)
- return *(unsigned char *) fp->_IO_read_ptr++;
- if (_IO_in_backup (fp))
- {
- _IO_switch_to_main_get_area (fp);
- if (fp->_IO_read_ptr < fp->_IO_read_end)
- return *(unsigned char *) fp->_IO_read_ptr++;
- }
- if (_IO_have_markers (fp))
- {
- if (save_for_backup (fp, fp->_IO_read_end))
- return EOF;
- }
- else if (_IO_have_backup (fp))
- _IO_free_backup_area (fp);
- return _IO_UFLOW (fp);
-}
-
-void
-_IO_setb (f, b, eb, a)
- _IO_FILE *f;
- char *b;
- char *eb;
- int a;
-{
- if (f->_IO_buf_base && !(f->_flags & _IO_USER_BUF))
- FREE_BUF (f->_IO_buf_base, _IO_blen (f));
- f->_IO_buf_base = b;
- f->_IO_buf_end = eb;
- if (a)
- f->_flags &= ~_IO_USER_BUF;
- else
- f->_flags |= _IO_USER_BUF;
-}
-
-void
-_IO_doallocbuf (fp)
- _IO_FILE *fp;
-{
- if (fp->_IO_buf_base)
- return;
- if (!(fp->_flags & _IO_UNBUFFERED))
- if (_IO_DOALLOCATE (fp) != EOF)
- return;
- _IO_setb (fp, fp->_shortbuf, fp->_shortbuf+1, 0);
-}
-
-int
-_IO_default_underflow (fp)
- _IO_FILE *fp;
-{
- return EOF;
-}
-
-int
-_IO_default_uflow (fp)
- _IO_FILE *fp;
-{
- int ch = _IO_UNDERFLOW (fp);
- if (ch == EOF)
- return EOF;
- return *(unsigned char *) fp->_IO_read_ptr++;
-}
-
-_IO_size_t
-_IO_default_xsputn (f, data, n)
- _IO_FILE *f;
- const void *data;
- _IO_size_t n;
-{
- const char *s = (char *) data;
- _IO_size_t more = n;
- if (more <= 0)
- return 0;
- for (;;)
- {
- /* Space available. */
- _IO_ssize_t count = f->_IO_write_end - f->_IO_write_ptr;
- if (count > 0)
- {
- if ((_IO_size_t) count > more)
- count = more;
- if (count > 20)
- {
-#ifdef _LIBC
- f->_IO_write_ptr = __mempcpy (f->_IO_write_ptr, s, count);
-#else
- memcpy (f->_IO_write_ptr, s, count);
- f->_IO_write_ptr += count;
-#endif
- s += count;
- }
- else if (count <= 0)
- count = 0;
- else
- {
- char *p = f->_IO_write_ptr;
- _IO_ssize_t i;
- for (i = count; --i >= 0; )
- *p++ = *s++;
- f->_IO_write_ptr = p;
- }
- more -= count;
- }
- if (more == 0 || _IO_OVERFLOW (f, (unsigned char) *s++) == EOF)
- break;
- more--;
- }
- return n - more;
-}
-
-_IO_size_t
-_IO_sgetn (fp, data, n)
- _IO_FILE *fp;
- void *data;
- _IO_size_t n;
-{
- /* FIXME handle putback buffer here! */
- return _IO_XSGETN (fp, data, n);
-}
-
-_IO_size_t
-_IO_default_xsgetn (fp, data, n)
- _IO_FILE *fp;
- void *data;
- _IO_size_t n;
-{
- _IO_size_t more = n;
- char *s = (char*) data;
- for (;;)
- {
- /* Data available. */
- _IO_ssize_t count = fp->_IO_read_end - fp->_IO_read_ptr;
- if (count > 0)
- {
- if ((_IO_size_t) count > more)
- count = more;
- if (count > 20)
- {
-#ifdef _LIBC
- s = __mempcpy (s, fp->_IO_read_ptr, count);
-#else
- memcpy (s, fp->_IO_read_ptr, count);
- s += count;
-#endif
- fp->_IO_read_ptr += count;
- }
- else if (count <= 0)
- count = 0;
- else
- {
- char *p = fp->_IO_read_ptr;
- int i = (int) count;
- while (--i >= 0)
- *s++ = *p++;
- fp->_IO_read_ptr = p;
- }
- more -= count;
- }
- if (more == 0 || __underflow (fp) == EOF)
- break;
- }
- return n - more;
-}
-
-#if 0
-/* Seems not to be needed. --drepper */
-int
-_IO_sync (fp)
- _IO_FILE *fp;
-{
- return 0;
-}
-#endif
-
-_IO_FILE *
-_IO_default_setbuf (fp, p, len)
- _IO_FILE *fp;
- char *p;
- _IO_ssize_t len;
-{
- if (_IO_SYNC (fp) == EOF)
- return NULL;
- if (p == NULL || len == 0)
- {
- fp->_flags |= _IO_UNBUFFERED;
- _IO_setb (fp, fp->_shortbuf, fp->_shortbuf+1, 0);
- }
- else
- {
- fp->_flags &= ~_IO_UNBUFFERED;
- _IO_setb (fp, p, p+len, 0);
- }
- fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_write_end = 0;
- fp->_IO_read_base = fp->_IO_read_ptr = fp->_IO_read_end = 0;
- return fp;
-}
-
-_IO_off64_t
-_IO_default_seekpos (fp, pos, mode)
- _IO_FILE *fp;
- _IO_off64_t pos;
- int mode;
-{
- return _IO_SEEKOFF (fp, pos, 0, mode);
-}
-
-int
-_IO_default_doallocate (fp)
- _IO_FILE *fp;
-{
- char *buf;
-
- ALLOC_BUF (buf, _IO_BUFSIZ, EOF);
- _IO_setb (fp, buf, buf+_IO_BUFSIZ, 1);
- return 1;
-}
-
-void
-_IO_init (fp, flags)
- _IO_FILE *fp;
- int flags;
-{
- _IO_no_init (fp, flags, -1, NULL, NULL);
-}
-
-void
-_IO_no_init (fp, flags, orientation, wd, jmp)
- _IO_FILE *fp;
- int flags;
- int orientation;
- struct _IO_wide_data *wd;
- struct _IO_jump_t *jmp;
-{
- fp->_flags = _IO_MAGIC|flags;
- fp->_IO_buf_base = NULL;
- fp->_IO_buf_end = NULL;
- fp->_IO_read_base = NULL;
- fp->_IO_read_ptr = NULL;
- fp->_IO_read_end = NULL;
- fp->_IO_write_base = NULL;
- fp->_IO_write_ptr = NULL;
- fp->_IO_write_end = NULL;
- fp->_chain = NULL; /* Not necessary. */
-
- fp->_IO_save_base = NULL;
- fp->_IO_backup_base = NULL;
- fp->_IO_save_end = NULL;
- fp->_markers = NULL;
- fp->_cur_column = 0;
-#if _IO_JUMPS_OFFSET
- fp->_vtable_offset = 0;
-#endif
-#ifdef _IO_MTSAFE_IO
- _IO_lock_init (*fp->_lock);
-#endif
- fp->_mode = orientation;
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- if (orientation >= 0)
- {
- fp->_wide_data = wd;
- fp->_wide_data->_IO_buf_base = NULL;
- fp->_wide_data->_IO_buf_end = NULL;
- fp->_wide_data->_IO_read_base = NULL;
- fp->_wide_data->_IO_read_ptr = NULL;
- fp->_wide_data->_IO_read_end = NULL;
- fp->_wide_data->_IO_write_base = NULL;
- fp->_wide_data->_IO_write_ptr = NULL;
- fp->_wide_data->_IO_write_end = NULL;
- fp->_wide_data->_IO_save_base = NULL;
- fp->_wide_data->_IO_backup_base = NULL;
- fp->_wide_data->_IO_save_end = NULL;
-
- fp->_wide_data->_wide_vtable = jmp;
- }
-#endif
-}
-
-int
-_IO_default_sync (fp)
- _IO_FILE *fp;
-{
- return 0;
-}
-
-/* The way the C++ classes are mapped into the C functions in the
- current implementation, this function can get called twice! */
-
-void
-_IO_default_finish (fp, dummy)
- _IO_FILE *fp;
- int dummy;
-{
- struct _IO_marker *mark;
- if (fp->_IO_buf_base && !(fp->_flags & _IO_USER_BUF))
- {
- FREE_BUF (fp->_IO_buf_base, _IO_blen (fp));
- fp->_IO_buf_base = fp->_IO_buf_end = NULL;
- }
-
- for (mark = fp->_markers; mark != NULL; mark = mark->_next)
- mark->_sbuf = NULL;
-
- if (fp->_IO_save_base)
- {
- free (fp->_IO_save_base);
- fp->_IO_save_base = NULL;
- }
-
-#ifdef _IO_MTSAFE_IO
- _IO_lock_fini (*fp->_lock);
-#endif
-
- _IO_un_link ((struct _IO_FILE_plus *) fp);
-}
-
-_IO_off64_t
-_IO_default_seekoff (fp, offset, dir, mode)
- _IO_FILE *fp;
- _IO_off64_t offset;
- int dir;
- int mode;
-{
- return _IO_pos_BAD;
-}
-
-int
-_IO_sputbackc (fp, c)
- _IO_FILE *fp;
- int c;
-{
- int result;
-
- if (fp->_IO_read_ptr > fp->_IO_read_base
- && (unsigned char)fp->_IO_read_ptr[-1] == (unsigned char)c)
- {
- fp->_IO_read_ptr--;
- result = (unsigned char) c;
- }
- else
- result = _IO_PBACKFAIL (fp, c);
-
- if (result != EOF)
- fp->_flags &= ~_IO_EOF_SEEN;
-
- return result;
-}
-
-int
-_IO_sungetc (fp)
- _IO_FILE *fp;
-{
- int result;
-
- if (fp->_IO_read_ptr > fp->_IO_read_base)
- {
- fp->_IO_read_ptr--;
- result = (unsigned char) *fp->_IO_read_ptr;
- }
- else
- result = _IO_PBACKFAIL (fp, EOF);
-
- if (result != EOF)
- fp->_flags &= ~_IO_EOF_SEEN;
-
- return result;
-}
-
-#if 0 /* Work in progress */
-/* Seems not to be needed. */
-#if 0
-void
-_IO_set_column (fp, c)
- _IO_FILE *fp;
- int c;
-{
- if (c == -1)
- fp->_column = -1;
- else
- fp->_column = c - (fp->_IO_write_ptr - fp->_IO_write_base);
-}
-#else
-int
-_IO_set_column (fp, i)
- _IO_FILE *fp;
- int i;
-{
- fp->_cur_column = i + 1;
- return 0;
-}
-#endif
-#endif
-
-
-unsigned
-_IO_adjust_column (start, line, count)
- unsigned start;
- const char *line;
- int count;
-{
- const char *ptr = line + count;
- while (ptr > line)
- if (*--ptr == '\n')
- return line + count - ptr - 1;
- return start + count;
-}
-
-#if 0
-/* Seems not to be needed. --drepper */
-int
-_IO_get_column (fp)
- _IO_FILE *fp;
-{
- if (fp->_cur_column)
- return _IO_adjust_column (fp->_cur_column - 1,
- fp->_IO_write_base,
- fp->_IO_write_ptr - fp->_IO_write_base);
- return -1;
-}
-#endif
-
-int
-_IO_flush_all ()
-{
- int result = 0;
- struct _IO_FILE *fp;
- for (fp = (_IO_FILE *) _IO_list_all; fp; fp = fp->_chain)
- if (((fp->_mode < 0 && fp->_IO_write_ptr > fp->_IO_write_base)
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- || (fp->_vtable_offset == 0
- && fp->_mode > 0 && (fp->_wide_data->_IO_write_ptr
- > fp->_wide_data->_IO_write_base))
-#endif
- )
- && _IO_OVERFLOW (fp, EOF) == EOF)
- result = EOF;
- return result;
-}
-
-void
-_IO_flush_all_linebuffered ()
-{
- struct _IO_FILE *fp;
- for (fp = (_IO_FILE *) _IO_list_all; fp; fp = fp->_chain)
- if ((fp->_flags & _IO_NO_WRITES) == 0 && fp->_flags & _IO_LINE_BUF)
- _IO_OVERFLOW (fp, EOF);
-}
-
-static void _IO_unbuffer_write __P ((void));
-
-static void
-_IO_unbuffer_write ()
-{
- struct _IO_FILE *fp;
- for (fp = (_IO_FILE *) _IO_list_all; fp; fp = fp->_chain)
- if (! (fp->_flags & _IO_UNBUFFERED)
- && (! (fp->_flags & _IO_NO_WRITES)
- || (fp->_flags & _IO_IS_APPENDING))
- /* Iff stream is un-orientated, it wasn't used. */
- && fp->_mode != 0)
- _IO_SETBUF (fp, NULL, 0);
-}
-
-int
-_IO_cleanup ()
-{
- int result = _IO_flush_all ();
-
- /* We currently don't have a reliable mechanism for making sure that
- C++ static destructors are executed in the correct order.
- So it is possible that other static destructors might want to
- write to cout - and they're supposed to be able to do so.
-
- The following will make the standard streambufs be unbuffered,
- which forces any output from late destructors to be written out. */
- _IO_unbuffer_write ();
-
- return result;
-}
-
-
-void
-_IO_init_marker (marker, fp)
- struct _IO_marker *marker;
- _IO_FILE *fp;
-{
- marker->_sbuf = fp;
- if (_IO_in_put_mode (fp))
- _IO_switch_to_get_mode (fp);
- if (_IO_in_backup (fp))
- marker->_pos = fp->_IO_read_ptr - fp->_IO_read_end;
- else
- marker->_pos = fp->_IO_read_ptr - fp->_IO_read_base;
-
- /* Should perhaps sort the chain? */
- marker->_next = fp->_markers;
- fp->_markers = marker;
-}
-
-void
-_IO_remove_marker (marker)
- struct _IO_marker *marker;
-{
- /* Unlink from sb's chain. */
- struct _IO_marker **ptr = &marker->_sbuf->_markers;
- for (; ; ptr = &(*ptr)->_next)
- {
- if (*ptr == NULL)
- break;
- else if (*ptr == marker)
- {
- *ptr = marker->_next;
- return;
- }
- }
-#if 0
- if _sbuf has a backup area that is no longer needed, should we delete
- it now, or wait until the next underflow?
-#endif
-}
-
-#define BAD_DELTA EOF
-
-int
-_IO_marker_difference (mark1, mark2)
- struct _IO_marker *mark1;
- struct _IO_marker *mark2;
-{
- return mark1->_pos - mark2->_pos;
-}
-
-/* Return difference between MARK and current position of MARK's stream. */
-int
-_IO_marker_delta (mark)
- struct _IO_marker *mark;
-{
- int cur_pos;
- if (mark->_sbuf == NULL)
- return BAD_DELTA;
- if (_IO_in_backup (mark->_sbuf))
- cur_pos = mark->_sbuf->_IO_read_ptr - mark->_sbuf->_IO_read_end;
- else
- cur_pos = mark->_sbuf->_IO_read_ptr - mark->_sbuf->_IO_read_base;
- return mark->_pos - cur_pos;
-}
-
-int
-_IO_seekmark (fp, mark, delta)
- _IO_FILE *fp;
- struct _IO_marker *mark;
- int delta;
-{
- if (mark->_sbuf != fp)
- return EOF;
- if (mark->_pos >= 0)
- {
- if (_IO_in_backup (fp))
- _IO_switch_to_main_get_area (fp);
- fp->_IO_read_ptr = fp->_IO_read_base + mark->_pos;
- }
- else
- {
- if (!_IO_in_backup (fp))
- _IO_switch_to_backup_area (fp);
- fp->_IO_read_ptr = fp->_IO_read_end + mark->_pos;
- }
- return 0;
-}
-
-void
-_IO_unsave_markers (fp)
- _IO_FILE *fp;
-{
- struct _IO_marker *mark = fp->_markers;
- if (mark)
- {
-#ifdef TODO
- streampos offset = seekoff (0, ios::cur, ios::in);
- if (offset != EOF)
- {
- offset += eGptr () - Gbase ();
- for ( ; mark != NULL; mark = mark->_next)
- mark->set_streampos (mark->_pos + offset);
- }
- else
- {
- for ( ; mark != NULL; mark = mark->_next)
- mark->set_streampos (EOF);
- }
-#endif
- fp->_markers = 0;
- }
-
- if (_IO_have_backup (fp))
- _IO_free_backup_area (fp);
-}
-
-#if 0
-/* Seems not to be needed. --drepper */
-int
-_IO_nobackup_pbackfail (fp, c)
- _IO_FILE *fp;
- int c;
-{
- if (fp->_IO_read_ptr > fp->_IO_read_base)
- fp->_IO_read_ptr--;
- if (c != EOF && *fp->_IO_read_ptr != c)
- *fp->_IO_read_ptr = c;
- return (unsigned char) c;
-}
-#endif
-
-int
-_IO_default_pbackfail (fp, c)
- _IO_FILE *fp;
- int c;
-{
- if (fp->_IO_read_ptr > fp->_IO_read_base && !_IO_in_backup (fp)
- && (unsigned char) fp->_IO_read_ptr[-1] == c)
- --fp->_IO_read_ptr;
- else
- {
- /* Need to handle a filebuf in write mode (switch to read mode). FIXME!*/
- if (!_IO_in_backup (fp))
- {
- /* We need to keep the invariant that the main get area
- logically follows the backup area. */
- if (fp->_IO_read_ptr > fp->_IO_read_base && _IO_have_backup (fp))
- {
- if (save_for_backup (fp, fp->_IO_read_ptr))
- return EOF;
- }
- else if (!_IO_have_backup (fp))
- {
- /* No backup buffer: allocate one. */
- /* Use nshort buffer, if unused? (probably not) FIXME */
- int backup_size = 128;
- char *bbuf = (char *) malloc (backup_size);
- if (bbuf == NULL)
- return EOF;
- fp->_IO_save_base = bbuf;
- fp->_IO_save_end = fp->_IO_save_base + backup_size;
- fp->_IO_backup_base = fp->_IO_save_end;
- }
- fp->_IO_read_base = fp->_IO_read_ptr;
- _IO_switch_to_backup_area (fp);
- }
- else if (fp->_IO_read_ptr <= fp->_IO_read_base)
- {
- /* Increase size of existing backup buffer. */
- _IO_size_t new_size;
- _IO_size_t old_size = fp->_IO_read_end - fp->_IO_read_base;
- char *new_buf;
- new_size = 2 * old_size;
- new_buf = (char *) malloc (new_size);
- if (new_buf == NULL)
- return EOF;
- memcpy (new_buf + (new_size - old_size), fp->_IO_read_base,
- old_size);
- free (fp->_IO_read_base);
- _IO_setg (fp, new_buf, new_buf + (new_size - old_size),
- new_buf + new_size);
- fp->_IO_backup_base = fp->_IO_read_ptr;
- }
-
- *--fp->_IO_read_ptr = c;
- }
- return (unsigned char) c;
-}
-
-_IO_off64_t
-_IO_default_seek (fp, offset, dir)
- _IO_FILE *fp;
- _IO_off64_t offset;
- int dir;
-{
- return _IO_pos_BAD;
-}
-
-int
-_IO_default_stat (fp, st)
- _IO_FILE *fp;
- void* st;
-{
- return EOF;
-}
-
-_IO_ssize_t
-_IO_default_read (fp, data, n)
- _IO_FILE* fp;
- void *data;
- _IO_ssize_t n;
-{
- return -1;
-}
-
-_IO_ssize_t
-_IO_default_write (fp, data, n)
- _IO_FILE *fp;
- const void *data;
- _IO_ssize_t n;
-{
- return 0;
-}
-
-int
-_IO_default_showmanyc (fp)
- _IO_FILE *fp;
-{
- return -1;
-}
-
-void
-_IO_default_imbue (fp, locale)
- _IO_FILE *fp;
- void *locale;
-{
-}
-
-_IO_ITER
-_IO_iter_begin()
-{
- return (_IO_ITER) _IO_list_all;
-}
-
-_IO_ITER
-_IO_iter_end()
-{
- return NULL;
-}
-
-_IO_ITER
-_IO_iter_next(iter)
- _IO_ITER iter;
-{
- return iter->_chain;
-}
-
-_IO_FILE *
-_IO_iter_file(iter)
- _IO_ITER iter;
-{
- return iter;
-}
-
-void
-_IO_list_lock()
-{
-#ifdef _IO_MTSAFE_IO
- _IO_lock_lock (list_all_lock);
-#endif
-}
-
-void
-_IO_list_unlock()
-{
-#ifdef _IO_MTSAFE_IO
- _IO_lock_unlock (list_all_lock);
-#endif
-}
-
-void
-_IO_list_resetlock()
-{
-#ifdef _IO_MTSAFE_IO
- _IO_lock_init (list_all_lock);
-#endif
-}
-
-
-#ifdef TODO
-#if defined(linux)
-#define IO_CLEANUP ;
-#endif
-
-#ifdef IO_CLEANUP
- IO_CLEANUP
-#else
-struct __io_defs {
- __io_defs() { }
- ~__io_defs() { _IO_cleanup (); }
-};
-__io_defs io_defs__;
-#endif
-
-#endif /* TODO */
-
-#ifdef weak_alias
-weak_alias (_IO_cleanup, _cleanup)
-#endif
-
-#ifdef text_set_element
-text_set_element(__libc_atexit, _cleanup);
-#endif
diff --git a/contrib/libstdc++/libio/iofclose.c b/contrib/libstdc++/libio/iofclose.c
deleted file mode 100644
index 43a3f58..0000000
--- a/contrib/libstdc++/libio/iofclose.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Copyright (C) 1993, 1995, 1997-1999, 2000 Free Software Foundation, Inc.
- This file is part of the GNU IO 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 2, 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 COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, if you link this library with files
- compiled with a GNU compiler to produce an executable, this does
- not cause the resulting executable to be covered by the GNU General
- Public License. This exception does not however invalidate any
- other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-#include "libioP.h"
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#if _LIBC
-# include "../iconv/gconv_int.h"
-# include <shlib-compat.h>
-#else
-# define SHLIB_COMPAT(a, b, c) 0
-# define _IO_new_fclose fclose
-#endif
-
-int
-_IO_new_fclose (fp)
- _IO_FILE *fp;
-{
- int status;
-
- CHECK_FILE(fp, EOF);
-
-#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
- /* We desperately try to help programs which are using streams in a
- strange way and mix old and new functions. Detect old streams
- here. */
- if (fp->_vtable_offset != 0)
- return _IO_old_fclose (fp);
-#endif
-
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
- if (fp->_IO_file_flags & _IO_IS_FILEBUF)
- status = _IO_file_close_it (fp);
- else
- status = fp->_flags & _IO_ERR_SEEN ? -1 : 0;
- _IO_FINISH (fp);
- _IO_funlockfile (fp);
- if (fp->_mode > 0)
- {
-#if _LIBC
- /* This stream has a wide orientation. This means we have to free
- the conversion functions. */
- struct _IO_codecvt *cc = fp->_codecvt;
-
- if (cc->__cd_in.__cd.__steps->__shlib_handle != NULL)
- {
- --cc->__cd_in.__cd.__steps->__counter;
- __gconv_close_transform (cc->__cd_in.__cd.__steps, 1);
- }
- if (cc->__cd_out.__cd.__steps->__shlib_handle != NULL)
- {
- --cc->__cd_out.__cd.__steps->__counter;
- __gconv_close_transform (cc->__cd_out.__cd.__steps, 1);
- }
-#endif
- }
- _IO_cleanup_region_end (0);
- if (_IO_have_backup (fp))
- _IO_free_backup_area (fp);
- if (fp != _IO_stdin && fp != _IO_stdout && fp != _IO_stderr)
- {
- fp->_IO_file_flags = 0;
- free(fp);
- }
-
- return status;
-}
-
-#ifdef _LIBC
-versioned_symbol (libc, _IO_new_fclose, _IO_fclose, GLIBC_2_1);
-strong_alias (_IO_new_fclose, __new_fclose)
-versioned_symbol (libc, __new_fclose, fclose, GLIBC_2_1);
-#endif
diff --git a/contrib/libstdc++/libio/iofopen.c b/contrib/libstdc++/libio/iofopen.c
deleted file mode 100644
index 2dcdee0..0000000
--- a/contrib/libstdc++/libio/iofopen.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Copyright (C) 1993, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
- This file is part of the GNU IO 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 2, 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 COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, if you link this library with files
- compiled with a GNU compiler to produce an executable, this does
- not cause the resulting executable to be covered by the GNU General
- Public License. This exception does not however invalidate any
- other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-#include "libioP.h"
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#ifdef _LIBC
-# include <shlib-compat.h>
-#else
-# define _IO_new_fopen fopen
-#endif
-
-_IO_FILE *
-_IO_new_fopen (filename, mode)
- const char *filename;
- const char *mode;
-{
- struct locked_FILE
- {
- struct _IO_FILE_plus fp;
-#ifdef _IO_MTSAFE_IO
- _IO_lock_t lock;
-#endif
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- struct _IO_wide_data wd;
-#endif /* !(defined _LIBC || defined _GLIBCPP_USE_WCHAR_T) */
- } *new_f = (struct locked_FILE *) malloc (sizeof (struct locked_FILE));
-
- if (new_f == NULL)
- return NULL;
-#ifdef _IO_MTSAFE_IO
- new_f->fp.file._lock = &new_f->lock;
-#endif
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- _IO_no_init (&new_f->fp.file, 0, 0, &new_f->wd, &_IO_wfile_jumps);
-#else
- _IO_no_init (&new_f->fp.file, 1, 0, NULL, NULL);
-#endif
- _IO_JUMPS (&new_f->fp) = &_IO_file_jumps;
- _IO_file_init (&new_f->fp);
-#if !_IO_UNIFIED_JUMPTABLES
- new_f->fp.vtable = NULL;
-#endif
- if (_IO_file_fopen ((_IO_FILE *) new_f, filename, mode, 1) != NULL)
- return (_IO_FILE *) &new_f->fp;
- _IO_un_link (&new_f->fp);
- free (new_f);
- return NULL;
-}
-
-#ifdef _LIBC
-strong_alias (_IO_new_fopen, __new_fopen)
-versioned_symbol (libc, _IO_new_fopen, _IO_fopen, GLIBC_2_1);
-versioned_symbol (libc, __new_fopen, fopen, GLIBC_2_1);
-#endif
diff --git a/contrib/libstdc++/libio/iofwide.c b/contrib/libstdc++/libio/iofwide.c
deleted file mode 100644
index 76a20ce..0000000
--- a/contrib/libstdc++/libio/iofwide.c
+++ /dev/null
@@ -1,476 +0,0 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
- This file is part of the GNU IO 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 2, 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 COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, if you link this library with files
- compiled with a GNU compiler to produce an executable, this does
- not cause the resulting executable to be covered by the GNU General
- Public License. This exception does not however invalidate any
- other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-#include <libioP.h>
-#ifdef _LIBC
-# include <dlfcn.h>
-# include <wchar.h>
-# include <locale/localeinfo.h>
-# include <wcsmbs/wcsmbsload.h>
-# include <iconv/gconv_int.h>
-#endif
-#include <stdlib.h>
-#include <string.h>
-
-#if defined(_LIBC) || defined(_GLIBCPP_USE_WCHAR_T)
-# include <langinfo.h>
-#endif
-
-#ifdef _GLIBCPP_USE_WCHAR_T
-/* Prototypes of libio's codecvt functions. */
-static enum __codecvt_result do_out (struct _IO_codecvt *codecvt,
- __c_mbstate_t *statep,
- const wchar_t *from_start,
- const wchar_t *from_end,
- const wchar_t **from_stop, char *to_start,
- char *to_end, char **to_stop);
-static enum __codecvt_result do_unshift (struct _IO_codecvt *codecvt,
- __c_mbstate_t *statep, char *to_start,
- char *to_end, char **to_stop);
-static enum __codecvt_result do_in (struct _IO_codecvt *codecvt,
- __c_mbstate_t *statep,
- const char *from_start,
- const char *from_end,
- const char **from_stop, wchar_t *to_start,
- wchar_t *to_end, wchar_t **to_stop);
-static int do_encoding (struct _IO_codecvt *codecvt);
-static int do_length (struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
- const char *from_start,
- const char *from_end, _IO_size_t max);
-static int do_max_length (struct _IO_codecvt *codecvt);
-static int do_always_noconv (struct _IO_codecvt *codecvt);
-
-
-/* The functions used in `codecvt' for libio are always the same. */
-struct _IO_codecvt __libio_codecvt =
-{
- .__codecvt_destr = NULL, /* Destructor, never used. */
- .__codecvt_do_out = do_out,
- .__codecvt_do_unshift = do_unshift,
- .__codecvt_do_in = do_in,
- .__codecvt_do_encoding = do_encoding,
- .__codecvt_do_always_noconv = do_always_noconv,
- .__codecvt_do_length = do_length,
- .__codecvt_do_max_length = do_max_length
-};
-
-
-#ifdef _LIBC
-static struct __gconv_trans_data libio_translit =
-{
- .__trans_fct = __gconv_transliterate
-};
-#endif
-#endif /* defined(GLIBCPP_USE_WCHAR_T) */
-
-/* Return orientation of stream. If mode is nonzero try to change
- the orientation first. */
-#undef _IO_fwide
-int
-_IO_fwide (fp, mode)
- _IO_FILE *fp;
- int mode;
-{
- /* Normalize the value. */
- mode = mode < 0 ? -1 : (mode == 0 ? 0 : 1);
-
- if (mode == 0 || fp->_mode != 0)
- /* The caller simply wants to know about the current orientation
- or the orientation already has been determined. */
- return fp->_mode;
-
- /* Set the orientation appropriately. */
- if (mode > 0)
- {
-#ifdef _GLIBCPP_USE_WCHAR_T
- struct _IO_codecvt *cc = fp->_codecvt;
-
- fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_end;
- fp->_wide_data->_IO_write_ptr = fp->_wide_data->_IO_write_base;
-
-#ifdef _LIBC
- /* Get the character conversion functions based on the currently
- selected locale for LC_CTYPE. */
- {
- struct gconv_fcts fcts;
-
- /* Clear the state. We start all over again. */
- memset (&fp->_wide_data->_IO_state, '\0', sizeof (__c_mbstate_t));
- memset (&fp->_wide_data->_IO_last_state, '\0', sizeof (__c_mbstate_t));
-
- __wcsmbs_clone_conv (&fcts);
-
- /* The functions are always the same. */
- *cc = __libio_codecvt;
-
- cc->__cd_in.__cd.__nsteps = 1; /* Only one step allowed. */
- cc->__cd_in.__cd.__steps = fcts.towc;
-
- cc->__cd_in.__cd.__data[0].__invocation_counter = 0;
- cc->__cd_in.__cd.__data[0].__internal_use = 1;
- cc->__cd_in.__cd.__data[0].__flags = __GCONV_IS_LAST;
- cc->__cd_in.__cd.__data[0].__statep = &fp->_wide_data->_IO_state;
-
- /* XXX For now no transliteration. */
- cc->__cd_in.__cd.__data[0].__trans = NULL;
-
- cc->__cd_out.__cd.__nsteps = 1; /* Only one step allowed. */
- cc->__cd_out.__cd.__steps = fcts.tomb;
-
- cc->__cd_out.__cd.__data[0].__invocation_counter = 0;
- cc->__cd_out.__cd.__data[0].__internal_use = 1;
- cc->__cd_out.__cd.__data[0].__flags = __GCONV_IS_LAST;
- cc->__cd_out.__cd.__data[0].__statep = &fp->_wide_data->_IO_state;
-
- /* And now the transliteration. */
- cc->__cd_out.__cd.__data[0].__trans = &libio_translit;
- }
-#else
-# ifdef _GLIBCPP_USE_WCHAR_T
- {
- /* Determine internal and external character sets.
- XXX For now we make our life easy: we assume a fixed internal
- encoding (as most sane systems have; hi HP/UX!). If somebody
- cares about systems which changing internal charsets they
- should come up with a solution for the determination of the
- currently used internal character set. */
-#if 0
- const char *internal_ccs = _G_INTERNAL_CCS;
- const char *external_ccs = nl_langinfo(CODESET);
-
- if (external_ccs == NULL)
- external_ccs = "ISO-8859-1";
-
- cc->__cd_in = iconv_open (internal_ccs, external_ccs);
- if (cc->__cd_in != (iconv_t) -1)
- cc->__cd_out = iconv_open (external_ccs, internal_ccs);
-#endif
- }
-# else
-# error "somehow determine this from LC_CTYPE"
-# endif
-#endif
-
- /* From now on use the wide character callback functions. */
- ((struct _IO_FILE_plus *) fp)->vtable = fp->_wide_data->_wide_vtable;
-#else /* !defined(_GLIBCPP_USE_WCHAR_T) */
- mode = fp->_mode;
-#endif /* !defined(_GLIBCPP_USE_WCHAR_T) */
- }
-
- /* Set the mode now. */
- fp->_mode = mode;
-
- return mode;
-}
-
-#ifdef weak_alias
-weak_alias (_IO_fwide, fwide)
-#endif
-
-#ifdef _GLIBCPP_USE_WCHAR_T
-
-static enum __codecvt_result
-do_out (struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
- const wchar_t *from_start, const wchar_t *from_end,
- const wchar_t **from_stop, char *to_start, char *to_end,
- char **to_stop)
-{
- enum __codecvt_result result;
-
-#ifdef _LIBC
- struct __gconv_step *gs = codecvt->__cd_out.__cd.__steps;
- int status;
- size_t dummy;
- const unsigned char *from_start_copy = (unsigned char *) from_start;
-
- codecvt->__cd_out.__cd.__data[0].__outbuf = to_start;
- codecvt->__cd_out.__cd.__data[0].__outbufend = to_end;
- codecvt->__cd_out.__cd.__data[0].__statep = statep;
-
- status = DL_CALL_FCT (gs->__fct,
- (gs, codecvt->__cd_out.__cd.__data, &from_start_copy,
- (const unsigned char *) from_end, NULL,
- &dummy, 0, 0));
-
- *from_stop = (wchar_t *) from_start_copy;
- *to_stop = codecvt->__cd_out.__cd.__data[0].__outbuf;
-
- switch (status)
- {
- case __GCONV_OK:
- case __GCONV_EMPTY_INPUT:
- result = __codecvt_ok;
- break;
-
- case __GCONV_FULL_OUTPUT:
- case __GCONV_INCOMPLETE_INPUT:
- result = __codecvt_partial;
- break;
-
- default:
- result = __codecvt_error;
- break;
- }
-#else
-# ifdef _GLIBCPP_USE_WCHAR_T
- size_t res;
- const char *from_start_copy = (const char *) from_start;
- size_t from_len = from_end - from_start;
- char *to_start_copy = to_start;
- size_t to_len = to_end - to_start;
- res = iconv (codecvt->__cd_out, &from_start_copy, &from_len,
- &to_start_copy, &to_len);
-
- if (res == 0 || from_len == 0)
- result = __codecvt_ok;
- else if (to_len < codecvt->__codecvt_do_max_length (codecvt))
- result = __codecvt_partial;
- else
- result = __codecvt_error;
-
-# else
- /* Decide what to do. */
- result = __codecvt_error;
-# endif
-#endif
-
- return result;
-}
-
-
-static enum __codecvt_result
-do_unshift (struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
- char *to_start, char *to_end, char **to_stop)
-{
- enum __codecvt_result result;
-
-#ifdef _LIBC
- struct __gconv_step *gs = codecvt->__cd_out.__cd.__steps;
- int status;
- size_t dummy;
-
- codecvt->__cd_out.__cd.__data[0].__outbuf = to_start;
- codecvt->__cd_out.__cd.__data[0].__outbufend = to_end;
- codecvt->__cd_out.__cd.__data[0].__statep = statep;
-
- status = DL_CALL_FCT (gs->__fct,
- (gs, codecvt->__cd_out.__cd.__data, NULL, NULL,
- NULL, &dummy, 1, 0));
-
- *to_stop = codecvt->__cd_out.__cd.__data[0].__outbuf;
-
- switch (status)
- {
- case __GCONV_OK:
- case __GCONV_EMPTY_INPUT:
- result = __codecvt_ok;
- break;
-
- case __GCONV_FULL_OUTPUT:
- case __GCONV_INCOMPLETE_INPUT:
- result = __codecvt_partial;
- break;
-
- default:
- result = __codecvt_error;
- break;
- }
-#else
-# ifdef _GLIBCPP_USE_WCHAR_T
- size_t res;
- char *to_start_copy = (char *) to_start;
- size_t to_len = to_end - to_start;
-
- res = iconv (codecvt->__cd_out, NULL, NULL, &to_start_copy, &to_len);
-
- if (res == 0)
- result = __codecvt_ok;
- else if (to_len < codecvt->__codecvt_do_max_length (codecvt))
- result = __codecvt_partial;
- else
- result = __codecvt_error;
-# else
- /* Decide what to do. */
- result = __codecvt_error;
-# endif
-#endif
-
- return result;
-}
-
-
-static enum __codecvt_result
-do_in (struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
- const char *from_start, const char *from_end, const char **from_stop,
- wchar_t *to_start, wchar_t *to_end, wchar_t **to_stop)
-{
- enum __codecvt_result result;
-
-#ifdef _LIBC
- struct __gconv_step *gs = codecvt->__cd_in.__cd.__steps;
- int status;
- size_t dummy;
- const unsigned char *from_start_copy = (unsigned char *) from_start;
-
- codecvt->__cd_in.__cd.__data[0].__outbuf = (char *) to_start;
- codecvt->__cd_in.__cd.__data[0].__outbufend = (char *) to_end;
- codecvt->__cd_in.__cd.__data[0].__statep = statep;
-
- status = DL_CALL_FCT (gs->__fct,
- (gs, codecvt->__cd_in.__cd.__data, &from_start_copy,
- from_end, NULL, &dummy, 0, 0));
-
- *from_stop = from_start_copy;
- *to_stop = (wchar_t *) codecvt->__cd_in.__cd.__data[0].__outbuf;
-
- switch (status)
- {
- case __GCONV_OK:
- case __GCONV_EMPTY_INPUT:
- result = __codecvt_ok;
- break;
-
- case __GCONV_FULL_OUTPUT:
- case __GCONV_INCOMPLETE_INPUT:
- result = __codecvt_partial;
- break;
-
- default:
- result = __codecvt_error;
- break;
- }
-#else
-# ifdef _GLIBCPP_USE_WCHAR_T
- size_t res;
- const char *from_start_copy = (const char *) from_start;
- size_t from_len = from_end - from_start;
- char *to_start_copy = (char *) from_start;
- size_t to_len = to_end - to_start;
-
- res = iconv (codecvt->__cd_in, &from_start_copy, &from_len,
- &to_start_copy, &to_len);
-
- if (res == 0)
- result = __codecvt_ok;
- else if (to_len == 0)
- result = __codecvt_partial;
- else if (from_len < codecvt->__codecvt_do_max_length (codecvt))
- result = __codecvt_partial;
- else
- result = __codecvt_error;
-# else
- /* Decide what to do. */
- result = __codecvt_error;
-# endif
-#endif
-
- return result;
-}
-
-
-static int
-do_encoding (struct _IO_codecvt *codecvt)
-{
-#ifdef _LIBC
- /* See whether the encoding is stateful. */
- if (codecvt->__cd_in.__cd.__steps[0].__stateful)
- return -1;
- /* Fortunately not. Now determine the input bytes for the conversion
- necessary for each wide character. */
- if (codecvt->__cd_in.__cd.__steps[0].__min_needed_from
- != codecvt->__cd_in.__cd.__steps[0].__max_needed_from)
- /* Not a constant value. */
- return 0;
-
- return codecvt->__cd_in.__cd.__steps[0].__min_needed_from;
-#else
- /* Worst case scenario. */
- return -1;
-#endif
-}
-
-
-static int
-do_always_noconv (struct _IO_codecvt *codecvt)
-{
- return 0;
-}
-
-
-static int
-do_length (struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
- const char *from_start, const char *from_end, _IO_size_t max)
-{
- int result;
-#ifdef _LIBC
- const unsigned char *cp = (const unsigned char *) from_start;
- wchar_t to_buf[max];
- struct __gconv_step *gs = codecvt->__cd_in.__cd.__steps;
- int status;
- size_t dummy;
-
- codecvt->__cd_in.__cd.__data[0].__outbuf = (char *) to_buf;
- codecvt->__cd_in.__cd.__data[0].__outbufend = (char *) &to_buf[max];
- codecvt->__cd_in.__cd.__data[0].__statep = statep;
-
- status = DL_CALL_FCT (gs->__fct,
- (gs, codecvt->__cd_in.__cd.__data, &cp, from_end,
- NULL, &dummy, 0, 0));
-
- result = cp - (const unsigned char *) from_start;
-#else
-# ifdef _GLIBCPP_USE_WCHAR_T
- const char *from_start_copy = (const char *) from_start;
- size_t from_len = from_end - from_start;
- wchar_t to_buf[max];
- size_t res;
- char *to_start = (char *) to_buf;
-
- res = iconv (codecvt->__cd_in, &from_start_copy, &from_len,
- &to_start, &max);
-
- result = from_start_copy - (char *) from_start;
-# else
- /* Decide what to do. */
- result = 0;
-# endif
-#endif
-
- return result;
-}
-
-
-static int
-do_max_length (struct _IO_codecvt *codecvt)
-{
-#ifdef _LIBC
- return codecvt->__cd_in.__cd.__steps[0].__max_needed_from;
-#else
- return MB_CUR_MAX;
-#endif
-}
-
-#endif /* defined(_GLIBCPP_USE_WCHAR_T) */
diff --git a/contrib/libstdc++/libio/iolibio.h b/contrib/libstdc++/libio/iolibio.h
deleted file mode 100644
index 61be4b73..0000000
--- a/contrib/libstdc++/libio/iolibio.h
+++ /dev/null
@@ -1,82 +0,0 @@
-#include "libio.h"
-
-/* These emulate stdio functionality, but with a different name
- (_IO_ungetc instead of ungetc), and using _IO_FILE instead of FILE. */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern int _IO_fclose __P((_IO_FILE*));
-extern int _IO_new_fclose __P((_IO_FILE*));
-extern int _IO_old_fclose __P((_IO_FILE*));
-extern _IO_FILE *_IO_fdopen __P((int, const char*));
-extern _IO_FILE *_IO_old_fdopen __P((int, const char*));
-extern _IO_FILE *_IO_new_fdopen __P((int, const char*));
-extern int _IO_fflush __P((_IO_FILE*));
-extern int _IO_fgetpos __P((_IO_FILE*, _IO_fpos_t*));
-extern int _IO_fgetpos64 __P((_IO_FILE*, _IO_fpos64_t*));
-extern char* _IO_fgets __P((char*, int, _IO_FILE*));
-extern _IO_FILE *_IO_fopen __P((const char*, const char*));
-extern _IO_FILE *_IO_old_fopen __P((const char*, const char*));
-extern _IO_FILE *_IO_new_fopen __P((const char*, const char*));
-extern _IO_FILE *_IO_fopen64 __P((const char*, const char*));
-extern int _IO_fprintf __P((_IO_FILE*, const char*, ...));
-extern int _IO_fputs __P((const char*, _IO_FILE*));
-extern int _IO_fsetpos __P((_IO_FILE*, const _IO_fpos_t *));
-extern int _IO_fsetpos64 __P((_IO_FILE*, const _IO_fpos64_t *));
-extern long int _IO_ftell __P((_IO_FILE*));
-extern _IO_size_t _IO_fread __P((void*, _IO_size_t, _IO_size_t, _IO_FILE*));
-extern _IO_size_t _IO_fwrite __P((const void*,
- _IO_size_t, _IO_size_t, _IO_FILE*));
-extern char* _IO_gets __P((char*));
-extern void _IO_perror __P((const char*));
-extern int _IO_printf __P((const char*, ...));
-extern int _IO_puts __P((const char*));
-extern int _IO_scanf __P((const char*, ...));
-extern void _IO_setbuffer __P((_IO_FILE *, char*, _IO_size_t));
-extern int _IO_setvbuf __P((_IO_FILE*, char*, int, _IO_size_t));
-extern int _IO_sscanf __P((const char*, const char*, ...));
-extern int _IO_sprintf __P((char *, const char*, ...));
-extern int _IO_ungetc __P((int, _IO_FILE*));
-extern int _IO_vsscanf __P((const char *, const char *, _IO_va_list));
-extern int _IO_vsprintf __P((char*, const char*, _IO_va_list));
-extern int _IO_vswprintf __P((wchar_t*, _IO_size_t, const wchar_t*,
- _IO_va_list));
-
-struct obstack;
-extern int _IO_obstack_vprintf __P ((struct obstack *, const char *,
- _IO_va_list));
-extern int _IO_obstack_printf __P ((struct obstack *, const char *, ...));
-#ifndef _IO_pos_BAD
-#define _IO_pos_BAD ((_IO_off64_t)(-1))
-#endif
-#define _IO_clearerr(FP) ((FP)->_flags &= ~(_IO_ERR_SEEN|_IO_EOF_SEEN))
-#define _IO_fseek(__fp, __offset, __whence) \
- (_IO_seekoff(__fp, __offset, __whence, _IOS_INPUT|_IOS_OUTPUT) == _IO_pos_BAD ? EOF : 0)
-#define _IO_rewind(FILE) (void)_IO_seekoff(FILE, 0, 0, _IOS_INPUT|_IOS_OUTPUT)
-#define _IO_vprintf(FORMAT, ARGS) _IO_vfprintf(_IO_stdout, FORMAT, ARGS)
-#define _IO_freopen(FILENAME, MODE, FP) \
- (_IO_file_close_it(FP), _IO_file_fopen(FP, FILENAME, MODE, 0))
-#define _IO_old_freopen(FILENAME, MODE, FP) \
- (_IO_old_file_close_it (FP), _IO_old_file_fopen(FP, FILENAME, MODE))
-#define _IO_freopen64(FILENAME, MODE, FP) \
- (_IO_file_close_it(FP), _IO_file_fopen(FP, FILENAME, MODE, 1))
-#define _IO_fileno(FP) ((FP)->_fileno)
-extern _IO_FILE* _IO_popen __P((const char*, const char*));
-extern _IO_FILE* _IO_new_popen __P((const char*, const char*));
-extern _IO_FILE* _IO_old_popen __P((const char*, const char*));
-extern int __new_pclose __P((_IO_FILE *));
-extern int __old_pclose __P((_IO_FILE *));
-#define _IO_pclose _IO_fclose
-#define _IO_setbuf(_FP, _BUF) _IO_setbuffer(_FP, _BUF, _IO_BUFSIZ)
-#define _IO_setlinebuf(_FP) _IO_setvbuf(_FP, NULL, 1, 0)
-
-_IO_FILE *__new_freopen __P ((const char *, const char *, _IO_FILE *));
-_IO_FILE *__old_freopen __P ((const char *, const char *, _IO_FILE *));
-
-#ifdef __cplusplus
-}
-#endif
-
-
diff --git a/contrib/libstdc++/libio/libio.h b/contrib/libstdc++/libio/libio.h
deleted file mode 100644
index e2a2a15..0000000
--- a/contrib/libstdc++/libio/libio.h
+++ /dev/null
@@ -1,511 +0,0 @@
-/* Copyright (C) 1991,92,93,94,95,97,98,99,2000,2001 Free Software Foundation, Inc.
- This file is part of the GNU IO Library.
- Written by Per Bothner <bothner@cygnus.com>.
-
- 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 2, 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 COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, if you link this library with files
- compiled with a GNU compiler to produce an executable, this does
- not cause the resulting executable to be covered by the GNU General
- Public License. This exception does not however invalidate any
- other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-#ifndef _IO_STDIO_H
-#define _IO_STDIO_H
-
-#include <_G_config.h>
-/* ALL of these should be defined in _G_config.h */
-#define _IO_pos_t _G_fpos_t /* obsolete */
-#define _IO_fpos_t _G_fpos_t
-#define _IO_fpos64_t _G_fpos64_t
-#define _IO_size_t _G_size_t
-#define _IO_ssize_t _G_ssize_t
-#define _IO_off_t _G_off_t
-#define _IO_off64_t _G_off64_t
-#define _IO_pid_t _G_pid_t
-#define _IO_uid_t _G_uid_t
-#define _IO_iconv_t _G_iconv_t
-#define _IO_HAVE_SYS_WAIT _G_HAVE_SYS_WAIT
-#define _IO_HAVE_ST_BLKSIZE _G_HAVE_ST_BLKSIZE
-#define _IO_BUFSIZ _G_BUFSIZ
-#define _IO_va_list _G_va_list
-#define _IO_wint_t _G_wint_t
-
-#ifdef _G_NEED_STDARG_H
-/* This define avoids name pollution if we're using GNU stdarg.h */
-# define __need___va_list
-# include <stdarg.h>
-# ifdef __GNUC_VA_LIST
-# undef _IO_va_list
-# define _IO_va_list __gnuc_va_list
-# endif /* __GNUC_VA_LIST */
-#endif
-
-#ifndef __THROW
-# ifdef __cplusplus
-# define __THROW throw ()
-# else
-# define __THROW
-# endif
-#endif /* not __THROW */
-
-#ifndef __P
-# define __P(p) p __THROW
-#endif /* not __P */
-
-#ifndef __PMT
-# define __PMT(p) p
-#endif /* not __PMT */
-
-/* For backward compatibility */
-#ifndef _PARAMS
-# define _PARAMS(protos) __P(protos)
-#endif /*!_PARAMS*/
-
-#ifndef __STDC__
-# ifndef const
-# define const
-# endif
-#endif
-#define _IO_UNIFIED_JUMPTABLES 1
-#ifndef _G_HAVE_PRINTF_FP
-# define _IO_USE_DTOA 1
-#endif
-
-#ifndef EOF
-# define EOF (-1)
-#endif
-#ifndef NULL
-# if defined __GNUG__ && \
- (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8))
-# define NULL (__null)
-# else
-# if !defined(__cplusplus)
-# define NULL ((void*)0)
-# else
-# define NULL (0)
-# endif
-# endif
-#endif
-
-#define _IOS_INPUT 1
-#define _IOS_OUTPUT 2
-#define _IOS_ATEND 4
-#define _IOS_APPEND 8
-#define _IOS_TRUNC 16
-#define _IOS_NOCREATE 32
-#define _IOS_NOREPLACE 64
-#define _IOS_BIN 128
-
-/* Magic numbers and bits for the _flags field.
- The magic numbers use the high-order bits of _flags;
- the remaining bits are available for variable flags.
- Note: The magic numbers must all be negative if stdio
- emulation is desired. */
-
-#define _IO_MAGIC 0xFBAD0000 /* Magic number */
-#define _OLD_STDIO_MAGIC 0xFABC0000 /* Emulate old stdio. */
-#define _IO_MAGIC_MASK 0xFFFF0000
-#define _IO_USER_BUF 1 /* User owns buffer; don't delete it on close. */
-#define _IO_UNBUFFERED 2
-#define _IO_NO_READS 4 /* Reading not allowed */
-#define _IO_NO_WRITES 8 /* Writing not allowd */
-#define _IO_EOF_SEEN 0x10
-#define _IO_ERR_SEEN 0x20
-#define _IO_DELETE_DONT_CLOSE 0x40 /* Don't call close(_fileno) on cleanup. */
-#define _IO_LINKED 0x80 /* Set if linked (using _chain) to streambuf::_list_all.*/
-#define _IO_IN_BACKUP 0x100
-#define _IO_LINE_BUF 0x200
-#define _IO_TIED_PUT_GET 0x400 /* Set if put and get pointer logicly tied. */
-#define _IO_CURRENTLY_PUTTING 0x800
-#define _IO_IS_APPENDING 0x1000
-#define _IO_IS_FILEBUF 0x2000
-#define _IO_BAD_SEEN 0x4000
-#define _IO_USER_LOCK 0x8000
-
-/* These are "formatting flags" matching the iostream fmtflags enum values. */
-#define _IO_SKIPWS 01
-#define _IO_LEFT 02
-#define _IO_RIGHT 04
-#define _IO_INTERNAL 010
-#define _IO_DEC 020
-#define _IO_OCT 040
-#define _IO_HEX 0100
-#define _IO_SHOWBASE 0200
-#define _IO_SHOWPOINT 0400
-#define _IO_UPPERCASE 01000
-#define _IO_SHOWPOS 02000
-#define _IO_SCIENTIFIC 04000
-#define _IO_FIXED 010000
-#define _IO_UNITBUF 020000
-#define _IO_STDIO 040000
-#define _IO_DONT_CLOSE 0100000
-#define _IO_BOOLALPHA 0200000
-
-
-struct _IO_jump_t; struct _IO_FILE;
-
-/* Handle lock. */
-#ifdef _IO_MTSAFE_IO
-# if defined __GLIBC__ && __GLIBC__ >= 2
-# if __GLIBC_MINOR__ == 0
-# include <stdio-lock.h>
-# else
-# include <bits/stdio-lock.h>
-# endif
-# else
-/*# include <comthread.h>*/
-# endif
-#else
-typedef void _IO_lock_t;
-#endif
-
-
-/* A streammarker remembers a position in a buffer. */
-
-struct _IO_marker {
- struct _IO_marker *_next;
- struct _IO_FILE *_sbuf;
- /* If _pos >= 0
- it points to _buf->Gbase()+_pos. FIXME comment */
- /* if _pos < 0, it points to _buf->eBptr()+_pos. FIXME comment */
- int _pos;
-#if 0
- void set_streampos(streampos sp) { _spos = sp; }
- void set_offset(int offset) { _pos = offset; _spos = (streampos)(-2); }
- public:
- streammarker(streambuf *sb);
- ~streammarker();
- int saving() { return _spos == -2; }
- int delta(streammarker&);
- int delta();
-#endif
-};
-
-/* This is the structure from the libstdc++ codecvt class. */
-enum __codecvt_result
-{
- __codecvt_ok,
- __codecvt_partial,
- __codecvt_error,
- __codecvt_noconv
-};
-
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-/* The order of the elements in the following struct must match the order
- of the virtual functions in the libstdc++ codecvt class. */
-struct _IO_codecvt
-{
- void (*__codecvt_destr) (struct _IO_codecvt *);
- enum __codecvt_result (*__codecvt_do_out) (struct _IO_codecvt *,
- __c_mbstate_t *,
- const wchar_t *,
- const wchar_t *,
- const wchar_t **, char *,
- char *, char **);
- enum __codecvt_result (*__codecvt_do_unshift) (struct _IO_codecvt *,
- __c_mbstate_t *, char *,
- char *, char **);
- enum __codecvt_result (*__codecvt_do_in) (struct _IO_codecvt *,
- __c_mbstate_t *,
- const char *, const char *,
- const char **, wchar_t *,
- wchar_t *, wchar_t **);
- int (*__codecvt_do_encoding) (struct _IO_codecvt *);
- int (*__codecvt_do_always_noconv) (struct _IO_codecvt *);
- int (*__codecvt_do_length) (struct _IO_codecvt *, __c_mbstate_t *,
- const char *, const char *, _IO_size_t);
- int (*__codecvt_do_max_length) (struct _IO_codecvt *);
-
- _IO_iconv_t __cd_in;
- _IO_iconv_t __cd_out;
-};
-
-/* Extra data for wide character streams. */
-struct _IO_wide_data
-{
- wchar_t *_IO_read_ptr; /* Current read pointer */
- wchar_t *_IO_read_end; /* End of get area. */
- wchar_t *_IO_read_base; /* Start of putback+get area. */
- wchar_t *_IO_write_base; /* Start of put area. */
- wchar_t *_IO_write_ptr; /* Current put pointer. */
- wchar_t *_IO_write_end; /* End of put area. */
- wchar_t *_IO_buf_base; /* Start of reserve area. */
- wchar_t *_IO_buf_end; /* End of reserve area. */
- /* The following fields are used to support backing up and undo. */
- wchar_t *_IO_save_base; /* Pointer to start of non-current get area. */
- wchar_t *_IO_backup_base; /* Pointer to first valid character of
- backup area */
- wchar_t *_IO_save_end; /* Pointer to end of non-current get area. */
-
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- __c_mbstate_t _IO_state;
- __c_mbstate_t _IO_last_state;
-#endif
- struct _IO_codecvt _codecvt;
-
- wchar_t _shortbuf[1];
-
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- struct _IO_jump_t *_wide_vtable;
-#endif
-};
-#else /* !(defined _LIBC || defined _GLIBCPP_USE_WCHAR_T) */
-/* Because _IO_no_init unconditionally takes a `_IO_wide_data*' as its
- last parameter we must still define this type. We intentionally
- leave it incomplete to prevent any use of this type when we are not
- supporting wide characters. */
-struct _IO_wide_data;
-#endif /* !(defined _LIBC || defined _GLIBCPP_USE_WCHAR_T) */
-
-struct _IO_FILE {
- int _flags; /* High-order word is _IO_MAGIC; rest is flags. */
-#define _IO_file_flags _flags
-
- /* The following pointers correspond to the C++ streambuf protocol. */
- /* Note: Tk uses the _IO_read_ptr and _IO_read_end fields directly. */
- char* _IO_read_ptr; /* Current read pointer */
- char* _IO_read_end; /* End of get area. */
- char* _IO_read_base; /* Start of putback+get area. */
- char* _IO_write_base; /* Start of put area. */
- char* _IO_write_ptr; /* Current put pointer. */
- char* _IO_write_end; /* End of put area. */
- char* _IO_buf_base; /* Start of reserve area. */
- char* _IO_buf_end; /* End of reserve area. */
- /* The following fields are used to support backing up and undo. */
- char *_IO_save_base; /* Pointer to start of non-current get area. */
- char *_IO_backup_base; /* Pointer to first valid character of backup area */
- char *_IO_save_end; /* Pointer to end of non-current get area. */
-
- struct _IO_marker *_markers;
-
- struct _IO_FILE *_chain;
-
- int _fileno;
- int _blksize;
- _IO_off_t _old_offset; /* This used to be _offset but it's too small. */
-
-#define __HAVE_COLUMN /* temporary */
- /* 1+column number of pbase(); 0 is unknown. */
- unsigned short _cur_column;
- signed char _vtable_offset;
- char _shortbuf[1];
-
- /* char* _save_gptr; char* _save_egptr; */
-
- _IO_lock_t *_lock;
-#ifdef _IO_USE_OLD_IO_FILE
-};
-
-struct _IO_FILE_complete
-{
- struct _IO_FILE _file;
-#endif
-#if defined _G_IO_IO_FILE_VERSION && _G_IO_IO_FILE_VERSION == 0x20001
- _IO_off64_t _offset;
-# if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
- /* Wide character stream stuff. */
- struct _IO_codecvt *_codecvt;
- struct _IO_wide_data *_wide_data;
-# else
- void *__pad1;
- void *__pad2;
-# endif
- int _mode;
- /* Make sure we don't get into trouble again. */
- char _unused2[15 * sizeof (int) - 2 * sizeof (void *)];
-#endif
-};
-
-#ifndef __cplusplus
-typedef struct _IO_FILE _IO_FILE;
-#endif
-
-struct _IO_FILE_plus;
-
-extern struct _IO_FILE_plus _IO_2_1_stdin_;
-extern struct _IO_FILE_plus _IO_2_1_stdout_;
-extern struct _IO_FILE_plus _IO_2_1_stderr_;
-#ifndef _LIBC
-#define _IO_stdin ((_IO_FILE*)(&_IO_2_1_stdin_))
-#define _IO_stdout ((_IO_FILE*)(&_IO_2_1_stdout_))
-#define _IO_stderr ((_IO_FILE*)(&_IO_2_1_stderr_))
-#else
-extern _IO_FILE *_IO_stdin;
-extern _IO_FILE *_IO_stdout;
-extern _IO_FILE *_IO_stderr;
-#endif
-
-
-/* Functions to do I/O and file management for a stream. */
-
-/* Read NBYTES bytes from COOKIE into a buffer pointed to by BUF.
- Return number of bytes read. */
-typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
-
-/* Write N bytes pointed to by BUF to COOKIE. Write all N bytes
- unless there is an error. Return number of bytes written, or -1 if
- there is an error without writing anything. If the file has been
- opened for append (__mode.__append set), then set the file pointer
- to the end of the file and then do the write; if not, just write at
- the current file pointer. */
-typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
- size_t __n);
-
-/* Move COOKIE's file position to *POS bytes from the
- beginning of the file (if W is SEEK_SET),
- the current position (if W is SEEK_CUR),
- or the end of the file (if W is SEEK_END).
- Set *POS to the new file position.
- Returns zero if successful, nonzero if not. */
-typedef int __io_seek_fn (void *__cookie, _IO_off64_t *__pos, int __w);
-
-/* Close COOKIE. */
-typedef int __io_close_fn (void *__cookie);
-
-
-#ifdef _GNU_SOURCE
-/* User-visible names for the above. */
-typedef __io_read_fn cookie_read_function_t;
-typedef __io_write_fn cookie_write_function_t;
-typedef __io_seek_fn cookie_seek_function_t;
-typedef __io_close_fn cookie_close_function_t;
-
-/* The structure with the cookie function pointers. */
-typedef struct
-{
- __io_read_fn *read; /* Read bytes. */
- __io_write_fn *write; /* Write bytes. */
- __io_seek_fn *seek; /* Seek/tell file position. */
- __io_close_fn *close; /* Close file. */
-} _IO_cookie_io_functions_t;
-typedef _IO_cookie_io_functions_t cookie_io_functions_t;
-
-struct _IO_cookie_file;
-
-/* Initialize one of those. */
-extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
- void *__cookie, _IO_cookie_io_functions_t __fns);
-#endif
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern int __underflow (_IO_FILE *) __THROW;
-extern int __uflow (_IO_FILE *) __THROW;
-extern int __overflow (_IO_FILE *, int) __THROW;
-extern _IO_wint_t __wunderflow (_IO_FILE *) __THROW;
-extern _IO_wint_t __wuflow (_IO_FILE *) __THROW;
-extern _IO_wint_t __woverflow (_IO_FILE *, _IO_wint_t) __THROW;
-
-#define _IO_getc_unlocked(_fp) \
- ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end ? __uflow (_fp) \
- : *(unsigned char *) (_fp)->_IO_read_ptr++)
-#define _IO_peekc_unlocked(_fp) \
- ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end \
- && __underflow (_fp) == EOF ? EOF \
- : *(unsigned char *) (_fp)->_IO_read_ptr)
-#define _IO_putc_unlocked(_ch, _fp) \
- (((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end) \
- ? __overflow (_fp, (unsigned char) (_ch)) \
- : (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch)))
-
-#define _IO_getwc_unlocked(_fp) \
- ((_fp)->_wide_data->_IO_read_ptr >= (_fp)->_wide_data->_IO_read_end \
- ? __wuflow (_fp) : (_IO_wint_t) *(_fp)->_wide_data->_IO_read_ptr++)
-#define _IO_putwc_unlocked(_wch, _fp) \
- ((_fp)->_wide_data->_IO_write_ptr >= (_fp)->_wide_data->_IO_write_end \
- ? __woverflow (_fp, _wch) \
- : (_IO_wint_t) (*(_fp)->_wide_data->_IO_write_ptr++ = (_wch)))
-
-#define _IO_feof_unlocked(__fp) (((__fp)->_flags & _IO_EOF_SEEN) != 0)
-#define _IO_ferror_unlocked(__fp) (((__fp)->_flags & _IO_ERR_SEEN) != 0)
-
-extern int _IO_getc (_IO_FILE *__fp) __THROW;
-extern int _IO_putc (int __c, _IO_FILE *__fp) __THROW;
-extern int _IO_feof (_IO_FILE *__fp) __THROW;
-extern int _IO_ferror (_IO_FILE *__fp) __THROW;
-
-extern int _IO_peekc_locked (_IO_FILE *__fp) __THROW;
-
-/* This one is for Emacs. */
-#define _IO_PENDING_OUTPUT_COUNT(_fp) \
- ((_fp)->_IO_write_ptr - (_fp)->_IO_write_base)
-
-extern void _IO_flockfile (_IO_FILE *) __THROW;
-extern void _IO_funlockfile (_IO_FILE *) __THROW;
-extern int _IO_ftrylockfile (_IO_FILE *) __THROW;
-
-#ifdef _IO_MTSAFE_IO
-# define _IO_peekc(_fp) _IO_peekc_locked (_fp)
-#else
-# define _IO_peekc(_fp) _IO_peekc_unlocked (_fp)
-# define _IO_flockfile(_fp) /**/
-# define _IO_funlockfile(_fp) /**/
-# define _IO_ftrylockfile(_fp) /**/
-# define _IO_cleanup_region_start(_fct, _fp) /**/
-# define _IO_cleanup_region_end(_Doit) /**/
-#endif /* !_IO_MTSAFE_IO */
-
-extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
- _IO_va_list, int *__restrict) __THROW;
-extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
- _IO_va_list) __THROW;
-extern _IO_ssize_t _IO_padn (_IO_FILE *, int, _IO_ssize_t) __THROW;
-extern _IO_size_t _IO_sgetn (_IO_FILE *, void *, _IO_size_t) __THROW;
-
-extern _IO_off64_t _IO_seekoff (_IO_FILE *, _IO_off64_t, int, int) __THROW;
-extern _IO_off64_t _IO_seekpos (_IO_FILE *, _IO_off64_t, int) __THROW;
-
-extern void _IO_free_backup_area (_IO_FILE *) __THROW;
-
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-extern _IO_wint_t _IO_getwc (_IO_FILE *__fp) __THROW;
-extern _IO_wint_t _IO_putwc (wchar_t __wc, _IO_FILE *__fp) __THROW;
-extern int _IO_fwide (_IO_FILE *__fp, int __mode) __THROW;
-# if __GNUC__ >= 2
-/* A special optimized version of the function above. It optimizes the
- case of initializing an unoriented byte stream. */
-# define _IO_fwide(__fp, __mode) \
- ({ int __result = (__mode); \
- if (__result < 0) \
- { \
- if ((__fp)->_mode == 0) \
- /* We know that all we have to do is to set the flag. */ \
- (__fp)->_mode = -1; \
- __result = (__fp)->_mode; \
- } \
- else \
- __result = _IO_fwide (__fp, __result); \
- __result; })
-# endif
-
-extern int _IO_vfwscanf (_IO_FILE * __restrict, const wchar_t * __restrict,
- _IO_va_list, int *__restrict) __THROW;
-extern int _IO_vfwprintf (_IO_FILE *__restrict, const wchar_t *__restrict,
- _IO_va_list) __THROW;
-extern _IO_ssize_t _IO_wpadn (_IO_FILE *, wint_t, _IO_ssize_t) __THROW;
-extern void _IO_free_wbackup_area (_IO_FILE *) __THROW;
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _IO_STDIO_H */
diff --git a/contrib/libstdc++/libio/libioP.h b/contrib/libstdc++/libio/libioP.h
deleted file mode 100644
index 4aecf4e..0000000
--- a/contrib/libstdc++/libio/libioP.h
+++ /dev/null
@@ -1,821 +0,0 @@
-/* Copyright (C) 1993, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
- This file is part of the GNU IO 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 2, 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 COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, if you link this library with files
- compiled with a GNU compiler to produce an executable, this does
- not cause the resulting executable to be covered by the GNU General
- Public License. This exception does not however invalidate any
- other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-# include <errno.h>
-
-#ifndef __set_errno
-# define __set_errno(Val) errno = (Val)
-#endif
-#if defined __GLIBC__ && __GLIBC__ >= 2
-# include <bits/libc-lock.h>
-#else
-/*# include <comthread.h>*/
-#endif
-
-#include "iolibio.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define _IO_seek_set 0
-#define _IO_seek_cur 1
-#define _IO_seek_end 2
-
-/* THE JUMPTABLE FUNCTIONS.
-
- * The _IO_FILE type is used to implement the FILE type in GNU libc,
- * as well as the streambuf class in GNU iostreams for C++.
- * These are all the same, just used differently.
- * An _IO_FILE (or FILE) object is allows followed by a pointer to
- * a jump table (of pointers to functions). The pointer is accessed
- * with the _IO_JUMPS macro. The jump table has a eccentric format,
- * so as to be compatible with the layout of a C++ virtual function table.
- * (as implemented by g++). When a pointer to a streambuf object is
- * coerced to an (_IO_FILE*), then _IO_JUMPS on the result just
- * happens to point to the virtual function table of the streambuf.
- * Thus the _IO_JUMPS function table used for C stdio/libio does
- * double duty as the virtual function table for C++ streambuf.
- *
- * The entries in the _IO_JUMPS function table (and hence also the
- * virtual functions of a streambuf) are described below.
- * The first parameter of each function entry is the _IO_FILE/streambuf
- * object being acted on (i.e. the 'this' parameter).
- */
-
-#if (!defined _IO_USE_OLD_IO_FILE \
- && (!defined _G_IO_NO_BACKWARD_COMPAT || _G_IO_NO_BACKWARD_COMPAT == 0))
-# define _IO_JUMPS_OFFSET 1
-#endif
-
-#define _IO_JUMPS(THIS) (THIS)->vtable
-#define _IO_WIDE_JUMPS(THIS) ((struct _IO_FILE *) (THIS))->_wide_data->_wide_vtable
-#define _IO_CHECK_WIDE(THIS) (((struct _IO_FILE *) (THIS))->_wide_data != NULL)
-
-#if _IO_JUMPS_OFFSET
-# define _IO_JUMPS_FUNC(THIS) \
- (*(struct _IO_jump_t **) ((void *) &_IO_JUMPS ((struct _IO_FILE_plus *) (THIS)) \
- + (THIS)->_vtable_offset))
-#else
-# define _IO_JUMPS_FUNC(THIS) _IO_JUMPS ((struct _IO_FILE_plus *) (THIS))
-#endif
-#define _IO_WIDE_JUMPS_FUNC(THIS) _IO_WIDE_JUMPS(THIS)
-#if _G_USING_THUNKS
-# define JUMP_FIELD(TYPE, NAME) TYPE NAME
-# define JUMP0(FUNC, THIS) _IO_JUMPS_FUNC(THIS)->FUNC (THIS)
-# define JUMP1(FUNC, THIS, X1) _IO_JUMPS_FUNC(THIS)->FUNC (THIS, X1)
-# define JUMP2(FUNC, THIS, X1, X2) _IO_JUMPS_FUNC(THIS)->FUNC (THIS, X1, X2)
-# define JUMP3(FUNC, THIS, X1,X2,X3) _IO_JUMPS_FUNC(THIS)->FUNC (THIS, X1,X2, X3)
-# define JUMP_INIT(NAME, VALUE) VALUE
-# define JUMP_INIT_DUMMY JUMP_INIT(dummy, 0), JUMP_INIT (dummy2, 0)
-
-# define WJUMP0(FUNC, THIS) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC (THIS)
-# define WJUMP1(FUNC, THIS, X1) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC (THIS, X1)
-# define WJUMP2(FUNC, THIS, X1, X2) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC (THIS, X1, X2)
-# define WJUMP3(FUNC, THIS, X1,X2,X3) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC (THIS, X1,X2, X3)
-#else
-/* These macros will change when we re-implement vtables to use "thunks"! */
-# define JUMP_FIELD(TYPE, NAME) struct { short delta1, delta2; TYPE pfn; } NAME
-# define JUMP0(FUNC, THIS) _IO_JUMPS_FUNC(THIS)->FUNC.pfn (THIS)
-# define JUMP1(FUNC, THIS, X1) _IO_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1)
-# define JUMP2(FUNC, THIS, X1, X2) _IO_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1, X2)
-# define JUMP3(FUNC, THIS, X1,X2,X3) _IO_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1,X2,X3)
-# define JUMP_INIT(NAME, VALUE) {0, 0, VALUE}
-# define JUMP_INIT_DUMMY JUMP_INIT(dummy, 0)
-
-# define WJUMP0(FUNC, THIS) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC.pfn (THIS)
-# define WJUMP1(FUNC, THIS, X1) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1)
-# define WJUMP2(FUNC, THIS, X1, X2) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1, X2)
-# define WJUMP3(FUNC, THIS, X1,X2,X3) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1,X2,X3)
-#endif
-
-/* The 'finish' function does any final cleaning up of an _IO_FILE object.
- It does not delete (free) it, but does everything else to finalize it.
- It matches the streambuf::~streambuf virtual destructor. */
-typedef void (*_IO_finish_t) __PMT ((_IO_FILE *, int)); /* finalize */
-#define _IO_FINISH(FP) JUMP1 (__finish, FP, 0)
-#define _IO_WFINISH(FP) WJUMP1 (__finish, FP, 0)
-
-/* The 'overflow' hook flushes the buffer.
- The second argument is a character, or EOF.
- It matches the streambuf::overflow virtual function. */
-typedef int (*_IO_overflow_t) __PMT ((_IO_FILE *, int));
-#define _IO_OVERFLOW(FP, CH) JUMP1 (__overflow, FP, CH)
-#define _IO_WOVERFLOW(FP, CH) WJUMP1 (__overflow, FP, CH)
-
-/* The 'underflow' hook tries to fills the get buffer.
- It returns the next character (as an unsigned char) or EOF. The next
- character remains in the get buffer, and the get position is not changed.
- It matches the streambuf::underflow virtual function. */
-typedef int (*_IO_underflow_t) __PMT ((_IO_FILE *));
-#define _IO_UNDERFLOW(FP) JUMP0 (__underflow, FP)
-#define _IO_WUNDERFLOW(FP) WJUMP0 (__underflow, FP)
-
-/* The 'uflow' hook returns the next character in the input stream
- (cast to unsigned char), and increments the read position;
- EOF is returned on failure.
- It matches the streambuf::uflow virtual function, which is not in the
- cfront implementation, but was added to C++ by the ANSI/ISO committee. */
-#define _IO_UFLOW(FP) JUMP0 (__uflow, FP)
-#define _IO_WUFLOW(FP) WJUMP0 (__uflow, FP)
-
-/* The 'pbackfail' hook handles backing up.
- It matches the streambuf::pbackfail virtual function. */
-typedef int (*_IO_pbackfail_t) __PMT ((_IO_FILE *, int));
-#define _IO_PBACKFAIL(FP, CH) JUMP1 (__pbackfail, FP, CH)
-#define _IO_WPBACKFAIL(FP, CH) WJUMP1 (__pbackfail, FP, CH)
-
-/* The 'xsputn' hook writes upto N characters from buffer DATA.
- Returns the number of character actually written.
- It matches the streambuf::xsputn virtual function. */
-typedef _IO_size_t (*_IO_xsputn_t) __PMT ((_IO_FILE *FP, const void *DATA,
- _IO_size_t N));
-#define _IO_XSPUTN(FP, DATA, N) JUMP2 (__xsputn, FP, DATA, N)
-#define _IO_WXSPUTN(FP, DATA, N) WJUMP2 (__xsputn, FP, DATA, N)
-
-/* The 'xsgetn' hook reads upto N characters into buffer DATA.
- Returns the number of character actually read.
- It matches the streambuf::xsgetn virtual function. */
-typedef _IO_size_t (*_IO_xsgetn_t) __PMT ((_IO_FILE *FP, void *DATA,
- _IO_size_t N));
-#define _IO_XSGETN(FP, DATA, N) JUMP2 (__xsgetn, FP, DATA, N)
-#define _IO_WXSGETN(FP, DATA, N) WJUMP2 (__xsgetn, FP, DATA, N)
-
-/* The 'seekoff' hook moves the stream position to a new position
- relative to the start of the file (if DIR==0), the current position
- (MODE==1), or the end of the file (MODE==2).
- It matches the streambuf::seekoff virtual function.
- It is also used for the ANSI fseek function. */
-typedef _IO_off64_t (*_IO_seekoff_t) __PMT ((_IO_FILE *FP, _IO_off64_t OFF,
- int DIR, int MODE));
-#define _IO_SEEKOFF(FP, OFF, DIR, MODE) JUMP3 (__seekoff, FP, OFF, DIR, MODE)
-#define _IO_WSEEKOFF(FP, OFF, DIR, MODE) WJUMP3 (__seekoff, FP, OFF, DIR, MODE)
-
-/* The 'seekpos' hook also moves the stream position,
- but to an absolute position given by a fpos64_t (seekpos).
- It matches the streambuf::seekpos virtual function.
- It is also used for the ANSI fgetpos and fsetpos functions. */
-/* The _IO_seek_cur and _IO_seek_end options are not allowed. */
-typedef _IO_off64_t (*_IO_seekpos_t) __PMT ((_IO_FILE *, _IO_off64_t, int));
-#define _IO_SEEKPOS(FP, POS, FLAGS) JUMP2 (__seekpos, FP, POS, FLAGS)
-#define _IO_WSEEKPOS(FP, POS, FLAGS) WJUMP2 (__seekpos, FP, POS, FLAGS)
-
-/* The 'setbuf' hook gives a buffer to the file.
- It matches the streambuf::setbuf virtual function. */
-typedef _IO_FILE* (*_IO_setbuf_t) __PMT ((_IO_FILE *, char *, _IO_ssize_t));
-#define _IO_SETBUF(FP, BUFFER, LENGTH) JUMP2 (__setbuf, FP, BUFFER, LENGTH)
-#define _IO_WSETBUF(FP, BUFFER, LENGTH) WJUMP2 (__setbuf, FP, BUFFER, LENGTH)
-
-/* The 'sync' hook attempts to synchronize the internal data structures
- of the file with the external state.
- It matches the streambuf::sync virtual function. */
-typedef int (*_IO_sync_t) __PMT ((_IO_FILE *));
-#define _IO_SYNC(FP) JUMP0 (__sync, FP)
-#define _IO_WSYNC(FP) WJUMP0 (__sync, FP)
-
-/* The 'doallocate' hook is used to tell the file to allocate a buffer.
- It matches the streambuf::doallocate virtual function, which is not
- in the ANSI/ISO C++ standard, but is part traditional implementations. */
-typedef int (*_IO_doallocate_t) __PMT ((_IO_FILE *));
-#define _IO_DOALLOCATE(FP) JUMP0 (__doallocate, FP)
-#define _IO_WDOALLOCATE(FP) WJUMP0 (__doallocate, FP)
-
-/* The following four hooks (sysread, syswrite, sysclose, sysseek, and
- sysstat) are low-level hooks specific to this implementation.
- There is no correspondence in the ANSI/ISO C++ standard library.
- The hooks basically correspond to the Unix system functions
- (read, write, close, lseek, and stat) except that a _IO_FILE*
- parameter is used instead of a integer file descriptor; the default
- implementation used for normal files just calls those functions.
- The advantage of overriding these functions instead of the higher-level
- ones (underflow, overflow etc) is that you can leave all the buffering
- higher-level functions. */
-
-/* The 'sysread' hook is used to read data from the external file into
- an existing buffer. It generalizes the Unix read(2) function.
- It matches the streambuf::sys_read virtual function, which is
- specific to this implementation. */
-typedef _IO_ssize_t (*_IO_read_t) __PMT ((_IO_FILE *, void *, _IO_ssize_t));
-#define _IO_SYSREAD(FP, DATA, LEN) JUMP2 (__read, FP, DATA, LEN)
-#define _IO_WSYSREAD(FP, DATA, LEN) WJUMP2 (__read, FP, DATA, LEN)
-
-/* The 'syswrite' hook is used to write data from an existing buffer
- to an external file. It generalizes the Unix write(2) function.
- It matches the streambuf::sys_write virtual function, which is
- specific to this implementation. */
-typedef _IO_ssize_t (*_IO_write_t) __PMT ((_IO_FILE *, const void *,
- _IO_ssize_t));
-#define _IO_SYSWRITE(FP, DATA, LEN) JUMP2 (__write, FP, DATA, LEN)
-#define _IO_WSYSWRITE(FP, DATA, LEN) WJUMP2 (__write, FP, DATA, LEN)
-
-/* The 'sysseek' hook is used to re-position an external file.
- It generalizes the Unix lseek(2) function.
- It matches the streambuf::sys_seek virtual function, which is
- specific to this implementation. */
-typedef _IO_off64_t (*_IO_seek_t) __PMT ((_IO_FILE *, _IO_off64_t, int));
-#define _IO_SYSSEEK(FP, OFFSET, MODE) JUMP2 (__seek, FP, OFFSET, MODE)
-#define _IO_WSYSSEEK(FP, OFFSET, MODE) WJUMP2 (__seek, FP, OFFSET, MODE)
-
-/* The 'sysclose' hook is used to finalize (close, finish up) an
- external file. It generalizes the Unix close(2) function.
- It matches the streambuf::sys_close virtual function, which is
- specific to this implementation. */
-typedef int (*_IO_close_t) __PMT ((_IO_FILE *)); /* finalize */
-#define _IO_SYSCLOSE(FP) JUMP0 (__close, FP)
-#define _IO_WSYSCLOSE(FP) WJUMP0 (__close, FP)
-
-/* The 'sysstat' hook is used to get information about an external file
- into a struct stat buffer. It generalizes the Unix fstat(2) call.
- It matches the streambuf::sys_stat virtual function, which is
- specific to this implementation. */
-typedef int (*_IO_stat_t) __PMT ((_IO_FILE *, void *));
-#define _IO_SYSSTAT(FP, BUF) JUMP1 (__stat, FP, BUF)
-#define _IO_WSYSSTAT(FP, BUF) WJUMP1 (__stat, FP, BUF)
-
-/* The 'showmany' hook can be used to get an image how much input is
- available. In many cases the answer will be 0 which means unknown
- but some cases one can provide real information. */
-typedef int (*_IO_showmanyc_t) __PMT ((_IO_FILE *));
-#define _IO_SHOWMANYC(FP) JUMP0 (__showmanyc, FP)
-#define _IO_WSHOWMANYC(FP) WJUMP0 (__showmanyc, FP)
-
-/* The 'imbue' hook is used to get information about the currently
- installed locales. */
-typedef void (*_IO_imbue_t) __PMT ((_IO_FILE *, void *));
-#define _IO_IMBUE(FP, LOCALE) JUMP1 (__imbue, FP, LOCALE)
-#define _IO_WIMBUE(FP, LOCALE) WJUMP1 (__imbue, FP, LOCALE)
-
-
-#define _IO_CHAR_TYPE char /* unsigned char ? */
-#define _IO_INT_TYPE int
-
-struct _IO_jump_t
-{
- JUMP_FIELD(_G_size_t, __dummy);
-#if _G_USING_THUNKS
- JUMP_FIELD(_G_size_t, __dummy2);
-#endif
- JUMP_FIELD(_IO_finish_t, __finish);
- JUMP_FIELD(_IO_overflow_t, __overflow);
- JUMP_FIELD(_IO_underflow_t, __underflow);
- JUMP_FIELD(_IO_underflow_t, __uflow);
- JUMP_FIELD(_IO_pbackfail_t, __pbackfail);
- /* showmany */
- JUMP_FIELD(_IO_xsputn_t, __xsputn);
- JUMP_FIELD(_IO_xsgetn_t, __xsgetn);
- JUMP_FIELD(_IO_seekoff_t, __seekoff);
- JUMP_FIELD(_IO_seekpos_t, __seekpos);
- JUMP_FIELD(_IO_setbuf_t, __setbuf);
- JUMP_FIELD(_IO_sync_t, __sync);
- JUMP_FIELD(_IO_doallocate_t, __doallocate);
- JUMP_FIELD(_IO_read_t, __read);
- JUMP_FIELD(_IO_write_t, __write);
- JUMP_FIELD(_IO_seek_t, __seek);
- JUMP_FIELD(_IO_close_t, __close);
- JUMP_FIELD(_IO_stat_t, __stat);
- JUMP_FIELD(_IO_showmanyc_t, __showmanyc);
- JUMP_FIELD(_IO_imbue_t, __imbue);
-#if 0
- get_column;
- set_column;
-#endif
-};
-
-/* We always allocate an extra word following an _IO_FILE.
- This contains a pointer to the function jump table used.
- This is for compatibility with C++ streambuf; the word can
- be used to smash to a pointer to a virtual function table. */
-
-struct _IO_FILE_plus
-{
- _IO_FILE file;
- const struct _IO_jump_t *vtable;
-};
-
-/* Special file type for fopencookie function. */
-struct _IO_cookie_file
-{
- struct _IO_FILE_plus __fp;
- void *__cookie;
- _IO_cookie_io_functions_t __io_functions;
-};
-
-/* Iterator type for walking global linked list of _IO_FILE objects. */
-
-typedef struct _IO_FILE *_IO_ITER;
-
-/* Generic functions */
-
-extern void _IO_switch_to_main_get_area __P ((_IO_FILE *));
-extern void _IO_switch_to_backup_area __P ((_IO_FILE *));
-extern int _IO_switch_to_get_mode __P ((_IO_FILE *));
-extern void _IO_init __P ((_IO_FILE *, int));
-extern int _IO_sputbackc __P ((_IO_FILE *, int));
-extern int _IO_sungetc __P ((_IO_FILE *));
-extern void _IO_un_link __P ((struct _IO_FILE_plus *));
-extern void _IO_link_in __P ((struct _IO_FILE_plus *));
-extern void _IO_doallocbuf __P ((_IO_FILE *));
-extern void _IO_unsave_markers __P ((_IO_FILE *));
-extern void _IO_setb __P ((_IO_FILE *, char *, char *, int));
-extern unsigned _IO_adjust_column __P ((unsigned, const char *, int));
-#define _IO_sputn(__fp, __s, __n) _IO_XSPUTN (__fp, __s, __n)
-
-extern void _IO_switch_to_main_wget_area __P ((_IO_FILE *));
-extern void _IO_switch_to_wbackup_area __P ((_IO_FILE *));
-extern int _IO_switch_to_wget_mode __P ((_IO_FILE *));
-extern void _IO_wsetb __P ((_IO_FILE *, wchar_t *, wchar_t *, int));
-extern wint_t _IO_sputbackwc __P ((_IO_FILE *, wint_t));
-extern wint_t _IO_sungetwc __P ((_IO_FILE *));
-extern void _IO_wdoallocbuf __P ((_IO_FILE *));
-extern void _IO_unsave_wmarkers __P ((_IO_FILE *));
-extern unsigned _IO_adjust_wcolumn __P ((unsigned, const wchar_t *, int));
-
-/* Marker-related function. */
-
-extern void _IO_init_marker __P ((struct _IO_marker *, _IO_FILE *));
-extern void _IO_init_wmarker __P ((struct _IO_marker *, _IO_FILE *));
-extern void _IO_remove_marker __P ((struct _IO_marker *));
-extern int _IO_marker_difference __P ((struct _IO_marker *,
- struct _IO_marker *));
-extern int _IO_marker_delta __P ((struct _IO_marker *));
-extern int _IO_wmarker_delta __P ((struct _IO_marker *));
-extern int _IO_seekmark __P ((_IO_FILE *, struct _IO_marker *, int));
-extern int _IO_seekwmark __P ((_IO_FILE *, struct _IO_marker *, int));
-
-/* Functions for iterating global list and dealing with
- its lock */
-
-extern _IO_ITER _IO_iter_begin __P ((void));
-extern _IO_ITER _IO_iter_end __P ((void));
-extern _IO_ITER _IO_iter_next __P ((_IO_ITER));
-extern _IO_FILE *_IO_iter_file __P ((_IO_ITER));
-extern void _IO_list_lock __P ((void));
-extern void _IO_list_unlock __P ((void));
-extern void _IO_list_resetlock __P ((void));
-
-/* Default jumptable functions. */
-
-extern int _IO_default_underflow __P ((_IO_FILE *));
-extern int _IO_default_uflow __P ((_IO_FILE *));
-extern wint_t _IO_wdefault_uflow __P ((_IO_FILE *));
-extern int _IO_default_doallocate __P ((_IO_FILE *));
-extern int _IO_wdefault_doallocate __P ((_IO_FILE *));
-extern void _IO_default_finish __P ((_IO_FILE *, int));
-extern void _IO_wdefault_finish __P ((_IO_FILE *, int));
-extern int _IO_default_pbackfail __P ((_IO_FILE *, int));
-extern wint_t _IO_wdefault_pbackfail __P ((_IO_FILE *, wint_t));
-extern _IO_FILE* _IO_default_setbuf __P ((_IO_FILE *, char *, _IO_ssize_t));
-extern _IO_FILE* _IO_wdefault_setbuf __P ((_IO_FILE *, wchar_t *,
- _IO_ssize_t));
-extern _IO_size_t _IO_default_xsputn __P ((_IO_FILE *, const void *,
- _IO_size_t));
-extern _IO_size_t _IO_wdefault_xsputn __P ((_IO_FILE *, const void *,
- _IO_size_t));
-extern _IO_size_t _IO_default_xsgetn __P ((_IO_FILE *, void *, _IO_size_t));
-extern _IO_size_t _IO_wdefault_xsgetn __P ((_IO_FILE *, void *, _IO_size_t));
-extern _IO_off64_t _IO_default_seekoff __P ((_IO_FILE *,
- _IO_off64_t, int, int));
-extern _IO_off64_t _IO_default_seekpos __P ((_IO_FILE *, _IO_off64_t, int));
-extern _IO_ssize_t _IO_default_write __P ((_IO_FILE *, const void *,
- _IO_ssize_t));
-extern _IO_ssize_t _IO_default_read __P ((_IO_FILE *, void *, _IO_ssize_t));
-extern int _IO_default_stat __P ((_IO_FILE *, void *));
-extern _IO_off64_t _IO_default_seek __P ((_IO_FILE *, _IO_off64_t, int));
-extern int _IO_default_sync __P ((_IO_FILE *));
-#define _IO_default_close ((_IO_close_t) _IO_default_sync)
-extern int _IO_default_showmanyc __P ((_IO_FILE *));
-extern void _IO_default_imbue __P ((_IO_FILE *, void *));
-
-extern struct _IO_jump_t _IO_file_jumps;
-extern struct _IO_jump_t _IO_wfile_jumps;
-extern struct _IO_jump_t _IO_old_file_jumps;
-extern struct _IO_jump_t _IO_streambuf_jumps;
-extern struct _IO_jump_t _IO_proc_jumps;
-extern struct _IO_jump_t _IO_old_proc_jumps;
-extern struct _IO_jump_t _IO_str_jumps;
-extern struct _IO_jump_t _IO_wstr_jumps;
-extern struct _IO_codecvt __libio_codecvt;
-extern int _IO_do_write __P ((_IO_FILE *, const char *, _IO_size_t));
-extern int _IO_new_do_write __P ((_IO_FILE *, const char *, _IO_size_t));
-extern int _IO_old_do_write __P ((_IO_FILE *, const char *, _IO_size_t));
-extern int _IO_wdo_write __P ((_IO_FILE *, const wchar_t *, _IO_size_t));
-extern int _IO_flush_all __P ((void));
-extern int _IO_cleanup __P ((void));
-extern void _IO_flush_all_linebuffered __P ((void));
-extern int _IO_new_fgetpos __P ((_IO_FILE *, _IO_fpos_t *));
-extern int _IO_old_fgetpos __P ((_IO_FILE *, _IO_fpos_t *));
-extern int _IO_new_fsetpos __P ((_IO_FILE *, const _IO_fpos_t *));
-extern int _IO_old_fsetpos __P ((_IO_FILE *, const _IO_fpos_t *));
-extern int _IO_new_fgetpos64 __P ((_IO_FILE *, _IO_fpos64_t *));
-extern int _IO_old_fgetpos64 __P ((_IO_FILE *, _IO_fpos64_t *));
-extern int _IO_new_fsetpos64 __P ((_IO_FILE *, const _IO_fpos64_t *));
-extern int _IO_old_fsetpos64 __P ((_IO_FILE *, const _IO_fpos64_t *));
-
-
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-# define _IO_do_flush(_f) \
- ((_f)->_mode <= 0 \
- ? _IO_do_write(_f, (_f)->_IO_write_base, \
- (_f)->_IO_write_ptr-(_f)->_IO_write_base) \
- : _IO_wdo_write(_f, (_f)->_wide_data->_IO_write_base, \
- ((_f)->_wide_data->_IO_write_ptr \
- - (_f)->_wide_data->_IO_write_base)))
-#else
-# define _IO_do_flush(_f) \
- _IO_do_write(_f, (_f)->_IO_write_base, \
- (_f)->_IO_write_ptr-(_f)->_IO_write_base)
-#endif
-#define _IO_old_do_flush(_f) \
- _IO_old_do_write(_f, (_f)->_IO_write_base, \
- (_f)->_IO_write_ptr-(_f)->_IO_write_base)
-#define _IO_in_put_mode(_fp) ((_fp)->_flags & _IO_CURRENTLY_PUTTING)
-#define _IO_mask_flags(fp, f, mask) \
- ((fp)->_flags = ((fp)->_flags & ~(mask)) | ((f) & (mask)))
-#define _IO_setg(fp, eb, g, eg) ((fp)->_IO_read_base = (eb),\
- (fp)->_IO_read_ptr = (g), (fp)->_IO_read_end = (eg))
-#define _IO_wsetg(fp, eb, g, eg) ((fp)->_wide_data->_IO_read_base = (eb),\
- (fp)->_wide_data->_IO_read_ptr = (g), \
- (fp)->_wide_data->_IO_read_end = (eg))
-#define _IO_setp(__fp, __p, __ep) \
- ((__fp)->_IO_write_base = (__fp)->_IO_write_ptr \
- = __p, (__fp)->_IO_write_end = (__ep))
-#define _IO_wsetp(__fp, __p, __ep) \
- ((__fp)->_wide_data->_IO_write_base \
- = (__fp)->_wide_data->_IO_write_ptr = __p, \
- (__fp)->_wide_data->_IO_write_end = (__ep))
-#define _IO_have_backup(fp) ((fp)->_IO_save_base != NULL)
-#define _IO_have_wbackup(fp) ((fp)->_wide_data->_IO_save_base != NULL)
-#define _IO_in_backup(fp) ((fp)->_flags & _IO_IN_BACKUP)
-#define _IO_have_markers(fp) ((fp)->_markers != NULL)
-#define _IO_blen(fp) ((fp)->_IO_buf_end - (fp)->_IO_buf_base)
-#define _IO_wblen(fp) ((fp)->_wide_data->_IO_buf_end \
- - (fp)->_wide_data->_IO_buf_base)
-
-/* Jumptable functions for files. */
-
-extern int _IO_file_doallocate __P ((_IO_FILE *));
-extern _IO_FILE* _IO_file_setbuf __P ((_IO_FILE *, char *, _IO_ssize_t));
-extern _IO_off64_t _IO_file_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
-extern _IO_size_t _IO_file_xsputn __P ((_IO_FILE *, const void *, _IO_size_t));
-extern _IO_size_t _IO_file_xsgetn __P ((_IO_FILE *, void *, _IO_size_t));
-extern int _IO_file_stat __P ((_IO_FILE *, void *));
-extern int _IO_file_close __P ((_IO_FILE *));
-extern int _IO_file_underflow __P ((_IO_FILE *));
-extern int _IO_file_overflow __P ((_IO_FILE *, int));
-#define _IO_file_is_open(__fp) ((__fp)->_fileno != -1)
-extern void _IO_file_init __P ((struct _IO_FILE_plus *));
-extern _IO_FILE* _IO_file_attach __P ((_IO_FILE *, int));
-extern _IO_FILE* _IO_file_open __P ((_IO_FILE *, const char *, int, int,
- int, int));
-extern _IO_FILE* _IO_file_fopen __P ((_IO_FILE *, const char *, const char *,
- int));
-extern _IO_ssize_t _IO_file_write __P ((_IO_FILE *, const void *,
- _IO_ssize_t));
-extern _IO_ssize_t _IO_file_read __P ((_IO_FILE *, void *, _IO_ssize_t));
-extern int _IO_file_sync __P ((_IO_FILE *));
-extern int _IO_file_close_it __P ((_IO_FILE *));
-extern _IO_off64_t _IO_file_seek __P ((_IO_FILE *, _IO_off64_t, int));
-extern void _IO_file_finish __P ((_IO_FILE *, int));
-
-extern _IO_FILE* _IO_new_file_attach __P ((_IO_FILE *, int));
-extern int _IO_new_file_close_it __P ((_IO_FILE *));
-extern void _IO_new_file_finish __P ((_IO_FILE *, int));
-extern _IO_FILE* _IO_new_file_fopen __P ((_IO_FILE *, const char *, const char *,
- int));
-extern void _IO_no_init __P ((_IO_FILE *, int, int, struct _IO_wide_data *,
- struct _IO_jump_t *));
-extern void _IO_new_file_init __P ((struct _IO_FILE_plus *));
-extern _IO_FILE* _IO_new_file_setbuf __P ((_IO_FILE *, char *, _IO_ssize_t));
-extern int _IO_new_file_sync __P ((_IO_FILE *));
-extern int _IO_new_file_underflow __P ((_IO_FILE *));
-extern int _IO_new_file_overflow __P ((_IO_FILE *, int));
-extern _IO_off64_t _IO_new_file_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
-extern _IO_ssize_t _IO_new_file_write __P ((_IO_FILE *, const void *,
- _IO_ssize_t));
-extern _IO_size_t _IO_new_file_xsputn __P ((_IO_FILE *, const void *, _IO_size_t));
-
-extern _IO_FILE* _IO_old_file_setbuf __P ((_IO_FILE *, char *, _IO_ssize_t));
-extern _IO_off64_t _IO_old_file_seekoff __P ((_IO_FILE *, _IO_off64_t, int,
- int));
-extern _IO_size_t _IO_old_file_xsputn __P ((_IO_FILE *, const void *,
- _IO_size_t));
-extern int _IO_old_file_underflow __P ((_IO_FILE *));
-extern int _IO_old_file_overflow __P ((_IO_FILE *, int));
-extern void _IO_old_file_init __P ((struct _IO_FILE_plus *));
-extern _IO_FILE* _IO_old_file_attach __P ((_IO_FILE *, int));
-extern _IO_FILE* _IO_old_file_fopen __P ((_IO_FILE *, const char *,
- const char *));
-extern _IO_ssize_t _IO_old_file_write __P ((_IO_FILE *, const void *,
- _IO_ssize_t));
-extern int _IO_old_file_sync __P ((_IO_FILE *));
-extern int _IO_old_file_close_it __P ((_IO_FILE *));
-extern void _IO_old_file_finish __P ((_IO_FILE *, int));
-
-extern int _IO_wfile_doallocate __P ((_IO_FILE *));
-extern _IO_size_t _IO_wfile_xsputn __P ((_IO_FILE *, const void *,
- _IO_size_t));
-extern _IO_FILE* _IO_wfile_setbuf __P ((_IO_FILE *, wchar_t *, _IO_ssize_t));
-extern wint_t _IO_wfile_sync __P ((_IO_FILE *));
-extern wint_t _IO_wfile_underflow __P ((_IO_FILE *));
-extern wint_t _IO_wfile_overflow __P ((_IO_FILE *, wint_t));
-extern _IO_off64_t _IO_wfile_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
-
-/* Jumptable functions for proc_files. */
-extern _IO_FILE* _IO_proc_open __P ((_IO_FILE *, const char *, const char *));
-extern _IO_FILE* _IO_new_proc_open __P ((_IO_FILE *, const char *, const char *));
-extern _IO_FILE* _IO_old_proc_open __P ((_IO_FILE *, const char *, const char *));
-extern int _IO_proc_close __P ((_IO_FILE *));
-extern int _IO_new_proc_close __P ((_IO_FILE *));
-extern int _IO_old_proc_close __P ((_IO_FILE *));
-
-/* Jumptable functions for strfiles. */
-extern int _IO_str_underflow __P ((_IO_FILE *));
-extern int _IO_str_overflow __P ((_IO_FILE *, int));
-extern int _IO_str_pbackfail __P ((_IO_FILE *, int));
-extern _IO_off64_t _IO_str_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
-extern void _IO_str_finish __P ((_IO_FILE *, int));
-
-/* Other strfile functions */
-struct _IO_strfile_;
-extern void _IO_str_init_static __P ((struct _IO_strfile_ *, char *, int, char *));
-extern void _IO_str_init_readonly __P ((struct _IO_strfile_ *, const char *, int));
-extern _IO_ssize_t _IO_str_count __P ((_IO_FILE *));
-
-/* And the wide character versions. */
-extern void _IO_wstr_init_static __P ((_IO_FILE *, wchar_t *, int, wchar_t *));
-extern void _IO_wstr_init_readonly __P ((_IO_FILE *, const char *, int));
-extern _IO_ssize_t _IO_wstr_count __P ((_IO_FILE *));
-extern _IO_wint_t _IO_wstr_overflow __P ((_IO_FILE *, _IO_wint_t));
-extern _IO_wint_t _IO_wstr_underflow __P ((_IO_FILE *));
-extern _IO_off64_t _IO_wstr_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int));
-extern _IO_wint_t _IO_wstr_pbackfail __P ((_IO_FILE *, _IO_wint_t));
-extern void _IO_wstr_finish __P ((_IO_FILE *, int));
-
-extern int _IO_vasprintf __P ((char **result_ptr, __const char *format,
- _IO_va_list args));
-extern int _IO_vdprintf __P ((int d, __const char *format, _IO_va_list arg));
-extern int _IO_vsnprintf __P ((char *string, _IO_size_t maxlen,
- __const char *format, _IO_va_list args));
-
-
-extern _IO_size_t _IO_getline __P ((_IO_FILE *,char *, _IO_size_t, int, int));
-extern _IO_size_t _IO_getline_info __P ((_IO_FILE *,char *, _IO_size_t,
- int, int, int *));
-extern _IO_ssize_t _IO_getdelim __P ((char **, _IO_size_t *, int, _IO_FILE *));
-extern _IO_size_t _IO_getwline __P ((_IO_FILE *,wchar_t *, _IO_size_t, wint_t,
- int));
-extern _IO_size_t _IO_getwline_info __P ((_IO_FILE *,wchar_t *, _IO_size_t,
- wint_t, int, wint_t *));
-extern double _IO_strtod __P ((const char *, char **));
-extern char *_IO_dtoa __P ((double __d, int __mode, int __ndigits,
- int *__decpt, int *__sign, char **__rve));
-extern int _IO_outfloat __P ((double __value, _IO_FILE *__sb, int __type,
- int __width, int __precision, int __flags,
- int __sign_mode, int __fill));
-
-extern struct _IO_FILE_plus *_IO_list_all;
-extern void (*_IO_cleanup_registration_needed) __PMT ((void));
-
-#ifndef EOF
-# define EOF (-1)
-#endif
-#ifndef NULL
-# if defined __GNUG__ && \
- (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8))
-# define NULL (__null)
-# else
-# if !defined(__cplusplus)
-# define NULL ((void*)0)
-# else
-# define NULL (0)
-# endif
-# endif
-#endif
-
-#if _G_HAVE_MMAP
-
-#ifdef __cplusplus
-}
-#endif
-
-# include <unistd.h>
-# include <fcntl.h>
-# include <sys/mman.h>
-# include <sys/param.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-# if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
-# define MAP_ANONYMOUS MAP_ANON
-# endif
-
-# if !defined(MAP_ANONYMOUS) || !defined(EXEC_PAGESIZE)
-# undef _G_HAVE_MMAP
-# define _G_HAVE_MMAP 0
-# endif
-
-#endif /* _G_HAVE_MMAP */
-
-#if _G_HAVE_MMAP
-
-# ifdef _LIBC
-/* When using this code in the GNU libc we must not pollute the name space. */
-# define mmap __mmap
-# define munmap __munmap
-# define ftruncate __ftruncate
-# endif
-
-# define ROUND_TO_PAGE(_S) \
- (((_S) + EXEC_PAGESIZE - 1) & ~(EXEC_PAGESIZE - 1))
-
-# define FREE_BUF(_B, _S) \
- munmap ((_B), ROUND_TO_PAGE (_S))
-# define ALLOC_BUF(_B, _S, _R) \
- do { \
- (_B) = (char *) mmap (0, ROUND_TO_PAGE (_S), \
- PROT_READ | PROT_WRITE, \
- MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); \
- if ((_B) == (char *) MAP_FAILED) \
- return (_R); \
- } while (0)
-# define ALLOC_WBUF(_B, _S, _R) \
- do { \
- (_B) = (wchar_t *) mmap (0, ROUND_TO_PAGE (_S), \
- PROT_READ | PROT_WRITE, \
- MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); \
- if ((_B) == (wchar_t *) MAP_FAILED) \
- return (_R); \
- } while (0)
-
-#else /* _G_HAVE_MMAP */
-
-# define FREE_BUF(_B, _S) \
- free(_B)
-# define ALLOC_BUF(_B, _S, _R) \
- do { \
- (_B) = (char*)malloc(_S); \
- if ((_B) == NULL) \
- return (_R); \
- } while (0)
-# define ALLOC_WBUF(_B, _S, _R) \
- do { \
- (_B) = (wchar_t *)malloc(_S); \
- if ((_B) == NULL) \
- return (_R); \
- } while (0)
-
-#endif /* _G_HAVE_MMAP */
-
-#ifndef OS_FSTAT
-# define OS_FSTAT fstat
-#endif
-struct stat;
-extern _IO_ssize_t _IO_read __P ((int, void *, _IO_size_t));
-extern _IO_ssize_t _IO_write __P ((int, const void *, _IO_size_t));
-extern _IO_off64_t _IO_lseek __P ((int, _IO_off64_t, int));
-extern int _IO_close __P ((int));
-extern int _IO_fstat __P ((int, struct stat *));
-extern int _IO_vscanf __P ((const char *, _IO_va_list));
-
-/* _IO_pos_BAD is an _IO_off64_t value indicating error, unknown, or EOF. */
-#ifndef _IO_pos_BAD
-# define _IO_pos_BAD ((_IO_off64_t) -1)
-#endif
-/* _IO_pos_adjust adjust an _IO_off64_t by some number of bytes. */
-#ifndef _IO_pos_adjust
-# define _IO_pos_adjust(pos, delta) ((pos) += (delta))
-#endif
-/* _IO_pos_0 is an _IO_off64_t value indicating beginning of file. */
-#ifndef _IO_pos_0
-# define _IO_pos_0 ((_IO_off64_t) 0)
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#ifdef _IO_MTSAFE_IO
-/* check following! */
-# ifdef _IO_USE_OLD_IO_FILE
-# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \
- { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (_IO_FILE *) CHAIN, FD, \
- 0, _IO_pos_BAD, 0, 0, { 0 }, &_IO_stdfile_##FD##_lock }
-# else
-# if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \
- { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (_IO_FILE *) CHAIN, FD, \
- 0, _IO_pos_BAD, 0, 0, { 0 }, &_IO_stdfile_##FD##_lock, _IO_pos_BAD,\
- NULL, WDP, 0 }
-# else
-# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \
- { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (_IO_FILE *) CHAIN, FD, \
- 0, _IO_pos_BAD, 0, 0, { 0 }, &_IO_stdfile_##FD##_lock, _IO_pos_BAD,\
- 0 }
-# endif
-# endif
-#else
-# ifdef _IO_USE_OLD_IO_FILE
-# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \
- { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (_IO_FILE *) CHAIN, FD, \
- 0, _IO_pos_BAD }
-# else
-# if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \
- { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (_IO_FILE *) CHAIN, FD, \
- 0, _IO_pos_BAD, 0, 0, { 0 }, 0, _IO_pos_BAD, \
- NULL, WDP, 0 }
-# else
-# define FILEBUF_LITERAL(CHAIN, FLAGS, FD, WDP) \
- { _IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS, \
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (_IO_FILE *) CHAIN, FD, \
- 0, _IO_pos_BAD, 0, 0, { 0 }, 0, _IO_pos_BAD, \
- 0 }
-# endif
-# endif
-#endif
-
-/* VTABLE_LABEL defines NAME as of the CLASS class.
- CNLENGTH is strlen(#CLASS). */
-#ifdef __GNUC__
-# if _G_VTABLE_LABEL_HAS_LENGTH
-# define VTABLE_LABEL(NAME, CLASS, CNLENGTH) \
- extern char NAME[] asm (_G_VTABLE_LABEL_PREFIX #CNLENGTH #CLASS);
-# else
-# define VTABLE_LABEL(NAME, CLASS, CNLENGTH) \
- extern char NAME[] asm (_G_VTABLE_LABEL_PREFIX #CLASS);
-# endif
-#endif /* __GNUC__ */
-
-#if !defined(builtinbuf_vtable) && defined(__cplusplus)
-# ifdef __GNUC__
-VTABLE_LABEL(builtinbuf_vtable, builtinbuf, 10)
-# else
-# if _G_VTABLE_LABEL_HAS_LENGTH
-# define builtinbuf_vtable _G_VTABLE_LABEL_PREFIX_ID##10builtinbuf
-# else
-# define builtinbuf_vtable _G_VTABLE_LABEL_PREFIX_ID##builtinbuf
-# endif
-# endif
-#endif /* !defined(builtinbuf_vtable) && defined(__cplusplus) */
-
-#if defined(__STDC__) || defined(__cplusplus)
-# define _IO_va_start(args, last) va_start(args, last)
-#else
-# define _IO_va_start(args, last) va_start(args)
-#endif
-
-extern struct _IO_fake_stdiobuf _IO_stdin_buf, _IO_stdout_buf, _IO_stderr_buf;
-
-#if 1
-# define COERCE_FILE(FILE) /* Nothing */
-#else
-/* This is part of the kludge for binary compatibility with old stdio. */
-# define COERCE_FILE(FILE) \
- (((FILE)->_IO_file_flags & _IO_MAGIC_MASK) == _OLD_MAGIC_MASK \
- && (FILE) = *(FILE**)&((int*)fp)[1])
-#endif
-
-#ifdef EINVAL
-# define MAYBE_SET_EINVAL __set_errno (EINVAL)
-#else
-# define MAYBE_SET_EINVAL /* nothing */
-#endif
-
-#ifdef IO_DEBUG
-# define CHECK_FILE(FILE, RET) \
- if ((FILE) == NULL) { MAYBE_SET_EINVAL; return RET; } \
- else { COERCE_FILE(FILE); \
- if (((FILE)->_IO_file_flags & _IO_MAGIC_MASK) != _IO_MAGIC) \
- { MAYBE_SET_EINVAL; return RET; }}
-#else
-# define CHECK_FILE(FILE, RET) COERCE_FILE (FILE)
-#endif
diff --git a/contrib/libstdc++/libio/stdfiles.c b/contrib/libstdc++/libio/stdfiles.c
deleted file mode 100644
index b81fef8..0000000
--- a/contrib/libstdc++/libio/stdfiles.c
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Copyright (C) 1993, 1994, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
- This file is part of the GNU IO 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 2, 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 COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, if you link this library with files
- compiled with a GNU compiler to produce an executable, this does
- not cause the resulting executable to be covered by the GNU General
- Public License. This exception does not however invalidate any
- other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-
-/* This file provides definitions of _IO_stdin, _IO_stdout, and _IO_stderr
- for C code. Compare stdstreams.cc.
- (The difference is that here the vtable field is set to 0,
- so the objects defined are not valid C++ objects. On the other
- hand, we don't need a C++ compiler to build this file.) */
-
-#include "libioP.h"
-
-#ifdef _IO_MTSAFE_IO
-# if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-# define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
- static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \
- static struct _IO_wide_data _IO_wide_data_##FD \
- = { ._wide_vtable = &_IO_wfile_jumps }; \
- struct _IO_FILE_plus NAME \
- = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \
- &_IO_file_jumps};
-# else
-# define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
- static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \
- struct _IO_FILE_plus NAME \
- = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), \
- &_IO_file_jumps};
-# endif
-#else
-# if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-# define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
- static struct _IO_wide_data _IO_wide_data_##FD \
- = { ._wide_vtable = &_IO_wfile_jumps }; \
- struct _IO_FILE_plus NAME \
- = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, &_IO_wide_data_##FD), \
- &_IO_file_jumps};
-# else
-# define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
- struct _IO_FILE_plus NAME \
- = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), \
- &_IO_file_jumps};
-# endif
-#endif
-
-DEF_STDFILE(_IO_2_1_stdin_, 0, 0, _IO_NO_WRITES);
-DEF_STDFILE(_IO_2_1_stdout_, 1, &_IO_2_1_stdin_, _IO_NO_READS);
-DEF_STDFILE(_IO_2_1_stderr_, 2, &_IO_2_1_stdout_, _IO_NO_READS+_IO_UNBUFFERED);
-
-struct _IO_FILE_plus *_IO_list_all = &_IO_2_1_stderr_;
diff --git a/contrib/libstdc++/libio/stdio.c b/contrib/libstdc++/libio/stdio.c
deleted file mode 100644
index 3b897ce..0000000
--- a/contrib/libstdc++/libio/stdio.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (C) 1993, 1994, 1996, 1997, 2000 Free Software Foundation, Inc.
- This file is part of the GNU IO 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 2, 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 COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, if you link this library with files
- compiled with a GNU compiler to produce an executable, this does
- not cause the resulting executable to be covered by the GNU General
- Public License. This exception does not however invalidate any
- other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-#include "libioP.h"
-#include "stdio.h"
-
-#undef stdin
-#undef stdout
-#undef stderr
-_IO_FILE *stdin = (FILE *) &_IO_2_1_stdin_;
-_IO_FILE *stdout = (FILE *) &_IO_2_1_stdout_;
-_IO_FILE *stderr = (FILE *) &_IO_2_1_stderr_;
-
-#undef _IO_stdin
-#undef _IO_stdout
-#undef _IO_stderr
-#ifdef _LIBC
-strong_alias (stdin, _IO_stdin);
-strong_alias (stdout, _IO_stdout);
-strong_alias (stderr, _IO_stderr);
-#endif
diff --git a/contrib/libstdc++/libio/wfiledoalloc.c b/contrib/libstdc++/libio/wfiledoalloc.c
deleted file mode 100644
index 9c05162..0000000
--- a/contrib/libstdc++/libio/wfiledoalloc.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Copyright (C) 1993, 1997, 1999, 2000 Free Software Foundation, Inc.
- This file is part of the GNU IO 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 2, 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 COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, if you link this library with files
- compiled with a GNU compiler to produce an executable, this does
- not cause the resulting executable to be covered by the GNU General
- Public License. This exception does not however invalidate any
- other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/*
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/* Modified for GNU iostream by Per Bothner 1991, 1992. */
-
-#ifndef _POSIX_SOURCE
-# define _POSIX_SOURCE
-#endif
-#include "libioP.h"
-#ifdef _GLIBCPP_USE_WCHAR_T
-#include <sys/types.h>
-#include <sys/stat.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#include <unistd.h>
-#endif
-
-#ifdef _LIBC
-# undef isatty
-# define isatty(Fd) __isatty (Fd)
-#endif
-
-/*
- * Allocate a file buffer, or switch to unbuffered I/O.
- * Per the ANSI C standard, ALL tty devices default to line buffered.
- *
- * As a side effect, we set __SOPT or __SNPT (en/dis-able fseek
- * optimisation) right after the _fstat() that finds the buffer size.
- */
-
-int
-_IO_wfile_doallocate (fp)
- _IO_FILE *fp;
-{
- _IO_size_t size;
- int couldbetty;
- wchar_t *p;
- struct _G_stat64 st;
-
- /* Allocate room for the external buffer. */
- if (fp->_IO_buf_base == NULL)
- _IO_file_doallocate (fp);
-
- if (fp->_fileno < 0 || _IO_SYSSTAT (fp, &st) < 0)
- {
- couldbetty = 0;
- size = _IO_BUFSIZ;
-#if 0
- /* do not try to optimise fseek() */
- fp->_flags |= __SNPT;
-#endif
- }
- else
- {
- couldbetty = S_ISCHR (st.st_mode);
-#if _IO_HAVE_ST_BLKSIZE
- size = st.st_blksize <= 0 ? _IO_BUFSIZ : st.st_blksize;
-#else
- size = _IO_BUFSIZ;
-#endif
- }
- ALLOC_WBUF (p, size * sizeof (wchar_t), EOF);
- _IO_wsetb (fp, p, p + size, 1);
- if (couldbetty && isatty (fp->_fileno))
- fp->_flags |= _IO_LINE_BUF;
- return 1;
-}
-
-#endif /* _GLIBCPP_USE_WCHAR_T */
diff --git a/contrib/libstdc++/libio/wfileops.c b/contrib/libstdc++/libio/wfileops.c
deleted file mode 100644
index 1dd524a..0000000
--- a/contrib/libstdc++/libio/wfileops.c
+++ /dev/null
@@ -1,754 +0,0 @@
-/* Copyright (C) 1993, 95, 97, 98, 99, 2000 Free Software Foundation, Inc.
- This file is part of the GNU IO Library.
- Written by Ulrich Drepper <drepper@cygnus.com>.
- Based on the single byte version by Per Bothner <bothner@cygnus.com>.
-
- 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 2, 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 COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, if you link this library with files
- compiled with a GNU compiler to produce an executable, this does
- not cause the resulting executable to be covered by the GNU General
- Public License. This exception does not however invalidate any
- other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-#include <assert.h>
-#include <libioP.h>
-#ifdef _GLIBCPP_USE_WCHAR_T
-#include <wchar.h>
-#ifdef HAVE_GCONV_H
-# include <gconv.h>
-#endif
-#include <stdlib.h>
-#include <string.h>
-
-
-#ifndef _LIBC
-# define _IO_new_do_write _IO_do_write
-# define _IO_new_file_attach _IO_file_attach
-# define _IO_new_file_close_it _IO_file_close_it
-# define _IO_new_file_finish _IO_file_finish
-# define _IO_new_file_fopen _IO_file_fopen
-# define _IO_new_file_init _IO_file_init
-# define _IO_new_file_setbuf _IO_file_setbuf
-# define _IO_new_file_sync _IO_file_sync
-# define _IO_new_file_overflow _IO_file_overflow
-# define _IO_new_file_seekoff _IO_file_seekoff
-# define _IO_new_file_underflow _IO_file_underflow
-# define _IO_new_file_write _IO_file_write
-# define _IO_new_file_xsputn _IO_file_xsputn
-#endif
-
-
-_IO_FILE *
-_IO_wfile_setbuf (fp, p, len)
- _IO_FILE *fp;
- wchar_t *p;
- _IO_ssize_t len;
-{
- if (_IO_wdefault_setbuf (fp, p, len) == NULL)
- return NULL;
-
- fp->_wide_data->_IO_write_base = fp->_wide_data->_IO_write_ptr =
- fp->_wide_data->_IO_write_end = fp->_wide_data->_IO_buf_base;
- _IO_wsetg (fp, fp->_wide_data->_IO_buf_base, fp->_wide_data->_IO_buf_base,
- fp->_wide_data->_IO_buf_base);
-
- return fp;
-}
-
-
-/* Convert TO_DO wide character from DATA to FP.
- Then mark FP as having empty buffers. */
-int
-_IO_wdo_write (fp, data, to_do)
- _IO_FILE *fp;
- const wchar_t *data;
- _IO_size_t to_do;
-{
- struct _IO_codecvt *cc = fp->_codecvt;
-
- if (to_do > 0)
- {
- if (fp->_IO_write_end == fp->_IO_write_ptr
- && fp->_IO_write_end != fp->_IO_write_base)
- {
- if (_IO_new_do_write (fp, fp->_IO_write_base,
- fp->_IO_write_ptr - fp->_IO_write_base) == EOF)
- return EOF;
- }
-
- do
- {
- enum __codecvt_result result;
- const wchar_t *new_data;
-
- /* Now convert from the internal format into the external buffer. */
- result = (*cc->__codecvt_do_out) (cc, &fp->_wide_data->_IO_state,
- data, data + to_do, &new_data,
- fp->_IO_write_ptr,
- fp->_IO_buf_end,
- &fp->_IO_write_ptr);
-
- /* Write out what we produced so far. */
- if (_IO_new_do_write (fp, fp->_IO_write_base,
- fp->_IO_write_ptr - fp->_IO_write_base) == EOF)
- /* Something went wrong. */
- return EOF;
-
- to_do -= new_data - data;
-
- /* Next see whether we had problems during the conversion. If yes,
- we cannot go on. */
- if (result != __codecvt_ok
- && (result != __codecvt_partial || new_data - data == 0))
- break;
-
- data = new_data;
- }
- while (to_do > 0);
- }
-
- _IO_wsetg (fp, fp->_wide_data->_IO_buf_base, fp->_wide_data->_IO_buf_base,
- fp->_wide_data->_IO_buf_base);
- fp->_wide_data->_IO_write_base = fp->_wide_data->_IO_write_ptr
- = fp->_wide_data->_IO_buf_base;
- fp->_wide_data->_IO_write_end = ((fp->_flags & (_IO_LINE_BUF+_IO_UNBUFFERED))
- ? fp->_wide_data->_IO_buf_base
- : fp->_wide_data->_IO_buf_end);
-
- return to_do == 0 ? 0 : WEOF;
-}
-
-
-wint_t
-_IO_wfile_underflow (fp)
- _IO_FILE *fp;
-{
- struct _IO_codecvt *cd;
- enum __codecvt_result status;
- _IO_ssize_t count;
- int tries;
- const char *read_ptr_copy;
-
- if (fp->_flags & _IO_NO_READS)
- {
- fp->_flags |= _IO_ERR_SEEN;
- __set_errno (EBADF);
- return WEOF;
- }
- if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end)
- return *fp->_wide_data->_IO_read_ptr;
-
- cd = fp->_codecvt;
-
- /* Maybe there is something left in the external buffer. */
- if (fp->_IO_read_ptr < fp->_IO_read_end)
- {
- /* Convert it. */
- size_t avail_bytes = fp->_IO_read_end - fp->_IO_read_ptr;
-
- if (avail_bytes >= (*cd->__codecvt_do_max_length) (cd))
- {
- /* There is more in the external. */
- const char *read_stop = (const char *) fp->_IO_read_ptr;
-
- fp->_wide_data->_IO_last_state = fp->_wide_data->_IO_state;
- status = (*cd->__codecvt_do_in) (cd, &fp->_wide_data->_IO_state,
- fp->_IO_read_ptr, fp->_IO_read_end,
- &read_stop,
- fp->_wide_data->_IO_read_end,
- fp->_wide_data->_IO_buf_end,
- &fp->_wide_data->_IO_read_end);
-
- fp->_IO_read_ptr = (char *) read_stop;
-
- /* If we managed to generate some text return the next character. */
- if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end)
- return *fp->_wide_data->_IO_read_ptr;
-
- if (status == __codecvt_error)
- {
- __set_errno (EILSEQ);
- fp->_flags |= _IO_ERR_SEEN;
- return WEOF;
- }
- }
-
- /* Move the remaining content of the read buffer to the beginning. */
- memmove (fp->_IO_buf_base, fp->_IO_read_ptr,
- fp->_IO_read_end - fp->_IO_read_ptr);
- fp->_IO_read_end = (fp->_IO_buf_base
- + (fp->_IO_read_end - fp->_IO_read_ptr));
- fp->_IO_read_base = fp->_IO_read_ptr = fp->_IO_buf_base;
- }
- else
- fp->_IO_read_base = fp->_IO_read_ptr = fp->_IO_read_end =
- fp->_IO_buf_base;
-
- if (fp->_IO_buf_base == NULL)
- {
- /* Maybe we already have a push back pointer. */
- if (fp->_IO_save_base != NULL)
- {
- free (fp->_IO_save_base);
- fp->_flags &= ~_IO_IN_BACKUP;
- }
- _IO_doallocbuf (fp);
-
- fp->_IO_read_base = fp->_IO_read_ptr = fp->_IO_read_end =
- fp->_IO_buf_base;
- }
-
- fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_write_end =
- fp->_IO_buf_base;
-
- if (fp->_wide_data->_IO_buf_base == NULL)
- {
- /* Maybe we already have a push back pointer. */
- if (fp->_wide_data->_IO_save_base != NULL)
- {
- free (fp->_wide_data->_IO_save_base);
- fp->_flags &= ~_IO_IN_BACKUP;
- }
- _IO_wdoallocbuf (fp);
- }
-
- /* Flush all line buffered files before reading. */
- /* FIXME This can/should be moved to genops ?? */
- if (fp->_flags & (_IO_LINE_BUF|_IO_UNBUFFERED))
- _IO_flush_all_linebuffered ();
-
- _IO_switch_to_get_mode (fp);
-
- fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_read_ptr =
- fp->_wide_data->_IO_buf_base;
- fp->_wide_data->_IO_read_end = fp->_wide_data->_IO_buf_base;
- fp->_wide_data->_IO_write_base = fp->_wide_data->_IO_write_ptr =
- fp->_wide_data->_IO_write_end = fp->_wide_data->_IO_buf_base;
-
- tries = 0;
- again:
- count = _IO_SYSREAD (fp, fp->_IO_read_end,
- fp->_IO_buf_end - fp->_IO_read_end);
- if (count <= 0)
- {
- if (count == 0 && tries == 0)
- fp->_flags |= _IO_EOF_SEEN;
- else
- fp->_flags |= _IO_ERR_SEEN, count = 0;
- }
- fp->_IO_read_end += count;
- if (count == 0)
- {
- if (tries != 0)
- /* There are some bytes in the external buffer but they don't
- convert to anything. */
- __set_errno (EILSEQ);
- return WEOF;
- }
- if (fp->_offset != _IO_pos_BAD)
- _IO_pos_adjust (fp->_offset, count);
-
- /* Now convert the read input. */
- fp->_wide_data->_IO_last_state = fp->_wide_data->_IO_state;
- fp->_IO_read_base = fp->_IO_read_ptr;
- status = (*cd->__codecvt_do_in) (cd, &fp->_wide_data->_IO_state,
- fp->_IO_read_ptr, fp->_IO_read_end,
- &read_ptr_copy,
- fp->_wide_data->_IO_read_end,
- fp->_wide_data->_IO_buf_end,
- &fp->_wide_data->_IO_read_end);
-
- fp->_IO_read_ptr = (char *) read_ptr_copy;
- if (fp->_wide_data->_IO_read_end == fp->_wide_data->_IO_buf_base)
- {
- if (status == __codecvt_error || fp->_IO_read_end == fp->_IO_buf_end)
- {
- __set_errno (EILSEQ);
- fp->_flags |= _IO_ERR_SEEN;
- return WEOF;
- }
-
- /* The read bytes make no complete character. Try reading again. */
- assert (status == __codecvt_partial);
- ++tries;
- goto again;
- }
-
- return *fp->_wide_data->_IO_read_ptr;
-}
-
-
-wint_t
-_IO_wfile_overflow (f, wch)
- _IO_FILE *f;
- wint_t wch;
-{
- if (f->_flags & _IO_NO_WRITES) /* SET ERROR */
- {
- f->_flags |= _IO_ERR_SEEN;
- __set_errno (EBADF);
- return WEOF;
- }
- /* If currently reading or no buffer allocated. */
- if ((f->_flags & _IO_CURRENTLY_PUTTING) == 0)
- {
- /* Allocate a buffer if needed. */
- if (f->_wide_data->_IO_write_base == 0)
- {
- _IO_wdoallocbuf (f);
- _IO_wsetg (f, f->_wide_data->_IO_buf_base,
- f->_wide_data->_IO_buf_base, f->_wide_data->_IO_buf_base);
-
- if (f->_IO_write_base == NULL)
- {
- _IO_doallocbuf (f);
- _IO_setg (f, f->_IO_buf_base, f->_IO_buf_base, f->_IO_buf_base);
- }
- }
- else
- {
- /* Otherwise must be currently reading. If _IO_read_ptr
- (and hence also _IO_read_end) is at the buffer end,
- logically slide the buffer forwards one block (by setting
- the read pointers to all point at the beginning of the
- block). This makes room for subsequent output.
- Otherwise, set the read pointers to _IO_read_end (leaving
- that alone, so it can continue to correspond to the
- external position). */
- if (f->_wide_data->_IO_read_ptr == f->_wide_data->_IO_buf_end)
- {
- f->_IO_read_end = f->_IO_read_ptr = f->_IO_buf_base;
- f->_wide_data->_IO_read_end = f->_wide_data->_IO_read_ptr =
- f->_wide_data->_IO_buf_base;
- }
- }
- f->_wide_data->_IO_write_ptr = f->_wide_data->_IO_read_ptr;
- f->_wide_data->_IO_write_base = f->_wide_data->_IO_write_ptr;
- f->_wide_data->_IO_write_end = f->_wide_data->_IO_buf_end;
- f->_wide_data->_IO_read_base = f->_wide_data->_IO_read_ptr =
- f->_wide_data->_IO_read_end;
-
- f->_IO_write_ptr = f->_IO_read_ptr;
- f->_IO_write_base = f->_IO_write_ptr;
- f->_IO_write_end = f->_IO_buf_end;
- f->_IO_read_base = f->_IO_read_ptr = f->_IO_read_end;
-
- f->_flags |= _IO_CURRENTLY_PUTTING;
- if (f->_flags & (_IO_LINE_BUF+_IO_UNBUFFERED))
- f->_wide_data->_IO_write_end = f->_wide_data->_IO_write_ptr;
- }
- if (wch == WEOF)
- return _IO_do_flush (f);
- if (f->_wide_data->_IO_write_ptr == f->_wide_data->_IO_buf_end)
- /* Buffer is really full */
- if (_IO_do_flush (f) == WEOF)
- return WEOF;
- *f->_wide_data->_IO_write_ptr++ = wch;
- if ((f->_flags & _IO_UNBUFFERED)
- || ((f->_flags & _IO_LINE_BUF) && wch == L'\n'))
- if (_IO_do_flush (f) == WEOF)
- return WEOF;
- return wch;
-}
-
-wint_t
-_IO_wfile_sync (fp)
- _IO_FILE *fp;
-{
- _IO_ssize_t delta;
- wint_t retval = 0;
-
- /* char* ptr = cur_ptr(); */
- if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_write_base)
- if (_IO_do_flush (fp))
- return WEOF;
- delta = fp->_wide_data->_IO_read_ptr - fp->_wide_data->_IO_read_end;
- if (delta != 0)
- {
- /* We have to find out how many bytes we have to go back in the
- external buffer. */
- struct _IO_codecvt *cv = fp->_codecvt;
- _IO_off64_t new_pos;
-
- int clen = (*cv->__codecvt_do_encoding) (cv);
-
- if (clen > 0)
- /* It is easy, a fixed number of input bytes are used for each
- wide character. */
- delta *= clen;
- else
- {
- /* We have to find out the hard way how much to back off.
- To do this we determine how much input we needed to
- generate the wide characters up to the current reading
- position. */
- int nread;
-
- fp->_wide_data->_IO_state = fp->_wide_data->_IO_last_state;
- nread = (*cv->__codecvt_do_length) (cv, &fp->_wide_data->_IO_state,
- fp->_IO_read_base,
- fp->_IO_read_end, delta);
- fp->_IO_read_ptr = fp->_IO_read_base + nread;
- delta = -(fp->_IO_read_end - fp->_IO_read_base - nread);
- }
-
- new_pos = _IO_SYSSEEK (fp, delta, 1);
- if (new_pos != (_IO_off64_t) EOF)
- {
- fp->_wide_data->_IO_read_end = fp->_wide_data->_IO_read_ptr;
- fp->_IO_read_end = fp->_IO_read_ptr;
- }
-#ifdef ESPIPE
- else if (errno == ESPIPE)
- ; /* Ignore error from unseekable devices. */
-#endif
- else
- retval = WEOF;
- }
- if (retval != WEOF)
- fp->_offset = _IO_pos_BAD;
- /* FIXME: Cleanup - can this be shared? */
- /* setg(base(), ptr, ptr); */
- return retval;
-}
-
-_IO_off64_t
-_IO_wfile_seekoff (fp, offset, dir, mode)
- _IO_FILE *fp;
- _IO_off64_t offset;
- int dir;
- int mode;
-{
- _IO_off64_t result;
- _IO_off64_t delta, new_offset;
- long int count;
- /* POSIX.1 8.2.3.7 says that after a call the fflush() the file
- offset of the underlying file must be exact. */
- int must_be_exact = ((fp->_wide_data->_IO_read_base
- == fp->_wide_data->_IO_read_end)
- && (fp->_wide_data->_IO_write_base
- == fp->_wide_data->_IO_write_ptr));
-
- if (mode == 0)
- dir = _IO_seek_cur, offset = 0; /* Don't move any pointers. */
-
- /* Flush unwritten characters.
- (This may do an unneeded write if we seek within the buffer.
- But to be able to switch to reading, we would need to set
- egptr to ptr. That can't be done in the current design,
- which assumes file_ptr() is eGptr. Anyway, since we probably
- end up flushing when we close(), it doesn't make much difference.)
- FIXME: simulate mem-papped files. */
-
- if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_write_base
- || _IO_in_put_mode (fp))
- if (_IO_switch_to_wget_mode (fp))
- return WEOF;
-
- if (fp->_wide_data->_IO_buf_base == NULL)
- {
- /* It could be that we already have a pushback buffer. */
- if (fp->_wide_data->_IO_read_base != NULL)
- {
- free (fp->_wide_data->_IO_read_base);
- fp->_flags &= ~_IO_IN_BACKUP;
- }
- _IO_doallocbuf (fp);
- _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
- _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base);
- _IO_wsetp (fp, fp->_wide_data->_IO_buf_base,
- fp->_wide_data->_IO_buf_base);
- _IO_wsetg (fp, fp->_wide_data->_IO_buf_base,
- fp->_wide_data->_IO_buf_base, fp->_wide_data->_IO_buf_base);
- }
-
- switch (dir)
- {
- struct _IO_codecvt *cv;
- int clen;
-
- case _IO_seek_cur:
- /* Adjust for read-ahead (bytes is buffer). To do this we must
- find out which position in the external buffer corresponds to
- the current position in the internal buffer. */
- cv = fp->_codecvt;
- clen = (*cv->__codecvt_do_encoding) (cv);
-
- if (clen > 0)
- offset -= (fp->_wide_data->_IO_read_end
- - fp->_wide_data->_IO_read_ptr) * clen;
- else
- {
- int nread;
-
- delta = fp->_wide_data->_IO_read_ptr - fp->_wide_data->_IO_read_end;
- fp->_wide_data->_IO_state = fp->_wide_data->_IO_last_state;
- nread = (*cv->__codecvt_do_length) (cv, &fp->_wide_data->_IO_state,
- fp->_IO_read_base,
- fp->_IO_read_end, delta);
- fp->_IO_read_ptr = fp->_IO_read_base + nread;
- offset -= fp->_IO_read_end - fp->_IO_read_base - nread;
- }
-
- if (fp->_offset == _IO_pos_BAD)
- goto dumb;
- /* Make offset absolute, assuming current pointer is file_ptr(). */
- offset += fp->_offset;
-
- dir = _IO_seek_set;
- break;
- case _IO_seek_set:
- break;
- case _IO_seek_end:
- {
- struct _G_stat64 st;
- if (_IO_SYSSTAT (fp, &st) == 0 && S_ISREG (st.st_mode))
- {
- offset += st.st_size;
- dir = _IO_seek_set;
- }
- else
- goto dumb;
- }
- }
- /* At this point, dir==_IO_seek_set. */
-
- /* If we are only interested in the current position we've found it now. */
- if (mode == 0)
- return offset;
-
- /* If destination is within current buffer, optimize: */
- if (fp->_offset != _IO_pos_BAD && fp->_IO_read_base != NULL
- && !_IO_in_backup (fp))
- {
- /* Offset relative to start of main get area. */
- _IO_off64_t rel_offset = (offset - fp->_offset
- + (fp->_IO_read_end - fp->_IO_read_base));
- if (rel_offset >= 0)
- {
-#if 0
- if (_IO_in_backup (fp))
- _IO_switch_to_main_get_area (fp);
-#endif
- if (rel_offset <= fp->_IO_read_end - fp->_IO_read_base)
- {
- fp->_IO_read_ptr = fp->_IO_read_base + rel_offset;
- _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
-
- /* Now set the pointer for the internal buffer. This
- might be an iterative process. Though the read
- pointer is somewhere in the current external buffer
- this does not mean we can convert this whole buffer
- at once fitting in the internal buffer. */
- do
- {
-
- }
- while (0);
-
- _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- goto resync;
- }
-#ifdef TODO
- /* If we have streammarkers, seek forward by reading ahead. */
- if (_IO_have_markers (fp))
- {
- int to_skip = rel_offset
- - (fp->_IO_read_ptr - fp->_IO_read_base);
- if (ignore (to_skip) != to_skip)
- goto dumb;
- _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- goto resync;
- }
-#endif
- }
-#ifdef TODO
- if (rel_offset < 0 && rel_offset >= Bbase () - Bptr ())
- {
- if (!_IO_in_backup (fp))
- _IO_switch_to_backup_area (fp);
- gbump (fp->_IO_read_end + rel_offset - fp->_IO_read_ptr);
- _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- goto resync;
- }
-#endif
- }
-
-#ifdef TODO
- _IO_unsave_markers (fp);
-#endif
-
- if (fp->_flags & _IO_NO_READS)
- goto dumb;
-
- /* Try to seek to a block boundary, to improve kernel page management. */
- new_offset = offset & ~(fp->_IO_buf_end - fp->_IO_buf_base - 1);
- delta = offset - new_offset;
- if (delta > fp->_IO_buf_end - fp->_IO_buf_base)
- {
- new_offset = offset;
- delta = 0;
- }
- result = _IO_SYSSEEK (fp, new_offset, 0);
- if (result < 0)
- return EOF;
- if (delta == 0)
- count = 0;
- else
- {
- count = _IO_SYSREAD (fp, fp->_IO_buf_base,
- (must_be_exact
- ? delta : fp->_IO_buf_end - fp->_IO_buf_base));
- if (count < delta)
- {
- /* We weren't allowed to read, but try to seek the remainder. */
- offset = count == EOF ? delta : delta-count;
- dir = _IO_seek_cur;
- goto dumb;
- }
- }
- _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base + delta,
- fp->_IO_buf_base + count);
- _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
- fp->_offset = result + count;
- _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- return offset;
- dumb:
-
- _IO_unsave_markers (fp);
- result = _IO_SYSSEEK (fp, offset, dir);
- if (result != EOF)
- {
- _IO_mask_flags (fp, 0, _IO_EOF_SEEN);
- fp->_offset = result;
- _IO_setg (fp, fp->_IO_buf_base, fp->_IO_buf_base, fp->_IO_buf_base);
- _IO_setp (fp, fp->_IO_buf_base, fp->_IO_buf_base);
- }
- return result;
-
-resync:
- /* We need to do it since it is possible that the file offset in
- the kernel may be changed behind our back. It may happen when
- we fopen a file and then do a fork. One process may access the
- the file and the kernel file offset will be changed. */
- if (fp->_offset >= 0)
- _IO_SYSSEEK (fp, fp->_offset, 0);
-
- return offset;
-}
-
-
-_IO_size_t
-_IO_wfile_xsputn (f, data, n)
- _IO_FILE *f;
- const void *data;
- _IO_size_t n;
-{
- register const wchar_t *s = (const wchar_t *) data;
- _IO_size_t to_do = n;
- int must_flush = 0;
- _IO_size_t count;
-
- if (n <= 0)
- return 0;
- /* This is an optimized implementation.
- If the amount to be written straddles a block boundary
- (or the filebuf is unbuffered), use sys_write directly. */
-
- /* First figure out how much space is available in the buffer. */
- count = f->_wide_data->_IO_write_end - f->_wide_data->_IO_write_ptr;
- if ((f->_flags & _IO_LINE_BUF) && (f->_flags & _IO_CURRENTLY_PUTTING))
- {
- count = f->_wide_data->_IO_buf_end - f->_wide_data->_IO_write_ptr;
- if (count >= n)
- {
- register const wchar_t *p;
- for (p = s + n; p > s; )
- {
- if (*--p == L'\n')
- {
- count = p - s + 1;
- must_flush = 1;
- break;
- }
- }
- }
- }
- /* Then fill the buffer. */
- if (count > 0)
- {
- if (count > to_do)
- count = to_do;
- if (count > 20)
- {
-#ifdef _LIBC
- f->_wide_data->_IO_write_ptr =
- __wmempcpy (f->_wide_data->_IO_write_ptr, s, count);
-#else
- wmemcpy (f->_wide_data->_IO_write_ptr, s, count);
- f->_wide_data->_IO_write_ptr += count;
-#endif
- s += count;
- }
- else
- {
- register wchar_t *p = f->_wide_data->_IO_write_ptr;
- register int i = (int) count;
- while (--i >= 0)
- *p++ = *s++;
- f->_wide_data->_IO_write_ptr = p;
- }
- to_do -= count;
- }
- if (to_do > 0)
- to_do -= _IO_wdefault_xsputn (f, s, to_do);
- if (must_flush
- && f->_wide_data->_IO_write_ptr != f->_wide_data->_IO_write_base)
- _IO_wdo_write (f, f->_wide_data->_IO_write_base,
- f->_wide_data->_IO_write_ptr
- - f->_wide_data->_IO_write_base);
-
- return n - to_do;
-}
-
-
-struct _IO_jump_t _IO_wfile_jumps =
-{
- JUMP_INIT_DUMMY,
- JUMP_INIT(finish, _IO_new_file_finish),
- JUMP_INIT(overflow, (_IO_overflow_t) _IO_wfile_overflow),
- JUMP_INIT(underflow, (_IO_underflow_t) _IO_wfile_underflow),
- JUMP_INIT(uflow, (_IO_underflow_t) _IO_wdefault_uflow),
- JUMP_INIT(pbackfail, (_IO_pbackfail_t) _IO_wdefault_pbackfail),
- JUMP_INIT(xsputn, _IO_wfile_xsputn),
- JUMP_INIT(xsgetn, _IO_file_xsgetn),
- JUMP_INIT(seekoff, _IO_wfile_seekoff),
- JUMP_INIT(seekpos, _IO_default_seekpos),
- JUMP_INIT(setbuf, _IO_new_file_setbuf),
- JUMP_INIT(sync, (_IO_sync_t) _IO_wfile_sync),
- JUMP_INIT(doallocate, _IO_wfile_doallocate),
- JUMP_INIT(read, _IO_file_read),
- JUMP_INIT(write, _IO_new_file_write),
- JUMP_INIT(seek, _IO_file_seek),
- JUMP_INIT(close, _IO_file_close),
- JUMP_INIT(stat, _IO_file_stat),
- JUMP_INIT(showmanyc, _IO_default_showmanyc),
- JUMP_INIT(imbue, _IO_default_imbue)
-};
-
-#endif /* _GLIBCPP_USE_WCHAR_T */
diff --git a/contrib/libstdc++/libio/wgenops.c b/contrib/libstdc++/libio/wgenops.c
deleted file mode 100644
index 7485452..0000000
--- a/contrib/libstdc++/libio/wgenops.c
+++ /dev/null
@@ -1,756 +0,0 @@
-/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
- This file is part of the GNU IO Library.
- Written by Ulrich Drepper <drepper@cygnus.com>.
- Based on the single byte version by Per Bothner <bothner@cygnus.com>.
-
- 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 2, 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 COPYING. If not, write to
- the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, if you link this library with files
- compiled with a GNU compiler to produce an executable, this does
- not cause the resulting executable to be covered by the GNU General
- Public License. This exception does not however invalidate any
- other reasons why the executable file might be covered by the GNU
- General Public License. */
-
-/* Generic or default I/O operations. */
-
-#include "libioP.h"
-#ifdef _GLIBCPP_USE_WCHAR_T
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#include <string.h>
-#include <wchar.h>
-
-
-#ifndef _LIBC
-# define __wmemcpy(dst, src, n) wmemcpy (dst, src, n)
-#endif
-
-
-static int save_for_wbackup __P ((_IO_FILE *fp, wchar_t *end_p))
-#ifdef _LIBC
- internal_function
-#endif
- ;
-
-/* Return minimum _pos markers
- Assumes the current get area is the main get area. */
-_IO_ssize_t _IO_least_wmarker __P ((_IO_FILE *fp, wchar_t *end_p));
-
-_IO_ssize_t
-_IO_least_wmarker (fp, end_p)
- _IO_FILE *fp;
- wchar_t *end_p;
-{
- _IO_ssize_t least_so_far = end_p - fp->_wide_data->_IO_read_base;
- struct _IO_marker *mark;
- for (mark = fp->_markers; mark != NULL; mark = mark->_next)
- if (mark->_pos < least_so_far)
- least_so_far = mark->_pos;
- return least_so_far;
-}
-
-/* Switch current get area from backup buffer to (start of) main get area. */
-void
-_IO_switch_to_main_wget_area (fp)
- _IO_FILE *fp;
-{
- wchar_t *tmp;
- fp->_flags &= ~_IO_IN_BACKUP;
- /* Swap _IO_read_end and _IO_save_end. */
- tmp = fp->_wide_data->_IO_read_end;
- fp->_wide_data->_IO_read_end = fp->_wide_data->_IO_save_end;
- fp->_wide_data->_IO_save_end= tmp;
- /* Swap _IO_read_base and _IO_save_base. */
- tmp = fp->_wide_data->_IO_read_base;
- fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_save_base;
- fp->_wide_data->_IO_save_base = tmp;
- /* Set _IO_read_ptr. */
- fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_base;
-}
-
-
-/* Switch current get area from main get area to (end of) backup area. */
-void
-_IO_switch_to_wbackup_area (fp)
- _IO_FILE *fp;
-{
- wchar_t *tmp;
- fp->_flags |= _IO_IN_BACKUP;
- /* Swap _IO_read_end and _IO_save_end. */
- tmp = fp->_wide_data->_IO_read_end;
- fp->_wide_data->_IO_read_end = fp->_wide_data->_IO_save_end;
- fp->_wide_data->_IO_save_end = tmp;
- /* Swap _IO_read_base and _IO_save_base. */
- tmp = fp->_wide_data->_IO_read_base;
- fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_save_base;
- fp->_wide_data->_IO_save_base = tmp;
- /* Set _IO_read_ptr. */
- fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_end;
-}
-
-
-void
-_IO_wsetb (f, b, eb, a)
- _IO_FILE *f;
- wchar_t *b;
- wchar_t *eb;
- int a;
-{
- if (f->_wide_data->_IO_buf_base && !(f->_flags & _IO_USER_BUF))
- FREE_BUF (f->_wide_data->_IO_buf_base, _IO_wblen (f));
- f->_wide_data->_IO_buf_base = b;
- f->_wide_data->_IO_buf_end = eb;
- if (a)
- f->_flags &= ~_IO_USER_BUF;
- else
- f->_flags |= _IO_USER_BUF;
-}
-
-
-wint_t
-_IO_wdefault_pbackfail (fp, c)
- _IO_FILE *fp;
- wint_t c;
-{
- if (fp->_wide_data->_IO_read_ptr > fp->_wide_data->_IO_read_base
- && !_IO_in_backup (fp)
- && (wint_t) fp->_IO_read_ptr[-1] == c)
- --fp->_IO_read_ptr;
- else
- {
- /* Need to handle a filebuf in write mode (switch to read mode). FIXME!*/
- if (!_IO_in_backup (fp))
- {
- /* We need to keep the invariant that the main get area
- logically follows the backup area. */
- if (fp->_wide_data->_IO_read_ptr > fp->_wide_data->_IO_read_base
- && _IO_have_wbackup (fp))
- {
- if (save_for_wbackup (fp, fp->_wide_data->_IO_read_ptr))
- return WEOF;
- }
- else if (!_IO_have_wbackup (fp))
- {
- /* No backup buffer: allocate one. */
- /* Use nshort buffer, if unused? (probably not) FIXME */
- int backup_size = 128;
- wchar_t *bbuf = (wchar_t *) malloc (backup_size
- * sizeof (wchar_t));
- if (bbuf == NULL)
- return WEOF;
- fp->_wide_data->_IO_save_base = bbuf;
- fp->_wide_data->_IO_save_end = (fp->_wide_data->_IO_save_base
- + backup_size);
- fp->_wide_data->_IO_backup_base = fp->_wide_data->_IO_save_end;
- }
- fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_read_ptr;
- _IO_switch_to_wbackup_area (fp);
- }
- else if (fp->_wide_data->_IO_read_ptr <= fp->_wide_data->_IO_read_base)
- {
- /* Increase size of existing backup buffer. */
- _IO_size_t new_size;
- _IO_size_t old_size = (fp->_wide_data->_IO_read_end
- - fp->_wide_data->_IO_read_base);
- wchar_t *new_buf;
- new_size = 2 * old_size;
- new_buf = (wchar_t *) malloc (new_size * sizeof (wchar_t));
- if (new_buf == NULL)
- return WEOF;
- __wmemcpy (new_buf + (new_size - old_size),
- fp->_wide_data->_IO_read_base, old_size);
- free (fp->_wide_data->_IO_read_base);
- _IO_wsetg (fp, new_buf, new_buf + (new_size - old_size),
- new_buf + new_size);
- fp->_wide_data->_IO_backup_base = fp->_wide_data->_IO_read_ptr;
- }
-
- *--fp->_wide_data->_IO_read_ptr = c;
- }
- return c;
-}
-
-
-void
-_IO_wdefault_finish (fp, dummy)
- _IO_FILE *fp;
- int dummy;
-{
- struct _IO_marker *mark;
- if (fp->_wide_data->_IO_buf_base && !(fp->_flags & _IO_USER_BUF))
- {
- FREE_BUF (fp->_wide_data->_IO_buf_base,
- _IO_wblen (fp) * sizeof (wchar_t));
- fp->_wide_data->_IO_buf_base = fp->_wide_data->_IO_buf_end = NULL;
- }
-
- for (mark = fp->_markers; mark != NULL; mark = mark->_next)
- mark->_sbuf = NULL;
-
- if (fp->_IO_save_base)
- {
- free (fp->_wide_data->_IO_save_base);
- fp->_IO_save_base = NULL;
- }
-
-#ifdef _IO_MTSAFE_IO
- _IO_lock_fini (*fp->_lock);
-#endif
-
- _IO_un_link ((struct _IO_FILE_plus *) fp);
-}
-
-
-wint_t
-_IO_wdefault_uflow (fp)
- _IO_FILE *fp;
-{
- wint_t wch;
- wch = _IO_UNDERFLOW (fp);
- if (wch == WEOF)
- return WEOF;
- return *fp->_wide_data->_IO_read_ptr++;
-}
-
-
-wint_t
-__woverflow (f, wch)
- _IO_FILE *f;
- wint_t wch;
-{
- if (f->_mode == 0)
- _IO_fwide (f, 1);
- return _IO_OVERFLOW (f, wch);
-}
-
-
-wint_t
-__wuflow (fp)
- _IO_FILE *fp;
-{
- if (fp->_mode < 0 || (fp->_mode == 0 && _IO_fwide (fp, 1) != 1))
- return WEOF;
-
- if (fp->_mode == 0)
- _IO_fwide (fp, 1);
- if (_IO_in_put_mode (fp))
- if (_IO_switch_to_wget_mode (fp) == EOF)
- return WEOF;
- if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end)
- return *fp->_wide_data->_IO_read_ptr++;
- if (_IO_in_backup (fp))
- {
- _IO_switch_to_main_wget_area (fp);
- if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end)
- return *fp->_wide_data->_IO_read_ptr++;
- }
- if (_IO_have_markers (fp))
- {
- if (save_for_wbackup (fp, fp->_wide_data->_IO_read_end))
- return WEOF;
- }
- else if (_IO_have_wbackup (fp))
- _IO_free_wbackup_area (fp);
- return _IO_UFLOW (fp);
-}
-
-
-wint_t
-__wunderflow (fp)
- _IO_FILE *fp;
-{
- if (fp->_mode < 0 || (fp->_mode == 0 && _IO_fwide (fp, 1) != 1))
- return WEOF;
-
- if (fp->_mode == 0)
- _IO_fwide (fp, 1);
- if (_IO_in_put_mode (fp))
- if (_IO_switch_to_wget_mode (fp) == EOF)
- return WEOF;
- if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end)
- return *fp->_wide_data->_IO_read_ptr;
- if (_IO_in_backup (fp))
- {
- _IO_switch_to_main_wget_area (fp);
- if (fp->_wide_data->_IO_read_ptr < fp->_wide_data->_IO_read_end)
- return *fp->_wide_data->_IO_read_ptr;
- }
- if (_IO_have_markers (fp))
- {
- if (save_for_wbackup (fp, fp->_wide_data->_IO_read_end))
- return WEOF;
- }
- else if (_IO_have_backup (fp))
- _IO_free_wbackup_area (fp);
- return _IO_UNDERFLOW (fp);
-}
-
-
-_IO_size_t
-_IO_wdefault_xsputn (f, data, n)
- _IO_FILE *f;
- const void *data;
- _IO_size_t n;
-{
- const wchar_t *s = (const wchar_t *) data;
- _IO_size_t more = n;
- if (more <= 0)
- return 0;
- for (;;)
- {
- /* Space available. */
- _IO_ssize_t count = (f->_wide_data->_IO_write_end
- - f->_wide_data->_IO_write_ptr);
- if (count > 0)
- {
- if ((_IO_size_t) count > more)
- count = more;
- if (count > 20)
- {
-#ifdef _LIBC
- f->_wide_data->_IO_write_ptr =
- __wmempcpy (f->_wide_data->_IO_write_ptr, s, count);
-#else
- memcpy (f->_wide_data->_IO_write_ptr, s, count);
- f->_wide_data->_IO_write_ptr += count;
-#endif
- s += count;
- }
- else if (count <= 0)
- count = 0;
- else
- {
- wchar_t *p = f->_wide_data->_IO_write_ptr;
- _IO_ssize_t i;
- for (i = count; --i >= 0; )
- *p++ = *s++;
- f->_wide_data->_IO_write_ptr = p;
- }
- more -= count;
- }
- if (more == 0 || __woverflow (f, *s++) == WEOF)
- break;
- more--;
- }
- return n - more;
-}
-
-
-_IO_size_t
-_IO_wdefault_xsgetn (fp, data, n)
- _IO_FILE *fp;
- void *data;
- _IO_size_t n;
-{
- _IO_size_t more = n;
- wchar_t *s = (wchar_t*) data;
- for (;;)
- {
- /* Data available. */
- _IO_ssize_t count = (fp->_wide_data->_IO_read_end
- - fp->_wide_data->_IO_read_ptr);
- if (count > 0)
- {
- if ((_IO_size_t) count > more)
- count = more;
- if (count > 20)
- {
-#ifdef _LIBC
- s = __wmempcpy (s, fp->_wide_data->_IO_read_ptr, count);
-#else
- memcpy (s, fp->_wide_data->_IO_read_ptr, count);
- s += count;
-#endif
- fp->_wide_data->_IO_read_ptr += count;
- }
- else if (count <= 0)
- count = 0;
- else
- {
- wchar_t *p = fp->_wide_data->_IO_read_ptr;
- int i = (int) count;
- while (--i >= 0)
- *s++ = *p++;
- fp->_wide_data->_IO_read_ptr = p;
- }
- more -= count;
- }
- if (more == 0 || __wunderflow (fp) == WEOF)
- break;
- }
- return n - more;
-}
-
-
-void
-_IO_wdoallocbuf (fp)
- _IO_FILE *fp;
-{
- if (fp->_wide_data->_IO_buf_base)
- return;
- if (!(fp->_flags & _IO_UNBUFFERED))
- if (_IO_DOALLOCATE (fp) != WEOF)
- return;
- _IO_wsetb (fp, fp->_wide_data->_shortbuf, fp->_wide_data->_shortbuf + 1, 0);
-}
-
-
-_IO_FILE *
-_IO_wdefault_setbuf (fp, p, len)
- _IO_FILE *fp;
- wchar_t *p;
- _IO_ssize_t len;
-{
- if (_IO_SYNC (fp) == EOF)
- return NULL;
- if (p == NULL || len == 0)
- {
- fp->_flags |= _IO_UNBUFFERED;
- _IO_wsetb (fp, fp->_wide_data->_shortbuf, fp->_wide_data->_shortbuf + 1,
- 0);
- }
- else
- {
- fp->_flags &= ~_IO_UNBUFFERED;
- _IO_wsetb (fp, p, p + len, 0);
- }
- fp->_wide_data->_IO_write_base = fp->_wide_data->_IO_write_ptr
- = fp->_wide_data->_IO_write_end = 0;
- fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_read_ptr
- = fp->_wide_data->_IO_read_end = 0;
- return fp;
-}
-
-
-int
-_IO_wdefault_doallocate (fp)
- _IO_FILE *fp;
-{
- wchar_t *buf;
-
- ALLOC_WBUF (buf, _IO_BUFSIZ, EOF);
- _IO_wsetb (fp, buf, buf + _IO_BUFSIZ, 1);
- return 1;
-}
-
-
-int
-_IO_switch_to_wget_mode (fp)
- _IO_FILE *fp;
-{
- if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_write_base)
- if (_IO_OVERFLOW (fp, WEOF) == WEOF)
- return EOF;
- if (_IO_in_backup (fp))
- fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_backup_base;
- else
- {
- fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_buf_base;
- if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_read_end)
- fp->_wide_data->_IO_read_end = fp->_wide_data->_IO_write_ptr;
- }
- fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_write_ptr;
-
- fp->_wide_data->_IO_write_base = fp->_wide_data->_IO_write_ptr
- = fp->_wide_data->_IO_write_end = fp->_wide_data->_IO_read_ptr;
-
- fp->_flags &= ~_IO_CURRENTLY_PUTTING;
- return 0;
-}
-
-void
-_IO_free_wbackup_area (fp)
- _IO_FILE *fp;
-{
- if (_IO_in_backup (fp))
- _IO_switch_to_main_wget_area (fp); /* Just in case. */
- free (fp->_wide_data->_IO_save_base);
- fp->_wide_data->_IO_save_base = NULL;
- fp->_wide_data->_IO_save_end = NULL;
- fp->_wide_data->_IO_backup_base = NULL;
-}
-
-#if 0
-int
-_IO_switch_to_wput_mode (fp)
- _IO_FILE *fp;
-{
- fp->_wide_data->_IO_write_base = fp->_wide_data->_IO_read_ptr;
- fp->_wide_data->_IO_write_ptr = fp->_wide_data->_IO_read_ptr;
- /* Following is wrong if line- or un-buffered? */
- fp->_wide_data->_IO_write_end = (fp->_flags & _IO_IN_BACKUP
- ? fp->_wide_data->_IO_read_end
- : fp->_wide_data->_IO_buf_end);
-
- fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_end;
- fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_read_end;
-
- fp->_flags |= _IO_CURRENTLY_PUTTING;
- return 0;
-}
-#endif
-
-
-static int
-#ifdef _LIBC
-internal_function
-#endif
-save_for_wbackup (fp, end_p)
- _IO_FILE *fp;
- wchar_t *end_p;
-{
- /* Append [_IO_read_base..end_p] to backup area. */
- _IO_ssize_t least_mark = _IO_least_wmarker (fp, end_p);
- /* needed_size is how much space we need in the backup area. */
- _IO_size_t needed_size = ((end_p - fp->_wide_data->_IO_read_base)
- - least_mark);
- /* FIXME: Dubious arithmetic if pointers are NULL */
- _IO_size_t current_Bsize = (fp->_wide_data->_IO_save_end
- - fp->_wide_data->_IO_save_base);
- _IO_size_t avail; /* Extra space available for future expansion. */
- _IO_ssize_t delta;
- struct _IO_marker *mark;
- if (needed_size > current_Bsize)
- {
- wchar_t *new_buffer;
- avail = 100;
- new_buffer = (wchar_t *) malloc ((avail + needed_size)
- * sizeof (wchar_t));
- if (new_buffer == NULL)
- return EOF; /* FIXME */
- if (least_mark < 0)
- {
-#ifdef _LIBC
- __wmempcpy (__wmempcpy (new_buffer + avail,
- fp->_wide_data->_IO_save_end + least_mark,
- -least_mark),
- fp->_wide_data->_IO_read_base,
- end_p - fp->_wide_data->_IO_read_base);
-#else
- memcpy (new_buffer + avail,
- fp->_wide_data->_IO_save_end + least_mark,
- -least_mark * sizeof (wchar_t));
- memcpy (new_buffer + avail - least_mark,
- fp->_wide_data->_IO_read_base,
- (end_p - fp->_wide_data->_IO_read_base) * sizeof (wchar_t));
-#endif
- }
- else
- {
-#ifdef _LIBC
- __wmemcpy (new_buffer + avail,
- fp->_wide_data->_IO_read_base + least_mark,
- needed_size);
-#else
- memcpy (new_buffer + avail,
- fp->_wide_data->_IO_read_base + least_mark,
- needed_size * sizeof (wchar_t));
-#endif
- }
- if (fp->_wide_data->_IO_save_base)
- free (fp->_wide_data->_IO_save_base);
- fp->_wide_data->_IO_save_base = new_buffer;
- fp->_wide_data->_IO_save_end = new_buffer + avail + needed_size;
- }
- else
- {
- avail = current_Bsize - needed_size;
- if (least_mark < 0)
- {
-#ifdef _LIBC
- __wmemmove (fp->_wide_data->_IO_save_base + avail,
- fp->_wide_data->_IO_save_end + least_mark,
- -least_mark);
- __wmemcpy (fp->_wide_data->_IO_save_base + avail - least_mark,
- fp->_wide_data->_IO_read_base,
- end_p - fp->_wide_data->_IO_read_base);
-#else
- memmove (fp->_wide_data->_IO_save_base + avail,
- fp->_wide_data->_IO_save_end + least_mark,
- -least_mark * sizeof (wchar_t));
- memcpy (fp->_wide_data->_IO_save_base + avail - least_mark,
- fp->_wide_data->_IO_read_base,
- (end_p - fp->_wide_data->_IO_read_base) * sizeof (wchar_t));
-#endif
- }
- else if (needed_size > 0)
-#ifdef _LIBC
- __wmemcpy (fp->_wide_data->_IO_save_base + avail,
- fp->_wide_data->_IO_read_base + least_mark,
- needed_size);
-#else
- memcpy (fp->_wide_data->_IO_save_base + avail,
- fp->_wide_data->_IO_read_base + least_mark,
- needed_size * sizeof (wchar_t));
-#endif
- }
- fp->_wide_data->_IO_backup_base = fp->_wide_data->_IO_save_base + avail;
- /* Adjust all the streammarkers. */
- delta = end_p - fp->_wide_data->_IO_read_base;
- for (mark = fp->_markers; mark != NULL; mark = mark->_next)
- mark->_pos -= delta;
- return 0;
-}
-
-wint_t
-_IO_sputbackwc (fp, c)
- _IO_FILE *fp;
- wint_t c;
-{
- wint_t result;
-
- if (fp->_wide_data->_IO_read_ptr > fp->_wide_data->_IO_read_base
- && (wchar_t)fp->_wide_data->_IO_read_ptr[-1] == (wchar_t) c)
- {
- fp->_wide_data->_IO_read_ptr--;
- result = c;
- }
- else
- result = _IO_PBACKFAIL (fp, c);
-
- if (result != EOF)
- fp->_flags &= ~_IO_EOF_SEEN;
-
- return result;
-}
-
-wint_t
-_IO_sungetwc (fp)
- _IO_FILE *fp;
-{
- int result;
-
- if (fp->_wide_data->_IO_read_ptr > fp->_wide_data->_IO_read_base)
- {
- fp->_wide_data->_IO_read_ptr--;
- result = *fp->_wide_data->_IO_read_ptr;
- }
- else
- result = _IO_PBACKFAIL (fp, EOF);
-
- if (result != WEOF)
- fp->_flags &= ~_IO_EOF_SEEN;
-
- return result;
-}
-
-
-unsigned
-_IO_adjust_wcolumn (start, line, count)
- unsigned start;
- const wchar_t *line;
- int count;
-{
- const wchar_t *ptr = line + count;
- while (ptr > line)
- if (*--ptr == L'\n')
- return line + count - ptr - 1;
- return start + count;
-}
-
-void
-_IO_init_wmarker (marker, fp)
- struct _IO_marker *marker;
- _IO_FILE *fp;
-{
- marker->_sbuf = fp;
- if (_IO_in_put_mode (fp))
- _IO_switch_to_wget_mode (fp);
- if (_IO_in_backup (fp))
- marker->_pos = fp->_wide_data->_IO_read_ptr - fp->_wide_data->_IO_read_end;
- else
- marker->_pos = (fp->_wide_data->_IO_read_ptr
- - fp->_wide_data->_IO_read_base);
-
- /* Should perhaps sort the chain? */
- marker->_next = fp->_markers;
- fp->_markers = marker;
-}
-
-#define BAD_DELTA EOF
-
-/* Return difference between MARK and current position of MARK's stream. */
-int
-_IO_wmarker_delta (mark)
- struct _IO_marker *mark;
-{
- int cur_pos;
- if (mark->_sbuf == NULL)
- return BAD_DELTA;
- if (_IO_in_backup (mark->_sbuf))
- cur_pos = (mark->_sbuf->_wide_data->_IO_read_ptr
- - mark->_sbuf->_wide_data->_IO_read_end);
- else
- cur_pos = (mark->_sbuf->_wide_data->_IO_read_ptr
- - mark->_sbuf->_wide_data->_IO_read_base);
- return mark->_pos - cur_pos;
-}
-
-int
-_IO_seekwmark (fp, mark, delta)
- _IO_FILE *fp;
- struct _IO_marker *mark;
- int delta;
-{
- if (mark->_sbuf != fp)
- return EOF;
- if (mark->_pos >= 0)
- {
- if (_IO_in_backup (fp))
- _IO_switch_to_main_wget_area (fp);
- fp->_wide_data->_IO_read_ptr = (fp->_wide_data->_IO_read_base
- + mark->_pos);
- }
- else
- {
- if (!_IO_in_backup (fp))
- _IO_switch_to_wbackup_area (fp);
- fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_end + mark->_pos;
- }
- return 0;
-}
-
-void
-_IO_unsave_wmarkers (fp)
- _IO_FILE *fp;
-{
- struct _IO_marker *mark = fp->_markers;
- if (mark)
- {
-#ifdef TODO
- streampos offset = seekoff (0, ios::cur, ios::in);
- if (offset != EOF)
- {
- offset += eGptr () - Gbase ();
- for ( ; mark != NULL; mark = mark->_next)
- mark->set_streampos (mark->_pos + offset);
- }
- else
- {
- for ( ; mark != NULL; mark = mark->_next)
- mark->set_streampos (EOF);
- }
-#endif
- fp->_markers = 0;
- }
-
- if (_IO_have_backup (fp))
- _IO_free_wbackup_area (fp);
-}
-
-#endif /* _GLIBCPP_USE_WCHAR_T */
diff --git a/contrib/libstdc++/libmath/nan.c b/contrib/libstdc++/libmath/nan.c
deleted file mode 100644
index 1814b5d..0000000
--- a/contrib/libstdc++/libmath/nan.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Return quiet nan. */
-
-/* Copyright (C) 1997, 1998, 1999 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 2, 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 COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- USA.
-
- As a special exception, you may use this file as part of a free software
- library without restriction. Specifically, if other files instantiate
- templates or use macros or inline functions from this file, or you compile
- this file and link it with other files to produce an executable, this
- file does not by itself cause the resulting executable to be covered by
- the GNU General Public License. This exception does not however
- invalidate any other reasons why the executable file might be covered by
- the GNU General Public License. */
-
-
-#include <stdlib.h>
-#include <string.h>
-
-double
-nan ()
-{ return strtod ("nan", NULL); }
diff --git a/contrib/libstdc++/mkcheck.in b/contrib/libstdc++/mkcheck.in
deleted file mode 100755
index c856b05..0000000
--- a/contrib/libstdc++/mkcheck.in
+++ /dev/null
@@ -1,448 +0,0 @@
-#!/usr/bin/env bash
-
-# Script to do automated testing and data collection for various test
-# files, so that we don't have to do this by hand on every test file.
-# It attempts to collect some diagnostic info about size and speed that
-# should be useful in the future as the library gets tuned for size
-# and speed. In addition, it tests static and shared linkage, iff each
-# has been enabled.
-
-# Invocation
-# mkcheck [01]
-
-# 1: variables
-#
-# WHICH determines if you are
-# (0) testing the build binary and headers, or
-# (1) testing the installed binary and headers, or
-WHICH=$1
-if [ "$WHICH"x = 0x ]; then
- echo "running mkcheck"
- echo "$0: testing the build directory"
-elif [ "$WHICH"x = 1x ]; then
- echo "running mkcheck"
- echo "$0: testing the install directory"
-else
- echo 'Usage: mkcheck 0 /* test the build directory */'
- echo ' mkcheck 1 /* test the install directory */'
- exit 1;
-fi
-
-# Now that we've successfully translated the numerical option into
-# a symbolic one, we can safely ignore it.
-shift
-
-# This has been true all along. Found out about it the hard way...
-case $BASH_VERSION in
- 1*) echo 'You need bash 2.x to run mkcheck. Exiting.'; exit 1 ;;
- *) ;; # ??
-esac
-
-BUILD_DIR=@glibcpp_builddir@
-SRC_DIR=@glibcpp_srcdir@
-PREFIX_DIR=@glibcpp_prefixdir@
-if [ "$WHICH"x = 0x ]; then
- CXX=`$BUILD_DIR/testsuite_flags --build-cxx`
- INCLUDES=`$BUILD_DIR/testsuite_flags --build-includes`
-else
- CXX=`$BUILD_DIR/testsuite_flags --install-cxx`
- INCLUDES=`$BUILD_DIR/testsuite_flags --install-includes`
-fi
-CXXFLAGS=`$BUILD_DIR/testsuite_flags --cxxflags`
-LIBTOOL="$BUILD_DIR/libtool"
-LTEXE="$LIBTOOL --mode=execute"
-#LTCXX="$LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS $INCLUDES"
-LTCXX="$CXX $CXXFLAGS $INCLUDES"
-
-# specific libtool flag(s) to use shared libraries, if any
-SH_FLAG="-Wl,--rpath -Wl,$BUILD_DIR/../../gcc -Wl,--rpath -Wl,$BUILD_DIR/src/.libs"
-
-# specific libtool flag(s) to use static libraries, if any
-ST_FLAG="-static"
-#ST_FLAG="-all-static"
-
-# Set up the testing directory, which should be in a directory called
-# "testsuite" in the root level of the build directory.
-TEST_DIR="$BUILD_DIR/testsuite"
-# help libtool keep quiet
-if [ ! -d ${TEST_DIR}/.libs ]; then
- mkdir $TEST_DIR/.libs
-fi
-
-# the name of the file that will collect and hold all this useful data:
-RESULTS_FILE="$TEST_DIR/$(date +%Y%m%d)-mkcheck.txt"
-
-# the name of the log file that will append compiler diagnostics:
-LOG_FILE="$TEST_DIR/$(date +%Y%m%d)-mkchecklog.txt"
-
-# the names of the specific test files to be run
-TESTS_FILE="$TEST_DIR/$(date +%Y%m%d)-mkcheckfiles.txt"
-
-
-#
-# 2: clean, make files, append general test info
-#
-
-# Remove old executables.
-rm -rf "$TEST_DIR"/*exe
-rm -rf "$TEST_DIR"/compile.out
-
-# Remove old core files (which now get left in cwd, not $TEST_DIR).
-rm -rf ./*core*
-
-if [ -f $RESULTS_FILE ]; then
- rm $RESULTS_FILE
-fi
-if [ -f $LOG_FILE ]; then
- rm $LOG_FILE
-fi
-
-# Make a list of the files we're going to run, or use an old one if it exists.
-if [ ! -f "$TESTS_FILE" ]; then
- echo "making file $TESTS_FILE"
- for LONG_NAME in $SRC_DIR/testsuite/*/*.cc
- do
- DIR_NAME=$(dirname $LONG_NAME)
- SHORT_NAME="`basename $DIR_NAME`/`basename $LONG_NAME`"
- echo "$SHORT_NAME" >> $TESTS_FILE
- done
-fi
-
-# Nasty solution to replace GNU date(1)'s %s time_t output function.
-TIMER_COMMAND=$TEST_DIR/printnow.exe
-if [ ! -x "$TIMER_COMMAND" ]; then
- echo "making utility $TIMER_COMMAND"
- gcc -o "$TIMER_COMMAND" "$SRC_DIR/testsuite/printnow.c"
- strip "$TIMER_COMMAND"
-fi
-
-# Copy over the data files for filebufs
-cp $SRC_DIR/testsuite/27_io/*.txt $TEST_DIR
-cp $SRC_DIR/testsuite/27_io/*.tst $TEST_DIR
-chmod u+w $TEST_DIR/*.txt
-chmod u+w $TEST_DIR/*.tst
-
-# Emit useful info about compiler and platform
-echo "host: $(uname -mrsv)" >> $RESULTS_FILE
-echo "compiler: $($CXX -v 2>&1)" >> $RESULTS_FILE
-echo "compiler flags: $CXXFLAGS" >> $RESULTS_FILE
-echo "date: $(date +%Y%m%d)" >> $RESULTS_FILE
-echo "" >> $RESULTS_FILE
-
-explanation='+: pass, -b: build failure, -r: run failure, x: disabled'
-printf "%s\n %s\n" 'p == pass/fail execution test' "$explanation" \
- >> $RESULTS_FILE
-echo "ctime == time to compile and link" >> $RESULTS_FILE
-echo "etime == time for executable to run" >> $RESULTS_FILE
-echo "text == size of the executable text section" >> $RESULTS_FILE
-echo "data == size of the executable data section" >> $RESULTS_FILE
-echo "total == size of the executable" >> $RESULTS_FILE
-echo "" >> $RESULTS_FILE
-
-echo "p" | awk '{printf("%s ", $1)}' >> $RESULTS_FILE
-echo "ctime" "etime" | awk '{printf("%s\t%s\t", $1, $2)}' >> $RESULTS_FILE
-echo "text" "data" | awk '{printf("%s\t%s\t", $1, $2)}' >> $RESULTS_FILE
-echo "total" "name" | awk '{printf("%s\t%s\t", $1, $2)}' >> $RESULTS_FILE
-echo "" >> $RESULTS_FILE
-
-# Counters. These could be members of an array, but they'd all have to
-# become individuals anyhow if we ever change this script to super-portable sh.
-shared_pass=0
-shared_fail=0
-static_pass=0
-static_fail=0
-
-
-#
-# 2.5: support functions
-#
-
-# Figure out how to extract size information from binaries. We take
-# the text of the value we want as an argument, and leave the size in
-# the appropriate variable.
-#
-# We discover what kind of size(1) we are using *once* and build a shell
-# function named 'size_command' to wrap it. (The "function" keyword is
-# redundant here, but helps me read it, so there.) Previously we were
-# re-discovering the size(1) arguments three times for each test; sloooow.
-#
-# It is VERY IMPORTANT not to compare these numbers across platforms.
-# Different size(1)'s extract section information differently. For
-# example, using the native Sun size(1) and GNU size(1) built for Suns
-# on the exact same binary will give very different numbers, due to all
-# the variance in command-line options and arbitrary names of ELF sections.
-#
-# and suddenly we go to 2-space indentations...
-setup_size_command()
-{
- if size --version 2> /dev/null | grep -c GNU > /dev/null;
- then # Then we're using a GNU size(1) built for this platform.
- # We lose .rodata and .data1 and who knows what else... kludge.
- function size_command()
- {
- case $1 in
- TEXT) TEXT=$(size -B $EXENAME | tail -1 | awk '{print $1}') ;;
- DATA) DATA=$(size -B $EXENAME | tail -1 | awk '{print $2}') ;;
- SIZE) SIZE=$(size -B $EXENAME | tail -1 | awk '{print $4}') ;;
- esac
- }
- else
- # Not using GNU size; check for platform. These numbers seem to match
- # up to text/data/total, although their meanings seem to be different.
- # THIS TABLE IS SORTED. KEEP IT THAT WAY.
- case @host_os@ in
- *aix*)
- function size_command()
- {
- case $1 in
- TEXT) TEXT=$(size -X32_64 $EXENAME | awk '{print $2}') ;;
- DATA) DATA=$(size -X32_64 $EXENAME | awk '{print $4}') ;;
- SIZE) SIZE=$(size -X32_64 $EXENAME | awk '{print $12}') ;;
- esac
- }
- ;;
- *hpux*)
- function size_command()
- {
- case $1 in
- TEXT) TEXT=$(size $EXENAME | awk '{print $1}') ;;
- DATA) DATA=$(size $EXENAME | awk '{print $3}') ;;
- SIZE) SIZE=$(size $EXENAME | awk '{print $7}') ;;
- esac
- }
- ;;
- *irix*)
- function size_command()
- {
- case $1 in
- TEXT) TEXT=$(size -4 $EXENAME | awk '{print $1}') ;;
- DATA) DATA=$(size -4 $EXENAME | awk '{print $3}') ;;
- SIZE) SIZE=$(size -4 $EXENAME | awk '{print $7}') ;;
- esac
- }
- ;;
- *solaris*)
- function size_command()
- {
- case $1 in
- TEXT) TEXT=$(size $EXENAME | awk '{print $1}') ;;
- DATA) DATA=$(size $EXENAME | awk '{print $3}') ;;
- SIZE) SIZE=$(size $EXENAME | awk '{print $7}') ;;
- esac
- }
- ;;
- *)
- echo ' * Warning! Skipping section sizes!' 1>&2
- function size_command()
- {
- case $1 in
- TEXT) TEXT=0 ;;
- DATA) DATA=0 ;;
- SIZE) SIZE=0 ;;
- esac
- }
- ;;
- esac
- fi
-}
-
-# Test for file output
-test_for_output()
-{
- # This checks for emitted output files, which is useful when
- # testing file-related output. The rules for this working are as
- # follows: the emitted file must have the ".txt" extension, and be
- # based on the actual *.cc file's name. For example, 27/filbuf.cc
- # currently outputs files named 27/filebuf-2.txt and 27/filebuf-3.txt.
- # Also, the first emitted file must be in the form $NAME-1.txt.
- # The control file must follow the same constraints, but have a
- # ".tst" extension. Thus, you have 27/filebuf-2.tst, etc.
-
- # NAME contains the source name, like 27/filebuf.cc
- # From that NAME, we want to generate some possible names, using
- # ls on MATCH, a pattern description generated with sed.
-
- # this is the name of the resulting diff file, if any
- DIFF_FILE="`echo $TEST_NAME | sed 's/cc$/diff/'`"
- # construct wildcard names, ie for $NAME=filebuf.cc, makes "filebuf*.tst"
- DATA_FILES="`echo $TEST_NAME | sed 's/\.cc/\*\.tst/g'`"
- # make sure there is at least one, then go
- ST_E="`echo $TEST_NAME | sed 's/\.cc/\-1\.tst/g'`"
- if [ -f $ST_E ]; then
- # list of actual files that match the wildcard above, ie
- # "filebuf-1.tst"
- ST_MATCH_LIST="`ls $DATA_FILES`"
- for i in $ST_MATCH_LIST; do
- # ST_OUT_FILE is generated in the build directory.
- PRE_NAME2="$TEST_DIR/`basename $i`"
- ST_OUT_FILE="`echo $PRE_NAME2 | sed 's/tst$/txt/'`"
- diff $ST_OUT_FILE $i > $DIFF_FILE
- if [ -s $DIFF_FILE ]; then
- RESULT="-r"
- else
- RESULT="+"
- fi
- rm $DIFF_FILE
- done
- else
- # the file does no output, and didn't abnormally
- # terminate, so assume passed.
- RESULT="+"
- fi
-}
-
-
-#
-# 3: compile, link, execute, time
-#
-# Abstract out the common code for compiling, linking, executing and printing.
-test_file()
-{
- # NB: S_FLAG has to be last argument because it may be null, and
- # error checking hasn't been invented yet.
- NAME=$1
- EXENAME=$2
- S_FLAG=$3
-
- SRC_NAME="$SRC_DIR/testsuite/$1"
- TEST_NAME="$TEST_DIR/`basename $NAME`"
-
- # This would be deliciously easy if GNU date's %s were always around.
- # There are three ways to do this: 1) use the builtin 'time' like we
- # do later; then getting compiler errors into LOG_FILE is a nightmare.
- # 2) Grab the output of a formatted date(1) and do the math; harder
- # and harder as we try compiling at, say, top of the hour; we would
- # eventually have to calculate time_t anyhow. Or 3) just grab two
- # time_t's (no more overhead than grabbing two date(1)'s).
- our_libs="-L$TEST_DIR -lv3test"
- compiler_invocation="$LTCXX $S_FLAG $SRC_NAME -o $EXENAME $our_libs"
- echo $compiler_invocation >> compile.out 2>&1
- COMP_TIME_START=$($TIMER_COMMAND)
- $compiler_invocation >> compile.out 2>&1
- COMP_TIME_END=$($TIMER_COMMAND)
-
- if [ $COMP_TIME_START -lt $COMP_TIME_END ]; then
- C_TIME=$[ $COMP_TIME_END - $COMP_TIME_START ]
- else
- C_TIME="0"
- fi
-
- if [ -f $EXENAME ]; then
-# rm compile.out
- size_command TEXT
- size_command DATA
- size_command SIZE
-
- # Actually run the executable and time it. Note that output
- # printed by the executable will be lost and cannot be redirected,
- # because we need to capture the output of 'time'. Bummer.
- TIMEFORMAT='timemark %R'
- E_TIME_TEXT="$(exec 2>&1; time $LTEXE $EXENAME)"
- E_ABNORMAL_TERMINATION=$?
-
- if [ "$E_ABNORMAL_TERMINATION" -ne 0 ]; then
- RESULT='-r'
- E_TIME="0"
- rm -f ./*core
- # sometimes you want to save all core files for review:
- #mv ./core $EXENAME.core
- # sometimes the OS allows you to name core files yourself:
- #mv ./*core $EXENAME.core
- #mv ./core* $EXENAME.core
- else
- test_for_output
- # XXX This doesn't always result in a number.
- # E_TIME="$(echo $E_TIME_TEXT | awk '{print $2}')"
- E_TIME="0"
- fi
-
- # sometimes you want to save all failing exe files for review:
- if [ "$RESULT" = '+' ]; then
- rm "$EXENAME"
- fi
- else
- # the file did not compile/link.
- printf "\n" >> $LOG_FILE
- `cat compile.out >> $LOG_FILE`
- rm compile.out
- RESULT="-b"
- TEXT="0"
- DATA="0"
- SIZE="0"
- fi
-
- # update the counters
- if test "$RESULT" = "+" ; then
- if test x"$S_FLAG" = x"$ST_FLAG"; then
- static_pass=`expr $static_pass + 1`
- else
- shared_pass=`expr $shared_pass + 1`
- fi
- else
- if test x"$S_FLAG" = x"$ST_FLAG"; then
- static_fail=`expr $static_fail + 1`
- else
- shared_fail=`expr $shared_fail + 1`
- fi
- fi
-
- printf "%s\t" "$RESULT"
- printf "%-2s %d\t%.3f\t%s\t%s\t%s\t%s %s\n" \
- "$RESULT" $C_TIME $E_TIME $TEXT $DATA $SIZE $NAME >> $RESULTS_FILE
-}
-
-setup_size_command
-echo ""
-echo "Detailed test results in .${RESULTS_FILE/$BUILD_DIR}"
-echo $explanation
-echo "------------------------------------------------------------------------"
-printf "static\tshared\ttest\n"
-echo "------------------------------------------------------------------------"
-
-TEST_TIME_START=$($TIMER_COMMAND)
-for NAME in `cat $TESTS_FILE`
-do
- PRE_NAME="$TEST_DIR/`basename $NAME`"
- ST_NAME="`echo $PRE_NAME | sed 's/cc$/st-exe/'`"
- SH_NAME="`echo $PRE_NAME | sed 's/cc$/sh-exe/'`"
-
- if test @enable_static@ = yes; then
- test_file $NAME $ST_NAME "$ST_FLAG"
- else
- printf "x\t"
- printf "static skipped\n" >> $RESULTS_FILE
- fi
- if test @enable_shared@ = yes; then
- test_file $NAME $SH_NAME "$SH_FLAG"
- else
- printf "x\t"
- printf "shared skipped\n" >> $RESULTS_FILE
- fi
- printf "%s\n" "$NAME"
-
- echo "" >> $RESULTS_FILE
-done
-TEST_TIME_END=$($TIMER_COMMAND)
-
-
-#
-# 4: summary
-#
-# grep can count faster than we can...
-total_failures=`expr ${shared_fail} + ${static_fail}`
-total_successes=`expr ${shared_pass} + ${static_pass}`
-resultstext="pass/fail results: ${static_pass}/${static_fail} static + ${shared_pass}/${shared_fail} shared = ${total_successes}/${total_failures} total"
-if [ $total_failures -eq 0 ]; then
- resultstext="${resultstext}, WIN WIN"
-fi
-sed -e "/^date:/a\\
-$resultstext" $RESULTS_FILE > ${RESULTS_FILE}.tmp
-mv ${RESULTS_FILE}.tmp $RESULTS_FILE
-
-if [ $TEST_TIME_START -lt $TEST_TIME_END ]; then
- TEST_TIME=$[ $TEST_TIME_END - $TEST_TIME_START ]
- echo "testrun == $TEST_TIME seconds"
- echo "testrun == $TEST_TIME seconds" >> $RESULTS_FILE
-fi
-
-exit 0
diff --git a/contrib/libstdc++/sinst.cc b/contrib/libstdc++/sinst.cc
deleted file mode 100644
index 0b3617e..0000000
--- a/contrib/libstdc++/sinst.cc
+++ /dev/null
@@ -1,135 +0,0 @@
-// Instantiation file for the -*- C++ -*- string classes.
-// Copyright (C) 1994 Free Software Foundation
-
-// This file is part of the GNU ANSI 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-// As a special exception, if you link this library with files
-// compiled with a GNU compiler to produce an executable, this does not cause
-// the resulting executable to be covered by the GNU General Public License.
-// This exception does not however invalidate any other reasons why
-// the executable file might be covered by the GNU General Public License.
-
-// Written by Jason Merrill based upon the specification by Takanori Adachi
-// in ANSI X3J16/94-0013R2.
-
-#ifdef __GNUG__
-#ifdef TRAITS
-#ifdef C
-#pragma implementation "std/straits.h"
-#endif
-#endif
-#endif
-
-#include <string>
-
-#ifdef C
-typedef char c;
-#endif
-#ifdef W
-typedef wchar_t c;
-#endif
-
-#if defined(TRAITS) && !defined(C)
-template class string_char_traits <c>;
-#else
-/* string_char_traits<char> is already explicitly specialized in
- std/straits.h. */
-#endif
-
-typedef basic_string <c> s;
-
-#ifdef MAIN
-template class basic_string <c>;
-#endif
-
-#ifdef ADDSS
-template s operator+ (const s&, const s&);
-#endif
-#ifdef ADDPS
-template s operator+ (const c*, const s&);
-#endif
-#ifdef ADDCS
-template s operator+ (c, const s&);
-#endif
-#ifdef ADDSP
-template s operator+ (const s&, const c*);
-#endif
-#ifdef ADDSC
-template s operator+ (const s&, c);
-#endif
-#ifdef EQSS
-template bool operator== (const s&, const s&);
-#endif
-#ifdef EQPS
-template bool operator== (const c*, const s&);
-#endif
-#ifdef EQSP
-template bool operator== (const s&, const c*);
-#endif
-#ifdef NESS
-template bool operator!= (const s&, const s&);
-#endif
-#ifdef NEPS
-template bool operator!= (const c*, const s&);
-#endif
-#ifdef NESP
-template bool operator!= (const s&, const c*);
-#endif
-#ifdef LTSS
-template bool operator< (const s&, const s&);
-#endif
-#ifdef LTPS
-template bool operator< (const c*, const s&);
-#endif
-#ifdef LTSP
-template bool operator< (const s&, const c*);
-#endif
-#ifdef GTSS
-template bool operator> (const s&, const s&);
-#endif
-#ifdef GTPS
-template bool operator> (const c*, const s&);
-#endif
-#ifdef GTSP
-template bool operator> (const s&, const c*);
-#endif
-#ifdef LESS
-template bool operator<= (const s&, const s&);
-#endif
-#ifdef LEPS
-template bool operator<= (const c*, const s&);
-#endif
-#ifdef LESP
-template bool operator<= (const s&, const c*);
-#endif
-#ifdef GESS
-template bool operator>= (const s&, const s&);
-#endif
-#ifdef GEPS
-template bool operator>= (const c*, const s&);
-#endif
-#ifdef GESP
-template bool operator>= (const s&, const c*);
-#endif
-#ifdef EXTRACT
-template istream& operator>> (istream&, s&);
-#endif // EXTRACT
-#ifdef INSERT
-template ostream& operator<< (ostream&, const s&);
-#endif // INSERT
-#ifdef GETLINE
-template istream& getline (istream&, s&, c);
-#endif
diff --git a/contrib/libstdc++/src/bitset.cc b/contrib/libstdc++/src/bitset.cc
deleted file mode 100644
index 4849a6a..0000000
--- a/contrib/libstdc++/src/bitset.cc
+++ /dev/null
@@ -1,219 +0,0 @@
-// Bitset definitions -*- C++ -*-
-
-// Copyright (C) 2001, 2002 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
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-/*
- * Copyright (c) 1998
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#include <bitset>
-
-//
-// Definitions of non-inline functions from the single-word version of
-// _Base_bitset.
-//
-
-std::size_t
-std::_Base_bitset<1>::_M_do_find_first(std::size_t __not_found) const
-{
- _WordT __thisword = _M_w;
-
- if ( __thisword != static_cast<_WordT>(0) ) {
- // find byte within word
- for (std::size_t __j = 0; __j < sizeof(_WordT); __j++ ) {
- unsigned char __this_byte
- = static_cast<unsigned char>(__thisword & (~(unsigned char)0));
- if ( __this_byte )
- return __j * CHAR_BIT + _S_first_one[__this_byte];
-
- __thisword >>= CHAR_BIT;
- }
- }
- // not found, so return a value that indicates failure.
- return __not_found;
-}
-
-std::size_t
-std::_Base_bitset<1>::_M_do_find_next(std::size_t __prev,
- std::size_t __not_found) const
-{
- // make bound inclusive
- ++__prev;
-
- // check out of bounds
- if ( __prev >= _GLIBCPP_BITSET_BITS_PER_WORD )
- return __not_found;
-
- // search first (and only) word
- _WordT __thisword = _M_w;
-
- // mask off bits below bound
- __thisword &= (~static_cast<_WordT>(0)) << _S_whichbit(__prev);
-
- if ( __thisword != static_cast<_WordT>(0) ) {
- // find byte within word
- // get first byte into place
- __thisword >>= _S_whichbyte(__prev) * CHAR_BIT;
- for ( std::size_t __j = _S_whichbyte(__prev); __j < sizeof(_WordT); __j++ ) {
- unsigned char __this_byte
- = static_cast<unsigned char>(__thisword & (~(unsigned char)0));
- if ( __this_byte )
- return __j * CHAR_BIT + _S_first_one[__this_byte];
-
- __thisword >>= CHAR_BIT;
- }
- }
-
- // not found, so return a value that indicates failure.
- return __not_found;
-} // end _M_do_find_next
-
-
-// Lookup tables for find and count operations. In _S_bit_count, the value
-// *at* an index is the number of bits set *in* that index.
-unsigned char std::_S_bit_count[256] =
-{
- 0, /* 0 */ 1, /* 1 */ 1, /* 2 */ 2, /* 3 */ 1, /* 4 */
- 2, /* 5 */ 2, /* 6 */ 3, /* 7 */ 1, /* 8 */ 2, /* 9 */
- 2, /* 10 */ 3, /* 11 */ 2, /* 12 */ 3, /* 13 */ 3, /* 14 */
- 4, /* 15 */ 1, /* 16 */ 2, /* 17 */ 2, /* 18 */ 3, /* 19 */
- 2, /* 20 */ 3, /* 21 */ 3, /* 22 */ 4, /* 23 */ 2, /* 24 */
- 3, /* 25 */ 3, /* 26 */ 4, /* 27 */ 3, /* 28 */ 4, /* 29 */
- 4, /* 30 */ 5, /* 31 */ 1, /* 32 */ 2, /* 33 */ 2, /* 34 */
- 3, /* 35 */ 2, /* 36 */ 3, /* 37 */ 3, /* 38 */ 4, /* 39 */
- 2, /* 40 */ 3, /* 41 */ 3, /* 42 */ 4, /* 43 */ 3, /* 44 */
- 4, /* 45 */ 4, /* 46 */ 5, /* 47 */ 2, /* 48 */ 3, /* 49 */
- 3, /* 50 */ 4, /* 51 */ 3, /* 52 */ 4, /* 53 */ 4, /* 54 */
- 5, /* 55 */ 3, /* 56 */ 4, /* 57 */ 4, /* 58 */ 5, /* 59 */
- 4, /* 60 */ 5, /* 61 */ 5, /* 62 */ 6, /* 63 */ 1, /* 64 */
- 2, /* 65 */ 2, /* 66 */ 3, /* 67 */ 2, /* 68 */ 3, /* 69 */
- 3, /* 70 */ 4, /* 71 */ 2, /* 72 */ 3, /* 73 */ 3, /* 74 */
- 4, /* 75 */ 3, /* 76 */ 4, /* 77 */ 4, /* 78 */ 5, /* 79 */
- 2, /* 80 */ 3, /* 81 */ 3, /* 82 */ 4, /* 83 */ 3, /* 84 */
- 4, /* 85 */ 4, /* 86 */ 5, /* 87 */ 3, /* 88 */ 4, /* 89 */
- 4, /* 90 */ 5, /* 91 */ 4, /* 92 */ 5, /* 93 */ 5, /* 94 */
- 6, /* 95 */ 2, /* 96 */ 3, /* 97 */ 3, /* 98 */ 4, /* 99 */
- 3, /* 100 */ 4, /* 101 */ 4, /* 102 */ 5, /* 103 */ 3, /* 104 */
- 4, /* 105 */ 4, /* 106 */ 5, /* 107 */ 4, /* 108 */ 5, /* 109 */
- 5, /* 110 */ 6, /* 111 */ 3, /* 112 */ 4, /* 113 */ 4, /* 114 */
- 5, /* 115 */ 4, /* 116 */ 5, /* 117 */ 5, /* 118 */ 6, /* 119 */
- 4, /* 120 */ 5, /* 121 */ 5, /* 122 */ 6, /* 123 */ 5, /* 124 */
- 6, /* 125 */ 6, /* 126 */ 7, /* 127 */ 1, /* 128 */ 2, /* 129 */
- 2, /* 130 */ 3, /* 131 */ 2, /* 132 */ 3, /* 133 */ 3, /* 134 */
- 4, /* 135 */ 2, /* 136 */ 3, /* 137 */ 3, /* 138 */ 4, /* 139 */
- 3, /* 140 */ 4, /* 141 */ 4, /* 142 */ 5, /* 143 */ 2, /* 144 */
- 3, /* 145 */ 3, /* 146 */ 4, /* 147 */ 3, /* 148 */ 4, /* 149 */
- 4, /* 150 */ 5, /* 151 */ 3, /* 152 */ 4, /* 153 */ 4, /* 154 */
- 5, /* 155 */ 4, /* 156 */ 5, /* 157 */ 5, /* 158 */ 6, /* 159 */
- 2, /* 160 */ 3, /* 161 */ 3, /* 162 */ 4, /* 163 */ 3, /* 164 */
- 4, /* 165 */ 4, /* 166 */ 5, /* 167 */ 3, /* 168 */ 4, /* 169 */
- 4, /* 170 */ 5, /* 171 */ 4, /* 172 */ 5, /* 173 */ 5, /* 174 */
- 6, /* 175 */ 3, /* 176 */ 4, /* 177 */ 4, /* 178 */ 5, /* 179 */
- 4, /* 180 */ 5, /* 181 */ 5, /* 182 */ 6, /* 183 */ 4, /* 184 */
- 5, /* 185 */ 5, /* 186 */ 6, /* 187 */ 5, /* 188 */ 6, /* 189 */
- 6, /* 190 */ 7, /* 191 */ 2, /* 192 */ 3, /* 193 */ 3, /* 194 */
- 4, /* 195 */ 3, /* 196 */ 4, /* 197 */ 4, /* 198 */ 5, /* 199 */
- 3, /* 200 */ 4, /* 201 */ 4, /* 202 */ 5, /* 203 */ 4, /* 204 */
- 5, /* 205 */ 5, /* 206 */ 6, /* 207 */ 3, /* 208 */ 4, /* 209 */
- 4, /* 210 */ 5, /* 211 */ 4, /* 212 */ 5, /* 213 */ 5, /* 214 */
- 6, /* 215 */ 4, /* 216 */ 5, /* 217 */ 5, /* 218 */ 6, /* 219 */
- 5, /* 220 */ 6, /* 221 */ 6, /* 222 */ 7, /* 223 */ 3, /* 224 */
- 4, /* 225 */ 4, /* 226 */ 5, /* 227 */ 4, /* 228 */ 5, /* 229 */
- 5, /* 230 */ 6, /* 231 */ 4, /* 232 */ 5, /* 233 */ 5, /* 234 */
- 6, /* 235 */ 5, /* 236 */ 6, /* 237 */ 6, /* 238 */ 7, /* 239 */
- 4, /* 240 */ 5, /* 241 */ 5, /* 242 */ 6, /* 243 */ 5, /* 244 */
- 6, /* 245 */ 6, /* 246 */ 7, /* 247 */ 5, /* 248 */ 6, /* 249 */
- 6, /* 250 */ 7, /* 251 */ 6, /* 252 */ 7, /* 253 */ 7, /* 254 */
- 8 /* 255 */
-}; // end _S_bit_count
-
-unsigned char std::_S_first_one[256] =
-{
- 0, /* 0 */ 0, /* 1 */ 1, /* 2 */ 0, /* 3 */ 2, /* 4 */
- 0, /* 5 */ 1, /* 6 */ 0, /* 7 */ 3, /* 8 */ 0, /* 9 */
- 1, /* 10 */ 0, /* 11 */ 2, /* 12 */ 0, /* 13 */ 1, /* 14 */
- 0, /* 15 */ 4, /* 16 */ 0, /* 17 */ 1, /* 18 */ 0, /* 19 */
- 2, /* 20 */ 0, /* 21 */ 1, /* 22 */ 0, /* 23 */ 3, /* 24 */
- 0, /* 25 */ 1, /* 26 */ 0, /* 27 */ 2, /* 28 */ 0, /* 29 */
- 1, /* 30 */ 0, /* 31 */ 5, /* 32 */ 0, /* 33 */ 1, /* 34 */
- 0, /* 35 */ 2, /* 36 */ 0, /* 37 */ 1, /* 38 */ 0, /* 39 */
- 3, /* 40 */ 0, /* 41 */ 1, /* 42 */ 0, /* 43 */ 2, /* 44 */
- 0, /* 45 */ 1, /* 46 */ 0, /* 47 */ 4, /* 48 */ 0, /* 49 */
- 1, /* 50 */ 0, /* 51 */ 2, /* 52 */ 0, /* 53 */ 1, /* 54 */
- 0, /* 55 */ 3, /* 56 */ 0, /* 57 */ 1, /* 58 */ 0, /* 59 */
- 2, /* 60 */ 0, /* 61 */ 1, /* 62 */ 0, /* 63 */ 6, /* 64 */
- 0, /* 65 */ 1, /* 66 */ 0, /* 67 */ 2, /* 68 */ 0, /* 69 */
- 1, /* 70 */ 0, /* 71 */ 3, /* 72 */ 0, /* 73 */ 1, /* 74 */
- 0, /* 75 */ 2, /* 76 */ 0, /* 77 */ 1, /* 78 */ 0, /* 79 */
- 4, /* 80 */ 0, /* 81 */ 1, /* 82 */ 0, /* 83 */ 2, /* 84 */
- 0, /* 85 */ 1, /* 86 */ 0, /* 87 */ 3, /* 88 */ 0, /* 89 */
- 1, /* 90 */ 0, /* 91 */ 2, /* 92 */ 0, /* 93 */ 1, /* 94 */
- 0, /* 95 */ 5, /* 96 */ 0, /* 97 */ 1, /* 98 */ 0, /* 99 */
- 2, /* 100 */ 0, /* 101 */ 1, /* 102 */ 0, /* 103 */ 3, /* 104 */
- 0, /* 105 */ 1, /* 106 */ 0, /* 107 */ 2, /* 108 */ 0, /* 109 */
- 1, /* 110 */ 0, /* 111 */ 4, /* 112 */ 0, /* 113 */ 1, /* 114 */
- 0, /* 115 */ 2, /* 116 */ 0, /* 117 */ 1, /* 118 */ 0, /* 119 */
- 3, /* 120 */ 0, /* 121 */ 1, /* 122 */ 0, /* 123 */ 2, /* 124 */
- 0, /* 125 */ 1, /* 126 */ 0, /* 127 */ 7, /* 128 */ 0, /* 129 */
- 1, /* 130 */ 0, /* 131 */ 2, /* 132 */ 0, /* 133 */ 1, /* 134 */
- 0, /* 135 */ 3, /* 136 */ 0, /* 137 */ 1, /* 138 */ 0, /* 139 */
- 2, /* 140 */ 0, /* 141 */ 1, /* 142 */ 0, /* 143 */ 4, /* 144 */
- 0, /* 145 */ 1, /* 146 */ 0, /* 147 */ 2, /* 148 */ 0, /* 149 */
- 1, /* 150 */ 0, /* 151 */ 3, /* 152 */ 0, /* 153 */ 1, /* 154 */
- 0, /* 155 */ 2, /* 156 */ 0, /* 157 */ 1, /* 158 */ 0, /* 159 */
- 5, /* 160 */ 0, /* 161 */ 1, /* 162 */ 0, /* 163 */ 2, /* 164 */
- 0, /* 165 */ 1, /* 166 */ 0, /* 167 */ 3, /* 168 */ 0, /* 169 */
- 1, /* 170 */ 0, /* 171 */ 2, /* 172 */ 0, /* 173 */ 1, /* 174 */
- 0, /* 175 */ 4, /* 176 */ 0, /* 177 */ 1, /* 178 */ 0, /* 179 */
- 2, /* 180 */ 0, /* 181 */ 1, /* 182 */ 0, /* 183 */ 3, /* 184 */
- 0, /* 185 */ 1, /* 186 */ 0, /* 187 */ 2, /* 188 */ 0, /* 189 */
- 1, /* 190 */ 0, /* 191 */ 6, /* 192 */ 0, /* 193 */ 1, /* 194 */
- 0, /* 195 */ 2, /* 196 */ 0, /* 197 */ 1, /* 198 */ 0, /* 199 */
- 3, /* 200 */ 0, /* 201 */ 1, /* 202 */ 0, /* 203 */ 2, /* 204 */
- 0, /* 205 */ 1, /* 206 */ 0, /* 207 */ 4, /* 208 */ 0, /* 209 */
- 1, /* 210 */ 0, /* 211 */ 2, /* 212 */ 0, /* 213 */ 1, /* 214 */
- 0, /* 215 */ 3, /* 216 */ 0, /* 217 */ 1, /* 218 */ 0, /* 219 */
- 2, /* 220 */ 0, /* 221 */ 1, /* 222 */ 0, /* 223 */ 5, /* 224 */
- 0, /* 225 */ 1, /* 226 */ 0, /* 227 */ 2, /* 228 */ 0, /* 229 */
- 1, /* 230 */ 0, /* 231 */ 3, /* 232 */ 0, /* 233 */ 1, /* 234 */
- 0, /* 235 */ 2, /* 236 */ 0, /* 237 */ 1, /* 238 */ 0, /* 239 */
- 4, /* 240 */ 0, /* 241 */ 1, /* 242 */ 0, /* 243 */ 2, /* 244 */
- 0, /* 245 */ 1, /* 246 */ 0, /* 247 */ 3, /* 248 */ 0, /* 249 */
- 1, /* 250 */ 0, /* 251 */ 2, /* 252 */ 0, /* 253 */ 1, /* 254 */
- 0, /* 255 */
-}; // end _S_first_one
-
diff --git a/contrib/libstdc++/src/cmath.cc b/contrib/libstdc++/src/cmath.cc
deleted file mode 100644
index 7a7433a..0000000
--- a/contrib/libstdc++/src/cmath.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-// Explicit instantiation file for -*- C++ -*- math library.
-
-// Copyright (C) 2001 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-
-// These are explicit instantiations of the behind-the-scenes internal
-// helper functions used in the math routines of libstdc++.
-
-
-#include <cmath>
-
-namespace std
-{
- // This function is only declared/used in the cheaders=c_std case.
- template float
- __cmath_power<float>(float, unsigned int);
- template double
- __cmath_power<double>(double, unsigned int);
- template long double
- __cmath_power<long double>(long double, unsigned int);
-
-} // namespace std
diff --git a/contrib/libstdc++/src/fstream.cc b/contrib/libstdc++/src/fstream.cc
deleted file mode 100644
index 2a099d6..0000000
--- a/contrib/libstdc++/src/fstream.cc
+++ /dev/null
@@ -1,202 +0,0 @@
-// File based streams -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
-// 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-//
-// ISO C++ 14882: 27.8 File-based streams
-//
-
-#include <fstream>
-
-namespace std
-{
- template<>
- basic_filebuf<char>::int_type
- basic_filebuf<char>::_M_underflow_common(bool __bump)
- {
- int_type __ret = traits_type::eof();
- bool __testin = _M_mode & ios_base::in;
- bool __testout = _M_mode & ios_base::out;
-
- if (__testin)
- {
- // Check for pback madness, and if so swich back to the
- // normal buffers and jet outta here before expensive
- // fileops happen...
- if (_M_pback_init)
- _M_pback_destroy();
-
- if (_M_in_cur && _M_in_cur < _M_in_end)
- {
- __ret = traits_type::to_int_type(*_M_in_cur);
- if (__bump)
- _M_in_cur_move(1);
- return __ret;
- }
-
- // Sync internal and external buffers.
- // NB: __testget -> __testput as _M_buf_unified here.
- bool __testget = _M_in_cur && _M_in_beg < _M_in_cur;
- bool __testinit = _M_is_indeterminate();
- if (__testget)
- {
- if (__testout)
- _M_really_overflow();
- else if (_M_in_cur != _M_filepos)
- _M_file.seekoff(_M_in_cur - _M_filepos,
- ios_base::cur, ios_base::in);
- }
-
- if (__testinit || __testget)
- {
- streamsize __elen = 0;
- streamsize __ilen = 0;
- __elen = _M_file.xsgetn(reinterpret_cast<char*>(_M_in_beg),
- _M_buf_size);
- __ilen = __elen;
-
- if (0 < __ilen)
- {
- _M_set_determinate(__ilen);
- if (__testout)
- _M_out_cur = _M_in_cur;
- __ret = traits_type::to_int_type(*_M_in_cur);
- if (__bump)
- _M_in_cur_move(1);
- else if (_M_buf_size == 1)
- {
- // If we are synced with stdio, we have to unget the
- // character we just read so that the file pointer
- // doesn't move.
- _M_file.sys_ungetc(traits_type::to_int_type(*_M_in_cur));
- _M_set_indeterminate();
- }
- }
- }
- }
- _M_last_overflowed = false;
- return __ret;
- }
-
-#ifdef _GLIBCPP_USE_WCHAR_T
- template<>
- basic_filebuf<wchar_t>::int_type
- basic_filebuf<wchar_t>::_M_underflow_common(bool __bump)
- {
- int_type __ret = traits_type::eof();
- bool __testin = _M_mode & ios_base::in;
- bool __testout = _M_mode & ios_base::out;
-
- if (__testin)
- {
- // Check for pback madness, and if so swich back to the
- // normal buffers and jet outta here before expensive
- // fileops happen...
- if (_M_pback_init)
- _M_pback_destroy();
-
- if (_M_in_cur && _M_in_cur < _M_in_end)
- {
- __ret = traits_type::to_int_type(*_M_in_cur);
- if (__bump)
- _M_in_cur_move(1);
- return __ret;
- }
-
- // Sync internal and external buffers.
- // NB: __testget -> __testput as _M_buf_unified here.
- bool __testget = _M_in_cur && _M_in_beg < _M_in_cur;
- bool __testinit = _M_is_indeterminate();
- if (__testget)
- {
- if (__testout)
- _M_really_overflow();
- else if (_M_in_cur != _M_filepos)
- _M_file.seekoff(_M_in_cur - _M_filepos,
- ios_base::cur, ios_base::in);
- }
-
- if (__testinit || __testget)
- {
- const locale __loc = this->getloc();
- const __codecvt_type& __cvt = use_facet<__codecvt_type>(__loc);
-
- streamsize __elen = 0;
- streamsize __ilen = 0;
- if (__cvt.always_noconv())
- {
- __elen = _M_file.xsgetn(reinterpret_cast<char*>(_M_in_beg),
- _M_buf_size);
- __ilen = __elen;
- }
- else
- {
- char* __buf = static_cast<char*>(__builtin_alloca(_M_buf_size));
- __elen = _M_file.xsgetn(__buf, _M_buf_size);
-
- const char* __eend;
- char_type* __iend;
- codecvt_base::result __r;
- __r = __cvt.in(_M_state_cur, __buf,
- __buf + __elen, __eend, _M_in_beg,
- _M_in_beg + _M_buf_size, __iend);
- if (__r == codecvt_base::ok)
- __ilen = __iend - _M_in_beg;
- else
- {
- // Unwind.
- __ilen = 0;
- _M_file.seekoff(-__elen, ios_base::cur, ios_base::in);
- }
- }
-
- if (0 < __ilen)
- {
- _M_set_determinate(__ilen);
- if (__testout)
- _M_out_cur = _M_in_cur;
- __ret = traits_type::to_int_type(*_M_in_cur);
- if (__bump)
- _M_in_cur_move(1);
- else if (_M_buf_size == 1)
- {
- // If we are synced with stdio, we have to unget the
- // character we just read so that the file pointer
- // doesn't move.
- _M_file.sys_ungetc(traits_type::to_int_type(*_M_in_cur));
- _M_set_indeterminate();
- }
- }
- }
- }
- _M_last_overflowed = false;
- return __ret;
- }
-#endif
-} // namespace std
diff --git a/contrib/libstdc++/src/globals.cc b/contrib/libstdc++/src/globals.cc
deleted file mode 100644
index efbfdbe..0000000
--- a/contrib/libstdc++/src/globals.cc
+++ /dev/null
@@ -1,317 +0,0 @@
-// Copyright (C) 2001, 2002 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-#include "bits/c++config.h"
-#include "bits/gthr.h"
-#include <fstream>
-#include <istream>
-#include <ostream>
-#include <locale>
-#include <ext/stdio_filebuf.h>
-
-// On AIX, and perhaps other systems, library initialization order is
-// not guaranteed. For example, the static initializers for the main
-// program might run before the static initializers for this library.
-// That means that we cannot rely on static initialization in the
-// library; there is no guarantee that things will get initialized in
-// time. This file contains definitions of all global variables that
-// require initialization as arrays of characters.
-
-// Because <iostream> declares the standard streams to be [io]stream
-// types instead of say [io]fstream types, it is also necessary to
-// allocate the actual file buffers in this file.
-namespace __gnu_cxx
-{
- using namespace std;
-
- typedef char fake_facet_name[sizeof(char*)]
- __attribute__ ((aligned(__alignof__(char*))));
- fake_facet_name facet_name[6 + _GLIBCPP_NUM_CATEGORIES];
-
- typedef char fake_locale_Impl[sizeof(locale::_Impl)]
- __attribute__ ((aligned(__alignof__(locale::_Impl))));
- fake_locale_Impl c_locale_impl;
-
-
- // NB: The asm directives renames these non-exported, namespace
- // __gnu_cxx symbols into the mistakenly exported, namespace std
- // symbols in GLIBCPP_3.2.
- // The rename syntax is
- // asm (".symver currentname,oldname@@GLIBCPP_3.2")
- // At the same time, these new __gnu_cxx symbols are not exported.
- // In the future, GLIBCXX_ABI > 5 should remove all uses of
- // _GLIBCPP_ASM_SYMVER in this file.
- typedef char fake_locale[sizeof(locale)]
- __attribute__ ((aligned(__alignof__(locale))));
- fake_locale c_locale;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx8c_localeE, _ZSt8c_locale, GLIBCPP_3.2)
-
- // GLIBCXX_ABI > 5 will not need this symbol at all.
- // It's here just as a placeholder, as the size of this exported
- // object changed. The new symbol is not exported.
- const int o = sizeof(locale::_Impl) - sizeof(char*[_GLIBCPP_NUM_CATEGORIES]);
- typedef char fake_locale_Impl_compat[o]
- __attribute__ ((aligned(__alignof__(o))));
- fake_locale_Impl_compat c_locale_impl_compat;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx20c_locale_impl_compatE, _ZSt13c_locale_impl, GLIBCPP_3.2)
-
- typedef char fake_facet_vec[sizeof(locale::facet*)]
- __attribute__ ((aligned(__alignof__(locale::facet*))));
- fake_facet_vec facet_vec[_GLIBCPP_NUM_FACETS];
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9facet_vecE, _ZSt9facet_vec, GLIBCPP_3.2)
-
- // To support combined facets and caches in facet array
- typedef char fake_facet_cache_vec[sizeof(locale::facet*)]
- __attribute__ ((aligned(__alignof__(locale::facet*))));
- fake_facet_cache_vec facet_cache_vec[2 * _GLIBCPP_NUM_FACETS];
-
- typedef char fake_ctype_c[sizeof(std::ctype<char>)]
- __attribute__ ((aligned(__alignof__(std::ctype<char>))));
- fake_ctype_c ctype_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx7ctype_cE, _ZSt7ctype_c, GLIBCPP_3.2)
-
- typedef char fake_collate_c[sizeof(std::collate<char>)]
- __attribute__ ((aligned(__alignof__(std::collate<char>))));
- fake_collate_c collate_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9collate_cE, _ZSt9collate_c, GLIBCPP_3.2)
-
- typedef char fake_numpunct_c[sizeof(numpunct<char>)]
- __attribute__ ((aligned(__alignof__(numpunct<char>))));
- fake_numpunct_c numpunct_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10numpunct_cE, _ZSt10numpunct_c, GLIBCPP_3.2)
-
- typedef char fake_num_get_c[sizeof(num_get<char>)]
- __attribute__ ((aligned(__alignof__(num_get<char>))));
- fake_num_get_c num_get_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9num_get_cE, _ZSt9num_get_c, GLIBCPP_3.2)
-
- typedef char fake_num_put_c[sizeof(num_put<char>)]
- __attribute__ ((aligned(__alignof__(num_put<char>))));
- fake_num_put_c num_put_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9num_put_cE, _ZSt9num_put_c, GLIBCPP_3.2)
-
- typedef char fake_codecvt_c[sizeof(codecvt<char, char, mbstate_t>)]
- __attribute__ ((aligned(__alignof__(codecvt<char, char, mbstate_t>))));
- fake_codecvt_c codecvt_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9codecvt_cE, _ZSt9codecvt_c, GLIBCPP_3.2)
-
- typedef char fake_moneypunct_c[sizeof(moneypunct<char, true>)]
- __attribute__ ((aligned(__alignof__(moneypunct<char, true>))));
- fake_moneypunct_c moneypunct_tc;
- fake_moneypunct_c moneypunct_fc;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx13moneypunct_tcE,\
- _ZSt13moneypunct_tc, GLIBCPP_3.2)
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx13moneypunct_fcE,\
- _ZSt13moneypunct_fc, GLIBCPP_3.2)
-
- typedef char fake_money_get_c[sizeof(money_get<char>)]
- __attribute__ ((aligned(__alignof__(money_get<char>))));
- fake_money_get_c money_get_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx11money_get_cE, _ZSt11money_get_c, GLIBCPP_3.2)
-
- typedef char fake_money_put_c[sizeof(money_put<char>)]
- __attribute__ ((aligned(__alignof__(money_put<char>))));
- fake_money_put_c money_put_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx11money_put_cE, _ZSt11money_put_c, GLIBCPP_3.2)
-
- typedef char fake_timepunct_c[sizeof(__timepunct<char>)]
- __attribute__ ((aligned(__alignof__(__timepunct<char>))));
- fake_timepunct_c timepunct_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx11timepunct_cE, _ZSt11timepunct_c, GLIBCPP_3.2)
-
- typedef char fake_time_get_c[sizeof(time_get<char>)]
- __attribute__ ((aligned(__alignof__(time_get<char>))));
- fake_time_get_c time_get_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10time_get_cE, _ZSt10time_get_c, GLIBCPP_3.2)
-
- typedef char fake_time_put_c[sizeof(time_put<char>)]
- __attribute__ ((aligned(__alignof__(time_put<char>))));
- fake_time_put_c time_put_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10time_put_cE, _ZSt10time_put_c, GLIBCPP_3.2)
-
- typedef char fake_messages_c[sizeof(messages<char>)]
- __attribute__ ((aligned(__alignof__(messages<char>))));
- fake_messages_c messages_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10messages_cE, _ZSt10messages_c, GLIBCPP_3.2)
-
-#ifdef _GLIBCPP_USE_WCHAR_T
- typedef char fake_wtype_w[sizeof(std::ctype<wchar_t>)]
- __attribute__ ((aligned(__alignof__(std::ctype<wchar_t>))));
- fake_wtype_w ctype_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx7ctype_wE, _ZSt7ctype_w, GLIBCPP_3.2)
-
- typedef char fake_wollate_w[sizeof(std::collate<wchar_t>)]
- __attribute__ ((aligned(__alignof__(std::collate<wchar_t>))));
- fake_wollate_w collate_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9collate_wE, _ZSt9collate_w, GLIBCPP_3.2)
-
- typedef char fake_numpunct_w[sizeof(numpunct<wchar_t>)]
- __attribute__ ((aligned(__alignof__(numpunct<wchar_t>))));
- fake_numpunct_w numpunct_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10numpunct_wE, _ZSt10numpunct_w, GLIBCPP_3.2)
-
- typedef char fake_num_get_w[sizeof(num_get<wchar_t>)]
- __attribute__ ((aligned(__alignof__(num_get<wchar_t>))));
- fake_num_get_w num_get_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9num_get_wE, _ZSt9num_get_w, GLIBCPP_3.2)
-
- typedef char fake_num_put_w[sizeof(num_put<wchar_t>)]
- __attribute__ ((aligned(__alignof__(num_put<wchar_t>))));
- fake_num_put_w num_put_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9num_put_wE, _ZSt9num_put_w, GLIBCPP_3.2)
-
- typedef char fake_wodecvt_w[sizeof(codecvt<wchar_t, char, mbstate_t>)]
- __attribute__ ((aligned(__alignof__(codecvt<wchar_t, char, mbstate_t>))));
- fake_wodecvt_w codecvt_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9codecvt_wE, _ZSt9codecvt_w, GLIBCPP_3.2)
-
- typedef char fake_moneypunct_w[sizeof(moneypunct<wchar_t, true>)]
- __attribute__ ((aligned(__alignof__(moneypunct<wchar_t, true>))));
- fake_moneypunct_w moneypunct_tw;
- fake_moneypunct_w moneypunct_fw;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx13moneypunct_twE,\
- _ZSt13moneypunct_tw, GLIBCPP_3.2)
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx13moneypunct_fwE,\
- _ZSt13moneypunct_fw, GLIBCPP_3.2)
-
- typedef char fake_money_get_w[sizeof(money_get<wchar_t>)]
- __attribute__ ((aligned(__alignof__(money_get<wchar_t>))));
- fake_money_get_w money_get_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx11money_get_wE, _ZSt11money_get_w, GLIBCPP_3.2)
-
- typedef char fake_money_put_w[sizeof(money_put<wchar_t>)]
- __attribute__ ((aligned(__alignof__(money_put<wchar_t>))));
- fake_money_put_w money_put_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx11money_put_wE, _ZSt11money_put_w, GLIBCPP_3.2)
-
- typedef char fake_timepunct_w[sizeof(__timepunct<wchar_t>)]
- __attribute__ ((aligned(__alignof__(__timepunct<wchar_t>))));
- fake_timepunct_w timepunct_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx11timepunct_wE, _ZSt11timepunct_w, GLIBCPP_3.2)
-
- typedef char fake_time_get_w[sizeof(time_get<wchar_t>)]
- __attribute__ ((aligned(__alignof__(time_get<wchar_t>))));
- fake_time_get_w time_get_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10time_get_wE, _ZSt10time_get_w, GLIBCPP_3.2)
-
- typedef char fake_time_put_w[sizeof(time_put<wchar_t>)]
- __attribute__ ((aligned(__alignof__(time_put<wchar_t>))));
- fake_time_put_w time_put_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10time_put_wE, _ZSt10time_put_w, GLIBCPP_3.2)
-
- typedef char fake_messages_w[sizeof(messages<wchar_t>)]
- __attribute__ ((aligned(__alignof__(messages<wchar_t>))));
- fake_messages_w messages_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10messages_wE, _ZSt10messages_w, GLIBCPP_3.2)
-#endif
-
- // Storage for static C locale caches
- typedef char fake_locale_cache_np_c[sizeof(std::__locale_cache<numpunct<char> >)]
- __attribute__ ((aligned(__alignof__(std::__locale_cache<numpunct<char> >))));
- fake_locale_cache_np_c locale_cache_np_c;
-
-#ifdef _GLIBCPP_USE_WCHAR_T
- typedef char fake_locale_cache_np_w[sizeof(std::__locale_cache<numpunct<wchar_t> >)]
- __attribute__ ((aligned(__alignof__(std::__locale_cache<numpunct<wchar_t> >))));
- fake_locale_cache_np_w locale_cache_np_w;
-#endif
-
- typedef char fake_filebuf[sizeof(stdio_filebuf<char>)]
- __attribute__ ((aligned(__alignof__(stdio_filebuf<char>))));
- fake_filebuf buf_cout;
- fake_filebuf buf_cin;
- fake_filebuf buf_cerr;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx8buf_coutE, _ZSt8buf_cout, GLIBCPP_3.2)
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx7buf_cinE, _ZSt7buf_cin, GLIBCPP_3.2)
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx8buf_cerrE, _ZSt8buf_cerr, GLIBCPP_3.2)
-
-#ifdef _GLIBCPP_USE_WCHAR_T
- typedef char fake_wfilebuf[sizeof(stdio_filebuf<wchar_t>)]
- __attribute__ ((aligned(__alignof__(stdio_filebuf<wchar_t>))));
- fake_wfilebuf buf_wcout;
- fake_wfilebuf buf_wcin;
- fake_wfilebuf buf_wcerr;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9buf_wcoutE, _ZSt9buf_wcout, GLIBCPP_3.2)
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx8buf_wcinE, _ZSt8buf_wcin, GLIBCPP_3.2)
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9buf_wcerrE, _ZSt9buf_wcerr, GLIBCPP_3.2)
-#endif
-
- // Globals for once-only runtime initialization of mutex objects. This
- // allows static initialization of these objects on systems that need a
- // function call to initialize a mutex. For example, see stl_threads.h.
-#ifdef __GTHREAD_MUTEX_INIT
- // Need to provide explicit instantiations of static data for
- // systems with broken weak linkage support.
- template __gthread_mutex_t _Swap_lock_struct<0>::_S_swap_lock;
-#elif defined(__GTHREAD_MUTEX_INIT_FUNCTION)
- __gthread_once_t _GLIBCPP_once = __GTHREAD_ONCE_INIT;
- __gthread_mutex_t _GLIBCPP_mutex;
- __gthread_mutex_t *_GLIBCPP_mutex_address;
-
- // Once-only initializer function for _GLIBCPP_mutex.
- void
- _GLIBCPP_mutex_init ()
- { __GTHREAD_MUTEX_INIT_FUNCTION (&_GLIBCPP_mutex); }
-
- // Once-only initializer function for _GLIBCPP_mutex_address.
- void
- _GLIBCPP_mutex_address_init ()
- { __GTHREAD_MUTEX_INIT_FUNCTION (_GLIBCPP_mutex_address); }
-#endif
-
- // GLIBCXX_ABI.
- struct __compat
- {
- static const char _S_atoms[];
- };
- const char __compat::_S_atoms[] = "0123456789eEabcdfABCDF";
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx8__compat8_S_atomsE, _ZNSt10__num_base8_S_atomsE, GLIBCPP_3.2)
-} // namespace __gnu_cxx
-
-namespace std
-{
- // Standard stream objects.
- typedef char fake_istream[sizeof(istream)]
- __attribute__ ((aligned(__alignof__(istream))));
- typedef char fake_ostream[sizeof(ostream)]
- __attribute__ ((aligned(__alignof__(ostream))));
- fake_istream cin;
- fake_ostream cout;
- fake_ostream cerr;
- fake_ostream clog;
-
-#ifdef _GLIBCPP_USE_WCHAR_T
- typedef char fake_wistream[sizeof(wistream)]
- __attribute__ ((aligned(__alignof__(wistream))));
- typedef char fake_wostream[sizeof(wostream)]
- __attribute__ ((aligned(__alignof__(wostream))));
- fake_wistream wcin;
- fake_wostream wcout;
- fake_wostream wcerr;
- fake_wostream wclog;
-#endif
-} // namespace std
diff --git a/contrib/libstdc++/src/stl-inst.cc b/contrib/libstdc++/src/stl-inst.cc
deleted file mode 100644
index d80a718..0000000
--- a/contrib/libstdc++/src/stl-inst.cc
+++ /dev/null
@@ -1,43 +0,0 @@
-// Explicit instantiation file.
-
-// Copyright (C) 1999, 2001, 2002 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-//
-// ISO C++ 14882:
-//
-
-#include <bits/c++config.h>
-#include <memory>
-
-namespace std
-{
- template class allocator<char>;
- template class allocator<wchar_t>;
-
- template class __default_alloc_template<true, 0>;
-} // namespace std
diff --git a/contrib/libstdc++/src/vterminate.cc b/contrib/libstdc++/src/vterminate.cc
deleted file mode 100644
index 26e09d1..0000000
--- a/contrib/libstdc++/src/vterminate.cc
+++ /dev/null
@@ -1,82 +0,0 @@
-// Verbose terminate_handler -*- C++ -*-
-
-// Copyright (C) 2001, 2002 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
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-#include <cstdlib>
-#include <cstdio>
-#include <exception>
-#include <exception_defines.h>
-#include <cxxabi.h>
-
-using namespace std;
-using namespace abi;
-
-namespace __gnu_cxx
-{
- /* A replacement for the standard terminate_handler which prints
- more information about the terminating exception (if any) on
- stderr. */
- void __verbose_terminate_handler()
- {
- // Make sure there was an exception; terminate is also called for an
- // attempt to rethrow when there is no suitable exception.
- type_info *t = __cxa_current_exception_type();
- if (t)
- {
- char const *name = t->name();
- // Note that "name" is the mangled name.
-
- {
- int status = -1;
- char *dem = 0;
-
- // Disabled until __cxa_demangle gets the runtime GPL exception.
- dem = __cxa_demangle(name, 0, 0, &status);
-
- printf("terminate called after throwing a `%s'\n",
- status == 0 ? dem : name);
-
- if (status == 0)
- free(dem);
- }
-
- // If the exception is derived from std::exception, we can give more
- // information.
- try { __throw_exception_again; }
-#ifdef __EXCEPTIONS
- catch (exception &exc)
- { fprintf(stderr, " what(): %s\n", exc.what()); }
-#endif
- catch (...) { }
- }
- else
- fprintf(stderr, "terminate called without an active exception\n");
-
- abort();
- }
-} // namespace __gnu_cxx
diff --git a/contrib/libstdc++/sstream b/contrib/libstdc++/sstream
deleted file mode 100644
index 45393b1..0000000
--- a/contrib/libstdc++/sstream
+++ /dev/null
@@ -1,343 +0,0 @@
-/* This is part of libio/iostream, providing -*- C++ -*- input/output.
-Copyright (C) 2000 Free Software Foundation
-
-This file is part of the GNU IO 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 2, 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 COPYING. If not, write to the Free
-Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-As a special exception, if you link this library with files
-compiled with a GNU compiler to produce an executable, this does not cause
-the resulting executable to be covered by the GNU General Public License.
-This exception does not however invalidate any other reasons why
-the executable file might be covered by the GNU General Public License. */
-
-/* Written by Magnus Fromreide (magfr@lysator.liu.se). */
-/* seekoff and ideas for overflow is largely borrowed from libstdc++-v3 */
-
-#ifndef __SSTREAM__
-#define __SSTREAM__
-
-#include <iostream.h>
-#include <streambuf.h>
-#include <string>
-
-namespace std
-{
- class stringbuf : public streambuf
- {
- public:
- typedef char char_type;
- typedef int int_type;
- typedef streampos pos_type;
- typedef streamoff off_type;
-
- explicit
- stringbuf(int which=ios::in|ios::out)
- : streambuf(), mode(static_cast<ios::open_mode>(which)),
- stream(NULL), stream_len(0)
- {
- stringbuf_init();
- }
-
- explicit
- stringbuf(const string &str, int which=ios::in|ios::out)
- : streambuf(), mode(static_cast<ios::open_mode>(which)),
- stream(NULL), stream_len(0)
- {
- if (mode & (ios::in|ios::out))
- {
- stream_len = str.size();
- stream = new char_type[stream_len];
- str.copy(stream, stream_len);
- }
- stringbuf_init();
- }
-
- virtual
- ~stringbuf()
- {
- delete[] stream;
- }
-
- string
- str() const
- {
- if (pbase() != 0)
- return string(stream, pptr()-pbase());
- else
- return string();
- }
-
- void
- str(const string& str)
- {
- delete[] stream;
- stream_len = str.size();
- stream = new char_type[stream_len];
- str.copy(stream, stream_len);
- stringbuf_init();
- }
-
- protected:
- // The buffer is already in gptr, so if it ends then it is out of data.
- virtual int
- underflow()
- {
- return EOF;
- }
-
- virtual int
- overflow(int c = EOF)
- {
- int res;
- if (mode & ios::out)
- {
- if (c != EOF)
- {
- streamsize old_stream_len = stream_len;
- stream_len += 1;
- char_type* new_stream = new char_type[stream_len];
- memcpy(new_stream, stream, old_stream_len);
- delete[] stream;
- stream = new_stream;
- stringbuf_sync(gptr()-eback(), pptr()-pbase());
- sputc(c);
- res = c;
- }
- else
- res = EOF;
- }
- else
- res = 0;
- return res;
- }
-
- virtual streambuf*
- setbuf(char_type* s, streamsize n)
- {
- if (n != 0)
- {
- delete[] stream;
- stream = new char_type[n];
- memcpy(stream, s, n);
- stream_len = n;
- stringbuf_sync(0, 0);
- }
- return this;
- }
-
- virtual pos_type
- seekoff(off_type off, ios::seek_dir way, int which = ios::in | ios::out)
- {
- pos_type ret = pos_type(off_type(-1));
- bool testin = which & ios::in && mode & ios::in;
- bool testout = which & ios::out && mode & ios::out;
- bool testboth = testin && testout && way != ios::cur;
-
- if (stream_len && ((testin != testout) || testboth))
- {
- char_type* beg = stream;
- char_type* curi = NULL;
- char_type* curo = NULL;
- char_type* endi = NULL;
- char_type* endo = NULL;
-
- if (testin)
- {
- curi = gptr();
- endi = egptr();
- }
- if (testout)
- {
- curo = pptr();
- endo = epptr();
- }
-
- off_type newoffi = 0;
- off_type newoffo = 0;
- if (way == ios::beg)
- {
- newoffi = beg - curi;
- newoffo = beg - curo;
- }
- else if (way == ios::end)
- {
- newoffi = endi - curi;
- newoffo = endo - curo;
- }
-
- if (testin && newoffi + off + curi - beg >= 0 &&
- endi - beg >= newoffi + off + curi - beg)
- {
- gbump(newoffi + off);
- ret = pos_type(newoffi + off + curi);
- }
- if (testout && newoffo + off + curo - beg >= 0 &&
- endo - beg >= newoffo + off + curo - beg)
- {
- pbump(newoffo + off);
- ret = pos_type(newoffo + off + curo);
- }
- }
- return ret;
- }
-
- virtual pos_type
- seekpos(pos_type sp, int which = ios::in | ios::out)
- {
- pos_type ret = seekoff(sp, ios::beg, which);
- return ret;
- }
-
- private:
- void
- stringbuf_sync(streamsize i, streamsize o)
- {
- if (mode & ios::in)
- setg(stream, stream + i, stream + stream_len);
- if (mode & ios::out)
- {
- setp(stream, stream + stream_len);
- pbump(o);
- }
- }
- void
- stringbuf_init()
- {
- if (mode & ios::ate)
- stringbuf_sync(0, stream_len);
- else
- stringbuf_sync(0, 0);
- }
-
- private:
- ios::open_mode mode;
- char_type* stream;
- streamsize stream_len;
- };
-
- class istringstream : public istream {
- public:
- typedef char char_type;
- typedef int int_type;
- typedef streampos pos_type;
- typedef streamoff off_type;
-
- explicit
- istringstream(int which=ios::in)
- : istream(&sb), sb(which | ios::in)
- { }
-
- explicit
- istringstream(const string& str, int which=ios::in)
- : istream(&sb), sb(str, which | ios::in)
- { }
-
- stringbuf*
- rdbuf() const
- {
- return const_cast<stringbuf*>(&sb);
- }
-
- string
- str() const
- {
- return rdbuf()->str();
- }
- void
- str(const string& s)
- {
- rdbuf()->str(s);
- }
- private:
- stringbuf sb;
- };
-
- class ostringstream : public ostream {
- public:
- typedef char char_type;
- typedef int int_type;
- typedef streampos pos_type;
- typedef streamoff off_type;
-
- explicit
- ostringstream(int which=ios::out)
- : ostream(&sb), sb(which | ios::out)
- { }
-
- explicit
- ostringstream(const string& str, int which=ios::out)
- : ostream(&sb), sb(str, which | ios::out)
- { }
-
- stringbuf*
- rdbuf() const
- {
- return const_cast<stringbuf*>(&sb);
- }
-
- string
- str() const
- {
- return rdbuf()->str();
- }
-
- void str(const string& s)
- {
- rdbuf()->str(s);
- }
- private:
- stringbuf sb;
- };
-
- class stringstream : public iostream {
- public:
- typedef char char_type;
- typedef int int_type;
- typedef streampos pos_type;
- typedef streamoff off_type;
-
- explicit
- stringstream(int which=ios::out|ios::in)
- : iostream(&sb), sb(which)
- { }
-
- explicit
- stringstream(const string& str, int which=ios::out|ios::in)
- : iostream(&sb), sb(str, which)
- { }
-
- stringbuf*
- rdbuf() const
- {
- return const_cast<stringbuf*>(&sb);
- }
-
- string
- str() const
- {
- return rdbuf()->str();
- }
-
- void
- str(const string& s)
- {
- rdbuf()->str(s);
- }
- private:
- stringbuf sb;
- };
-};
-
-#endif /* not __STRSTREAM__ */
diff --git a/contrib/libstdc++/std/bastring.cc b/contrib/libstdc++/std/bastring.cc
deleted file mode 100644
index f86f6d3..0000000
--- a/contrib/libstdc++/std/bastring.cc
+++ /dev/null
@@ -1,524 +0,0 @@
-// Member templates for the -*- C++ -*- string classes.
-// Copyright (C) 1994, 1999 Free Software Foundation
-
-// This file is part of the GNU ANSI 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-// As a special exception, if you link this library with files
-// compiled with a GNU compiler to produce an executable, this does not cause
-// the resulting executable to be covered by the GNU General Public License.
-// This exception does not however invalidate any other reasons why
-// the executable file might be covered by the GNU General Public License.
-
-// Written by Jason Merrill based upon the specification by Takanori Adachi
-// in ANSI X3J16/94-0013R2.
-
-extern "C++" {
-template <class charT, class traits, class Allocator>
-inline void * basic_string <charT, traits, Allocator>::Rep::
-operator new (size_t s, size_t extra)
-{
- return Allocator::allocate(s + extra * sizeof (charT));
-}
-
-template <class charT, class traits, class Allocator>
-inline void basic_string <charT, traits, Allocator>::Rep::
-operator delete (void * ptr)
-{
- Allocator::deallocate(ptr, sizeof(Rep) +
- reinterpret_cast<Rep *>(ptr)->res *
- sizeof (charT));
-}
-
-template <class charT, class traits, class Allocator>
-inline size_t basic_string <charT, traits, Allocator>::Rep::
-frob_size (size_t s)
-{
- size_t i = 16;
- while (i < s) i *= 2;
- return i;
-}
-
-template <class charT, class traits, class Allocator>
-inline basic_string <charT, traits, Allocator>::Rep *
-basic_string <charT, traits, Allocator>::Rep::
-create (size_t extra)
-{
- extra = frob_size (extra + 1);
- Rep *p = new (extra) Rep;
- p->res = extra;
- p->ref = 1;
- p->selfish = false;
- return p;
-}
-
-template <class charT, class traits, class Allocator>
-charT * basic_string <charT, traits, Allocator>::Rep::
-clone ()
-{
- Rep *p = Rep::create (len);
- p->copy (0, data (), len);
- p->len = len;
- return p->data ();
-}
-
-template <class charT, class traits, class Allocator>
-inline bool basic_string <charT, traits, Allocator>::Rep::
-excess_slop (size_t s, size_t r)
-{
- return 2 * (s <= 16 ? 16 : s) < r;
-}
-
-template <class charT, class traits, class Allocator>
-inline bool basic_string <charT, traits, Allocator>::
-check_realloc (basic_string::size_type s) const
-{
- s += sizeof (charT);
- rep ()->selfish = false;
- return (rep ()->ref > 1
- || s > capacity ()
- || Rep::excess_slop (s, capacity ()));
-}
-
-template <class charT, class traits, class Allocator>
-void basic_string <charT, traits, Allocator>::
-alloc (basic_string::size_type __size, bool __save)
-{
- if (! check_realloc (__size))
- return;
-
- Rep *p = Rep::create (__size);
-
- if (__save)
- {
- p->copy (0, data (), length ());
- p->len = length ();
- }
- else
- p->len = 0;
-
- repup (p);
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>&
-basic_string <charT, traits, Allocator>::
-replace (size_type pos1, size_type n1,
- const basic_string& str, size_type pos2, size_type n2)
-{
- const size_t len2 = str.length ();
-
- if (pos1 == 0 && n1 >= length () && pos2 == 0 && n2 >= len2)
- return operator= (str);
-
- OUTOFRANGE (pos2 > len2);
-
- if (n2 > len2 - pos2)
- n2 = len2 - pos2;
-
- return replace (pos1, n1, str.data () + pos2, n2);
-}
-
-template <class charT, class traits, class Allocator>
-inline void basic_string <charT, traits, Allocator>::Rep::
-copy (size_t pos, const charT *s, size_t n)
-{
- if (n)
- traits::copy (data () + pos, s, n);
-}
-
-template <class charT, class traits, class Allocator>
-inline void basic_string <charT, traits, Allocator>::Rep::
-move (size_t pos, const charT *s, size_t n)
-{
- if (n)
- traits::move (data () + pos, s, n);
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>&
-basic_string <charT, traits, Allocator>::
-replace (size_type pos, size_type n1, const charT* s, size_type n2)
-{
- const size_type len = length ();
- OUTOFRANGE (pos > len);
- if (n1 > len - pos)
- n1 = len - pos;
- LENGTHERROR (len - n1 > max_size () - n2);
- size_t newlen = len - n1 + n2;
-
- if (check_realloc (newlen))
- {
- Rep *p = Rep::create (newlen);
- p->copy (0, data (), pos);
- p->copy (pos + n2, data () + pos + n1, len - (pos + n1));
- p->copy (pos, s, n2);
- repup (p);
- }
- else
- {
- rep ()->move (pos + n2, data () + pos + n1, len - (pos + n1));
- rep ()->copy (pos, s, n2);
- }
- rep ()->len = newlen;
-
- return *this;
-}
-
-template <class charT, class traits, class Allocator>
-inline void basic_string <charT, traits, Allocator>::Rep::
-set (size_t pos, const charT c, size_t n)
-{
- traits::set (data () + pos, c, n);
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>& basic_string <charT, traits, Allocator>::
-replace (size_type pos, size_type n1, size_type n2, charT c)
-{
- const size_t len = length ();
- OUTOFRANGE (pos > len);
- if (n1 > len - pos)
- n1 = len - pos;
- LENGTHERROR (len - n1 > max_size () - n2);
- size_t newlen = len - n1 + n2;
-
- if (check_realloc (newlen))
- {
- Rep *p = Rep::create (newlen);
- p->copy (0, data (), pos);
- p->copy (pos + n2, data () + pos + n1, len - (pos + n1));
- p->set (pos, c, n2);
- repup (p);
- }
- else
- {
- rep ()->move (pos + n2, data () + pos + n1, len - (pos + n1));
- rep ()->set (pos, c, n2);
- }
- rep ()->len = newlen;
-
- return *this;
-}
-
-template <class charT, class traits, class Allocator>
-void basic_string <charT, traits, Allocator>::
-resize (size_type n, charT c)
-{
- LENGTHERROR (n > max_size ());
-
- if (n > length ())
- append (n - length (), c);
- else
- erase (n);
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>::size_type
-basic_string <charT, traits, Allocator>::
-copy (charT* s, size_type n, size_type pos) const
-{
- OUTOFRANGE (pos > length ());
-
- if (n > length () - pos)
- n = length () - pos;
-
- traits::copy (s, data () + pos, n);
- return n;
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>::size_type
-basic_string <charT, traits, Allocator>::
-find (const charT* s, size_type pos, size_type n) const
-{
- size_t xpos = pos;
- for (; xpos + n <= length (); ++xpos)
- if (traits::eq (data () [xpos], *s)
- && traits::compare (data () + xpos, s, n) == 0)
- return xpos;
- return npos;
-}
-
-template <class charT, class traits, class Allocator>
-inline basic_string <charT, traits, Allocator>::size_type
-basic_string <charT, traits, Allocator>::
-_find (const charT* ptr, charT c, size_type xpos, size_type len)
-{
- for (; xpos < len; ++xpos)
- if (traits::eq (ptr [xpos], c))
- return xpos;
- return npos;
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>::size_type
-basic_string <charT, traits, Allocator>::
-find (charT c, size_type pos) const
-{
- return _find (data (), c, pos, length ());
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>::size_type
-basic_string <charT, traits, Allocator>::
-rfind (const charT* s, size_type pos, size_type n) const
-{
- if (n > length ())
- return npos;
-
- size_t xpos = length () - n;
- if (xpos > pos)
- xpos = pos;
-
- for (++xpos; xpos-- > 0; )
- if (traits::eq (data () [xpos], *s)
- && traits::compare (data () + xpos, s, n) == 0)
- return xpos;
- return npos;
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>::size_type
-basic_string <charT, traits, Allocator>::
-rfind (charT c, size_type pos) const
-{
- if (1 > length ())
- return npos;
-
- size_t xpos = length () - 1;
- if (xpos > pos)
- xpos = pos;
-
- for (++xpos; xpos-- > 0; )
- if (traits::eq (data () [xpos], c))
- return xpos;
- return npos;
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>::size_type
-basic_string <charT, traits, Allocator>::
-find_first_of (const charT* s, size_type pos, size_type n) const
-{
- size_t xpos = pos;
- for (; xpos < length (); ++xpos)
- if (_find (s, data () [xpos], 0, n) != npos)
- return xpos;
- return npos;
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>::size_type
-basic_string <charT, traits, Allocator>::
-find_last_of (const charT* s, size_type pos, size_type n) const
-{
- if (length() == 0)
- return npos;
- size_t xpos = length () - 1;
- if (xpos > pos)
- xpos = pos;
- for (++xpos; xpos-- > 0;)
- if (_find (s, data () [xpos], 0, n) != npos)
- return xpos;
- return npos;
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>::size_type
-basic_string <charT, traits, Allocator>::
-find_first_not_of (const charT* s, size_type pos, size_type n) const
-{
- size_t xpos = pos;
- for (; xpos < length (); ++xpos)
- if (_find (s, data () [xpos], 0, n) == npos)
- return xpos;
- return npos;
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>::size_type
-basic_string <charT, traits, Allocator>::
-find_first_not_of (charT c, size_type pos) const
-{
- size_t xpos = pos;
- for (; xpos < length (); ++xpos)
- if (traits::ne (data () [xpos], c))
- return xpos;
- return npos;
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>::size_type
-basic_string <charT, traits, Allocator>::
-find_last_not_of (const charT* s, size_type pos, size_type n) const
-{
- if (length() == 0)
- return npos;
- size_t xpos = length () - 1;
- if (xpos > pos)
- xpos = pos;
- for (++xpos; xpos-- > 0;)
- if (_find (s, data () [xpos], 0, n) == npos)
- return xpos;
- return npos;
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>::size_type
-basic_string <charT, traits, Allocator>::
-find_last_not_of (charT c, size_type pos) const
-{
- if (length() == 0)
- return npos;
- size_t xpos = length () - 1;
- if (xpos > pos)
- xpos = pos;
- for (++xpos; xpos-- > 0;)
- if (traits::ne (data () [xpos], c))
- return xpos;
- return npos;
-}
-
-template <class charT, class traits, class Allocator>
-int basic_string <charT, traits, Allocator>::
-compare (const basic_string& str, size_type pos, size_type n) const
-{
- OUTOFRANGE (pos > length ());
-
- size_t rlen = length () - pos;
- if (rlen > n)
- rlen = n;
- if (rlen > str.length ())
- rlen = str.length ();
- int r = traits::compare (data () + pos, str.data (), rlen);
- if (r != 0)
- return r;
- if (rlen == n)
- return 0;
- return (length () - pos) - str.length ();
-}
-
-template <class charT, class traits, class Allocator>
-int basic_string <charT, traits, Allocator>::
-compare (const charT* s, size_type pos, size_type n) const
-{
- OUTOFRANGE (pos > length ());
-
- size_t rlen = length () - pos;
- if (rlen > n)
- rlen = n;
- int r = traits::compare (data () + pos, s, rlen);
- if (r != 0)
- return r;
- return (length () - pos) - n;
-}
-
-#include <iostream.h>
-
-template <class charT, class traits, class Allocator>
-istream &
-operator>> (istream &is, basic_string <charT, traits, Allocator> &s)
-{
- int w = is.width (0);
- if (is.ipfx0 ())
- {
- register streambuf *sb = is.rdbuf ();
- s.resize (0);
- while (1)
- {
- int ch = sb->sbumpc ();
- if (ch == EOF)
- {
- is.setstate (ios::eofbit);
- break;
- }
- else if (traits::is_del (ch))
- {
- sb->sungetc ();
- break;
- }
- s += static_cast<charT> (ch);
- if (--w == 1)
- break;
- }
- }
-
- is.isfx ();
- if (s.length () == 0)
- is.setstate (ios::failbit);
-
- return is;
-}
-
-template <class charT, class traits, class Allocator>
-ostream &
-operator<< (ostream &o, const basic_string <charT, traits, Allocator>& s)
-{
- return o.write (s.data (), s.length ());
-}
-
-template <class charT, class traits, class Allocator>
-istream&
-getline (istream &is, basic_string <charT, traits, Allocator>& s, charT delim)
-{
- if (is.ipfx1 ())
- {
- _IO_size_t count = 0;
- streambuf *sb = is.rdbuf ();
- s.resize (0);
-
- while (1)
- {
- int ch = sb->sbumpc ();
- if (ch == EOF)
- {
- is.setstate (count == 0
- ? (ios::failbit|ios::eofbit)
- : ios::eofbit);
- break;
- }
-
- ++count;
-
- if (ch == delim)
- break;
-
- s += static_cast<charT> (ch);
-
- if (s.length () == s.npos - 1)
- {
- is.setstate (ios::failbit);
- break;
- }
- }
- }
-
- // We need to be friends with istream to do this.
- // is._gcount = count;
- is.isfx ();
-
- return is;
-}
-
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>::Rep
-basic_string<charT, traits, Allocator>::nilRep = { 0, 0, 1, false };
-
-template <class charT, class traits, class Allocator>
-const basic_string <charT, traits, Allocator>::size_type
-basic_string <charT, traits, Allocator>::npos;
-
-} // extern "C++"
diff --git a/contrib/libstdc++/std/bastring.h b/contrib/libstdc++/std/bastring.h
deleted file mode 100644
index bbe8730..0000000
--- a/contrib/libstdc++/std/bastring.h
+++ /dev/null
@@ -1,657 +0,0 @@
-// Main templates for the -*- C++ -*- string classes.
-// Copyright (C) 1994, 1995, 1999 Free Software Foundation
-
-// This file is part of the GNU ANSI 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-// As a special exception, if you link this library with files
-// compiled with a GNU compiler to produce an executable, this does not cause
-// the resulting executable to be covered by the GNU General Public License.
-// This exception does not however invalidate any other reasons why
-// the executable file might be covered by the GNU General Public License.
-
-// Written by Jason Merrill based upon the specification by Takanori Adachi
-// in ANSI X3J16/94-0013R2.
-
-#ifndef __BASTRING__
-#define __BASTRING__
-
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include <cstddef>
-#include <std/straits.h>
-
-// NOTE : This does NOT conform to the draft standard and is likely to change
-#include <alloc.h>
-
-extern "C++" {
-class istream; class ostream;
-
-#include <iterator>
-
-#ifdef __STL_USE_EXCEPTIONS
-
-extern void __out_of_range (const char *);
-extern void __length_error (const char *);
-
-#define OUTOFRANGE(cond) \
- do { if (cond) __out_of_range (#cond); } while (0)
-#define LENGTHERROR(cond) \
- do { if (cond) __length_error (#cond); } while (0)
-
-#else
-
-#include <cassert>
-#define OUTOFRANGE(cond) assert (!(cond))
-#define LENGTHERROR(cond) assert (!(cond))
-
-#endif
-
-template <class charT, class traits = string_char_traits<charT>,
- class Allocator = alloc >
-class basic_string
-{
-private:
- struct Rep {
- size_t len, res, ref;
- bool selfish;
-
- charT* data () { return reinterpret_cast<charT *>(this + 1); }
- charT& operator[] (size_t s) { return data () [s]; }
- charT* grab () { if (selfish) return clone (); ++ref; return data (); }
-#if defined __i486__ || defined __i586__ || defined __i686__
- void release ()
- {
- size_t __val;
- // This opcode exists as a .byte instead of as a mnemonic for the
- // benefit of SCO OpenServer 5. The system assembler (which is
- // essentially required on this target) can't assemble xaddl in
- //COFF mode.
- asm (".byte 0xf0, 0x0f, 0xc1, 0x02" // lock; xaddl %eax, (%edx)
- : "=a" (__val)
- : "0" (-1), "m" (ref), "d" (&ref)
- : "memory");
-
- if (__val == 1)
- delete this;
- }
-#elif defined __sparcv9__
- void release ()
- {
- size_t __newval, __oldval = ref;
- do
- {
- __newval = __oldval - 1;
- __asm__ ("cas [%4], %2, %0"
- : "=r" (__oldval), "=m" (ref)
- : "r" (__oldval), "m" (ref), "r"(&(ref)), "0" (__newval));
- }
- while (__newval != __oldval);
-
- if (__oldval == 0)
- delete this;
- }
-#else
- void release () { if (--ref == 0) delete this; }
-#endif
-
- inline static void * operator new (size_t, size_t);
- inline static void operator delete (void *);
- inline static Rep* create (size_t);
- charT* clone ();
-
- inline void copy (size_t, const charT *, size_t);
- inline void move (size_t, const charT *, size_t);
- inline void set (size_t, const charT, size_t);
-
- inline static bool excess_slop (size_t, size_t);
- inline static size_t frob_size (size_t);
-
- private:
- Rep &operator= (const Rep &);
- };
-
-public:
-// types:
- typedef traits traits_type;
- typedef typename traits::char_type value_type;
- typedef Allocator allocator_type;
-
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef charT& reference;
- typedef const charT& const_reference;
- typedef charT* pointer;
- typedef const charT* const_pointer;
- typedef pointer iterator;
- typedef const_pointer const_iterator;
- typedef ::reverse_iterator<iterator> reverse_iterator;
- typedef ::reverse_iterator<const_iterator> const_reverse_iterator;
- static const size_type npos = static_cast<size_type>(-1);
-
-private:
- Rep *rep () const { return reinterpret_cast<Rep *>(dat) - 1; }
- void repup (Rep *p) { rep ()->release (); dat = p->data (); }
-
-public:
- const charT* data () const
- { return rep ()->data(); }
- size_type length () const
- { return rep ()->len; }
- size_type size () const
- { return rep ()->len; }
- size_type capacity () const
- { return rep ()->res; }
- size_type max_size () const
- { return (npos - 1)/sizeof (charT); } // XXX
- bool empty () const
- { return size () == 0; }
-
-// _lib.string.cons_ construct/copy/destroy:
- basic_string& operator= (const basic_string& str)
- {
- if (&str != this) { rep ()->release (); dat = str.rep ()->grab (); }
- return *this;
- }
-
- explicit basic_string (): dat (nilRep.grab ()) { }
- basic_string (const basic_string& str): dat (str.rep ()->grab ()) { }
- basic_string (const basic_string& str, size_type pos, size_type n = npos)
- : dat (nilRep.grab ()) { assign (str, pos, n); }
- basic_string (const charT* s, size_type n)
- : dat (nilRep.grab ()) { assign (s, n); }
- basic_string (const charT* s)
- : dat (nilRep.grab ()) { assign (s); }
- basic_string (size_type n, charT c)
- : dat (nilRep.grab ()) { assign (n, c); }
-#ifdef __STL_MEMBER_TEMPLATES
- template<class InputIterator>
- basic_string(InputIterator __begin, InputIterator __end)
-#else
- basic_string(const_iterator __begin, const_iterator __end)
-#endif
- : dat (nilRep.grab ()) { assign (__begin, __end); }
-
- ~basic_string ()
- { rep ()->release (); }
-
- void swap (basic_string &s) { charT *d = dat; dat = s.dat; s.dat = d; }
-
- basic_string& append (const basic_string& str, size_type pos = 0,
- size_type n = npos)
- { return replace (length (), 0, str, pos, n); }
- basic_string& append (const charT* s, size_type n)
- { return replace (length (), 0, s, n); }
- basic_string& append (const charT* s)
- { return append (s, traits::length (s)); }
- basic_string& append (size_type n, charT c)
- { return replace (length (), 0, n, c); }
-#ifdef __STL_MEMBER_TEMPLATES
- template<class InputIterator>
- basic_string& append(InputIterator first, InputIterator last)
-#else
- basic_string& append(const_iterator first, const_iterator last)
-#endif
- { return replace (iend (), iend (), first, last); }
-
- void push_back(charT __c)
- { append(1, __c); }
-
- basic_string& assign (const basic_string& str, size_type pos = 0,
- size_type n = npos)
- { return replace (0, npos, str, pos, n); }
- basic_string& assign (const charT* s, size_type n)
- { return replace (0, npos, s, n); }
- basic_string& assign (const charT* s)
- { return assign (s, traits::length (s)); }
- basic_string& assign (size_type n, charT c)
- { return replace (0, npos, n, c); }
-#ifdef __STL_MEMBER_TEMPLATES
- template<class InputIterator>
- basic_string& assign(InputIterator first, InputIterator last)
-#else
- basic_string& assign(const_iterator first, const_iterator last)
-#endif
- { return replace (ibegin (), iend (), first, last); }
-
- basic_string& operator= (const charT* s)
- { return assign (s); }
- basic_string& operator= (charT c)
- { return assign (1, c); }
-
- basic_string& operator+= (const basic_string& rhs)
- { return append (rhs); }
- basic_string& operator+= (const charT* s)
- { return append (s); }
- basic_string& operator+= (charT c)
- { return append (1, c); }
-
- basic_string& insert (size_type pos1, const basic_string& str,
- size_type pos2 = 0, size_type n = npos)
- { return replace (pos1, 0, str, pos2, n); }
- basic_string& insert (size_type pos, const charT* s, size_type n)
- { return replace (pos, 0, s, n); }
- basic_string& insert (size_type pos, const charT* s)
- { return insert (pos, s, traits::length (s)); }
- basic_string& insert (size_type pos, size_type n, charT c)
- { return replace (pos, 0, n, c); }
- iterator insert(iterator p, charT c)
- { size_type __o = p - ibegin ();
- insert (p - ibegin (), 1, c); selfish ();
- return ibegin () + __o; }
- iterator insert(iterator p, size_type n, charT c)
- { size_type __o = p - ibegin ();
- insert (p - ibegin (), n, c); selfish ();
- return ibegin () + __o; }
-#ifdef __STL_MEMBER_TEMPLATES
- template<class InputIterator>
- void insert(iterator p, InputIterator first, InputIterator last)
-#else
- void insert(iterator p, const_iterator first, const_iterator last)
-#endif
- { replace (p, p, first, last); }
-
- basic_string& erase (size_type pos = 0, size_type n = npos)
- { return replace (pos, n, (size_type)0, (charT)0); }
- iterator erase(iterator p)
- { size_type __o = p - begin();
- replace (__o, 1, (size_type)0, (charT)0); selfish ();
- return ibegin() + __o; }
- iterator erase(iterator f, iterator l)
- { size_type __o = f - ibegin();
- replace (__o, l-f, (size_type)0, (charT)0);selfish ();
- return ibegin() + __o; }
-
- basic_string& replace (size_type pos1, size_type n1, const basic_string& str,
- size_type pos2 = 0, size_type n2 = npos);
- basic_string& replace (size_type pos, size_type n1, const charT* s,
- size_type n2);
- basic_string& replace (size_type pos, size_type n1, const charT* s)
- { return replace (pos, n1, s, traits::length (s)); }
- basic_string& replace (size_type pos, size_type n1, size_type n2, charT c);
- basic_string& replace (size_type pos, size_type n, charT c)
- { return replace (pos, n, 1, c); }
- basic_string& replace (iterator i1, iterator i2, const basic_string& str)
- { return replace (i1 - ibegin (), i2 - i1, str); }
- basic_string& replace (iterator i1, iterator i2, const charT* s, size_type n)
- { return replace (i1 - ibegin (), i2 - i1, s, n); }
- basic_string& replace (iterator i1, iterator i2, const charT* s)
- { return replace (i1 - ibegin (), i2 - i1, s); }
- basic_string& replace (iterator i1, iterator i2, size_type n, charT c)
- { return replace (i1 - ibegin (), i2 - i1, n, c); }
-#ifdef __STL_MEMBER_TEMPLATES
- template<class InputIterator>
- basic_string& replace(iterator i1, iterator i2,
- InputIterator j1, InputIterator j2);
-#else
- basic_string& replace(iterator i1, iterator i2,
- const_iterator j1, const_iterator j2);
-#endif
-
-private:
- static charT eos () { return traits::eos (); }
- void unique () { if (rep ()->ref > 1) alloc (length (), true); }
- void selfish () { unique (); rep ()->selfish = true; }
-
-public:
- charT operator[] (size_type pos) const
- {
- if (pos == length ())
- return eos ();
- return data ()[pos];
- }
-
- reference operator[] (size_type pos)
- { selfish (); return (*rep ())[pos]; }
-
- reference at (size_type pos)
- {
- OUTOFRANGE (pos >= length ());
- return (*this)[pos];
- }
- const_reference at (size_type pos) const
- {
- OUTOFRANGE (pos >= length ());
- return data ()[pos];
- }
-
-private:
- void terminate () const
- { traits::assign ((*rep ())[length ()], eos ()); }
-
-public:
- const charT* c_str () const
- { if (length () == 0) return ""; terminate (); return data (); }
- void resize (size_type n, charT c);
- void resize (size_type n)
- { resize (n, eos ()); }
- void reserve (size_type) { }
-
- size_type copy (charT* s, size_type n, size_type pos = 0) const;
-
- size_type find (const basic_string& str, size_type pos = 0) const
- { return find (str.data(), pos, str.length()); }
- size_type find (const charT* s, size_type pos, size_type n) const;
- size_type find (const charT* s, size_type pos = 0) const
- { return find (s, pos, traits::length (s)); }
- size_type find (charT c, size_type pos = 0) const;
-
- size_type rfind (const basic_string& str, size_type pos = npos) const
- { return rfind (str.data(), pos, str.length()); }
- size_type rfind (const charT* s, size_type pos, size_type n) const;
- size_type rfind (const charT* s, size_type pos = npos) const
- { return rfind (s, pos, traits::length (s)); }
- size_type rfind (charT c, size_type pos = npos) const;
-
- size_type find_first_of (const basic_string& str, size_type pos = 0) const
- { return find_first_of (str.data(), pos, str.length()); }
- size_type find_first_of (const charT* s, size_type pos, size_type n) const;
- size_type find_first_of (const charT* s, size_type pos = 0) const
- { return find_first_of (s, pos, traits::length (s)); }
- size_type find_first_of (charT c, size_type pos = 0) const
- { return find (c, pos); }
-
- size_type find_last_of (const basic_string& str, size_type pos = npos) const
- { return find_last_of (str.data(), pos, str.length()); }
- size_type find_last_of (const charT* s, size_type pos, size_type n) const;
- size_type find_last_of (const charT* s, size_type pos = npos) const
- { return find_last_of (s, pos, traits::length (s)); }
- size_type find_last_of (charT c, size_type pos = npos) const
- { return rfind (c, pos); }
-
- size_type find_first_not_of (const basic_string& str, size_type pos = 0) const
- { return find_first_not_of (str.data(), pos, str.length()); }
- size_type find_first_not_of (const charT* s, size_type pos, size_type n) const;
- size_type find_first_not_of (const charT* s, size_type pos = 0) const
- { return find_first_not_of (s, pos, traits::length (s)); }
- size_type find_first_not_of (charT c, size_type pos = 0) const;
-
- size_type find_last_not_of (const basic_string& str, size_type pos = npos) const
- { return find_last_not_of (str.data(), pos, str.length()); }
- size_type find_last_not_of (const charT* s, size_type pos, size_type n) const;
- size_type find_last_not_of (const charT* s, size_type pos = npos) const
- { return find_last_not_of (s, pos, traits::length (s)); }
- size_type find_last_not_of (charT c, size_type pos = npos) const;
-
- basic_string substr (size_type pos = 0, size_type n = npos) const
- { return basic_string (*this, pos, n); }
-
- int compare (const basic_string& str, size_type pos = 0, size_type n = npos) const;
- // There is no 'strncmp' equivalent for charT pointers.
- int compare (const charT* s, size_type pos, size_type n) const;
- int compare (const charT* s, size_type pos = 0) const
- { return compare (s, pos, traits::length (s)); }
-
- iterator begin () { selfish (); return &(*this)[0]; }
- iterator end () { selfish (); return &(*this)[length ()]; }
-
-private:
- iterator ibegin () const { return &(*rep ())[0]; }
- iterator iend () const { return &(*rep ())[length ()]; }
-
-public:
- const_iterator begin () const { return ibegin (); }
- const_iterator end () const { return iend (); }
-
- reverse_iterator rbegin() { return reverse_iterator (end ()); }
- const_reverse_iterator rbegin() const
- { return const_reverse_iterator (end ()); }
- reverse_iterator rend() { return reverse_iterator (begin ()); }
- const_reverse_iterator rend() const
- { return const_reverse_iterator (begin ()); }
-
-private:
- void alloc (size_type size, bool save);
- static size_type _find (const charT* ptr, charT c, size_type xpos, size_type len);
- inline bool check_realloc (size_type s) const;
-
- static Rep nilRep;
- charT *dat;
-};
-
-#ifdef __STL_MEMBER_TEMPLATES
-template <class charT, class traits, class Allocator> template <class InputIterator>
-basic_string <charT, traits, Allocator>& basic_string <charT, traits, Allocator>::
-replace (iterator i1, iterator i2, InputIterator j1, InputIterator j2)
-#else
-template <class charT, class traits, class Allocator>
-basic_string <charT, traits, Allocator>& basic_string <charT, traits, Allocator>::
-replace (iterator i1, iterator i2, const_iterator j1, const_iterator j2)
-#endif
-{
- const size_type len = length ();
- size_type pos = i1 - ibegin ();
- size_type n1 = i2 - i1;
- size_type n2 = j2 - j1;
-
- OUTOFRANGE (pos > len);
- if (n1 > len - pos)
- n1 = len - pos;
- LENGTHERROR (len - n1 > max_size () - n2);
- size_t newlen = len - n1 + n2;
-
- if (check_realloc (newlen))
- {
- Rep *p = Rep::create (newlen);
- p->copy (0, data (), pos);
- p->copy (pos + n2, data () + pos + n1, len - (pos + n1));
- for (; j1 != j2; ++j1, ++pos)
- traits::assign ((*p)[pos], *j1);
- repup (p);
- }
- else
- {
- rep ()->move (pos + n2, data () + pos + n1, len - (pos + n1));
- for (; j1 != j2; ++j1, ++pos)
- traits::assign ((*rep ())[pos], *j1);
- }
- rep ()->len = newlen;
-
- return *this;
-}
-
-template <class charT, class traits, class Allocator>
-inline basic_string <charT, traits, Allocator>
-operator+ (const basic_string <charT, traits, Allocator>& lhs,
- const basic_string <charT, traits, Allocator>& rhs)
-{
- basic_string <charT, traits, Allocator> str (lhs);
- str.append (rhs);
- return str;
-}
-
-template <class charT, class traits, class Allocator>
-inline basic_string <charT, traits, Allocator>
-operator+ (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs)
-{
- basic_string <charT, traits, Allocator> str (lhs);
- str.append (rhs);
- return str;
-}
-
-template <class charT, class traits, class Allocator>
-inline basic_string <charT, traits, Allocator>
-operator+ (charT lhs, const basic_string <charT, traits, Allocator>& rhs)
-{
- basic_string <charT, traits, Allocator> str (1, lhs);
- str.append (rhs);
- return str;
-}
-
-template <class charT, class traits, class Allocator>
-inline basic_string <charT, traits, Allocator>
-operator+ (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs)
-{
- basic_string <charT, traits, Allocator> str (lhs);
- str.append (rhs);
- return str;
-}
-
-template <class charT, class traits, class Allocator>
-inline basic_string <charT, traits, Allocator>
-operator+ (const basic_string <charT, traits, Allocator>& lhs, charT rhs)
-{
- basic_string <charT, traits, Allocator> str (lhs);
- str.append (1, rhs);
- return str;
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator== (const basic_string <charT, traits, Allocator>& lhs,
- const basic_string <charT, traits, Allocator>& rhs)
-{
- return (lhs.compare (rhs) == 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator== (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs)
-{
- return (rhs.compare (lhs) == 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator== (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs)
-{
- return (lhs.compare (rhs) == 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator!= (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs)
-{
- return (rhs.compare (lhs) != 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator!= (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs)
-{
- return (lhs.compare (rhs) != 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator< (const basic_string <charT, traits, Allocator>& lhs,
- const basic_string <charT, traits, Allocator>& rhs)
-{
- return (lhs.compare (rhs) < 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator< (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs)
-{
- return (rhs.compare (lhs) > 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator< (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs)
-{
- return (lhs.compare (rhs) < 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator> (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs)
-{
- return (rhs.compare (lhs) < 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator> (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs)
-{
- return (lhs.compare (rhs) > 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator<= (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs)
-{
- return (rhs.compare (lhs) >= 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator<= (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs)
-{
- return (lhs.compare (rhs) <= 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator>= (const charT* lhs, const basic_string <charT, traits, Allocator>& rhs)
-{
- return (rhs.compare (lhs) <= 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator>= (const basic_string <charT, traits, Allocator>& lhs, const charT* rhs)
-{
- return (lhs.compare (rhs) >= 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator!= (const basic_string <charT, traits, Allocator>& lhs,
- const basic_string <charT, traits, Allocator>& rhs)
-{
- return (lhs.compare (rhs) != 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator> (const basic_string <charT, traits, Allocator>& lhs,
- const basic_string <charT, traits, Allocator>& rhs)
-{
- return (lhs.compare (rhs) > 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator<= (const basic_string <charT, traits, Allocator>& lhs,
- const basic_string <charT, traits, Allocator>& rhs)
-{
- return (lhs.compare (rhs) <= 0);
-}
-
-template <class charT, class traits, class Allocator>
-inline bool
-operator>= (const basic_string <charT, traits, Allocator>& lhs,
- const basic_string <charT, traits, Allocator>& rhs)
-{
- return (lhs.compare (rhs) >= 0);
-}
-
-class istream; class ostream;
-template <class charT, class traits, class Allocator> istream&
-operator>> (istream&, basic_string <charT, traits, Allocator>&);
-template <class charT, class traits, class Allocator> ostream&
-operator<< (ostream&, const basic_string <charT, traits, Allocator>&);
-template <class charT, class traits, class Allocator> istream&
-getline (istream&, basic_string <charT, traits, Allocator>&, charT delim = '\n');
-
-} // extern "C++"
-
-#include <std/bastring.cc>
-
-#endif
diff --git a/contrib/libstdc++/std/complext.cc b/contrib/libstdc++/std/complext.cc
deleted file mode 100644
index 60227f2..0000000
--- a/contrib/libstdc++/std/complext.cc
+++ /dev/null
@@ -1,273 +0,0 @@
-// Member templates for the -*- C++ -*- complex number classes.
-// Copyright (C) 1994 Free Software Foundation
-
-// This file is part of the GNU ANSI 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-// As a special exception, if you link this library with files
-// compiled with a GNU compiler to produce an executable, this does not cause
-// the resulting executable to be covered by the GNU General Public License.
-// This exception does not however invalidate any other reasons why
-// the executable file might be covered by the GNU General Public License.
-
-// Written by Jason Merrill based upon the specification in the 27 May 1994
-// C++ working paper, ANSI document X3J16/94-0098.
-
-#include <complex>
-
-extern "C++" {
-template <class FLOAT> complex<FLOAT>
-cos (const complex<FLOAT>& x)
-{
- return complex<FLOAT> (cos (real (x)) * cosh (imag (x)),
- - sin (real (x)) * sinh (imag (x)));
-}
-
-template <class FLOAT> complex<FLOAT>
-cosh (const complex<FLOAT>& x)
-{
- return complex<FLOAT> (cosh (real (x)) * cos (imag (x)),
- sinh (real (x)) * sin (imag (x)));
-}
-
-template <class FLOAT> complex<FLOAT>
-exp (const complex<FLOAT>& x)
-{
- return polar (FLOAT (exp (real (x))), imag (x));
-}
-
-template <class FLOAT> complex<FLOAT>
-log (const complex<FLOAT>& x)
-{
- return complex<FLOAT> (log (abs (x)), arg (x));
-}
-
-template <class FLOAT> complex<FLOAT>
-pow (const complex<FLOAT>& x, const complex<FLOAT>& y)
-{
- FLOAT logr = log (abs (x));
- FLOAT t = arg (x);
-
- return polar (FLOAT (exp (logr * real (y) - imag (y) * t)),
- FLOAT (imag (y) * logr + real (y) * t));
-}
-
-template <class FLOAT> complex<FLOAT>
-pow (const complex<FLOAT>& x, FLOAT y)
-{
- return exp (FLOAT (y) * log (x));
-}
-
-template <class FLOAT> complex<FLOAT>
-pow (FLOAT x, const complex<FLOAT>& y)
-{
- return exp (y * FLOAT (log (x)));
-}
-
-template <class FLOAT> complex<FLOAT>
-sin (const complex<FLOAT>& x)
-{
- return complex<FLOAT> (sin (real (x)) * cosh (imag (x)),
- cos (real (x)) * sinh (imag (x)));
-}
-
-template <class FLOAT> complex<FLOAT>
-sinh (const complex<FLOAT>& x)
-{
- return complex<FLOAT> (sinh (real (x)) * cos (imag (x)),
- cosh (real (x)) * sin (imag (x)));
-}
-
-#include <iostream.h>
-
-template <class FLOAT> istream&
-operator >> (istream& is, complex<FLOAT>& x)
-{
- FLOAT re, im = 0;
- char ch = 0;
-
- if (is.ipfx0 ())
- {
- if (is.peek () == '(')
- is >> ch;
- is >> re;
- if (ch == '(')
- {
- is >> ch;
- if (ch == ',')
- is >> im >> ch;
- }
- }
- is.isfx ();
-
- if (ch != 0 && ch != ')')
- is.setstate (ios::failbit);
- else if (is.good ())
- x = complex<FLOAT> (re, im);
-
- return is;
-}
-
-template <class FLOAT> ostream&
-operator << (ostream& os, const complex<FLOAT>& x)
-{
- return os << '(' << real (x) << ',' << imag (x) << ')';
-}
-
-// The code below is adapted from f2c's libF77, and is subject to this
-// copyright:
-
-/****************************************************************
-Copyright 1990, 1991, 1992, 1993 by AT&T Bell Laboratories and Bellcore.
-
-Permission to use, copy, modify, and distribute this software
-and its documentation for any purpose and without fee is hereby
-granted, provided that the above copyright notice appear in all
-copies and that both that the copyright notice and this
-permission notice and warranty disclaimer appear in supporting
-documentation, and that the names of AT&T Bell Laboratories or
-Bellcore or any of their entities not be used in advertising or
-publicity pertaining to distribution of the software without
-specific, written prior permission.
-
-AT&T and Bellcore disclaim all warranties with regard to this
-software, including all implied warranties of merchantability
-and fitness. In no event shall AT&T or Bellcore be liable for
-any special, indirect or consequential damages or any damages
-whatsoever resulting from loss of use, data or profits, whether
-in an action of contract, negligence or other tortious action,
-arising out of or in connection with the use or performance of
-this software.
-****************************************************************/
-
-template <class FLOAT> complex<FLOAT>&
-__doadv (complex<FLOAT>* ths, const complex<FLOAT>& y)
-{
- FLOAT ar = abs (y.re);
- FLOAT ai = abs (y.im);
- FLOAT nr, ni;
- FLOAT t, d;
- if (ar <= ai)
- {
- t = y.re / y.im;
- d = y.im * (1 + t*t);
- nr = (ths->re * t + ths->im) / d;
- ni = (ths->im * t - ths->re) / d;
- }
- else
- {
- t = y.im / y.re;
- d = y.re * (1 + t*t);
- nr = (ths->re + ths->im * t) / d;
- ni = (ths->im - ths->re * t) / d;
- }
- ths->re = nr;
- ths->im = ni;
- return *ths;
-}
-
-template <class FLOAT> complex<FLOAT>
-operator / (const complex<FLOAT>& x, const complex<FLOAT>& y)
-{
- FLOAT ar = abs (real (y));
- FLOAT ai = abs (imag (y));
- FLOAT nr, ni;
- FLOAT t, d;
- if (ar <= ai)
- {
- t = real (y) / imag (y);
- d = imag (y) * (1 + t*t);
- nr = (real (x) * t + imag (x)) / d;
- ni = (imag (x) * t - real (x)) / d;
- }
- else
- {
- t = imag (y) / real (y);
- d = real (y) * (1 + t*t);
- nr = (real (x) + imag (x) * t) / d;
- ni = (imag (x) - real (x) * t) / d;
- }
- return complex<FLOAT> (nr, ni);
-}
-
-template <class FLOAT> complex<FLOAT>
-operator / (FLOAT x, const complex<FLOAT>& y)
-{
- FLOAT ar = abs (real (y));
- FLOAT ai = abs (imag (y));
- FLOAT nr, ni;
- FLOAT t, d;
- if (ar <= ai)
- {
- t = real (y) / imag (y);
- d = imag (y) * (1 + t*t);
- nr = x * t / d;
- ni = -x / d;
- }
- else
- {
- t = imag (y) / real (y);
- d = real (y) * (1 + t*t);
- nr = x / d;
- ni = -x * t / d;
- }
- return complex<FLOAT> (nr, ni);
-}
-
-template <class FLOAT> complex<FLOAT>
-pow (const complex<FLOAT>& xin, int y)
-{
- if (y == 0)
- return complex<FLOAT> (1.0);
- complex<FLOAT> r (1.0);
- complex<FLOAT> x (xin);
- if (y < 0)
- {
- y = -y;
- x = FLOAT(1)/x;
- }
- for (;;)
- {
- if (y & 1)
- r *= x;
- if (y >>= 1)
- x *= x;
- else
- return r;
- }
-}
-
-template <class FLOAT> complex<FLOAT>
-sqrt (const complex<FLOAT>& x)
-{
- FLOAT r = abs (x);
- FLOAT nr, ni;
- if (r == 0.0)
- nr = ni = r;
- else if (real (x) > 0)
- {
- nr = sqrt (0.5 * (r + real (x)));
- ni = imag (x) / nr / 2;
- }
- else
- {
- ni = sqrt (0.5 * (r - real (x)));
- if (imag (x) < 0)
- ni = - ni;
- nr = imag (x) / ni / 2;
- }
- return complex<FLOAT> (nr, ni);
-}
-} // extern "C++"
diff --git a/contrib/libstdc++/std/complext.h b/contrib/libstdc++/std/complext.h
deleted file mode 100644
index 6c55037..0000000
--- a/contrib/libstdc++/std/complext.h
+++ /dev/null
@@ -1,400 +0,0 @@
-// The template and inlines for the -*- C++ -*- complex number classes.
-// Copyright (C) 1994 Free Software Foundation
-
-// This file is part of the GNU ANSI 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-// As a special exception, if you link this library with files compiled
-// with a GNU compiler to produce an executable, this does not cause the
-// resulting executable to be covered by the GNU General Public License.
-// This exception does not however invalidate any other reasons why the
-// executable file might be covered by the GNU General Public License.
-
-// Written by Jason Merrill based upon the specification in the 27 May 1994
-// C++ working paper, ANSI document X3J16/94-0098.
-
-#ifndef __COMPLEXT__
-#define __COMPLEXT__
-
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include <cmath>
-
-#if ! defined (__GNUG__) && ! defined (__attribute__)
-#define __attribute__(foo) /* Ignore. */
-#endif
-
-class istream;
-class ostream;
-
-extern "C++" {
-template <class _FLT> class complex;
-template <class _FLT> complex<_FLT>&
- __doapl (complex<_FLT>* ths, const complex<_FLT>& r);
-template <class _FLT> complex<_FLT>&
- __doami (complex<_FLT>* ths, const complex<_FLT>& r);
-template <class _FLT> complex<_FLT>&
- __doaml (complex<_FLT>* ths, const complex<_FLT>& r);
-template <class _FLT> complex<_FLT>&
- __doadv (complex<_FLT>* ths, const complex<_FLT>& r);
-
-template <class _FLT>
-class complex
-{
-public:
- complex (_FLT r = 0, _FLT i = 0): re (r), im (i) { }
- complex& operator += (const complex&);
- complex& operator -= (const complex&);
- complex& operator *= (const complex&);
- complex& operator /= (const complex&);
- _FLT real () const { return re; }
- _FLT imag () const { return im; }
-private:
- _FLT re, im;
-
- friend complex& __doapl<> (complex *, const complex&);
- friend complex& __doami<> (complex *, const complex&);
- friend complex& __doaml<> (complex *, const complex&);
- friend complex& __doadv<> (complex *, const complex&);
-};
-
-// Declare specializations.
-class complex<float>;
-class complex<double>;
-class complex<long double>;
-
-template <class _FLT>
-inline complex<_FLT>&
-__doapl (complex<_FLT>* ths, const complex<_FLT>& r)
-{
- ths->re += r.re;
- ths->im += r.im;
- return *ths;
-}
-template <class _FLT>
-inline complex<_FLT>&
-complex<_FLT>::operator += (const complex<_FLT>& r)
-{
- return __doapl (this, r);
-}
-
-template <class _FLT>
-inline complex<_FLT>&
-__doami (complex<_FLT>* ths, const complex<_FLT>& r)
-{
- ths->re -= r.re;
- ths->im -= r.im;
- return *ths;
-}
-template <class _FLT>
-inline complex<_FLT>&
-complex<_FLT>::operator -= (const complex<_FLT>& r)
-{
- return __doami (this, r);
-}
-
-template <class _FLT>
-inline complex<_FLT>&
-__doaml (complex<_FLT>* ths, const complex<_FLT>& r)
-{
- _FLT f = ths->re * r.re - ths->im * r.im;
- ths->im = ths->re * r.im + ths->im * r.re;
- ths->re = f;
- return *ths;
-}
-template <class _FLT>
-inline complex<_FLT>&
-complex<_FLT>::operator *= (const complex<_FLT>& r)
-{
- return __doaml (this, r);
-}
-
-template <class _FLT>
-inline complex<_FLT>&
-complex<_FLT>::operator /= (const complex<_FLT>& r)
-{
- return __doadv (this, r);
-}
-
-template <class _FLT> inline _FLT
-imag (const complex<_FLT>& x) __attribute__ ((const));
-
-template <class _FLT> inline _FLT
-imag (const complex<_FLT>& x)
-{
- return x.imag ();
-}
-
-template <class _FLT> inline _FLT
-real (const complex<_FLT>& x) __attribute__ ((const));
-
-template <class _FLT> inline _FLT
-real (const complex<_FLT>& x)
-{
- return x.real ();
-}
-
-template <class _FLT> inline complex<_FLT>
-operator + (const complex<_FLT>& x, const complex<_FLT>& y) __attribute__ ((const));
-
-template <class _FLT> inline complex<_FLT>
-operator + (const complex<_FLT>& x, const complex<_FLT>& y)
-{
- return complex<_FLT> (real (x) + real (y), imag (x) + imag (y));
-}
-
-template <class _FLT> inline complex<_FLT>
-operator + (const complex<_FLT>& x, _FLT y) __attribute__ ((const));
-
-template <class _FLT> inline complex<_FLT>
-operator + (const complex<_FLT>& x, _FLT y)
-{
- return complex<_FLT> (real (x) + y, imag (x));
-}
-
-template <class _FLT> inline complex<_FLT>
-operator + (_FLT x, const complex<_FLT>& y) __attribute__ ((const));
-
-template <class _FLT> inline complex<_FLT>
-operator + (_FLT x, const complex<_FLT>& y)
-{
- return complex<_FLT> (x + real (y), imag (y));
-}
-
-template <class _FLT> inline complex<_FLT>
-operator - (const complex<_FLT>& x, const complex<_FLT>& y) __attribute__ ((const));
-
-template <class _FLT> inline complex<_FLT>
-operator - (const complex<_FLT>& x, const complex<_FLT>& y)
-{
- return complex<_FLT> (real (x) - real (y), imag (x) - imag (y));
-}
-
-template <class _FLT> inline complex<_FLT>
-operator - (const complex<_FLT>& x, _FLT y) __attribute__ ((const));
-
-template <class _FLT> inline complex<_FLT>
-operator - (const complex<_FLT>& x, _FLT y)
-{
- return complex<_FLT> (real (x) - y, imag (x));
-}
-
-template <class _FLT> inline complex<_FLT>
-operator - (_FLT x, const complex<_FLT>& y) __attribute__ ((const));
-
-template <class _FLT> inline complex<_FLT>
-operator - (_FLT x, const complex<_FLT>& y)
-{
- return complex<_FLT> (x - real (y), - imag (y));
-}
-
-template <class _FLT> inline complex<_FLT>
-operator * (const complex<_FLT>& x, const complex<_FLT>& y) __attribute__ ((const));
-
-template <class _FLT> inline complex<_FLT>
-operator * (const complex<_FLT>& x, const complex<_FLT>& y)
-{
- return complex<_FLT> (real (x) * real (y) - imag (x) * imag (y),
- real (x) * imag (y) + imag (x) * real (y));
-}
-
-template <class _FLT> inline complex<_FLT>
-operator * (const complex<_FLT>& x, _FLT y) __attribute__ ((const));
-
-template <class _FLT> inline complex<_FLT>
-operator * (const complex<_FLT>& x, _FLT y)
-{
- return complex<_FLT> (real (x) * y, imag (x) * y);
-}
-
-template <class _FLT> inline complex<_FLT>
-operator * (_FLT x, const complex<_FLT>& y) __attribute__ ((const));
-
-template <class _FLT> inline complex<_FLT>
-operator * (_FLT x, const complex<_FLT>& y)
-{
- return complex<_FLT> (x * real (y), x * imag (y));
-}
-
-template <class _FLT> complex<_FLT>
-operator / (const complex<_FLT>& x, _FLT y) __attribute__ ((const));
-
-template <class _FLT> complex<_FLT>
-operator / (const complex<_FLT>& x, _FLT y)
-{
- return complex<_FLT> (real (x) / y, imag (x) / y);
-}
-
-template <class _FLT> inline complex<_FLT>
-operator + (const complex<_FLT>& x) __attribute__ ((const));
-
-template <class _FLT> inline complex<_FLT>
-operator + (const complex<_FLT>& x)
-{
- return x;
-}
-
-template <class _FLT> inline complex<_FLT>
-operator - (const complex<_FLT>& x) __attribute__ ((const));
-
-template <class _FLT> inline complex<_FLT>
-operator - (const complex<_FLT>& x)
-{
- return complex<_FLT> (-real (x), -imag (x));
-}
-
-template <class _FLT> inline bool
-operator == (const complex<_FLT>& x, const complex<_FLT>& y) __attribute__ ((const));
-
-template <class _FLT> inline bool
-operator == (const complex<_FLT>& x, const complex<_FLT>& y)
-{
- return real (x) == real (y) && imag (x) == imag (y);
-}
-
-template <class _FLT> inline bool
-operator == (const complex<_FLT>& x, _FLT y) __attribute__ ((const));
-
-template <class _FLT> inline bool
-operator == (const complex<_FLT>& x, _FLT y)
-{
- return real (x) == y && imag (x) == 0;
-}
-
-template <class _FLT> inline bool
-operator == (_FLT x, const complex<_FLT>& y) __attribute__ ((const));
-
-template <class _FLT> inline bool
-operator == (_FLT x, const complex<_FLT>& y)
-{
- return x == real (y) && imag (y) == 0;
-}
-
-template <class _FLT> inline bool
-operator != (const complex<_FLT>& x, const complex<_FLT>& y) __attribute__ ((const));
-
-template <class _FLT> inline bool
-operator != (const complex<_FLT>& x, const complex<_FLT>& y)
-{
- return real (x) != real (y) || imag (x) != imag (y);
-}
-
-template <class _FLT> inline bool
-operator != (const complex<_FLT>& x, _FLT y) __attribute__ ((const));
-
-template <class _FLT> inline bool
-operator != (const complex<_FLT>& x, _FLT y)
-{
- return real (x) != y || imag (x) != 0;
-}
-
-template <class _FLT> inline bool
-operator != (_FLT x, const complex<_FLT>& y) __attribute__ ((const));
-
-template <class _FLT> inline bool
-operator != (_FLT x, const complex<_FLT>& y)
-{
- return x != real (y) || imag (y) != 0;
-}
-
-// Some targets don't provide a prototype for hypot when -ansi.
-extern "C" double hypot (double, double) __attribute__ ((const));
-
-template <class _FLT> inline _FLT
-abs (const complex<_FLT>& x) __attribute__ ((const));
-
-template <class _FLT> inline _FLT
-abs (const complex<_FLT>& x)
-{
- return hypot (real (x), imag (x));
-}
-
-template <class _FLT> inline _FLT
-arg (const complex<_FLT>& x) __attribute__ ((const));
-
-template <class _FLT> inline _FLT
-arg (const complex<_FLT>& x)
-{
- return atan2 (imag (x), real (x));
-}
-
-template <class _FLT> inline complex<_FLT>
-polar (_FLT r, _FLT t) __attribute__ ((const));
-
-template <class _FLT> inline complex<_FLT>
-polar (_FLT r, _FLT t)
-{
- return complex<_FLT> (r * cos (t), r * sin (t));
-}
-
-template <class _FLT> inline complex<_FLT>
-conj (const complex<_FLT>& x) __attribute__ ((const));
-
-template <class _FLT> inline complex<_FLT>
-conj (const complex<_FLT>& x)
-{
- return complex<_FLT> (real (x), -imag (x));
-}
-
-template <class _FLT> inline _FLT
-norm (const complex<_FLT>& x) __attribute__ ((const));
-
-template <class _FLT> inline _FLT
-norm (const complex<_FLT>& x)
-{
- return real (x) * real (x) + imag (x) * imag (x);
-}
-
-// Declarations of templates in complext.ccI
-
-template <class _FLT> complex<_FLT>
- operator / (const complex<_FLT>&, const complex<_FLT>&) __attribute__ ((const));
-template <class _FLT> complex<_FLT>
- operator / (_FLT, const complex<_FLT>&) __attribute__ ((const));
-template <class _FLT> complex<_FLT>
- cos (const complex<_FLT>&) __attribute__ ((const));
-template <class _FLT> complex<_FLT>
- cosh (const complex<_FLT>&) __attribute__ ((const));
-template <class _FLT> complex<_FLT>
- exp (const complex<_FLT>&) __attribute__ ((const));
-template <class _FLT> complex<_FLT>
- log (const complex<_FLT>&) __attribute__ ((const));
-template <class _FLT> complex<_FLT>
- pow (const complex<_FLT>&, const complex<_FLT>&) __attribute__ ((const));
-template <class _FLT> complex<_FLT>
- pow (const complex<_FLT>&, _FLT) __attribute__ ((const));
-template <class _FLT> complex<_FLT>
- pow (const complex<_FLT>&, int) __attribute__ ((const));
-template <class _FLT> complex<_FLT>
- pow (_FLT, const complex<_FLT>&) __attribute__ ((const));
-template <class _FLT> complex<_FLT>
- sin (const complex<_FLT>&) __attribute__ ((const));
-template <class _FLT> complex<_FLT>
- sinh (const complex<_FLT>&) __attribute__ ((const));
-template <class _FLT> complex<_FLT>
- sqrt (const complex<_FLT>&) __attribute__ ((const));
-
-template <class _FLT> istream& operator >> (istream&, complex<_FLT>&);
-template <class _FLT> ostream& operator << (ostream&, const complex<_FLT>&);
-} // extern "C++"
-
-// Specializations and such
-
-#include <std/fcomplex.h>
-#include <std/dcomplex.h>
-#include <std/ldcomplex.h>
-
-#endif
diff --git a/contrib/libstdc++/std/dcomplex.h b/contrib/libstdc++/std/dcomplex.h
deleted file mode 100644
index 5812d9f..0000000
--- a/contrib/libstdc++/std/dcomplex.h
+++ /dev/null
@@ -1,91 +0,0 @@
-// The -*- C++ -*- double_complex class.
-// Copyright (C) 1994 Free Software Foundation
-
-// This file is part of the GNU ANSI 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-// As a special exception, if you link this library with files
-// compiled with a GNU compiler to produce an executable, this does not cause
-// the resulting executable to be covered by the GNU General Public License.
-// This exception does not however invalidate any other reasons why
-// the executable file might be covered by the GNU General Public License.
-
-// Written by Jason Merrill based upon the specification in the 27 May 1994
-// C++ working paper, ANSI document X3J16/94-0098.
-
-#ifndef __DCOMPLEX__
-#define __DCOMPLEX__
-
-#ifdef __GNUG__
-#pragma interface "dcomplex"
-#endif
-
-extern "C++" {
-class complex<double>
-{
-public:
- complex (double r = 0, double i = 0): re (r), im (i) { }
- complex (const complex<float>& r): re (r.real ()), im (r.imag ()) { }
- explicit complex (const complex<long double>& r);
-
- complex& operator+= (const complex& r) { return __doapl (this, r); }
- complex& operator-= (const complex& r) { return __doami (this, r); }
- complex& operator*= (const complex& r) { return __doaml (this, r); }
- complex& operator/= (const complex& r) { return __doadv (this, r); }
-
- double real () const { return re; }
- double imag () const { return im; }
-private:
- double re, im;
-
- friend complex& __doapl<> (complex *, const complex&);
- friend complex& __doami<> (complex *, const complex&);
- friend complex& __doaml<> (complex *, const complex&);
- friend complex& __doadv<> (complex *, const complex&);
-
-#ifndef __STRICT_ANSI__
- friend inline complex operator + (const complex& x, double y)
- { return operator+<> (x, y); }
- friend inline complex operator + (double x, const complex& y)
- { return operator+<> (x, y); }
- friend inline complex operator - (const complex& x, double y)
- { return operator-<> (x, y); }
- friend inline complex operator - (double x, const complex& y)
- { return operator-<> (x, y); }
- friend inline complex operator * (const complex& x, double y)
- { return operator*<> (x, y); }
- friend inline complex operator * (double x, const complex& y)
- { return operator*<> (x, y); }
- friend inline complex operator / (const complex& x, double y)
- { return operator/<> (x, y); }
- friend inline complex operator / (double x, const complex& y)
- { return operator/<> (x, y); }
- friend inline bool operator == (const complex& x, double y)
- { return operator==<> (x, y); }
- friend inline bool operator == (double x, const complex& y)
- { return operator==<> (x, y); }
- friend inline bool operator != (const complex& x, double y)
- { return operator!=<> (x, y); }
- friend inline bool operator != (double x, const complex& y)
- { return operator!=<> (x, y); }
-#endif /* __STRICT_ANSI__ */
-};
-
-inline complex<float>::complex (const complex<double>& r)
-: re (r.real ()), im (r.imag ())
-{ }
-} // extern "C++"
-
-#endif
diff --git a/contrib/libstdc++/std/fcomplex.h b/contrib/libstdc++/std/fcomplex.h
deleted file mode 100644
index cd9af1a..0000000
--- a/contrib/libstdc++/std/fcomplex.h
+++ /dev/null
@@ -1,87 +0,0 @@
-// The -*- C++ -*- float_complex class.
-// Copyright (C) 1994 Free Software Foundation
-
-// This file is part of the GNU ANSI 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-// As a special exception, if you link this library with files
-// compiled with a GNU compiler to produce an executable, this does not cause
-// the resulting executable to be covered by the GNU General Public License.
-// This exception does not however invalidate any other reasons why
-// the executable file might be covered by the GNU General Public License.
-
-// Written by Jason Merrill based upon the specification in the 27 May 1994
-// C++ working paper, ANSI document X3J16/94-0098.
-
-#ifndef __FCOMPLEX__
-#define __FCOMPLEX__
-
-#ifdef __GNUG__
-#pragma interface "fcomplex"
-#endif
-
-extern "C++" {
-class complex<float>
-{
-public:
- complex (float r = 0, float i = 0): re (r), im (i) { }
- explicit complex (const complex<double>& r);
- explicit complex (const complex<long double>& r);
-
- complex& operator+= (const complex& r) { return __doapl (this, r); }
- complex& operator-= (const complex& r) { return __doami (this, r); }
- complex& operator*= (const complex& r) { return __doaml (this, r); }
- complex& operator/= (const complex& r) { return __doadv (this, r); }
-
- float real () const { return re; }
- float imag () const { return im; }
-private:
- float re, im;
-
- friend complex& __doapl<> (complex *, const complex&);
- friend complex& __doami<> (complex *, const complex&);
- friend complex& __doaml<> (complex *, const complex&);
- friend complex& __doadv<> (complex *, const complex&);
-
-#ifndef __STRICT_ANSI__
- friend inline complex operator + (const complex& x, float y)
- { return operator+<> (x, y); }
- friend inline complex operator + (float x, const complex& y)
- { return operator+<> (x, y); }
- friend inline complex operator - (const complex& x, float y)
- { return operator-<> (x, y); }
- friend inline complex operator - (float x, const complex& y)
- { return operator-<> (x, y); }
- friend inline complex operator * (const complex& x, float y)
- { return operator*<> (x, y); }
- friend inline complex operator * (float x, const complex& y)
- { return operator*<> (x, y); }
- friend inline complex operator / (const complex& x, float y)
- { return operator/<> (x, y); }
- friend inline complex operator / (float x, const complex& y)
- { return operator/<> (x, y); }
- friend inline bool operator == (const complex& x, float y)
- { return operator==<> (x, y); }
- friend inline bool operator == (float x, const complex& y)
- { return operator==<> (x, y); }
- friend inline bool operator != (const complex& x, float y)
- { return operator!=<> (x, y); }
- friend inline bool operator != (float x, const complex& y)
- { return operator!=<> (x, y); }
-#endif /* __STRICT_ANSI__ */
-};
-} // extern "C++"
-
-#endif
diff --git a/contrib/libstdc++/std/gslice.h b/contrib/libstdc++/std/gslice.h
deleted file mode 100644
index 4f6e854..0000000
--- a/contrib/libstdc++/std/gslice.h
+++ /dev/null
@@ -1,111 +0,0 @@
-// The template and inlines for the -*- C++ -*- gslice class.
-
-// Copyright (C) 1997-1999 Cygnus Solutions
-//
-// 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
-
-#ifndef __GSLICE__
-#define __GSLICE__
-
-extern "C++" {
-
-struct _Indexer {
- size_t _M_count;
- size_t _M_start;
- valarray<size_t> _M_size;
- valarray<size_t> _M_stride;
- valarray<size_t> _M_index;
- _Indexer(size_t, const valarray<size_t>&, const valarray<size_t>&);
- void _M_increment_use() { ++_M_count; }
- size_t _M_decrement_use() { return --_M_count; }
-};
-
-
-class gslice
-{
-public:
- gslice ();
- gslice (size_t, const valarray<size_t>&, const valarray<size_t>&);
- gslice(const gslice&);
- ~gslice();
-
- gslice& operator= (const gslice&);
- size_t start () const;
- valarray<size_t> size () const;
- valarray<size_t> stride () const;
-
-private:
- _Indexer* _M_index;
-
- template<typename _Tp> friend class valarray;
-};
-
-inline size_t
-gslice::start () const
-{ return _M_index ? _M_index->_M_start : 0; }
-
-inline valarray<size_t>
-gslice::size () const
-{ return _M_index ? _M_index->_M_size : valarray<size_t>(); }
-
-inline valarray<size_t>
-gslice::stride () const
-{ return _M_index ? _M_index->_M_stride : valarray<size_t>(); }
-
-inline gslice::gslice () : _M_index(0) {}
-
-inline
-gslice::gslice(size_t __o, const valarray<size_t>& __l,
- const valarray<size_t>& __s)
- : _M_index(new _Indexer(__o, __l, __s)) {}
-
-inline
-gslice::gslice(const gslice& __g) : _M_index(__g._M_index)
-{ if (_M_index) _M_index->_M_increment_use(); }
-
-inline
-gslice::~gslice()
-{ if (_M_index && _M_index->_M_decrement_use() == 0) delete _M_index; }
-
-inline gslice&
-gslice::operator= (const gslice& __g)
-{
- if (__g._M_index) __g._M_index->_M_increment_use();
- if (_M_index && _M_index->_M_decrement_use() == 0) delete _M_index;
- _M_index = __g._M_index;
- return *this;
-}
-
-
-} // extern "C++"
-
-#endif // __GSLICE__
-
-// Local Variables:
-// mode:c++
-// End:
diff --git a/contrib/libstdc++/std/gslice_array.h b/contrib/libstdc++/std/gslice_array.h
deleted file mode 100644
index 8a67cac..0000000
--- a/contrib/libstdc++/std/gslice_array.h
+++ /dev/null
@@ -1,170 +0,0 @@
-// The template and inlines for the -*- C++ -*- gslice_array class.
-
-// Copyright (C) 1997-1999 Cygnus Solutions
-//
-// 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
-
-#ifndef __GSLICE_ARRAY__
-#define __GSLICE_ARRAY__
-
-extern "C++" {
-
-template<typename _Tp> class gslice_array
-{
-public:
- typedef _Tp value_type;
-
- void operator= (const valarray<_Tp>&) const;
- void operator*= (const valarray<_Tp>&) const;
- void operator/= (const valarray<_Tp>&) const;
- void operator%= (const valarray<_Tp>&) const;
- void operator+= (const valarray<_Tp>&) const;
- void operator-= (const valarray<_Tp>&) const;
- void operator^= (const valarray<_Tp>&) const;
- void operator&= (const valarray<_Tp>&) const;
- void operator|= (const valarray<_Tp>&) const;
- void operator<<=(const valarray<_Tp>&) const;
- void operator>>=(const valarray<_Tp>&) const;
- void operator=(const _Tp&);
-
- template<class _Dom>
- void operator= (const _Expr<_Dom,_Tp>&) const;
- template<class _Dom>
- void operator*= (const _Expr<_Dom,_Tp>&) const;
- template<class _Dom>
- void operator/= (const _Expr<_Dom,_Tp>&) const;
- template<class _Dom>
- void operator%= (const _Expr<_Dom,_Tp>&) const;
- template<class _Dom>
- void operator+= (const _Expr<_Dom,_Tp>&) const;
- template<class _Dom>
- void operator-= (const _Expr<_Dom,_Tp>&) const;
- template<class _Dom>
- void operator^= (const _Expr<_Dom,_Tp>&) const;
- template<class _Dom>
- void operator&= (const _Expr<_Dom,_Tp>&) const;
- template<class _Dom>
- void operator|= (const _Expr<_Dom,_Tp>&) const;
- template<class _Dom>
- void operator<<= (const _Expr<_Dom,_Tp>&) const;
- template<class _Dom>
- void operator>>= (const _Expr<_Dom,_Tp>&) const;
-
-private:
- _Array<_Tp> _M_array;
- const valarray<size_t>& _M_index;
-
- friend class valarray<_Tp>;
-
- gslice_array (_Array<_Tp>, const valarray<size_t>&);
-
- // this constructor needs to be implemented.
- gslice_array (const gslice_array&);
-
- // not implemented
- gslice_array();
- gslice_array& operator= (const gslice_array&);
-};
-
-template<typename _Tp>
-inline
-gslice_array<_Tp>::gslice_array (_Array<_Tp> __a,
- const valarray<size_t>& __i)
- : _M_array (__a), _M_index (__i) {}
-
-
-template<typename _Tp>
-inline
-gslice_array<_Tp>::gslice_array (const gslice_array<_Tp>& __a)
- : _M_array (__a._M_array), _M_index (__a._M_index) {}
-
-
-template<typename _Tp>
-inline void
-gslice_array<_Tp>::operator= (const _Tp& __t)
-{
- __valarray_fill (_M_array, _Array<size_t>(_M_index),
- _M_index.size(), __t);
-}
-
-template<typename _Tp>
-inline void
-gslice_array<_Tp>::operator= (const valarray<_Tp>& __v) const
-{
- __valarray_copy (_Array<_Tp> (__v), __v.size (),
- _M_array, _Array<size_t>(_M_index));
-}
-
-template<typename _Tp>
-template<class E>
-inline void
-gslice_array<_Tp>::operator= (const _Expr<E, _Tp>& __e) const
-{
- __valarray_copy (__e, _M_index.size(), _M_array,
- _Array<size_t>(_M_index));
-}
-
-#undef _DEFINE_VALARRAY_OPERATOR
-#define _DEFINE_VALARRAY_OPERATOR(op, name) \
-template<typename _Tp> \
-inline void \
-gslice_array<_Tp>::operator##op##= (const valarray<_Tp>& __v) const \
-{ \
- _Array_augmented_##name (_M_array, _Array<size_t>(_M_index), \
- _Array<_Tp> (__v), __v.size ()); \
-} \
- \
-template<typename _Tp> template<class E> \
-inline void \
-gslice_array<_Tp>::operator##op##= (const _Expr<E, _Tp>& __e) const \
-{ \
- _Array_augmented_##name (_M_array, _Array<size_t>(_M_index), __e, \
- _M_index.size()); \
-}
-
-_DEFINE_VALARRAY_OPERATOR(*, multiplies)
-_DEFINE_VALARRAY_OPERATOR(/, divides)
-_DEFINE_VALARRAY_OPERATOR(%, modulus)
-_DEFINE_VALARRAY_OPERATOR(+, plus)
-_DEFINE_VALARRAY_OPERATOR(-, minus)
-_DEFINE_VALARRAY_OPERATOR(^, xor)
-_DEFINE_VALARRAY_OPERATOR(&, and)
-_DEFINE_VALARRAY_OPERATOR(|, or)
-_DEFINE_VALARRAY_OPERATOR(<<, shift_left)
-_DEFINE_VALARRAY_OPERATOR(>>, shift_right)
-
-#undef _DEFINE_VALARRAY_OPERATOR
-
-} // extern "C++"
-
-
-#endif // __GSLICE_ARRAY__
-
-// Local Variables:
-// mode:c++
-// End:
diff --git a/contrib/libstdc++/std/indirect_array.h b/contrib/libstdc++/std/indirect_array.h
deleted file mode 100644
index bb5b79f..0000000
--- a/contrib/libstdc++/std/indirect_array.h
+++ /dev/null
@@ -1,157 +0,0 @@
-// The template and inlines for the -*- C++ -*- indirect_array class.
-
-// Copyright (C) 1997-1999 Cygnus Solutions
-//
-// 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
-
-#ifndef __INDIRECT_ARRAY__
-#define __INDIRECT_ARRAY__
-
-extern "C++" {
-
-template <class _Tp> class indirect_array
-{
-public:
- typedef _Tp value_type;
-
- void operator= (const valarray<_Tp>&) const;
- void operator*= (const valarray<_Tp>&) const;
- void operator/= (const valarray<_Tp>&) const;
- void operator%= (const valarray<_Tp>&) const;
- void operator+= (const valarray<_Tp>&) const;
- void operator-= (const valarray<_Tp>&) const;
- void operator^= (const valarray<_Tp>&) const;
- void operator&= (const valarray<_Tp>&) const;
- void operator|= (const valarray<_Tp>&) const;
- void operator<<= (const valarray<_Tp>&) const;
- void operator>>= (const valarray<_Tp>&) const;
- void operator= (const _Tp&);
-
- template<class _Dom>
- void operator= (const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator*= (const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator/= (const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator%= (const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator+= (const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator-= (const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator^= (const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator&= (const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator|= (const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator<<= (const _Expr<_Dom, _Tp>&) const;
- template<class _Dom>
- void operator>>= (const _Expr<_Dom, _Tp>&) const;
-
-private:
- indirect_array (const indirect_array&);
- indirect_array (_Array<_Tp>, size_t, _Array<size_t>);
-
- friend class valarray<_Tp>;
- friend class gslice_array<_Tp>;
-
- const size_t _M_sz;
- const _Array<size_t> _M_index;
- const _Array<_Tp> _M_array;
-
- // not implemented
- indirect_array ();
- indirect_array& operator= (const indirect_array&);
-};
-
-template<typename _Tp>
-inline indirect_array<_Tp>::indirect_array(const indirect_array<_Tp>& __a)
- : _M_sz (__a._M_sz), _M_index (__a._M_index),
- _M_array (__a._M_array) {}
-
-template<typename _Tp>
-inline
-indirect_array<_Tp>::indirect_array (_Array<_Tp> __a, size_t __s,
- _Array<size_t> __i)
- : _M_sz (__s), _M_index (__i), _M_array (__a) {}
-
-
-template<typename _Tp>
-inline void
-indirect_array<_Tp>::operator= (const _Tp& __t)
-{ __valarray_fill(_M_array, _M_index, _M_sz, __t); }
-
-template<typename _Tp>
-inline void
-indirect_array<_Tp>::operator= (const valarray<_Tp>& __v) const
-{ __valarray_copy (_Array<_Tp> (__v), _M_sz, _M_array, _M_index); }
-
-template<typename _Tp>
-template<class _Dom>
-inline void
-indirect_array<_Tp>::operator= (const _Expr<_Dom,_Tp>& __e) const
-{ __valarray_copy (__e, _M_sz, _M_array, _M_index); }
-
-#undef _DEFINE_VALARRAY_OPERATOR
-#define _DEFINE_VALARRAY_OPERATOR(op, name) \
-template<typename _Tp> \
-inline void \
-indirect_array<_Tp>::operator##op##= (const valarray<_Tp>& __v) const \
-{ \
- _Array_augmented_##name (_M_array, _M_index, _Array<_Tp> (__v), _M_sz); \
-} \
- \
-template<typename _Tp> template<class _Dom> \
-inline void \
-indirect_array<_Tp>::operator##op##= (const _Expr<_Dom,_Tp>& __e) const \
-{ \
- _Array_augmented_##name (_M_array, _M_index, __e, _M_sz); \
-}
-
-_DEFINE_VALARRAY_OPERATOR(*, multiplies)
-_DEFINE_VALARRAY_OPERATOR(/, divides)
-_DEFINE_VALARRAY_OPERATOR(%, modulus)
-_DEFINE_VALARRAY_OPERATOR(+, plus)
-_DEFINE_VALARRAY_OPERATOR(-, minus)
-_DEFINE_VALARRAY_OPERATOR(^, xor)
-_DEFINE_VALARRAY_OPERATOR(&, and)
-_DEFINE_VALARRAY_OPERATOR(|, or)
-_DEFINE_VALARRAY_OPERATOR(<<, shift_left)
-_DEFINE_VALARRAY_OPERATOR(>>, shift_right)
-
-#undef _DEFINE_VALARRAY_OPERATOR
-
-} // extern "C++"
-
-#endif // __INDIRECT_ARRAY__
-
-// Local Variables:
-// mode:c++
-// End:
diff --git a/contrib/libstdc++/std/ldcomplex.h b/contrib/libstdc++/std/ldcomplex.h
deleted file mode 100644
index bc91fa4..0000000
--- a/contrib/libstdc++/std/ldcomplex.h
+++ /dev/null
@@ -1,95 +0,0 @@
-// The -*- C++ -*- long_double_complex class.
-// Copyright (C) 1994 Free Software Foundation
-
-// This file is part of the GNU ANSI 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-// As a special exception, if you link this library with files
-// compiled with a GNU compiler to produce an executable, this does not cause
-// the resulting executable to be covered by the GNU General Public License.
-// This exception does not however invalidate any other reasons why
-// the executable file might be covered by the GNU General Public License.
-
-// Written by Jason Merrill based upon the specification in the 27 May 1994
-// C++ working paper, ANSI document X3J16/94-0098.
-
-#ifndef __LDCOMPLEX__
-#define __LDCOMPLEX__
-
-#ifdef __GNUG__
-#pragma interface "ldcomplex"
-#endif
-
-extern "C++" {
-class complex<long double>
-{
-public:
- complex (long double r = 0, long double i = 0): re (r), im (i) { }
- complex (const complex<float>& r): re (r.real ()), im (r.imag ()) { }
- complex (const complex<double>& r): re (r.real ()), im (r.imag ()) { }
-
- complex& operator+= (const complex& r) { return __doapl (this, r); }
- complex& operator-= (const complex& r) { return __doami (this, r); }
- complex& operator*= (const complex& r) { return __doaml (this, r); }
- complex& operator/= (const complex& r) { return __doadv (this, r); }
-
- long double real () const { return re; }
- long double imag () const { return im; }
-private:
- long double re, im;
-
- friend complex& __doapl<> (complex *, const complex&);
- friend complex& __doami<> (complex *, const complex&);
- friend complex& __doaml<> (complex *, const complex&);
- friend complex& __doadv<> (complex *, const complex&);
-
-#ifndef __STRICT_ANSI__
- friend inline complex operator + (const complex& x, long double y)
- { return operator+<> (x, y); }
- friend inline complex operator + (long double x, const complex& y)
- { return operator+<> (x, y); }
- friend inline complex operator - (const complex& x, long double y)
- { return operator-<> (x, y); }
- friend inline complex operator - (long double x, const complex& y)
- { return operator-<> (x, y); }
- friend inline complex operator * (const complex& x, long double y)
- { return operator*<> (x, y); }
- friend inline complex operator * (long double x, const complex& y)
- { return operator*<> (x, y); }
- friend inline complex operator / (const complex& x, long double y)
- { return operator/<> (x, y); }
- friend inline complex operator / (long double x, const complex& y)
- { return operator/<> (x, y); }
- friend inline bool operator == (const complex& x, long double y)
- { return operator==<> (x, y); }
- friend inline bool operator == (long double x, const complex& y)
- { return operator==<> (x, y); }
- friend inline bool operator != (const complex& x, long double y)
- { return operator!=<> (x, y); }
- friend inline bool operator != (long double x, const complex& y)
- { return operator!=<> (x, y); }
-#endif /* __STRICT_ANSI__ */
-};
-
-inline complex<float>::complex (const complex<long double>& r)
-: re (r.real ()), im (r.imag ())
-{ }
-
-inline complex<double>::complex (const complex<long double>& r)
-: re (r.real ()), im (r.imag ())
-{ }
-} // extern "C++"
-
-#endif
diff --git a/contrib/libstdc++/std/mask_array.h b/contrib/libstdc++/std/mask_array.h
deleted file mode 100644
index d431be4..0000000
--- a/contrib/libstdc++/std/mask_array.h
+++ /dev/null
@@ -1,154 +0,0 @@
-// The template and inlines for the -*- C++ -*- mask_array class.
-
-// Copyright (C) 1997-1999 Cygnus Solutions
-//
-// 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
-
-#ifndef __MASK_ARRAY__
-#define __MASK_ARRAY__
-
-extern "C++" {
-
-template <class _T> class mask_array
-{
-public:
- typedef _T value_type;
-
- void operator= (const valarray<_T>&) const;
- void operator*= (const valarray<_T>&) const;
- void operator/= (const valarray<_T>&) const;
- void operator%= (const valarray<_T>&) const;
- void operator+= (const valarray<_T>&) const;
- void operator-= (const valarray<_T>&) const;
- void operator^= (const valarray<_T>&) const;
- void operator&= (const valarray<_T>&) const;
- void operator|= (const valarray<_T>&) const;
- void operator<<=(const valarray<_T>&) const;
- void operator>>=(const valarray<_T>&) const;
- void operator= (const _T&);
-
- template<class _Dom>
- void operator= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator*= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator/= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator%= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator+= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator-= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator^= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator&= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator|= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator<<=(const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator>>=(const _Expr<_Dom,_T>&) const;
-
-private:
- mask_array (_Array<_T>, size_t, _Array<bool>);
- friend class valarray<_T>;
-
- const size_t _M_sz;
- const _Array<bool> _M_mask;
- const _Array<_T> _M_array;
-
- mask_array (const mask_array&);
-
- // not implemented
- mask_array ();
- mask_array& operator= (const mask_array&);
-};
-
-template<typename _Tp>
-inline mask_array<_Tp>::mask_array (const mask_array<_Tp>& a)
- : _M_sz (a._M_sz), _M_mask (a._M_mask), _M_array (a._M_array) {}
-
-template<typename _T>
-inline
-mask_array<_T>::mask_array (_Array<_T> __a, size_t __s, _Array<bool> __m)
- : _M_sz (__s), _M_mask (__m), _M_array (__a) {}
-
-template<typename _T>
-inline void
-mask_array<_T>::operator= (const _T& __t)
-{ __valarray_fill (_M_array, _M_sz, _M_mask, __t); }
-
-template<typename _T>
-inline void
-mask_array<_T>::operator= (const valarray<_T>& __v) const
-{ __valarray_copy (_Array<_T> (__v), __v.size (), _M_array, _M_mask); }
-
-template<typename _T>
-template<class E>
-inline void
-mask_array<_T>::operator= (const _Expr<E, _T>& __e) const
-{ __valarray_copy (__e, __e.size (), _M_array, _M_mask); }
-
-#undef _DEFINE_VALARRAY_OPERATOR
-#define _DEFINE_VALARRAY_OPERATOR(op, name) \
-template<typename _T> \
-inline void \
-mask_array<_T>::operator##op##= (const valarray<_T>& __v) const \
-{ \
- _Array_augmented_##name (_M_array, _M_mask, \
- _Array<_T> (__v), __v.size ()); \
-} \
- \
-template<typename _T> template<class E> \
-inline void \
-mask_array<_T>::operator##op##= (const _Expr<E, _T>& __e) const \
-{ \
- _Array_augmented_##name (_M_array, _M_mask, __e, __e.size ()); \
-}
-
-_DEFINE_VALARRAY_OPERATOR(*, multiplies)
-_DEFINE_VALARRAY_OPERATOR(/, divides)
-_DEFINE_VALARRAY_OPERATOR(%, modulus)
-_DEFINE_VALARRAY_OPERATOR(+, plus)
-_DEFINE_VALARRAY_OPERATOR(-, minus)
-_DEFINE_VALARRAY_OPERATOR(^, xor)
-_DEFINE_VALARRAY_OPERATOR(&, and)
-_DEFINE_VALARRAY_OPERATOR(|, or)
-_DEFINE_VALARRAY_OPERATOR(<<, shift_left)
-_DEFINE_VALARRAY_OPERATOR(>>, shift_right)
-
-#undef _DEFINE_VALARRAY_OPERATOR
-
-} // extern "C++"
-
-#endif // __MASK_ARRAY__
-
-// Local Variables:
-// mode:c++
-// End:
diff --git a/contrib/libstdc++/std/slice.h b/contrib/libstdc++/std/slice.h
deleted file mode 100644
index cf2fb28..0000000
--- a/contrib/libstdc++/std/slice.h
+++ /dev/null
@@ -1,76 +0,0 @@
-// The template and inlines for the -*- C++ -*- slice class.
-
-// Copyright (C) 1997-1999 Cygnus Solutions
-//
-// 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
-
-#ifndef __SLICE__
-#define __SLICE__
-
-extern "C++" {
-
-class slice
-{
-public:
- slice ();
- slice (size_t, size_t, size_t);
-
- size_t start () const;
- size_t size () const;
- size_t stride () const;
-
-private:
- size_t _M_off; // offset
- size_t _M_sz; // size
- size_t _M_st; // stride unit
-};
-
-inline slice::slice () {}
-
-inline slice::slice (size_t __o, size_t __d, size_t __s)
- : _M_off (__o), _M_sz (__d), _M_st (__s) {}
-
-inline size_t
-slice::start () const
- { return _M_off; }
-
-inline size_t
-slice::size () const
- { return _M_sz; }
-
-inline size_t
-slice::stride () const
- { return _M_st; }
-
-} // extern "C++"
-
-#endif // __SLICE__
-
-// Local Variables:
-// mode:c++
-// End:
diff --git a/contrib/libstdc++/std/slice_array.h b/contrib/libstdc++/std/slice_array.h
deleted file mode 100644
index dc1aa34..0000000
--- a/contrib/libstdc++/std/slice_array.h
+++ /dev/null
@@ -1,156 +0,0 @@
-// The template and inlines for the -*- C++ -*- slice_array class.
-
-// Copyright (C) 1997-1999 Cygnus Solutions
-//
-// 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
-
-#ifndef __SLICE_ARRAY__
-#define __SLICE_ARRAY__
-
-extern "C++" {
-
-template<typename _T>
-class slice_array
-{
-public:
- typedef _T value_type;
-
- void operator= (const valarray<_T>&) const;
- void operator*= (const valarray<_T>&) const;
- void operator/= (const valarray<_T>&) const;
- void operator%= (const valarray<_T>&) const;
- void operator+= (const valarray<_T>&) const;
- void operator-= (const valarray<_T>&) const;
- void operator^= (const valarray<_T>&) const;
- void operator&= (const valarray<_T>&) const;
- void operator|= (const valarray<_T>&) const;
- void operator<<= (const valarray<_T>&) const;
- void operator>>= (const valarray<_T>&) const;
- void operator= (const _T &);
-
- template<class _Dom>
- void operator= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator*= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator/= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator%= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator+= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator-= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator^= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator&= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator|= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator<<= (const _Expr<_Dom,_T>&) const;
- template<class _Dom>
- void operator>>= (const _Expr<_Dom,_T>&) const;
-
-private:
- friend class valarray<_T>;
- slice_array(_Array<_T>, const slice&);
-
- const size_t _M_sz;
- const size_t _M_stride;
- const _Array<_T> _M_array;
-
- // this constructor is implemented since we need to return a value.
- slice_array (const slice_array&);
-
- // not implemented
- slice_array ();
- slice_array& operator= (const slice_array&);
-};
-
-template<typename _T>
-inline slice_array<_T>::slice_array (_Array<_T> __a, const slice& __s)
- : _M_sz (__s.size ()), _M_stride (__s.stride ()),
- _M_array (__a.begin () + __s.start ()) {}
-
-template<typename _Tp>
-inline slice_array<_Tp>::slice_array(const slice_array<_Tp>& a)
- : _M_sz(a._M_sz), _M_stride(a._M_stride), _M_array(a._M_array) {}
-
-template<typename _T>
-inline void
-slice_array<_T>::operator= (const _T& __t)
-{ __valarray_fill (_M_array, _M_sz, _M_stride, __t); }
-
-template<typename _T>
-inline void
-slice_array<_T>::operator= (const valarray<_T>& __v) const
-{ __valarray_copy (_Array<_T> (__v), _M_array, _M_sz, _M_stride); }
-
-template<typename _T>
-template<class _Dom>
-inline void
-slice_array<_T>::operator= (const _Expr<_Dom,_T>& __e) const
-{ __valarray_copy (__e, _M_sz, _M_array, _M_stride); }
-
-#undef _DEFINE_VALARRAY_OPERATOR
-#define _DEFINE_VALARRAY_OPERATOR(op, name) \
-template<typename _T> \
-inline void \
-slice_array<_T>::operator##op##= (const valarray<_T>& __v) const \
-{ \
- _Array_augmented_##name (_M_array, _M_sz, _M_stride, _Array<_T> (__v));\
-} \
- \
-template<typename _T> template<class _Dom> \
-inline void \
-slice_array<_T>::operator##op##= (const _Expr<_Dom,_T>& __e) const \
-{ \
- _Array_augmented_##name (_M_array, _M_stride, __e, _M_sz); \
-}
-
-
-_DEFINE_VALARRAY_OPERATOR(*, multiplies)
-_DEFINE_VALARRAY_OPERATOR(/, divides)
-_DEFINE_VALARRAY_OPERATOR(%, modulus)
-_DEFINE_VALARRAY_OPERATOR(+, plus)
-_DEFINE_VALARRAY_OPERATOR(-, minus)
-_DEFINE_VALARRAY_OPERATOR(^, xor)
-_DEFINE_VALARRAY_OPERATOR(&, and)
-_DEFINE_VALARRAY_OPERATOR(|, or)
-_DEFINE_VALARRAY_OPERATOR(<<, shift_left)
-_DEFINE_VALARRAY_OPERATOR(>>, shift_right)
-
-#undef _DEFINE_VALARRAY_OPERATOR
-
-} // extern "C++"
-
-#endif // __SLICE_ARRAY__
-
-// Local Variables:
-// mode:c++
-// End:
diff --git a/contrib/libstdc++/std/std_valarray.h b/contrib/libstdc++/std/std_valarray.h
deleted file mode 100644
index b300655..0000000
--- a/contrib/libstdc++/std/std_valarray.h
+++ /dev/null
@@ -1,728 +0,0 @@
-// The template and inlines for the -*- C++ -*- valarray class.
-
-// Copyright (C) 1997-1999 Cygnus Solutions
-//
-// 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
-
-#ifndef __STD_VALARRAY__
-#define __STD_VALARRAY__
-#define _G_NO_VALARRAY_TEMPLATE_EXPORT 1
-
-#include <cstddef>
-#include <cmath>
-#include <cstdlib>
-#include <numeric>
-#include <functional>
-#include <algorithm>
-
-#ifndef alloca
-#ifdef __GNUC__
-#define alloca __builtin_alloca
-#else /* not GNU C. */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
-#include <alloca.h>
-#else /* not sparc */
-#if defined (MSDOS) && !defined (__TURBOC__)
-#include <malloc.h>
-#else /* not MSDOS, or __TURBOC__ */
-#if defined(_AIX)
-#include <malloc.h>
- #pragma alloca
-#else /* not MSDOS, __TURBOC__, or _AIX */
-#ifdef __hpux
-#endif /* __hpux */
-#endif /* not _AIX */
-#endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc. */
-#endif /* not GNU C. */
-#endif /* alloca not defined. */
-
-extern "C" {
- void* alloca(size_t);
-}
-
-
-extern "C++" {
-
-template<class _Clos, typename _Tp> class _Expr;
-
-template<typename _Tp1, typename _Tp2> class _ValArray;
-
-template<template<class> class _Oper,
- template<class, class> class _Meta, class _Dom> struct _UnClos;
-
-template<template<class> class _Oper,
- template<class, class> class _Meta1,
- template<class, class> class _Meta2,
- class _Dom1, class _Dom2> class _BinClos;
-
-template<template<class, class> class _Meta, class _Dom> class _SClos;
-
-template<template<class, class> class _Meta, class _Dom> class _GClos;
-
-template<template<class, class> class _Meta, class _Dom> class _IClos;
-
-template<template<class, class> class _Meta, class _Dom> class _ValFunClos;
-
-template<template<class, class> class _Meta, class _Dom> class _RefFunClos;
-
-template<class _Tp> struct _Unary_plus;
-template<class _Tp> struct _Bitwise_and;
-template<class _Tp> struct _Bitwise_or;
-template<class _Tp> struct _Bitwise_xor;
-template<class _Tp> struct _Bitwise_not;
-template<class _Tp> struct _Shift_left;
-template<class _Tp> struct _Shift_right;
-
-template<class _Tp> class valarray; // An array of type _Tp
-class slice; // BLAS-like slice out of an array
-template<class _Tp> class slice_array;
-class gslice; // generalized slice out of an array
-template<class _Tp> class gslice_array;
-template<class _Tp> class mask_array; // masked array
-template<class _Tp> class indirect_array; // indirected array
-
-} // extern "C++"
-
-#include <std/valarray_array.h>
-#include <std/valarray_meta.h>
-
-extern "C++" {
-
-template<class _Tp> class valarray
-{
-public:
- typedef _Tp value_type;
-
- // _lib.valarray.cons_ construct/destroy:
- valarray();
- explicit valarray(size_t);
- valarray(const _Tp&, size_t);
- valarray(const _Tp* __restrict__, size_t);
- valarray(const valarray&);
- valarray(const slice_array<_Tp>&);
- valarray(const gslice_array<_Tp>&);
- valarray(const mask_array<_Tp>&);
- valarray(const indirect_array<_Tp>&);
- template<class _Dom>
- valarray(const _Expr<_Dom,_Tp>& __e);
- ~valarray();
-
- // _lib.valarray.assign_ assignment:
- valarray<_Tp>& operator=(const valarray<_Tp>&);
- valarray<_Tp>& operator=(const _Tp&);
- valarray<_Tp>& operator=(const slice_array<_Tp>&);
- valarray<_Tp>& operator=(const gslice_array<_Tp>&);
- valarray<_Tp>& operator=(const mask_array<_Tp>&);
- valarray<_Tp>& operator=(const indirect_array<_Tp>&);
-
- template<class _Dom> valarray<_Tp>&
- operator= (const _Expr<_Dom,_Tp>&);
-
- // _lib.valarray.access_ element access:
- _Tp operator[](size_t) const;
- _Tp& operator[](size_t);
- // _lib.valarray.sub_ subset operations:
- _Expr<_SClos<_ValArray,_Tp>, _Tp> operator[](slice) const;
- slice_array<_Tp> operator[](slice);
- _Expr<_GClos<_ValArray,_Tp>, _Tp> operator[](const gslice&) const;
- gslice_array<_Tp> operator[](const gslice&);
- valarray<_Tp> operator[](const valarray<bool>&) const;
- mask_array<_Tp> operator[](const valarray<bool>&);
- _Expr<_IClos<_ValArray, _Tp>, _Tp>
- operator[](const valarray<size_t>&) const;
- indirect_array<_Tp> operator[](const valarray<size_t>&);
-
- // _lib.valarray.unary_ unary operators:
- _Expr<_UnClos<_Unary_plus,_ValArray,_Tp>,_Tp> operator+ () const;
- _Expr<_UnClos<negate,_ValArray,_Tp>,_Tp> operator- () const;
- _Expr<_UnClos<_Bitwise_not,_ValArray,_Tp>,_Tp> operator~ () const;
- _Expr<_UnClos<logical_not,_ValArray,_Tp>,bool> operator! () const;
-
- // _lib.valarray.cassign_ computed assignment:
- valarray<_Tp>& operator*= (const _Tp&);
- valarray<_Tp>& operator/= (const _Tp&);
- valarray<_Tp>& operator%= (const _Tp&);
- valarray<_Tp>& operator+= (const _Tp&);
- valarray<_Tp>& operator-= (const _Tp&);
- valarray<_Tp>& operator^= (const _Tp&);
- valarray<_Tp>& operator&= (const _Tp&);
- valarray<_Tp>& operator|= (const _Tp&);
- valarray<_Tp>& operator<<=(const _Tp&);
- valarray<_Tp>& operator>>=(const _Tp&);
- valarray<_Tp>& operator*= (const valarray<_Tp>&);
- valarray<_Tp>& operator/= (const valarray<_Tp>&);
- valarray<_Tp>& operator%= (const valarray<_Tp>&);
- valarray<_Tp>& operator+= (const valarray<_Tp>&);
- valarray<_Tp>& operator-= (const valarray<_Tp>&);
- valarray<_Tp>& operator^= (const valarray<_Tp>&);
- valarray<_Tp>& operator|= (const valarray<_Tp>&);
- valarray<_Tp>& operator&= (const valarray<_Tp>&);
- valarray<_Tp>& operator<<=(const valarray<_Tp>&);
- valarray<_Tp>& operator>>=(const valarray<_Tp>&);
-
- template<class _Dom>
- valarray<_Tp>& operator*= (const _Expr<_Dom,_Tp>&);
- template<class _Dom>
- valarray<_Tp>& operator/= (const _Expr<_Dom,_Tp>&);
- template<class _Dom>
- valarray<_Tp>& operator%= (const _Expr<_Dom,_Tp>&);
- template<class _Dom>
- valarray<_Tp>& operator+= (const _Expr<_Dom,_Tp>&);
- template<class _Dom>
- valarray<_Tp>& operator-= (const _Expr<_Dom,_Tp>&);
- template<class _Dom>
- valarray<_Tp>& operator^= (const _Expr<_Dom,_Tp>&);
- template<class _Dom>
- valarray<_Tp>& operator|= (const _Expr<_Dom,_Tp>&);
- template<class _Dom>
- valarray<_Tp>& operator&= (const _Expr<_Dom,_Tp>&);
- template<class _Dom>
- valarray<_Tp>& operator<<=(const _Expr<_Dom,_Tp>&);
- template<class _Dom>
- valarray<_Tp>& operator>>=(const _Expr<_Dom,_Tp>&);
-
-
- // _lib.valarray.members_ member functions:
- size_t size() const;
- _Tp sum() const;
- _Tp min() const;
- _Tp max() const;
-
- // FIXME: Extension
- _Tp product () const;
-
- valarray<_Tp> shift (int) const;
- valarray<_Tp> cshift(int) const;
- _Expr<_ValFunClos<_ValArray,_Tp>,_Tp> apply(_Tp func(_Tp)) const;
- _Expr<_RefFunClos<_ValArray,_Tp>,_Tp> apply(_Tp func(const _Tp&)) const;
- void resize(size_t __size, _Tp __c = _Tp());
-
-private:
- size_t _M_size;
- _Tp* __restrict__ _M_data;
-
- friend class _Array<_Tp>;
-};
-
-
-template<typename _Tp> struct _Unary_plus : unary_function<_Tp,_Tp> {
- _Tp operator() (const _Tp& __t) const { return __t; }
-};
-
-template<typename _Tp> struct _Bitwise_and : binary_function<_Tp,_Tp,_Tp> {
- _Tp operator() (_Tp __x, _Tp __y) const { return __x & __y; }
-};
-
-template<typename _Tp> struct _Bitwise_or : binary_function<_Tp,_Tp,_Tp> {
- _Tp operator() (_Tp __x, _Tp __y) const { return __x | __y; }
-};
-
-template<typename _Tp> struct _Bitwise_xor : binary_function<_Tp,_Tp,_Tp> {
- _Tp operator() (_Tp __x, _Tp __y) const { return __x ^ __y; }
-};
-
-template<typename _Tp> struct _Bitwise_not : unary_function<_Tp,_Tp> {
- _Tp operator() (_Tp __t) const { return ~__t; }
-};
-
-template<typename _Tp> struct _Shift_left : unary_function<_Tp,_Tp> {
- _Tp operator() (_Tp __x, _Tp __y) const { return __x << __y; }
-};
-
-template<typename _Tp> struct _Shift_right : unary_function<_Tp,_Tp> {
- _Tp operator() (_Tp __x, _Tp __y) const { return __x >> __y; }
-};
-
-
-template<typename _Tp>
-inline _Tp
-valarray<_Tp>::operator[] (size_t __i) const
-{ return _M_data[__i]; }
-
-template<typename _Tp>
-inline _Tp&
-valarray<_Tp>::operator[] (size_t __i)
-{ return _M_data[__i]; }
-
-} // extern "C++"
-
-#include <std/slice.h>
-#include <std/slice_array.h>
-#include <std/gslice.h>
-#include <std/gslice_array.h>
-#include <std/mask_array.h>
-#include <std/indirect_array.h>
-
-extern "C++" {
-
-template<typename _Tp>
-inline valarray<_Tp>::valarray () : _M_size (0), _M_data (0) {}
-
-template<typename _Tp>
-inline valarray<_Tp>::valarray (size_t __n)
- : _M_size (__n), _M_data (new _Tp[__n]) {}
-
-template<typename _Tp>
-inline valarray<_Tp>::valarray (const _Tp& __t, size_t __n)
- : _M_size (__n), _M_data (new _Tp[__n])
-{ __valarray_fill (_M_data, _M_size, __t); }
-
-template<typename _Tp>
-inline valarray<_Tp>::valarray (const _Tp* __restrict__ __pT, size_t __n)
- : _M_size (__n), _M_data (new _Tp[__n])
-{ __valarray_copy (__pT, __n, _M_data); }
-
-template<typename _Tp>
-inline valarray<_Tp>::valarray (const valarray<_Tp>& __v)
- : _M_size (__v._M_size), _M_data (new _Tp[__v._M_size])
-{ __valarray_copy (__v._M_data, _M_size, _M_data); }
-
-template<typename _Tp>
-inline valarray<_Tp>::valarray (const slice_array<_Tp>& __sa)
- : _M_size (__sa._M_sz), _M_data (new _Tp[__sa._M_sz])
-{ __valarray_copy (__sa._M_array, __sa._M_sz, __sa._M_stride,
- _Array<_Tp>(_M_data)); }
-
-template<typename _Tp>
-inline valarray<_Tp>::valarray (const gslice_array<_Tp>& __ga)
- : _M_size (__ga._M_index.size()), _M_data (new _Tp[_M_size])
-{ __valarray_copy (__ga._M_array, _Array<size_t>(__ga._M_index),
- _Array<_Tp>(_M_data), _M_size); }
-
-template<typename _Tp>
-inline valarray<_Tp>::valarray (const mask_array<_Tp>& __ma)
- : _M_size (__ma._M_sz), _M_data (new _Tp[__ma._M_sz])
-{ __valarray_copy (__ma._M_array, __ma._M_mask,
- _Array<_Tp>(_M_data), _M_size); }
-
-template<typename _Tp>
-inline valarray<_Tp>::valarray (const indirect_array<_Tp>& __ia)
- : _M_size (__ia._M_sz), _M_data (new _Tp[__ia._M_sz])
-{ __valarray_copy (__ia._M_array, __ia._M_index,
- _Array<_Tp>(_M_data), _M_size); }
-
-template<typename _Tp> template<class _Dom>
-inline valarray<_Tp>::valarray (const _Expr<_Dom, _Tp>& __e)
- : _M_size (__e.size ()), _M_data (new _Tp[_M_size])
-{ __valarray_copy (__e, _M_size, _Array<_Tp>(_M_data)); }
-
-template<typename _Tp>
-inline valarray<_Tp>::~valarray () { delete[] _M_data; }
-
-template<typename _Tp>
-inline valarray<_Tp>&
-valarray<_Tp>::operator= (const valarray<_Tp>& __v)
-{
- __valarray_copy(__v._M_data, _M_size, _M_data);
- return *this;
-}
-
-template<typename _Tp>
-inline valarray<_Tp>&
-valarray<_Tp>::operator= (const _Tp& __t)
-{
- __valarray_fill (_M_data, _M_size, __t);
- return *this;
-}
-
-template<typename _Tp>
-inline valarray<_Tp>&
-valarray<_Tp>::operator= (const slice_array<_Tp>& __sa)
-{
- __valarray_copy (__sa._M_array, __sa._M_sz,
- __sa._M_stride, _Array<_Tp>(_M_data));
- return *this;
-}
-
-template<typename _Tp>
-inline valarray<_Tp>&
-valarray<_Tp>::operator= (const gslice_array<_Tp>& __ga)
-{
- __valarray_copy (__ga._M_array, _Array<size_t>(__ga._M_index),
- _Array<_Tp>(_M_data), _M_size);
- return *this;
-}
-
-template<typename _Tp>
-inline valarray<_Tp>&
-valarray<_Tp>::operator= (const mask_array<_Tp>& __ma)
-{
- __valarray_copy (__ma._M_array, __ma._M_mask,
- _Array<_Tp>(_M_data), _M_size);
- return *this;
-}
-
-template<typename _Tp>
-inline valarray<_Tp>&
-valarray<_Tp>::operator= (const indirect_array<_Tp>& __ia)
-{
- __valarray_copy (__ia._M_array, __ia._M_index,
- _Array<_Tp>(_M_data), _M_size);
- return *this;
-}
-
-template<typename _Tp> template<class _Dom>
-inline valarray<_Tp>&
-valarray<_Tp>::operator= (const _Expr<_Dom, _Tp>& __e)
-{
- __valarray_copy (__e, _M_size, _Array<_Tp>(_M_data));
- return *this;
-}
-
-template<typename _Tp>
-inline _Expr<_SClos<_ValArray,_Tp>, _Tp>
-valarray<_Tp>::operator[] (slice __s) const
-{
- typedef _SClos<_ValArray,_Tp> _Closure;
- return _Expr<_Closure, _Tp> (_Closure (_Array<_Tp>(_M_data), __s));
-}
-
-template<typename _Tp>
-inline slice_array<_Tp>
-valarray<_Tp>::operator[] (slice __s)
-{
- return slice_array<_Tp> (_Array<_Tp>(_M_data), __s);
-}
-
-template<typename _Tp>
-inline _Expr<_GClos<_ValArray,_Tp>, _Tp>
-valarray<_Tp>::operator[] (const gslice& __gs) const
-{
- typedef _GClos<_ValArray,_Tp> _Closure;
- return _Expr<_Closure, _Tp>
- (_Closure (_Array<_Tp>(_M_data), __gs._M_index->_M_index));
-}
-
-template<typename _Tp>
-inline gslice_array<_Tp>
-valarray<_Tp>::operator[] (const gslice& __gs)
-{
- return gslice_array<_Tp>
- (_Array<_Tp>(_M_data), __gs._M_index->_M_index);
-}
-
-template<typename _Tp>
-inline valarray<_Tp>
-valarray<_Tp>::operator[] (const valarray<bool>& __m) const
-{
- size_t __s (0);
- size_t __e (__m.size ());
- for (size_t __i=0; __i<__e; ++__i)
- if (__m[__i]) ++__s;
- return valarray<_Tp> (mask_array<_Tp> (_Array<_Tp>(_M_data), __s,
- _Array<bool> (__m)));
-}
-
-template<typename _Tp>
-inline mask_array<_Tp>
-valarray<_Tp>::operator[] (const valarray<bool>& __m)
-{
- size_t __s (0);
- size_t __e (__m.size ());
- for (size_t __i=0; __i<__e; ++__i)
- if (__m[__i]) ++__s;
- return mask_array<_Tp> (_Array<_Tp>(_M_data), __s, _Array<bool> (__m));
-}
-
-template<typename _Tp>
-inline _Expr<_IClos<_ValArray,_Tp>, _Tp>
-valarray<_Tp>::operator[] (const valarray<size_t>& __i) const
-{
- typedef _IClos<_ValArray,_Tp> _Closure;
- return _Expr<_Closure, _Tp> (_Closure (*this, __i));
-}
-
-template<typename _Tp>
-inline indirect_array<_Tp>
-valarray<_Tp>::operator[] (const valarray<size_t>& __i)
-{
- return indirect_array<_Tp> (_Array<_Tp>(_M_data), __i.size(),
- _Array<size_t> (__i));
-}
-
-template<class _Tp>
-inline size_t valarray<_Tp>::size () const { return _M_size; }
-
-template<class _Tp>
-inline _Tp
-valarray<_Tp>::sum () const
-{
- return accumulate (_M_data, _M_data + _M_size, _Tp ());
-}
-
-template<typename _Tp>
-inline _Tp
-valarray<_Tp>::product () const
-{
- return accumulate (_M_data, _M_data+_M_size, _Tp(1), multiplies<_Tp> ());
-}
-
-template <class _Tp>
-inline valarray<_Tp>
-valarray<_Tp>::shift (int __n) const
-{
- _Tp* const __a = static_cast<_Tp*> (alloca (sizeof(_Tp) * _M_size));
- if (! __n) // __n == 0: no shift
- __valarray_copy (_M_data, _M_size, __a);
- else if (__n > 0) { // __n > 0: shift left
- if (__n > _M_size)
- __valarray_fill(__a, __n, _Tp());
- else {
- __valarray_copy (_M_data+__n, _M_size-__n, __a);
- __valarray_fill (__a+_M_size-__n, __n, _Tp());
- }
- }
- else { // __n < 0: shift right
- __valarray_copy (_M_data, _M_size+__n, __a-__n);
- __valarray_fill(__a, -__n, _Tp());
- }
- return valarray<_Tp> (__a, _M_size);
-}
-
-template <class _Tp>
-inline valarray<_Tp>
-valarray<_Tp>::cshift (int __n) const
-{
- _Tp* const __a = static_cast<_Tp*> (alloca (sizeof(_Tp) * _M_size));
- if (! __n) // __n == 0: no cshift
- __valarray_copy(_M_data, _M_size, __a);
- else if (__n > 0) { // __n > 0: cshift left
- __valarray_copy (_M_data, __n, __a + _M_size-__n);
- __valarray_copy (_M_data + __n, _M_size-__n, __a);
- }
- else { // __n < 0: cshift right
- __valarray_copy (_M_data + _M_size + __n, -__n, __a);
- __valarray_copy (_M_data, _M_size + __n, __a - __n);
- }
- return valarray<_Tp> (__a, _M_size);
-}
-
-template <class _Tp>
-inline void
-valarray<_Tp>::resize (size_t __n, _Tp __c)
-{
- if (_M_size != __n) {
- delete[] _M_data;
- _M_size = __n;
- _M_data = new _Tp[_M_size];
- }
- __valarray_fill (_M_data, _M_size, __c);
-}
-
-template<typename _Tp>
-inline _Tp
-valarray<_Tp>::min() const
-{
- return *min_element (_M_data, _M_data+_M_size);
-}
-
-template<typename _Tp>
-inline _Tp
-valarray<_Tp>::max() const
-{
- return *max_element (_M_data, _M_data+_M_size);
-}
-
-template<class _Tp>
-inline _Expr<_ValFunClos<_ValArray,_Tp>,_Tp>
-valarray<_Tp>::apply (_Tp func (_Tp)) const
-{
- typedef _ValFunClos<_ValArray,_Tp> _Closure;
- return _Expr<_Closure,_Tp> (_Closure (*this, func));
-}
-
-template<class _Tp>
-inline _Expr<_RefFunClos<_ValArray,_Tp>,_Tp>
-valarray<_Tp>::apply (_Tp func (const _Tp &)) const
-{
- typedef _RefFunClos<_ValArray,_Tp> _Closure;
- return _Expr<_Closure,_Tp> (_Closure (*this, func));
-}
-
-#define _DEFINE_VALARRAY_UNARY_OPERATOR(_Op, _Name) \
- template<typename _Tp> \
- inline _Expr<_UnClos<_Name,_ValArray,_Tp>, _Tp> \
- valarray<_Tp>::operator##_Op() const \
- { \
- typedef _UnClos<_Name,_ValArray,_Tp> _Closure; \
- return _Expr<_Closure, _Tp> (_Closure (*this)); \
- }
-
- _DEFINE_VALARRAY_UNARY_OPERATOR(+, _Unary_plus)
- _DEFINE_VALARRAY_UNARY_OPERATOR(-, negate)
- _DEFINE_VALARRAY_UNARY_OPERATOR(~, _Bitwise_not)
-
-#undef _DEFINE_VALARRAY_UNARY_OPERATOR
-
- template<typename _Tp>
- inline _Expr<_UnClos<logical_not,_ValArray,_Tp>, bool>
- valarray<_Tp>::operator!() const
- {
- typedef _UnClos<logical_not,_ValArray,_Tp> _Closure;
- return _Expr<_Closure, bool> (_Closure (*this));
- }
-
-#define _DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(_Op, _Name) \
- template<class _Tp> \
- inline valarray<_Tp> & \
- valarray<_Tp>::operator##_Op##= (const _Tp &__t) \
- { \
- _Array_augmented_##_Name (_Array<_Tp>(_M_data), _M_size, __t); \
- return *this; \
- } \
- \
- template<class _Tp> \
- inline valarray<_Tp> & \
- valarray<_Tp>::operator##_Op##= (const valarray<_Tp> &__v) \
- { \
- _Array_augmented_##_Name (_Array<_Tp>(_M_data), _M_size, \
- _Array<_Tp>(__v._M_data)); \
- return *this; \
- }
-
-_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(+, plus)
-_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(-, minus)
-_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(*, multiplies)
-_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(/, divides)
-_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(%, modulus)
-_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(^, xor)
-_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(&, and)
-_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(|, or)
-_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(<<, shift_left)
-_DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(>>, shift_right)
-
-#undef _DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT
-
-
-#define _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(_Op, _Name) \
- template<class _Tp> template<class _Dom> \
- inline valarray<_Tp> & \
- valarray<_Tp>::operator##_Op##= (const _Expr<_Dom,_Tp> &__e) \
- { \
- _Array_augmented_##_Name (_Array<_Tp>(_M_data), __e, _M_size); \
- return *this; \
- }
-
-_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(+, plus)
-_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(-, minus)
-_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(*, multiplies)
-_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(/, divides)
-_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(%, modulus)
-_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(^, xor)
-_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(&, and)
-_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(|, or)
-_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(<<, shift_left)
-_DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT(>>, shift_right)
-
-#undef _DEFINE_VALARRAY_EXPR_AUGMENTED_ASSIGNMENT
-
-
-#define _DEFINE_BINARY_OPERATOR(_Op, _Name) \
- template<typename _Tp> \
- inline _Expr<_BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp>, _Tp> \
- operator##_Op (const valarray<_Tp> &__v, const valarray<_Tp> &__w) \
- { \
- typedef _BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp> _Closure; \
- return _Expr<_Closure, _Tp> (_Closure (__v, __w)); \
- } \
- \
- template<typename _Tp> \
- inline _Expr<_BinClos<_Name,_ValArray,_Constant,_Tp,_Tp>,_Tp> \
- operator##_Op (const valarray<_Tp> &__v, const _Tp &__t) \
- { \
- typedef _BinClos<_Name,_ValArray,_Constant,_Tp,_Tp> _Closure; \
- return _Expr<_Closure, _Tp> (_Closure (__v, __t)); \
- } \
- \
- template<typename _Tp> \
- inline _Expr<_BinClos<_Name,_Constant,_ValArray,_Tp,_Tp>,_Tp> \
- operator##_Op (const _Tp &__t, const valarray<_Tp> &__v) \
- { \
- typedef _BinClos<_Name,_Constant,_ValArray,_Tp,_Tp> _Closure; \
- return _Expr<_Closure, _Tp> (_Closure (__t, __v)); \
- }
-
-_DEFINE_BINARY_OPERATOR(+, plus)
-_DEFINE_BINARY_OPERATOR(-, minus)
-_DEFINE_BINARY_OPERATOR(*, multiplies)
-_DEFINE_BINARY_OPERATOR(/, divides)
-_DEFINE_BINARY_OPERATOR(%, modulus)
-_DEFINE_BINARY_OPERATOR(^, _Bitwise_xor)
-_DEFINE_BINARY_OPERATOR(&, _Bitwise_and)
-_DEFINE_BINARY_OPERATOR(|, _Bitwise_or)
-_DEFINE_BINARY_OPERATOR(<<, _Shift_left)
-_DEFINE_BINARY_OPERATOR(>>, _Shift_right)
-
-#undef _DEFINE_BINARY_OPERATOR
-
-#define _DEFINE_LOGICAL_OPERATOR(_Op, _Name) \
- template<typename _Tp> \
- inline _Expr<_BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp>,bool> \
- operator##_Op (const valarray<_Tp> &__v, const valarray<_Tp> &__w) \
- { \
- typedef _BinClos<_Name,_ValArray,_ValArray,_Tp,_Tp> _Closure; \
- return _Expr<_Closure, bool> (_Closure (__v, __w)); \
- } \
- \
- template<class _Tp> \
- inline _Expr<_BinClos<_Name,_ValArray,_Constant,_Tp,_Tp>,bool> \
- operator##_Op (const valarray<_Tp> &__v, const _Tp &__t) \
- { \
- typedef _BinClos<_Name,_ValArray,_Constant,_Tp,_Tp> _Closure; \
- return _Expr<_Closure, bool> (_Closure (__v, __t)); \
- } \
- \
- template<class _Tp> \
- inline _Expr<_BinClos<_Name,_Constant,_ValArray,_Tp,_Tp>,bool> \
- operator##_Op (const _Tp &__t, const valarray<_Tp> &__v) \
- { \
- typedef _BinClos<_Name,_Constant,_ValArray,_Tp,_Tp> _Closure; \
- return _Expr<_Closure, bool> (_Closure (__t, __v)); \
- }
-
-_DEFINE_LOGICAL_OPERATOR(&&, logical_and)
-_DEFINE_LOGICAL_OPERATOR(||, logical_or)
-_DEFINE_LOGICAL_OPERATOR(==, equal_to)
-_DEFINE_LOGICAL_OPERATOR(!=, not_equal_to)
-_DEFINE_LOGICAL_OPERATOR(<, less)
-_DEFINE_LOGICAL_OPERATOR(>, greater)
-_DEFINE_LOGICAL_OPERATOR(<=, less_equal)
-_DEFINE_LOGICAL_OPERATOR(>=, greater_equal)
-
-#undef _DEFINE_VALARRAY_OPERATOR
-
-#undef _G_NO_VALARRAY_TEMPLATE_EXPORT
-
-} // extern "C++"
-
-#endif // __STD_VALARRAY__
-
-// Local Variables:
-// mode:c++
-// End:
diff --git a/contrib/libstdc++/std/straits.h b/contrib/libstdc++/std/straits.h
deleted file mode 100644
index c80e7ab..0000000
--- a/contrib/libstdc++/std/straits.h
+++ /dev/null
@@ -1,161 +0,0 @@
-// Character traits template for the -*- C++ -*- string classes.
-// Copyright (C) 1994 Free Software Foundation
-
-// This file is part of the GNU ANSI 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-// As a special exception, if you link this library with files
-// compiled with a GNU compiler to produce an executable, this does not cause
-// the resulting executable to be covered by the GNU General Public License.
-// This exception does not however invalidate any other reasons why
-// the executable file might be covered by the GNU General Public License.
-
-// Written by Jason Merrill based upon the specification by Takanori Adachi
-// in ANSI X3J16/94-0013R2.
-
-#ifndef __STRING_CHAR_TRAITS__
-#define __STRING_CHAR_TRAITS__
-
-#ifdef __GNUG__
-// For string_char_traits <char>
-#pragma interface "std/straits.h"
-#endif
-
-#include <cstddef>
-
-extern "C++" {
-template <class charT>
-struct string_char_traits {
- typedef charT char_type; // for users to acquire the basic character type
-
- // constraints
-
- static void assign (char_type& c1, const char_type& c2)
- { c1 = c2; }
- static bool eq (const char_type& c1, const char_type& c2)
- { return (c1 == c2); }
- static bool ne (const char_type& c1, const char_type& c2)
- { return !(c1 == c2); }
- static bool lt (const char_type& c1, const char_type& c2)
- { return (c1 < c2); }
- static char_type eos () { return char_type(); } // the null character
- static bool is_del(char_type a) { return 0; }
- // characteristic function for delimiters of charT
-
- // speed-up functions
-
- static int compare (const char_type* s1, const char_type* s2, size_t n)
- {
- size_t i;
- for (i = 0; i < n; ++i)
- if (ne (s1[i], s2[i]))
- return lt (s1[i], s2[i]) ? -1 : 1;
-
- return 0;
- }
-
- static size_t length (const char_type* s)
- {
- size_t l = 0;
- while (ne (*s++, eos ()))
- ++l;
- return l;
- }
-
- static char_type* copy (char_type* s1, const char_type* s2, size_t n)
- {
- for (; n--; )
- assign (s1[n], s2[n]);
- return s1;
- }
-
- static char_type* move (char_type* s1, const char_type* s2, size_t n)
- {
- char_type a[n];
- size_t i;
- for (i = 0; i < n; ++i)
- assign (a[i], s2[i]);
- for (i = 0; i < n; ++i)
- assign (s1[i], a[i]);
- return s1;
- }
-
- static char_type* set (char_type* s1, const char_type& c, size_t n)
- {
- for (; n--; )
- assign (s1[n], c);
- return s1;
- }
-};
-
-class istream;
-class ostream;
-#include <cctype>
-#include <cstring>
-
-struct string_char_traits <char> {
- typedef char char_type;
-
- static void assign (char_type& c1, const char_type& c2)
- { c1 = c2; }
- static bool eq (const char_type & c1, const char_type& c2)
- { return (c1 == c2); }
- static bool ne (const char_type& c1, const char_type& c2)
- { return (c1 != c2); }
- static bool lt (const char_type& c1, const char_type& c2)
- { return (c1 < c2); }
- static char_type eos () { return 0; }
- static bool is_del(char_type a) { return isspace(a); }
-
- static int compare (const char_type* s1, const char_type* s2, size_t n)
- { return memcmp (s1, s2, n); }
- static size_t length (const char_type* s)
- { return strlen (s); }
- static char_type* copy (char_type* s1, const char_type* s2, size_t n)
- { return (char_type*) memcpy (s1, s2, n); }
- static char_type* move (char_type* s1, const char_type* s2, size_t n)
- { return (char_type*) memmove (s1, s2, n); }
- static char_type* set (char_type* s1, const char_type& c, size_t n)
- { return (char_type*) memset (s1, c, n); }
-};
-
-#if 0
-#include <cwctype>
-struct string_char_traits <wchar_t> {
- typedef wchar_t char_type;
-
- static void assign (char_type& c1, const char_type& c2)
- { c1 = c2; }
- static bool eq (const char_type & c1, const char_type& c2)
- { return (c1 == c2); }
- static bool ne (const char_type& c1, const char_type& c2)
- { return (c1 != c2); }
- static bool lt (const char_type& c1, const char_type& c2)
- { return (c1 < c2); }
- static char_type eos () { return 0; }
- static bool is_del(char_type a) { return iswspace(a); }
-
- static int compare (const char_type* s1, const char_type* s2, size_t n)
- { return wmemcmp (s1, s2, n); }
- static size_t length (const char_type* s)
- { return wcslen (s); }
- static char_type* copy (char_type* s1, const char_type* s2, size_t n)
- { return wmemcpy (s1, s2, n); }
- static char_type* set (char_type* s1, const char_type& c, size_t n)
- { return wmemset (s1, c, n); }
-};
-#endif
-} // extern "C++"
-#endif
diff --git a/contrib/libstdc++/std/valarray_array.h b/contrib/libstdc++/std/valarray_array.h
deleted file mode 100644
index a0b5818..0000000
--- a/contrib/libstdc++/std/valarray_array.h
+++ /dev/null
@@ -1,346 +0,0 @@
-// The template and inlines for the -*- C++ -*- internal _Array helper class.
-
-// Copyright (C) 1997-1999 Cygnus Solutions
-//
-// 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
-
-#ifndef __VALARRAY_ARRAY__
-#define __VALARRAY_ARRAY__
-
-#include <cstdlib>
-#include <cstring>
-
-extern "C++" {
-
-//
-// Helper functions on raw pointers
-//
-
-// fill plain array __a[<__n>] with __t
-template<typename _Tp>
-inline void
-__valarray_fill (_Tp* __restrict__ __a, size_t __n, const _Tp& __t)
-{ while (__n--) *__a++ = __t; }
-
-// fill strided array __a[<__n-1 : __s>] with __t
-template<typename _Tp>
-inline void
-__valarray_fill (_Tp* __restrict__ __a, size_t __n,
- size_t __s, const _Tp& __t)
-{ for (size_t __i=0; __i<__n; ++__i, __a+=__s) *__a = __t; }
-
-// fill indirect array __a[__i[<__n>]] with __i
-template<typename _Tp>
-inline void
-__valarray_fill(_Tp* __restrict__ __a, const size_t* __restrict__ __i,
- size_t __n, const _Tp& __t)
-{ for (size_t __j=0; __j<__n; ++__j, ++__i) __a[*__i] = __t; }
-
-// copy plain array __a[<__n>] in __b[<__n>]
-template<typename _Tp>
-inline void
-__valarray_copy (const _Tp* __restrict__ __a, size_t __n,
- _Tp* __restrict__ __b)
-{ memcpy (__b, __a, __n * sizeof(_Tp)); }
-
-// copy strided array __a[<__n : __s>] in plain __b[<__n>]
-template<typename _Tp>
-inline void
-__valarray_copy (const _Tp* __restrict__ __a, size_t __n, size_t __s,
- _Tp* __restrict__ __b)
-{ for (size_t __i=0; __i<__n; ++__i, ++__b, __a += __s) *__b = *__a; }
-
-// copy plain __a[<__n>] in strided __b[<__n : __s>]
-template<typename _Tp>
-inline void
-__valarray_copy (const _Tp* __restrict__ __a, _Tp* __restrict__ __b,
- size_t __n, size_t __s)
-{ for (size_t __i=0; __i<__n; ++__i, ++__a, __b+=__s) *__b = *__a; }
-
-// copy indexed __a[__i[<__n>]] in plain __b[<__n>]
-template<typename _Tp>
-inline void
-__valarray_copy (const _Tp* __restrict__ __a,
- const size_t* __restrict__ __i,
- _Tp* __restrict__ __b, size_t __n)
-{ for (size_t __j=0; __j<__n; ++__j, ++__b, ++__i) *__b = __a[*__i]; }
-
-// copy plain __a[<__n>] in indexed __b[__i[<__n>]]
-template<typename _Tp>
-inline void
-__valarray_copy (const _Tp* __restrict__ __a, size_t __n,
- _Tp* __restrict__ __b, const size_t* __restrict__ __i)
-{ for (size_t __j=0; __j<__n; ++__j, ++__a, ++__i) __b[*__i] = *__a; }
-
-//
-// Helper class _Array, first layer of valarray abstraction.
-// All operations on valarray should be forwarded to this class
-// whenever possible. -- gdr
-//
-
-template<typename _Tp> struct _Array {
-
- explicit _Array (size_t);
- explicit _Array (_Tp* const __restrict__);
- explicit _Array (const valarray<_Tp>&);
- _Array (const _Tp* __restrict__, size_t);
-
- void free_data() const;
- _Tp* begin () const;
-
- _Tp* const __restrict__ _M_data;
-};
-
-template<typename _Tp>
-inline void
-__valarray_fill (_Array<_Tp> __a, size_t __n, const _Tp& __t)
-{ __valarray_fill (__a._M_data, __n, __t); }
-
-template<typename _Tp>
-inline void
-__valarray_fill (_Array<_Tp> __a, size_t __n, size_t __s, const _Tp& __t)
-{ __valarray_fill (__a._M_data, __n, __s, __t); }
-
-template<typename _Tp>
-inline void
-__valarray_fill (_Array<_Tp> __a, _Array<size_t> __i,
- size_t __n, const _Tp& __t)
-{ __valarray_fill (__a._M_data, __i._M_data, __n, __t); }
-
-template<typename _Tp>
-inline void
-__valarray_copy (_Array<_Tp> __a, size_t __n, _Array<_Tp> __b)
-{ __valarray_copy (__a._M_data, __n, __b._M_data); }
-
-template<typename _Tp>
-inline void
-__valarray_copy (_Array<_Tp> __a, size_t __n, size_t __s, _Array<_Tp> __b)
-{ __valarray_copy(__a._M_data, __n, __s, __b._M_data); }
-
-template<typename _Tp>
-inline void
-__valarray_copy (_Array<_Tp> __a, _Array<_Tp> __b, size_t __n, size_t __s)
-{ __valarray_copy (__a._M_data, __b._M_data, __n, __s); }
-
-template<typename _Tp>
-inline void
-__valarray_copy (_Array<_Tp> __a, _Array<size_t> __i,
- _Array<_Tp> __b, size_t __n)
-{ __valarray_copy (__a._M_data, __i._M_data, __b._M_data, __n); }
-
-template<typename _Tp>
-inline void
-__valarray_copy (_Array<_Tp> __a, size_t __n, _Array<_Tp> __b,
- _Array<size_t> __i)
-{ __valarray_copy (__a._M_data, __n, __b._M_data, __i._M_data); }
-
-template<typename _Tp>
-inline
-_Array<_Tp>::_Array (size_t __n) : _M_data (new _Tp[__n]) {}
-
-template<typename _Tp>
-inline
-_Array<_Tp>::_Array (_Tp* const __restrict__ __p) : _M_data (__p) {}
-
-template<typename _Tp>
-inline _Array<_Tp>::_Array (const valarray<_Tp>& __v)
- : _M_data (__v._M_data) {}
-
-template<typename _Tp>
-inline
-_Array<_Tp>::_Array (const _Tp* __restrict__ __b, size_t __s)
- : _M_data (new _Tp[__s]) { __valarray_copy (__b, __s, _M_data); }
-
-template<typename _Tp>
-inline void
-_Array<_Tp>::free_data() const { delete[] _M_data; }
-
-template<typename _Tp>
-inline _Tp*
-_Array<_Tp>::begin () const
-{ return _M_data; }
-
-#define _DEFINE_ARRAY_FUNCTION(_Op, _Name) \
-template<typename _Tp> \
-inline void \
-_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, const _Tp& __t) \
-{ \
- for (_Tp* __p=__a._M_data; __p<__a._M_data+__n; ++__p) \
- *__p _Op##= __t; \
-} \
- \
-template<typename _Tp> \
-inline void \
-_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, _Array<_Tp> __b) \
-{ \
- _Tp* __p (__a._M_data); \
- for (_Tp* __q=__b._M_data; __q<__b._M_data+__n; ++__p, ++__q) \
- *__p _Op##= *__q; \
-} \
- \
-template<typename _Tp, class _Dom> \
-void \
-_Array_augmented_##_Name (_Array<_Tp> __a, \
- const _Expr<_Dom,_Tp>& __e, size_t __n) \
-{ \
- _Tp* __p (__a._M_data); \
- for (size_t __i=0; __i<__n; ++__i, ++__p) *__p _Op##= __e[__i]; \
-} \
- \
-template<typename _Tp> \
-inline void \
-_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, size_t __s, \
- _Array<_Tp> __b) \
-{ \
- _Tp* __q (__b._M_data); \
- for (_Tp* __p=__a._M_data; __p<__a._M_data+__s*__n; __p+=__s, ++__q) \
- *__p _Op##= *__q; \
-} \
- \
-template<typename _Tp> \
-inline void \
-_Array_augmented_##_Name (_Array<_Tp> __a, _Array<_Tp> __b, \
- size_t __n, size_t __s) \
-{ \
- _Tp* __q (__b._M_data); \
- for (_Tp* __p=__a._M_data; __p<__a._M_data+__n; ++__p, __q+=__s) \
- *__p _Op##= *__q; \
-} \
- \
-template<typename _Tp, class _Dom> \
-void \
-_Array_augmented_##_Name (_Array<_Tp> __a, size_t __s, \
- const _Expr<_Dom,_Tp>& __e, size_t __n) \
-{ \
- _Tp* __p (__a._M_data); \
- for (size_t __i=0; __i<__n; ++__i, __p+=__s) *__p _Op##= __e[__i]; \
-} \
- \
-template<typename _Tp> \
-inline void \
-_Array_augmented_##_Name (_Array<_Tp> __a, _Array<size_t> __i, \
- _Array<_Tp> __b, size_t __n) \
-{ \
- _Tp* __q (__b._M_data); \
- for (size_t* __j=__i._M_data; __j<__i._M_data+__n; ++__j, ++__q) \
- __a._M_data[*__j] _Op##= *__q; \
-} \
- \
-template<typename _Tp> \
-inline void \
-_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, \
- _Array<_Tp> __b, _Array<size_t> __i) \
-{ \
- _Tp* __p (__a._M_data); \
- for (size_t* __j=__i._M_data; __j<__i._M_data+__n; ++__j, ++__p) \
- *__p _Op##= __b._M_data[*__j]; \
-} \
- \
-template<typename _Tp, class _Dom> \
-void \
-_Array_augmented_##_Name (_Array<_Tp> __a, _Array<size_t> __i, \
- const _Expr<_Dom, _Tp>& __e, size_t __n) \
-{ \
- size_t* __j (__i._M_data); \
- for (size_t __k=0; __k<__n; ++__k, ++__j) \
- __a._M_data[*__j] _Op##= __e[__k]; \
-} \
- \
-template<typename _Tp> \
-void \
-_Array_augmented_##_Name (_Array<_Tp> __a, _Array<bool> __m, \
- _Array<_Tp> __b, size_t __n) \
-{ \
- bool* ok (__m._M_data); \
- _Tp* __p (__a._M_data); \
- for (_Tp* __q=__b._M_data; __q<__b._M_data+__n; ++__q, ++ok, ++__p) { \
- while (! *ok) { \
- ++ok; \
- ++__p; \
- } \
- *__p _Op##= *__q; \
- } \
-} \
- \
-template<typename _Tp> \
-void \
-_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, \
- _Array<_Tp> __b, _Array<bool> __m) \
-{ \
- bool* ok (__m._M_data); \
- _Tp* __q (__b._M_data); \
- for (_Tp* __p=__a._M_data; __p<__a._M_data+__n; ++__p, ++ok, ++__q) { \
- while (! *ok) { \
- ++ok; \
- ++__q; \
- } \
- *__p _Op##= *__q; \
- } \
-} \
- \
-template<typename _Tp, class _Dom> \
-void \
-_Array_augmented_##_Name (_Array<_Tp> __a, _Array<bool> __m, \
- const _Expr<_Dom, _Tp>& __e, size_t __n) \
-{ \
- bool* ok(__m._M_data); \
- _Tp* __p (__a._M_data); \
- for (size_t __i=0; __i<__n; ++__i, ++ok, ++__p) { \
- while (! *ok) { \
- ++ok; \
- ++__p; \
- } \
- *__p _Op##= __e[__i]; \
- } \
-}
-
-_DEFINE_ARRAY_FUNCTION(+, plus)
-_DEFINE_ARRAY_FUNCTION(-, minus)
-_DEFINE_ARRAY_FUNCTION(*, multiplies)
-_DEFINE_ARRAY_FUNCTION(/, divides)
-_DEFINE_ARRAY_FUNCTION(%, modulus)
-_DEFINE_ARRAY_FUNCTION(^, xor)
-_DEFINE_ARRAY_FUNCTION(|, or)
-_DEFINE_ARRAY_FUNCTION(&, and)
-_DEFINE_ARRAY_FUNCTION(<<, shift_left)
-_DEFINE_ARRAY_FUNCTION(>>, shift_right)
-
-#undef _DEFINE_ARRAY_FUNCTION
-
-} // extern "C++"
-
-#ifdef _G_NO_VALARRAY_TEMPLATE_EXPORT
-# define export
-# include <std/valarray_array.tcc>
-#endif
-
-#endif // __VALARRAY_ARRAY__
-
-// Local Variables:
-// mode:c++
-// End:
diff --git a/contrib/libstdc++/std/valarray_array.tcc b/contrib/libstdc++/std/valarray_array.tcc
deleted file mode 100644
index bd66925..0000000
--- a/contrib/libstdc++/std/valarray_array.tcc
+++ /dev/null
@@ -1,130 +0,0 @@
-// The template and inlines for the -*- C++ -*- internal _Array helper class.
-
-// Copyright (C) 1997-1999 Cygnus Solutions
-//
-// 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@DPTMaths.ENS-Cachan.Fr>
-
-#ifndef __VALARRAY_ARRAY_TCC__
-#define __VALARRAY_ARRAY_TCC__
-
-extern "C++" {
-
-export template<typename _Tp>
-void
-__valarray_fill (_Array<_Tp> __a, size_t __n, _Array<bool> __m, const _Tp& __t)
-{
- _Tp* __p = __a._M_data;
- bool* __ok (__m._M_data);
- for (size_t __i=0; __i<__n; ++__i, ++__ok, ++__p) {
- while (! *__ok) {
- ++__ok;
- ++__p;
- }
- *__p = __t;
- }
-}
-
-export template<typename _Tp>
-void
-__valarray_copy (_Array<_Tp> __a, _Array<bool> __m, _Array<_Tp> __b, size_t __n)
-{
- _Tp* __p (__a._M_data);
- bool* __ok (__m._M_data);
- for (_Tp* __q=__b._M_data; __q<__b._M_data+__n; ++__q, ++__ok, ++__p) {
- while (! *__ok) {
- ++__ok;
- ++__p;
- }
- *__q = *__p;
- }
-}
-
-export template<typename _Tp>
-void
-__valarray_copy (_Array<_Tp> __a, size_t __n, _Array<_Tp> __b, _Array<bool> __m)
-{
- _Tp* __q (__b._M_data);
- bool* __ok (__m._M_data);
- for (_Tp* __p=__a._M_data; __p<__a._M_data+__n; ++__p, ++__ok, ++__q) {
- while (! *__ok) {
- ++__ok;
- ++__q;
- }
- *__q = *__p;
- }
-}
-
-export template<typename _Tp, class _Dom>
-void
-__valarray_copy (const _Expr<_Dom, _Tp>& __e, size_t __n, _Array<_Tp> __a)
-{
- _Tp* __p (__a._M_data);
- for (size_t __i=0; __i<__n; ++__i, ++__p) *__p = __e[__i];
-}
-
-export template<typename _Tp, class _Dom>
-void
-__valarray_copy (const _Expr<_Dom, _Tp>& __e, size_t __n,
- _Array<_Tp> __a, size_t __s)
-{
- _Tp* __p (__a._M_data);
- for (size_t __i=0; __i<__n; ++__i, __p+=__s) *__p = __e[__i];
-}
-
-export template<typename _Tp, class _Dom>
-void
-__valarray_copy (const _Expr<_Dom, _Tp>& __e, size_t __n,
- _Array<_Tp> __a, _Array<size_t> __i)
-{
- size_t* __j (__i._M_data);
- for (size_t __k=0; __k<__n; ++__k, ++__j) __a._M_data[*__j] = __e[__k];
-}
-
-export template<typename _Tp, class _Dom>
-void
-__valarray_copy (const _Expr<_Dom, _Tp>& __e, size_t __n,
- _Array<_Tp> __a, _Array<bool> __m)
-{
- bool* __ok (__m._M_data);
- _Tp* __p (__a._M_data);
- for (size_t __i=0; __i<__n; ++__i, ++__ok, ++__p) {
- while (! *__ok) {
- ++__ok;
- ++__p;
- }
- *__p = __e[__i];
- }
-}
-
-} // extern "C++"
-
-#endif // __VALARRAY_ARRAY_TCC__
-
-// Local Variables:
-// mode:c++
-// End:
diff --git a/contrib/libstdc++/std/valarray_meta.h b/contrib/libstdc++/std/valarray_meta.h
deleted file mode 100644
index 48fb213..0000000
--- a/contrib/libstdc++/std/valarray_meta.h
+++ /dev/null
@@ -1,1046 +0,0 @@
-// The template and inlines for the -*- C++ -*- internal _Meta class.
-
-// Copyright (C) 1997-1999 Cygnus Solutions
-//
-// 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-// Written by Gabriel Dos Reis <Gabriel.Dos-Reis@cmla.ens-cachan.fr>
-
-#ifndef _CPP_VALARRAY_META_H
-#define _CPP_VALARRAY_META_H 1
-
-//
-// Implementing a loosened valarray return value is tricky.
-// First we need to meet 26.3.1/3: we should not add more than
-// two levels of template nesting. Therefore we resort to template
-// template to "flatten" loosened return value types.
-// At some point we use partial specialization to remove one level
-// template nesting due to _Expr<>
-//
-
-
-// This class is NOT defined. It doesn't need to.
-template<typename _Tp1, typename _Tp2> class _Constant;
-
-//
-// Unary function application closure.
-//
-template<class _Dom> class _UnFunBase {
-public:
- typedef typename _Dom::value_type value_type;
- typedef value_type _Vt;
-
- _UnFunBase (const _Dom& __e, _Vt __f(_Vt))
- : _M_expr(__e), _M_func(__f) {}
-
- _Vt operator[] (size_t __i) const { return _M_func(_M_expr[__i]); }
- size_t size () const { return _M_expr.size(); }
-
-private:
- const _Dom& _M_expr;
- _Vt (*_M_func)(_Vt);
-};
-
-template<template<class, class> class _Meta, class _Dom> class _UnFunClos;
-
-template<class _Dom>
-struct _UnFunClos<_Expr,_Dom> : _UnFunBase<_Dom> {
- typedef _UnFunBase<_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _UnFunClos (const _Dom& __e, value_type __f(value_type))
- : _Base (__e, __f) {}
-};
-
-template<typename _Tp>
-struct _UnFunClos<_ValArray,_Tp> : _UnFunBase<valarray<_Tp> > {
- typedef _UnFunBase<valarray<_Tp> > _Base;
- typedef typename _Base::value_type value_type;
-
- _UnFunClos (const valarray<_Tp>& __v, _Tp __f(_Tp))
- : _Base (__v, __f) {}
-};
-
-//
-// Binary function application closure.
-//
-template<template<class, class> class _Meta1,
- template<class, class> class Meta2,
- class _Dom1, class _Dom2> class _BinFunClos;
-
-template<class _Dom1, class _Dom2> class _BinFunBase {
-public:
- typedef typename _Dom1::value_type value_type;
- typedef value_type _Vt;
-
- _BinFunBase (const _Dom1& __e1, const _Dom2& __e2,
- _Vt __f (_Vt, _Vt))
- : _M_expr1 (__e1), _M_expr2 (__e2), _M_func (__f) {}
-
- value_type operator[] (size_t __i) const
- { return _M_func (_M_expr1[__i], _M_expr2[__i]); }
- size_t size () const { return _M_expr1.size (); }
-
-private:
- const _Dom1& _M_expr1;
- const _Dom2& _M_expr2;
- _Vt (*_M_func)(_Vt, _Vt);
-};
-
-template<class _Dom> class _BinFunBase1 {
-public:
- typedef typename _Dom::value_type value_type ;
- typedef value_type _Vt;
-
- _BinFunBase1 (const _Vt& __c, const _Dom& __e, _Vt __f(_Vt, _Vt))
- : _M_expr1 (__c), _M_expr2 (__e), _M_func (__f) {}
-
- value_type operator[] (size_t __i) const
- { return _M_func (_M_expr1, _M_expr2[__i]); }
- size_t size () const { return _M_expr2.size (); }
-
-private:
- const _Vt& _M_expr1;
- const _Dom& _M_expr2;
- _Vt (*_M_func)(_Vt, _Vt);
-};
-
-template<class _Dom> class _BinFunBase2 {
-public:
- typedef typename _Dom::value_type value_type;
- typedef value_type _Vt;
-
- _BinFunBase2 (const _Dom& __e, const _Vt& __c, _Vt __f(_Vt, _Vt))
- : _M_expr1 (__e), _M_expr2 (__c), _M_func (__f) {}
-
- value_type operator[] (size_t __i) const
- { return _M_func (_M_expr1[__i], _M_expr2); }
- size_t size () const { return _M_expr1.size (); }
-
-private:
- const _Dom& _M_expr1;
- const _Vt& _M_expr2;
- _Vt (*_M_func)(_Vt, _Vt);
-};
-
-template<class _Dom1, class _Dom2>
-struct _BinFunClos<_Expr,_Expr,_Dom1,_Dom2> : _BinFunBase<_Dom1,_Dom2> {
- typedef _BinFunBase<_Dom1,_Dom2> _Base;
- typedef typename _Base::value_type value_type;
- typedef value_type _Tp;
-
- _BinFunClos (const _Dom1& __e1, const _Dom2& __e2,
- _Tp __f(_Tp, _Tp))
- : _Base (__e1, __e2, __f) {}
-};
-
-template<typename _Tp>
-struct _BinFunClos<_ValArray,_ValArray,_Tp,_Tp>
- : _BinFunBase<valarray<_Tp>, valarray<_Tp> > {
- typedef _BinFunBase<valarray<_Tp>, valarray<_Tp> > _Base;
- typedef _Tp value_type;
-
- _BinFunClos (const valarray<_Tp>& __v, const valarray<_Tp>& __w,
- _Tp __f(_Tp, _Tp))
- : _Base (__v, __w, __f) {}
-};
-
-template<class _Dom>
-struct _BinFunClos<_Expr,_ValArray,_Dom,typename _Dom::value_type>
- : _BinFunBase<_Dom,valarray<typename _Dom::value_type> > {
- typedef typename _Dom::value_type _Tp;
- typedef _BinFunBase<_Dom,valarray<_Tp> > _Base;
- typedef _Tp value_type;
-
- _BinFunClos (const _Dom& __e, const valarray<_Tp>& __v,
- _Tp __f(_Tp, _Tp))
- : _Base (__e, __v, __f) {}
-};
-
-template<class _Dom>
-struct _BinFunClos<_ValArray,_Expr,typename _Dom::value_type,_Dom>
- : _BinFunBase<valarray<typename _Dom::value_type>,_Dom> {
- typedef typename _Dom::value_type _Tp;
- typedef _BinFunBase<_Dom,valarray<_Tp> > _Base;
- typedef _Tp value_type;
-
- _BinFunClos (const valarray<_Tp>& __v, const _Dom& __e,
- _Tp __f(_Tp, _Tp))
- : _Base (__v, __e, __f) {}
-};
-
-template<class _Dom>
-struct _BinFunClos<_Expr,_Constant,_Dom,typename _Dom::value_type>
- : _BinFunBase2<_Dom> {
- typedef typename _Dom::value_type _Tp;
- typedef _Tp value_type;
- typedef _BinFunBase2<_Dom> _Base;
-
- _BinFunClos (const _Dom& __e, const _Tp& __t, _Tp __f (_Tp, _Tp))
- : _Base (__e, __t, __f) {}
-};
-
-template<class _Dom>
-struct _BinFunClos<_Constant,_Expr,_Dom,typename _Dom::value_type>
- : _BinFunBase1<_Dom> {
- typedef typename _Dom::value_type _Tp;
- typedef _Tp value_type;
- typedef _BinFunBase1<_Dom> _Base;
-
- _BinFunClos (const _Tp& __t, const _Dom& __e, _Tp __f (_Tp, _Tp))
- : _Base (__t, __e, __f) {}
-};
-
-template<typename _Tp>
-struct _BinFunClos<_ValArray,_Constant,_Tp,_Tp>
- : _BinFunBase2<valarray<_Tp> > {
- typedef _BinFunBase2<valarray<_Tp> > _Base;
- typedef _Tp value_type;
-
- _BinFunClos (const valarray<_Tp>& __v, const _Tp& __t,
- _Tp __f(_Tp, _Tp))
- : _Base (__v, __t, __f) {}
-};
-
-template<typename _Tp>
-struct _BinFunClos<_Constant,_ValArray,_Tp,_Tp>
- : _BinFunBase1<valarray<_Tp> > {
- typedef _BinFunBase1<valarray<_Tp> > _Base;
- typedef _Tp value_type;
-
- _BinFunClos (const _Tp& __t, const valarray<_Tp>& __v,
- _Tp __f (_Tp, _Tp))
- : _Base (__t, __v, __f) {}
-};
-
-//
-// Apply function taking a value/const reference closure
-//
-
-template<typename _Dom, typename _Arg> class _FunBase {
-public:
- typedef typename _Dom::value_type value_type;
-
- _FunBase (const _Dom& __e, value_type __f(_Arg))
- : _M_expr (__e), _M_func (__f) {}
-
- value_type operator[] (size_t __i) const
- { return _M_func (_M_expr[__i]); }
- size_t size() const { return _M_expr.size ();}
-
-private:
- const _Dom& _M_expr;
- value_type (*_M_func)(_Arg);
-};
-
-template<class _Dom>
-struct _ValFunClos<_Expr,_Dom>
- : _FunBase<_Dom, typename _Dom::value_type> {
- typedef _FunBase<_Dom, typename _Dom::value_type> _Base;
- typedef typename _Base::value_type value_type;
- typedef value_type _Tp;
-
- _ValFunClos (const _Dom& __e, _Tp __f (_Tp)) : _Base (__e, __f) {}
-};
-
-template<typename _Tp>
-struct _ValFunClos<_ValArray,_Tp>
- : _FunBase<valarray<_Tp>, _Tp> {
- typedef _FunBase<valarray<_Tp>, _Tp> _Base;
- typedef _Tp value_type;
-
- _ValFunClos (const valarray<_Tp>& __v, _Tp __f(_Tp))
- : _Base (__v, __f) {}
-};
-
-template<class _Dom>
-struct _RefFunClos<_Expr,_Dom> :
- _FunBase<_Dom, const typename _Dom::value_type&> {
- typedef _FunBase<_Dom, const typename _Dom::value_type&> _Base;
- typedef typename _Base::value_type value_type;
- typedef value_type _Tp;
-
- _RefFunClos (const _Dom& __e, _Tp __f (const _Tp&))
- : _Base (__e, __f) {}
-};
-
-template<typename _Tp>
-struct _RefFunClos<_ValArray,_Tp>
- : _FunBase<valarray<_Tp>, const _Tp&> {
- typedef _FunBase<valarray<_Tp>, const _Tp&> _Base;
- typedef _Tp value_type;
-
- _RefFunClos (const valarray<_Tp>& __v, _Tp __f(const _Tp&))
- : _Base (__v, __f) {}
-};
-
-//
-// Unary expression closure.
-//
-
-template<template<class> class _Oper, typename _Arg>
-class _UnBase {
-public:
- typedef _Oper<typename _Arg::value_type> _Op;
- typedef typename _Op::result_type value_type;
-
- _UnBase (const _Arg& __e) : _M_expr(__e) {}
- value_type operator[] (size_t) const;
- size_t size () const { return _M_expr.size (); }
-
-private:
- const _Arg& _M_expr;
-};
-
-template<template<class> class _Oper, typename _Arg>
-inline typename _UnBase<_Oper, _Arg>::value_type
-_UnBase<_Oper, _Arg>::operator[] (size_t __i) const
-{ return _Op() (_M_expr[__i]); }
-
-template<template<class> class _Oper, class _Dom>
-struct _UnClos<_Oper, _Expr, _Dom> : _UnBase<_Oper, _Dom> {
- typedef _Dom _Arg;
- typedef _UnBase<_Oper, _Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _UnClos (const _Arg& __e) : _Base(__e) {}
-};
-
-template<template<class> class _Oper, typename _Tp>
-struct _UnClos<_Oper, _ValArray, _Tp> : _UnBase<_Oper, valarray<_Tp> > {
- typedef valarray<_Tp> _Arg;
- typedef _UnBase<_Oper, valarray<_Tp> > _Base;
- typedef typename _Base::value_type value_type;
-
- _UnClos (const _Arg& __e) : _Base(__e) {}
-};
-
-
-//
-// Binary expression closure.
-//
-
-template<template<class> class _Oper, typename _FirstArg, typename _SecondArg>
-class _BinBase {
-public:
- typedef _Oper<typename _FirstArg::value_type> _Op;
- typedef typename _Op::result_type value_type;
-
- _BinBase (const _FirstArg& __e1, const _SecondArg& __e2)
- : _M_expr1 (__e1), _M_expr2 (__e2) {}
- value_type operator[] (size_t) const;
- size_t size () const { return _M_expr1.size (); }
-
-private:
- const _FirstArg& _M_expr1;
- const _SecondArg& _M_expr2;
-};
-
-template<template<class> class _Oper, typename _FirstArg, typename _SecondArg>
-inline typename _BinBase<_Oper,_FirstArg,_SecondArg>::value_type
-_BinBase<_Oper,_FirstArg,_SecondArg>::operator[] (size_t __i) const
-{ return _Op() (_M_expr1[__i], _M_expr2[__i]); }
-
-
-template<template<class> class _Oper, class _Clos>
-class _BinBase2 {
-public:
- typedef typename _Clos::value_type _Vt;
- typedef _Oper<_Vt> _Op;
- typedef typename _Op::result_type value_type;
-
- _BinBase2 (const _Clos& __e, const _Vt& __t)
- : _M_expr1 (__e), _M_expr2 (__t) {}
- value_type operator[] (size_t) const;
- size_t size () const { return _M_expr1.size (); }
-
-private:
- const _Clos& _M_expr1;
- const _Vt& _M_expr2;
-};
-
-template<template<class> class _Oper, class _Clos>
-inline typename _BinBase2<_Oper,_Clos>::value_type
-_BinBase2<_Oper,_Clos>::operator[] (size_t __i) const
-{ return _Op() (_M_expr1[__i], _M_expr2); }
-
-
-template<template<class> class _Oper, class _Clos>
-class _BinBase1 {
-public:
- typedef typename _Clos::value_type _Vt;
- typedef _Oper<_Vt> _Op;
- typedef typename _Op::result_type value_type;
-
- _BinBase1 (const _Vt& __t, const _Clos& __e)
- : _M_expr1 (__t), _M_expr2 (__e) {}
- value_type operator[] (size_t) const;
- size_t size () const { return _M_expr2.size (); }
-
-private:
- const _Vt& _M_expr1;
- const _Clos& _M_expr2;
-};
-
-template<template<class> class _Oper, class _Clos>
-inline typename
-_BinBase1<_Oper,_Clos>::value_type
-_BinBase1<_Oper,_Clos>:: operator[] (size_t __i) const
-{ return _Op() (_M_expr1, _M_expr2[__i]); }
-
-
-template<template<class> class _Oper, class _Dom1, class _Dom2>
-struct _BinClos<_Oper, _Expr, _Expr, _Dom1, _Dom2>
- : _BinBase<_Oper,_Dom1,_Dom2> {
- typedef _BinBase<_Oper,_Dom1,_Dom2> _Base;
- typedef typename _Base::value_type value_type;
-
- _BinClos(const _Dom1& __e1, const _Dom2& __e2) : _Base(__e1, __e2) {}
-};
-
-template<template<class> class _Oper, typename _Tp>
-struct _BinClos<_Oper,_ValArray,_ValArray,_Tp,_Tp>
- : _BinBase<_Oper,valarray<_Tp>,valarray<_Tp> > {
- typedef _BinBase<_Oper,valarray<_Tp>,valarray<_Tp> > _Base;
- typedef _Tp value_type;
-
- _BinClos (const valarray<_Tp>& __v, const valarray<_Tp>& __w)
- : _Base (__v, __w) {}
-};
-
-template<template<class> class _Oper, class _Dom>
-struct _BinClos<_Oper,_Expr,_ValArray,_Dom,typename _Dom::value_type>
- : _BinBase<_Oper,_Dom,valarray<typename _Dom::value_type> > {
- typedef typename _Dom::value_type _Tp;
- typedef _BinBase<_Oper,_Dom,valarray<_Tp> > _Base;
- typedef typename _Base::value_type value_type;
-
- _BinClos(const _Dom& __e1, const valarray<_Tp>& __e2)
- : _Base (__e1, __e2) {}
-};
-
-template<template<class> class _Oper, class _Dom>
-struct _BinClos<_Oper,_ValArray,_Expr,typename _Dom::value_type,_Dom>
- : _BinBase<_Oper,valarray<typename _Dom::value_type>,_Dom> {
- typedef typename _Dom::value_type _Tp;
- typedef _BinBase<_Oper,valarray<_Tp>,_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _BinClos (const valarray<_Tp>& __e1, const _Dom& __e2)
- : _Base (__e1, __e2) {}
-};
-
-template<template<class> class _Oper, class _Dom>
-struct _BinClos<_Oper,_Expr,_Constant,_Dom,typename _Dom::value_type>
- : _BinBase2<_Oper,_Dom> {
- typedef typename _Dom::value_type _Tp;
- typedef _BinBase2<_Oper,_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _BinClos (const _Dom& __e1, const _Tp& __e2) : _Base (__e1, __e2) {}
-};
-
-template<template<class> class _Oper, class _Dom>
-struct _BinClos<_Oper,_Constant,_Expr,typename _Dom::value_type,_Dom>
- : _BinBase1<_Oper,_Dom> {
- typedef typename _Dom::value_type _Tp;
- typedef _BinBase1<_Oper,_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _BinClos (const _Tp& __e1, const _Dom& __e2) : _Base (__e1, __e2) {}
-};
-
-template<template<class> class _Oper, typename _Tp>
-struct _BinClos<_Oper,_ValArray,_Constant,_Tp,_Tp>
- : _BinBase2<_Oper,valarray<_Tp> > {
- typedef _BinBase2<_Oper,valarray<_Tp> > _Base;
- typedef typename _Base::value_type value_type;
-
- _BinClos (const valarray<_Tp>& __v, const _Tp& __t)
- : _Base (__v, __t) {}
-};
-
-template<template<class> class _Oper, typename _Tp>
-struct _BinClos<_Oper,_Constant,_ValArray,_Tp,_Tp>
- : _BinBase1<_Oper,valarray<_Tp> > {
- typedef _BinBase1<_Oper,valarray<_Tp> > _Base;
- typedef typename _Base::value_type value_type;
-
- _BinClos (const _Tp& __t, const valarray<_Tp>& __v)
- : _Base (__t, __v) {}
-};
-
-
-//
-// slice_array closure.
-//
-template<typename _Dom> class _SBase {
-public:
- typedef typename _Dom::value_type value_type;
-
- _SBase (const _Dom& __e, const slice& __s)
- : _M_expr (__e), _M_slice (__s) {}
- value_type operator[] (size_t __i) const
- { return _M_expr[_M_slice.start () + __i * _M_slice.stride ()]; }
- size_t size() const { return _M_slice.size (); }
-
-private:
- const _Dom& _M_expr;
- const slice& _M_slice;
-};
-
-template<typename _Tp> class _SBase<_Array<_Tp> > {
-public:
- typedef _Tp value_type;
-
- _SBase (_Array<_Tp> __a, const slice& __s)
- : _M_array (__a._M_data+__s.start()), _M_size (__s.size()),
- _M_stride (__s.stride()) {}
- value_type operator[] (size_t __i) const
- { return _M_array._M_data[__i * _M_stride]; }
- size_t size() const { return _M_size; }
-
-private:
- const _Array<_Tp> _M_array;
- const size_t _M_size;
- const size_t _M_stride;
-};
-
-template<class _Dom> struct _SClos<_Expr,_Dom> : _SBase<_Dom> {
- typedef _SBase<_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _SClos (const _Dom& __e, const slice& __s) : _Base (__e, __s) {}
-};
-
-template<typename _Tp>
-struct _SClos<_ValArray,_Tp> : _SBase<_Array<_Tp> > {
- typedef _SBase<_Array<_Tp> > _Base;
- typedef _Tp value_type;
-
- _SClos (_Array<_Tp> __a, const slice& __s) : _Base (__a, __s) {}
-};
-
-//
-// gslice_array closure.
-//
-template<class _Dom> class _GBase {
-public:
- typedef typename _Dom::value_type value_type;
-
- _GBase (const _Dom& __e, const valarray<size_t>& __i)
- : _M_expr (__e), _M_index(__i) {}
- value_type operator[] (size_t __i) const
- { return _M_expr[_M_index[__i]]; }
- size_t size () const { return _M_index.size(); }
-
-private:
- const _Dom& _M_expr;
- const valarray<size_t>& _M_index;
-};
-
-template<typename _Tp> class _GBase<_Array<_Tp> > {
-public:
- typedef _Tp value_type;
-
- _GBase (_Array<_Tp> __a, const valarray<size_t>& __i)
- : _M_array (__a), _M_index(__i) {}
- value_type operator[] (size_t __i) const
- { return _M_array._M_data[_M_index[__i]]; }
- size_t size () const { return _M_index.size(); }
-
-private:
- const _Array<_Tp> _M_array;
- const valarray<size_t>& _M_index;
-};
-
-template<class _Dom> struct _GClos<_Expr,_Dom> : _GBase<_Dom> {
- typedef _GBase<_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _GClos (const _Dom& __e, const valarray<size_t>& __i)
- : _Base (__e, __i) {}
-};
-
-template<typename _Tp>
-struct _GClos<_ValArray,_Tp> : _GBase<_Array<_Tp> > {
- typedef _GBase<_Array<_Tp> > _Base;
- typedef typename _Base::value_type value_type;
-
- _GClos (_Array<_Tp> __a, const valarray<size_t>& __i)
- : _Base (__a, __i) {}
-};
-
-//
-// indirect_array closure
-//
-
-template<class _Dom> class _IBase {
-public:
- typedef typename _Dom::value_type value_type;
-
- _IBase (const _Dom& __e, const valarray<size_t>& __i)
- : _M_expr (__e), _M_index (__i) {}
- value_type operator[] (size_t __i) const
- { return _M_expr[_M_index[__i]]; }
- size_t size() const { return _M_index.size(); }
-
-private:
- const _Dom& _M_expr;
- const valarray<size_t>& _M_index;
-};
-
-template<class _Dom> struct _IClos<_Expr,_Dom> : _IBase<_Dom> {
- typedef _IBase<_Dom> _Base;
- typedef typename _Base::value_type value_type;
-
- _IClos (const _Dom& __e, const valarray<size_t>& __i)
- : _Base (__e, __i) {}
-};
-
-template<typename _Tp>
-struct _IClos<_ValArray,_Tp> : _IBase<valarray<_Tp> > {
- typedef _IBase<valarray<_Tp> > _Base;
- typedef _Tp value_type;
-
- _IClos (const valarray<_Tp>& __a, const valarray<size_t>& __i)
- : _Base (__a, __i) {}
-};
-
-//
-// class _Expr
-//
-template<class _Clos, typename _Tp> class _Expr {
-public:
- typedef _Tp value_type;
-
- _Expr (const _Clos&);
-
- const _Clos& operator() () const;
-
- value_type operator[] (size_t) const;
- valarray<value_type> operator[] (slice) const;
- valarray<value_type> operator[] (const gslice&) const;
- valarray<value_type> operator[] (const valarray<bool>&) const;
- valarray<value_type> operator[] (const valarray<size_t>&) const;
-
- _Expr<_UnClos<_Unary_plus,_Expr,_Clos>, value_type>
- operator+ () const;
-
- _Expr<_UnClos<negate,_Expr,_Clos>, value_type>
- operator- () const;
-
- _Expr<_UnClos<_Bitwise_not,_Expr,_Clos>, value_type>
- operator~ () const;
-
- _Expr<_UnClos<logical_not,_Expr,_Clos>, bool>
- operator! () const;
-
- size_t size () const;
- value_type sum () const;
-
- valarray<value_type> shift (int) const;
- valarray<value_type> cshift (int) const;
-// _Meta<_ApplyFunctionWithValue<_Expr>, value_type>
-// apply (value_type _M_func (value_type)) const;
-// _Meta<_ApplyFunctionWithConstRef<_Expr>, value_type>
-// apply (value_type _M_func (const value_type&)) const;
-
-private:
- const _Clos _M_closure;
-};
-
-template<class _Clos, typename _Tp>
-inline
-_Expr<_Clos,_Tp>::_Expr (const _Clos& __c) : _M_closure(__c) {}
-
-template<class _Clos, typename _Tp>
-inline const _Clos&
-_Expr<_Clos,_Tp>::operator() () const
-{ return _M_closure; }
-
-template<class _Clos, typename _Tp>
-inline _Tp
-_Expr<_Clos,_Tp>::operator[] (size_t __i) const
-{ return _M_closure[__i]; }
-
-template<class _Clos, typename _Tp>
-inline valarray<_Tp>
-_Expr<_Clos,_Tp>::operator[] (slice __s) const
-{ return _M_closure[__s]; }
-
-template<class _Clos, typename _Tp>
-inline valarray<_Tp>
-_Expr<_Clos,_Tp>::operator[] (const gslice& __gs) const
-{ return _M_closure[__gs]; }
-
-template<class _Clos, typename _Tp>
-inline valarray<_Tp>
-_Expr<_Clos,_Tp>::operator[] (const valarray<bool>& __m) const
-{ return _M_closure[__m]; }
-
-template<class _Clos, typename _Tp>
-inline valarray<_Tp>
-_Expr<_Clos,_Tp>::operator[] (const valarray<size_t>& __i) const
-{ return _M_closure[__i]; }
-
-template<class _Clos, typename _Tp>
-inline size_t
-_Expr<_Clos,_Tp>::size () const { return _M_closure.size (); }
-
-// XXX: replace this with a more robust summation algorithm.
-template<class _Clos, typename _Tp>
-inline _Tp
-_Expr<_Clos,_Tp>::sum () const
-{
- _Tp __s(_Tp());
- size_t __n (_M_closure.size ());
- for (size_t __i=0; __i<__n; ++__i) __s += _M_closure[__i];
- return __s;
-}
-
-template<class _Dom, typename _Tp>
-inline _Tp
-min (const _Expr<_Dom,_Tp>& __e)
-{
- size_t __s (__e.size ());
- _Tp __m (__e[0]);
- for (size_t __i=1; __i<__s; ++__i)
- if (__m > __e[__i]) __m = __e[__i];
- return __m;
-}
-
-template<class _Dom, typename _Tp>
-inline _Tp
-max (const _Expr<_Dom,_Tp>& __e)
-{
- size_t __s (__e.size());
- _Tp __m (__e[0]);
- for (size_t __i=1; __i<__s; ++__i)
- if (__m < __e[__i]) __m = __e[__i];
- return __m;
-}
-
-template<class _Dom, typename _Tp>
-inline _Expr<_UnClos<logical_not,_Expr,_Dom>, bool>
-_Expr<_Dom,_Tp>::operator! () const
-{
- typedef _UnClos<logical_not,_Expr,_Dom> _Closure;
- return _Expr<_Closure,_Tp> (_Closure(this->_M_closure));
-}
-
-#define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name) \
-template<class _Dom, typename _Tp> \
-inline _Expr<_UnClos<_Name,_Expr,_Dom>,_Tp> \
-_Expr<_Dom,_Tp>::operator##_Op () const \
-{ \
- typedef _UnClos<_Name,_Expr,_Dom> _Closure; \
- return _Expr<_Closure,_Tp> (_Closure (this->_M_closure)); \
-}
-
- _DEFINE_EXPR_UNARY_OPERATOR(+, _Unary_plus)
- _DEFINE_EXPR_UNARY_OPERATOR(-, negate)
- _DEFINE_EXPR_UNARY_OPERATOR(~, _Bitwise_not)
-
-#undef _DEFINE_EXPR_UNARY_OPERATOR
-
-
-#define _DEFINE_EXPR_BINARY_OPERATOR(_Op, _Name) \
-template<class _Dom1, class _Dom2> \
-inline _Expr<_BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2>, \
- typename _Name<typename _Dom1::value_type>::result_type> \
-operator##_Op (const _Expr<_Dom1,typename _Dom1::value_type>& __v, \
- const _Expr<_Dom2,typename _Dom2::value_type>& __w) \
-{ \
- typedef typename _Dom1::value_type _Arg; \
- typedef typename _Name<_Arg>::result_type _Value; \
- typedef _BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2> _Closure; \
- return _Expr<_Closure,_Value> (_Closure (__v (), __w ())); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_Expr,_Constant,_Dom,typename _Dom::value_type>, \
- typename _Name<typename _Dom::value_type>::result_type> \
-operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __v, \
- const typename _Dom::value_type& __t) \
-{ \
- typedef typename _Dom::value_type _Arg; \
- typedef typename _Name<_Arg>::result_type _Value; \
- typedef _BinClos<_Name,_Expr,_Constant,_Dom,_Arg> _Closure; \
- return _Expr<_Closure,_Value> (_Closure (__v (), __t)); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_Constant,_Expr,typename _Dom::value_type,_Dom>, \
- typename _Name<typename _Dom::value_type>::result_type> \
-operator##_Op (const typename _Dom::value_type& __t, \
- const _Expr<_Dom,typename _Dom::value_type>& __v) \
-{ \
- typedef typename _Dom::value_type _Arg; \
- typedef typename _Name<_Arg>::result_type _Value; \
- typedef _BinClos<_Name,_Constant,_Expr,_Arg,_Dom> _Closure; \
- return _Expr<_Closure,_Value> (_Closure (__t, __v ())); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_Expr,_ValArray,_Dom,typename _Dom::value_type>, \
- typename _Name<typename _Dom::value_type>::result_type> \
-operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __e, \
- const valarray<typename _Dom::value_type>& __v) \
-{ \
- typedef typename _Dom::value_type _Arg; \
- typedef typename _Name<_Arg>::result_type _Value; \
- typedef _BinClos<_Name,_Expr,_ValArray,_Dom,_Arg> _Closure; \
- return _Expr<_Closure,_Value> (_Closure (__e (), __v)); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_ValArray,_Expr,typename _Dom::value_type,_Dom>, \
- typename _Name<typename _Dom::value_type>::result_type> \
-operator##_Op (const valarray<typename _Dom::value_type>& __v, \
- const _Expr<_Dom,typename _Dom::value_type>& __e) \
-{ \
- typedef typename _Dom::value_type _Tp; \
- typedef typename _Name<_Tp>::result_type _Value; \
- typedef _BinClos<_Name,_ValArray,_Expr,_Tp,_Dom> _Closure; \
- return _Expr<_Closure,_Value> (_Closure (__v, __e ())); \
-}
-
- _DEFINE_EXPR_BINARY_OPERATOR(+, plus)
- _DEFINE_EXPR_BINARY_OPERATOR(-, minus)
- _DEFINE_EXPR_BINARY_OPERATOR(*, multiplies)
- _DEFINE_EXPR_BINARY_OPERATOR(/, divides)
- _DEFINE_EXPR_BINARY_OPERATOR(%, modulus)
- _DEFINE_EXPR_BINARY_OPERATOR(^, _Bitwise_xor)
- _DEFINE_EXPR_BINARY_OPERATOR(&, _Bitwise_and)
- _DEFINE_EXPR_BINARY_OPERATOR(|, _Bitwise_or)
- _DEFINE_EXPR_BINARY_OPERATOR(<<, _Shift_left)
- _DEFINE_EXPR_BINARY_OPERATOR(>>, _Shift_right)
-
-#undef _DEFINE_EXPR_BINARY_OPERATOR
-
-#define _DEFINE_EXPR_RELATIONAL_OPERATOR(_Op, _Name) \
-template<class _Dom1, class _Dom2> \
-inline _Expr<_BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2>, bool> \
-operator##_Op (const _Expr<_Dom1,typename _Dom1::value_type>& __v, \
- const _Expr<_Dom2,typename _Dom2::value_type>& __w) \
-{ \
- typedef typename _Dom1::value_type _Arg; \
- typedef _BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2> _Closure; \
- return _Expr<_Closure,bool> (_Closure (__v (), __w ())); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_Expr,_Constant,_Dom,typename _Dom::value_type>, \
- bool> \
-operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __v, \
- const typename _Dom::value_type& __t) \
-{ \
- typedef typename _Dom::value_type _Arg; \
- typedef _BinClos<_Name,_Expr,_Constant,_Dom,_Arg> _Closure; \
- return _Expr<_Closure,bool> (_Closure (__v (), __t)); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_Constant,_Expr,typename _Dom::value_type,_Dom>, \
- bool> \
-operator##_Op (const typename _Dom::value_type& __t, \
- const _Expr<_Dom,typename _Dom::value_type>& __v) \
-{ \
- typedef typename _Dom::value_type _Arg; \
- typedef _BinClos<_Name,_Constant,_Expr,_Arg,_Dom> _Closure; \
- return _Expr<_Closure,bool> (_Closure (__t, __v ())); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_Expr,_ValArray,_Dom,typename _Dom::value_type>, \
- bool> \
-operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __e, \
- const valarray<typename _Dom::value_type>& __v) \
-{ \
- typedef typename _Dom::value_type _Tp; \
- typedef _BinClos<_Name,_Expr,_ValArray,_Dom,_Tp> _Closure; \
- return _Expr<_Closure,bool> (_Closure (__e (), __v)); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinClos<_Name,_ValArray,_Expr,typename _Dom::value_type,_Dom>, \
- bool> \
-operator##_Op (const valarray<typename _Dom::value_type>& __v, \
- const _Expr<_Dom,typename _Dom::value_type>& __e) \
-{ \
- typedef typename _Dom::value_type _Tp; \
- typedef _BinClos<_Name,_ValArray,_Expr,_Tp,_Dom> _Closure; \
- return _Expr<_Closure,bool> (_Closure (__v, __e ())); \
-}
-
- _DEFINE_EXPR_RELATIONAL_OPERATOR(&&, logical_and)
- _DEFINE_EXPR_RELATIONAL_OPERATOR(||, logical_or)
- _DEFINE_EXPR_RELATIONAL_OPERATOR(==, equal_to)
- _DEFINE_EXPR_RELATIONAL_OPERATOR(!=, not_equal_to)
- _DEFINE_EXPR_RELATIONAL_OPERATOR(<, less)
- _DEFINE_EXPR_RELATIONAL_OPERATOR(>, greater)
- _DEFINE_EXPR_RELATIONAL_OPERATOR(<=, less_equal)
- _DEFINE_EXPR_RELATIONAL_OPERATOR(>=, greater_equal)
-
-#undef _DEFINE_EXPR_RELATIONAL_OPERATOR
-
-
-
-#define _DEFINE_EXPR_UNARY_FUNCTION(_Name) \
-template<class _Dom> \
-inline _Expr<_UnFunClos<_Expr,_Dom>,typename _Dom::value_type> \
-_Name(const _Expr<_Dom,typename _Dom::value_type>& __e) \
-{ \
- typedef typename _Dom::value_type _Tp; \
- typedef _UnFunClos<_Expr,_Dom> _Closure; \
- return _Expr<_Closure,_Tp>(_Closure(__e(), (_Tp(*)(_Tp))(&_Name))); \
-} \
- \
-template<typename _Tp> \
-inline _Expr<_UnFunClos<_ValArray,_Tp>,_Tp> \
-_Name(const valarray<_Tp>& __v) \
-{ \
- typedef _UnFunClos<_ValArray,_Tp> _Closure; \
- return _Expr<_Closure,_Tp> (_Closure (__v, (_Tp(*)(_Tp))(&_Name))); \
-}
-
-
- _DEFINE_EXPR_UNARY_FUNCTION(abs)
- _DEFINE_EXPR_UNARY_FUNCTION(cos)
- _DEFINE_EXPR_UNARY_FUNCTION(acos)
- _DEFINE_EXPR_UNARY_FUNCTION(cosh)
- _DEFINE_EXPR_UNARY_FUNCTION(sin)
- _DEFINE_EXPR_UNARY_FUNCTION(asin)
- _DEFINE_EXPR_UNARY_FUNCTION(sinh)
- _DEFINE_EXPR_UNARY_FUNCTION(tan)
- _DEFINE_EXPR_UNARY_FUNCTION(tanh)
- _DEFINE_EXPR_UNARY_FUNCTION(atan)
- _DEFINE_EXPR_UNARY_FUNCTION(exp)
- _DEFINE_EXPR_UNARY_FUNCTION(log)
- _DEFINE_EXPR_UNARY_FUNCTION(log10)
- _DEFINE_EXPR_UNARY_FUNCTION(sqrt)
-
-#undef _DEFINE_EXPR_UNARY_FUNCTION
-
-
-#define _DEFINE_EXPR_BINARY_FUNCTION(_Name) \
-template<class _Dom1, class _Dom2> \
-inline _Expr<_BinFunClos<_Expr,_Expr,_Dom1,_Dom2>,typename _Dom1::value_type>\
-_Name (const _Expr<_Dom1,typename _Dom1::value_type>& __e1, \
- const _Expr<_Dom2,typename _Dom2::value_type>& __e2) \
-{ \
- typedef typename _Dom1::value_type _Tp; \
- typedef _BinFunClos<_Expr,_Expr,_Dom1,_Dom2> _Closure; \
- return _Expr<_Closure,_Tp> \
- (_Closure (__e1 (), __e2 (), (_Tp(*)(_Tp, _Tp))(&_Name))); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinFunClos<_Expr,_ValArray,_Dom,typename _Dom::value_type>, \
- typename _Dom::value_type> \
-_Name (const _Expr<_Dom,typename _Dom::value_type>& __e, \
- const valarray<typename _Dom::value_type>& __v) \
-{ \
- typedef typename _Dom::value_type _Tp; \
- typedef _BinFunClos<_Expr,_ValArray,_Dom,_Tp> _Closure; \
- return _Expr<_Closure,_Tp> \
- (_Closure (__e (), __v, (_Tp(*)(_Tp, _Tp))(&_Name))); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinFunClos<_ValArray,_Expr,typename _Dom::value_type,_Dom>, \
- typename _Dom::value_type> \
-_Name (const valarray<typename _Dom::valarray>& __v, \
- const _Expr<_Dom,typename _Dom::value_type>& __e) \
-{ \
- typedef typename _Dom::value_type _Tp; \
- typedef _BinFunClos<_ValArray,_Expr,_Tp,_Dom> _Closure; \
- return _Expr<_Closure,_Tp> \
- (_Closure (__v, __e (), (_Tp(*)(_Tp, _Tp))(&_Name))); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinFunClos<_Expr,_Constant,_Dom,typename _Dom::value_type>, \
- typename _Dom::value_type> \
-_Name (const _Expr<_Dom, typename _Dom::value_type>& __e, \
- const typename _Dom::value_type& __t) \
-{ \
- typedef typename _Dom::value_type _Tp; \
- typedef _BinFunClos<_Expr,_Constant,_Dom,_Tp> _Closure; \
- return _Expr<_Closure,_Tp> \
- (_Closure (__e (), __t, (_Tp(*)(_Tp, _Tp))(&_Name))); \
-} \
- \
-template<class _Dom> \
-inline _Expr<_BinFunClos<_Constant,_Expr,typename _Dom::value_type,_Dom>, \
- typename _Dom::value_type> \
-_Name (const typename _Dom::value_type& __t, \
- const _Expr<_Dom,typename _Dom::value_type>& __e) \
-{ \
- typedef typename _Dom::value_type _Tp; \
- typedef _BinFunClos<_Constant,_Expr,_Tp,_Dom> _Closure; \
- return _Expr<_Closure,_Tp> \
- (_Closure (__t, __e (), (_Tp(*)(_Tp, _Tp))(&_Name))); \
-} \
- \
-template<typename _Tp> \
-inline _Expr<_BinFunClos<_ValArray,_ValArray,_Tp,_Tp>, _Tp> \
-_Name (const valarray<_Tp>& __v, const valarray<_Tp>& __w) \
-{ \
- typedef _BinFunClos<_ValArray,_ValArray,_Tp,_Tp> _Closure; \
- return _Expr<_Closure,_Tp> \
- (_Closure (__v, __w, (_Tp(*)(_Tp,_Tp))(&_Name))); \
-} \
- \
-template<typename _Tp> \
-inline _Expr<_BinFunClos<_ValArray,_Constant,_Tp,_Tp>,_Tp> \
-_Name (const valarray<_Tp>& __v, const _Tp& __t) \
-{ \
- typedef _BinFunClos<_ValArray,_Constant,_Tp,_Tp> _Closure; \
- return _Expr<_Closure,_Tp> \
- (_Closure (__v, __t, (_Tp(*)(_Tp,_Tp))(&_Name))); \
-} \
- \
-template<typename _Tp> \
-inline _Expr<_BinFunClos<_Constant,_ValArray,_Tp,_Tp>,_Tp> \
-_Name (const _Tp& __t, const valarray<_Tp>& __v) \
-{ \
- typedef _BinFunClos<_Constant,_ValArray,_Tp,_Tp> _Closure; \
- return _Expr<_Closure,_Tp> \
- (_Closure (__t, __v, (_Tp(*)(_Tp,_Tp))(&_Name))); \
-}
-
-_DEFINE_EXPR_BINARY_FUNCTION(atan2)
-_DEFINE_EXPR_BINARY_FUNCTION(pow)
-
-#undef _DEFINE_EXPR_BINARY_FUNCTION
-
-#endif // _CPP_VALARRAY_META_H
-
-// Local Variables:
-// mode:c++
-// End:
diff --git a/contrib/libstdc++/stdexcept b/contrib/libstdc++/stdexcept
deleted file mode 100644
index 69e9627..0000000
--- a/contrib/libstdc++/stdexcept
+++ /dev/null
@@ -1,97 +0,0 @@
-// Methods for Exception Support for -*- C++ -*-
-// Copyright (C) 1994, 1995, 1997 Free Software Foundation
-
-// This file is part of the GNU ANSI 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-// As a special exception, if you link this library with files
-// compiled with a GNU compiler to produce an executable, this does not cause
-// the resulting executable to be covered by the GNU General Public License.
-// This exception does not however invalidate any other reasons why
-// the executable file might be covered by the GNU General Public License.
-
-// Written by Mike Stump based upon the specification in the 20 September 1994
-// C++ working paper, ANSI document X3J16/94-0158.
-
-#ifndef __STDEXCEPT__
-#define __STDEXCEPT__
-
-#ifdef __GNUG__
-#pragma interface "stdexcept"
-#endif
-
-#include <exception>
-#include <string>
-
-extern "C++" {
-
-namespace std {
-
-class logic_error : public exception {
- string _what;
-public:
- logic_error(const string& what_arg): _what (what_arg) { }
- virtual const char* what () const { return _what.c_str (); }
-};
-
-class domain_error : public logic_error {
-public:
- domain_error (const string& what_arg): logic_error (what_arg) { }
-};
-
-class invalid_argument : public logic_error {
-public:
- invalid_argument (const string& what_arg): logic_error (what_arg) { }
-};
-
-class length_error : public logic_error {
-public:
- length_error (const string& what_arg): logic_error (what_arg) { }
-};
-
-class out_of_range : public logic_error {
-public:
- out_of_range (const string& what_arg): logic_error (what_arg) { }
-};
-
-class runtime_error : public exception {
- string _what;
-public:
- runtime_error(const string& what_arg): _what (what_arg) { }
- virtual const char* what () const { return _what.c_str (); }
-protected:
- runtime_error(): exception () { }
-};
-
-class range_error : public runtime_error {
-public:
- range_error (const string& what_arg): runtime_error (what_arg) { }
-};
-
-class overflow_error : public runtime_error {
-public:
- overflow_error (const string& what_arg): runtime_error (what_arg) { }
-};
-
-class underflow_error : public runtime_error {
-public:
- underflow_error (const string& what_arg): runtime_error (what_arg) { }
-};
-
-} // namespace std
-
-} // extern "C++"
-
-#endif
diff --git a/contrib/libstdc++/stdexcepti.cc b/contrib/libstdc++/stdexcepti.cc
deleted file mode 100644
index 9c02c71..0000000
--- a/contrib/libstdc++/stdexcepti.cc
+++ /dev/null
@@ -1,21 +0,0 @@
-// Implementation file for Exception Support for -*- C++ -*-
-// This file is part of the GNU ANSI C++ Library.
-
-#ifdef __GNUG__
-#pragma implementation "stdexcept"
-#endif
-
-#include <stdexcept>
-
-// Entry points for string.
-
-void
-__out_of_range (const char *s)
-{
- throw std::out_of_range (s);
-}
-
-void __length_error (const char *s)
-{
- throw std::length_error (s);
-}
diff --git a/contrib/libstdc++/stl.h b/contrib/libstdc++/stl.h
deleted file mode 100644
index 4b27074..0000000
--- a/contrib/libstdc++/stl.h
+++ /dev/null
@@ -1,15 +0,0 @@
-// -*- C++ -*- compatibility header.
-// This file is part of the GNU ANSI C++ Library.
-
-#include <algorithm>
-#include <deque>
-#include <functional>
-#include <iterator>
-#include <list>
-#include <map>
-#include <memory>
-#include <numeric>
-#include <set>
-#include <stack>
-#include <utility>
-#include <vector>
diff --git a/contrib/libstdc++/stl/ChangeLog b/contrib/libstdc++/stl/ChangeLog
deleted file mode 100644
index 14d56ac..0000000
--- a/contrib/libstdc++/stl/ChangeLog
+++ /dev/null
@@ -1,381 +0,0 @@
-Fri Mar 16 12:46:19 GMT 2001 Bernd Schmidt (bernds@redhat.com)
-
- * gcc-2.95.3 Released.
-
-1999-11-06 Martin v. Löwis <loewis@informatik.hu-berlin.de>
-
- * bitset (class bitset): Declare reference as our friend.
- * bitset: Include limits.h.
-
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Sun Aug 8 21:06:16 1999 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * pthread_alloc: Solaris' ctype.h defines _U to 01; use _Up as
- template parameter instead.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-1999-07-11 Martin v. Löwis (loewis@informatik.hu-berlin.de)
-
- * stl_function.h (bind1st, bind2nd): Rename __opr to __oper,
- as __opr is used internally by egcs.
- * stl_numeric.h (__power, power): Likewise.
-
-1999-06-18 Martin von Löwis <loewis@informatik.hu-berlin.de>
-
- * stl_queue.h: Rename _M_c to c, and _M_comp to comp.
-
-1999-06-17 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * stl_algo.h (transform): Rename __opr to __oper, as __opr is used
- internally by egcs.
- Reported by Harri Porten <porten@tu-harburg.de>
-
-1999-05-17 Mark Kettenis <kettenis@gnu.org>
-
- * stl_config.h: Only define __STL_PTHREADS with GLIBC >= 2 for
- Linux.
-
-Mon May 17 03:33:47 1999 Mumit Khan <khan@xraylith.wisc.edu>
-
- * stl_config.h (__CYGWIN__): Cygwin newlib RTL lacks drand48.
-
-1999-05-07 Ulrich Drepper <drepper@cygnus.com>
-
- * stl_alloc.h: Make it possible to compile with __USE_MALLOC.
-
-Tue Apr 13 00:32:57 1999 Mumit Khan <khan@xraylith.wisc.edu>
-
- * stl_config.h (__MINGW32__): Mingw32 RTL lacks drand48.
-
-Sun Apr 11 23:48:30 1999 Jeffrey A Law (law@cygnus.com)
-
- * bitset: Re-install Alexandre's lost patch from 1998-11-27.
-
-1999-01-20 Ulrich Drepper <drepper@cygnus.com>
-
- * stl_construct.h (__destroy_aux): Use != instead of < for
- ForwardIterator comparison.
- Patch by jmaurer@menuett.rhein-main.de (Jens Maurer).
-
-1999-01-20 Mark Mitchell <mark@markmitchell.com>
-
- * stl_config.h (__STL_USE_NAMESPACES): Define.
-
-1998-11-27 Alexandre Oliva <oliva@dcc.unicamp.br>
-
- * bitset: Explicitly convert basic_string<...>::npos to size_t in
- default argument to constructor, to avoid parse error at `>'.
- (__STL_EXPLICIT_FUNCTION_TMPL_ARGS): Replace #if with #ifdef.
-
-1998-11-01 Mark Mitchell <mark@markmitchell.com>
-
- * stl_alloc.h (default_alloc_template::_S_free_list): Don't
- qualify _NFREELISTS.
-
-1998-10-11 Mark Mitchell <mark@markmitchell.com>
-
- * stl_config.h (__SGI_STL_USE_AUTO_PTR_CONVERSIONS): Define.
- * memory (auto_ptr::operator auto_ptr_ref<_Tp1>): Fix typo.
- (auto_ptr::operator auto_ptr<_Tp1>): Add missing
- semicolon.
-
-1998-09-03 Jason Merrill <jason@yorick.cygnus.com>
-
- * stl_config.h: Define __STL_HAS_WCHAR_T,
- __STL_MEMBER_TEMPLATE_CLASSES, __STL_HAS_NAMESPACES,
- __STL_NO_NAMESPACES and __STL_LONG_LONG.
-
-1998-09-02 Jason Merrill <jason@yorick.cygnus.com>
-
- * algorithm alloc.h defalloc.h hash_map.h hash_set.h iterator
- memory pthread_alloc pthread_alloc.h rope ropeimpl.h stl_algo.h
- stl_algobase.h stl_alloc.h stl_bvector.h stl_config.h
- stl_construct.h stl_deque.h stl_function.h stl_hash_fun.h
- stl_hash_map.h stl_hash_set.h stl_hashtable.h stl_heap.h
- stl_iterator.h stl_list.h stl_map.h stl_multimap.h stl_multiset.h
- stl_numeric.h stl_pair.h stl_queue.h stl_raw_storage_iter.h
- stl_relops.h stl_rope.h stl_set.h stl_slist.h stl_stack.h
- stl_tempbuf.h stl_tree.h stl_uninitialized.h stl_vector.h
- tempbuf.h type_traits.h: Update to SGI STL 3.11.
-
-Fri Jul 10 15:20:09 1998 Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>
-
- * stl_tempbuf.h (temporary_buffer): Add missing typename.
- * type_traits.h: update comments.
-
-Sun Jun 28 00:49:42 1998 Jeffrey A Law (law@cygnus.com)
-
- * stl_config.h (__STL_PTHREADS): Don't define for glibc 2 if
- _G_USING_THUNKS is not defined.
-
-1998-04-07 18:32 Ulrich Drepper <drepper@cygnus.com>
-
- * stl_hashtable.h (__stl_prime_list): Mark last two numbers as
- unsigned long since they are otherwise too large for long int on
- 32bit machines.
-
-Fri Feb 20 16:15:05 1998 H.J. Lu (hjl@gnu.org)
- Jason Merrill <jason@yorick.cygnus.com>
-
- * ropeimpl.h: Check __STL_PTHREADS instead of _PTHREADS.
- * stl_alloc.h: Ditto.
- * stl_config.h: Ditto.
- * stl_rope.h: Ditto.
-
- * stl_config.h: include <_G_config.h> if __GNUG__ is defined.
- (__STL_PTHREADS): Defined if _PTHREADS is defined or
- __GLIBC__ >= 2.
-
-Tue Jan 27 12:01:25 1998 Jason Merrill <jason@yorick.cygnus.com>
-
- * stl_algo.h (__lg): Fix for n == 0.
-
-Sat Nov 8 00:45:17 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * stl_hash_set.h (swap): Fix typo.
-
-Fri Nov 7 10:27:40 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * stl_hashtable.h: Fix typo.
-
-Thu Nov 6 11:19:09 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * stl_algo.h, stl_algobase.h, stl_bvector.h,
- stl_deque.h: Update to October 28 SGI release.
-
-Sun Nov 2 12:14:56 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * algo.h, algobase.h, alloc.h, bvector.h, defalloc.h, deque.h,
- function.h, hash_map.h, hash_set.h, hashtable.h, heap.h, iterator.h,
- list.h, map.h, multimap.h, multiset.h, pair.h, pthread_alloc.h,
- rope.h, ropeimpl.h, set.h, slist.h, stack.h, stl_config.h, tempbuf.h,
- tree.h, type_traits.h, vector.h: Update to October 27 SGI snapshot.
- * algorithm, deque, functional, hash_map, hash_set, iterator, list,
- map, memory, numeric, pthread_alloc, queue, rope, set, slist, stack,
- stl_algo.h, stl_algobase.h, stl_alloc.h, stl_bvector.h,
- stl_construct.h, stl_deque.h, stl_function.h, stl_hash_fun.h,
- stl_hash_map.h, stl_hash_set.h, stl_hashtable.h, stl_heap.h,
- stl_iterator.h, stl_list.h, stl_map.h, stl_multimap.h, stl_multiset.h,
- stl_numeric.h, stl_pair.h, stl_queue.h, stl_raw_storage_iter.h,
- stl_relops.h, stl_rope.h, stl_set.h, stl_slist.h, stl_stack.h,
- stl_tempbuf.h, stl_tree.h, stl_uninitialized.h, stl_vector.h,
- utility, vector: New files in October 27 SGI snapshot.
-
-Fri Oct 17 19:07:42 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * tree.h, vector.h: Fix accidental divergence from SGI release.
-
-Tue Sep 9 19:47:28 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * algo.h, algobase.h, alloc.h, bvector.h, deque.h, hashtable.h,
- iterator.h, list.h, rope.h, ropeimpl.h, slist.h, stl_config.h,
- tree.h, vector.h: Update To September 8 SGI release.
-
-Tue Sep 9 17:38:47 1997 Mark Mitchell <mmitchell@usa.net>
-
- * stl_config.h (__STL_MEMBER_TEMPLATES): Enable.
-
-Tue Aug 5 17:06:01 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * deque.h, function.h, hashtable.h, list.h, rope.h, ropeimpl.h,
- tree.h: Update to July 31 SGI release.
-
-Fri Jul 18 10:06:56 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * algo.h, defalloc.h, hashtable.h, rope.h, ropeimpl.h, slist.h:
- Update to June 30 SGI release.
-
-Fri Jul 04 02:17:15 1997 Ulrich Drepper <drepper@cygnus.com>
-
- * tree.h (rb_tree): Reverse order of member initializations
- to prevent warnings.
-
-Sun Jun 15 18:17:21 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * *.h: Update to 6/13 SGI release.
-
-Fri May 23 10:56:18 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * stl_config.h: Add support for exceptions with g++.
-
- * *.h: Update to 5/8 SGI release.
-
-Thu Apr 24 19:00:23 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * *.h: Update to 3/24 SGI release.
-
-Wed Feb 19 18:19:18 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * *.h: Update to 2/18 SGI release.
-
- * bool.h: Lose.
-
-Mon Feb 10 16:33:23 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * alloc.h: Don't define __USE_MALLOC for g++.
- * bool.h: Lose g++ case.
-
- * *.h: Update to 2/4 SGI release.
-
-Mon Jan 13 14:39:16 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * *.h: Update to 1/8 SGI release.
-
-Mon Sep 30 17:56:43 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * alloc.h (__unlock): Never use __lock_release.
-
-Fri Sep 27 19:03:06 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * alloc.h (__default_alloc_template): lock is a friend.
-
-Thu Sep 19 20:10:37 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- Propagate these changes to new STL code:
- * tree.h: Rearrange member initializers in rb_tree constructors.
- * vector.h (insert): Cast iterator difference to size_type to
- avoid warning.
-
- * *.h: Update to SGI snapshot (fixed).
- * *.c, Makefile.in, configure.in: Removed.
-
-Sat Sep 14 09:43:06 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * deque.h, list.h, tree.h: Remove kludge obsoleted by new
- overloading code.
-
-Sat Aug 10 14:59:50 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * tempbuf.cc (__stl_temp_buffer): Align like a pointer.
-
-Wed Jun 26 13:00:44 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * iterator.h: Add default template parameters.
-
-Wed Apr 24 10:45:22 1996 Doug Evans <dje@blues.cygnus.com>
-
- * Makefile.in (tempbuf.o,random.o): Add rules for SunOS VPATH.
-
-Fri Apr 5 17:52:31 1996 Per Bothner <bothner@kalessin.cygnus.com>
-
- * configure.in (EXTRA_MOSTLYCLEAN): New, to remove stl.list.
-
-Fri Mar 22 14:58:30 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- Propagate these changes to new STL code:
- * tree.h: Rearrange member initializers in rb_tree constructors.
- * vector.h (insert): Cast iterator difference to size_type to
- avoid warning.
-
-Sun Mar 10 07:49:03 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * deque.h (distance_type): Add overload for g++.
- From Joe Buck.
-
-Thu Feb 22 14:07:12 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * bool.h: Revert.
- * algo.h bvector.h deque.h function.h iterator.h list.h
- pair.h stack.h tree.h vector.h: Wrap #include <bool.h> with
- #ifndef __GNUG__.
- * defalloc.h list.h deque.h tree.h: Use __GNUG__ to control
- workarounds.
-
-Wed Feb 21 17:13:02 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * bool.h (TRUE, FALSE): Define for people expecting the bool.h
- from libg++. Is this a good idea?
-
-Tue Feb 20 18:40:02 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * algo.h bool.h bvector.h defalloc.h deque.h function.h heap.h
- iterator.h list.h map.h pair.h random.cc stack.h tree.c tree.h
- vector.h: Revert to HP release with workarounds for missing
- overloading functionality.
- * Makefile.in (STL_OBJECTS): Remove tree.o.
-
-Thu Nov 9 17:05:23 1995 Jason Merrill <jason@yorick.cygnus.com>
-
- * algo.h algobase.h bvector.h defalloc.h deque.h function.h heap.h
- iterator.h list.h map.h multimap.h multiset.h pair.h projectn.h
- set.h stack.h tempbuf.h tree.h vector.h: Wrap #include <bool.h>
- with #ifndef __GNUG__.
-
-Thu Nov 2 17:05:44 1995 Jason Merrill <jason@yorick.cygnus.com>
-
- * deque.h (deque<T>::insert): Fix merge typo.
- * vector.h (value_type): Lose.
-
-Thu Nov 2 14:33:47 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * algo.h, algobase.h, deque.h, function.h, list.h, pair.h, random.cc:
- Merge in Oct 31 1995 release from HP.
-
-Fri Aug 11 17:11:12 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * list.h: Avoid duplicate construction and destruction of list_nodes.
- Patch from Klamer Schutte <klamer@ph.tn.tudelft.nl>.
-
-Fri Aug 11 16:45:18 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * algo.h, algobase.h, deque.h: Merged in Jul 12 1995 release from HP.
-
-Mon Jun 5 18:38:56 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * Makefile.in (stl.list): Depend on stamp-picdir.
-
-Wed May 17 02:30:47 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * tree.h: Rearrange member initializers in rb_tree constructors.
-
- * Update to HP's February 7, 1995 release.
-
-Fri May 5 10:45:31 1995 Mike Stump <mrs@cygnus.com>
-
- * random.cc (seed): Move `for' decl out of `for' statement.
-
-Wed Apr 26 13:09:16 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * configure.in (XCXXINCLUDES): Rename.
-
-Wed Mar 29 19:24:56 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * tree.h (insert): Return a value.
-
- * vector.h (insert): Cast iterator difference to size_type to
- avoid warning.
-
-Sun Feb 12 09:12:17 1995 Mike Stump <mrs@cygnus.com>
-
- * tree.h (rb_tree::max_size): Add definition when using GNU
- workaround.
-
-Thu Jan 12 01:37:42 1995 deanm@medulla.LABS.TEK.COM (Dean Messing)
-
- * configure.in (LIBDIR): Set to yes.
-
-Fri Dec 30 18:26:20 1994 Mike Stump <mrs@cygnus.com>
-
- * iterator.h: Add default template parameters where possible.
-
-Fri Dec 30 16:29:39 1994 Mike Stump <mrs@cygnus.com>
-
- * algo.h: Change rand to __rand to fix make check on linux systems.
-
-Tue Nov 29 15:30:30 1994 Per Bothner <bothner@kalessin.cygnus.com>
-
- * Initial check-in, based on HP's October 21, 1994.
diff --git a/contrib/libstdc++/stl/README b/contrib/libstdc++/stl/README
deleted file mode 100644
index c319c08..0000000
--- a/contrib/libstdc++/stl/README
+++ /dev/null
@@ -1,13 +0,0 @@
-This directory contains an SGI release of the C++ Standard Template
-Library, slightly modified to work with g++.
-
-Note that this is based on a pre-Draft Standard for C++.
-Things are likely to change. For example, the header file names
-are very likely to change. The Allocator interface will change. Etc, etc.
-CYGNUS MAKES NO COMMITTMENT (yet) TO SUPPORT BACKWARD COMPATIBILITY FOR STL.
-
-For examples of things that should work, look in the ../tests directory.
-
-DOCUMENTATION:
-See http://www.sgi.com/Technology/STL/ or http://www.dinkumware.com/
-on the World-Wide Web.
diff --git a/contrib/libstdc++/stl/algo.h b/contrib/libstdc++/stl/algo.h
deleted file mode 100644
index 1707868..0000000
--- a/contrib/libstdc++/stl/algo.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_ALGO_H
-#define __SGI_STL_ALGO_H
-
-#include <algobase.h>
-#include <tempbuf.h>
-#include <stl_algo.h>
-#include <stl_numeric.h>
-
-#ifdef __STL_USE_NAMESPACES
-
-// Names from <stl_algo.h>
-using __STD::for_each;
-using __STD::find;
-using __STD::find_if;
-using __STD::adjacent_find;
-using __STD::count;
-using __STD::count_if;
-using __STD::search;
-using __STD::search_n;
-using __STD::swap_ranges;
-using __STD::transform;
-using __STD::replace;
-using __STD::replace_if;
-using __STD::replace_copy;
-using __STD::replace_copy_if;
-using __STD::generate;
-using __STD::generate_n;
-using __STD::remove;
-using __STD::remove_if;
-using __STD::remove_copy;
-using __STD::remove_copy_if;
-using __STD::unique;
-using __STD::unique_copy;
-using __STD::reverse;
-using __STD::reverse_copy;
-using __STD::rotate;
-using __STD::rotate_copy;
-using __STD::random_shuffle;
-using __STD::random_sample;
-using __STD::random_sample_n;
-using __STD::partition;
-using __STD::stable_partition;
-using __STD::sort;
-using __STD::stable_sort;
-using __STD::partial_sort;
-using __STD::partial_sort_copy;
-using __STD::nth_element;
-using __STD::lower_bound;
-using __STD::upper_bound;
-using __STD::equal_range;
-using __STD::binary_search;
-using __STD::merge;
-using __STD::inplace_merge;
-using __STD::includes;
-using __STD::set_union;
-using __STD::set_intersection;
-using __STD::set_difference;
-using __STD::set_symmetric_difference;
-using __STD::min_element;
-using __STD::max_element;
-using __STD::next_permutation;
-using __STD::prev_permutation;
-using __STD::find_first_of;
-using __STD::find_end;
-using __STD::is_sorted;
-using __STD::is_heap;
-
-// Names from stl_heap.h
-using __STD::push_heap;
-using __STD::pop_heap;
-using __STD::make_heap;
-using __STD::sort_heap;
-
-// Names from <stl_numeric.h>
-using __STD::accumulate;
-using __STD::inner_product;
-using __STD::partial_sum;
-using __STD::adjacent_difference;
-using __STD::power;
-using __STD::iota;
-
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_ALGO_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/algobase.h b/contrib/libstdc++/stl/algobase.h
deleted file mode 100644
index f35e7af..0000000
--- a/contrib/libstdc++/stl/algobase.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_ALGOBASE_H
-#define __SGI_STL_ALGOBASE_H
-
-#ifndef __SGI_STL_PAIR_H
-#include <pair.h>
-#endif
-#ifndef __SGI_STL_ITERATOR_H
-#include <iterator.h>
-#endif
-#ifndef __SGI_STL_INTERNAL_ALGOBASE_H
-#include <stl_algobase.h>
-#endif
-#ifndef __SGI_STL_INTERNAL_UNINITIALIZED_H
-#include <stl_uninitialized.h>
-#endif
-
-#ifdef __STL_USE_NAMESPACES
-
-// Names from stl_algobase.h
-using __STD::iter_swap;
-using __STD::swap;
-using __STD::min;
-using __STD::max;
-using __STD::copy;
-using __STD::copy_backward;
-using __STD::copy_n;
-using __STD::fill;
-using __STD::fill_n;
-using __STD::mismatch;
-using __STD::equal;
-using __STD::lexicographical_compare;
-using __STD::lexicographical_compare_3way;
-
-// Names from stl_uninitialized.h
-using __STD::uninitialized_copy;
-using __STD::uninitialized_copy_n;
-using __STD::uninitialized_fill;
-using __STD::uninitialized_fill_n;
-
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_ALGOBASE_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/algorithm b/contrib/libstdc++/stl/algorithm
deleted file mode 100644
index 1ba584f..0000000
--- a/contrib/libstdc++/stl/algorithm
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_ALGORITHM
-#define __SGI_STL_ALGORITHM
-
-#include <stl_algobase.h>
-#include <stl_construct.h>
-#include <stl_uninitialized.h>
-#include <stl_tempbuf.h>
-#include <stl_algo.h>
-
-#endif /* __SGI_STL_ALGORITHM */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/alloc.h b/contrib/libstdc++/stl/alloc.h
deleted file mode 100644
index f99a862..0000000
--- a/contrib/libstdc++/stl/alloc.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 1996-1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_ALLOC_H
-#define __SGI_STL_ALLOC_H
-
-#ifndef __STL_CONFIG_H
-#include <stl_config.h>
-#endif
-#ifndef __SGI_STL_INTERNAL_ALLOC_H
-#include <stl_alloc.h>
-#endif
-
-#ifdef __STL_USE_NAMESPACES
-
-using __STD::__malloc_alloc_template;
-using __STD::malloc_alloc;
-using __STD::simple_alloc;
-using __STD::debug_alloc;
-using __STD::__default_alloc_template;
-using __STD::alloc;
-using __STD::single_client_alloc;
-#ifdef __STL_STATIC_TEMPLATE_MEMBER_BUG
-using __STD::__malloc_alloc_oom_handler;
-#endif /* __STL_STATIC_TEMPLATE_MEMBER_BUG */
-#ifdef __STL_USE_STD_ALLOCATORS
-using __STD::allocator;
-#endif /* __STL_USE_STD_ALLOCATORS */
-
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_ALLOC_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/bitset b/contrib/libstdc++/stl/bitset
deleted file mode 100644
index 8b4f8b1..0000000
--- a/contrib/libstdc++/stl/bitset
+++ /dev/null
@@ -1,1066 +0,0 @@
-/*
- * Copyright (c) 1998
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_BITSET
-#define __SGI_STL_BITSET
-
-// This implementation of bitset<> has a second template parameter,
-// _WordT, which defaults to unsigned long. *YOU SHOULD NOT USE
-// THIS FEATURE*. It is experimental, and it may be removed in
-// future releases.
-
-// A bitset of size N, using words of type _WordT, will have
-// N % (sizeof(_WordT) * CHAR_BIT) unused bits. (They are the high-
-// order bits in the highest word.) It is a class invariant
-// of class bitset<> that those unused bits are always zero.
-
-// Most of the actual code isn't contained in bitset<> itself, but in the
-// base class _Base_bitset. The base class works with whole words, not with
-// individual bits. This allows us to specialize _Base_bitset for the
-// important special case where the bitset is only a single word.
-
-// The C++ standard does not define the precise semantics of operator[].
-// In this implementation the const version of operator[] is equivalent
-// to test(), except that it does no range checking. The non-const version
-// returns a reference to a bit, again without doing any range checking.
-
-
-#include <stddef.h> // for size_t
-#include <limits.h> // for CHAR_BIT
-#include <string>
-#include <stdexcept> // for invalid_argument, out_of_range, overflow_error
-#include <iostream.h> // for istream, ostream
-
-#define __BITS_PER_WORDT(__wt) (CHAR_BIT*sizeof(__wt))
-#define __BITSET_WORDS(__n,__wt) \
- ((__n) < 1 ? 1 : ((__n) + __BITS_PER_WORDT(__wt) - 1)/__BITS_PER_WORDT(__wt))
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1209
-#endif
-
-// structure to aid in counting bits
-template<bool __dummy>
-struct _Bit_count {
- static unsigned char _S_bit_count[256];
-};
-
-// Mapping from 8 bit unsigned integers to the index of the first one
-// bit:
-template<bool __dummy>
-struct _First_one {
- static unsigned char _S_first_one[256];
-};
-
-//
-// Base class: general case.
-//
-
-template<size_t _Nw, class _WordT>
-struct _Base_bitset {
- _WordT _M_w[_Nw]; // 0 is the least significant word.
-
- _Base_bitset( void ) { _M_do_reset(); }
-
- _Base_bitset(unsigned long __val);
-
- static size_t _S_whichword( size_t __pos ) {
- return __pos / __BITS_PER_WORDT(_WordT);
- }
- static size_t _S_whichbyte( size_t __pos ) {
- return (__pos % __BITS_PER_WORDT(_WordT)) / CHAR_BIT;
- }
- static size_t _S_whichbit( size_t __pos ) {
- return __pos % __BITS_PER_WORDT(_WordT);
- }
- static _WordT _S_maskbit( size_t __pos ) {
- return (static_cast<_WordT>(1)) << _S_whichbit(__pos);
- }
-
- _WordT& _M_getword(size_t __pos) { return _M_w[_S_whichword(__pos)]; }
- _WordT _M_getword(size_t __pos) const { return _M_w[_S_whichword(__pos)]; }
-
- _WordT& _M_hiword() { return _M_w[_Nw - 1]; }
- _WordT _M_hiword() const { return _M_w[_Nw - 1]; }
-
- void _M_do_and(const _Base_bitset<_Nw,_WordT>& __x) {
- for ( size_t __i = 0; __i < _Nw; __i++ ) {
- _M_w[__i] &= __x._M_w[__i];
- }
- }
-
- void _M_do_or(const _Base_bitset<_Nw,_WordT>& __x) {
- for ( size_t __i = 0; __i < _Nw; __i++ ) {
- _M_w[__i] |= __x._M_w[__i];
- }
- }
-
- void _M_do_xor(const _Base_bitset<_Nw,_WordT>& __x) {
- for ( size_t __i = 0; __i < _Nw; __i++ ) {
- _M_w[__i] ^= __x._M_w[__i];
- }
- }
-
- void _M_do_left_shift(size_t __shift);
-
- void _M_do_right_shift(size_t __shift);
-
- void _M_do_flip() {
- for ( size_t __i = 0; __i < _Nw; __i++ ) {
- _M_w[__i] = ~_M_w[__i];
- }
- }
-
- void _M_do_set() {
- for ( size_t __i = 0; __i < _Nw; __i++ ) {
- _M_w[__i] = ~static_cast<_WordT>(0);
- }
- }
-
- void _M_do_reset() {
- for ( size_t __i = 0; __i < _Nw; __i++ ) {
- _M_w[__i] = 0;
- }
- }
-
- bool _M_is_equal(const _Base_bitset<_Nw,_WordT>& __x) const {
- for (size_t __i = 0; __i < _Nw; ++__i) {
- if (_M_w[__i] != __x._M_w[__i])
- return false;
- }
- return true;
- }
-
- bool _M_is_any() const {
- for ( size_t __i = 0; __i < __BITSET_WORDS(_Nw,_WordT); __i++ ) {
- if ( _M_w[__i] != static_cast<_WordT>(0) )
- return true;
- }
- return false;
- }
-
- size_t _M_do_count() const {
- size_t __result = 0;
- const unsigned char* __byte_ptr = (const unsigned char*)_M_w;
- const unsigned char* __end_ptr = (const unsigned char*)(_M_w+_Nw);
-
- while ( __byte_ptr < __end_ptr ) {
- __result += _Bit_count<true>::_S_bit_count[*__byte_ptr];
- __byte_ptr++;
- }
- return __result;
- }
-
- unsigned long _M_do_to_ulong() const;
-
- // find first "on" bit
- size_t _M_do_find_first(size_t __not_found) const;
-
- // find the next "on" bit that follows "prev"
- size_t _M_do_find_next(size_t __prev, size_t __not_found) const;
-};
-
-//
-// Definitions of non-inline functions from _Base_bitset.
-//
-
-template<size_t _Nw, class _WordT>
-_Base_bitset<_Nw, _WordT>::_Base_bitset(unsigned long __val)
-{
- _M_do_reset();
- const size_t __n = min(sizeof(unsigned long)*CHAR_BIT,
- __BITS_PER_WORDT(_WordT)*_Nw);
- for(size_t __i = 0; __i < __n; ++__i, __val >>= 1)
- if ( __val & 0x1 )
- _M_getword(__i) |= _S_maskbit(__i);
-}
-
-template<size_t _Nw, class _WordT>
-void _Base_bitset<_Nw, _WordT>::_M_do_left_shift(size_t __shift)
-{
- if (__shift != 0) {
- const size_t __wshift = __shift / __BITS_PER_WORDT(_WordT);
- const size_t __offset = __shift % __BITS_PER_WORDT(_WordT);
- const size_t __sub_offset = __BITS_PER_WORDT(_WordT) - __offset;
- size_t __n = _Nw - 1;
- for ( ; __n > __wshift; --__n)
- _M_w[__n] = (_M_w[__n - __wshift] << __offset) |
- (_M_w[__n - __wshift - 1] >> __sub_offset);
- if (__n == __wshift)
- _M_w[__n] = _M_w[0] << __offset;
- for (size_t __n1 = 0; __n1 < __n; ++__n1)
- _M_w[__n1] = static_cast<_WordT>(0);
- }
-}
-
-template<size_t _Nw, class _WordT>
-void _Base_bitset<_Nw, _WordT>::_M_do_right_shift(size_t __shift)
-{
- if (__shift != 0) {
- const size_t __wshift = __shift / __BITS_PER_WORDT(_WordT);
- const size_t __offset = __shift % __BITS_PER_WORDT(_WordT);
- const size_t __sub_offset = __BITS_PER_WORDT(_WordT) - __offset;
- const size_t __limit = _Nw - __wshift - 1;
- size_t __n = 0;
- for ( ; __n < __limit; ++__n)
- _M_w[__n] = (_M_w[__n + __wshift] >> __offset) |
- (_M_w[__n + __wshift + 1] << __sub_offset);
- _M_w[__limit] = _M_w[_Nw-1] >> __offset;
- for (size_t __n1 = __limit + 1; __n1 < _Nw; ++__n1)
- _M_w[__n1] = static_cast<_WordT>(0);
- }
-}
-
-template<size_t _Nw, class _WordT>
-unsigned long _Base_bitset<_Nw, _WordT>::_M_do_to_ulong() const
-{
- const overflow_error __overflow("bitset");
-
- if (sizeof(_WordT) >= sizeof(unsigned long)) {
- for (size_t __i = 1; __i < _Nw; ++__i)
- if (_M_w[__i])
- __STL_THROW(__overflow);
-
- const _WordT __mask = static_cast<_WordT>(static_cast<unsigned long>(-1));
- if (_M_w[0] & ~__mask)
- __STL_THROW(__overflow);
-
- return static_cast<unsigned long>(_M_w[0] & __mask);
- }
- else { // sizeof(_WordT) < sizeof(unsigned long).
- const size_t __nwords =
- (sizeof(unsigned long) + sizeof(_WordT) - 1) / sizeof(_WordT);
-
- size_t __min_nwords = __nwords;
- if (_Nw > __nwords) {
- for (size_t __i = __nwords; __i < _Nw; ++__i)
- if (_M_w[__i])
- __STL_THROW(__overflow);
- }
- else
- __min_nwords = _Nw;
-
- // If unsigned long is 8 bytes and _WordT is 6 bytes, then an unsigned
- // long consists of all of one word plus 2 bytes from another word.
- const size_t __part = sizeof(unsigned long) % sizeof(_WordT);
-
- if (__part != 0 && __nwords <= _Nw &&
- (_M_w[__min_nwords - 1] >> ((sizeof(_WordT) - __part) * CHAR_BIT)) != 0)
- __STL_THROW(__overflow);
-
- unsigned long __result = 0;
- for (size_t __i = 0; __i < __min_nwords; ++__i) {
- __result |= static_cast<unsigned long>(
- _M_w[__i]) << (__i * sizeof(_WordT) * CHAR_BIT);
- }
- return __result;
- }
-} // End _M_do_to_ulong
-
-template<size_t _Nw, class _WordT>
-size_t _Base_bitset<_Nw, _WordT>::_M_do_find_first(size_t __not_found) const
-{
- for ( size_t __i = 0; __i < _Nw; __i++ ) {
- _WordT __thisword = _M_w[__i];
- if ( __thisword != static_cast<_WordT>(0) ) {
- // find byte within word
- for ( size_t __j = 0; __j < sizeof(_WordT); __j++ ) {
- unsigned char __this_byte
- = static_cast<unsigned char>(__thisword & (~(unsigned char)0));
- if ( __this_byte )
- return __i*__BITS_PER_WORDT(_WordT) + __j*CHAR_BIT +
- _First_one<true>::_S_first_one[__this_byte];
-
- __thisword >>= CHAR_BIT;
- }
- }
- }
- // not found, so return an indication of failure.
- return __not_found;
-}
-
-template<size_t _Nw, class _WordT>
-size_t
-_Base_bitset<_Nw, _WordT>::_M_do_find_next(size_t __prev,
- size_t __not_found) const
-{
- // make bound inclusive
- ++__prev;
-
- // check out of bounds
- if ( __prev >= _Nw * __BITS_PER_WORDT(_WordT) )
- return __not_found;
-
- // search first word
- size_t __i = _S_whichword(__prev);
- _WordT __thisword = _M_w[__i];
-
- // mask off bits below bound
- __thisword &= (~static_cast<_WordT>(0)) << _S_whichbit(__prev);
-
- if ( __thisword != static_cast<_WordT>(0) ) {
- // find byte within word
- // get first byte into place
- __thisword >>= _S_whichbyte(__prev) * CHAR_BIT;
- for ( size_t __j = _S_whichbyte(__prev); __j < sizeof(_WordT); __j++ ) {
- unsigned char __this_byte
- = static_cast<unsigned char>(__thisword & (~(unsigned char)0));
- if ( __this_byte )
- return __i*__BITS_PER_WORDT(_WordT) + __j*CHAR_BIT +
- _First_one<true>::_S_first_one[__this_byte];
-
- __thisword >>= CHAR_BIT;
- }
- }
-
- // check subsequent words
- __i++;
- for ( ; __i < _Nw; __i++ ) {
- _WordT __thisword = _M_w[__i];
- if ( __thisword != static_cast<_WordT>(0) ) {
- // find byte within word
- for ( size_t __j = 0; __j < sizeof(_WordT); __j++ ) {
- unsigned char __this_byte
- = static_cast<unsigned char>(__thisword & (~(unsigned char)0));
- if ( __this_byte )
- return __i*__BITS_PER_WORDT(_WordT) + __j*CHAR_BIT +
- _First_one<true>::_S_first_one[__this_byte];
-
- __thisword >>= CHAR_BIT;
- }
- }
- }
-
- // not found, so return an indication of failure.
- return __not_found;
-} // end _M_do_find_next
-
-
-// ------------------------------------------------------------
-
-//
-// Base class: specialization for a single word.
-//
-
-template<class _WordT>
-struct _Base_bitset<1, _WordT> {
- _WordT _M_w;
-
- _Base_bitset( void ) { _M_do_reset(); }
-
- _Base_bitset(unsigned long __val);
-
- static size_t _S_whichword( size_t __pos ) {
- return __pos / __BITS_PER_WORDT(_WordT);
- }
- static size_t _S_whichbyte( size_t __pos ) {
- return (__pos % __BITS_PER_WORDT(_WordT)) / CHAR_BIT;
- }
- static size_t _S_whichbit( size_t __pos ) {
- return __pos % __BITS_PER_WORDT(_WordT);
- }
- static _WordT _S_maskbit( size_t __pos ) {
- return (static_cast<_WordT>(1)) << _S_whichbit(__pos);
- }
-
- _WordT& _M_getword(size_t) { return _M_w; }
- _WordT _M_getword(size_t) const { return _M_w; }
-
- _WordT& _M_hiword() { return _M_w; }
- _WordT _M_hiword() const { return _M_w; }
-
- void _M_do_and(const _Base_bitset<1,_WordT>& __x) { _M_w &= __x._M_w; }
- void _M_do_or(const _Base_bitset<1,_WordT>& __x) { _M_w |= __x._M_w; }
- void _M_do_xor(const _Base_bitset<1,_WordT>& __x) { _M_w ^= __x._M_w; }
- void _M_do_left_shift(size_t __shift) { _M_w <<= __shift; }
- void _M_do_right_shift(size_t __shift) { _M_w >>= __shift; }
- void _M_do_flip() { _M_w = ~_M_w; }
- void _M_do_set() { _M_w = ~static_cast<_WordT>(0); }
- void _M_do_reset() { _M_w = 0; }
-
- bool _M_is_equal(const _Base_bitset<1,_WordT>& __x) const {
- return _M_w == __x._M_w;
- }
- bool _M_is_any() const {
- return _M_w != 0;
- }
-
- size_t _M_do_count() const {
- size_t __result = 0;
- const unsigned char* __byte_ptr = (const unsigned char*)&_M_w;
- const unsigned char* __end_ptr = ((const unsigned char*)&_M_w)+sizeof(_M_w);
- while ( __byte_ptr < __end_ptr ) {
- __result += _Bit_count<true>::_S_bit_count[*__byte_ptr];
- __byte_ptr++;
- }
- return __result;
- }
-
- unsigned long _M_do_to_ulong() const {
- if (sizeof(_WordT) <= sizeof(unsigned long))
- return static_cast<unsigned long>(_M_w);
- else {
- const _WordT __mask = static_cast<_WordT>(static_cast<unsigned long>(-1));
- if (_M_w & ~__mask)
- __STL_THROW(overflow_error("bitset"));
- return static_cast<unsigned long>(_M_w);
- }
- }
-
- size_t _M_do_find_first(size_t __not_found) const;
-
- // find the next "on" bit that follows "prev"
- size_t _M_do_find_next(size_t __prev, size_t __not_found) const;
-
-};
-
-//
-// Definitions of non-inline functions from the single-word version of
-// _Base_bitset.
-//
-
-template <class _WordT>
-_Base_bitset<1, _WordT>::_Base_bitset(unsigned long __val)
-{
- _M_do_reset();
- const size_t __n = min(sizeof(unsigned long)*CHAR_BIT,
- __BITS_PER_WORDT(_WordT)*_Nw);
- for(size_t __i = 0; __i < __n; ++__i, __val >>= 1)
- if ( __val & 0x1 )
- _M_w |= _S_maskbit(__i);
-}
-
-template <class _WordT>
-size_t _Base_bitset<1, _WordT>::_M_do_find_first(size_t __not_found) const
-{
- _WordT __thisword = _M_w;
-
- if ( __thisword != static_cast<_WordT>(0) ) {
- // find byte within word
- for ( size_t __j = 0; __j < sizeof(_WordT); __j++ ) {
- unsigned char __this_byte
- = static_cast<unsigned char>(__thisword & (~(unsigned char)0));
- if ( __this_byte )
- return __j*CHAR_BIT + _First_one<true>::_S_first_one[__this_byte];
-
- __thisword >>= CHAR_BIT;
- }
- }
- // not found, so return a value that indicates failure.
- return __not_found;
-}
-
-template <class _WordT>
-size_t
-_Base_bitset<1, _WordT>::_M_do_find_next(size_t __prev,
- size_t __not_found ) const
-{
- // make bound inclusive
- ++__prev;
-
- // check out of bounds
- if ( __prev >= __BITS_PER_WORDT(_WordT) )
- return __not_found;
-
- // search first (and only) word
- _WordT __thisword = _M_w;
-
- // mask off bits below bound
- __thisword &= (~static_cast<_WordT>(0)) << _S_whichbit(__prev);
-
- if ( __thisword != static_cast<_WordT>(0) ) {
- // find byte within word
- // get first byte into place
- __thisword >>= _S_whichbyte(__prev) * CHAR_BIT;
- for ( size_t __j = _S_whichbyte(__prev); __j < sizeof(_WordT); __j++ ) {
- unsigned char __this_byte
- = static_cast<unsigned char>(__thisword & (~(unsigned char)0));
- if ( __this_byte )
- return __j*CHAR_BIT + _First_one<true>::_S_first_one[__this_byte];
-
- __thisword >>= CHAR_BIT;
- }
- }
-
- // not found, so return a value that indicates failure.
- return __not_found;
-} // end _M_do_find_next
-
-//
-// One last specialization: _M_do_to_ulong() and the constructor from
-// unsigned long are very simple if the bitset consists of a single
-// word of type unsigned long.
-//
-
-template<>
-inline unsigned long
-_Base_bitset<1, unsigned long>::_M_do_to_ulong() const { return _M_w; }
-
-template<>
-inline _Base_bitset<1, unsigned long>::_Base_bitset(unsigned long __val) {
- _M_w = __val;
-}
-
-
-// ------------------------------------------------------------
-// Helper class to zero out the unused high-order bits in the highest word.
-
-template <class _WordT, size_t _Extrabits> struct _Sanitize {
- static void _M_do_sanitize(_WordT& __val)
- { __val &= ~((~static_cast<_WordT>(0)) << _Extrabits); }
-};
-
-template <class _WordT> struct _Sanitize<_WordT, 0> {
- static void _M_do_sanitize(_WordT) {}
-};
-
-// ------------------------------------------------------------
-// Class bitset.
-// _Nb may be any nonzero number of type size_t.
-// Type _WordT may be any unsigned integral type.
-
-template<size_t _Nb, class _WordT = unsigned long>
-class bitset : private _Base_bitset<__BITSET_WORDS(_Nb,_WordT), _WordT>
-{
-private:
- typedef _Base_bitset<__BITSET_WORDS(_Nb,_WordT), _WordT> _Base;
-
- // Import base's protected interface. Necessary because of new template
- // name resolution rules.
- using _Base::_S_whichword;
- using _Base::_S_whichbyte;
- using _Base::_S_whichbit;
- using _Base::_S_maskbit;
- using _Base::_M_getword;
- using _Base::_M_hiword;
- using _Base::_M_do_and;
- using _Base::_M_do_or;
- using _Base::_M_do_xor;
- using _Base::_M_do_left_shift;
- using _Base::_M_do_right_shift;
- using _Base::_M_do_flip;
- using _Base::_M_do_set;
- using _Base::_M_do_reset;
- using _Base::_M_is_equal;
- using _Base::_M_is_any;
- using _Base::_M_do_count;
- using _Base::_M_do_to_ulong;
- using _Base::_M_do_find_first;
- using _Base::_M_do_find_next;
-
-private:
- void _M_do_sanitize() {
- _Sanitize<_WordT,_Nb%__BITS_PER_WORDT(_WordT) >
- ::_M_do_sanitize(_M_hiword());
- }
-
-public:
-
- // bit reference:
- class reference;
- friend class reference;
- class reference {
- friend class bitset;
-
- _WordT *_M_wp;
- size_t _M_bpos;
-
- // left undefined
- reference();
-
- reference( bitset& __b, size_t __pos ) {
- _M_wp = &__b._M_getword(__pos);
- _M_bpos = _S_whichbit(__pos);
- }
-
- public:
- ~reference() {}
-
- // for b[i] = __x;
- reference& operator=(bool __x) {
- if ( __x )
- *_M_wp |= _S_maskbit(_M_bpos);
- else
- *_M_wp &= ~_S_maskbit(_M_bpos);
-
- return *this;
- }
-
- // for b[i] = b[__j];
- reference& operator=(const reference& __j) {
- if ( (*(__j._M_wp) & _S_maskbit(__j._M_bpos)) )
- *_M_wp |= _S_maskbit(_M_bpos);
- else
- *_M_wp &= ~_S_maskbit(_M_bpos);
-
- return *this;
- }
-
- // flips the bit
- bool operator~() const { return (*(_M_wp) & _S_maskbit(_M_bpos)) == 0; }
-
- // for __x = b[i];
- operator bool() const { return (*(_M_wp) & _S_maskbit(_M_bpos)) != 0; }
-
- // for b[i].flip();
- reference& flip() {
- *_M_wp ^= _S_maskbit(_M_bpos);
- return *this;
- }
- };
-
- // 23.3.5.1 constructors:
- bitset() {}
- bitset(unsigned long __val) :
- _Base_bitset<__BITSET_WORDS(_Nb,_WordT), _WordT>(__val) {}
-
- template<class _CharT, class _Traits, class _Alloc>
- explicit bitset(const basic_string<_CharT,_Traits,_Alloc>& __s,
- size_t __pos = 0,
- size_t __n = size_t(basic_string<_CharT,_Traits,_Alloc>::npos))
- : _Base()
- {
- if (__pos > __s.size())
- __STL_THROW(out_of_range("bitset"));
- _M_copy_from_string(__s, __pos, __n);
- }
-
- // 23.3.5.2 bitset operations:
- bitset<_Nb,_WordT>& operator&=(const bitset<_Nb,_WordT>& __rhs) {
- _M_do_and(__rhs);
- return *this;
- }
-
- bitset<_Nb,_WordT>& operator|=(const bitset<_Nb,_WordT>& __rhs) {
- _M_do_or(__rhs);
- return *this;
- }
-
- bitset<_Nb,_WordT>& operator^=(const bitset<_Nb,_WordT>& __rhs) {
- _M_do_xor(__rhs);
- return *this;
- }
-
- bitset<_Nb,_WordT>& operator<<=(size_t __pos) {
- _M_do_left_shift(__pos);
- _M_do_sanitize();
- return *this;
- }
-
- bitset<_Nb,_WordT>& operator>>=(size_t __pos) {
- _M_do_right_shift(__pos);
- _M_do_sanitize();
- return *this;
- }
-
- //
- // Extension:
- // Versions of single-bit set, reset, flip, test with no range checking.
- //
-
- bitset<_Nb,_WordT>& _Unchecked_set(size_t __pos) {
- _M_getword(__pos) |= _S_maskbit(__pos);
- return *this;
- }
-
- bitset<_Nb,_WordT>& _Unchecked_set(size_t __pos, int __val) {
- if (__val)
- _M_getword(__pos) |= _S_maskbit(__pos);
- else
- _M_getword(__pos) &= ~_S_maskbit(__pos);
-
- return *this;
- }
-
- bitset<_Nb,_WordT>& _Unchecked_reset(size_t __pos) {
- _M_getword(__pos) &= ~_S_maskbit(__pos);
- return *this;
- }
-
- bitset<_Nb,_WordT>& _Unchecked_flip(size_t __pos) {
- _M_getword(__pos) ^= _S_maskbit(__pos);
- return *this;
- }
-
- bool _Unchecked_test(size_t __pos) const {
- return (_M_getword(__pos) & _S_maskbit(__pos)) != static_cast<_WordT>(0);
- }
-
- // Set, reset, and flip.
-
- bitset<_Nb,_WordT>& set() {
- _M_do_set();
- _M_do_sanitize();
- return *this;
- }
-
- bitset<_Nb,_WordT>& set(size_t __pos) {
- if (__pos >= _Nb)
- __STL_THROW(out_of_range("bitset"));
-
- return _Unchecked_set(__pos);
- }
-
- bitset<_Nb,_WordT>& set(size_t __pos, int __val) {
- if (__pos >= _Nb)
- __STL_THROW(out_of_range("bitset"));
-
- return _Unchecked_set(__pos, __val);
- }
-
- bitset<_Nb,_WordT>& reset() {
- _M_do_reset();
- return *this;
- }
-
- bitset<_Nb,_WordT>& reset(size_t __pos) {
- if (__pos >= _Nb)
- __STL_THROW(out_of_range("bitset"));
-
- return _Unchecked_reset(__pos);
- }
-
- bitset<_Nb,_WordT>& flip() {
- _M_do_flip();
- _M_do_sanitize();
- return *this;
- }
-
- bitset<_Nb,_WordT>& flip(size_t __pos) {
- if (__pos >= _Nb)
- __STL_THROW(out_of_range("bitset"));
-
- return _Unchecked_flip(__pos);
- }
-
- bitset<_Nb,_WordT> operator~() const {
- return bitset<_Nb,_WordT>(*this).flip();
- }
-
- // element access:
- //for b[i];
- reference operator[](size_t __pos) { return reference(*this,__pos); }
- bool operator[](size_t __pos) const { return _Unchecked_test(__pos); }
-
- unsigned long to_ulong() const { return _M_do_to_ulong(); }
-
-#ifdef __STL_EXPLICIT_FUNCTION_TMPL_ARGS
- template <class _CharT, class _Traits, class _Alloc>
- basic_string<_CharT, _Traits, _Alloc> to_string() const {
- basic_string<_CharT, _Traits, _Alloc> __result;
- _M_copy_to_string(__result);
- return __result;
- }
-#endif /* __STL_EXPLICIT_FUNCTION_TMPL_ARGS */
-
- // Helper functions for string operations.
- template<class _CharT, class _Traits, class _Alloc>
- void _M_copy_from_string(const basic_string<_CharT,_Traits,_Alloc>& __s,
- size_t,
- size_t);
-
- // Helper functions for string operations.
- template<class _CharT, class _Traits, class _Alloc>
- void _M_copy_to_string(basic_string<_CharT,_Traits,_Alloc>&) const;
-
- size_t count() const { return _M_do_count(); }
-
- size_t size() const { return _Nb; }
-
- bool operator==(const bitset<_Nb,_WordT>& __rhs) const {
- return _M_is_equal(__rhs);
- }
- bool operator!=(const bitset<_Nb,_WordT>& __rhs) const {
- return !_M_is_equal(__rhs);
- }
-
- bool test(size_t __pos) const {
- if (__pos > _Nb)
- __STL_THROW(out_of_range("bitset"));
-
- return _Unchecked_test(__pos);
- }
-
- bool any() const { return _M_is_any(); }
- bool none() const { return !_M_is_any(); }
-
- bitset<_Nb,_WordT> operator<<(size_t __pos) const
- { return bitset<_Nb,_WordT>(*this) <<= __pos; }
- bitset<_Nb,_WordT> operator>>(size_t __pos) const
- { return bitset<_Nb,_WordT>(*this) >>= __pos; }
-
- //
- // EXTENSIONS: bit-find operations. These operations are
- // experimental, and are subject to change or removal in future
- // versions.
- //
-
- // find the index of the first "on" bit
- size_t _Find_first() const
- { return _M_do_find_first(_Nb); }
-
- // find the index of the next "on" bit after prev
- size_t _Find_next( size_t __prev ) const
- { return _M_do_find_next(__prev, _Nb); }
-
-};
-
-//
-// Definitions of non-inline member functions.
-//
-
-template <size_t _Nb, class _WordT>
-template<class _CharT, class _Traits, class _Alloc>
-void bitset<_Nb, _WordT>
- ::_M_copy_from_string(const basic_string<_CharT,_Traits,_Alloc>& __s,
- size_t __pos,
- size_t __n)
-{
- reset();
- const size_t __nbits = min(_Nb, min(__n, __s.size() - __pos));
- for (size_t __i = 0; __i < __nbits; ++__i) {
- switch(__s[__pos + __nbits - __i - 1]) {
- case '0':
- break;
- case '1':
- set(__i);
- break;
- default:
- __STL_THROW(invalid_argument("bitset"));
- }
- }
-}
-
-template <size_t _Nb, class _WordT>
-template <class _CharT, class _Traits, class _Alloc>
-void bitset<_Nb, _WordT>
- ::_M_copy_to_string(basic_string<_CharT, _Traits, _Alloc>& __s) const
-{
- __s.assign(_Nb, '0');
-
- for (size_t __i = 0; __i < _Nb; ++__i)
- if (_Unchecked_test(__i))
- __s[_Nb - 1 - __i] = '1';
-}
-
-// ------------------------------------------------------------
-
-//
-// 23.3.5.3 bitset operations:
-//
-
-template <size_t _Nb, class _WordT>
-inline bitset<_Nb,_WordT> operator&(const bitset<_Nb,_WordT>& __x,
- const bitset<_Nb,_WordT>& __y) {
- bitset<_Nb,_WordT> __result(__x);
- __result &= __y;
- return __result;
-}
-
-
-template <size_t _Nb, class _WordT>
-inline bitset<_Nb,_WordT> operator|(const bitset<_Nb,_WordT>& __x,
- const bitset<_Nb,_WordT>& __y) {
- bitset<_Nb,_WordT> __result(__x);
- __result |= __y;
- return __result;
-}
-
-template <size_t _Nb, class _WordT>
-inline bitset<_Nb,_WordT> operator^(const bitset<_Nb,_WordT>& __x,
- const bitset<_Nb,_WordT>& __y) {
- bitset<_Nb,_WordT> __result(__x);
- __result ^= __y;
- return __result;
-}
-
-// NOTE: these must be rewritten once we have templatized iostreams.
-
-template <size_t _Nb, class _WordT>
-istream&
-operator>>(istream& __is, bitset<_Nb,_WordT>& __x) {
- string __tmp;
- __tmp.reserve(_Nb);
-
- // In new templatized iostreams, use istream::sentry
- if (__is.flags() & ios::skipws) {
- char __c;
- do
- __is.get(__c);
- while (__is && isspace(__c));
- if (__is)
- __is.putback(__c);
- }
-
- for (size_t __i = 0; __i < _Nb; ++__i) {
- char __c;
- __is.get(__c);
-
- if (!__is)
- break;
- else if (__c != '0' && __c != '1') {
- __is.putback(__c);
- break;
- }
- else
- __tmp.push_back(__c);
- }
-
- if (__tmp.empty())
- __is.clear(__is.rdstate() | ios::failbit);
- else
- __x._M_copy_from_string(__tmp, static_cast<size_t>(0), _Nb);
-
- return __is;
-}
-
-template <size_t _Nb, class _WordT>
-ostream& operator<<(ostream& __os, const bitset<_Nb,_WordT>& __x) {
- string __tmp;
- __x._M_copy_to_string(__tmp);
- return __os << __tmp;
-}
-
-// ------------------------------------------------------------
-// Lookup tables for find and count operations.
-
-template<bool __dummy>
-unsigned char _Bit_count<__dummy>::_S_bit_count[] = {
- 0, /* 0 */ 1, /* 1 */ 1, /* 2 */ 2, /* 3 */ 1, /* 4 */
- 2, /* 5 */ 2, /* 6 */ 3, /* 7 */ 1, /* 8 */ 2, /* 9 */
- 2, /* 10 */ 3, /* 11 */ 2, /* 12 */ 3, /* 13 */ 3, /* 14 */
- 4, /* 15 */ 1, /* 16 */ 2, /* 17 */ 2, /* 18 */ 3, /* 19 */
- 2, /* 20 */ 3, /* 21 */ 3, /* 22 */ 4, /* 23 */ 2, /* 24 */
- 3, /* 25 */ 3, /* 26 */ 4, /* 27 */ 3, /* 28 */ 4, /* 29 */
- 4, /* 30 */ 5, /* 31 */ 1, /* 32 */ 2, /* 33 */ 2, /* 34 */
- 3, /* 35 */ 2, /* 36 */ 3, /* 37 */ 3, /* 38 */ 4, /* 39 */
- 2, /* 40 */ 3, /* 41 */ 3, /* 42 */ 4, /* 43 */ 3, /* 44 */
- 4, /* 45 */ 4, /* 46 */ 5, /* 47 */ 2, /* 48 */ 3, /* 49 */
- 3, /* 50 */ 4, /* 51 */ 3, /* 52 */ 4, /* 53 */ 4, /* 54 */
- 5, /* 55 */ 3, /* 56 */ 4, /* 57 */ 4, /* 58 */ 5, /* 59 */
- 4, /* 60 */ 5, /* 61 */ 5, /* 62 */ 6, /* 63 */ 1, /* 64 */
- 2, /* 65 */ 2, /* 66 */ 3, /* 67 */ 2, /* 68 */ 3, /* 69 */
- 3, /* 70 */ 4, /* 71 */ 2, /* 72 */ 3, /* 73 */ 3, /* 74 */
- 4, /* 75 */ 3, /* 76 */ 4, /* 77 */ 4, /* 78 */ 5, /* 79 */
- 2, /* 80 */ 3, /* 81 */ 3, /* 82 */ 4, /* 83 */ 3, /* 84 */
- 4, /* 85 */ 4, /* 86 */ 5, /* 87 */ 3, /* 88 */ 4, /* 89 */
- 4, /* 90 */ 5, /* 91 */ 4, /* 92 */ 5, /* 93 */ 5, /* 94 */
- 6, /* 95 */ 2, /* 96 */ 3, /* 97 */ 3, /* 98 */ 4, /* 99 */
- 3, /* 100 */ 4, /* 101 */ 4, /* 102 */ 5, /* 103 */ 3, /* 104 */
- 4, /* 105 */ 4, /* 106 */ 5, /* 107 */ 4, /* 108 */ 5, /* 109 */
- 5, /* 110 */ 6, /* 111 */ 3, /* 112 */ 4, /* 113 */ 4, /* 114 */
- 5, /* 115 */ 4, /* 116 */ 5, /* 117 */ 5, /* 118 */ 6, /* 119 */
- 4, /* 120 */ 5, /* 121 */ 5, /* 122 */ 6, /* 123 */ 5, /* 124 */
- 6, /* 125 */ 6, /* 126 */ 7, /* 127 */ 1, /* 128 */ 2, /* 129 */
- 2, /* 130 */ 3, /* 131 */ 2, /* 132 */ 3, /* 133 */ 3, /* 134 */
- 4, /* 135 */ 2, /* 136 */ 3, /* 137 */ 3, /* 138 */ 4, /* 139 */
- 3, /* 140 */ 4, /* 141 */ 4, /* 142 */ 5, /* 143 */ 2, /* 144 */
- 3, /* 145 */ 3, /* 146 */ 4, /* 147 */ 3, /* 148 */ 4, /* 149 */
- 4, /* 150 */ 5, /* 151 */ 3, /* 152 */ 4, /* 153 */ 4, /* 154 */
- 5, /* 155 */ 4, /* 156 */ 5, /* 157 */ 5, /* 158 */ 6, /* 159 */
- 2, /* 160 */ 3, /* 161 */ 3, /* 162 */ 4, /* 163 */ 3, /* 164 */
- 4, /* 165 */ 4, /* 166 */ 5, /* 167 */ 3, /* 168 */ 4, /* 169 */
- 4, /* 170 */ 5, /* 171 */ 4, /* 172 */ 5, /* 173 */ 5, /* 174 */
- 6, /* 175 */ 3, /* 176 */ 4, /* 177 */ 4, /* 178 */ 5, /* 179 */
- 4, /* 180 */ 5, /* 181 */ 5, /* 182 */ 6, /* 183 */ 4, /* 184 */
- 5, /* 185 */ 5, /* 186 */ 6, /* 187 */ 5, /* 188 */ 6, /* 189 */
- 6, /* 190 */ 7, /* 191 */ 2, /* 192 */ 3, /* 193 */ 3, /* 194 */
- 4, /* 195 */ 3, /* 196 */ 4, /* 197 */ 4, /* 198 */ 5, /* 199 */
- 3, /* 200 */ 4, /* 201 */ 4, /* 202 */ 5, /* 203 */ 4, /* 204 */
- 5, /* 205 */ 5, /* 206 */ 6, /* 207 */ 3, /* 208 */ 4, /* 209 */
- 4, /* 210 */ 5, /* 211 */ 4, /* 212 */ 5, /* 213 */ 5, /* 214 */
- 6, /* 215 */ 4, /* 216 */ 5, /* 217 */ 5, /* 218 */ 6, /* 219 */
- 5, /* 220 */ 6, /* 221 */ 6, /* 222 */ 7, /* 223 */ 3, /* 224 */
- 4, /* 225 */ 4, /* 226 */ 5, /* 227 */ 4, /* 228 */ 5, /* 229 */
- 5, /* 230 */ 6, /* 231 */ 4, /* 232 */ 5, /* 233 */ 5, /* 234 */
- 6, /* 235 */ 5, /* 236 */ 6, /* 237 */ 6, /* 238 */ 7, /* 239 */
- 4, /* 240 */ 5, /* 241 */ 5, /* 242 */ 6, /* 243 */ 5, /* 244 */
- 6, /* 245 */ 6, /* 246 */ 7, /* 247 */ 5, /* 248 */ 6, /* 249 */
- 6, /* 250 */ 7, /* 251 */ 6, /* 252 */ 7, /* 253 */ 7, /* 254 */
- 8 /* 255 */
-}; // end _Bit_count
-
-template<bool __dummy>
-unsigned char _First_one<__dummy>::_S_first_one[] = {
- 0, /* 0 */ 0, /* 1 */ 1, /* 2 */ 0, /* 3 */ 2, /* 4 */
- 0, /* 5 */ 1, /* 6 */ 0, /* 7 */ 3, /* 8 */ 0, /* 9 */
- 1, /* 10 */ 0, /* 11 */ 2, /* 12 */ 0, /* 13 */ 1, /* 14 */
- 0, /* 15 */ 4, /* 16 */ 0, /* 17 */ 1, /* 18 */ 0, /* 19 */
- 2, /* 20 */ 0, /* 21 */ 1, /* 22 */ 0, /* 23 */ 3, /* 24 */
- 0, /* 25 */ 1, /* 26 */ 0, /* 27 */ 2, /* 28 */ 0, /* 29 */
- 1, /* 30 */ 0, /* 31 */ 5, /* 32 */ 0, /* 33 */ 1, /* 34 */
- 0, /* 35 */ 2, /* 36 */ 0, /* 37 */ 1, /* 38 */ 0, /* 39 */
- 3, /* 40 */ 0, /* 41 */ 1, /* 42 */ 0, /* 43 */ 2, /* 44 */
- 0, /* 45 */ 1, /* 46 */ 0, /* 47 */ 4, /* 48 */ 0, /* 49 */
- 1, /* 50 */ 0, /* 51 */ 2, /* 52 */ 0, /* 53 */ 1, /* 54 */
- 0, /* 55 */ 3, /* 56 */ 0, /* 57 */ 1, /* 58 */ 0, /* 59 */
- 2, /* 60 */ 0, /* 61 */ 1, /* 62 */ 0, /* 63 */ 6, /* 64 */
- 0, /* 65 */ 1, /* 66 */ 0, /* 67 */ 2, /* 68 */ 0, /* 69 */
- 1, /* 70 */ 0, /* 71 */ 3, /* 72 */ 0, /* 73 */ 1, /* 74 */
- 0, /* 75 */ 2, /* 76 */ 0, /* 77 */ 1, /* 78 */ 0, /* 79 */
- 4, /* 80 */ 0, /* 81 */ 1, /* 82 */ 0, /* 83 */ 2, /* 84 */
- 0, /* 85 */ 1, /* 86 */ 0, /* 87 */ 3, /* 88 */ 0, /* 89 */
- 1, /* 90 */ 0, /* 91 */ 2, /* 92 */ 0, /* 93 */ 1, /* 94 */
- 0, /* 95 */ 5, /* 96 */ 0, /* 97 */ 1, /* 98 */ 0, /* 99 */
- 2, /* 100 */ 0, /* 101 */ 1, /* 102 */ 0, /* 103 */ 3, /* 104 */
- 0, /* 105 */ 1, /* 106 */ 0, /* 107 */ 2, /* 108 */ 0, /* 109 */
- 1, /* 110 */ 0, /* 111 */ 4, /* 112 */ 0, /* 113 */ 1, /* 114 */
- 0, /* 115 */ 2, /* 116 */ 0, /* 117 */ 1, /* 118 */ 0, /* 119 */
- 3, /* 120 */ 0, /* 121 */ 1, /* 122 */ 0, /* 123 */ 2, /* 124 */
- 0, /* 125 */ 1, /* 126 */ 0, /* 127 */ 7, /* 128 */ 0, /* 129 */
- 1, /* 130 */ 0, /* 131 */ 2, /* 132 */ 0, /* 133 */ 1, /* 134 */
- 0, /* 135 */ 3, /* 136 */ 0, /* 137 */ 1, /* 138 */ 0, /* 139 */
- 2, /* 140 */ 0, /* 141 */ 1, /* 142 */ 0, /* 143 */ 4, /* 144 */
- 0, /* 145 */ 1, /* 146 */ 0, /* 147 */ 2, /* 148 */ 0, /* 149 */
- 1, /* 150 */ 0, /* 151 */ 3, /* 152 */ 0, /* 153 */ 1, /* 154 */
- 0, /* 155 */ 2, /* 156 */ 0, /* 157 */ 1, /* 158 */ 0, /* 159 */
- 5, /* 160 */ 0, /* 161 */ 1, /* 162 */ 0, /* 163 */ 2, /* 164 */
- 0, /* 165 */ 1, /* 166 */ 0, /* 167 */ 3, /* 168 */ 0, /* 169 */
- 1, /* 170 */ 0, /* 171 */ 2, /* 172 */ 0, /* 173 */ 1, /* 174 */
- 0, /* 175 */ 4, /* 176 */ 0, /* 177 */ 1, /* 178 */ 0, /* 179 */
- 2, /* 180 */ 0, /* 181 */ 1, /* 182 */ 0, /* 183 */ 3, /* 184 */
- 0, /* 185 */ 1, /* 186 */ 0, /* 187 */ 2, /* 188 */ 0, /* 189 */
- 1, /* 190 */ 0, /* 191 */ 6, /* 192 */ 0, /* 193 */ 1, /* 194 */
- 0, /* 195 */ 2, /* 196 */ 0, /* 197 */ 1, /* 198 */ 0, /* 199 */
- 3, /* 200 */ 0, /* 201 */ 1, /* 202 */ 0, /* 203 */ 2, /* 204 */
- 0, /* 205 */ 1, /* 206 */ 0, /* 207 */ 4, /* 208 */ 0, /* 209 */
- 1, /* 210 */ 0, /* 211 */ 2, /* 212 */ 0, /* 213 */ 1, /* 214 */
- 0, /* 215 */ 3, /* 216 */ 0, /* 217 */ 1, /* 218 */ 0, /* 219 */
- 2, /* 220 */ 0, /* 221 */ 1, /* 222 */ 0, /* 223 */ 5, /* 224 */
- 0, /* 225 */ 1, /* 226 */ 0, /* 227 */ 2, /* 228 */ 0, /* 229 */
- 1, /* 230 */ 0, /* 231 */ 3, /* 232 */ 0, /* 233 */ 1, /* 234 */
- 0, /* 235 */ 2, /* 236 */ 0, /* 237 */ 1, /* 238 */ 0, /* 239 */
- 4, /* 240 */ 0, /* 241 */ 1, /* 242 */ 0, /* 243 */ 2, /* 244 */
- 0, /* 245 */ 1, /* 246 */ 0, /* 247 */ 3, /* 248 */ 0, /* 249 */
- 1, /* 250 */ 0, /* 251 */ 2, /* 252 */ 0, /* 253 */ 1, /* 254 */
- 0, /* 255 */
-}; // end _First_one
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1209
-#endif
-
-__STL_END_NAMESPACE
-
-
-#undef __BITS_PER_WORDT
-#undef __BITSET_WORDS
-
-#endif /* __SGI_STL_BITSET */
-
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/bvector.h b/contrib/libstdc++/stl/bvector.h
deleted file mode 100644
index 03a3fb1..0000000
--- a/contrib/libstdc++/stl/bvector.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_BVECTOR_H
-#define __SGI_STL_BVECTOR_H
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
-#include <vector.h>
-#else
-#include <algobase.h>
-#include <alloc.h>
-#endif
-
-#include <stl_bvector.h>
-
-#ifdef __STL_USE_NAMESPACES
-
-using __STD::bit_vector;
-
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_BVECTOR_H */
-
-// Local Variables:
-// mode:C++
-// End:
-
-
diff --git a/contrib/libstdc++/stl/defalloc.h b/contrib/libstdc++/stl/defalloc.h
deleted file mode 100644
index 0bfcc2c..0000000
--- a/contrib/libstdc++/stl/defalloc.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-// Inclusion of this file is DEPRECATED. This is the original HP
-// default allocator. It is provided only for backward compatibility.
-// This file WILL BE REMOVED in a future release.
-//
-// DO NOT USE THIS FILE unless you have an old container implementation
-// that requires an allocator with the HP-style interface.
-//
-// Standard-conforming allocators have a very different interface. The
-// standard default allocator is declared in the header <memory>.
-
-#ifndef DEFALLOC_H
-#define DEFALLOC_H
-
-#include <new.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <iostream.h>
-#include <algobase.h>
-
-
-template <class T>
-inline T* allocate(ptrdiff_t size, T*) {
- set_new_handler(0);
- T* tmp = (T*)(::operator new((size_t)(size * sizeof(T))));
- if (tmp == 0) {
- cerr << "out of memory" << endl;
- exit(1);
- }
- return tmp;
-}
-
-
-template <class T>
-inline void deallocate(T* buffer) {
- ::operator delete(buffer);
-}
-
-template <class T>
-class allocator {
-public:
- typedef T value_type;
- typedef T* pointer;
- typedef const T* const_pointer;
- typedef T& reference;
- typedef const T& const_reference;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- pointer allocate(size_type n) {
- return ::allocate((difference_type)n, (pointer)0);
- }
- void deallocate(pointer p) { ::deallocate(p); }
- pointer address(reference x) { return (pointer)&x; }
- const_pointer const_address(const_reference x) {
- return (const_pointer)&x;
- }
- size_type init_page_size() {
- return max(size_type(1), size_type(4096/sizeof(T)));
- }
- size_type max_size() const {
- return max(size_type(1), size_type(UINT_MAX/sizeof(T)));
- }
-};
-
-class allocator<void> {
-public:
- typedef void* pointer;
-};
-
-
-
-#endif
diff --git a/contrib/libstdc++/stl/deque b/contrib/libstdc++/stl/deque
deleted file mode 100644
index 61654ac..0000000
--- a/contrib/libstdc++/stl/deque
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_DEQUE
-#define __SGI_STL_DEQUE
-
-#include <stl_algobase.h>
-#include <stl_alloc.h>
-#include <stl_construct.h>
-#include <stl_uninitialized.h>
-#include <stl_deque.h>
-
-#endif /* __SGI_STL_DEQUE */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/deque.h b/contrib/libstdc++/stl/deque.h
deleted file mode 100644
index ede38b1..0000000
--- a/contrib/libstdc++/stl/deque.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_DEQUE_H
-#define __SGI_STL_DEQUE_H
-
-#include <algobase.h>
-#include <alloc.h>
-#include <stl_deque.h>
-
-#ifdef __STL_USE_NAMESPACES
-using __STD::deque;
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_DEQUE_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/function.h b/contrib/libstdc++/stl/function.h
deleted file mode 100644
index 6474dd9..0000000
--- a/contrib/libstdc++/stl/function.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_FUNCTION_H
-#define __SGI_STL_FUNCTION_H
-
-#ifndef __STL_CONFIG_H
-#include <stl_config.h>
-#endif
-#ifndef __SGI_STL_INTERNAL_RELOPS
-#include <stl_relops.h>
-#endif
-#include <stddef.h>
-#ifndef __SGI_STL_INTERNAL_FUNCTION_H
-#include <stl_function.h>
-#endif
-
-#ifdef __STL_USE_NAMESPACE_FOR_RELOPS
-
-// Names from stl_relops.h
-using __STD_RELOPS::operator!=;
-using __STD_RELOPS::operator>;
-using __STD_RELOPS::operator<=;
-using __STD_RELOPS::operator>=;
-
-#endif /* __STL_USE_NAMESPACE_FOR_RELOPS */
-
-#ifdef __STL_USE_NAMESPACES
-
-// Names from stl_function.h
-using __STD::unary_function;
-using __STD::binary_function;
-using __STD::plus;
-using __STD::minus;
-using __STD::multiplies;
-using __STD::divides;
-using __STD::identity_element;
-using __STD::modulus;
-using __STD::negate;
-using __STD::equal_to;
-using __STD::not_equal_to;
-using __STD::greater;
-using __STD::less;
-using __STD::greater_equal;
-using __STD::less_equal;
-using __STD::logical_and;
-using __STD::logical_or;
-using __STD::logical_not;
-using __STD::unary_negate;
-using __STD::binary_negate;
-using __STD::not1;
-using __STD::not2;
-using __STD::binder1st;
-using __STD::binder2nd;
-using __STD::bind1st;
-using __STD::bind2nd;
-using __STD::unary_compose;
-using __STD::binary_compose;
-using __STD::compose1;
-using __STD::compose2;
-using __STD::pointer_to_unary_function;
-using __STD::pointer_to_binary_function;
-using __STD::ptr_fun;
-using __STD::identity;
-using __STD::select1st;
-using __STD::select2nd;
-using __STD::project1st;
-using __STD::project2nd;
-using __STD::constant_void_fun;
-using __STD::constant_unary_fun;
-using __STD::constant_binary_fun;
-using __STD::constant0;
-using __STD::constant1;
-using __STD::constant2;
-using __STD::subtractive_rng;
-using __STD::mem_fun_t;
-using __STD::const_mem_fun_t;
-using __STD::mem_fun_ref_t;
-using __STD::const_mem_fun_ref_t;
-using __STD::mem_fun1_t;
-using __STD::const_mem_fun1_t;
-using __STD::mem_fun1_ref_t;
-using __STD::const_mem_fun1_ref_t;
-using __STD::mem_fun;
-using __STD::mem_fun_ref;
-using __STD::mem_fun1;
-using __STD::mem_fun1_ref;
-
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_FUNCTION_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/functional b/contrib/libstdc++/stl/functional
deleted file mode 100644
index d046dbb..0000000
--- a/contrib/libstdc++/stl/functional
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-#ifndef __SGI_STL_FUNCTIONAL
-#define __SGI_STL_FUNCTIONAL
-
-#include <stl_config.h>
-#include <stddef.h>
-#include <stl_function.h>
-
-#endif /* __SGI_STL_FUNCTIONAL */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/hash_map b/contrib/libstdc++/stl/hash_map
deleted file mode 100644
index f7421e0..0000000
--- a/contrib/libstdc++/stl/hash_map
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-#ifndef __SGI_STL_HASH_MAP
-#define __SGI_STL_HASH_MAP
-
-#ifndef __SGI_STL_INTERNAL_HASHTABLE_H
-#include <stl_hashtable.h>
-#endif
-
-#include <stl_hash_map.h>
-
-#endif /* __SGI_STL_HASH_MAP */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/hash_map.h b/contrib/libstdc++/stl/hash_map.h
deleted file mode 100644
index f347162..0000000
--- a/contrib/libstdc++/stl/hash_map.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-#ifndef __SGI_STL_HASH_MAP_H
-#define __SGI_STL_HASH_MAP_H
-
-#ifndef __SGI_STL_INTERNAL_HASHTABLE_H
-#include <stl_hashtable.h>
-#endif
-
-#include <algobase.h>
-#include <stl_hash_map.h>
-
-#ifdef __STL_USE_NAMESPACES
-using __STD::hash;
-using __STD::hashtable;
-using __STD::hash_map;
-using __STD::hash_multimap;
-#endif /* __STL_USE_NAMESPACES */
-
-
-#endif /* __SGI_STL_HASH_MAP_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/hash_set b/contrib/libstdc++/stl/hash_set
deleted file mode 100644
index 2244f47..0000000
--- a/contrib/libstdc++/stl/hash_set
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-#ifndef __SGI_STL_HASH_SET
-#define __SGI_STL_HASH_SET
-
-#ifndef __SGI_STL_INTERNAL_HASHTABLE_H
-#include <stl_hashtable.h>
-#endif
-
-#include <stl_hash_set.h>
-
-#endif /* __SGI_STL_HASH_SET */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/hash_set.h b/contrib/libstdc++/stl/hash_set.h
deleted file mode 100644
index d3e93c0..0000000
--- a/contrib/libstdc++/stl/hash_set.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-#ifndef __SGI_STL_HASH_SET_H
-#define __SGI_STL_HASH_SET_H
-
-#ifndef __SGI_STL_INTERNAL_HASHTABLE_H
-#include <stl_hashtable.h>
-#endif
-
-#include <algobase.h>
-#include <stl_hash_set.h>
-
-#ifdef __STL_USE_NAMESPACES
-using __STD::hash;
-using __STD::hashtable;
-using __STD::hash_set;
-using __STD::hash_multiset;
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_HASH_SET_H */
diff --git a/contrib/libstdc++/stl/hashtable.h b/contrib/libstdc++/stl/hashtable.h
deleted file mode 100644
index 15dbfc9..0000000
--- a/contrib/libstdc++/stl/hashtable.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_HASHTABLE_H
-#define __SGI_STL_HASHTABLE_H
-
-#include <stl_hashtable.h>
-#include <algo.h>
-#include <alloc.h>
-#include <vector.h>
-
-#ifdef __STL_USE_NAMESPACES
-using __STD::hash;
-using __STD::hashtable;
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_HASHTABLE_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/heap.h b/contrib/libstdc++/stl/heap.h
deleted file mode 100644
index 2ec93c0..0000000
--- a/contrib/libstdc++/stl/heap.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_HEAP_H
-#define __SGI_STL_HEAP_H
-
-#include <stl_config.h>
-#include <stl_heap.h>
-
-#ifdef __STL_USE_NAMESPACES
-
-using __STD::push_heap;
-using __STD::pop_heap;
-using __STD::make_heap;
-using __STD::sort_heap;
-
-#endif /* __STL_USE_NAMESPACES */
-
-
-#endif /* __SGI_STL_HEAP_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/iterator b/contrib/libstdc++/stl/iterator
deleted file mode 100644
index 4ddd208..0000000
--- a/contrib/libstdc++/stl/iterator
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_ITERATOR
-#define __SGI_STL_ITERATOR
-
-#include <stl_config.h>
-#include <stl_relops.h>
-#include <stddef.h> /* XXX should use <cstddef> */
-#if 0 /* XXX define a flag for this */
-#include <iostream>
-#else
-#include <iostream.h>
-#endif
-#include <stl_iterator.h>
-
-#endif /* __SGI_STL_ITERATOR */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/iterator.h b/contrib/libstdc++/stl/iterator.h
deleted file mode 100644
index f8a0237..0000000
--- a/contrib/libstdc++/stl/iterator.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_ITERATOR_H
-#define __SGI_STL_ITERATOR_H
-
-#ifndef __SGI_STL_FUNCTION_H
-#include <function.h>
-#endif
-#include <stddef.h>
-#include <iostream.h>
-#ifndef __SGI_STL_INTERNAL_ITERATOR_H
-#include <stl_iterator.h>
-#endif
-#ifndef __TYPE_TRAITS_H
-#include <type_traits.h>
-#endif
-#ifndef __SGI_STL_INTERNAL_CONSTRUCT_H
-#include <stl_construct.h>
-#endif
-#ifndef __SGI_STL_INTERNAL_RAW_STORAGE_ITERATOR_H
-#include <stl_raw_storage_iter.h>
-#endif
-
-#ifdef __STL_USE_NAMESPACES
-
-// Names from stl_iterator.h
-
-using __STD::input_iterator_tag;
-using __STD::output_iterator_tag;
-using __STD::forward_iterator_tag;
-using __STD::bidirectional_iterator_tag;
-using __STD::random_access_iterator_tag;
-
-#if 0
-using __STD::iterator;
-#endif
-using __STD::input_iterator;
-using __STD::output_iterator;
-using __STD::forward_iterator;
-using __STD::bidirectional_iterator;
-using __STD::random_access_iterator;
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
-using __STD::iterator_traits;
-#endif
-
-using __STD::iterator_category;
-using __STD::distance_type;
-using __STD::value_type;
-
-using __STD::distance;
-using __STD::advance;
-
-using __STD::insert_iterator;
-using __STD::front_insert_iterator;
-using __STD::back_insert_iterator;
-using __STD::inserter;
-using __STD::front_inserter;
-using __STD::back_inserter;
-
-using __STD::reverse_iterator;
-using __STD::reverse_bidirectional_iterator;
-
-using __STD::istream_iterator;
-using __STD::ostream_iterator;
-
-// Names from stl_construct.h
-using __STD::construct;
-using __STD::destroy;
-
-// Names from stl_raw_storage_iter.h
-using __STD::raw_storage_iterator;
-
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_ITERATOR_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/list b/contrib/libstdc++/stl/list
deleted file mode 100644
index 5294f39..0000000
--- a/contrib/libstdc++/stl/list
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_LIST
-#define __SGI_STL_LIST
-
-#include <stl_algobase.h>
-#include <stl_alloc.h>
-#include <stl_construct.h>
-#include <stl_uninitialized.h>
-#include <stl_list.h>
-
-#endif /* __SGI_STL_LIST */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/list.h b/contrib/libstdc++/stl/list.h
deleted file mode 100644
index 4e6ee0b..0000000
--- a/contrib/libstdc++/stl/list.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_LIST_H
-#define __SGI_STL_LIST_H
-
-#include <algobase.h>
-#include <alloc.h>
-#include <stl_list.h>
-
-#ifdef __STL_USE_NAMESPACES
-using __STD::list;
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_LIST_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/map b/contrib/libstdc++/stl/map
deleted file mode 100644
index 4cfb765..0000000
--- a/contrib/libstdc++/stl/map
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_MAP
-#define __SGI_STL_MAP
-
-#ifndef __SGI_STL_INTERNAL_TREE_H
-#include <stl_tree.h>
-#endif
-#include <stl_map.h>
-#include <stl_multimap.h>
-
-#endif /* __SGI_STL_MAP */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/map.h b/contrib/libstdc++/stl/map.h
deleted file mode 100644
index a89bd31..0000000
--- a/contrib/libstdc++/stl/map.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_MAP_H
-#define __SGI_STL_MAP_H
-
-#include <tree.h>
-#include <stl_map.h>
-
-#ifdef __STL_USE_NAMESPACES
-using __STD::map;
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_MAP_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/memory b/contrib/libstdc++/stl/memory
deleted file mode 100644
index 64338dd..0000000
--- a/contrib/libstdc++/stl/memory
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-#ifndef __SGI_STL_MEMORY
-#define __SGI_STL_MEMORY
-
-#include <stl_algobase.h>
-#include <stl_alloc.h>
-#include <stl_construct.h>
-#include <stl_tempbuf.h>
-#include <stl_uninitialized.h>
-#include <stl_raw_storage_iter.h>
-
-
-#if defined(__STL_MEMBER_TEMPLATES)
-
-__STL_BEGIN_NAMESPACE
-
-template <class _Tp> class auto_ptr {
-private:
- _Tp* _M_ptr;
-
-public:
- typedef _Tp element_type;
- explicit auto_ptr(_Tp* __p = 0) __STL_NOTHROW : _M_ptr(__p) {}
- auto_ptr(auto_ptr& __a) __STL_NOTHROW : _M_ptr(__a.release()) {}
- template <class _Tp1> auto_ptr(auto_ptr<_Tp1>& __a) __STL_NOTHROW
- : _M_ptr(__a.release()) {}
- auto_ptr& operator=(auto_ptr& __a) __STL_NOTHROW {
- if (&__a != this) {
- delete _M_ptr;
- _M_ptr = __a.release();
- }
- return *this;
- }
- template <class _Tp1>
- auto_ptr& operator=(auto_ptr<_Tp1>& __a) __STL_NOTHROW {
- if (__a.get() != this->get()) {
- delete _M_ptr;
- _M_ptr = __a.release();
- }
- return *this;
- }
- ~auto_ptr() __STL_NOTHROW { delete _M_ptr; }
-
- _Tp& operator*() const __STL_NOTHROW {
- return *_M_ptr;
- }
- _Tp* operator->() const __STL_NOTHROW {
- return _M_ptr;
- }
- _Tp* get() const __STL_NOTHROW {
- return _M_ptr;
- }
- _Tp* release() __STL_NOTHROW {
- _Tp* __tmp = _M_ptr;
- _M_ptr = 0;
- return __tmp;
- }
- void reset(_Tp* __p = 0) __STL_NOTHROW {
- delete _M_ptr;
- _M_ptr = __p;
- }
-
- // According to the C++ standard, these conversions are required. Most
- // present-day compilers, however, do not enforce that requirement---and,
- // in fact, most present-day compilers do not support the language
- // features that these conversions rely on.
-
-#ifdef __SGI_STL_USE_AUTO_PTR_CONVERSIONS
-
-private:
- template<class _Tp1> struct auto_ptr_ref {
- _Tp1* _M_ptr;
- auto_ptr_ref(_Tp1* __p) : _M_ptr(__p) {}
- };
-
-public:
- auto_ptr(auto_ptr_ref<_Tp> __ref) __STL_NOTHROW
- : _M_ptr(__ref._M_ptr) {}
- template <class _Tp1> operator auto_ptr_ref<_Tp1>() __STL_NOTHROW
- { return auto_ptr_ref<_Tp>(this->release()); }
- template <class _Tp1> operator auto_ptr<_Tp1>() __STL_NOTHROW
- { return auto_ptr<_Tp1>(this->release()); }
-
-#endif /* __SGI_STL_USE_AUTO_PTR_CONVERSIONS */
-};
-
-__STL_END_NAMESPACE
-#endif /* member templates */
-
-#endif /* __SGI_STL_MEMORY */
-
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/multimap.h b/contrib/libstdc++/stl/multimap.h
deleted file mode 100644
index 1a8ec4a..0000000
--- a/contrib/libstdc++/stl/multimap.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_MULTIMAP_H
-#define __SGI_STL_MULTIMAP_H
-
-#include <tree.h>
-#include <stl_multimap.h>
-
-#ifdef __STL_USE_NAMESPACES
-using __STD::multimap;
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_MULTIMAP_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/multiset.h b/contrib/libstdc++/stl/multiset.h
deleted file mode 100644
index 3024fd7..0000000
--- a/contrib/libstdc++/stl/multiset.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_MULTISET_H
-#define __SGI_STL_MULTISET_H
-
-#include <tree.h>
-#include <stl_multiset.h>
-
-#ifdef __STL_USE_NAMESPACES
-using __STD::multiset;
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_MULTISET_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/numeric b/contrib/libstdc++/stl/numeric
deleted file mode 100644
index 7f048e1..0000000
--- a/contrib/libstdc++/stl/numeric
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_NUMERIC
-#define __SGI_STL_NUMERIC
-
-#include <stl_config.h>
-#include <stl_relops.h>
-#include <stddef.h>
-#include <iostream.h>
-#include <stl_iterator.h>
-#include <stl_function.h>
-#include <stl_numeric.h>
-
-#endif /* __SGI_STL_NUMERIC */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/pair.h b/contrib/libstdc++/stl/pair.h
deleted file mode 100644
index 00f5cad..0000000
--- a/contrib/libstdc++/stl/pair.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_PAIR_H
-#define __SGI_STL_PAIR_H
-
-#ifndef __STL_CONFIG_H
-#include <stl_config.h>
-#endif
-#ifndef __SGI_STL_INTERNAL_RELOPS
-#include <stl_relops.h>
-#endif
-#ifndef __SGI_STL_INTERNAL_PAIR_H
-#include <stl_pair.h>
-#endif
-
-#ifdef __STL_USE_NAMESPACES
-
-using __STD::pair;
-using __STD::make_pair;
-
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_PAIR_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/pthread_alloc b/contrib/libstdc++/stl/pthread_alloc
deleted file mode 100644
index 1852908..0000000
--- a/contrib/libstdc++/stl/pthread_alloc
+++ /dev/null
@@ -1,479 +0,0 @@
-/*
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_PTHREAD_ALLOC
-#define __SGI_STL_PTHREAD_ALLOC
-
-// Pthread-specific node allocator.
-// This is similar to the default allocator, except that free-list
-// information is kept separately for each thread, avoiding locking.
-// This should be reasonably fast even in the presence of threads.
-// The down side is that storage may not be well-utilized.
-// It is not an error to allocate memory in thread A and deallocate
-// it in thread B. But this effectively transfers ownership of the memory,
-// so that it can only be reallocated by thread B. Thus this can effectively
-// result in a storage leak if it's done on a regular basis.
-// It can also result in frequent sharing of
-// cache lines among processors, with potentially serious performance
-// consequences.
-
-#include <stl_config.h>
-#include <stl_alloc.h>
-#ifndef __RESTRICT
-# define __RESTRICT
-#endif
-
-__STL_BEGIN_NAMESPACE
-
-#define __STL_DATA_ALIGNMENT 8
-
-union _Pthread_alloc_obj {
- union _Pthread_alloc_obj * __free_list_link;
- char __client_data[__STL_DATA_ALIGNMENT]; /* The client sees this. */
-};
-
-// Pthread allocators don't appear to the client to have meaningful
-// instances. We do in fact need to associate some state with each
-// thread. That state is represented by
-// _Pthread_alloc_per_thread_state<_Max_size>.
-
-template<size_t _Max_size>
-struct _Pthread_alloc_per_thread_state {
- typedef _Pthread_alloc_obj __obj;
- enum { _S_NFREELISTS = _Max_size/__STL_DATA_ALIGNMENT };
- _Pthread_alloc_obj* volatile __free_list[_S_NFREELISTS];
- _Pthread_alloc_per_thread_state<_Max_size> * __next;
- // Free list link for list of available per thread structures.
- // When one of these becomes available for reuse due to thread
- // termination, any objects in its free list remain associated
- // with it. The whole structure may then be used by a newly
- // created thread.
- _Pthread_alloc_per_thread_state() : __next(0)
- {
- memset((void *)__free_list, 0, _S_NFREELISTS * sizeof(__obj *));
- }
- // Returns an object of size __n, and possibly adds to size n free list.
- void *_M_refill(size_t __n);
-};
-
-// Pthread-specific allocator.
-// The argument specifies the largest object size allocated from per-thread
-// free lists. Larger objects are allocated using malloc_alloc.
-// Max_size must be a power of 2.
-template <size_t _Max_size = 128>
-class _Pthread_alloc_template {
-
-public: // but only for internal use:
-
- typedef _Pthread_alloc_obj __obj;
-
- // Allocates a chunk for nobjs of size "size". nobjs may be reduced
- // if it is inconvenient to allocate the requested number.
- static char *_S_chunk_alloc(size_t __size, int &__nobjs);
-
- enum {_S_ALIGN = __STL_DATA_ALIGNMENT};
-
- static size_t _S_round_up(size_t __bytes) {
- return (((__bytes) + _S_ALIGN-1) & ~(_S_ALIGN - 1));
- }
- static size_t _S_freelist_index(size_t __bytes) {
- return (((__bytes) + _S_ALIGN-1)/_S_ALIGN - 1);
- }
-
-private:
- // Chunk allocation state. And other shared state.
- // Protected by _S_chunk_allocator_lock.
- static pthread_mutex_t _S_chunk_allocator_lock;
- static char *_S_start_free;
- static char *_S_end_free;
- static size_t _S_heap_size;
- static _Pthread_alloc_per_thread_state<_Max_size>* _S_free_per_thread_states;
- static pthread_key_t _S_key;
- static bool _S_key_initialized;
- // Pthread key under which per thread state is stored.
- // Allocator instances that are currently unclaimed by any thread.
- static void _S_destructor(void *instance);
- // Function to be called on thread exit to reclaim per thread
- // state.
- static _Pthread_alloc_per_thread_state<_Max_size> *_S_new_per_thread_state();
- // Return a recycled or new per thread state.
- static _Pthread_alloc_per_thread_state<_Max_size> *_S_get_per_thread_state();
- // ensure that the current thread has an associated
- // per thread state.
- friend class _M_lock;
- class _M_lock {
- public:
- _M_lock () { pthread_mutex_lock(&_S_chunk_allocator_lock); }
- ~_M_lock () { pthread_mutex_unlock(&_S_chunk_allocator_lock); }
- };
-
-public:
-
- /* n must be > 0 */
- static void * allocate(size_t __n)
- {
- __obj * volatile * __my_free_list;
- __obj * __RESTRICT __result;
- _Pthread_alloc_per_thread_state<_Max_size>* __a;
-
- if (__n > _Max_size) {
- return(malloc_alloc::allocate(__n));
- }
- if (!_S_key_initialized ||
- !(__a = (_Pthread_alloc_per_thread_state<_Max_size>*)
- pthread_getspecific(_S_key))) {
- __a = _S_get_per_thread_state();
- }
- __my_free_list = __a -> __free_list + _S_freelist_index(__n);
- __result = *__my_free_list;
- if (__result == 0) {
- void *__r = __a -> _M_refill(_S_round_up(__n));
- return __r;
- }
- *__my_free_list = __result -> __free_list_link;
- return (__result);
- };
-
- /* p may not be 0 */
- static void deallocate(void *__p, size_t __n)
- {
- __obj *__q = (__obj *)__p;
- __obj * volatile * __my_free_list;
- _Pthread_alloc_per_thread_state<_Max_size>* __a;
-
- if (__n > _Max_size) {
- malloc_alloc::deallocate(__p, __n);
- return;
- }
- if (!_S_key_initialized ||
- !(__a = (_Pthread_alloc_per_thread_state<_Max_size> *)
- pthread_getspecific(_S_key))) {
- __a = _S_get_per_thread_state();
- }
- __my_free_list = __a->__free_list + _S_freelist_index(__n);
- __q -> __free_list_link = *__my_free_list;
- *__my_free_list = __q;
- }
-
- static void * reallocate(void *__p, size_t __old_sz, size_t __new_sz);
-
-} ;
-
-typedef _Pthread_alloc_template<> pthread_alloc;
-
-
-template <size_t _Max_size>
-void _Pthread_alloc_template<_Max_size>::_S_destructor(void * __instance)
-{
- _M_lock __lock_instance; // Need to acquire lock here.
- _Pthread_alloc_per_thread_state<_Max_size>* __s =
- (_Pthread_alloc_per_thread_state<_Max_size> *)__instance;
- __s -> __next = _S_free_per_thread_states;
- _S_free_per_thread_states = __s;
-}
-
-template <size_t _Max_size>
-_Pthread_alloc_per_thread_state<_Max_size> *
-_Pthread_alloc_template<_Max_size>::_S_new_per_thread_state()
-{
- /* lock already held here. */
- if (0 != _S_free_per_thread_states) {
- _Pthread_alloc_per_thread_state<_Max_size> *__result =
- _S_free_per_thread_states;
- _S_free_per_thread_states = _S_free_per_thread_states -> __next;
- return __result;
- } else {
- return new _Pthread_alloc_per_thread_state<_Max_size>;
- }
-}
-
-template <size_t _Max_size>
-_Pthread_alloc_per_thread_state<_Max_size> *
-_Pthread_alloc_template<_Max_size>::_S_get_per_thread_state()
-{
- /*REFERENCED*/
- _M_lock __lock_instance; // Need to acquire lock here.
- _Pthread_alloc_per_thread_state<_Max_size> * __result;
- if (!_S_key_initialized) {
- if (pthread_key_create(&_S_key, _S_destructor)) {
- abort(); // failed
- }
- _S_key_initialized = true;
- }
- __result = _S_new_per_thread_state();
- if (pthread_setspecific(_S_key, __result)) abort();
- return __result;
-}
-
-/* We allocate memory in large chunks in order to avoid fragmenting */
-/* the malloc heap too much. */
-/* We assume that size is properly aligned. */
-template <size_t _Max_size>
-char *_Pthread_alloc_template<_Max_size>
-::_S_chunk_alloc(size_t __size, int &__nobjs)
-{
- {
- char * __result;
- size_t __total_bytes;
- size_t __bytes_left;
- /*REFERENCED*/
- _M_lock __lock_instance; // Acquire lock for this routine
-
- __total_bytes = __size * __nobjs;
- __bytes_left = _S_end_free - _S_start_free;
- if (__bytes_left >= __total_bytes) {
- __result = _S_start_free;
- _S_start_free += __total_bytes;
- return(__result);
- } else if (__bytes_left >= __size) {
- __nobjs = __bytes_left/__size;
- __total_bytes = __size * __nobjs;
- __result = _S_start_free;
- _S_start_free += __total_bytes;
- return(__result);
- } else {
- size_t __bytes_to_get =
- 2 * __total_bytes + _S_round_up(_S_heap_size >> 4);
- // Try to make use of the left-over piece.
- if (__bytes_left > 0) {
- _Pthread_alloc_per_thread_state<_Max_size>* __a =
- (_Pthread_alloc_per_thread_state<_Max_size>*)
- pthread_getspecific(_S_key);
- __obj * volatile * __my_free_list =
- __a->__free_list + _S_freelist_index(__bytes_left);
-
- ((__obj *)_S_start_free) -> __free_list_link = *__my_free_list;
- *__my_free_list = (__obj *)_S_start_free;
- }
-# ifdef _SGI_SOURCE
- // Try to get memory that's aligned on something like a
- // cache line boundary, so as to avoid parceling out
- // parts of the same line to different threads and thus
- // possibly different processors.
- {
- const int __cache_line_size = 128; // probable upper bound
- __bytes_to_get &= ~(__cache_line_size-1);
- _S_start_free = (char *)memalign(__cache_line_size, __bytes_to_get);
- if (0 == _S_start_free) {
- _S_start_free = (char *)malloc_alloc::allocate(__bytes_to_get);
- }
- }
-# else /* !SGI_SOURCE */
- _S_start_free = (char *)malloc_alloc::allocate(__bytes_to_get);
-# endif
- _S_heap_size += __bytes_to_get;
- _S_end_free = _S_start_free + __bytes_to_get;
- }
- }
- // lock is released here
- return(_S_chunk_alloc(__size, __nobjs));
-}
-
-
-/* Returns an object of size n, and optionally adds to size n free list.*/
-/* We assume that n is properly aligned. */
-/* We hold the allocation lock. */
-template <size_t _Max_size>
-void *_Pthread_alloc_per_thread_state<_Max_size>
-::_M_refill(size_t __n)
-{
- int __nobjs = 128;
- char * __chunk =
- _Pthread_alloc_template<_Max_size>::_S_chunk_alloc(__n, __nobjs);
- __obj * volatile * __my_free_list;
- __obj * __result;
- __obj * __current_obj, * __next_obj;
- int __i;
-
- if (1 == __nobjs) {
- return(__chunk);
- }
- __my_free_list = __free_list
- + _Pthread_alloc_template<_Max_size>::_S_freelist_index(__n);
-
- /* Build free list in chunk */
- __result = (__obj *)__chunk;
- *__my_free_list = __next_obj = (__obj *)(__chunk + __n);
- for (__i = 1; ; __i++) {
- __current_obj = __next_obj;
- __next_obj = (__obj *)((char *)__next_obj + __n);
- if (__nobjs - 1 == __i) {
- __current_obj -> __free_list_link = 0;
- break;
- } else {
- __current_obj -> __free_list_link = __next_obj;
- }
- }
- return(__result);
-}
-
-template <size_t _Max_size>
-void *_Pthread_alloc_template<_Max_size>
-::reallocate(void *__p, size_t __old_sz, size_t __new_sz)
-{
- void * __result;
- size_t __copy_sz;
-
- if (__old_sz > _Max_size
- && __new_sz > _Max_size) {
- return(realloc(__p, __new_sz));
- }
- if (_S_round_up(__old_sz) == _S_round_up(__new_sz)) return(__p);
- __result = allocate(__new_sz);
- __copy_sz = __new_sz > __old_sz? __old_sz : __new_sz;
- memcpy(__result, __p, __copy_sz);
- deallocate(__p, __old_sz);
- return(__result);
-}
-
-template <size_t _Max_size>
-_Pthread_alloc_per_thread_state<_Max_size> *
-_Pthread_alloc_template<_Max_size>::_S_free_per_thread_states = 0;
-
-template <size_t _Max_size>
-pthread_key_t _Pthread_alloc_template<_Max_size>::_S_key;
-
-template <size_t _Max_size>
-bool _Pthread_alloc_template<_Max_size>::_S_key_initialized = false;
-
-template <size_t _Max_size>
-pthread_mutex_t _Pthread_alloc_template<_Max_size>::_S_chunk_allocator_lock
-= PTHREAD_MUTEX_INITIALIZER;
-
-template <size_t _Max_size>
-char *_Pthread_alloc_template<_Max_size>
-::_S_start_free = 0;
-
-template <size_t _Max_size>
-char *_Pthread_alloc_template<_Max_size>
-::_S_end_free = 0;
-
-template <size_t _Max_size>
-size_t _Pthread_alloc_template<_Max_size>
-::_S_heap_size = 0;
-
-#ifdef __STL_USE_STD_ALLOCATORS
-
-template <class _Tp>
-class pthread_allocator {
- typedef pthread_alloc _S_Alloc; // The underlying allocator.
-public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
-
- template <class _Up> struct rebind {
- typedef pthread_allocator<_Up> other;
- };
-
- pthread_allocator() __STL_NOTHROW {}
- pthread_allocator(const pthread_allocator& a) __STL_NOTHROW {}
- template <class _Up> pthread_allocator(const pthread_allocator<_Up>&)
- __STL_NOTHROW {}
- ~pthread_allocator() __STL_NOTHROW {}
-
- pointer address(reference __x) const { return &__x; }
- const_pointer address(const_reference __x) const { return &__x; }
-
- // __n is permitted to be 0. The C++ standard says nothing about what
- // the return value is when __n == 0.
- _Tp* allocate(size_type __n, const void* = 0) {
- return __n != 0 ? static_cast<_Tp*>(_S_Alloc::allocate(__n * sizeof(_Tp)))
- : 0;
- }
-
- // p is not permitted to be a null pointer.
- void deallocate(pointer __p, size_type __n)
- { _S_Alloc::deallocate(__p, __n * sizeof(_Tp)); }
-
- size_type max_size() const __STL_NOTHROW
- { return size_t(-1) / sizeof(_Tp); }
-
- void construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); }
- void destroy(pointer _p) { _p->~_Tp(); }
-};
-
-template<>
-class pthread_allocator<void> {
-public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef void* pointer;
- typedef const void* const_pointer;
- typedef void value_type;
-
- template <class _Up> struct rebind {
- typedef pthread_allocator<_Up> other;
- };
-};
-
-template <size_t _Max_size>
-inline bool operator==(const _Pthread_alloc_template<_Max_size>&,
- const _Pthread_alloc_template<_Max_size>&)
-{
- return true;
-}
-
-template <class _T1, class _T2>
-inline bool operator==(const pthread_allocator<_T1>&,
- const pthread_allocator<_T2>& a2)
-{
- return true;
-}
-
-template <class _T1, class _T2>
-inline bool operator!=(const pthread_allocator<_T1>&,
- const pthread_allocator<_T2>&)
-{
- return false;
-}
-
-template <class _Tp, size_t _Max_size>
-struct _Alloc_traits<_Tp, _Pthread_alloc_template<_Max_size> >
-{
- static const bool _S_instanceless = true;
- typedef simple_alloc<_Tp, _Pthread_alloc_template<_Max_size> > _Alloc_type;
- typedef __allocator<_Tp, _Pthread_alloc_template<_Max_size> >
- allocator_type;
-};
-
-template <class _Tp, class _Up, size_t _Max>
-struct _Alloc_traits<_Tp, __allocator<_Up, _Pthread_alloc_template<_Max> > >
-{
- static const bool _S_instanceless = true;
- typedef simple_alloc<_Tp, _Pthread_alloc_template<_Max> > _Alloc_type;
- typedef __allocator<_Tp, _Pthread_alloc_template<_Max> > allocator_type;
-};
-
-template <class _Tp, class _Up>
-struct _Alloc_traits<_Tp, pthread_allocator<_Up> >
-{
- static const bool _S_instanceless = true;
- typedef simple_alloc<_Tp, _Pthread_alloc_template<> > _Alloc_type;
- typedef pthread_allocator<_Tp> allocator_type;
-};
-
-
-#endif /* __STL_USE_STD_ALLOCATORS */
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_PTHREAD_ALLOC */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/pthread_alloc.h b/contrib/libstdc++/stl/pthread_alloc.h
deleted file mode 100644
index 774ef04..0000000
--- a/contrib/libstdc++/stl/pthread_alloc.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 1996-1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_PTHREAD_ALLOC_H
-#define __SGI_STL_PTHREAD_ALLOC_H
-
-#include <pthread_alloc>
-
-#ifdef __STL_USE_NAMESPACES
-
-using __STD::_Pthread_alloc_template;
-using __STD::pthread_alloc;
-
-#endif /* __STL_USE_NAMESPACES */
-
-
-#endif /* __SGI_STL_PTHREAD_ALLOC_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/queue b/contrib/libstdc++/stl/queue
deleted file mode 100644
index f9417fb..0000000
--- a/contrib/libstdc++/stl/queue
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_QUEUE
-#define __SGI_STL_QUEUE
-
-#include <stl_algobase.h>
-#include <stl_alloc.h>
-#include <stl_construct.h>
-#include <stl_uninitialized.h>
-#include <stl_vector.h>
-#include <stl_bvector.h>
-#include <stl_heap.h>
-#include <stl_deque.h>
-#include <stl_function.h>
-#include <stl_queue.h>
-
-#endif /* __SGI_STL_QUEUE */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/rope b/contrib/libstdc++/stl/rope
deleted file mode 100644
index f861500..0000000
--- a/contrib/libstdc++/stl/rope
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_ROPE
-#define __SGI_STL_ROPE
-
-#include <stl_algobase.h>
-#include <stl_tempbuf.h>
-#include <stl_algo.h>
-#include <stl_function.h>
-#include <stl_numeric.h>
-#include <stl_alloc.h>
-#include <stl_construct.h>
-#include <stl_uninitialized.h>
-#include <stl_hash_fun.h>
-#include <stl_rope.h>
-
-#endif /* __SGI_STL_ROPE */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/rope.h b/contrib/libstdc++/stl/rope.h
deleted file mode 100644
index d767fa3..0000000
--- a/contrib/libstdc++/stl/rope.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_ROPE_H
-#define __SGI_STL_ROPE_H
-
-#include <hashtable.h>
-#include <stl_rope.h>
-
-#ifdef __STL_USE_NAMESPACES
-
-using __STD::char_producer;
-using __STD::sequence_buffer;
-using __STD::rope;
-using __STD::crope;
-using __STD::wrope;
-
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_ROPE_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/ropeimpl.h b/contrib/libstdc++/stl/ropeimpl.h
deleted file mode 100644
index 18bb2c9..0000000
--- a/contrib/libstdc++/stl/ropeimpl.h
+++ /dev/null
@@ -1,1550 +0,0 @@
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-# include <stdio.h> /* XXX should use <cstdio> */
-# include <iostream.h> /* XXX should use <iostream> */
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1174
-#endif
-
-// Set buf_start, buf_end, and buf_ptr appropriately, filling tmp_buf
-// if necessary. Assumes _M_path_end[leaf_index] and leaf_pos are correct.
-// Results in a valid buf_ptr if the iterator can be legitimately
-// dereferenced.
-template <class _CharT, class _Alloc>
-void _Rope_iterator_base<_CharT,_Alloc>::_S_setbuf(
- _Rope_iterator_base<_CharT,_Alloc>& __x)
-{
- const _RopeRep* __leaf = __x._M_path_end[__x._M_leaf_index];
- size_t __leaf_pos = __x._M_leaf_pos;
- size_t __pos = __x._M_current_pos;
-
- switch(__leaf->_M_tag) {
- case _RopeRep::_S_leaf:
- __x._M_buf_start =
- ((_Rope_RopeLeaf<_CharT,_Alloc>*)__leaf)->_M_data;
- __x._M_buf_ptr = __x._M_buf_start + (__pos - __leaf_pos);
- __x._M_buf_end = __x._M_buf_start + __leaf->_M_size;
- break;
- case _RopeRep::_S_function:
- case _RopeRep::_S_substringfn:
- {
- size_t __len = _S_iterator_buf_len;
- size_t __buf_start_pos = __leaf_pos;
- size_t __leaf_end = __leaf_pos + __leaf->_M_size;
- char_producer<_CharT>* __fn =
- ((_Rope_RopeFunction<_CharT,_Alloc>*)__leaf)->_M_fn;
-
- if (__buf_start_pos + __len <= __pos) {
- __buf_start_pos = __pos - __len/4;
- if (__buf_start_pos + __len > __leaf_end) {
- __buf_start_pos = __leaf_end - __len;
- }
- }
- if (__buf_start_pos + __len > __leaf_end) {
- __len = __leaf_end - __buf_start_pos;
- }
- (*__fn)(__buf_start_pos - __leaf_pos, __len, __x._M_tmp_buf);
- __x._M_buf_ptr = __x._M_tmp_buf + (__pos - __buf_start_pos);
- __x._M_buf_start = __x._M_tmp_buf;
- __x._M_buf_end = __x._M_tmp_buf + __len;
- }
- break;
- default:
- __stl_assert(0);
- }
-}
-
-// Set path and buffer inside a rope iterator. We assume that
-// pos and root are already set.
-template <class _CharT, class _Alloc>
-void _Rope_iterator_base<_CharT,_Alloc>::_S_setcache
-(_Rope_iterator_base<_CharT,_Alloc>& __x)
-{
- const _RopeRep* __path[_RopeRep::_S_max_rope_depth+1];
- const _RopeRep* __curr_rope;
- int __curr_depth = -1; /* index into path */
- size_t __curr_start_pos = 0;
- size_t __pos = __x._M_current_pos;
- unsigned char __dirns = 0; // Bit vector marking right turns in the path
-
- __stl_assert(__pos <= __x._M_root->_M_size);
- if (__pos >= __x._M_root->_M_size) {
- __x._M_buf_ptr = 0;
- return;
- }
- __curr_rope = __x._M_root;
- if (0 != __curr_rope->_M_c_string) {
- /* Treat the root as a leaf. */
- __x._M_buf_start = __curr_rope->_M_c_string;
- __x._M_buf_end = __curr_rope->_M_c_string + __curr_rope->_M_size;
- __x._M_buf_ptr = __curr_rope->_M_c_string + __pos;
- __x._M_path_end[0] = __curr_rope;
- __x._M_leaf_index = 0;
- __x._M_leaf_pos = 0;
- return;
- }
- for(;;) {
- ++__curr_depth;
- __stl_assert(__curr_depth <= _RopeRep::_S_max_rope_depth);
- __path[__curr_depth] = __curr_rope;
- switch(__curr_rope->_M_tag) {
- case _RopeRep::_S_leaf:
- case _RopeRep::_S_function:
- case _RopeRep::_S_substringfn:
- __x._M_leaf_pos = __curr_start_pos;
- goto done;
- case _RopeRep::_S_concat:
- {
- _Rope_RopeConcatenation<_CharT,_Alloc>* __c =
- (_Rope_RopeConcatenation<_CharT,_Alloc>*)__curr_rope;
- _RopeRep* __left = __c->_M_left;
- size_t __left_len = __left->_M_size;
-
- __dirns <<= 1;
- if (__pos >= __curr_start_pos + __left_len) {
- __dirns |= 1;
- __curr_rope = __c->_M_right;
- __curr_start_pos += __left_len;
- } else {
- __curr_rope = __left;
- }
- }
- break;
- }
- }
- done:
- // Copy last section of path into _M_path_end.
- {
- int __i = -1;
- int __j = __curr_depth + 1 - _S_path_cache_len;
-
- if (__j < 0) __j = 0;
- while (__j <= __curr_depth) {
- __x._M_path_end[++__i] = __path[__j++];
- }
- __x._M_leaf_index = __i;
- }
- __x._M_path_directions = __dirns;
- _S_setbuf(__x);
-}
-
-// Specialized version of the above. Assumes that
-// the path cache is valid for the previous position.
-template <class _CharT, class _Alloc>
-void _Rope_iterator_base<_CharT,_Alloc>::_S_setcache_for_incr
-(_Rope_iterator_base<_CharT,_Alloc>& __x)
-{
- int __current_index = __x._M_leaf_index;
- const _RopeRep* __current_node = __x._M_path_end[__current_index];
- size_t __len = __current_node->_M_size;
- size_t __node_start_pos = __x._M_leaf_pos;
- unsigned char __dirns = __x._M_path_directions;
- _Rope_RopeConcatenation<_CharT,_Alloc>* __c;
-
- __stl_assert(__x._M_current_pos <= __x._M_root->_M_size);
- if (__x._M_current_pos - __node_start_pos < __len) {
- /* More stuff in this leaf, we just didn't cache it. */
- _S_setbuf(__x);
- return;
- }
- __stl_assert(__node_start_pos + __len == __x._M_current_pos);
- // node_start_pos is starting position of last_node.
- while (--__current_index >= 0) {
- if (!(__dirns & 1) /* Path turned left */)
- break;
- __current_node = __x._M_path_end[__current_index];
- __c = (_Rope_RopeConcatenation<_CharT,_Alloc>*)__current_node;
- // Otherwise we were in the right child. Thus we should pop
- // the concatenation node.
- __node_start_pos -= __c->_M_left->_M_size;
- __dirns >>= 1;
- }
- if (__current_index < 0) {
- // We underflowed the cache. Punt.
- _S_setcache(__x);
- return;
- }
- __current_node = __x._M_path_end[__current_index];
- __c = (_Rope_RopeConcatenation<_CharT,_Alloc>*)__current_node;
- // current_node is a concatenation node. We are positioned on the first
- // character in its right child.
- // node_start_pos is starting position of current_node.
- __node_start_pos += __c->_M_left->_M_size;
- __current_node = __c->_M_right;
- __x._M_path_end[++__current_index] = __current_node;
- __dirns |= 1;
- while (_RopeRep::_S_concat == __current_node->_M_tag) {
- ++__current_index;
- if (_S_path_cache_len == __current_index) {
- int __i;
- for (__i = 0; __i < _S_path_cache_len-1; __i++) {
- __x._M_path_end[__i] = __x._M_path_end[__i+1];
- }
- --__current_index;
- }
- __current_node =
- ((_Rope_RopeConcatenation<_CharT,_Alloc>*)__current_node)->_M_left;
- __x._M_path_end[__current_index] = __current_node;
- __dirns <<= 1;
- // node_start_pos is unchanged.
- }
- __x._M_leaf_index = __current_index;
- __x._M_leaf_pos = __node_start_pos;
- __x._M_path_directions = __dirns;
- _S_setbuf(__x);
-}
-
-template <class _CharT, class _Alloc>
-void _Rope_iterator_base<_CharT,_Alloc>::_M_incr(size_t __n) {
- _M_current_pos += __n;
- if (0 != _M_buf_ptr) {
- size_t __chars_left = _M_buf_end - _M_buf_ptr;
- if (__chars_left > __n) {
- _M_buf_ptr += __n;
- } else if (__chars_left == __n) {
- _M_buf_ptr += __n;
- _S_setcache_for_incr(*this);
- } else {
- _M_buf_ptr = 0;
- }
- }
-}
-
-template <class _CharT, class _Alloc>
-void _Rope_iterator_base<_CharT,_Alloc>::_M_decr(size_t __n) {
- if (0 != _M_buf_ptr) {
- size_t __chars_left = _M_buf_ptr - _M_buf_start;
- if (__chars_left >= __n) {
- _M_buf_ptr -= __n;
- } else {
- _M_buf_ptr = 0;
- }
- }
- _M_current_pos -= __n;
-}
-
-template <class _CharT, class _Alloc>
-void _Rope_iterator<_CharT,_Alloc>::_M_check() {
- if (_M_root_rope->_M_tree_ptr != _M_root) {
- // _Rope was modified. Get things fixed up.
- _RopeRep::_S_unref(_M_root);
- _M_root = _M_root_rope->_M_tree_ptr;
- _RopeRep::_S_ref(_M_root);
- _M_buf_ptr = 0;
- }
-}
-
-template <class _CharT, class _Alloc>
-inline
-_Rope_const_iterator<_CharT, _Alloc>::_Rope_const_iterator(
- const _Rope_iterator<_CharT,_Alloc>& __x)
-: _Rope_iterator_base<_CharT,_Alloc>(__x)
-{ }
-
-template <class _CharT, class _Alloc>
-inline _Rope_iterator<_CharT,_Alloc>::_Rope_iterator(
- rope<_CharT,_Alloc>& __r, size_t __pos)
-: _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr, __pos),
- _M_root_rope(&__r)
-{
- _RopeRep::_S_ref(_M_root);
-}
-
-template <class _CharT, class _Alloc>
-inline size_t
-rope<_CharT,_Alloc>::_S_char_ptr_len(const _CharT* __s)
-{
- const _CharT* __p = __s;
-
- while (!_S_is0(*__p)) { ++__p; }
- return (__p - __s);
-}
-
-
-#ifndef __GC
-
-template <class _CharT, class _Alloc>
-inline void _Rope_RopeRep<_CharT,_Alloc>::_M_free_c_string()
-{
- _CharT* __cstr = _M_c_string;
- if (0 != __cstr) {
- size_t __size = _M_size + 1;
- destroy(__cstr, __cstr + __size);
- _Data_deallocate(__cstr, __size);
- }
-}
-
-
-template <class _CharT, class _Alloc>
-#ifdef __STL_USE_STD_ALLOCATORS
- inline void _Rope_RopeRep<_CharT,_Alloc>::_S_free_string(_CharT* __s,
- size_t __n,
- allocator_type __a)
-#else
- inline void _Rope_RopeRep<_CharT,_Alloc>::_S_free_string(_CharT* __s,
- size_t __n)
-#endif
-{
- if (!_S_is_basic_char_type((_CharT*)0)) {
- destroy(__s, __s + __n);
- }
-// This has to be a static member, so this gets a bit messy
-# ifdef __STL_USE_STD_ALLOCATORS
- __a.deallocate(
- __s, _Rope_RopeLeaf<_CharT,_Alloc>::_S_rounded_up_size(__n));
-# else
- _Data_deallocate(
- __s, _Rope_RopeLeaf<_CharT,_Alloc>::_S_rounded_up_size(__n));
-# endif
-}
-
-
-// There are several reasons for not doing this with virtual destructors
-// and a class specific delete operator:
-// - A class specific delete operator can't easily get access to
-// allocator instances if we need them.
-// - Any virtual function would need a 4 or byte vtable pointer;
-// this only requires a one byte tag per object.
-template <class _CharT, class _Alloc>
-void _Rope_RopeRep<_CharT,_Alloc>::_M_free_tree()
-{
- switch(_M_tag) {
- case _S_leaf:
- {
- _Rope_RopeLeaf<_CharT,_Alloc>* __l
- = (_Rope_RopeLeaf<_CharT,_Alloc>*)this;
- __l->_Rope_RopeLeaf<_CharT,_Alloc>::~_Rope_RopeLeaf();
- _L_deallocate(__l, 1);
- break;
- }
- case _S_concat:
- {
- _Rope_RopeConcatenation<_CharT,_Alloc>* __c
- = (_Rope_RopeConcatenation<_CharT,_Alloc>*)this;
- __c->_Rope_RopeConcatenation<_CharT,_Alloc>::
- ~_Rope_RopeConcatenation();
- _C_deallocate(__c, 1);
- break;
- }
- case _S_function:
- {
- _Rope_RopeFunction<_CharT,_Alloc>* __f
- = (_Rope_RopeFunction<_CharT,_Alloc>*)this;
- __f->_Rope_RopeFunction<_CharT,_Alloc>::~_Rope_RopeFunction();
- _F_deallocate(__f, 1);
- break;
- }
- case _S_substringfn:
- {
- _Rope_RopeSubstring<_CharT,_Alloc>* __ss =
- (_Rope_RopeSubstring<_CharT,_Alloc>*)this;
- __ss->_Rope_RopeSubstring<_CharT,_Alloc>::
- ~_Rope_RopeSubstring();
- _S_deallocate(__ss, 1);
- break;
- }
- }
-}
-#else
-
-template <class _CharT, class _Alloc>
-#ifdef __STL_USE_STD_ALLOCATORS
- inline void _Rope_RopeRep<_CharT,_Alloc>::_S_free_string
- (const _CharT*, size_t, allocator_type)
-#else
- inline void _Rope_RopeRep<_CharT,_Alloc>::_S_free_string
- (const _CharT*, size_t)
-#endif
-{}
-
-#endif
-
-
-// Concatenate a C string onto a leaf rope by copying the rope data.
-// Used for short ropes.
-template <class _CharT, class _Alloc>
-rope<_CharT,_Alloc>::_RopeLeaf*
-rope<_CharT,_Alloc>::_S_leaf_concat_char_iter
- (_RopeLeaf* __r, const _CharT* __iter, size_t __len)
-{
- size_t __old_len = __r->_M_size;
- _CharT* __new_data = (_CharT*)
- _Data_allocate(_S_rounded_up_size(__old_len + __len));
- _RopeLeaf* __result;
-
- uninitialized_copy_n(__r->_M_data, __old_len, __new_data);
- uninitialized_copy_n(__iter, __len, __new_data + __old_len);
- _S_cond_store_eos(__new_data[__old_len + __len]);
- __STL_TRY {
- __result = _S_new_RopeLeaf(__new_data, __old_len + __len,
- __r->get_allocator());
- }
- __STL_UNWIND(_RopeRep::__STL_FREE_STRING(__new_data, __old_len + __len,
- __r->get_allocator()));
- return __result;
-}
-
-#ifndef __GC
-// As above, but it's OK to clobber original if refcount is 1
-template <class _CharT, class _Alloc>
-rope<_CharT,_Alloc>::_RopeLeaf*
-rope<_CharT,_Alloc>::_S_destr_leaf_concat_char_iter
- (_RopeLeaf* __r, const _CharT* __iter, size_t __len)
-{
- __stl_assert(__r->_M_refcount >= 1);
- if (__r->_M_refcount > 1)
- return _S_leaf_concat_char_iter(__r, __iter, __len);
- size_t __old_len = __r->_M_size;
- if (_S_allocated_capacity(__old_len) >= __old_len + __len) {
- // The space has been partially initialized for the standard
- // character types. But that doesn't matter for those types.
- uninitialized_copy_n(__iter, __len, __r->_M_data + __old_len);
- if (_S_is_basic_char_type((_CharT*)0)) {
- _S_cond_store_eos(__r->_M_data[__old_len + __len]);
- __stl_assert(__r->_M_c_string == __r->_M_data);
- } else if (__r->_M_c_string != __r->_M_data && 0 != __r->_M_c_string) {
- __r->_M_free_c_string();
- __r->_M_c_string = 0;
- }
- __r->_M_size = __old_len + __len;
- __stl_assert(__r->_M_refcount == 1);
- __r->_M_refcount = 2;
- return __r;
- } else {
- _RopeLeaf* __result = _S_leaf_concat_char_iter(__r, __iter, __len);
- __stl_assert(__result->_M_refcount == 1);
- return __result;
- }
-}
-#endif
-
-// Assumes left and right are not 0.
-// Does not increment (nor decrement on exception) child reference counts.
-// Result has ref count 1.
-template <class _CharT, class _Alloc>
-rope<_CharT,_Alloc>::_RopeRep*
-rope<_CharT,_Alloc>::_S_tree_concat (_RopeRep* __left, _RopeRep* __right)
-{
- _RopeConcatenation* __result =
- _S_new_RopeConcatenation(__left, __right, __left->get_allocator());
- size_t __depth = __result->_M_depth;
-
-# ifdef __STL_USE_STD_ALLOCATORS
- __stl_assert(__left->get_allocator() == __right->get_allocator());
-# endif
- if (__depth > 20 && (__result->_M_size < 1000 ||
- __depth > _RopeRep::_S_max_rope_depth)) {
- _RopeRep* __balanced;
-
- __STL_TRY {
- __balanced = _S_balance(__result);
-# ifndef __GC
- if (__result != __balanced) {
- __stl_assert(1 == __result->_M_refcount
- && 1 == __balanced->_M_refcount);
- }
-# endif
- __result->_M_unref_nonnil();
- }
- __STL_UNWIND((_C_deallocate(__result,1)));
- // In case of exception, we need to deallocate
- // otherwise dangling result node. But caller
- // still owns its children. Thus unref is
- // inappropriate.
- return __balanced;
- } else {
- return __result;
- }
-}
-
-template <class _CharT, class _Alloc>
-rope<_CharT,_Alloc>::_RopeRep* rope<_CharT,_Alloc>::_S_concat_char_iter
- (_RopeRep* __r, const _CharT*__s, size_t __slen)
-{
- _RopeRep* __result;
- if (0 == __slen) {
- _S_ref(__r);
- return __r;
- }
- if (0 == __r)
- return __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen,
- __r->get_allocator());
- if (_RopeRep::_S_leaf == __r->_M_tag &&
- __r->_M_size + __slen <= _S_copy_max) {
- __result = _S_leaf_concat_char_iter((_RopeLeaf*)__r, __s, __slen);
-# ifndef __GC
- __stl_assert(1 == __result->_M_refcount);
-# endif
- return __result;
- }
- if (_RopeRep::_S_concat == __r->_M_tag
- && _RopeRep::_S_leaf == ((_RopeConcatenation*)__r)->_M_right->_M_tag) {
- _RopeLeaf* __right =
- (_RopeLeaf* )(((_RopeConcatenation* )__r)->_M_right);
- if (__right->_M_size + __slen <= _S_copy_max) {
- _RopeRep* __left = ((_RopeConcatenation*)__r)->_M_left;
- _RopeRep* __nright =
- _S_leaf_concat_char_iter((_RopeLeaf*)__right, __s, __slen);
- __left->_M_ref_nonnil();
- __STL_TRY {
- __result = _S_tree_concat(__left, __nright);
- }
- __STL_UNWIND(_S_unref(__left); _S_unref(__nright));
-# ifndef __GC
- __stl_assert(1 == __result->_M_refcount);
-# endif
- return __result;
- }
- }
- _RopeRep* __nright =
- __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen, __r->get_allocator());
- __STL_TRY {
- __r->_M_ref_nonnil();
- __result = _S_tree_concat(__r, __nright);
- }
- __STL_UNWIND(_S_unref(__r); _S_unref(__nright));
-# ifndef __GC
- __stl_assert(1 == __result->_M_refcount);
-# endif
- return __result;
-}
-
-#ifndef __GC
-template <class _CharT, class _Alloc>
-rope<_CharT,_Alloc>::_RopeRep*
-rope<_CharT,_Alloc>::_S_destr_concat_char_iter(
- _RopeRep* __r, const _CharT* __s, size_t __slen)
-{
- _RopeRep* __result;
- if (0 == __r)
- return __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen,
- __r->get_allocator());
- size_t __count = __r->_M_refcount;
- size_t __orig_size = __r->_M_size;
- __stl_assert(__count >= 1);
- if (__count > 1) return _S_concat_char_iter(__r, __s, __slen);
- if (0 == __slen) {
- __r->_M_refcount = 2; // One more than before
- return __r;
- }
- if (__orig_size + __slen <= _S_copy_max &&
- _RopeRep::_S_leaf == __r->_M_tag) {
- __result = _S_destr_leaf_concat_char_iter((_RopeLeaf*)__r, __s, __slen);
- return __result;
- }
- if (_RopeRep::_S_concat == __r->_M_tag) {
- _RopeLeaf* __right = (_RopeLeaf*)(((_RopeConcatenation*)__r)->_M_right);
- if (_RopeRep::_S_leaf == __right->_M_tag
- && __right->_M_size + __slen <= _S_copy_max) {
- _RopeRep* __new_right =
- _S_destr_leaf_concat_char_iter(__right, __s, __slen);
- if (__right == __new_right) {
- __stl_assert(__new_right->_M_refcount == 2);
- __new_right->_M_refcount = 1;
- } else {
- __stl_assert(__new_right->_M_refcount >= 1);
- __right->_M_unref_nonnil();
- }
- __stl_assert(__r->_M_refcount == 1);
- __r->_M_refcount = 2; // One more than before.
- ((_RopeConcatenation*)__r)->_M_right = __new_right;
- __r->_M_size = __orig_size + __slen;
- if (0 != __r->_M_c_string) {
- __r->_M_free_c_string();
- __r->_M_c_string = 0;
- }
- return __r;
- }
- }
- _RopeRep* __right =
- __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen, __r->get_allocator());
- __r->_M_ref_nonnil();
- __STL_TRY {
- __result = _S_tree_concat(__r, __right);
- }
- __STL_UNWIND(_S_unref(__r); _S_unref(__right))
- __stl_assert(1 == __result->_M_refcount);
- return __result;
-}
-#endif /* !__GC */
-
-template <class _CharT, class _Alloc>
-rope<_CharT,_Alloc>::_RopeRep*
-rope<_CharT,_Alloc>::_S_concat(_RopeRep* __left, _RopeRep* __right)
-{
- if (0 == __left) {
- _S_ref(__right);
- return __right;
- }
- if (0 == __right) {
- __left->_M_ref_nonnil();
- return __left;
- }
- if (_RopeRep::_S_leaf == __right->_M_tag) {
- if (_RopeRep::_S_leaf == __left->_M_tag) {
- if (__right->_M_size + __left->_M_size <= _S_copy_max) {
- return _S_leaf_concat_char_iter((_RopeLeaf*)__left,
- ((_RopeLeaf*)__right)->_M_data,
- __right->_M_size);
- }
- } else if (_RopeRep::_S_concat == __left->_M_tag
- && _RopeRep::_S_leaf ==
- ((_RopeConcatenation*)__left)->_M_right->_M_tag) {
- _RopeLeaf* __leftright =
- (_RopeLeaf*)(((_RopeConcatenation*)__left)->_M_right);
- if (__leftright->_M_size + __right->_M_size <= _S_copy_max) {
- _RopeRep* __leftleft = ((_RopeConcatenation*)__left)->_M_left;
- _RopeRep* __rest = _S_leaf_concat_char_iter(__leftright,
- ((_RopeLeaf*)__right)->_M_data,
- __right->_M_size);
- __leftleft->_M_ref_nonnil();
- __STL_TRY {
- return(_S_tree_concat(__leftleft, __rest));
- }
- __STL_UNWIND(_S_unref(__leftleft); _S_unref(__rest))
- }
- }
- }
- __left->_M_ref_nonnil();
- __right->_M_ref_nonnil();
- __STL_TRY {
- return(_S_tree_concat(__left, __right));
- }
- __STL_UNWIND(_S_unref(__left); _S_unref(__right));
-}
-
-template <class _CharT, class _Alloc>
-rope<_CharT,_Alloc>::_RopeRep*
-rope<_CharT,_Alloc>::_S_substring(_RopeRep* __base,
- size_t __start, size_t __endp1)
-{
- if (0 == __base) return 0;
- size_t __len = __base->_M_size;
- size_t __adj_endp1;
- const size_t __lazy_threshold = 128;
-
- if (__endp1 >= __len) {
- if (0 == __start) {
- __base->_M_ref_nonnil();
- return __base;
- } else {
- __adj_endp1 = __len;
- }
- } else {
- __adj_endp1 = __endp1;
- }
- switch(__base->_M_tag) {
- case _RopeRep::_S_concat:
- {
- _RopeConcatenation* __c = (_RopeConcatenation*)__base;
- _RopeRep* __left = __c->_M_left;
- _RopeRep* __right = __c->_M_right;
- size_t __left_len = __left->_M_size;
- _RopeRep* __result;
-
- if (__adj_endp1 <= __left_len) {
- return _S_substring(__left, __start, __endp1);
- } else if (__start >= __left_len) {
- return _S_substring(__right, __start - __left_len,
- __adj_endp1 - __left_len);
- }
- _Self_destruct_ptr __left_result(
- _S_substring(__left, __start, __left_len));
- _Self_destruct_ptr __right_result(
- _S_substring(__right, 0, __endp1 - __left_len));
- __result = _S_concat(__left_result, __right_result);
-# ifndef __GC
- __stl_assert(1 == __result->_M_refcount);
-# endif
- return __result;
- }
- case _RopeRep::_S_leaf:
- {
- _RopeLeaf* __l = (_RopeLeaf*)__base;
- _RopeLeaf* __result;
- size_t __result_len;
- if (__start >= __adj_endp1) return 0;
- __result_len = __adj_endp1 - __start;
- if (__result_len > __lazy_threshold) goto lazy;
-# ifdef __GC
- const _CharT* __section = __l->_M_data + __start;
- __result = _S_new_RopeLeaf(__section, __result_len,
- __base->get_allocator());
- __result->_M_c_string = 0; // Not eos terminated.
-# else
- // We should sometimes create substring node instead.
- __result = __STL_ROPE_FROM_UNOWNED_CHAR_PTR(
- __l->_M_data + __start, __result_len,
- __base->get_allocator());
-# endif
- return __result;
- }
- case _RopeRep::_S_substringfn:
- // Avoid introducing multiple layers of substring nodes.
- {
- _RopeSubstring* __old = (_RopeSubstring*)__base;
- size_t __result_len;
- if (__start >= __adj_endp1) return 0;
- __result_len = __adj_endp1 - __start;
- if (__result_len > __lazy_threshold) {
- _RopeSubstring* __result =
- _S_new_RopeSubstring(__old->_M_base,
- __start + __old->_M_start,
- __adj_endp1 - __start,
- __base->get_allocator());
- return __result;
-
- } // *** else fall through: ***
- }
- case _RopeRep::_S_function:
- {
- _RopeFunction* __f = (_RopeFunction*)__base;
- _CharT* __section;
- size_t __result_len;
- if (__start >= __adj_endp1) return 0;
- __result_len = __adj_endp1 - __start;
-
- if (__result_len > __lazy_threshold) goto lazy;
- __section = (_CharT*)
- _Data_allocate(_S_rounded_up_size(__result_len));
- __STL_TRY {
- (*(__f->_M_fn))(__start, __result_len, __section);
- }
- __STL_UNWIND(_RopeRep::__STL_FREE_STRING(
- __section, __result_len, __base->get_allocator()));
- _S_cond_store_eos(__section[__result_len]);
- return _S_new_RopeLeaf(__section, __result_len,
- __base->get_allocator());
- }
- }
- /*NOTREACHED*/
- __stl_assert(false);
- lazy:
- {
- // Create substring node.
- return _S_new_RopeSubstring(__base, __start, __adj_endp1 - __start,
- __base->get_allocator());
- }
-}
-
-template<class _CharT>
-class _Rope_flatten_char_consumer : public _Rope_char_consumer<_CharT> {
- private:
- _CharT* _M_buf_ptr;
- public:
- // _CharT* _M_buffer; // XXX not used
-
- _Rope_flatten_char_consumer(_CharT* __buffer) {
- _M_buf_ptr = __buffer;
- };
- ~_Rope_flatten_char_consumer() {}
- bool operator() (const _CharT* __leaf, size_t __n) {
- uninitialized_copy_n(__leaf, __n, _M_buf_ptr);
- _M_buf_ptr += __n;
- return true;
- }
-};
-
-template<class _CharT>
-class _Rope_find_char_char_consumer : public _Rope_char_consumer<_CharT> {
- private:
- _CharT _M_pattern;
- public:
- size_t _M_count; // Number of nonmatching characters
- _Rope_find_char_char_consumer(_CharT __p)
- : _M_pattern(__p), _M_count(0) {}
- ~_Rope_find_char_char_consumer() {}
- bool operator() (const _CharT* __leaf, size_t __n) {
- size_t __i;
- for (__i = 0; __i < __n; __i++) {
- if (__leaf[__i] == _M_pattern) {
- _M_count += __i; return false;
- }
- }
- _M_count += __n; return true;
- }
-};
-
-template<class _CharT>
-class _Rope_insert_char_consumer : public _Rope_char_consumer<_CharT> {
- private:
- typedef ostream _Insert_ostream;
- _Insert_ostream& _M_o;
- public:
- // _CharT* buffer; // XXX not used
- _Rope_insert_char_consumer(_Insert_ostream& __writer)
- : _M_o(__writer) {};
- ~_Rope_insert_char_consumer() { };
- // Caller is presumed to own the ostream
- bool operator() (const _CharT* __leaf, size_t __n);
- // Returns true to continue traversal.
-};
-
-template<class _CharT>
-bool _Rope_insert_char_consumer<_CharT>::operator()
- (const _CharT* __leaf, size_t __n)
-{
- size_t __i;
- // We assume that formatting is set up correctly for each element.
- for (__i = 0; __i < __n; __i++) _M_o << __leaf[__i];
- return true;
-}
-
-inline bool _Rope_insert_char_consumer<char>::operator()
- (const char* __leaf, size_t __n)
-{
- size_t __i;
- for (__i = 0; __i < __n; __i++) _M_o.put(__leaf[__i]);
- return true;
-}
-
-#if 0
-// I couldn't get this to work work with the VC++ version of basic_ostream.
-// It also doesn't really do the right thing unless o is a wide stream.
-// Given that wchar_t is often 4 bytes, its not clear to me how useful
-// this stuff is anyway.
-inline bool _Rope_insert_char_consumer<wchar_t>::operator()
- (const wchar_t* __leaf, size_t __n)
-{
- size_t __i;
- for (__i = 0; __i < __n; __i++) _M_o.put(__leaf[__i]);
- return true;
-}
-#endif /* !_MSC_VER && !BORLAND */
-
-template <class _CharT, class _Alloc>
-bool rope<_CharT, _Alloc>::_S_apply_to_pieces(
- _Rope_char_consumer<_CharT>& __c,
- const _RopeRep* __r,
- size_t __begin, size_t __end)
-{
- if (0 == __r) return true;
- switch(__r->_M_tag) {
- case _RopeRep::_S_concat:
- {
- _RopeConcatenation* __conc = (_RopeConcatenation*)__r;
- _RopeRep* __left = __conc->_M_left;
- size_t __left_len = __left->_M_size;
- if (__begin < __left_len) {
- size_t __left_end = min(__left_len, __end);
- if (!_S_apply_to_pieces(__c, __left, __begin, __left_end))
- return false;
- }
- if (__end > __left_len) {
- _RopeRep* __right = __conc->_M_right;
- size_t __right_start = max(__left_len, __begin);
- if (!_S_apply_to_pieces(__c, __right,
- __right_start - __left_len,
- __end - __left_len)) {
- return false;
- }
- }
- }
- return true;
- case _RopeRep::_S_leaf:
- {
- _RopeLeaf* __l = (_RopeLeaf*)__r;
- return __c(__l->_M_data + __begin, __end - __begin);
- }
- case _RopeRep::_S_function:
- case _RopeRep::_S_substringfn:
- {
- _RopeFunction* __f = (_RopeFunction*)__r;
- size_t __len = __end - __begin;
- bool __result;
- _CharT* __buffer =
- (_CharT*)alloc::allocate(__len * sizeof(_CharT));
- __STL_TRY {
- (*(__f->_M_fn))(__begin, __end, __buffer);
- __result = __c(__buffer, __len);
- alloc::deallocate(__buffer, __len * sizeof(_CharT));
- }
- __STL_UNWIND((alloc::deallocate(__buffer,
- __len * sizeof(_CharT))))
- return __result;
- }
- default:
- __stl_assert(false);
- /*NOTREACHED*/
- return false;
- }
-}
-
-inline void _Rope_fill(ostream& __o, size_t __n)
-{
- char __f = __o.fill();
- size_t __i;
-
- for (__i = 0; __i < __n; __i++) __o.put(__f);
-}
-
-
-template <class _CharT> inline bool _Rope_is_simple(_CharT*) { return false; }
-inline bool _Rope_is_simple(char*) { return true; }
-inline bool _Rope_is_simple(wchar_t*) { return true; }
-
-
-template<class _CharT, class _Alloc>
-ostream& operator<< (ostream& __o, const rope<_CharT, _Alloc>& __r)
-{
- size_t __w = __o.width();
- bool __left = bool(__o.flags() & ios::left);
- size_t __pad_len;
- size_t __rope_len = __r.size();
- _Rope_insert_char_consumer<_CharT> __c(__o);
- bool __is_simple = _Rope_is_simple((_CharT*)0);
-
- if (__rope_len < __w) {
- __pad_len = __w - __rope_len;
- } else {
- __pad_len = 0;
- }
- if (!__is_simple) __o.width(__w/__rope_len);
- __STL_TRY {
- if (__is_simple && !__left && __pad_len > 0) {
- _Rope_fill(__o, __pad_len);
- }
- __r.apply_to_pieces(0, __r.size(), __c);
- if (__is_simple && __left && __pad_len > 0) {
- _Rope_fill(__o, __pad_len);
- }
- if (!__is_simple)
- __o.width(__w);
- }
- __STL_UNWIND(if (!__is_simple) __o.width(__w))
- return __o;
-}
-
-template <class _CharT, class _Alloc>
-_CharT*
-rope<_CharT,_Alloc>::_S_flatten(_RopeRep* __r,
- size_t __start, size_t __len,
- _CharT* __buffer)
-{
- _Rope_flatten_char_consumer<_CharT> __c(__buffer);
- _S_apply_to_pieces(__c, __r, __start, __start + __len);
- return(__buffer + __len);
-}
-
-template <class _CharT, class _Alloc>
-size_t
-rope<_CharT,_Alloc>::find(_CharT __pattern, size_t __start) const
-{
- _Rope_find_char_char_consumer<_CharT> __c(__pattern);
- _S_apply_to_pieces(__c, _M_tree_ptr, __start, size());
- size_type __result_pos = __start + __c._M_count;
-# ifndef __STL_OLD_ROPE_SEMANTICS
- if (__result_pos == size()) __result_pos = npos;
-# endif
- return __result_pos;
-}
-
-template <class _CharT, class _Alloc>
-_CharT*
-rope<_CharT,_Alloc>::_S_flatten(_RopeRep* __r, _CharT* __buffer)
-{
- if (0 == __r) return __buffer;
- switch(__r->_M_tag) {
- case _RopeRep::_S_concat:
- {
- _RopeConcatenation* __c = (_RopeConcatenation*)__r;
- _RopeRep* __left = __c->_M_left;
- _RopeRep* __right = __c->_M_right;
- _CharT* __rest = _S_flatten(__left, __buffer);
- return _S_flatten(__right, __rest);
- }
- case _RopeRep::_S_leaf:
- {
- _RopeLeaf* __l = (_RopeLeaf*)__r;
- return copy_n(__l->_M_data, __l->_M_size, __buffer).second;
- }
- case _RopeRep::_S_function:
- case _RopeRep::_S_substringfn:
- // We dont yet do anything with substring nodes.
- // This needs to be fixed before ropefiles will work well.
- {
- _RopeFunction* __f = (_RopeFunction*)__r;
- (*(__f->_M_fn))(0, __f->_M_size, __buffer);
- return __buffer + __f->_M_size;
- }
- default:
- __stl_assert(false);
- /*NOTREACHED*/
- return 0;
- }
-}
-
-
-// This needs work for _CharT != char
-template <class _CharT, class _Alloc>
-void
-rope<_CharT,_Alloc>::_S_dump(_RopeRep* __r, int __indent)
-{
- for (int __i = 0; __i < __indent; __i++) putchar(' ');
- if (0 == __r) {
- printf("NULL\n"); return;
- }
- if (_RopeRep::_S_concat == __r->_M_tag) {
- _RopeConcatenation* __c = (_RopeConcatenation*)__r;
- _RopeRep* __left = __c->_M_left;
- _RopeRep* __right = __c->_M_right;
-
-# ifdef __GC
- printf("Concatenation %p (depth = %d, len = %ld, %s balanced)\n",
- __r, __r->_M_depth, __r->_M_size, __r->_M_is_balanced? "" : "not");
-# else
- printf("Concatenation %p (rc = %ld, depth = %d, "
- "len = %ld, %s balanced)\n",
- __r, __r->_M_refcount, __r->_M_depth, __r->_M_size,
- __r->_M_is_balanced? "" : "not");
-# endif
- _S_dump(__left, __indent + 2);
- _S_dump(__right, __indent + 2);
- return;
- } else {
- char* __kind;
-
- switch (__r->_M_tag) {
- case _RopeRep::_S_leaf:
- __kind = "Leaf";
- break;
- case _RopeRep::_S_function:
- __kind = "Function";
- break;
- case _RopeRep::_S_substringfn:
- __kind = "Function representing substring";
- break;
- default:
- __kind = "(corrupted kind field!)";
- }
-# ifdef __GC
- printf("%s %p (depth = %d, len = %ld) ",
- __kind, __r, __r->_M_depth, __r->_M_size);
-# else
- printf("%s %p (rc = %ld, depth = %d, len = %ld) ",
- __kind, __r, __r->_M_refcount, __r->_M_depth, __r->_M_size);
-# endif
- if (_S_is_one_byte_char_type((_CharT*)0)) {
- const int __max_len = 40;
- _Self_destruct_ptr __prefix(_S_substring(__r, 0, __max_len));
- _CharT __buffer[__max_len + 1];
- bool __too_big = __r->_M_size > __prefix->_M_size;
-
- _S_flatten(__prefix, __buffer);
- __buffer[__prefix->_M_size] = _S_eos((_CharT*)0);
- printf("%s%s\n",
- (char*)__buffer, __too_big? "...\n" : "\n");
- } else {
- printf("\n");
- }
- }
-}
-
-template <class _CharT, class _Alloc>
-const unsigned long
-rope<_CharT,_Alloc>::_S_min_len[
- _Rope_RopeRep<_CharT,_Alloc>::_S_max_rope_depth + 1] = {
-/* 0 */1, /* 1 */2, /* 2 */3, /* 3 */5, /* 4 */8, /* 5 */13, /* 6 */21,
-/* 7 */34, /* 8 */55, /* 9 */89, /* 10 */144, /* 11 */233, /* 12 */377,
-/* 13 */610, /* 14 */987, /* 15 */1597, /* 16 */2584, /* 17 */4181,
-/* 18 */6765, /* 19 */10946, /* 20 */17711, /* 21 */28657, /* 22 */46368,
-/* 23 */75025, /* 24 */121393, /* 25 */196418, /* 26 */317811,
-/* 27 */514229, /* 28 */832040, /* 29 */1346269, /* 30 */2178309,
-/* 31 */3524578, /* 32 */5702887, /* 33 */9227465, /* 34 */14930352,
-/* 35 */24157817, /* 36 */39088169, /* 37 */63245986, /* 38 */102334155,
-/* 39 */165580141, /* 40 */267914296, /* 41 */433494437,
-/* 42 */701408733, /* 43 */1134903170, /* 44 */1836311903,
-/* 45 */2971215073u };
-// These are Fibonacci numbers < 2**32.
-
-template <class _CharT, class _Alloc>
-rope<_CharT,_Alloc>::_RopeRep*
-rope<_CharT,_Alloc>::_S_balance(_RopeRep* __r)
-{
- _RopeRep* __forest[_RopeRep::_S_max_rope_depth + 1];
- _RopeRep* __result = 0;
- int __i;
- // Invariant:
- // The concatenation of forest in descending order is equal to __r.
- // __forest[__i]._M_size >= _S_min_len[__i]
- // __forest[__i]._M_depth = __i
- // References from forest are included in refcount.
-
- for (__i = 0; __i <= _RopeRep::_S_max_rope_depth; ++__i)
- __forest[__i] = 0;
- __STL_TRY {
- _S_add_to_forest(__r, __forest);
- for (__i = 0; __i <= _RopeRep::_S_max_rope_depth; ++__i)
- if (0 != __forest[__i]) {
-# ifndef __GC
- _Self_destruct_ptr __old(__result);
-# endif
- __result = _S_concat(__forest[__i], __result);
- __forest[__i]->_M_unref_nonnil();
-# if !defined(__GC) && defined(__STL_USE_EXCEPTIONS)
- __forest[__i] = 0;
-# endif
- }
- }
- __STL_UNWIND(for(__i = 0; __i <= _RopeRep::_S_max_rope_depth; __i++)
- _S_unref(__forest[__i]))
- if (__result->_M_depth > _RopeRep::_S_max_rope_depth) abort();
- return(__result);
-}
-
-
-template <class _CharT, class _Alloc>
-void
-rope<_CharT,_Alloc>::_S_add_to_forest(_RopeRep* __r, _RopeRep** __forest)
-{
- if (__r->_M_is_balanced) {
- _S_add_leaf_to_forest(__r, __forest);
- return;
- }
- __stl_assert(__r->_M_tag == _RopeRep::_S_concat);
- {
- _RopeConcatenation* __c = (_RopeConcatenation*)__r;
-
- _S_add_to_forest(__c->_M_left, __forest);
- _S_add_to_forest(__c->_M_right, __forest);
- }
-}
-
-
-template <class _CharT, class _Alloc>
-void
-rope<_CharT,_Alloc>::_S_add_leaf_to_forest(_RopeRep* __r, _RopeRep** __forest)
-{
- _RopeRep* __insertee; // included in refcount
- _RopeRep* __too_tiny = 0; // included in refcount
- int __i; // forest[0..__i-1] is empty
- size_t __s = __r->_M_size;
-
- for (__i = 0; __s >= _S_min_len[__i+1]/* not this bucket */; ++__i) {
- if (0 != __forest[__i]) {
-# ifndef __GC
- _Self_destruct_ptr __old(__too_tiny);
-# endif
- __too_tiny = _S_concat_and_set_balanced(__forest[__i], __too_tiny);
- __forest[__i]->_M_unref_nonnil();
- __forest[__i] = 0;
- }
- }
- {
-# ifndef __GC
- _Self_destruct_ptr __old(__too_tiny);
-# endif
- __insertee = _S_concat_and_set_balanced(__too_tiny, __r);
- }
- // Too_tiny dead, and no longer included in refcount.
- // Insertee is live and included.
- __stl_assert(_S_is_almost_balanced(__insertee));
- __stl_assert(__insertee->_M_depth <= __r->_M_depth + 1);
- for (;; ++__i) {
- if (0 != __forest[__i]) {
-# ifndef __GC
- _Self_destruct_ptr __old(__insertee);
-# endif
- __insertee = _S_concat_and_set_balanced(__forest[__i], __insertee);
- __forest[__i]->_M_unref_nonnil();
- __forest[__i] = 0;
- __stl_assert(_S_is_almost_balanced(__insertee));
- }
- __stl_assert(_S_min_len[__i] <= __insertee->_M_size);
- __stl_assert(__forest[__i] == 0);
- if (__i == _RopeRep::_S_max_rope_depth ||
- __insertee->_M_size < _S_min_len[__i+1]) {
- __forest[__i] = __insertee;
- // refcount is OK since __insertee is now dead.
- return;
- }
- }
-}
-
-template <class _CharT, class _Alloc>
-_CharT
-rope<_CharT,_Alloc>::_S_fetch(_RopeRep* __r, size_type __i)
-{
- __GC_CONST _CharT* __cstr = __r->_M_c_string;
-
- __stl_assert(__i < __r->_M_size);
- if (0 != __cstr) return __cstr[__i];
- for(;;) {
- switch(__r->_M_tag) {
- case _RopeRep::_S_concat:
- {
- _RopeConcatenation* __c = (_RopeConcatenation*)__r;
- _RopeRep* __left = __c->_M_left;
- size_t __left_len = __left->_M_size;
-
- if (__i >= __left_len) {
- __i -= __left_len;
- __r = __c->_M_right;
- } else {
- __r = __left;
- }
- }
- break;
- case _RopeRep::_S_leaf:
- {
- _RopeLeaf* __l = (_RopeLeaf*)__r;
- return __l->_M_data[__i];
- }
- case _RopeRep::_S_function:
- case _RopeRep::_S_substringfn:
- {
- _RopeFunction* __f = (_RopeFunction*)__r;
- _CharT __result;
-
- (*(__f->_M_fn))(__i, 1, &__result);
- return __result;
- }
- }
- }
-}
-
-# ifndef __GC
-// Return a uniquely referenced character slot for the given
-// position, or 0 if that's not possible.
-template <class _CharT, class _Alloc>
-_CharT*
-rope<_CharT,_Alloc>::_S_fetch_ptr(_RopeRep* __r, size_type __i)
-{
- _RopeRep* __clrstack[_RopeRep::_S_max_rope_depth];
- size_t __csptr = 0;
-
- for(;;) {
- if (__r->_M_refcount > 1) return 0;
- switch(__r->_M_tag) {
- case _RopeRep::_S_concat:
- {
- _RopeConcatenation* __c = (_RopeConcatenation*)__r;
- _RopeRep* __left = __c->_M_left;
- size_t __left_len = __left->_M_size;
-
- if (__c->_M_c_string != 0) __clrstack[__csptr++] = __c;
- if (__i >= __left_len) {
- __i -= __left_len;
- __r = __c->_M_right;
- } else {
- __r = __left;
- }
- }
- break;
- case _RopeRep::_S_leaf:
- {
- _RopeLeaf* __l = (_RopeLeaf*)__r;
- if (__l->_M_c_string != __l->_M_data && __l->_M_c_string != 0)
- __clrstack[__csptr++] = __l;
- while (__csptr > 0) {
- -- __csptr;
- _RopeRep* __d = __clrstack[__csptr];
- __d->_M_free_c_string();
- __d->_M_c_string = 0;
- }
- return __l->_M_data + __i;
- }
- case _RopeRep::_S_function:
- case _RopeRep::_S_substringfn:
- return 0;
- }
- }
-}
-# endif /* __GC */
-
-// The following could be implemented trivially using
-// lexicographical_compare_3way.
-// We do a little more work to avoid dealing with rope iterators for
-// flat strings.
-template <class _CharT, class _Alloc>
-int
-rope<_CharT,_Alloc>::_S_compare (const _RopeRep* __left,
- const _RopeRep* __right)
-{
- size_t __left_len;
- size_t __right_len;
-
- if (0 == __right) return 0 != __left;
- if (0 == __left) return -1;
- __left_len = __left->_M_size;
- __right_len = __right->_M_size;
- if (_RopeRep::_S_leaf == __left->_M_tag) {
- _RopeLeaf* __l = (_RopeLeaf*) __left;
- if (_RopeRep::_S_leaf == __right->_M_tag) {
- _RopeLeaf* __r = (_RopeLeaf*) __right;
- return lexicographical_compare_3way(
- __l->_M_data, __l->_M_data + __left_len,
- __r->_M_data, __r->_M_data + __right_len);
- } else {
- const_iterator __rstart(__right, 0);
- const_iterator __rend(__right, __right_len);
- return lexicographical_compare_3way(
- __l->_M_data, __l->_M_data + __left_len,
- __rstart, __rend);
- }
- } else {
- const_iterator __lstart(__left, 0);
- const_iterator __lend(__left, __left_len);
- if (_RopeRep::_S_leaf == __right->_M_tag) {
- _RopeLeaf* __r = (_RopeLeaf*) __right;
- return lexicographical_compare_3way(
- __lstart, __lend,
- __r->_M_data, __r->_M_data + __right_len);
- } else {
- const_iterator __rstart(__right, 0);
- const_iterator __rend(__right, __right_len);
- return lexicographical_compare_3way(
- __lstart, __lend,
- __rstart, __rend);
- }
- }
-}
-
-// Assignment to reference proxies.
-template <class _CharT, class _Alloc>
-_Rope_char_ref_proxy<_CharT, _Alloc>&
-_Rope_char_ref_proxy<_CharT, _Alloc>::operator= (_CharT __c) {
- _RopeRep* __old = _M_root->_M_tree_ptr;
-# ifndef __GC
- // First check for the case in which everything is uniquely
- // referenced. In that case we can do this destructively.
- _CharT* __ptr = _My_rope::_S_fetch_ptr(__old, _M_pos);
- if (0 != __ptr) {
- *__ptr = __c;
- return *this;
- }
-# endif
- _Self_destruct_ptr __left(
- _My_rope::_S_substring(__old, 0, _M_pos));
- _Self_destruct_ptr __right(
- _My_rope::_S_substring(__old, _M_pos+1, __old->_M_size));
- _Self_destruct_ptr __result_left(
- _My_rope::_S_destr_concat_char_iter(__left, &__c, 1));
-
-# ifndef __GC
- __stl_assert(__left == __result_left || 1 == __result_left->_M_refcount);
-# endif
- _RopeRep* __result =
- _My_rope::_S_concat(__result_left, __right);
-# ifndef __GC
- __stl_assert(1 <= __result->_M_refcount);
- _RopeRep::_S_unref(__old);
-# endif
- _M_root->_M_tree_ptr = __result;
- return *this;
-}
-
-template <class _CharT, class _Alloc>
-inline _Rope_char_ref_proxy<_CharT, _Alloc>::operator _CharT () const
-{
- if (_M_current_valid) {
- return _M_current;
- } else {
- return _My_rope::_S_fetch(_M_root->_M_tree_ptr, _M_pos);
- }
-}
-template <class _CharT, class _Alloc>
-_Rope_char_ptr_proxy<_CharT, _Alloc>
-_Rope_char_ref_proxy<_CharT, _Alloc>::operator& () const {
- return _Rope_char_ptr_proxy<_CharT, _Alloc>(*this);
-}
-
-template <class _CharT, class _Alloc>
-rope<_CharT, _Alloc>::rope(size_t __n, _CharT __c,
- const allocator_type& __a)
-: _Base(__a)
-{
- rope<_CharT,_Alloc> __result;
- const size_t __exponentiate_threshold = 32;
- size_t __exponent;
- size_t __rest;
- _CharT* __rest_buffer;
- _RopeRep* __remainder;
- rope<_CharT,_Alloc> __remainder_rope;
-
- if (0 == __n)
- return;
-
- __exponent = __n / __exponentiate_threshold;
- __rest = __n % __exponentiate_threshold;
- if (0 == __rest) {
- __remainder = 0;
- } else {
- __rest_buffer = _Data_allocate(_S_rounded_up_size(__rest));
- uninitialized_fill_n(__rest_buffer, __rest, __c);
- _S_cond_store_eos(__rest_buffer[__rest]);
- __STL_TRY {
- __remainder = _S_new_RopeLeaf(__rest_buffer, __rest, __a);
- }
- __STL_UNWIND(_RopeRep::__STL_FREE_STRING(__rest_buffer, __rest, __a))
- }
- __remainder_rope._M_tree_ptr = __remainder;
- if (__exponent != 0) {
- _CharT* __base_buffer =
- _Data_allocate(_S_rounded_up_size(__exponentiate_threshold));
- _RopeLeaf* __base_leaf;
- rope __base_rope;
- uninitialized_fill_n(__base_buffer, __exponentiate_threshold, __c);
- _S_cond_store_eos(__base_buffer[__exponentiate_threshold]);
- __STL_TRY {
- __base_leaf = _S_new_RopeLeaf(__base_buffer,
- __exponentiate_threshold, __a);
- }
- __STL_UNWIND(_RopeRep::__STL_FREE_STRING(__base_buffer,
- __exponentiate_threshold, __a))
- __base_rope._M_tree_ptr = __base_leaf;
- if (1 == __exponent) {
- __result = __base_rope;
-# ifndef __GC
- __stl_assert(2 == __result._M_tree_ptr->_M_refcount);
- // One each for base_rope and __result
-# endif
- } else {
- // XXX what is power()?
- __result = power(__base_rope, __exponent, _Concat_fn());
- }
- if (0 != __remainder) {
- __result += __remainder_rope;
- }
- } else {
- __result = __remainder_rope;
- }
- _M_tree_ptr = __result._M_tree_ptr;
- _M_tree_ptr->_M_ref_nonnil();
-}
-
-template<class _CharT, class _Alloc>
- _CharT rope<_CharT,_Alloc>::_S_empty_c_str[1];
-
-# ifdef __STL_PTHREADS
- template<class _CharT, class _Alloc>
- pthread_mutex_t
- rope<_CharT,_Alloc>::_S_swap_lock = PTHREAD_MUTEX_INITIALIZER;
-# endif
-
-template<class _CharT, class _Alloc>
-const _CharT* rope<_CharT,_Alloc>::c_str() const {
- if (0 == _M_tree_ptr) {
- _S_empty_c_str[0] = _S_eos((_CharT*)0); // Possibly redundant,
- // but probably fast.
- return _S_empty_c_str;
- }
- __GC_CONST _CharT* __old_c_string = _M_tree_ptr->_M_c_string;
- if (0 != __old_c_string) return(__old_c_string);
- size_t __s = size();
- _CharT* __result = _Data_allocate(__s + 1);
- _S_flatten(_M_tree_ptr, __result);
- __result[__s] = _S_eos((_CharT*)0);
-# ifdef __GC
- _M_tree_ptr->_M_c_string = __result;
-# else
- if ((__old_c_string =
- _S_atomic_swap(&(_M_tree_ptr->_M_c_string), __result)) != 0) {
- // It must have been added in the interim. Hence it had to have been
- // separately allocated. Deallocate the old copy, since we just
- // replaced it.
- destroy(__old_c_string, __old_c_string + __s + 1);
- _Data_deallocate(__old_c_string, __s + 1);
- }
-# endif
- return(__result);
-}
-
-template<class _CharT, class _Alloc>
-const _CharT* rope<_CharT,_Alloc>::replace_with_c_str() {
- if (0 == _M_tree_ptr) {
- _S_empty_c_str[0] = _S_eos((_CharT*)0);
- return _S_empty_c_str;
- }
- __GC_CONST _CharT* __old_c_string = _M_tree_ptr->_M_c_string;
- if (_RopeRep::_S_leaf == _M_tree_ptr->_M_tag && 0 != __old_c_string) {
- return(__old_c_string);
- }
- size_t __s = size();
- _CharT* __result = _Data_allocate(_S_rounded_up_size(__s));
- _S_flatten(_M_tree_ptr, __result);
- __result[__s] = _S_eos((_CharT*)0);
- _M_tree_ptr->_M_unref_nonnil();
- _M_tree_ptr = _S_new_RopeLeaf(__result, __s, get_allocator());
- return(__result);
-}
-
-// Algorithm specializations. More should be added.
-
-#ifndef _MSC_VER
-// I couldn't get this to work with VC++
-template<class _CharT,class _Alloc>
-void
-_Rope_rotate(_Rope_iterator<_CharT,_Alloc> __first,
- _Rope_iterator<_CharT,_Alloc> __middle,
- _Rope_iterator<_CharT,_Alloc> __last)
-{
- __stl_assert(__first.container() == __middle.container()
- && __middle.container() == __last.container());
- rope<_CharT,_Alloc>& __r(__first.container());
- rope<_CharT,_Alloc> __prefix = __r.substr(0, __first.index());
- rope<_CharT,_Alloc> __suffix =
- __r.substr(__last.index(), __r.size() - __last.index());
- rope<_CharT,_Alloc> __part1 =
- __r.substr(__middle.index(), __last.index() - __middle.index());
- rope<_CharT,_Alloc> __part2 =
- __r.substr(__first.index(), __middle.index() - __first.index());
- __r = __prefix;
- __r += __part1;
- __r += __part2;
- __r += __suffix;
-}
-
-#if !defined(__GNUC__)
-// Appears to confuse g++
-inline void rotate(_Rope_iterator<char,__STL_DEFAULT_ALLOCATOR(char)> __first,
- _Rope_iterator<char,__STL_DEFAULT_ALLOCATOR(char)> __middle,
- _Rope_iterator<char,__STL_DEFAULT_ALLOCATOR(char)> __last) {
- _Rope_rotate(__first, __middle, __last);
-}
-#endif
-
-# if 0
-// Probably not useful for several reasons:
-// - for SGIs 7.1 compiler and probably some others,
-// this forces lots of rope<wchar_t, ...> instantiations, creating a
-// code bloat and compile time problem. (Fixed in 7.2.)
-// - wchar_t is 4 bytes wide on most UNIX platforms, making it unattractive
-// for unicode strings. Unsigned short may be a better character
-// type.
-inline void rotate(
- _Rope_iterator<wchar_t,__STL_DEFAULT_ALLOCATOR(char)> __first,
- _Rope_iterator<wchar_t,__STL_DEFAULT_ALLOCATOR(char)> __middle,
- _Rope_iterator<wchar_t,__STL_DEFAULT_ALLOCATOR(char)> __last) {
- _Rope_rotate(__first, __middle, __last);
-}
-# endif
-#endif /* _MSC_VER */
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1174
-#endif
-
-__STL_END_NAMESPACE
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/set b/contrib/libstdc++/stl/set
deleted file mode 100644
index c836c45..0000000
--- a/contrib/libstdc++/stl/set
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_SET
-#define __SGI_STL_SET
-
-#ifndef __SGI_STL_INTERNAL_TREE_H
-#include <stl_tree.h>
-#endif
-#include <stl_set.h>
-#include <stl_multiset.h>
-
-#endif /* __SGI_STL_SET */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/set.h b/contrib/libstdc++/stl/set.h
deleted file mode 100644
index 9004d2e..0000000
--- a/contrib/libstdc++/stl/set.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_SET_H
-#define __SGI_STL_SET_H
-
-#include <tree.h>
-#include <stl_set.h>
-
-#ifdef __STL_USE_NAMESPACES
-using __STD::set;
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_SET_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/slist b/contrib/libstdc++/stl/slist
deleted file mode 100644
index c3ec742..0000000
--- a/contrib/libstdc++/stl/slist
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-#ifndef __SGI_STL_SLIST
-#define __SGI_STL_SLIST
-
-#include <stl_algobase.h>
-#include <stl_alloc.h>
-#include <stl_construct.h>
-#include <stl_uninitialized.h>
-#include <stl_slist.h>
-
-#endif /* __SGI_STL_SLIST */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/slist.h b/contrib/libstdc++/stl/slist.h
deleted file mode 100644
index d2377b0..0000000
--- a/contrib/libstdc++/stl/slist.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-#ifndef __SGI_STL_SLIST_H
-#define __SGI_STL_SLIST_H
-
-#include <algobase.h>
-#include <alloc.h>
-#include <stl_slist.h>
-
-#ifdef __STL_USE_NAMESPACES
-using __STD::slist;
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_SLIST_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stack b/contrib/libstdc++/stl/stack
deleted file mode 100644
index 36461d9..0000000
--- a/contrib/libstdc++/stl/stack
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_STACK
-#define __SGI_STL_STACK
-
-#include <stl_algobase.h>
-#include <stl_alloc.h>
-#include <stl_construct.h>
-#include <stl_uninitialized.h>
-#include <stl_deque.h>
-#include <stl_stack.h>
-
-#endif /* __SGI_STL_STACK */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stack.h b/contrib/libstdc++/stl/stack.h
deleted file mode 100644
index 89beca8..0000000
--- a/contrib/libstdc++/stl/stack.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_STACK_H
-#define __SGI_STL_STACK_H
-
-#include <vector.h>
-#include <deque.h>
-#include <heap.h>
-#include <stl_stack.h>
-#include <stl_queue.h>
-
-#ifdef __STL_USE_NAMESPACES
-using __STD::stack;
-using __STD::queue;
-using __STD::priority_queue;
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_STACK_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_algo.h b/contrib/libstdc++/stl/stl_algo.h
deleted file mode 100644
index e9beaee..0000000
--- a/contrib/libstdc++/stl/stl_algo.h
+++ /dev/null
@@ -1,2894 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_ALGO_H
-#define __SGI_STL_INTERNAL_ALGO_H
-
-#include <stl_heap.h>
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1209
-#endif
-
-// __median (an extension, not present in the C++ standard).
-
-template <class _Tp>
-inline const _Tp& __median(const _Tp& __a, const _Tp& __b, const _Tp& __c) {
- if (__a < __b)
- if (__b < __c)
- return __b;
- else if (__a < __c)
- return __c;
- else
- return __a;
- else if (__a < __c)
- return __a;
- else if (__b < __c)
- return __c;
- else
- return __b;
-}
-
-template <class _Tp, class _Compare>
-inline const _Tp&
-__median(const _Tp& __a, const _Tp& __b, const _Tp& __c, _Compare __comp) {
- if (__comp(__a, __b))
- if (__comp(__b, __c))
- return __b;
- else if (__comp(__a, __c))
- return __c;
- else
- return __a;
- else if (__comp(__a, __c))
- return __a;
- else if (__comp(__b, __c))
- return __c;
- else
- return __b;
-}
-
-// for_each. Apply a function to every element of a range.
-template <class _InputIter, class _Function>
-_Function for_each(_InputIter __first, _InputIter __last, _Function __f) {
- for ( ; __first != __last; ++__first)
- __f(*__first);
- return __f;
-}
-
-// find and find_if.
-
-template <class _InputIter, class _Tp>
-inline _InputIter find(_InputIter __first, _InputIter __last,
- const _Tp& __val,
- input_iterator_tag)
-{
- while (__first != __last && *__first != __val)
- ++__first;
- return __first;
-}
-
-template <class _InputIter, class _Predicate>
-inline _InputIter find_if(_InputIter __first, _InputIter __last,
- _Predicate __pred,
- input_iterator_tag)
-{
- while (__first != __last && !__pred(*__first))
- ++__first;
- return __first;
-}
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _RandomAccessIter, class _Tp>
-_RandomAccessIter find(_RandomAccessIter __first, _RandomAccessIter __last,
- const _Tp& __val,
- random_access_iterator_tag)
-{
- typename iterator_traits<_RandomAccessIter>::difference_type __trip_count
- = (__last - __first) >> 2;
-
- for ( ; __trip_count > 0 ; --__trip_count) {
- if (*__first == __val) return __first;
- ++__first;
-
- if (*__first == __val) return __first;
- ++__first;
-
- if (*__first == __val) return __first;
- ++__first;
-
- if (*__first == __val) return __first;
- ++__first;
- }
-
- switch(__last - __first) {
- case 3:
- if (*__first == __val) return __first;
- ++__first;
- case 2:
- if (*__first == __val) return __first;
- ++__first;
- case 1:
- if (*__first == __val) return __first;
- ++__first;
- case 0:
- default:
- return __last;
- }
-}
-
-template <class _RandomAccessIter, class _Predicate>
-_RandomAccessIter find_if(_RandomAccessIter __first, _RandomAccessIter __last,
- _Predicate __pred,
- random_access_iterator_tag)
-{
- typename iterator_traits<_RandomAccessIter>::difference_type __trip_count
- = (__last - __first) >> 2;
-
- for ( ; __trip_count > 0 ; --__trip_count) {
- if (__pred(*__first)) return __first;
- ++__first;
-
- if (__pred(*__first)) return __first;
- ++__first;
-
- if (__pred(*__first)) return __first;
- ++__first;
-
- if (__pred(*__first)) return __first;
- ++__first;
- }
-
- switch(__last - __first) {
- case 3:
- if (__pred(*__first)) return __first;
- ++__first;
- case 2:
- if (__pred(*__first)) return __first;
- ++__first;
- case 1:
- if (__pred(*__first)) return __first;
- ++__first;
- case 0:
- default:
- return __last;
- }
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-template <class _InputIter, class _Tp>
-inline _InputIter find(_InputIter __first, _InputIter __last,
- const _Tp& __val)
-{
- return find(__first, __last, __val, __ITERATOR_CATEGORY(__first));
-}
-
-template <class _InputIter, class _Predicate>
-inline _InputIter find_if(_InputIter __first, _InputIter __last,
- _Predicate __pred) {
- return find_if(__first, __last, __pred, __ITERATOR_CATEGORY(__first));
-}
-
-// adjacent_find.
-
-template <class _ForwardIter>
-_ForwardIter adjacent_find(_ForwardIter __first, _ForwardIter __last) {
- if (__first == __last)
- return __last;
- _ForwardIter __next = __first;
- while(++__next != __last) {
- if (*__first == *__next)
- return __first;
- __first = __next;
- }
- return __last;
-}
-
-template <class _ForwardIter, class _BinaryPredicate>
-_ForwardIter adjacent_find(_ForwardIter __first, _ForwardIter __last,
- _BinaryPredicate __binary_pred) {
- if (__first == __last)
- return __last;
- _ForwardIter __next = __first;
- while(++__next != __last) {
- if (__binary_pred(*__first, *__next))
- return __first;
- __first = __next;
- }
- return __last;
-}
-
-// count and count_if. There are two version of each, one whose return type
-// type is void and one (present only if we have partial specialization)
-// whose return type is iterator_traits<_InputIter>::difference_type. The
-// C++ standard only has the latter version, but the former, which was present
-// in the HP STL, is retained for backward compatibility.
-
-template <class _InputIter, class _Tp, class _Size>
-void count(_InputIter __first, _InputIter __last, const _Tp& __value,
- _Size& __n) {
- for ( ; __first != __last; ++__first)
- if (*__first == __value)
- ++__n;
-}
-
-template <class _InputIter, class _Predicate, class _Size>
-void count_if(_InputIter __first, _InputIter __last, _Predicate __pred,
- _Size& __n) {
- for ( ; __first != __last; ++__first)
- if (__pred(*__first))
- ++__n;
-}
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _InputIter, class _Tp>
-typename iterator_traits<_InputIter>::difference_type
-count(_InputIter __first, _InputIter __last, const _Tp& __value) {
- typename iterator_traits<_InputIter>::difference_type __n = 0;
- for ( ; __first != __last; ++__first)
- if (*__first == __value)
- ++__n;
- return __n;
-}
-
-template <class _InputIter, class _Predicate>
-typename iterator_traits<_InputIter>::difference_type
-count_if(_InputIter __first, _InputIter __last, _Predicate __pred) {
- typename iterator_traits<_InputIter>::difference_type __n = 0;
- for ( ; __first != __last; ++__first)
- if (__pred(*__first))
- ++__n;
- return __n;
-}
-
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-// search.
-
-template <class _ForwardIter1, class _ForwardIter2>
-_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1,
- _ForwardIter2 __first2, _ForwardIter2 __last2)
-{
- // Test for empty ranges
- if (__first1 == __last1 || __first2 == __last2)
- return __first1;
-
- // Test for a pattern of length 1.
- _ForwardIter2 __tmp(__first2);
- ++__tmp;
- if (__tmp == __last2)
- return find(__first1, __last1, *__first2);
-
- // General case.
-
- _ForwardIter2 __p1, __p;
-
- __p1 = __first2; ++__p1;
-
- _ForwardIter1 __current = __first1;
-
- while (__first1 != __last1) {
- __first1 = find(__first1, __last1, *__first2);
- if (__first1 == __last1)
- return __last1;
-
- __p = __p1;
- __current = __first1;
- if (++__current == __last1)
- return __last1;
-
- while (*__current == *__p) {
- if (++__p == __last2)
- return __first1;
- if (++__current == __last1)
- return __last1;
- }
-
- ++__first1;
- }
- return __first1;
-}
-
-template <class _ForwardIter1, class _ForwardIter2, class _BinaryPred>
-_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1,
- _ForwardIter2 __first2, _ForwardIter2 __last2,
- _BinaryPred __predicate)
-{
- // Test for empty ranges
- if (__first1 == __last1 || __first2 == __last2)
- return __first1;
-
- // Test for a pattern of length 1.
- _ForwardIter2 __tmp(__first2);
- ++__tmp;
- if (__tmp == __last2)
- return find(__first1, __last1, *__first2);
-
- // General case.
-
- _ForwardIter2 __p1, __p;
-
- __p1 = __first2; ++__p1;
-
- _ForwardIter1 __current = __first1;
-
- while (__first1 != __last1) {
- while (__first1 != __last1) {
- if (__predicate(*__first1, *__first2))
- break;
- ++__first1;
- }
- while (__first1 != __last1 && !__predicate(*__first1, *__first2))
- ++__first1;
- if (__first1 == __last1)
- return __last1;
-
- __p = __p1;
- __current = __first1;
- if (++__current == __last1) return __last1;
-
- while (__predicate(*__current, *__p)) {
- if (++__p == __last2)
- return __first1;
- if (++__current == __last1)
- return __last1;
- }
-
- ++__first1;
- }
- return __first1;
-}
-
-// search_n. Search for __count consecutive copies of __val.
-
-template <class _ForwardIter, class _Integer, class _Tp>
-_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last,
- _Integer __count, const _Tp& __val) {
- if (__count <= 0)
- return __first;
- else {
- __first = find(__first, __last, __val);
- while (__first != __last) {
- _Integer __n = __count - 1;
- _ForwardIter __i = __first;
- ++__i;
- while (__i != __last && __n != 0 && *__i == __val) {
- ++__i;
- --__n;
- }
- if (__n == 0)
- return __first;
- else
- __first = find(__i, __last, __val);
- }
- return __last;
- }
-}
-
-template <class _ForwardIter, class _Integer, class _Tp, class _BinaryPred>
-_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last,
- _Integer __count, const _Tp& __val,
- _BinaryPred __binary_pred) {
- if (__count <= 0)
- return __first;
- else {
- while (__first != __last) {
- if (__binary_pred(*__first, __val))
- break;
- ++__first;
- }
- while (__first != __last) {
- _Integer __n = __count - 1;
- _ForwardIter __i = __first;
- ++__i;
- while (__i != __last && __n != 0 && __binary_pred(*__i, __val)) {
- ++__i;
- --__n;
- }
- if (__n == 0)
- return __first;
- else {
- while (__i != __last) {
- if (__binary_pred(*__i, __val))
- break;
- ++__i;
- }
- __first = __i;
- }
- }
- return __last;
- }
-}
-
-// swap_ranges
-
-template <class _ForwardIter1, class _ForwardIter2>
-_ForwardIter2 swap_ranges(_ForwardIter1 __first1, _ForwardIter1 __last1,
- _ForwardIter2 __first2) {
- for ( ; __first1 != __last1; ++__first1, ++__first2)
- iter_swap(__first1, __first2);
- return __first2;
-}
-
-// transform
-
-template <class _InputIter, class _OutputIter, class _UnaryOperation>
-_OutputIter transform(_InputIter __first, _InputIter __last,
- _OutputIter __result, _UnaryOperation __oper) {
- for ( ; __first != __last; ++__first, ++__result)
- *__result = __oper(*__first);
- return __result;
-}
-
-template <class _InputIter1, class _InputIter2, class _OutputIter,
- class _BinaryOperation>
-_OutputIter transform(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _OutputIter __result,
- _BinaryOperation __binary_op) {
- for ( ; __first1 != __last1; ++__first1, ++__first2, ++__result)
- *__result = __binary_op(*__first1, *__first2);
- return __result;
-}
-
-// replace, replace_if, replace_copy, replace_copy_if
-
-template <class _ForwardIter, class _Tp>
-void replace(_ForwardIter __first, _ForwardIter __last,
- const _Tp& __old_value, const _Tp& __new_value) {
- for ( ; __first != __last; ++__first)
- if (*__first == __old_value)
- *__first = __new_value;
-}
-
-template <class _ForwardIter, class _Predicate, class _Tp>
-void replace_if(_ForwardIter __first, _ForwardIter __last,
- _Predicate __pred, const _Tp& __new_value) {
- for ( ; __first != __last; ++__first)
- if (__pred(*__first))
- *__first = __new_value;
-}
-
-template <class _InputIter, class _OutputIter, class _Tp>
-_OutputIter replace_copy(_InputIter __first, _InputIter __last,
- _OutputIter __result,
- const _Tp& __old_value, const _Tp& __new_value) {
- for ( ; __first != __last; ++__first, ++__result)
- *__result = *__first == __old_value ? __new_value : *__first;
- return __result;
-}
-
-template <class Iterator, class _OutputIter, class _Predicate, class _Tp>
-_OutputIter replace_copy_if(Iterator __first, Iterator __last,
- _OutputIter __result,
- _Predicate __pred, const _Tp& __new_value) {
- for ( ; __first != __last; ++__first, ++__result)
- *__result = __pred(*__first) ? __new_value : *__first;
- return __result;
-}
-
-// generate and generate_n
-
-template <class _ForwardIter, class _Generator>
-void generate(_ForwardIter __first, _ForwardIter __last, _Generator __gen) {
- for ( ; __first != __last; ++__first)
- *__first = __gen();
-}
-
-template <class _OutputIter, class _Size, class _Generator>
-_OutputIter generate_n(_OutputIter __first, _Size __n, _Generator __gen) {
- for ( ; __n > 0; --__n, ++__first)
- *__first = __gen();
- return __first;
-}
-
-// remove, remove_if, remove_copy, remove_copy_if
-
-template <class _InputIter, class _OutputIter, class _Tp>
-_OutputIter remove_copy(_InputIter __first, _InputIter __last,
- _OutputIter __result, const _Tp& __value) {
- for ( ; __first != __last; ++__first)
- if (*__first != __value) {
- *__result = *__first;
- ++__result;
- }
- return __result;
-}
-
-template <class _InputIter, class _OutputIter, class _Predicate>
-_OutputIter remove_copy_if(_InputIter __first, _InputIter __last,
- _OutputIter __result, _Predicate __pred) {
- for ( ; __first != __last; ++__first)
- if (!__pred(*__first)) {
- *__result = *__first;
- ++__result;
- }
- return __result;
-}
-
-template <class _ForwardIter, class _Tp>
-_ForwardIter remove(_ForwardIter __first, _ForwardIter __last,
- const _Tp& __value) {
- __first = find(__first, __last, __value);
- _ForwardIter __i = __first;
- return __first == __last ? __first
- : remove_copy(++__i, __last, __first, __value);
-}
-
-template <class _ForwardIter, class _Predicate>
-_ForwardIter remove_if(_ForwardIter __first, _ForwardIter __last,
- _Predicate __pred) {
- __first = find_if(__first, __last, __pred);
- _ForwardIter __i = __first;
- return __first == __last ? __first
- : remove_copy_if(++__i, __last, __first, __pred);
-}
-
-// unique and unique_copy
-
-template <class _InputIter, class _OutputIter, class _Tp>
-_OutputIter __unique_copy(_InputIter __first, _InputIter __last,
- _OutputIter __result, _Tp*) {
- _Tp __value = *__first;
- *__result = __value;
- while (++__first != __last)
- if (__value != *__first) {
- __value = *__first;
- *++__result = __value;
- }
- return ++__result;
-}
-
-template <class _InputIter, class _OutputIter>
-inline _OutputIter __unique_copy(_InputIter __first, _InputIter __last,
- _OutputIter __result,
- output_iterator_tag) {
- return __unique_copy(__first, __last, __result, __VALUE_TYPE(__first));
-}
-
-template <class _InputIter, class _ForwardIter>
-_ForwardIter __unique_copy(_InputIter __first, _InputIter __last,
- _ForwardIter __result, forward_iterator_tag) {
- *__result = *__first;
- while (++__first != __last)
- if (*__result != *__first) *++__result = *__first;
- return ++__result;
-}
-
-template <class _InputIter, class _OutputIter>
-inline _OutputIter unique_copy(_InputIter __first, _InputIter __last,
- _OutputIter __result) {
- if (__first == __last) return __result;
- return __unique_copy(__first, __last, __result,
- __ITERATOR_CATEGORY(__result));
-}
-
-template <class _InputIter, class _OutputIter, class _BinaryPredicate,
- class _Tp>
-_OutputIter __unique_copy(_InputIter __first, _InputIter __last,
- _OutputIter __result,
- _BinaryPredicate __binary_pred, _Tp*) {
- _Tp __value = *__first;
- *__result = __value;
- while (++__first != __last)
- if (!__binary_pred(__value, *__first)) {
- __value = *__first;
- *++__result = __value;
- }
- return ++__result;
-}
-
-template <class _InputIter, class _OutputIter, class _BinaryPredicate>
-inline _OutputIter __unique_copy(_InputIter __first, _InputIter __last,
- _OutputIter __result,
- _BinaryPredicate __binary_pred,
- output_iterator_tag) {
- return __unique_copy(__first, __last, __result, __binary_pred,
- __VALUE_TYPE(__first));
-}
-
-template <class _InputIter, class _ForwardIter, class _BinaryPredicate>
-_ForwardIter __unique_copy(_InputIter __first, _InputIter __last,
- _ForwardIter __result,
- _BinaryPredicate __binary_pred,
- forward_iterator_tag) {
- *__result = *__first;
- while (++__first != __last)
- if (!__binary_pred(*__result, *__first)) *++__result = *__first;
- return ++__result;
-}
-
-template <class _InputIter, class _OutputIter, class _BinaryPredicate>
-inline _OutputIter unique_copy(_InputIter __first, _InputIter __last,
- _OutputIter __result,
- _BinaryPredicate __binary_pred) {
- if (__first == __last) return __result;
- return __unique_copy(__first, __last, __result, __binary_pred,
- __ITERATOR_CATEGORY(__result));
-}
-
-template <class _ForwardIter>
-_ForwardIter unique(_ForwardIter __first, _ForwardIter __last) {
- __first = adjacent_find(__first, __last);
- return unique_copy(__first, __last, __first);
-}
-
-template <class _ForwardIter, class _BinaryPredicate>
-_ForwardIter unique(_ForwardIter __first, _ForwardIter __last,
- _BinaryPredicate __binary_pred) {
- __first = adjacent_find(__first, __last, __binary_pred);
- return unique_copy(__first, __last, __first, __binary_pred);
-}
-
-// reverse and reverse_copy, and their auxiliary functions
-
-template <class _BidirectionalIter>
-void __reverse(_BidirectionalIter __first, _BidirectionalIter __last,
- bidirectional_iterator_tag) {
- while (true)
- if (__first == __last || __first == --__last)
- return;
- else
- iter_swap(__first++, __last);
-}
-
-template <class _RandomAccessIter>
-void __reverse(_RandomAccessIter __first, _RandomAccessIter __last,
- random_access_iterator_tag) {
- while (__first < __last)
- iter_swap(__first++, --__last);
-}
-
-template <class _BidirectionalIter>
-inline void reverse(_BidirectionalIter __first, _BidirectionalIter __last) {
- __reverse(__first, __last, __ITERATOR_CATEGORY(__first));
-}
-
-template <class _BidirectionalIter, class _OutputIter>
-_OutputIter reverse_copy(_BidirectionalIter __first,
- _BidirectionalIter __last,
- _OutputIter __result) {
- while (__first != __last) {
- --__last;
- *__result = *__last;
- ++__result;
- }
- return __result;
-}
-
-// rotate and rotate_copy, and their auxiliary functions
-
-template <class _EuclideanRingElement>
-_EuclideanRingElement __gcd(_EuclideanRingElement __m,
- _EuclideanRingElement __n)
-{
- while (__n != 0) {
- _EuclideanRingElement __t = __m % __n;
- __m = __n;
- __n = __t;
- }
- return __m;
-}
-
-template <class _ForwardIter, class _Distance>
-_ForwardIter __rotate(_ForwardIter __first,
- _ForwardIter __middle,
- _ForwardIter __last,
- _Distance*,
- forward_iterator_tag) {
- if (__first == __middle)
- return __last;
- if (__last == __middle)
- return __first;
-
- _ForwardIter __first2 = __middle;
- do {
- swap(*__first++, *__first2++);
- if (__first == __middle)
- __middle = __first2;
- } while (__first2 != __last);
-
- _ForwardIter __new_middle = __first;
-
- __first2 = __middle;
-
- while (__first2 != __last) {
- swap (*__first++, *__first2++);
- if (__first == __middle)
- __middle = __first2;
- else if (__first2 == __last)
- __first2 = __middle;
- }
-
- return __new_middle;
-}
-
-
-template <class _BidirectionalIter, class _Distance>
-_BidirectionalIter __rotate(_BidirectionalIter __first,
- _BidirectionalIter __middle,
- _BidirectionalIter __last,
- _Distance*,
- bidirectional_iterator_tag) {
- if (__first == __middle)
- return __last;
- if (__last == __middle)
- return __first;
-
- __reverse(__first, __middle, bidirectional_iterator_tag());
- __reverse(__middle, __last, bidirectional_iterator_tag());
-
- while (__first != __middle && __middle != __last)
- swap (*__first++, *--__last);
-
- if (__first == __middle) {
- __reverse(__middle, __last, bidirectional_iterator_tag());
- return __last;
- }
- else {
- __reverse(__first, __middle, bidirectional_iterator_tag());
- return __first;
- }
-}
-
-template <class _RandomAccessIter, class _Distance, class _Tp>
-_RandomAccessIter __rotate(_RandomAccessIter __first,
- _RandomAccessIter __middle,
- _RandomAccessIter __last,
- _Distance *, _Tp *) {
-
- _Distance __n = __last - __first;
- _Distance __k = __middle - __first;
- _Distance __l = __n - __k;
- _RandomAccessIter __result = __first + (__last - __middle);
-
- if (__k == __l) {
- swap_ranges(__first, __middle, __middle);
- return __result;
- }
-
- _Distance __d = __gcd(__n, __k);
-
- for (_Distance __i = 0; __i < __d; __i++) {
- _Tp __tmp = *__first;
- _RandomAccessIter __p = __first;
-
- if (__k < __l) {
- for (_Distance __j = 0; __j < __l/__d; __j++) {
- if (__p > __first + __l) {
- *__p = *(__p - __l);
- __p -= __l;
- }
-
- *__p = *(__p + __k);
- __p += __k;
- }
- }
-
- else {
- for (_Distance __j = 0; __j < __k/__d - 1; __j ++) {
- if (__p < __last - __k) {
- *__p = *(__p + __k);
- __p += __k;
- }
-
- *__p = * (__p - __l);
- __p -= __l;
- }
- }
-
- *__p = __tmp;
- ++__first;
- }
-
- return __result;
-}
-
-template <class _ForwardIter>
-inline _ForwardIter rotate(_ForwardIter __first, _ForwardIter __middle,
- _ForwardIter __last) {
- return __rotate(__first, __middle, __last,
- __DISTANCE_TYPE(__first),
- __ITERATOR_CATEGORY(__first));
-}
-
-template <class _ForwardIter, class _OutputIter>
-_OutputIter rotate_copy(_ForwardIter __first, _ForwardIter __middle,
- _ForwardIter __last, _OutputIter __result) {
- return copy(__first, __middle, copy(__middle, __last, __result));
-}
-
-// Return a random number in the range [0, __n). This function encapsulates
-// whether we're using rand (part of the standard C library) or lrand48
-// (not standard, but a much better choice whenever it's available).
-
-template <class _Distance>
-inline _Distance __random_number(_Distance __n) {
-#ifdef __STL_NO_DRAND48
- return rand() % __n;
-#else
- return lrand48() % __n;
-#endif
-}
-
-// random_shuffle
-
-template <class _RandomAccessIter>
-inline void random_shuffle(_RandomAccessIter __first,
- _RandomAccessIter __last) {
- if (__first == __last) return;
- for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i)
- iter_swap(__i, __first + __random_number((__i - __first) + 1));
-}
-
-template <class _RandomAccessIter, class _RandomNumberGenerator>
-void random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last,
- _RandomNumberGenerator& __rand) {
- if (__first == __last) return;
- for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i)
- iter_swap(__i, __first + __rand((__i - __first) + 1));
-}
-
-// random_sample and random_sample_n (extensions, not part of the standard).
-
-template <class _ForwardIter, class _OutputIter, class _Distance>
-_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last,
- _OutputIter __out, const _Distance __n)
-{
- _Distance __remaining = 0;
- distance(__first, __last, __remaining);
- _Distance __m = min(__n, __remaining);
-
- while (__m > 0) {
- if (__random_number(__remaining) < __m) {
- *__out = *__first;
- ++__out;
- --__m;
- }
-
- --__remaining;
- ++__first;
- }
- return __out;
-}
-
-template <class _ForwardIter, class _OutputIter, class _Distance,
- class _RandomNumberGenerator>
-_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last,
- _OutputIter __out, const _Distance __n,
- _RandomNumberGenerator& __rand)
-{
- _Distance __remaining = 0;
- distance(__first, __last, __remaining);
- _Distance __m = min(__n, __remaining);
-
- while (__m > 0) {
- if (__rand(__remaining) < __m) {
- *__out = *__first;
- ++__out;
- --__m;
- }
-
- --__remaining;
- ++__first;
- }
- return __out;
-}
-
-template <class _InputIter, class _RandomAccessIter, class _Distance>
-_RandomAccessIter __random_sample(_InputIter __first, _InputIter __last,
- _RandomAccessIter __out,
- const _Distance __n)
-{
- _Distance __m = 0;
- _Distance __t = __n;
- for ( ; __first != __last && __m < __n; ++__m, ++__first)
- __out[__m] = *__first;
-
- while (__first != __last) {
- ++__t;
- _Distance __M = __random_number(__t);
- if (__M < __n)
- __out[__M] = *__first;
- ++__first;
- }
-
- return __out + __m;
-}
-
-template <class _InputIter, class _RandomAccessIter,
- class _RandomNumberGenerator, class _Distance>
-_RandomAccessIter __random_sample(_InputIter __first, _InputIter __last,
- _RandomAccessIter __out,
- _RandomNumberGenerator& __rand,
- const _Distance __n)
-{
- _Distance __m = 0;
- _Distance __t = __n;
- for ( ; __first != __last && __m < __n; ++__m, ++__first)
- __out[__m] = *__first;
-
- while (__first != __last) {
- ++__t;
- _Distance __M = __rand(__t);
- if (__M < __n)
- __out[__M] = *__first;
- ++__first;
- }
-
- return __out + __m;
-}
-
-template <class _InputIter, class _RandomAccessIter>
-inline _RandomAccessIter
-random_sample(_InputIter __first, _InputIter __last,
- _RandomAccessIter __out_first, _RandomAccessIter __out_last)
-{
- return __random_sample(__first, __last,
- __out_first, __out_last - __out_first);
-}
-
-
-template <class _InputIter, class _RandomAccessIter,
- class _RandomNumberGenerator>
-inline _RandomAccessIter
-random_sample(_InputIter __first, _InputIter __last,
- _RandomAccessIter __out_first, _RandomAccessIter __out_last,
- _RandomNumberGenerator& __rand)
-{
- return __random_sample(__first, __last,
- __out_first, __rand,
- __out_last - __out_first);
-}
-
-// partition, stable_partition, and their auxiliary functions
-
-template <class _ForwardIter, class _Predicate>
-_ForwardIter __partition(_ForwardIter __first,
- _ForwardIter __last,
- _Predicate __pred,
- forward_iterator_tag) {
- if (__first == __last) return __first;
-
- while (__pred(*__first))
- if (++__first == __last) return __first;
-
- _ForwardIter __next = __first;
-
- while (++__next != __last)
- if (__pred(*__next)) {
- swap(*__first, *__next);
- ++__first;
- }
-
- return __first;
-}
-
-template <class _BidirectionalIter, class _Predicate>
-_BidirectionalIter __partition(_BidirectionalIter __first,
- _BidirectionalIter __last,
- _Predicate __pred,
- bidirectional_iterator_tag) {
- while (true) {
- while (true)
- if (__first == __last)
- return __first;
- else if (__pred(*__first))
- ++__first;
- else
- break;
- --__last;
- while (true)
- if (__first == __last)
- return __first;
- else if (!__pred(*__last))
- --__last;
- else
- break;
- iter_swap(__first, __last);
- ++__first;
- }
-}
-
-template <class _ForwardIter, class _Predicate>
-inline _ForwardIter partition(_ForwardIter __first,
- _ForwardIter __last,
- _Predicate __pred) {
- return __partition(__first, __last, __pred, __ITERATOR_CATEGORY(__first));
-}
-
-
-template <class _ForwardIter, class _Predicate, class _Distance>
-_ForwardIter __inplace_stable_partition(_ForwardIter __first,
- _ForwardIter __last,
- _Predicate __pred, _Distance __len) {
- if (__len == 1)
- return __pred(*__first) ? __last : __first;
- _ForwardIter __middle = __first;
- advance(__middle, __len / 2);
- return rotate(__inplace_stable_partition(__first, __middle, __pred,
- __len / 2),
- __middle,
- __inplace_stable_partition(__middle, __last, __pred,
- __len - __len / 2));
-}
-
-template <class _ForwardIter, class _Pointer, class _Predicate,
- class _Distance>
-_ForwardIter __stable_partition_adaptive(_ForwardIter __first,
- _ForwardIter __last,
- _Predicate __pred, _Distance __len,
- _Pointer __buffer,
- _Distance __buffer_size)
-{
- if (__len <= __buffer_size) {
- _ForwardIter __result1 = __first;
- _Pointer __result2 = __buffer;
- for ( ; __first != __last ; ++__first)
- if (__pred(*__first)) {
- *__result1 = *__first;
- ++__result1;
- }
- else {
- *__result2 = *__first;
- ++__result2;
- }
- copy(__buffer, __result2, __result1);
- return __result1;
- }
- else {
- _ForwardIter __middle = __first;
- advance(__middle, __len / 2);
- return rotate(__stable_partition_adaptive(
- __first, __middle, __pred,
- __len / 2, __buffer, __buffer_size),
- __middle,
- __stable_partition_adaptive(
- __middle, __last, __pred,
- __len - __len / 2, __buffer, __buffer_size));
- }
-}
-
-template <class _ForwardIter, class _Predicate, class _Tp, class _Distance>
-inline _ForwardIter
-__stable_partition_aux(_ForwardIter __first, _ForwardIter __last,
- _Predicate __pred, _Tp*, _Distance*)
-{
- _Temporary_buffer<_ForwardIter, _Tp> __buf(__first, __last);
- if (__buf.size() > 0)
- return __stable_partition_adaptive(__first, __last, __pred,
- _Distance(__buf.requested_size()),
- __buf.begin(), __buf.size());
- else
- return __inplace_stable_partition(__first, __last, __pred,
- _Distance(__buf.requested_size()));
-}
-
-template <class _ForwardIter, class _Predicate>
-inline _ForwardIter stable_partition(_ForwardIter __first,
- _ForwardIter __last,
- _Predicate __pred) {
- if (__first == __last)
- return __first;
- else
- return __stable_partition_aux(__first, __last, __pred,
- __VALUE_TYPE(__first),
- __DISTANCE_TYPE(__first));
-}
-
-template <class _RandomAccessIter, class _Tp>
-_RandomAccessIter __unguarded_partition(_RandomAccessIter __first,
- _RandomAccessIter __last,
- _Tp __pivot)
-{
- while (true) {
- while (*__first < __pivot)
- ++__first;
- --__last;
- while (__pivot < *__last)
- --__last;
- if (!(__first < __last))
- return __first;
- iter_swap(__first, __last);
- ++__first;
- }
-}
-
-template <class _RandomAccessIter, class _Tp, class _Compare>
-_RandomAccessIter __unguarded_partition(_RandomAccessIter __first,
- _RandomAccessIter __last,
- _Tp __pivot, _Compare __comp)
-{
- while (true) {
- while (__comp(*__first, __pivot))
- ++__first;
- --__last;
- while (__comp(__pivot, *__last))
- --__last;
- if (!(__first < __last))
- return __first;
- iter_swap(__first, __last);
- ++__first;
- }
-}
-
-const int __stl_threshold = 16;
-
-// sort() and its auxiliary functions.
-
-template <class _RandomAccessIter, class _Tp>
-void __unguarded_linear_insert(_RandomAccessIter __last, _Tp __val) {
- _RandomAccessIter __next = __last;
- --__next;
- while (__val < *__next) {
- *__last = *__next;
- __last = __next;
- --__next;
- }
- *__last = __val;
-}
-
-template <class _RandomAccessIter, class _Tp, class _Compare>
-void __unguarded_linear_insert(_RandomAccessIter __last, _Tp __val,
- _Compare __comp) {
- _RandomAccessIter __next = __last;
- --__next;
- while (__comp(__val, *__next)) {
- *__last = *__next;
- __last = __next;
- --__next;
- }
- *__last = __val;
-}
-
-template <class _RandomAccessIter, class _Tp>
-inline void __linear_insert(_RandomAccessIter __first,
- _RandomAccessIter __last, _Tp*) {
- _Tp __val = *__last;
- if (__val < *__first) {
- copy_backward(__first, __last, __last + 1);
- *__first = __val;
- }
- else
- __unguarded_linear_insert(__last, __val);
-}
-
-template <class _RandomAccessIter, class _Tp, class _Compare>
-inline void __linear_insert(_RandomAccessIter __first,
- _RandomAccessIter __last, _Tp*, _Compare __comp) {
- _Tp __val = *__last;
- if (__comp(__val, *__first)) {
- copy_backward(__first, __last, __last + 1);
- *__first = __val;
- }
- else
- __unguarded_linear_insert(__last, __val, __comp);
-}
-
-template <class _RandomAccessIter>
-void __insertion_sort(_RandomAccessIter __first, _RandomAccessIter __last) {
- if (__first == __last) return;
- for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i)
- __linear_insert(__first, __i, __VALUE_TYPE(__first));
-}
-
-template <class _RandomAccessIter, class _Compare>
-void __insertion_sort(_RandomAccessIter __first,
- _RandomAccessIter __last, _Compare __comp) {
- if (__first == __last) return;
- for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i)
- __linear_insert(__first, __i, __VALUE_TYPE(__first), __comp);
-}
-
-template <class _RandomAccessIter, class _Tp>
-void __unguarded_insertion_sort_aux(_RandomAccessIter __first,
- _RandomAccessIter __last, _Tp*) {
- for (_RandomAccessIter __i = __first; __i != __last; ++__i)
- __unguarded_linear_insert(__i, _Tp(*__i));
-}
-
-template <class _RandomAccessIter>
-inline void __unguarded_insertion_sort(_RandomAccessIter __first,
- _RandomAccessIter __last) {
- __unguarded_insertion_sort_aux(__first, __last, __VALUE_TYPE(__first));
-}
-
-template <class _RandomAccessIter, class _Tp, class _Compare>
-void __unguarded_insertion_sort_aux(_RandomAccessIter __first,
- _RandomAccessIter __last,
- _Tp*, _Compare __comp) {
- for (_RandomAccessIter __i = __first; __i != __last; ++__i)
- __unguarded_linear_insert(__i, _Tp(*__i), __comp);
-}
-
-template <class _RandomAccessIter, class _Compare>
-inline void __unguarded_insertion_sort(_RandomAccessIter __first,
- _RandomAccessIter __last,
- _Compare __comp) {
- __unguarded_insertion_sort_aux(__first, __last, __VALUE_TYPE(__first),
- __comp);
-}
-
-template <class _RandomAccessIter>
-void __final_insertion_sort(_RandomAccessIter __first,
- _RandomAccessIter __last) {
- if (__last - __first > __stl_threshold) {
- __insertion_sort(__first, __first + __stl_threshold);
- __unguarded_insertion_sort(__first + __stl_threshold, __last);
- }
- else
- __insertion_sort(__first, __last);
-}
-
-template <class _RandomAccessIter, class _Compare>
-void __final_insertion_sort(_RandomAccessIter __first,
- _RandomAccessIter __last, _Compare __comp) {
- if (__last - __first > __stl_threshold) {
- __insertion_sort(__first, __first + __stl_threshold, __comp);
- __unguarded_insertion_sort(__first + __stl_threshold, __last, __comp);
- }
- else
- __insertion_sort(__first, __last, __comp);
-}
-
-template <class _Size>
-inline _Size __lg(_Size __n) {
- _Size __k;
- for (__k = 0; __n != 1; __n >>= 1) ++__k;
- return __k;
-}
-
-template <class _RandomAccessIter, class _Tp, class _Size>
-void __introsort_loop(_RandomAccessIter __first,
- _RandomAccessIter __last, _Tp*,
- _Size __depth_limit)
-{
- while (__last - __first > __stl_threshold) {
- if (__depth_limit == 0) {
- partial_sort(__first, __last, __last);
- return;
- }
- --__depth_limit;
- _RandomAccessIter __cut =
- __unguarded_partition(__first, __last,
- _Tp(__median(*__first,
- *(__first + (__last - __first)/2),
- *(__last - 1))));
- __introsort_loop(__cut, __last, (_Tp*) 0, __depth_limit);
- __last = __cut;
- }
-}
-
-template <class _RandomAccessIter, class _Tp, class _Size, class _Compare>
-void __introsort_loop(_RandomAccessIter __first,
- _RandomAccessIter __last, _Tp*,
- _Size __depth_limit, _Compare __comp)
-{
- while (__last - __first > __stl_threshold) {
- if (__depth_limit == 0) {
- partial_sort(__first, __last, __last, __comp);
- return;
- }
- --__depth_limit;
- _RandomAccessIter __cut =
- __unguarded_partition(__first, __last,
- _Tp(__median(*__first,
- *(__first + (__last - __first)/2),
- *(__last - 1), __comp)),
- __comp);
- __introsort_loop(__cut, __last, (_Tp*) 0, __depth_limit, __comp);
- __last = __cut;
- }
-}
-
-template <class _RandomAccessIter>
-inline void sort(_RandomAccessIter __first, _RandomAccessIter __last) {
- if (__first != __last) {
- __introsort_loop(__first, __last,
- __VALUE_TYPE(__first),
- __lg(__last - __first) * 2);
- __final_insertion_sort(__first, __last);
- }
-}
-
-template <class _RandomAccessIter, class _Compare>
-inline void sort(_RandomAccessIter __first, _RandomAccessIter __last,
- _Compare __comp) {
- if (__first != __last) {
- __introsort_loop(__first, __last,
- __VALUE_TYPE(__first),
- __lg(__last - __first) * 2,
- __comp);
- __final_insertion_sort(__first, __last, __comp);
- }
-}
-
-// stable_sort() and its auxiliary functions.
-
-template <class _RandomAccessIter>
-void __inplace_stable_sort(_RandomAccessIter __first,
- _RandomAccessIter __last) {
- if (__last - __first < 15) {
- __insertion_sort(__first, __last);
- return;
- }
- _RandomAccessIter __middle = __first + (__last - __first) / 2;
- __inplace_stable_sort(__first, __middle);
- __inplace_stable_sort(__middle, __last);
- __merge_without_buffer(__first, __middle, __last,
- __middle - __first,
- __last - __middle);
-}
-
-template <class _RandomAccessIter, class _Compare>
-void __inplace_stable_sort(_RandomAccessIter __first,
- _RandomAccessIter __last, _Compare __comp) {
- if (__last - __first < 15) {
- __insertion_sort(__first, __last, __comp);
- return;
- }
- _RandomAccessIter __middle = __first + (__last - __first) / 2;
- __inplace_stable_sort(__first, __middle, __comp);
- __inplace_stable_sort(__middle, __last, __comp);
- __merge_without_buffer(__first, __middle, __last,
- __middle - __first,
- __last - __middle,
- __comp);
-}
-
-template <class _RandomAccessIter1, class _RandomAccessIter2,
- class _Distance>
-void __merge_sort_loop(_RandomAccessIter1 __first,
- _RandomAccessIter1 __last,
- _RandomAccessIter2 __result, _Distance __step_size) {
- _Distance __two_step = 2 * __step_size;
-
- while (__last - __first >= __two_step) {
- __result = merge(__first, __first + __step_size,
- __first + __step_size, __first + __two_step,
- __result);
- __first += __two_step;
- }
-
- __step_size = min(_Distance(__last - __first), __step_size);
- merge(__first, __first + __step_size, __first + __step_size, __last,
- __result);
-}
-
-template <class _RandomAccessIter1, class _RandomAccessIter2,
- class _Distance, class _Compare>
-void __merge_sort_loop(_RandomAccessIter1 __first,
- _RandomAccessIter1 __last,
- _RandomAccessIter2 __result, _Distance __step_size,
- _Compare __comp) {
- _Distance __two_step = 2 * __step_size;
-
- while (__last - __first >= __two_step) {
- __result = merge(__first, __first + __step_size,
- __first + __step_size, __first + __two_step,
- __result,
- __comp);
- __first += __two_step;
- }
- __step_size = min(_Distance(__last - __first), __step_size);
-
- merge(__first, __first + __step_size,
- __first + __step_size, __last,
- __result,
- __comp);
-}
-
-const int __stl_chunk_size = 7;
-
-template <class _RandomAccessIter, class _Distance>
-void __chunk_insertion_sort(_RandomAccessIter __first,
- _RandomAccessIter __last, _Distance __chunk_size)
-{
- while (__last - __first >= __chunk_size) {
- __insertion_sort(__first, __first + __chunk_size);
- __first += __chunk_size;
- }
- __insertion_sort(__first, __last);
-}
-
-template <class _RandomAccessIter, class _Distance, class _Compare>
-void __chunk_insertion_sort(_RandomAccessIter __first,
- _RandomAccessIter __last,
- _Distance __chunk_size, _Compare __comp)
-{
- while (__last - __first >= __chunk_size) {
- __insertion_sort(__first, __first + __chunk_size, __comp);
- __first += __chunk_size;
- }
- __insertion_sort(__first, __last, __comp);
-}
-
-template <class _RandomAccessIter, class _Pointer, class _Distance>
-void __merge_sort_with_buffer(_RandomAccessIter __first,
- _RandomAccessIter __last,
- _Pointer __buffer, _Distance*) {
- _Distance __len = __last - __first;
- _Pointer __buffer_last = __buffer + __len;
-
- _Distance __step_size = __stl_chunk_size;
- __chunk_insertion_sort(__first, __last, __step_size);
-
- while (__step_size < __len) {
- __merge_sort_loop(__first, __last, __buffer, __step_size);
- __step_size *= 2;
- __merge_sort_loop(__buffer, __buffer_last, __first, __step_size);
- __step_size *= 2;
- }
-}
-
-template <class _RandomAccessIter, class _Pointer, class _Distance,
- class _Compare>
-void __merge_sort_with_buffer(_RandomAccessIter __first,
- _RandomAccessIter __last, _Pointer __buffer,
- _Distance*, _Compare __comp) {
- _Distance __len = __last - __first;
- _Pointer __buffer_last = __buffer + __len;
-
- _Distance __step_size = __stl_chunk_size;
- __chunk_insertion_sort(__first, __last, __step_size, __comp);
-
- while (__step_size < __len) {
- __merge_sort_loop(__first, __last, __buffer, __step_size, __comp);
- __step_size *= 2;
- __merge_sort_loop(__buffer, __buffer_last, __first, __step_size, __comp);
- __step_size *= 2;
- }
-}
-
-template <class _RandomAccessIter, class _Pointer, class _Distance>
-void __stable_sort_adaptive(_RandomAccessIter __first,
- _RandomAccessIter __last, _Pointer __buffer,
- _Distance __buffer_size) {
- _Distance __len = (__last - __first + 1) / 2;
- _RandomAccessIter __middle = __first + __len;
- if (__len > __buffer_size) {
- __stable_sort_adaptive(__first, __middle, __buffer, __buffer_size);
- __stable_sort_adaptive(__middle, __last, __buffer, __buffer_size);
- }
- else {
- __merge_sort_with_buffer(__first, __middle, __buffer, (_Distance*)0);
- __merge_sort_with_buffer(__middle, __last, __buffer, (_Distance*)0);
- }
- __merge_adaptive(__first, __middle, __last, _Distance(__middle - __first),
- _Distance(__last - __middle), __buffer, __buffer_size);
-}
-
-template <class _RandomAccessIter, class _Pointer, class _Distance,
- class _Compare>
-void __stable_sort_adaptive(_RandomAccessIter __first,
- _RandomAccessIter __last, _Pointer __buffer,
- _Distance __buffer_size, _Compare __comp) {
- _Distance __len = (__last - __first + 1) / 2;
- _RandomAccessIter __middle = __first + __len;
- if (__len > __buffer_size) {
- __stable_sort_adaptive(__first, __middle, __buffer, __buffer_size,
- __comp);
- __stable_sort_adaptive(__middle, __last, __buffer, __buffer_size,
- __comp);
- }
- else {
- __merge_sort_with_buffer(__first, __middle, __buffer, (_Distance*)0,
- __comp);
- __merge_sort_with_buffer(__middle, __last, __buffer, (_Distance*)0,
- __comp);
- }
- __merge_adaptive(__first, __middle, __last, _Distance(__middle - __first),
- _Distance(__last - __middle), __buffer, __buffer_size,
- __comp);
-}
-
-template <class _RandomAccessIter, class _Tp, class _Distance>
-inline void __stable_sort_aux(_RandomAccessIter __first,
- _RandomAccessIter __last, _Tp*, _Distance*) {
- _Temporary_buffer<_RandomAccessIter, _Tp> buf(__first, __last);
- if (buf.begin() == 0)
- __inplace_stable_sort(__first, __last);
- else
- __stable_sort_adaptive(__first, __last, buf.begin(),
- _Distance(buf.size()));
-}
-
-template <class _RandomAccessIter, class _Tp, class _Distance, class _Compare>
-inline void __stable_sort_aux(_RandomAccessIter __first,
- _RandomAccessIter __last, _Tp*, _Distance*,
- _Compare __comp) {
- _Temporary_buffer<_RandomAccessIter, _Tp> buf(__first, __last);
- if (buf.begin() == 0)
- __inplace_stable_sort(__first, __last, __comp);
- else
- __stable_sort_adaptive(__first, __last, buf.begin(),
- _Distance(buf.size()),
- __comp);
-}
-
-template <class _RandomAccessIter>
-inline void stable_sort(_RandomAccessIter __first,
- _RandomAccessIter __last) {
- __stable_sort_aux(__first, __last,
- __VALUE_TYPE(__first),
- __DISTANCE_TYPE(__first));
-}
-
-template <class _RandomAccessIter, class _Compare>
-inline void stable_sort(_RandomAccessIter __first,
- _RandomAccessIter __last, _Compare __comp) {
- __stable_sort_aux(__first, __last,
- __VALUE_TYPE(__first),
- __DISTANCE_TYPE(__first),
- __comp);
-}
-
-// partial_sort, partial_sort_copy, and auxiliary functions.
-
-template <class _RandomAccessIter, class _Tp>
-void __partial_sort(_RandomAccessIter __first, _RandomAccessIter __middle,
- _RandomAccessIter __last, _Tp*) {
- make_heap(__first, __middle);
- for (_RandomAccessIter __i = __middle; __i < __last; ++__i)
- if (*__i < *__first)
- __pop_heap(__first, __middle, __i, _Tp(*__i),
- __DISTANCE_TYPE(__first));
- sort_heap(__first, __middle);
-}
-
-template <class _RandomAccessIter>
-inline void partial_sort(_RandomAccessIter __first,
- _RandomAccessIter __middle,
- _RandomAccessIter __last) {
- __partial_sort(__first, __middle, __last, __VALUE_TYPE(__first));
-}
-
-template <class _RandomAccessIter, class _Tp, class _Compare>
-void __partial_sort(_RandomAccessIter __first, _RandomAccessIter __middle,
- _RandomAccessIter __last, _Tp*, _Compare __comp) {
- make_heap(__first, __middle, __comp);
- for (_RandomAccessIter __i = __middle; __i < __last; ++__i)
- if (__comp(*__i, *__first))
- __pop_heap(__first, __middle, __i, _Tp(*__i), __comp,
- __DISTANCE_TYPE(__first));
- sort_heap(__first, __middle, __comp);
-}
-
-template <class _RandomAccessIter, class _Compare>
-inline void partial_sort(_RandomAccessIter __first,
- _RandomAccessIter __middle,
- _RandomAccessIter __last, _Compare __comp) {
- __partial_sort(__first, __middle, __last, __VALUE_TYPE(__first), __comp);
-}
-
-template <class _InputIter, class _RandomAccessIter, class _Distance,
- class _Tp>
-_RandomAccessIter __partial_sort_copy(_InputIter __first,
- _InputIter __last,
- _RandomAccessIter __result_first,
- _RandomAccessIter __result_last,
- _Distance*, _Tp*) {
- if (__result_first == __result_last) return __result_last;
- _RandomAccessIter __result_real_last = __result_first;
- while(__first != __last && __result_real_last != __result_last) {
- *__result_real_last = *__first;
- ++__result_real_last;
- ++__first;
- }
- make_heap(__result_first, __result_real_last);
- while (__first != __last) {
- if (*__first < *__result_first)
- __adjust_heap(__result_first, _Distance(0),
- _Distance(__result_real_last - __result_first),
- _Tp(*__first));
- ++__first;
- }
- sort_heap(__result_first, __result_real_last);
- return __result_real_last;
-}
-
-template <class _InputIter, class _RandomAccessIter>
-inline _RandomAccessIter
-partial_sort_copy(_InputIter __first, _InputIter __last,
- _RandomAccessIter __result_first,
- _RandomAccessIter __result_last) {
- return __partial_sort_copy(__first, __last, __result_first, __result_last,
- __DISTANCE_TYPE(__result_first),
- __VALUE_TYPE(__first));
-}
-
-template <class _InputIter, class _RandomAccessIter, class _Compare,
- class _Distance, class _Tp>
-_RandomAccessIter __partial_sort_copy(_InputIter __first,
- _InputIter __last,
- _RandomAccessIter __result_first,
- _RandomAccessIter __result_last,
- _Compare __comp, _Distance*, _Tp*) {
- if (__result_first == __result_last) return __result_last;
- _RandomAccessIter __result_real_last = __result_first;
- while(__first != __last && __result_real_last != __result_last) {
- *__result_real_last = *__first;
- ++__result_real_last;
- ++__first;
- }
- make_heap(__result_first, __result_real_last, __comp);
- while (__first != __last) {
- if (__comp(*__first, *__result_first))
- __adjust_heap(__result_first, _Distance(0),
- _Distance(__result_real_last - __result_first),
- _Tp(*__first),
- __comp);
- ++__first;
- }
- sort_heap(__result_first, __result_real_last, __comp);
- return __result_real_last;
-}
-
-template <class _InputIter, class _RandomAccessIter, class _Compare>
-inline _RandomAccessIter
-partial_sort_copy(_InputIter __first, _InputIter __last,
- _RandomAccessIter __result_first,
- _RandomAccessIter __result_last, _Compare __comp) {
- return __partial_sort_copy(__first, __last, __result_first, __result_last,
- __comp,
- __DISTANCE_TYPE(__result_first),
- __VALUE_TYPE(__first));
-}
-
-// nth_element() and its auxiliary functions.
-
-template <class _RandomAccessIter, class _Tp>
-void __nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
- _RandomAccessIter __last, _Tp*) {
- while (__last - __first > 3) {
- _RandomAccessIter __cut =
- __unguarded_partition(__first, __last,
- _Tp(__median(*__first,
- *(__first + (__last - __first)/2),
- *(__last - 1))));
- if (__cut <= __nth)
- __first = __cut;
- else
- __last = __cut;
- }
- __insertion_sort(__first, __last);
-}
-
-template <class _RandomAccessIter>
-inline void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
- _RandomAccessIter __last) {
- __nth_element(__first, __nth, __last, __VALUE_TYPE(__first));
-}
-
-template <class _RandomAccessIter, class _Tp, class _Compare>
-void __nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
- _RandomAccessIter __last, _Tp*, _Compare __comp) {
- while (__last - __first > 3) {
- _RandomAccessIter __cut =
- __unguarded_partition(__first, __last,
- _Tp(__median(*__first,
- *(__first + (__last - __first)/2),
- *(__last - 1),
- __comp)),
- __comp);
- if (__cut <= __nth)
- __first = __cut;
- else
- __last = __cut;
- }
- __insertion_sort(__first, __last, __comp);
-}
-
-template <class _RandomAccessIter, class _Compare>
-inline void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
- _RandomAccessIter __last, _Compare __comp) {
- __nth_element(__first, __nth, __last, __VALUE_TYPE(__first), __comp);
-}
-
-
-// Binary search (lower_bound, upper_bound, equal_range, binary_search).
-
-template <class _ForwardIter, class _Tp, class _Distance>
-_ForwardIter __lower_bound(_ForwardIter __first, _ForwardIter __last,
- const _Tp& __val, _Distance*)
-{
- _Distance __len = 0;
- distance(__first, __last, __len);
- _Distance __half;
- _ForwardIter __middle;
-
- while (__len > 0) {
- __half = __len >> 1;
- __middle = __first;
- advance(__middle, __half);
- if (*__middle < __val) {
- __first = __middle;
- ++__first;
- __len = __len - __half - 1;
- }
- else
- __len = __half;
- }
- return __first;
-}
-
-template <class _ForwardIter, class _Tp>
-inline _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last,
- const _Tp& __val) {
- return __lower_bound(__first, __last, __val,
- __DISTANCE_TYPE(__first));
-}
-
-template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
-_ForwardIter __lower_bound(_ForwardIter __first, _ForwardIter __last,
- const _Tp& __val, _Compare __comp, _Distance*)
-{
- _Distance __len = 0;
- distance(__first, __last, __len);
- _Distance __half;
- _ForwardIter __middle;
-
- while (__len > 0) {
- __half = __len >> 1;
- __middle = __first;
- advance(__middle, __half);
- if (__comp(*__middle, __val)) {
- __first = __middle;
- ++__first;
- __len = __len - __half - 1;
- }
- else
- __len = __half;
- }
- return __first;
-}
-
-template <class _ForwardIter, class _Tp, class _Compare>
-inline _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last,
- const _Tp& __val, _Compare __comp) {
- return __lower_bound(__first, __last, __val, __comp,
- __DISTANCE_TYPE(__first));
-}
-
-template <class _ForwardIter, class _Tp, class _Distance>
-_ForwardIter __upper_bound(_ForwardIter __first, _ForwardIter __last,
- const _Tp& __val, _Distance*)
-{
- _Distance __len = 0;
- distance(__first, __last, __len);
- _Distance __half;
- _ForwardIter __middle;
-
- while (__len > 0) {
- __half = __len >> 1;
- __middle = __first;
- advance(__middle, __half);
- if (__val < *__middle)
- __len = __half;
- else {
- __first = __middle;
- ++__first;
- __len = __len - __half - 1;
- }
- }
- return __first;
-}
-
-template <class _ForwardIter, class _Tp>
-inline _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last,
- const _Tp& __val) {
- return __upper_bound(__first, __last, __val,
- __DISTANCE_TYPE(__first));
-}
-
-template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
-_ForwardIter __upper_bound(_ForwardIter __first, _ForwardIter __last,
- const _Tp& __val, _Compare __comp, _Distance*)
-{
- _Distance __len = 0;
- distance(__first, __last, __len);
- _Distance __half;
- _ForwardIter __middle;
-
- while (__len > 0) {
- __half = __len >> 1;
- __middle = __first;
- advance(__middle, __half);
- if (__comp(__val, *__middle))
- __len = __half;
- else {
- __first = __middle;
- ++__first;
- __len = __len - __half - 1;
- }
- }
- return __first;
-}
-
-template <class _ForwardIter, class _Tp, class _Compare>
-inline _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last,
- const _Tp& __val, _Compare __comp) {
- return __upper_bound(__first, __last, __val, __comp,
- __DISTANCE_TYPE(__first));
-}
-
-template <class _ForwardIter, class _Tp, class _Distance>
-pair<_ForwardIter, _ForwardIter>
-__equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val,
- _Distance*)
-{
- _Distance __len = 0;
- distance(__first, __last, __len);
- _Distance __half;
- _ForwardIter __middle, __left, __right;
-
- while (__len > 0) {
- __half = __len >> 1;
- __middle = __first;
- advance(__middle, __half);
- if (*__middle < __val) {
- __first = __middle;
- ++__first;
- __len = __len - __half - 1;
- }
- else if (__val < *__middle)
- __len = __half;
- else {
- __left = lower_bound(__first, __middle, __val);
- advance(__first, __len);
- __right = upper_bound(++__middle, __first, __val);
- return pair<_ForwardIter, _ForwardIter>(__left, __right);
- }
- }
- return pair<_ForwardIter, _ForwardIter>(__first, __first);
-}
-
-template <class _ForwardIter, class _Tp>
-inline pair<_ForwardIter, _ForwardIter>
-equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) {
- return __equal_range(__first, __last, __val,
- __DISTANCE_TYPE(__first));
-}
-
-template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
-pair<_ForwardIter, _ForwardIter>
-__equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val,
- _Compare __comp, _Distance*)
-{
- _Distance __len = 0;
- distance(__first, __last, __len);
- _Distance __half;
- _ForwardIter __middle, __left, __right;
-
- while (__len > 0) {
- __half = __len >> 1;
- __middle = __first;
- advance(__middle, __half);
- if (__comp(*__middle, __val)) {
- __first = __middle;
- ++__first;
- __len = __len - __half - 1;
- }
- else if (__comp(__val, *__middle))
- __len = __half;
- else {
- __left = lower_bound(__first, __middle, __val, __comp);
- advance(__first, __len);
- __right = upper_bound(++__middle, __first, __val, __comp);
- return pair<_ForwardIter, _ForwardIter>(__left, __right);
- }
- }
- return pair<_ForwardIter, _ForwardIter>(__first, __first);
-}
-
-template <class _ForwardIter, class _Tp, class _Compare>
-inline pair<_ForwardIter, _ForwardIter>
-equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val,
- _Compare __comp) {
- return __equal_range(__first, __last, __val, __comp,
- __DISTANCE_TYPE(__first));
-}
-
-template <class _ForwardIter, class _Tp>
-bool binary_search(_ForwardIter __first, _ForwardIter __last,
- const _Tp& __val) {
- _ForwardIter __i = lower_bound(__first, __last, __val);
- return __i != __last && !(__val < *__i);
-}
-
-template <class _ForwardIter, class _Tp, class _Compare>
-bool binary_search(_ForwardIter __first, _ForwardIter __last,
- const _Tp& __val,
- _Compare __comp) {
- _ForwardIter __i = lower_bound(__first, __last, __val, __comp);
- return __i != __last && !__comp(__val, *__i);
-}
-
-// merge, with and without an explicitly supplied comparison function.
-
-template <class _InputIter1, class _InputIter2, class _OutputIter>
-_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2,
- _OutputIter __result) {
- while (__first1 != __last1 && __first2 != __last2) {
- if (*__first2 < *__first1) {
- *__result = *__first2;
- ++__first2;
- }
- else {
- *__result = *__first1;
- ++__first1;
- }
- ++__result;
- }
- return copy(__first2, __last2, copy(__first1, __last1, __result));
-}
-
-template <class _InputIter1, class _InputIter2, class _OutputIter,
- class _Compare>
-_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2,
- _OutputIter __result, _Compare __comp) {
- while (__first1 != __last1 && __first2 != __last2) {
- if (__comp(*__first2, *__first1)) {
- *__result = *__first2;
- ++__first2;
- }
- else {
- *__result = *__first1;
- ++__first1;
- }
- ++__result;
- }
- return copy(__first2, __last2, copy(__first1, __last1, __result));
-}
-
-// inplace_merge and its auxiliary functions.
-
-template <class _BidirectionalIter, class _Distance>
-void __merge_without_buffer(_BidirectionalIter __first,
- _BidirectionalIter __middle,
- _BidirectionalIter __last,
- _Distance __len1, _Distance __len2) {
- if (__len1 == 0 || __len2 == 0)
- return;
- if (__len1 + __len2 == 2) {
- if (*__middle < *__first)
- iter_swap(__first, __middle);
- return;
- }
- _BidirectionalIter __first_cut = __first;
- _BidirectionalIter __second_cut = __middle;
- _Distance __len11 = 0;
- _Distance __len22 = 0;
- if (__len1 > __len2) {
- __len11 = __len1 / 2;
- advance(__first_cut, __len11);
- __second_cut = lower_bound(__middle, __last, *__first_cut);
- distance(__middle, __second_cut, __len22);
- }
- else {
- __len22 = __len2 / 2;
- advance(__second_cut, __len22);
- __first_cut = upper_bound(__first, __middle, *__second_cut);
- distance(__first, __first_cut, __len11);
- }
- _BidirectionalIter __new_middle
- = rotate(__first_cut, __middle, __second_cut);
- __merge_without_buffer(__first, __first_cut, __new_middle,
- __len11, __len22);
- __merge_without_buffer(__new_middle, __second_cut, __last, __len1 - __len11,
- __len2 - __len22);
-}
-
-template <class _BidirectionalIter, class _Distance, class _Compare>
-void __merge_without_buffer(_BidirectionalIter __first,
- _BidirectionalIter __middle,
- _BidirectionalIter __last,
- _Distance __len1, _Distance __len2,
- _Compare __comp) {
- if (__len1 == 0 || __len2 == 0)
- return;
- if (__len1 + __len2 == 2) {
- if (__comp(*__middle, *__first))
- iter_swap(__first, __middle);
- return;
- }
- _BidirectionalIter __first_cut = __first;
- _BidirectionalIter __second_cut = __middle;
- _Distance __len11 = 0;
- _Distance __len22 = 0;
- if (__len1 > __len2) {
- __len11 = __len1 / 2;
- advance(__first_cut, __len11);
- __second_cut = lower_bound(__middle, __last, *__first_cut, __comp);
- distance(__middle, __second_cut, __len22);
- }
- else {
- __len22 = __len2 / 2;
- advance(__second_cut, __len22);
- __first_cut = upper_bound(__first, __middle, *__second_cut, __comp);
- distance(__first, __first_cut, __len11);
- }
- _BidirectionalIter __new_middle
- = rotate(__first_cut, __middle, __second_cut);
- __merge_without_buffer(__first, __first_cut, __new_middle, __len11, __len22,
- __comp);
- __merge_without_buffer(__new_middle, __second_cut, __last, __len1 - __len11,
- __len2 - __len22, __comp);
-}
-
-template <class _BidirectionalIter1, class _BidirectionalIter2,
- class _Distance>
-_BidirectionalIter1 __rotate_adaptive(_BidirectionalIter1 __first,
- _BidirectionalIter1 __middle,
- _BidirectionalIter1 __last,
- _Distance __len1, _Distance __len2,
- _BidirectionalIter2 __buffer,
- _Distance __buffer_size) {
- _BidirectionalIter2 __buffer_end;
- if (__len1 > __len2 && __len2 <= __buffer_size) {
- __buffer_end = copy(__middle, __last, __buffer);
- copy_backward(__first, __middle, __last);
- return copy(__buffer, __buffer_end, __first);
- }
- else if (__len1 <= __buffer_size) {
- __buffer_end = copy(__first, __middle, __buffer);
- copy(__middle, __last, __first);
- return copy_backward(__buffer, __buffer_end, __last);
- }
- else
- return rotate(__first, __middle, __last);
-}
-
-template <class _BidirectionalIter1, class _BidirectionalIter2,
- class _BidirectionalIter3>
-_BidirectionalIter3 __merge_backward(_BidirectionalIter1 __first1,
- _BidirectionalIter1 __last1,
- _BidirectionalIter2 __first2,
- _BidirectionalIter2 __last2,
- _BidirectionalIter3 __result) {
- if (__first1 == __last1)
- return copy_backward(__first2, __last2, __result);
- if (__first2 == __last2)
- return copy_backward(__first1, __last1, __result);
- --__last1;
- --__last2;
- while (true) {
- if (*__last2 < *__last1) {
- *--__result = *__last1;
- if (__first1 == __last1)
- return copy_backward(__first2, ++__last2, __result);
- --__last1;
- }
- else {
- *--__result = *__last2;
- if (__first2 == __last2)
- return copy_backward(__first1, ++__last1, __result);
- --__last2;
- }
- }
-}
-
-template <class _BidirectionalIter1, class _BidirectionalIter2,
- class _BidirectionalIter3, class _Compare>
-_BidirectionalIter3 __merge_backward(_BidirectionalIter1 __first1,
- _BidirectionalIter1 __last1,
- _BidirectionalIter2 __first2,
- _BidirectionalIter2 __last2,
- _BidirectionalIter3 __result,
- _Compare __comp) {
- if (__first1 == __last1)
- return copy_backward(__first2, __last2, __result);
- if (__first2 == __last2)
- return copy_backward(__first1, __last1, __result);
- --__last1;
- --__last2;
- while (true) {
- if (__comp(*__last2, *__last1)) {
- *--__result = *__last1;
- if (__first1 == __last1)
- return copy_backward(__first2, ++__last2, __result);
- --__last1;
- }
- else {
- *--__result = *__last2;
- if (__first2 == __last2)
- return copy_backward(__first1, ++__last1, __result);
- --__last2;
- }
- }
-}
-
-template <class _BidirectionalIter, class _Distance, class _Pointer>
-void __merge_adaptive(_BidirectionalIter __first,
- _BidirectionalIter __middle,
- _BidirectionalIter __last,
- _Distance __len1, _Distance __len2,
- _Pointer __buffer, _Distance __buffer_size) {
- if (__len1 <= __len2 && __len1 <= __buffer_size) {
- _Pointer __buffer_end = copy(__first, __middle, __buffer);
- merge(__buffer, __buffer_end, __middle, __last, __first);
- }
- else if (__len2 <= __buffer_size) {
- _Pointer __buffer_end = copy(__middle, __last, __buffer);
- __merge_backward(__first, __middle, __buffer, __buffer_end, __last);
- }
- else {
- _BidirectionalIter __first_cut = __first;
- _BidirectionalIter __second_cut = __middle;
- _Distance __len11 = 0;
- _Distance __len22 = 0;
- if (__len1 > __len2) {
- __len11 = __len1 / 2;
- advance(__first_cut, __len11);
- __second_cut = lower_bound(__middle, __last, *__first_cut);
- distance(__middle, __second_cut, __len22);
- }
- else {
- __len22 = __len2 / 2;
- advance(__second_cut, __len22);
- __first_cut = upper_bound(__first, __middle, *__second_cut);
- distance(__first, __first_cut, __len11);
- }
- _BidirectionalIter __new_middle =
- __rotate_adaptive(__first_cut, __middle, __second_cut, __len1 - __len11,
- __len22, __buffer, __buffer_size);
- __merge_adaptive(__first, __first_cut, __new_middle, __len11,
- __len22, __buffer, __buffer_size);
- __merge_adaptive(__new_middle, __second_cut, __last, __len1 - __len11,
- __len2 - __len22, __buffer, __buffer_size);
- }
-}
-
-template <class _BidirectionalIter, class _Distance, class _Pointer,
- class _Compare>
-void __merge_adaptive(_BidirectionalIter __first,
- _BidirectionalIter __middle,
- _BidirectionalIter __last,
- _Distance __len1, _Distance __len2,
- _Pointer __buffer, _Distance __buffer_size,
- _Compare __comp) {
- if (__len1 <= __len2 && __len1 <= __buffer_size) {
- _Pointer __buffer_end = copy(__first, __middle, __buffer);
- merge(__buffer, __buffer_end, __middle, __last, __first, __comp);
- }
- else if (__len2 <= __buffer_size) {
- _Pointer __buffer_end = copy(__middle, __last, __buffer);
- __merge_backward(__first, __middle, __buffer, __buffer_end, __last,
- __comp);
- }
- else {
- _BidirectionalIter __first_cut = __first;
- _BidirectionalIter __second_cut = __middle;
- _Distance __len11 = 0;
- _Distance __len22 = 0;
- if (__len1 > __len2) {
- __len11 = __len1 / 2;
- advance(__first_cut, __len11);
- __second_cut = lower_bound(__middle, __last, *__first_cut, __comp);
- distance(__middle, __second_cut, __len22);
- }
- else {
- __len22 = __len2 / 2;
- advance(__second_cut, __len22);
- __first_cut = upper_bound(__first, __middle, *__second_cut, __comp);
- distance(__first, __first_cut, __len11);
- }
- _BidirectionalIter __new_middle =
- __rotate_adaptive(__first_cut, __middle, __second_cut, __len1 - __len11,
- __len22, __buffer, __buffer_size);
- __merge_adaptive(__first, __first_cut, __new_middle, __len11,
- __len22, __buffer, __buffer_size, __comp);
- __merge_adaptive(__new_middle, __second_cut, __last, __len1 - __len11,
- __len2 - __len22, __buffer, __buffer_size, __comp);
- }
-}
-
-template <class _BidirectionalIter, class _Tp, class _Distance>
-inline void __inplace_merge_aux(_BidirectionalIter __first,
- _BidirectionalIter __middle,
- _BidirectionalIter __last, _Tp*, _Distance*) {
- _Distance __len1 = 0;
- distance(__first, __middle, __len1);
- _Distance __len2 = 0;
- distance(__middle, __last, __len2);
-
- _Temporary_buffer<_BidirectionalIter, _Tp> __buf(__first, __last);
- if (__buf.begin() == 0)
- __merge_without_buffer(__first, __middle, __last, __len1, __len2);
- else
- __merge_adaptive(__first, __middle, __last, __len1, __len2,
- __buf.begin(), _Distance(__buf.size()));
-}
-
-template <class _BidirectionalIter, class _Tp,
- class _Distance, class _Compare>
-inline void __inplace_merge_aux(_BidirectionalIter __first,
- _BidirectionalIter __middle,
- _BidirectionalIter __last, _Tp*, _Distance*,
- _Compare __comp) {
- _Distance __len1 = 0;
- distance(__first, __middle, __len1);
- _Distance __len2 = 0;
- distance(__middle, __last, __len2);
-
- _Temporary_buffer<_BidirectionalIter, _Tp> __buf(__first, __last);
- if (__buf.begin() == 0)
- __merge_without_buffer(__first, __middle, __last, __len1, __len2, __comp);
- else
- __merge_adaptive(__first, __middle, __last, __len1, __len2,
- __buf.begin(), _Distance(__buf.size()),
- __comp);
-}
-
-template <class _BidirectionalIter>
-inline void inplace_merge(_BidirectionalIter __first,
- _BidirectionalIter __middle,
- _BidirectionalIter __last) {
- if (__first == __middle || __middle == __last)
- return;
- __inplace_merge_aux(__first, __middle, __last,
- __VALUE_TYPE(__first), __DISTANCE_TYPE(__first));
-}
-
-template <class _BidirectionalIter, class _Compare>
-inline void inplace_merge(_BidirectionalIter __first,
- _BidirectionalIter __middle,
- _BidirectionalIter __last, _Compare __comp) {
- if (__first == __middle || __middle == __last)
- return;
- __inplace_merge_aux(__first, __middle, __last,
- __VALUE_TYPE(__first), __DISTANCE_TYPE(__first),
- __comp);
-}
-
-// Set algorithms: includes, set_union, set_intersection, set_difference,
-// set_symmetric_difference. All of these algorithms have the precondition
-// that their input ranges are sorted and the postcondition that their output
-// ranges are sorted.
-
-template <class _InputIter1, class _InputIter2>
-bool includes(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2) {
- while (__first1 != __last1 && __first2 != __last2)
- if (*__first2 < *__first1)
- return false;
- else if(*__first1 < *__first2)
- ++__first1;
- else
- ++__first1, ++__first2;
-
- return __first2 == __last2;
-}
-
-template <class _InputIter1, class _InputIter2, class _Compare>
-bool includes(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2, _Compare __comp) {
- while (__first1 != __last1 && __first2 != __last2)
- if (__comp(*__first2, *__first1))
- return false;
- else if(__comp(*__first1, *__first2))
- ++__first1;
- else
- ++__first1, ++__first2;
-
- return __first2 == __last2;
-}
-
-template <class _InputIter1, class _InputIter2, class _OutputIter>
-_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2,
- _OutputIter __result) {
- while (__first1 != __last1 && __first2 != __last2) {
- if (*__first1 < *__first2) {
- *__result = *__first1;
- ++__first1;
- }
- else if (*__first2 < *__first1) {
- *__result = *__first2;
- ++__first2;
- }
- else {
- *__result = *__first1;
- ++__first1;
- ++__first2;
- }
- ++__result;
- }
- return copy(__first2, __last2, copy(__first1, __last1, __result));
-}
-
-template <class _InputIter1, class _InputIter2, class _OutputIter,
- class _Compare>
-_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2,
- _OutputIter __result, _Compare __comp) {
- while (__first1 != __last1 && __first2 != __last2) {
- if (__comp(*__first1, *__first2)) {
- *__result = *__first1;
- ++__first1;
- }
- else if (__comp(*__first2, *__first1)) {
- *__result = *__first2;
- ++__first2;
- }
- else {
- *__result = *__first1;
- ++__first1;
- ++__first2;
- }
- ++__result;
- }
- return copy(__first2, __last2, copy(__first1, __last1, __result));
-}
-
-template <class _InputIter1, class _InputIter2, class _OutputIter>
-_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2,
- _OutputIter __result) {
- while (__first1 != __last1 && __first2 != __last2)
- if (*__first1 < *__first2)
- ++__first1;
- else if (*__first2 < *__first1)
- ++__first2;
- else {
- *__result = *__first1;
- ++__first1;
- ++__first2;
- ++__result;
- }
- return __result;
-}
-
-template <class _InputIter1, class _InputIter2, class _OutputIter,
- class _Compare>
-_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2,
- _OutputIter __result, _Compare __comp) {
- while (__first1 != __last1 && __first2 != __last2)
- if (__comp(*__first1, *__first2))
- ++__first1;
- else if (__comp(*__first2, *__first1))
- ++__first2;
- else {
- *__result = *__first1;
- ++__first1;
- ++__first2;
- ++__result;
- }
- return __result;
-}
-
-template <class _InputIter1, class _InputIter2, class _OutputIter>
-_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2,
- _OutputIter __result) {
- while (__first1 != __last1 && __first2 != __last2)
- if (*__first1 < *__first2) {
- *__result = *__first1;
- ++__first1;
- ++__result;
- }
- else if (*__first2 < *__first1)
- ++__first2;
- else {
- ++__first1;
- ++__first2;
- }
- return copy(__first1, __last1, __result);
-}
-
-template <class _InputIter1, class _InputIter2, class _OutputIter,
- class _Compare>
-_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2,
- _OutputIter __result, _Compare __comp) {
- while (__first1 != __last1 && __first2 != __last2)
- if (__comp(*__first1, *__first2)) {
- *__result = *__first1;
- ++__first1;
- ++__result;
- }
- else if (__comp(*__first2, *__first1))
- ++__first2;
- else {
- ++__first1;
- ++__first2;
- }
- return copy(__first1, __last1, __result);
-}
-
-template <class _InputIter1, class _InputIter2, class _OutputIter>
-_OutputIter
-set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2,
- _OutputIter __result) {
- while (__first1 != __last1 && __first2 != __last2)
- if (*__first1 < *__first2) {
- *__result = *__first1;
- ++__first1;
- ++__result;
- }
- else if (*__first2 < *__first1) {
- *__result = *__first2;
- ++__first2;
- ++__result;
- }
- else {
- ++__first1;
- ++__first2;
- }
- return copy(__first2, __last2, copy(__first1, __last1, __result));
-}
-
-template <class _InputIter1, class _InputIter2, class _OutputIter,
- class _Compare>
-_OutputIter
-set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2,
- _OutputIter __result,
- _Compare __comp) {
- while (__first1 != __last1 && __first2 != __last2)
- if (__comp(*__first1, *__first2)) {
- *__result = *__first1;
- ++__first1;
- ++__result;
- }
- else if (__comp(*__first2, *__first1)) {
- *__result = *__first2;
- ++__first2;
- ++__result;
- }
- else {
- ++__first1;
- ++__first2;
- }
- return copy(__first2, __last2, copy(__first1, __last1, __result));
-}
-
-// min_element and max_element, with and without an explicitly supplied
-// comparison function.
-
-template <class _ForwardIter>
-_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last) {
- if (__first == __last) return __first;
- _ForwardIter __result = __first;
- while (++__first != __last)
- if (*__result < *__first)
- __result = __first;
- return __result;
-}
-
-template <class _ForwardIter, class _Compare>
-_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last,
- _Compare __comp) {
- if (__first == __last) return __first;
- _ForwardIter __result = __first;
- while (++__first != __last)
- if (__comp(*__result, *__first)) __result = __first;
- return __result;
-}
-
-template <class _ForwardIter>
-_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last) {
- if (__first == __last) return __first;
- _ForwardIter __result = __first;
- while (++__first != __last)
- if (*__first < *__result)
- __result = __first;
- return __result;
-}
-
-template <class _ForwardIter, class _Compare>
-_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last,
- _Compare __comp) {
- if (__first == __last) return __first;
- _ForwardIter __result = __first;
- while (++__first != __last)
- if (__comp(*__first, *__result))
- __result = __first;
- return __result;
-}
-
-// next_permutation and prev_permutation, with and without an explicitly
-// supplied comparison function.
-
-template <class _BidirectionalIter>
-bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last) {
- if (__first == __last)
- return false;
- _BidirectionalIter __i = __first;
- ++__i;
- if (__i == __last)
- return false;
- __i = __last;
- --__i;
-
- for(;;) {
- _BidirectionalIter __ii = __i;
- --__i;
- if (*__i < *__ii) {
- _BidirectionalIter __j = __last;
- while (!(*__i < *--__j))
- {}
- iter_swap(__i, __j);
- reverse(__ii, __last);
- return true;
- }
- if (__i == __first) {
- reverse(__first, __last);
- return false;
- }
- }
-}
-
-template <class _BidirectionalIter, class _Compare>
-bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
- _Compare __comp) {
- if (__first == __last)
- return false;
- _BidirectionalIter __i = __first;
- ++__i;
- if (__i == __last)
- return false;
- __i = __last;
- --__i;
-
- for(;;) {
- _BidirectionalIter __ii = __i;
- --__i;
- if (__comp(*__i, *__ii)) {
- _BidirectionalIter __j = __last;
- while (!__comp(*__i, *--__j))
- {}
- iter_swap(__i, __j);
- reverse(__ii, __last);
- return true;
- }
- if (__i == __first) {
- reverse(__first, __last);
- return false;
- }
- }
-}
-
-template <class _BidirectionalIter>
-bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last) {
- if (__first == __last)
- return false;
- _BidirectionalIter __i = __first;
- ++__i;
- if (__i == __last)
- return false;
- __i = __last;
- --__i;
-
- for(;;) {
- _BidirectionalIter __ii = __i;
- --__i;
- if (*__ii < *__i) {
- _BidirectionalIter __j = __last;
- while (!(*--__j < *__i))
- {}
- iter_swap(__i, __j);
- reverse(__ii, __last);
- return true;
- }
- if (__i == __first) {
- reverse(__first, __last);
- return false;
- }
- }
-}
-
-template <class _BidirectionalIter, class _Compare>
-bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
- _Compare __comp) {
- if (__first == __last)
- return false;
- _BidirectionalIter __i = __first;
- ++__i;
- if (__i == __last)
- return false;
- __i = __last;
- --__i;
-
- for(;;) {
- _BidirectionalIter __ii = __i;
- --__i;
- if (__comp(*__ii, *__i)) {
- _BidirectionalIter __j = __last;
- while (!__comp(*--__j, *__i))
- {}
- iter_swap(__i, __j);
- reverse(__ii, __last);
- return true;
- }
- if (__i == __first) {
- reverse(__first, __last);
- return false;
- }
- }
-}
-
-// find_first_of, with and without an explicitly supplied comparison function.
-
-template <class _InputIter, class _ForwardIter>
-_InputIter find_first_of(_InputIter __first1, _InputIter __last1,
- _ForwardIter __first2, _ForwardIter __last2)
-{
- for ( ; __first1 != __last1; ++__first1)
- for (_ForwardIter __iter = __first2; __iter != __last2; ++__iter)
- if (*__first1 == *__iter)
- return __first1;
- return __last1;
-}
-
-template <class _InputIter, class _ForwardIter, class _BinaryPredicate>
-_InputIter find_first_of(_InputIter __first1, _InputIter __last1,
- _ForwardIter __first2, _ForwardIter __last2,
- _BinaryPredicate __comp)
-{
- for ( ; __first1 != __last1; ++__first1)
- for (_ForwardIter __iter = __first2; __iter != __last2; ++__iter)
- if (__comp(*__first1, *__iter))
- return __first1;
- return __last1;
-}
-
-
-// find_end, with and without an explicitly supplied comparison function.
-// Search [first2, last2) as a subsequence in [first1, last1), and return
-// the *last* possible match. Note that find_end for bidirectional iterators
-// is much faster than for forward iterators.
-
-// find_end for forward iterators.
-template <class _ForwardIter1, class _ForwardIter2>
-_ForwardIter1 __find_end(_ForwardIter1 __first1, _ForwardIter1 __last1,
- _ForwardIter2 __first2, _ForwardIter2 __last2,
- forward_iterator_tag, forward_iterator_tag)
-{
- if (__first2 == __last2)
- return __last1;
- else {
- _ForwardIter1 __result = __last1;
- while (1) {
- _ForwardIter1 __new_result
- = search(__first1, __last1, __first2, __last2);
- if (__new_result == __last1)
- return __result;
- else {
- __result = __new_result;
- __first1 = __new_result;
- ++__first1;
- }
- }
- }
-}
-
-template <class _ForwardIter1, class _ForwardIter2,
- class _BinaryPredicate>
-_ForwardIter1 __find_end(_ForwardIter1 __first1, _ForwardIter1 __last1,
- _ForwardIter2 __first2, _ForwardIter2 __last2,
- forward_iterator_tag, forward_iterator_tag,
- _BinaryPredicate __comp)
-{
- if (__first2 == __last2)
- return __last1;
- else {
- _ForwardIter1 __result = __last1;
- while (1) {
- _ForwardIter1 __new_result
- = search(__first1, __last1, __first2, __last2, __comp);
- if (__new_result == __last1)
- return __result;
- else {
- __result = __new_result;
- __first1 = __new_result;
- ++__first1;
- }
- }
- }
-}
-
-// find_end for bidirectional iterators. Requires partial specialization.
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _BidirectionalIter1, class _BidirectionalIter2>
-_BidirectionalIter1
-__find_end(_BidirectionalIter1 __first1, _BidirectionalIter1 __last1,
- _BidirectionalIter2 __first2, _BidirectionalIter2 __last2,
- bidirectional_iterator_tag, bidirectional_iterator_tag)
-{
- typedef reverse_iterator<_BidirectionalIter1> _RevIter1;
- typedef reverse_iterator<_BidirectionalIter2> _RevIter2;
-
- _RevIter1 __rlast1(__first1);
- _RevIter2 __rlast2(__first2);
- _RevIter1 __rresult = search(_RevIter1(__last1), __rlast1,
- _RevIter2(__last2), __rlast2);
-
- if (__rresult == __rlast1)
- return __last1;
- else {
- _BidirectionalIter1 __result = __rresult.base();
- advance(__result, -distance(__first2, __last2));
- return __result;
- }
-}
-
-template <class _BidirectionalIter1, class _BidirectionalIter2,
- class _BinaryPredicate>
-_BidirectionalIter1
-__find_end(_BidirectionalIter1 __first1, _BidirectionalIter1 __last1,
- _BidirectionalIter2 __first2, _BidirectionalIter2 __last2,
- bidirectional_iterator_tag, bidirectional_iterator_tag,
- _BinaryPredicate __comp)
-{
- typedef reverse_iterator<_BidirectionalIter1> _RevIter1;
- typedef reverse_iterator<_BidirectionalIter2> _RevIter2;
-
- _RevIter1 __rlast1(__first1);
- _RevIter2 __rlast2(__first2);
- _RevIter1 __rresult = search(_RevIter1(__last1), __rlast1,
- _RevIter2(__last2), __rlast2,
- __comp);
-
- if (__rresult == __rlast1)
- return __last1;
- else {
- _BidirectionalIter1 __result = __rresult.base();
- advance(__result, -distance(__first2, __last2));
- return __result;
- }
-}
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-// Dispatching functions for find_end.
-
-template <class _ForwardIter1, class _ForwardIter2>
-inline _ForwardIter1
-find_end(_ForwardIter1 __first1, _ForwardIter1 __last1,
- _ForwardIter2 __first2, _ForwardIter2 __last2)
-{
- return __find_end(__first1, __last1, __first2, __last2,
- __ITERATOR_CATEGORY(__first1),
- __ITERATOR_CATEGORY(__first2));
-}
-
-template <class _ForwardIter1, class _ForwardIter2,
- class _BinaryPredicate>
-inline _ForwardIter1
-find_end(_ForwardIter1 __first1, _ForwardIter1 __last1,
- _ForwardIter2 __first2, _ForwardIter2 __last2,
- _BinaryPredicate __comp)
-{
- return __find_end(__first1, __last1, __first2, __last2,
- __ITERATOR_CATEGORY(__first1),
- __ITERATOR_CATEGORY(__first2),
- __comp);
-}
-
-// is_heap, a predicate testing whether or not a range is
-// a heap. This function is an extension, not part of the C++
-// standard.
-
-template <class _RandomAccessIter, class _Distance>
-bool __is_heap(_RandomAccessIter __first, _Distance __n)
-{
- _Distance __parent = 0;
- for (_Distance __child = 1; __child < __n; ++__child) {
- if (__first[__parent] < __first[__child])
- return false;
- if ((__child & 1) == 0)
- ++__parent;
- }
- return true;
-}
-
-template <class _RandomAccessIter, class _Distance, class _StrictWeakOrdering>
-bool __is_heap(_RandomAccessIter __first, _StrictWeakOrdering __comp,
- _Distance __n)
-{
- _Distance __parent = 0;
- for (_Distance __child = 1; __child < __n; ++__child) {
- if (__comp(__first[__parent], __first[__child]))
- return false;
- if ((__child & 1) == 0)
- ++__parent;
- }
- return true;
-}
-
-template <class _RandomAccessIter>
-inline bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last)
-{
- return __is_heap(__first, __last - __first);
-}
-
-
-template <class _RandomAccessIter, class _StrictWeakOrdering>
-inline bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last,
- _StrictWeakOrdering __comp)
-{
- return __is_heap(__first, __comp, __last - __first);
-}
-
-// is_sorted, a predicated testing whether a range is sorted in
-// nondescending order. This is an extension, not part of the C++
-// standard.
-
-template <class _ForwardIter>
-bool is_sorted(_ForwardIter __first, _ForwardIter __last)
-{
- if (__first == __last)
- return true;
-
- _ForwardIter __next = __first;
- for (++__next; __next != __last; __first = __next, ++__next) {
- if (*__next < *__first)
- return false;
- }
-
- return true;
-}
-
-template <class _ForwardIter, class _StrictWeakOrdering>
-bool is_sorted(_ForwardIter __first, _ForwardIter __last,
- _StrictWeakOrdering __comp)
-{
- if (__first == __last)
- return true;
-
- _ForwardIter __next = __first;
- for (++__next; __next != __last; __first = __next, ++__next) {
- if (__comp(*__next, *__first))
- return false;
- }
-
- return true;
-}
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1209
-#endif
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_ALGO_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_algobase.h b/contrib/libstdc++/stl/stl_algobase.h
deleted file mode 100644
index 15e535f..0000000
--- a/contrib/libstdc++/stl/stl_algobase.h
+++ /dev/null
@@ -1,526 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996-1998
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-
-#ifndef __SGI_STL_INTERNAL_ALGOBASE_H
-#define __SGI_STL_INTERNAL_ALGOBASE_H
-
-#ifndef __STL_CONFIG_H
-#include <stl_config.h>
-#endif
-#ifndef __SGI_STL_INTERNAL_RELOPS
-#include <stl_relops.h>
-#endif
-#ifndef __SGI_STL_INTERNAL_PAIR_H
-#include <stl_pair.h>
-#endif
-#ifndef __TYPE_TRAITS_H_
-#include <type_traits.h>
-#endif
-
-#include <string.h>
-#include <limits.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <new.h>
-#include <iostream.h>
-
-#ifndef __SGI_STL_INTERNAL_ITERATOR_H
-#include <stl_iterator.h>
-#endif
-
-__STL_BEGIN_NAMESPACE
-
-// swap and iter_swap
-
-template <class _ForwardIter1, class _ForwardIter2, class _Tp>
-inline void __iter_swap(_ForwardIter1 __a, _ForwardIter2 __b, _Tp*) {
- _Tp __tmp = *__a;
- *__a = *__b;
- *__b = __tmp;
-}
-
-template <class _ForwardIter1, class _ForwardIter2>
-inline void iter_swap(_ForwardIter1 __a, _ForwardIter2 __b) {
- __iter_swap(__a, __b, __VALUE_TYPE(__a));
-}
-
-template <class _Tp>
-inline void swap(_Tp& __a, _Tp& __b) {
- _Tp __tmp = __a;
- __a = __b;
- __b = __tmp;
-}
-
-//--------------------------------------------------
-// min and max
-
-#ifndef __BORLANDC__
-
-#undef min
-#undef max
-
-template <class _Tp>
-inline const _Tp& min(const _Tp& __a, const _Tp& __b) {
- return __b < __a ? __b : __a;
-}
-
-template <class _Tp>
-inline const _Tp& max(const _Tp& __a, const _Tp& __b) {
- return __a < __b ? __b : __a;
-}
-
-#endif /* __BORLANDC__ */
-
-template <class _Tp, class _Compare>
-inline const _Tp& min(const _Tp& __a, const _Tp& __b, _Compare __comp) {
- return __comp(__b, __a) ? __b : __a;
-}
-
-template <class _Tp, class _Compare>
-inline const _Tp& max(const _Tp& __a, const _Tp& __b, _Compare __comp) {
- return __comp(__a, __b) ? __b : __a;
-}
-
-//--------------------------------------------------
-// copy
-
-// All of these auxiliary functions serve two purposes. (1) Replace
-// calls to copy with memmove whenever possible. (Memmove, not memcpy,
-// because the input and output ranges are permitted to overlap.)
-// (2) If we're using random access iterators, then write the loop as
-// a for loop with an explicit count. The auxiliary class __copy_dispatch
-// is a workaround for compilers that don't support partial ordering of
-// function templates.
-
-template <class _InputIter, class _OutputIter, class _Distance>
-inline _OutputIter __copy(_InputIter __first, _InputIter __last,
- _OutputIter __result,
- input_iterator_tag, _Distance*)
-{
- for ( ; __first != __last; ++__result, ++__first)
- *__result = *__first;
- return __result;
-}
-
-template <class _RandomAccessIter, class _OutputIter, class _Distance>
-inline _OutputIter
-__copy(_RandomAccessIter __first, _RandomAccessIter __last,
- _OutputIter __result, random_access_iterator_tag, _Distance*)
-{
- for (_Distance __n = __last - __first; __n > 0; --__n) {
- *__result = *__first;
- ++__first;
- ++__result;
- }
- return __result;
-}
-
-template <class _Tp>
-inline _Tp*
-__copy_trivial(const _Tp* __first, const _Tp* __last, _Tp* __result) {
- memmove(__result, __first, sizeof(_Tp) * (__last - __first));
- return __result + (__last - __first);
-}
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _InputIter, class _OutputIter, class _BoolType>
-struct __copy_dispatch {
- static _OutputIter copy(_InputIter __first, _InputIter __last,
- _OutputIter __result) {
- typedef typename iterator_traits<_InputIter>::iterator_category _Category;
- typedef typename iterator_traits<_InputIter>::difference_type _Distance;
- return __copy(__first, __last, __result, _Category(), (_Distance*) 0);
- }
-};
-
-template <class _Tp>
-struct __copy_dispatch<_Tp*, _Tp*, __true_type>
-{
- static _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) {
- return __copy_trivial(__first, __last, __result);
- }
-};
-
-template <class _Tp>
-struct __copy_dispatch<const _Tp*, _Tp*, __true_type>
-{
- static _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) {
- return __copy_trivial(__first, __last, __result);
- }
-};
-
-template <class _InputIter, class _OutputIter>
-inline _OutputIter copy(_InputIter __first, _InputIter __last,
- _OutputIter __result) {
- typedef typename iterator_traits<_InputIter>::value_type _Tp;
- typedef typename __type_traits<_Tp>::has_trivial_assignment_operator
- _Trivial;
- return __copy_dispatch<_InputIter, _OutputIter, _Trivial>
- ::copy(__first, __last, __result);
-}
-
-#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-template <class _InputIter, class _OutputIter>
-inline _OutputIter copy(_InputIter __first, _InputIter __last,
- _OutputIter __result)
-{
- return __copy(__first, __last, __result,
- __ITERATOR_CATEGORY(__first),
- __DISTANCE_TYPE(__first));
-}
-
-inline char* copy(const char* __first, const char* __last, char* __result) {
- memmove(__result, __first, __last - __first);
- return __result + (__last - __first);
-}
-
-inline wchar_t* copy(const wchar_t* __first, const wchar_t* __last,
- wchar_t* __result) {
- memmove(__result, __first, sizeof(wchar_t) * (__last - __first));
- return __result + (__last - __first);
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-//--------------------------------------------------
-// copy_backward
-
-template <class _BidirectionalIter1, class _BidirectionalIter2,
- class _Distance>
-inline _BidirectionalIter2 __copy_backward(_BidirectionalIter1 __first,
- _BidirectionalIter1 __last,
- _BidirectionalIter2 __result,
- bidirectional_iterator_tag,
- _Distance*)
-{
- while (__first != __last)
- *--__result = *--__last;
- return __result;
-}
-
-template <class _RandomAccessIter, class _BidirectionalIter, class _Distance>
-inline _BidirectionalIter __copy_backward(_RandomAccessIter __first,
- _RandomAccessIter __last,
- _BidirectionalIter __result,
- random_access_iterator_tag,
- _Distance*)
-{
- for (_Distance __n = __last - __first; __n > 0; --__n)
- *--__result = *--__last;
- return __result;
-}
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-// This dispatch class is a workaround for compilers that do not
-// have partial ordering of function templates. All we're doing is
-// creating a specialization so that we can turn a call to copy_backward
-// into a memmove whenever possible.
-
-template <class _BidirectionalIter1, class _BidirectionalIter2,
- class _BoolType>
-struct __copy_backward_dispatch
-{
- typedef typename iterator_traits<_BidirectionalIter1>::iterator_category
- _Cat;
- typedef typename iterator_traits<_BidirectionalIter1>::difference_type
- _Distance;
-
- static _BidirectionalIter2 copy(_BidirectionalIter1 __first,
- _BidirectionalIter1 __last,
- _BidirectionalIter2 __result) {
- return __copy_backward(__first, __last, __result, _Cat(), (_Distance*) 0);
- }
-};
-
-template <class _Tp>
-struct __copy_backward_dispatch<_Tp*, _Tp*, __true_type>
-{
- static _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) {
- const ptrdiff_t _Num = __last - __first;
- memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
- return __result - _Num;
- }
-};
-
-template <class _Tp>
-struct __copy_backward_dispatch<const _Tp*, _Tp*, __true_type>
-{
- static _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) {
- return __copy_backward_dispatch<_Tp*, _Tp*, __true_type>
- ::copy(__first, __last, __result);
- }
-};
-
-template <class _BI1, class _BI2>
-inline _BI2 copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) {
- typedef typename __type_traits<typename iterator_traits<_BI2>::value_type>
- ::has_trivial_assignment_operator
- _Trivial;
- return __copy_backward_dispatch<_BI1, _BI2, _Trivial>
- ::copy(__first, __last, __result);
-}
-
-#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-template <class _BI1, class _BI2>
-inline _BI2 copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) {
- return __copy_backward(__first, __last, __result,
- __ITERATOR_CATEGORY(__first),
- __DISTANCE_TYPE(__first));
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-//--------------------------------------------------
-// copy_n (not part of the C++ standard)
-
-template <class _InputIter, class _Size, class _OutputIter>
-pair<_InputIter, _OutputIter> __copy_n(_InputIter __first, _Size __count,
- _OutputIter __result,
- input_iterator_tag) {
- for ( ; __count > 0; --__count) {
- *__result = *__first;
- ++__first;
- ++__result;
- }
- return pair<_InputIter, _OutputIter>(__first, __result);
-}
-
-template <class _RAIter, class _Size, class _OutputIter>
-inline pair<_RAIter, _OutputIter>
-__copy_n(_RAIter __first, _Size __count,
- _OutputIter __result,
- random_access_iterator_tag) {
- _RAIter __last = __first + __count;
- return pair<_RAIter, _OutputIter>(__last, copy(__first, __last, __result));
-}
-
-template <class _InputIter, class _Size, class _OutputIter>
-inline pair<_InputIter, _OutputIter>
-__copy_n(_InputIter __first, _Size __count, _OutputIter __result) {
- return __copy_n(__first, __count, __result,
- __ITERATOR_CATEGORY(__first));
-}
-
-template <class _InputIter, class _Size, class _OutputIter>
-inline pair<_InputIter, _OutputIter>
-copy_n(_InputIter __first, _Size __count, _OutputIter __result) {
- return __copy_n(__first, __count, __result);
-}
-
-//--------------------------------------------------
-// fill and fill_n
-
-
-template <class _ForwardIter, class _Tp>
-void fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __value) {
- for ( ; __first != __last; ++__first)
- *__first = __value;
-}
-
-template <class _OutputIter, class _Size, class _Tp>
-_OutputIter fill_n(_OutputIter __first, _Size __n, const _Tp& __value) {
- for ( ; __n > 0; --__n, ++__first)
- *__first = __value;
- return __first;
-}
-
-//--------------------------------------------------
-// equal and mismatch
-
-template <class _InputIter1, class _InputIter2>
-pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1,
- _InputIter1 __last1,
- _InputIter2 __first2) {
- while (__first1 != __last1 && *__first1 == *__first2) {
- ++__first1;
- ++__first2;
- }
- return pair<_InputIter1, _InputIter2>(__first1, __first2);
-}
-
-template <class _InputIter1, class _InputIter2, class _BinaryPredicate>
-pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1,
- _InputIter1 __last1,
- _InputIter2 __first2,
- _BinaryPredicate __binary_pred) {
- while (__first1 != __last1 && __binary_pred(*__first1, *__first2)) {
- ++__first1;
- ++__first2;
- }
- return pair<_InputIter1, _InputIter2>(__first1, __first2);
-}
-
-template <class _InputIter1, class _InputIter2>
-inline bool equal(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2) {
- for ( ; __first1 != __last1; ++__first1, ++__first2)
- if (*__first1 != *__first2)
- return false;
- return true;
-}
-
-template <class _InputIter1, class _InputIter2, class _BinaryPredicate>
-inline bool equal(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _BinaryPredicate __binary_pred) {
- for ( ; __first1 != __last1; ++__first1, ++__first2)
- if (!__binary_pred(*__first1, *__first2))
- return false;
- return true;
-}
-
-//--------------------------------------------------
-// lexicographical_compare and lexicographical_compare_3way.
-// (the latter is not part of the C++ standard.)
-
-template <class _InputIter1, class _InputIter2>
-bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2) {
- for ( ; __first1 != __last1 && __first2 != __last2
- ; ++__first1, ++__first2) {
- if (*__first1 < *__first2)
- return true;
- if (*__first2 < *__first1)
- return false;
- }
- return __first1 == __last1 && __first2 != __last2;
-}
-
-template <class _InputIter1, class _InputIter2, class _Compare>
-bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2,
- _Compare __comp) {
- for ( ; __first1 != __last1 && __first2 != __last2
- ; ++__first1, ++__first2) {
- if (__comp(*__first1, *__first2))
- return true;
- if (__comp(*__first2, *__first1))
- return false;
- }
- return __first1 == __last1 && __first2 != __last2;
-}
-
-inline bool
-lexicographical_compare(const unsigned char* __first1,
- const unsigned char* __last1,
- const unsigned char* __first2,
- const unsigned char* __last2)
-{
- const size_t __len1 = __last1 - __first1;
- const size_t __len2 = __last2 - __first2;
- const int __result = memcmp(__first1, __first2, min(__len1, __len2));
- return __result != 0 ? __result < 0 : __len1 < __len2;
-}
-
-inline bool lexicographical_compare(const char* __first1, const char* __last1,
- const char* __first2, const char* __last2)
-{
-#if CHAR_MAX == SCHAR_MAX
- return lexicographical_compare((const signed char*) __first1,
- (const signed char*) __last1,
- (const signed char*) __first2,
- (const signed char*) __last2);
-#else /* CHAR_MAX == SCHAR_MAX */
- return lexicographical_compare((const unsigned char*) __first1,
- (const unsigned char*) __last1,
- (const unsigned char*) __first2,
- (const unsigned char*) __last2);
-#endif /* CHAR_MAX == SCHAR_MAX */
-}
-
-template <class _InputIter1, class _InputIter2>
-int __lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2)
-{
- while (__first1 != __last1 && __first2 != __last2) {
- if (*__first1 < *__first2)
- return -1;
- if (*__first2 < *__first1)
- return 1;
- ++__first1;
- ++__first2;
- }
- if (__first2 == __last2) {
- return !(__first1 == __last1);
- }
- else {
- return -1;
- }
-}
-
-inline int
-__lexicographical_compare_3way(const unsigned char* __first1,
- const unsigned char* __last1,
- const unsigned char* __first2,
- const unsigned char* __last2)
-{
- const ptrdiff_t __len1 = __last1 - __first1;
- const ptrdiff_t __len2 = __last2 - __first2;
- const int __result = memcmp(__first1, __first2, min(__len1, __len2));
- return __result != 0 ? __result
- : (__len1 == __len2 ? 0 : (__len1 < __len2 ? -1 : 1));
-}
-
-inline int
-__lexicographical_compare_3way(const char* __first1, const char* __last1,
- const char* __first2, const char* __last2)
-{
-#if CHAR_MAX == SCHAR_MAX
- return __lexicographical_compare_3way(
- (const signed char*) __first1,
- (const signed char*) __last1,
- (const signed char*) __first2,
- (const signed char*) __last2);
-#else
- return __lexicographical_compare_3way((const unsigned char*) __first1,
- (const unsigned char*) __last1,
- (const unsigned char*) __first2,
- (const unsigned char*) __last2);
-#endif
-}
-
-template <class _InputIter1, class _InputIter2>
-int lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2)
-{
- return __lexicographical_compare_3way(__first1, __last1, __first2, __last2);
-}
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_ALGOBASE_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_alloc.h b/contrib/libstdc++/stl/stl_alloc.h
deleted file mode 100644
index 208309a..0000000
--- a/contrib/libstdc++/stl/stl_alloc.h
+++ /dev/null
@@ -1,1057 +0,0 @@
-/*
- * Copyright (c) 1996-1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_ALLOC_H
-#define __SGI_STL_INTERNAL_ALLOC_H
-
-#ifdef __SUNPRO_CC
-# define __PRIVATE public
- // Extra access restrictions prevent us from really making some things
- // private.
-#else
-# define __PRIVATE private
-#endif
-
-#ifdef __STL_STATIC_TEMPLATE_MEMBER_BUG
-# define __USE_MALLOC
-#endif
-
-
-// This implements some standard node allocators. These are
-// NOT the same as the allocators in the C++ draft standard or in
-// in the original STL. They do not encapsulate different pointer
-// types; indeed we assume that there is only one pointer type.
-// The allocation primitives are intended to allocate individual objects,
-// not larger arenas as with the original STL allocators.
-
-#if 0
-# include <new>
-# define __THROW_BAD_ALLOC throw bad_alloc()
-#elif !defined(__THROW_BAD_ALLOC)
-# include <iostream.h>
-# define __THROW_BAD_ALLOC cerr << "out of memory" << endl; exit(1)
-#endif
-
-#ifdef __STL_WIN32THREADS
-# include <windows.h>
-#endif
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#ifndef __RESTRICT
-# define __RESTRICT
-#endif
-
-#if !defined(__STL_PTHREADS) && !defined(__STL_SOLTHREADS) \
- && !defined(_NOTHREADS) \
- && !defined(__STL_SGI_THREADS) && !defined(__STL_WIN32THREADS)
-# define _NOTHREADS
-#endif
-
-# ifdef __STL_PTHREADS
- // POSIX Threads
- // This is dubious, since this is likely to be a high contention
- // lock. Performance may not be adequate.
-# include <pthread.h>
-# define __NODE_ALLOCATOR_LOCK \
- if (threads) pthread_mutex_lock(&_S_node_allocator_lock)
-# define __NODE_ALLOCATOR_UNLOCK \
- if (threads) pthread_mutex_unlock(&_S_node_allocator_lock)
-# define __NODE_ALLOCATOR_THREADS true
-# define __VOLATILE volatile // Needed at -O3 on SGI
-# endif
-# ifdef __STL_SOLTHREADS
-# include <thread.h>
-# define __NODE_ALLOCATOR_LOCK \
- if (threads) mutex_lock(&_S_node_allocator_lock)
-# define __NODE_ALLOCATOR_UNLOCK \
- if (threads) mutex_unlock(&_S_node_allocator_lock)
-# define __NODE_ALLOCATOR_THREADS true
-# define __VOLATILE
-# endif
-# ifdef __STL_WIN32THREADS
- // The lock needs to be initialized by constructing an allocator
- // objects of the right type. We do that here explicitly for alloc.
-# define __NODE_ALLOCATOR_LOCK \
- EnterCriticalSection(&_S_node_allocator_lock)
-# define __NODE_ALLOCATOR_UNLOCK \
- LeaveCriticalSection(&_S_node_allocator_lock)
-# define __NODE_ALLOCATOR_THREADS true
-# define __VOLATILE volatile // may not be needed
-# endif /* WIN32THREADS */
-# ifdef __STL_SGI_THREADS
- // This should work without threads, with sproc threads, or with
- // pthreads. It is suboptimal in all cases.
- // It is unlikely to even compile on nonSGI machines.
-
- extern "C" {
- extern int __us_rsthread_malloc;
- }
- // The above is copied from malloc.h. Including <malloc.h>
- // would be cleaner but fails with certain levels of standard
- // conformance.
-# define __NODE_ALLOCATOR_LOCK if (threads && __us_rsthread_malloc) \
- { _S_lock(&_S_node_allocator_lock); }
-# define __NODE_ALLOCATOR_UNLOCK if (threads && __us_rsthread_malloc) \
- { _S_unlock(&_S_node_allocator_lock); }
-# define __NODE_ALLOCATOR_THREADS true
-# define __VOLATILE volatile // Needed at -O3 on SGI
-# endif
-# ifdef _NOTHREADS
-// Thread-unsafe
-# define __NODE_ALLOCATOR_LOCK
-# define __NODE_ALLOCATOR_UNLOCK
-# define __NODE_ALLOCATOR_THREADS false
-# define __VOLATILE
-# endif
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1174
-#endif
-
-// Malloc-based allocator. Typically slower than default alloc below.
-// Typically thread-safe and more storage efficient.
-#ifdef __STL_STATIC_TEMPLATE_MEMBER_BUG
-# ifdef __DECLARE_GLOBALS_HERE
- void (* __malloc_alloc_oom_handler)() = 0;
- // g++ 2.7.2 does not handle static template data members.
-# else
- extern void (* __malloc_alloc_oom_handler)();
-# endif
-#endif
-
-template <int __inst>
-class __malloc_alloc_template {
-
-private:
-
- static void* _S_oom_malloc(size_t);
- static void* _S_oom_realloc(void*, size_t);
-
-#ifndef __STL_STATIC_TEMPLATE_MEMBER_BUG
- static void (* __malloc_alloc_oom_handler)();
-#endif
-
-public:
-
- static void* allocate(size_t __n)
- {
- void* __result = malloc(__n);
- if (0 == __result) __result = _S_oom_malloc(__n);
- return __result;
- }
-
- static void deallocate(void* __p, size_t /* __n */)
- {
- free(__p);
- }
-
- static void* reallocate(void* __p, size_t /* old_sz */, size_t __new_sz)
- {
- void* __result = realloc(__p, __new_sz);
- if (0 == __result) __result = _S_oom_realloc(__p, __new_sz);
- return __result;
- }
-
- static void (* __set_malloc_handler(void (*__f)()))()
- {
- void (* __old)() = __malloc_alloc_oom_handler;
- __malloc_alloc_oom_handler = __f;
- return(__old);
- }
-
-};
-
-// malloc_alloc out-of-memory handling
-
-#ifndef __STL_STATIC_TEMPLATE_MEMBER_BUG
-template <int __inst>
-void (* __malloc_alloc_template<__inst>::__malloc_alloc_oom_handler)() = 0;
-#endif
-
-template <int __inst>
-void*
-__malloc_alloc_template<__inst>::_S_oom_malloc(size_t __n)
-{
- void (* __my_malloc_handler)();
- void* __result;
-
- for (;;) {
- __my_malloc_handler = __malloc_alloc_oom_handler;
- if (0 == __my_malloc_handler) { __THROW_BAD_ALLOC; }
- (*__my_malloc_handler)();
- __result = malloc(__n);
- if (__result) return(__result);
- }
-}
-
-template <int __inst>
-void* __malloc_alloc_template<__inst>::_S_oom_realloc(void* __p, size_t __n)
-{
- void (* __my_malloc_handler)();
- void* __result;
-
- for (;;) {
- __my_malloc_handler = __malloc_alloc_oom_handler;
- if (0 == __my_malloc_handler) { __THROW_BAD_ALLOC; }
- (*__my_malloc_handler)();
- __result = realloc(__p, __n);
- if (__result) return(__result);
- }
-}
-
-typedef __malloc_alloc_template<0> malloc_alloc;
-
-template<class _Tp, class _Alloc>
-class simple_alloc {
-
-public:
- static _Tp* allocate(size_t __n)
- { return 0 == __n ? 0 : (_Tp*) _Alloc::allocate(__n * sizeof (_Tp)); }
- static _Tp* allocate(void)
- { return (_Tp*) _Alloc::allocate(sizeof (_Tp)); }
- static void deallocate(_Tp* __p, size_t __n)
- { if (0 != __n) _Alloc::deallocate(__p, __n * sizeof (_Tp)); }
- static void deallocate(_Tp* __p)
- { _Alloc::deallocate(__p, sizeof (_Tp)); }
-};
-
-// Allocator adaptor to check size arguments for debugging.
-// Reports errors using assert. Checking can be disabled with
-// NDEBUG, but it's far better to just use the underlying allocator
-// instead when no checking is desired.
-// There is some evidence that this can confuse Purify.
-template <class _Alloc>
-class debug_alloc {
-
-private:
-
- enum {_S_extra = 8}; // Size of space used to store size. Note
- // that this must be large enough to preserve
- // alignment.
-
-public:
-
- static void* allocate(size_t __n)
- {
- char* __result = (char*)_Alloc::allocate(__n + _S_extra);
- *(size_t*)__result = __n;
- return __result + _S_extra;
- }
-
- static void deallocate(void* __p, size_t __n)
- {
- char* __real_p = (char*)__p - _S_extra;
- assert(*(size_t*)__real_p == __n);
- _Alloc::deallocate(__real_p, __n + _S_extra);
- }
-
- static void* reallocate(void* __p, size_t __old_sz, size_t __new_sz)
- {
- char* __real_p = (char*)__p - _S_extra;
- assert(*(size_t*)__real_p == __old_sz);
- char* __result = (char*)
- _Alloc::reallocate(__real_p, __old_sz + _S_extra, __new_sz + _S_extra);
- *(size_t*)__result = __new_sz;
- return __result + _S_extra;
- }
-
-};
-
-
-# ifdef __USE_MALLOC
-
-typedef malloc_alloc alloc;
-typedef malloc_alloc single_client_alloc;
-
-# else
-
-
-// Default node allocator.
-// With a reasonable compiler, this should be roughly as fast as the
-// original STL class-specific allocators, but with less fragmentation.
-// Default_alloc_template parameters are experimental and MAY
-// DISAPPEAR in the future. Clients should just use alloc for now.
-//
-// Important implementation properties:
-// 1. If the client request an object of size > _MAX_BYTES, the resulting
-// object will be obtained directly from malloc.
-// 2. In all other cases, we allocate an object of size exactly
-// _S_round_up(requested_size). Thus the client has enough size
-// information that we can return the object to the proper free list
-// without permanently losing part of the object.
-//
-
-// The first template parameter specifies whether more than one thread
-// may use this allocator. It is safe to allocate an object from
-// one instance of a default_alloc and deallocate it with another
-// one. This effectively transfers its ownership to the second one.
-// This may have undesirable effects on reference locality.
-// The second parameter is unreferenced and serves only to allow the
-// creation of multiple default_alloc instances.
-// Node that containers built on different allocator instances have
-// different types, limiting the utility of this approach.
-#ifdef __SUNPRO_CC
-// breaks if we make these template class members:
- enum {_ALIGN = 8};
- enum {_MAX_BYTES = 128};
- enum {_NFREELISTS = _MAX_BYTES/_ALIGN};
-#endif
-
-template <bool threads, int inst>
-class __default_alloc_template {
-
-private:
- // Really we should use static const int x = N
- // instead of enum { x = N }, but few compilers accept the former.
-# ifndef __SUNPRO_CC
- enum {_ALIGN = 8};
- enum {_MAX_BYTES = 128};
- enum {_NFREELISTS = _MAX_BYTES/_ALIGN};
-# endif
- static size_t
- _S_round_up(size_t __bytes)
- { return (((__bytes) + _ALIGN-1) & ~(_ALIGN - 1)); }
-
-__PRIVATE:
- union _Obj {
- union _Obj* _M_free_list_link;
- char _M_client_data[1]; /* The client sees this. */
- };
-private:
-# ifdef __SUNPRO_CC
- static _Obj* __VOLATILE _S_free_list[];
- // Specifying a size results in duplicate def for 4.1
-# else
- static _Obj* __VOLATILE _S_free_list[_NFREELISTS];
-# endif
- static size_t _S_freelist_index(size_t __bytes) {
- return (((__bytes) + _ALIGN-1)/_ALIGN - 1);
- }
-
- // Returns an object of size __n, and optionally adds to size __n free list.
- static void* _S_refill(size_t __n);
- // Allocates a chunk for nobjs of size "size". nobjs may be reduced
- // if it is inconvenient to allocate the requested number.
- static char* _S_chunk_alloc(size_t __size, int& __nobjs);
-
- // Chunk allocation state.
- static char* _S_start_free;
- static char* _S_end_free;
- static size_t _S_heap_size;
-
-# ifdef __STL_SGI_THREADS
- static volatile unsigned long _S_node_allocator_lock;
- static void _S_lock(volatile unsigned long*);
- static inline void _S_unlock(volatile unsigned long*);
-# endif
-
-# ifdef __STL_PTHREADS
- static pthread_mutex_t _S_node_allocator_lock;
-# endif
-
-# ifdef __STL_SOLTHREADS
- static mutex_t _S_node_allocator_lock;
-# endif
-
-# ifdef __STL_WIN32THREADS
- static CRITICAL_SECTION _S_node_allocator_lock;
- static bool _S_node_allocator_lock_initialized;
-
- public:
- __default_alloc_template() {
- // This assumes the first constructor is called before threads
- // are started.
- if (!_S_node_allocator_lock_initialized) {
- InitializeCriticalSection(&_S_node_allocator_lock);
- _S_node_allocator_lock_initialized = true;
- }
- }
- private:
-# endif
-
- class _Lock {
- public:
- _Lock() { __NODE_ALLOCATOR_LOCK; }
- ~_Lock() { __NODE_ALLOCATOR_UNLOCK; }
- };
- friend class _Lock;
-
-public:
-
- /* __n must be > 0 */
- static void* allocate(size_t __n)
- {
- _Obj* __VOLATILE* __my_free_list;
- _Obj* __RESTRICT __result;
-
- if (__n > (size_t) _MAX_BYTES) {
- return(malloc_alloc::allocate(__n));
- }
- __my_free_list = _S_free_list + _S_freelist_index(__n);
- // Acquire the lock here with a constructor call.
- // This ensures that it is released in exit or during stack
- // unwinding.
-# ifndef _NOTHREADS
- /*REFERENCED*/
- _Lock __lock_instance;
-# endif
- __result = *__my_free_list;
- if (__result == 0) {
- void* __r = _S_refill(_S_round_up(__n));
- return __r;
- }
- *__my_free_list = __result -> _M_free_list_link;
- return (__result);
- };
-
- /* __p may not be 0 */
- static void deallocate(void* __p, size_t __n)
- {
- _Obj* __q = (_Obj*)__p;
- _Obj* __VOLATILE* __my_free_list;
-
- if (__n > (size_t) _MAX_BYTES) {
- malloc_alloc::deallocate(__p, __n);
- return;
- }
- __my_free_list = _S_free_list + _S_freelist_index(__n);
- // acquire lock
-# ifndef _NOTHREADS
- /*REFERENCED*/
- _Lock __lock_instance;
-# endif /* _NOTHREADS */
- __q -> _M_free_list_link = *__my_free_list;
- *__my_free_list = __q;
- // lock is released here
- }
-
- static void* reallocate(void* __p, size_t __old_sz, size_t __new_sz);
-
-} ;
-
-typedef __default_alloc_template<__NODE_ALLOCATOR_THREADS, 0> alloc;
-typedef __default_alloc_template<false, 0> single_client_alloc;
-
-
-
-/* We allocate memory in large chunks in order to avoid fragmenting */
-/* the malloc heap too much. */
-/* We assume that size is properly aligned. */
-/* We hold the allocation lock. */
-template <bool __threads, int __inst>
-char*
-__default_alloc_template<__threads, __inst>::_S_chunk_alloc(size_t __size,
- int& __nobjs)
-{
- char* __result;
- size_t __total_bytes = __size * __nobjs;
- size_t __bytes_left = _S_end_free - _S_start_free;
-
- if (__bytes_left >= __total_bytes) {
- __result = _S_start_free;
- _S_start_free += __total_bytes;
- return(__result);
- } else if (__bytes_left >= __size) {
- __nobjs = (int)(__bytes_left/__size);
- __total_bytes = __size * __nobjs;
- __result = _S_start_free;
- _S_start_free += __total_bytes;
- return(__result);
- } else {
- size_t __bytes_to_get =
- 2 * __total_bytes + _S_round_up(_S_heap_size >> 4);
- // Try to make use of the left-over piece.
- if (__bytes_left > 0) {
- _Obj* __VOLATILE* __my_free_list =
- _S_free_list + _S_freelist_index(__bytes_left);
-
- ((_Obj*)_S_start_free) -> _M_free_list_link = *__my_free_list;
- *__my_free_list = (_Obj*)_S_start_free;
- }
- _S_start_free = (char*)malloc(__bytes_to_get);
- if (0 == _S_start_free) {
- size_t __i;
- _Obj* __VOLATILE* __my_free_list;
- _Obj* __p;
- // Try to make do with what we have. That can't
- // hurt. We do not try smaller requests, since that tends
- // to result in disaster on multi-process machines.
- for (__i = __size; __i <= _MAX_BYTES; __i += _ALIGN) {
- __my_free_list = _S_free_list + _S_freelist_index(__i);
- __p = *__my_free_list;
- if (0 != __p) {
- *__my_free_list = __p -> _M_free_list_link;
- _S_start_free = (char*)__p;
- _S_end_free = _S_start_free + __i;
- return(_S_chunk_alloc(__size, __nobjs));
- // Any leftover piece will eventually make it to the
- // right free list.
- }
- }
- _S_end_free = 0; // In case of exception.
- _S_start_free = (char*)malloc_alloc::allocate(__bytes_to_get);
- // This should either throw an
- // exception or remedy the situation. Thus we assume it
- // succeeded.
- }
- _S_heap_size += __bytes_to_get;
- _S_end_free = _S_start_free + __bytes_to_get;
- return(_S_chunk_alloc(__size, __nobjs));
- }
-}
-
-
-/* Returns an object of size __n, and optionally adds to size __n free list.*/
-/* We assume that __n is properly aligned. */
-/* We hold the allocation lock. */
-template <bool __threads, int __inst>
-void*
-__default_alloc_template<__threads, __inst>::_S_refill(size_t __n)
-{
- int __nobjs = 20;
- char* __chunk = _S_chunk_alloc(__n, __nobjs);
- _Obj* __VOLATILE* __my_free_list;
- _Obj* __result;
- _Obj* __current_obj;
- _Obj* __next_obj;
- int __i;
-
- if (1 == __nobjs) return(__chunk);
- __my_free_list = _S_free_list + _S_freelist_index(__n);
-
- /* Build free list in chunk */
- __result = (_Obj*)__chunk;
- *__my_free_list = __next_obj = (_Obj*)(__chunk + __n);
- for (__i = 1; ; __i++) {
- __current_obj = __next_obj;
- __next_obj = (_Obj*)((char*)__next_obj + __n);
- if (__nobjs - 1 == __i) {
- __current_obj -> _M_free_list_link = 0;
- break;
- } else {
- __current_obj -> _M_free_list_link = __next_obj;
- }
- }
- return(__result);
-}
-
-template <bool threads, int inst>
-void*
-__default_alloc_template<threads, inst>::reallocate(void* __p,
- size_t __old_sz,
- size_t __new_sz)
-{
- void* __result;
- size_t __copy_sz;
-
- if (__old_sz > (size_t) _MAX_BYTES && __new_sz > (size_t) _MAX_BYTES) {
- return(realloc(__p, __new_sz));
- }
- if (_S_round_up(__old_sz) == _S_round_up(__new_sz)) return(__p);
- __result = allocate(__new_sz);
- __copy_sz = __new_sz > __old_sz? __old_sz : __new_sz;
- memcpy(__result, __p, __copy_sz);
- deallocate(__p, __old_sz);
- return(__result);
-}
-
-#ifdef __STL_PTHREADS
- template <bool __threads, int __inst>
- pthread_mutex_t
- __default_alloc_template<__threads, __inst>::_S_node_allocator_lock
- = PTHREAD_MUTEX_INITIALIZER;
-#endif
-
-#ifdef __STL_SOLTHREADS
- template <bool __threads, int __inst>
- mutex_t
- __default_alloc_template<__threads, __inst>::_S_node_allocator_lock
- = DEFAULTMUTEX;
-#endif
-
-#ifdef __STL_WIN32THREADS
- template <bool __threads, int __inst>
- CRITICAL_SECTION
- __default_alloc_template<__threads, __inst>::
- _S_node_allocator_lock;
-
- template <bool __threads, int __inst>
- bool
- __default_alloc_template<__threads, __inst>::
- _S_node_allocator_lock_initialized
- = false;
-#endif
-
-#ifdef __STL_SGI_THREADS
-__STL_END_NAMESPACE
-#include <mutex.h>
-#include <time.h> /* XXX should use <ctime> */
-__STL_BEGIN_NAMESPACE
-// Somewhat generic lock implementations. We need only test-and-set
-// and some way to sleep. These should work with both SGI pthreads
-// and sproc threads. They may be useful on other systems.
-template <bool __threads, int __inst>
-volatile unsigned long
-__default_alloc_template<__threads, __inst>::_S_node_allocator_lock = 0;
-
-#if __mips < 3 || !(defined (_ABIN32) || defined(_ABI64)) || defined(__GNUC__)
-# define __test_and_set(l,v) test_and_set(l,v)
-#endif
-
-template <bool __threads, int __inst>
-void
-__default_alloc_template<__threads, __inst>::
- _S_lock(volatile unsigned long* __lock)
-{
- const unsigned __low_spin_max = 30; // spins if we suspect uniprocessor
- const unsigned __high_spin_max = 1000; // spins for multiprocessor
- static unsigned __spin_max = __low_spin_max;
- unsigned __my_spin_max;
- static unsigned __last_spins = 0;
- unsigned __my_last_spins;
- unsigned __junk;
-# define __ALLOC_PAUSE \
- __junk *= __junk; __junk *= __junk; __junk *= __junk; __junk *= __junk
- int __i;
-
- if (!__test_and_set((unsigned long*)__lock, 1)) {
- return;
- }
- __my_spin_max = __spin_max;
- __my_last_spins = __last_spins;
- for (__i = 0; __i < __my_spin_max; __i++) {
- if (__i < __my_last_spins/2 || *__lock) {
- __ALLOC_PAUSE;
- continue;
- }
- if (!__test_and_set((unsigned long*)__lock, 1)) {
- // got it!
- // Spinning worked. Thus we're probably not being scheduled
- // against the other process with which we were contending.
- // Thus it makes sense to spin longer the next time.
- __last_spins = __i;
- __spin_max = __high_spin_max;
- return;
- }
- }
- // We are probably being scheduled against the other process. Sleep.
- __spin_max = __low_spin_max;
- for (__i = 0 ;; ++__i) {
- struct timespec __ts;
- int __log_nsec = __i + 6;
-
- if (!__test_and_set((unsigned long *)__lock, 1)) {
- return;
- }
- if (__log_nsec > 27) __log_nsec = 27;
- /* Max sleep is 2**27nsec ~ 60msec */
- __ts.tv_sec = 0;
- __ts.tv_nsec = 1 << __log_nsec;
- nanosleep(&__ts, 0);
- }
-}
-
-template <bool __threads, int __inst>
-inline void
-__default_alloc_template<__threads, __inst>::_S_unlock(
- volatile unsigned long* __lock)
-{
-# if defined(__GNUC__) && __mips >= 3
- asm("sync");
- *__lock = 0;
-# elif __mips >= 3 && (defined (_ABIN32) || defined(_ABI64))
- __lock_release(__lock);
-# else
- *__lock = 0;
- // This is not sufficient on many multiprocessors, since
- // writes to protected variables and the lock may be reordered.
-# endif
-}
-#endif
-
-template <bool __threads, int __inst>
-char* __default_alloc_template<__threads, __inst>::_S_start_free = 0;
-
-template <bool __threads, int __inst>
-char* __default_alloc_template<__threads, __inst>::_S_end_free = 0;
-
-template <bool __threads, int __inst>
-size_t __default_alloc_template<__threads, __inst>::_S_heap_size = 0;
-
-template <bool __threads, int __inst>
-__default_alloc_template<__threads, __inst>::_Obj* __VOLATILE
-__default_alloc_template<__threads, __inst> ::_S_free_list[
- _NFREELISTS
-] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, };
-// The 16 zeros are necessary to make version 4.1 of the SunPro
-// compiler happy. Otherwise it appears to allocate too little
-// space for the array.
-
-# ifdef __STL_WIN32THREADS
- // Create one to get critical section initialized.
- // We do this onece per file, but only the first constructor
- // does anything.
- static alloc __node_allocator_dummy_instance;
-# endif
-
-#endif /* ! __USE_MALLOC */
-
-// This implements allocators as specified in the C++ standard.
-//
-// Note that standard-conforming allocators use many language features
-// that are not yet widely implemented. In particular, they rely on
-// member templates, partial specialization, partial ordering of function
-// templates, the typename keyword, and the use of the template keyword
-// to refer to a template member of a dependent type.
-
-#ifdef __STL_USE_STD_ALLOCATORS
-
-template <class _Tp>
-class allocator {
- typedef alloc _Alloc; // The underlying allocator.
-public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
-
- template <class _Tp1> struct rebind {
- typedef allocator<_Tp1> other;
- };
-
- allocator() __STL_NOTHROW {}
- allocator(const allocator&) __STL_NOTHROW {}
- template <class _Tp1> allocator(const allocator<_Tp1>&) __STL_NOTHROW {}
- ~allocator() __STL_NOTHROW {}
-
- pointer address(reference __x) const { return &__x; }
- const_pointer address(const_reference __x) const { return &__x; }
-
- // __n is permitted to be 0. The C++ standard says nothing about what
- // the return value is when __n == 0.
- _Tp* allocate(size_type __n, const void* = 0) {
- return __n != 0 ? static_cast<_Tp*>(_Alloc::allocate(__n * sizeof(_Tp)))
- : 0;
- }
-
- // __p is not permitted to be a null pointer.
- void deallocate(pointer __p, size_type __n)
- { _Alloc::deallocate(__p, __n * sizeof(_Tp)); }
-
- size_type max_size() const __STL_NOTHROW
- { return size_t(-1) / sizeof(_Tp); }
-
- void construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); }
- void destroy(pointer __p) { __p->~_Tp(); }
-};
-
-template<>
-class allocator<void> {
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef void* pointer;
- typedef const void* const_pointer;
- typedef void value_type;
-
- template <class _Tp1> struct rebind {
- typedef allocator<_Tp1> other;
- };
-};
-
-
-template <class _T1, class _T2>
-inline bool operator==(const allocator<_T1>&, const allocator<_T2>&)
-{
- return true;
-}
-
-template <class _T1, class _T2>
-inline bool operator!=(const allocator<_T1>&, const allocator<_T2>&)
-{
- return false;
-}
-
-// Allocator adaptor to turn an SGI-style allocator (e.g. alloc, malloc_alloc)
-// into a standard-conforming allocator. Note that this adaptor does
-// *not* assume that all objects of the underlying alloc class are
-// identical, nor does it assume that all of the underlying alloc's
-// member functions are static member functions. Note, also, that
-// __allocator<_Tp, alloc> is essentially the same thing as allocator<_Tp>.
-
-template <class _Tp, class _Alloc>
-struct __allocator {
- _Alloc __underlying_alloc;
-
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
-
- template <class _Tp1> struct rebind {
- typedef __allocator<_Tp1, _Alloc> other;
- };
-
- __allocator() __STL_NOTHROW {}
- __allocator(const __allocator& __a) __STL_NOTHROW
- : __underlying_alloc(__a.__underlying_alloc) {}
- template <class _Tp1>
- __allocator(const __allocator<_Tp1, _Alloc>& __a) __STL_NOTHROW
- : __underlying_alloc(__a.__underlying_alloc) {}
- ~__allocator() __STL_NOTHROW {}
-
- pointer address(reference __x) const { return &__x; }
- const_pointer address(const_reference __x) const { return &__x; }
-
- // __n is permitted to be 0.
- _Tp* allocate(size_type __n, const void* = 0) {
- return __n != 0
- ? static_cast<_Tp*>(__underlying_alloc.allocate(__n * sizeof(_Tp)))
- : 0;
- }
-
- // __p is not permitted to be a null pointer.
- void deallocate(pointer __p, size_type __n)
- { __underlying_alloc.deallocate(__p, __n * sizeof(_Tp)); }
-
- size_type max_size() const __STL_NOTHROW
- { return size_t(-1) / sizeof(_Tp); }
-
- void construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); }
- void destroy(pointer __p) { __p->~_Tp(); }
-};
-
-template <class _Alloc>
-class __allocator<void, _Alloc> {
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef void* pointer;
- typedef const void* const_pointer;
- typedef void value_type;
-
- template <class _Tp1> struct rebind {
- typedef __allocator<_Tp1, _Alloc> other;
- };
-};
-
-template <class _Tp, class _Alloc>
-inline bool operator==(const __allocator<_Tp, _Alloc>& __a1,
- const __allocator<_Tp, _Alloc>& __a2)
-{
- return __a1.__underlying_alloc == __a2.__underlying_alloc;
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-template <class _Tp, class _Alloc>
-inline bool operator!=(const __allocator<_Tp, _Alloc>& __a1,
- const __allocator<_Tp, _Alloc>& __a2)
-{
- return __a1.__underlying_alloc != __a2.__underlying_alloc;
-}
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-// Comparison operators for all of the predifined SGI-style allocators.
-// This ensures that __allocator<malloc_alloc> (for example) will
-// work correctly.
-
-template <int inst>
-inline bool operator==(const __malloc_alloc_template<inst>&,
- const __malloc_alloc_template<inst>&)
-{
- return true;
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-template <int __inst>
-inline bool operator!=(const __malloc_alloc_template<__inst>&,
- const __malloc_alloc_template<__inst>&)
-{
- return false;
-}
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-#ifndef __USE_MALLOC
-template <bool __threads, int __inst>
-inline bool operator==(const __default_alloc_template<__threads, __inst>&,
- const __default_alloc_template<__threads, __inst>&)
-{
- return true;
-}
-
-# ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-template <bool __threads, int __inst>
-inline bool operator!=(const __default_alloc_template<__threads, __inst>&,
- const __default_alloc_template<__threads, __inst>&)
-{
- return false;
-}
-# endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-#endif
-
-template <class _Alloc>
-inline bool operator==(const debug_alloc<_Alloc>&,
- const debug_alloc<_Alloc>&) {
- return true;
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-template <class _Alloc>
-inline bool operator!=(const debug_alloc<_Alloc>&,
- const debug_alloc<_Alloc>&) {
- return false;
-}
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-// Another allocator adaptor: _Alloc_traits. This serves two
-// purposes. First, make it possible to write containers that can use
-// either SGI-style allocators or standard-conforming allocator.
-// Second, provide a mechanism so that containers can query whether or
-// not the allocator has distinct instances. If not, the container
-// can avoid wasting a word of memory to store an empty object.
-
-// This adaptor uses partial specialization. The general case of
-// _Alloc_traits<_Tp, _Alloc> assumes that _Alloc is a
-// standard-conforming allocator, possibly with non-equal instances
-// and non-static members. (It still behaves correctly even if _Alloc
-// has static member and if all instances are equal. Refinements
-// affect performance, not correctness.)
-
-// There are always two members: allocator_type, which is a standard-
-// conforming allocator type for allocating objects of type _Tp, and
-// _S_instanceless, a static const member of type bool. If
-// _S_instanceless is true, this means that there is no difference
-// between any two instances of type allocator_type. Furthermore, if
-// _S_instanceless is true, then _Alloc_traits has one additional
-// member: _Alloc_type. This type encapsulates allocation and
-// deallocation of objects of type _Tp through a static interface; it
-// has two member functions, whose signatures are
-// static _Tp* allocate(size_t)
-// static void deallocate(_Tp*, size_t)
-
-// The fully general version.
-
-template <class _Tp, class _Allocator>
-struct _Alloc_traits
-{
- static const bool _S_instanceless = false;
- typedef typename _Allocator::__STL_TEMPLATE rebind<_Tp>::other
- allocator_type;
-};
-
-template <class _Tp, class _Allocator>
-const bool _Alloc_traits<_Tp, _Allocator>::_S_instanceless;
-
-// The version for the default allocator.
-
-template <class _Tp, class _Tp1>
-struct _Alloc_traits<_Tp, allocator<_Tp1> >
-{
- static const bool _S_instanceless = true;
- typedef simple_alloc<_Tp, alloc> _Alloc_type;
- typedef allocator<_Tp> allocator_type;
-};
-
-// Versions for the predefined SGI-style allocators.
-
-template <class _Tp, int __inst>
-struct _Alloc_traits<_Tp, __malloc_alloc_template<__inst> >
-{
- static const bool _S_instanceless = true;
- typedef simple_alloc<_Tp, __malloc_alloc_template<__inst> > _Alloc_type;
- typedef __allocator<_Tp, __malloc_alloc_template<__inst> > allocator_type;
-};
-
-#ifndef __USE_MALLOC
-template <class _Tp, bool __threads, int __inst>
-struct _Alloc_traits<_Tp, __default_alloc_template<__threads, __inst> >
-{
- static const bool _S_instanceless = true;
- typedef simple_alloc<_Tp, __default_alloc_template<__threads, __inst> >
- _Alloc_type;
- typedef __allocator<_Tp, __default_alloc_template<__threads, __inst> >
- allocator_type;
-};
-#endif
-
-template <class _Tp, class _Alloc>
-struct _Alloc_traits<_Tp, debug_alloc<_Alloc> >
-{
- static const bool _S_instanceless = true;
- typedef simple_alloc<_Tp, debug_alloc<_Alloc> > _Alloc_type;
- typedef __allocator<_Tp, debug_alloc<_Alloc> > allocator_type;
-};
-
-// Versions for the __allocator adaptor used with the predefined
-// SGI-style allocators.
-
-template <class _Tp, class _Tp1, int __inst>
-struct _Alloc_traits<_Tp,
- __allocator<_Tp1, __malloc_alloc_template<__inst> > >
-{
- static const bool _S_instanceless = true;
- typedef simple_alloc<_Tp, __malloc_alloc_template<__inst> > _Alloc_type;
- typedef __allocator<_Tp, __malloc_alloc_template<__inst> > allocator_type;
-};
-
-#ifndef __USE_MALLOC
-template <class _Tp, class _Tp1, bool __thr, int __inst>
-struct _Alloc_traits<_Tp,
- __allocator<_Tp1,
- __default_alloc_template<__thr, __inst> > >
-{
- static const bool _S_instanceless = true;
- typedef simple_alloc<_Tp, __default_alloc_template<__thr,__inst> >
- _Alloc_type;
- typedef __allocator<_Tp, __default_alloc_template<__thr,__inst> >
- allocator_type;
-};
-#endif
-
-template <class _Tp, class _Tp1, class _Alloc>
-struct _Alloc_traits<_Tp, __allocator<_Tp1, debug_alloc<_Alloc> > >
-{
- static const bool _S_instanceless = true;
- typedef simple_alloc<_Tp, debug_alloc<_Alloc> > _Alloc_type;
- typedef __allocator<_Tp, debug_alloc<_Alloc> > allocator_type;
-};
-
-
-#endif /* __STL_USE_STD_ALLOCATORS */
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1174
-#endif
-
-__STL_END_NAMESPACE
-
-#undef __PRIVATE
-
-#endif /* __SGI_STL_INTERNAL_ALLOC_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_bvector.h b/contrib/libstdc++/stl/stl_bvector.h
deleted file mode 100644
index 0d0cdb6..0000000
--- a/contrib/libstdc++/stl/stl_bvector.h
+++ /dev/null
@@ -1,838 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_BVECTOR_H
-#define __SGI_STL_INTERNAL_BVECTOR_H
-
-__STL_BEGIN_NAMESPACE
-
-static const int __WORD_BIT = int(CHAR_BIT*sizeof(unsigned int));
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1174
-#pragma set woff 1375
-#endif
-
-struct _Bit_reference {
- unsigned int* _M_p;
- unsigned int _M_mask;
- _Bit_reference(unsigned int* __x, unsigned int __y)
- : _M_p(__x), _M_mask(__y) {}
-
-public:
- _Bit_reference() : _M_p(0), _M_mask(0) {}
- operator bool() const { return !(!(*_M_p & _M_mask)); }
- _Bit_reference& operator=(bool __x)
- {
- if (__x) *_M_p |= _M_mask;
- else *_M_p &= ~_M_mask;
- return *this;
- }
- _Bit_reference& operator=(const _Bit_reference& __x)
- { return *this = bool(__x); }
- bool operator==(const _Bit_reference& __x) const
- { return bool(*this) == bool(__x); }
- bool operator<(const _Bit_reference& __x) const {
- return !bool(*this) && bool(__x);
- }
- void flip() { *_M_p ^= _M_mask; }
-};
-
-inline void swap(_Bit_reference __x, _Bit_reference __y)
-{
- bool __tmp = __x;
- __x = __y;
- __y = __tmp;
-}
-
-struct _Bit_iterator : public random_access_iterator<bool, ptrdiff_t> {
- typedef _Bit_reference reference;
- typedef _Bit_reference* pointer;
- typedef _Bit_iterator iterator;
-
- unsigned int* _M_p;
- unsigned int _M_offset;
- void bump_up() {
- if (_M_offset++ == __WORD_BIT - 1) {
- _M_offset = 0;
- ++_M_p;
- }
- }
- void bump_down() {
- if (_M_offset-- == 0) {
- _M_offset = __WORD_BIT - 1;
- --_M_p;
- }
- }
-
- _Bit_iterator() : _M_p(0), _M_offset(0) {}
- _Bit_iterator(unsigned int* __x, unsigned int __y)
- : _M_p(__x), _M_offset(__y) {}
- reference operator*() const { return reference(_M_p, 1U << _M_offset); }
- iterator& operator++() {
- bump_up();
- return *this;
- }
- iterator operator++(int) {
- iterator __tmp = *this;
- bump_up();
- return __tmp;
- }
- iterator& operator--() {
- bump_down();
- return *this;
- }
- iterator operator--(int) {
- iterator __tmp = *this;
- bump_down();
- return __tmp;
- }
- iterator& operator+=(difference_type __i) {
- difference_type __n = __i + _M_offset;
- _M_p += __n / __WORD_BIT;
- __n = __n % __WORD_BIT;
- if (__n < 0) {
- _M_offset = (unsigned int) __n + __WORD_BIT;
- --_M_p;
- } else
- _M_offset = (unsigned int) __n;
- return *this;
- }
- iterator& operator-=(difference_type __i) {
- *this += -__i;
- return *this;
- }
- iterator operator+(difference_type __i) const {
- iterator __tmp = *this;
- return __tmp += __i;
- }
- iterator operator-(difference_type __i) const {
- iterator __tmp = *this;
- return __tmp -= __i;
- }
- difference_type operator-(iterator __x) const {
- return __WORD_BIT * (_M_p - __x._M_p) + _M_offset - __x._M_offset;
- }
- reference operator[](difference_type __i) { return *(*this + __i); }
- bool operator==(const iterator& __x) const {
- return _M_p == __x._M_p && _M_offset == __x._M_offset;
- }
- bool operator!=(const iterator& __x) const {
- return _M_p != __x._M_p || _M_offset != __x._M_offset;
- }
- bool operator<(iterator __x) const {
- return _M_p < __x._M_p || (_M_p == __x._M_p && _M_offset < __x._M_offset);
- }
-};
-
-struct _Bit_const_iterator
- : public random_access_iterator<bool, ptrdiff_t>
-{
- typedef bool reference;
- typedef bool const_reference;
- typedef const bool* pointer;
- typedef _Bit_const_iterator const_iterator;
-
- unsigned int* _M_p;
- unsigned int _M_offset;
- void bump_up() {
- if (_M_offset++ == __WORD_BIT - 1) {
- _M_offset = 0;
- ++_M_p;
- }
- }
- void bump_down() {
- if (_M_offset-- == 0) {
- _M_offset = __WORD_BIT - 1;
- --_M_p;
- }
- }
-
- _Bit_const_iterator() : _M_p(0), _M_offset(0) {}
- _Bit_const_iterator(unsigned int* __x, unsigned int __y)
- : _M_p(__x), _M_offset(__y) {}
- _Bit_const_iterator(const _Bit_iterator& __x)
- : _M_p(__x._M_p), _M_offset(__x._M_offset) {}
- const_reference operator*() const {
- return _Bit_reference(_M_p, 1U << _M_offset);
- }
- const_iterator& operator++() {
- bump_up();
- return *this;
- }
- const_iterator operator++(int) {
- const_iterator __tmp = *this;
- bump_up();
- return __tmp;
- }
- const_iterator& operator--() {
- bump_down();
- return *this;
- }
- const_iterator operator--(int) {
- const_iterator __tmp = *this;
- bump_down();
- return __tmp;
- }
- const_iterator& operator+=(difference_type __i) {
- difference_type __n = __i + _M_offset;
- _M_p += __n / __WORD_BIT;
- __n = __n % __WORD_BIT;
- if (__n < 0) {
- _M_offset = (unsigned int) __n + __WORD_BIT;
- --_M_p;
- } else
- _M_offset = (unsigned int) __n;
- return *this;
- }
- const_iterator& operator-=(difference_type __i) {
- *this += -__i;
- return *this;
- }
- const_iterator operator+(difference_type __i) const {
- const_iterator __tmp = *this;
- return __tmp += __i;
- }
- const_iterator operator-(difference_type __i) const {
- const_iterator __tmp = *this;
- return __tmp -= __i;
- }
- difference_type operator-(const_iterator __x) const {
- return __WORD_BIT * (_M_p - __x._M_p) + _M_offset - __x._M_offset;
- }
- const_reference operator[](difference_type __i) {
- return *(*this + __i);
- }
- bool operator==(const const_iterator& __x) const {
- return _M_p == __x._M_p && _M_offset == __x._M_offset;
- }
- bool operator!=(const const_iterator& __x) const {
- return _M_p != __x._M_p || _M_offset != __x._M_offset;
- }
- bool operator<(const_iterator __x) const {
- return _M_p < __x._M_p || (_M_p == __x._M_p && _M_offset < __x._M_offset);
- }
-};
-
-// Bit-vector base class, which encapsulates the difference between
-// old SGI-style allocators and standard-conforming allocators.
-
-#ifdef __STL_USE_STD_ALLOCATORS
-
-// Base class for ordinary allocators.
-template <class _Allocator, bool __is_static>
-class _Bvector_alloc_base {
-public:
- typedef typename _Alloc_traits<bool, _Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return _M_data_allocator; }
-
- _Bvector_alloc_base(const allocator_type& __a)
- : _M_data_allocator(__a), _M_start(), _M_finish(), _M_end_of_storage(0) {}
-
-protected:
- unsigned int* _M_bit_alloc(size_t __n)
- { return _M_data_allocator.allocate((__n + __WORD_BIT - 1)/__WORD_BIT); }
- void _M_deallocate() {
- if (_M_start._M_p)
- _M_data_allocator.deallocate(_M_start._M_p,
- _M_end_of_storage - _M_start._M_p);
- }
-
- typename _Alloc_traits<unsigned int, _Allocator>::allocator_type
- _M_data_allocator;
- _Bit_iterator _M_start;
- _Bit_iterator _M_finish;
- unsigned int* _M_end_of_storage;
-};
-
-// Specialization for instanceless allocators.
-template <class _Allocator>
-class _Bvector_alloc_base<_Allocator, true> {
-public:
- typedef typename _Alloc_traits<bool, _Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
-
- _Bvector_alloc_base(const allocator_type&)
- : _M_start(), _M_finish(), _M_end_of_storage(0) {}
-
-protected:
- typedef typename _Alloc_traits<unsigned int, _Allocator>::_Alloc_type
- _Alloc_type;
-
- unsigned int* _M_bit_alloc(size_t __n)
- { return _Alloc_type::allocate((__n + __WORD_BIT - 1)/__WORD_BIT); }
- void _M_deallocate() {
- if (_M_start._M_p)
- _Alloc_type::deallocate(_M_start._M_p,
- _M_end_of_storage - _M_start._M_p);
- }
-
- _Bit_iterator _M_start;
- _Bit_iterator _M_finish;
- unsigned int* _M_end_of_storage;
-};
-
-template <class _Alloc>
-class _Bvector_base
- : public _Bvector_alloc_base<_Alloc,
- _Alloc_traits<bool, _Alloc>::_S_instanceless>
-{
- typedef _Bvector_alloc_base<_Alloc,
- _Alloc_traits<bool, _Alloc>::_S_instanceless>
- _Base;
-public:
- typedef typename _Base::allocator_type allocator_type;
-
- _Bvector_base(const allocator_type& __a) : _Base(__a) {}
- ~_Bvector_base() { _Base::_M_deallocate(); }
-};
-
-#else /* __STL_USE_STD_ALLOCATORS */
-
-template <class _Alloc>
-class _Bvector_base
-{
-public:
- typedef _Alloc allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
-
- _Bvector_base(const allocator_type&)
- : _M_start(), _M_finish(), _M_end_of_storage(0) {}
- ~_Bvector_base() { _M_deallocate(); }
-
-protected:
- typedef simple_alloc<unsigned int, _Alloc> _Alloc_type;
-
- unsigned int* _M_bit_alloc(size_t __n)
- { return _Alloc_type::allocate((__n + __WORD_BIT - 1)/__WORD_BIT); }
- void _M_deallocate() {
- if (_M_start._M_p)
- _Alloc_type::deallocate(_M_start._M_p,
- _M_end_of_storage - _M_start._M_p);
- }
-
- _Bit_iterator _M_start;
- _Bit_iterator _M_finish;
- unsigned int* _M_end_of_storage;
-};
-
-#endif /* __STL_USE_STD_ALLOCATORS */
-
-// The next few lines are confusing. What we're doing is declaring a
-// partial specialization of vector<T, Alloc> if we have the necessary
-// compiler support. Otherwise, we define a class bit_vector which uses
-// the default allocator.
-
-#if defined(__STL_CLASS_PARTIAL_SPECIALIZATION) && !defined(__STL_NO_BOOL)
-#define __SGI_STL_VECBOOL_TEMPLATE
-#define __BVECTOR vector
-#else
-#undef __SGI_STL_VECBOOL_TEMPLATE
-#define __BVECTOR bit_vector
-#endif
-
-# ifdef __SGI_STL_VECBOOL_TEMPLATE
- __STL_END_NAMESPACE
-# include <stl_vector.h>
- __STL_BEGIN_NAMESPACE
-template<class _Alloc> class vector<bool,_Alloc>
- : public _Bvector_base<_Alloc>
-# else /* __SGI_STL_VECBOOL_TEMPLATE */
-class bit_vector
- : public _Bvector_base<__STL_DEFAULT_ALLOCATOR(bool) >
-# endif /* __SGI_STL_VECBOOL_TEMPLATE */
-{
-# ifdef __SGI_STL_VECBOOL_TEMPLATE
- typedef _Bvector_base<_Alloc> _Base;
-# else /* __SGI_STL_VECBOOL_TEMPLATE */
- typedef _Bvector_base<__STL_DEFAULT_ALLOCATOR(bool) > _Base;
-# endif /* __SGI_STL_VECBOOL_TEMPLATE */
-public:
- typedef bool value_type;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Bit_reference reference;
- typedef bool const_reference;
- typedef _Bit_reference* pointer;
- typedef const bool* const_pointer;
-
- typedef _Bit_iterator iterator;
- typedef _Bit_const_iterator const_iterator;
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
- typedef reverse_iterator<const_iterator> const_reverse_iterator;
- typedef reverse_iterator<iterator> reverse_iterator;
-#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */
- typedef reverse_iterator<const_iterator, value_type, const_reference,
- difference_type> const_reverse_iterator;
- typedef reverse_iterator<iterator, value_type, reference, difference_type>
- reverse_iterator;
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
- typedef typename _Base::allocator_type allocator_type;
- allocator_type get_allocator() const { return _Base::get_allocator(); }
-
-protected:
-#ifdef __STL_USE_NAMESPACES
- using _Base::_M_bit_alloc;
- using _Base::_M_deallocate;
- using _Base::_M_start;
- using _Base::_M_finish;
- using _Base::_M_end_of_storage;
-#endif /* __STL_USE_NAMESPACES */
-
-protected:
- void _M_initialize(size_type __n) {
- unsigned int* __q = _M_bit_alloc(__n);
- _M_end_of_storage = __q + (__n + __WORD_BIT - 1)/__WORD_BIT;
- _M_start = iterator(__q, 0);
- _M_finish = _M_start + difference_type(__n);
- }
- void _M_insert_aux(iterator __position, bool __x) {
- if (_M_finish._M_p != _M_end_of_storage) {
- copy_backward(__position, _M_finish, _M_finish + 1);
- *__position = __x;
- ++_M_finish;
- }
- else {
- size_type __len = size() ? 2 * size() : __WORD_BIT;
- unsigned int* __q = _M_bit_alloc(__len);
- iterator __i = copy(begin(), __position, iterator(__q, 0));
- *__i++ = __x;
- _M_finish = copy(__position, end(), __i);
- _M_deallocate();
- _M_end_of_storage = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
- _M_start = iterator(__q, 0);
- }
- }
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- void _M_initialize_range(_InputIterator __first, _InputIterator __last,
- input_iterator_tag) {
- _M_start = iterator();
- _M_finish = iterator();
- _M_end_of_storage = 0;
- for ( ; __first != __last; ++__first)
- push_back(*__first);
- }
-
- template <class _ForwardIterator>
- void _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last,
- forward_iterator_tag) {
- size_type __n = 0;
- distance(__first, __last, __n);
- _M_initialize(__n);
- copy(__first, __last, _M_start);
- }
-
- template <class _InputIterator>
- void _M_insert_range(iterator __pos,
- _InputIterator __first, _InputIterator __last,
- input_iterator_tag) {
- for ( ; __first != __last; ++__first) {
- __pos = insert(__pos, *__first);
- ++__pos;
- }
- }
-
- template <class _ForwardIterator>
- void _M_insert_range(iterator __position,
- _ForwardIterator __first, _ForwardIterator __last,
- forward_iterator_tag) {
- if (__first != __last) {
- size_type __n = 0;
- distance(__first, __last, __n);
- if (capacity() - size() >= __n) {
- copy_backward(__position, end(), _M_finish + difference_type(__n));
- copy(__first, __last, __position);
- _M_finish += difference_type(__n);
- }
- else {
- size_type __len = size() + max(size(), __n);
- unsigned int* __q = _M_bit_alloc(__len);
- iterator __i = copy(begin(), __position, iterator(__q, 0));
- __i = copy(__first, __last, __i);
- _M_finish = copy(__position, end(), __i);
- _M_deallocate();
- _M_end_of_storage = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
- _M_start = iterator(__q, 0);
- }
- }
- }
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-public:
- iterator begin() { return _M_start; }
- const_iterator begin() const { return _M_start; }
- iterator end() { return _M_finish; }
- const_iterator end() const { return _M_finish; }
-
- reverse_iterator rbegin() { return reverse_iterator(end()); }
- const_reverse_iterator rbegin() const {
- return const_reverse_iterator(end());
- }
- reverse_iterator rend() { return reverse_iterator(begin()); }
- const_reverse_iterator rend() const {
- return const_reverse_iterator(begin());
- }
-
- size_type size() const { return size_type(end() - begin()); }
- size_type max_size() const { return size_type(-1); }
- size_type capacity() const {
- return size_type(const_iterator(_M_end_of_storage, 0) - begin());
- }
- bool empty() const { return begin() == end(); }
- reference operator[](size_type __n) {
- return *(begin() + difference_type(__n));
- }
- const_reference operator[](size_type __n) const {
- return *(begin() + difference_type(__n));
- }
-
- explicit __BVECTOR(const allocator_type& __a = allocator_type())
- : _Base(__a) {}
-
- __BVECTOR(size_type __n, bool __value,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- _M_initialize(__n);
- fill(_M_start._M_p, _M_end_of_storage, __value ? ~0 : 0);
- }
-
- explicit __BVECTOR(size_type __n)
- : _Base(allocator_type())
- {
- _M_initialize(__n);
- fill(_M_start._M_p, _M_end_of_storage, 0);
- }
-
- __BVECTOR(const __BVECTOR& __x) : _Base(__x.get_allocator()) {
- _M_initialize(__x.size());
- copy(__x.begin(), __x.end(), _M_start);
- }
-
-#ifdef __STL_MEMBER_TEMPLATES
- // Check whether it's an integral type. If so, it's not an iterator.
- template <class _InputIterator>
- __BVECTOR(_InputIterator __first, _InputIterator __last,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_initialize_dispatch(__first, __last, _Integral());
- }
-
- template <class _Integer>
- void _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) {
- _M_initialize(__n);
- fill(_M_start._M_p, _M_end_of_storage, __x ? ~0 : 0);
- }
-
- template <class _InputIterator>
- void _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
- __false_type) {
- _M_initialize_range(__first, __last, __ITERATOR_CATEGORY(__first));
- }
-#else /* __STL_MEMBER_TEMPLATES */
- __BVECTOR(const_iterator __first, const_iterator __last,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- size_type __n = 0;
- distance(__first, __last, __n);
- _M_initialize(__n);
- copy(__first, __last, _M_start);
- }
- __BVECTOR(const bool* __first, const bool* __last,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- size_type __n = 0;
- distance(__first, __last, __n);
- _M_initialize(__n);
- copy(__first, __last, _M_start);
- }
-#endif /* __STL_MEMBER_TEMPLATES */
-
- ~__BVECTOR() { }
-
- __BVECTOR& operator=(const __BVECTOR& __x) {
- if (&__x == this) return *this;
- if (__x.size() > capacity()) {
- _M_deallocate();
- _M_initialize(__x.size());
- }
- copy(__x.begin(), __x.end(), begin());
- _M_finish = begin() + difference_type(__x.size());
- return *this;
- }
-
- // assign(), a generalized assignment member function. Two
- // versions: one that takes a count, and one that takes a range.
- // The range version is a member template, so we dispatch on whether
- // or not the type is an integer.
-
- void assign(size_t __n, bool __x) {
- if (__n > size()) {
- fill(_M_start._M_p, _M_end_of_storage, __x ? ~0 : 0);
- insert(end(), __n - size(), __x);
- }
- else {
- erase(begin() + __n, end());
- fill(_M_start._M_p, _M_end_of_storage, __x ? ~0 : 0);
- }
- }
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- template <class _InputIterator>
- void assign(_InputIterator __first, _InputIterator __last) {
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_assign_dispatch(__first, __last, _Integral());
- }
-
- template <class _Integer>
- void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
- { assign((size_t) __n, (bool) __val); }
-
- template <class _InputIter>
- void _M_assign_dispatch(_InputIter __first, _InputIter __last, __false_type)
- { _M_assign_aux(__first, __last, __ITERATOR_CATEGORY(__first)); }
-
- template <class _InputIterator>
- void _M_assign_aux(_InputIterator __first, _InputIterator __last,
- input_iterator_tag) {
- iterator __cur = begin();
- for ( ; __first != __last && __cur != end(); ++__cur, ++__first)
- *__cur = *__first;
- if (__first == __last)
- erase(__cur, end());
- else
- insert(end(), __first, __last);
- }
-
- template <class _ForwardIterator>
- void _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
- forward_iterator_tag) {
- size_type __len = 0;
- distance(__first, __last, __len);
- if (__len < size())
- erase(copy(__first, __last, begin()), end());
- else {
- _ForwardIterator __mid = __first;
- advance(__mid, size());
- copy(__first, __mid, begin());
- insert(end(), __mid, __last);
- }
- }
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
- void reserve(size_type __n) {
- if (capacity() < __n) {
- unsigned int* __q = _M_bit_alloc(__n);
- _M_finish = copy(begin(), end(), iterator(__q, 0));
- _M_deallocate();
- _M_start = iterator(__q, 0);
- _M_end_of_storage = __q + (__n + __WORD_BIT - 1)/__WORD_BIT;
- }
- }
-
- reference front() { return *begin(); }
- const_reference front() const { return *begin(); }
- reference back() { return *(end() - 1); }
- const_reference back() const { return *(end() - 1); }
- void push_back(bool __x) {
- if (_M_finish._M_p != _M_end_of_storage)
- *_M_finish++ = __x;
- else
- _M_insert_aux(end(), __x);
- }
- void swap(__BVECTOR& __x) {
- __STD::swap(_M_start, __x._M_start);
- __STD::swap(_M_finish, __x._M_finish);
- __STD::swap(_M_end_of_storage, __x._M_end_of_storage);
- }
- iterator insert(iterator __position, bool __x = bool()) {
- difference_type __n = __position - begin();
- if (_M_finish._M_p != _M_end_of_storage && __position == end())
- *_M_finish++ = __x;
- else
- _M_insert_aux(__position, __x);
- return begin() + __n;
- }
-
-#ifdef __STL_MEMBER_TEMPLATES
- // Check whether it's an integral type. If so, it's not an iterator.
- template <class _InputIterator>
- void insert(iterator __position,
- _InputIterator __first, _InputIterator __last) {
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_insert_dispatch(__position, __first, __last, _Integral());
- }
-
- template <class _Integer>
- void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x,
- __true_type) {
- insert(__pos, (size_type) __n, (bool) __x);
- }
-
- template <class _InputIterator>
- void _M_insert_dispatch(iterator __pos,
- _InputIterator __first, _InputIterator __last,
- __false_type) {
- _M_insert_range(__pos, __first, __last, __ITERATOR_CATEGORY(__first));
- }
-#else /* __STL_MEMBER_TEMPLATES */
- void insert(iterator __position,
- const_iterator __first, const_iterator __last) {
- if (__first == __last) return;
- size_type __n = 0;
- distance(__first, __last, __n);
- if (capacity() - size() >= __n) {
- copy_backward(__position, end(), _M_finish + __n);
- copy(__first, __last, __position);
- _M_finish += __n;
- }
- else {
- size_type __len = size() + max(size(), __n);
- unsigned int* __q = _M_bit_alloc(__len);
- iterator __i = copy(begin(), __position, iterator(__q, 0));
- __i = copy(__first, __last, __i);
- _M_finish = copy(__position, end(), __i);
- _M_deallocate();
- _M_end_of_storage = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
- _M_start = iterator(__q, 0);
- }
- }
-
- void insert(iterator __position, const bool* __first, const bool* __last) {
- if (__first == __last) return;
- size_type __n = 0;
- distance(__first, __last, __n);
- if (capacity() - size() >= __n) {
- copy_backward(__position, end(), _M_finish + __n);
- copy(__first, __last, __position);
- _M_finish += __n;
- }
- else {
- size_type __len = size() + max(size(), __n);
- unsigned int* __q = _M_bit_alloc(__len);
- iterator __i = copy(begin(), __position, iterator(__q, 0));
- __i = copy(__first, __last, __i);
- _M_finish = copy(__position, end(), __i);
- _M_deallocate();
- _M_end_of_storage = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
- _M_start = iterator(__q, 0);
- }
- }
-#endif /* __STL_MEMBER_TEMPLATES */
-
- void insert(iterator __position, size_type __n, bool __x) {
- if (__n == 0) return;
- if (capacity() - size() >= __n) {
- copy_backward(__position, end(), _M_finish + difference_type(__n));
- fill(__position, __position + difference_type(__n), __x);
- _M_finish += difference_type(__n);
- }
- else {
- size_type __len = size() + max(size(), __n);
- unsigned int* __q = _M_bit_alloc(__len);
- iterator __i = copy(begin(), __position, iterator(__q, 0));
- fill_n(__i, __n, __x);
- _M_finish = copy(__position, end(), __i + difference_type(__n));
- _M_deallocate();
- _M_end_of_storage = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
- _M_start = iterator(__q, 0);
- }
- }
-
- void pop_back() { --_M_finish; }
- iterator erase(iterator __position) {
- if (__position + 1 != end())
- copy(__position + 1, end(), __position);
- --_M_finish;
- return __position;
- }
- iterator erase(iterator __first, iterator __last) {
- _M_finish = copy(__last, end(), __first);
- return __first;
- }
- void resize(size_type __new_size, bool __x = bool()) {
- if (__new_size < size())
- erase(begin() + difference_type(__new_size), end());
- else
- insert(end(), __new_size - size(), __x);
- }
- void clear() { erase(begin(), end()); }
-};
-
-#ifdef __SGI_STL_VECBOOL_TEMPLATE
-
-typedef vector<bool, alloc> bit_vector;
-
-#else /* __SGI_STL_VECBOOL_TEMPLATE */
-
-inline bool
-operator==(const bit_vector& __x, const bit_vector& __y)
-{
- return (__x.size() == __y.size() &&
- equal(__x.begin(), __x.end(), __y.begin()));
-}
-
-inline bool
-operator<(const bit_vector& __x, const bit_vector& __y)
-{
- return lexicographical_compare(__x.begin(), __x.end(),
- __y.begin(), __y.end());
-}
-
-#endif /* __SGI_STL_VECBOOL_TEMPLATE */
-
-#undef __SGI_STL_VECBOOL_TEMPLATE
-#undef __BVECTOR
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1174
-#pragma reset woff 1375
-#endif
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_BVECTOR_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_config.h b/contrib/libstdc++/stl/stl_config.h
deleted file mode 100644
index d72f9e1..0000000
--- a/contrib/libstdc++/stl/stl_config.h
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- * Copyright (c) 1997
- * Silicon Graphics
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-#ifndef __STL_CONFIG_H
-# define __STL_CONFIG_H
-
-// Flags:
-// * __STL_NO_BOOL: defined if the compiler doesn't have bool as a builtin
-// type.
-// * __STL_HAS_WCHAR_T: defined if the compier has wchar_t as a builtin type.
-// * __STL_NO_DRAND48: defined if the compiler doesn't have the drand48
-// function.
-// * __STL_STATIC_TEMPLATE_MEMBER_BUG: defined if the compiler can't handle
-// static members of template classes.
-// * __STL_CLASS_PARTIAL_SPECIALIZATION: defined if the compiler supports
-// partial specialization of template classes.
-// * __STL_PARTIAL_SPECIALIZATION_SYNTAX: defined if the compiler
-// supports partial specialization syntax for full specialization of
-// class templates. (Even if it doesn't actually support partial
-// specialization itself.)
-// * __STL_FUNCTION_TMPL_PARTIAL_ORDER: defined if the compiler supports
-// partial ordering of function templates. (a.k.a partial specialization
-// of function templates.)
-// * __STL_MEMBER_TEMPLATES: defined if the compiler supports template
-// member functions of classes.
-// * __STL_MEMBER_TEMPLATE_CLASSES: defined if the compiler supports
-// nested classes that are member templates of other classes.
-// * __STL_EXPLICIT_FUNCTION_TMPL_ARGS: defined if the compiler
-// supports calling a function template by providing its template
-// arguments explicitly.
-// * __STL_LIMITED_DEFAULT_TEMPLATES: defined if the compiler is unable
-// to handle default template parameters that depend on previous template
-// parameters.
-// * __STL_NON_TYPE_TMPL_PARAM_BUG: defined if the compiler has trouble with
-// function template argument deduction for non-type template parameters.
-// * __SGI_STL_NO_ARROW_OPERATOR: defined if the compiler is unable
-// to support the -> operator for iterators.
-// * __STL_USE_EXCEPTIONS: defined if the compiler (in the current compilation
-// mode) supports exceptions.
-// * __STL_USE_NAMESPACES: defined if the compiler has the necessary
-// support for namespaces.
-// * __STL_NO_EXCEPTION_HEADER: defined if the compiler does not have a
-// standard-conforming header <exception>.
-// * __STL_SGI_THREADS: defined if this is being compiled for an SGI IRIX
-// system in multithreaded mode, using native SGI threads instead of
-// pthreads.
-// * __STL_WIN32THREADS: defined if this is being compiled on a WIN32
-// compiler in multithreaded mode.
-// * __STL_LONG_LONG if the compiler has long long and unsigned long long
-// types. (They're not in the C++ standard, but they are expected to be
-// included in the forthcoming C9X standard.)
-
-
-// User-settable macros that control compilation:
-// * __STL_USE_SGI_ALLOCATORS: if defined, then the STL will use older
-// SGI-style allocators, instead of standard-conforming allocators,
-// even if the compiler supports all of the language features needed
-// for standard-conforming allocators.
-// * __STL_NO_NAMESPACES: if defined, don't put the library in namespace
-// std, even if the compiler supports namespaces.
-// * __STL_ASSERTIONS: if defined, then enable runtime checking through the
-// __stl_assert macro.
-// * _PTHREADS: if defined, use Posix threads for multithreading support.
-// * _NOTHREADS: if defined, don't use any multithreading support.
-
-
-// Other macros defined by this file:
-
-// * bool, true, and false, if __STL_NO_BOOL is defined.
-// * typename, as a null macro if it's not already a keyword.
-// * explicit, as a null macro if it's not already a keyword.
-// * namespace-related macros (__STD, __STL_BEGIN_NAMESPACE, etc.)
-// * exception-related macros (__STL_TRY, __STL_UNWIND, etc.)
-// * __stl_assert, either as a test or as a null macro, depending on
-// whether or not __STL_ASSERTIONS is defined.
-
-#ifdef _PTHREADS
-# define __STL_PTHREADS
-#endif
-#ifdef _SOLTHREADS
-# define __STL_SOLTHREADS
-#endif
-
-# if defined(__sgi) && !defined(__GNUC__)
-# if !defined(_BOOL)
-# define __STL_NO_BOOL
-# endif
-# if defined(_WCHAR_T_IS_KEYWORD)
-# define __STL_HAS_WCHAR_T
-# endif
-# if !defined(_TYPENAME_IS_KEYWORD)
-# define __STL_NEED_TYPENAME
-# endif
-# ifdef _PARTIAL_SPECIALIZATION_OF_CLASS_TEMPLATES
-# define __STL_CLASS_PARTIAL_SPECIALIZATION
-# endif
-# ifdef _MEMBER_TEMPLATES
-# define __STL_MEMBER_TEMPLATES
-# define __STL_MEMBER_TEMPLATE_CLASSES
-# endif
-# if defined(_MEMBER_TEMPLATE_KEYWORD)
-# define __STL_MEMBER_TEMPLATE_KEYWORD
-# endif
-# if (_COMPILER_VERSION >= 730) && defined(_MIPS_SIM) && _MIPS_SIM != _ABIO32
-# define __STL_MEMBER_TEMPLATE_KEYWORD
-# endif
-# if !defined(_EXPLICIT_IS_KEYWORD)
-# define __STL_NEED_EXPLICIT
-# endif
-# ifdef __EXCEPTIONS
-# define __STL_USE_EXCEPTIONS
-# endif
-# if (_COMPILER_VERSION >= 721) && defined(_NAMESPACES)
-# define __STL_HAS_NAMESPACES
-# endif
-# if (_COMPILER_VERSION < 721)
-# define __STL_NO_EXCEPTION_HEADER
-# endif
-# if !defined(_NOTHREADS) && !defined(__STL_PTHREADS)
-# define __STL_SGI_THREADS
-# endif
-# if defined(_LONGLONG) && defined(_SGIAPI) && _SGIAPI
-# define __STL_LONG_LONG
-# endif
-# endif
-
-# ifdef __GNUC__
-# include <_G_config.h>
-# define __STL_HAS_WCHAR_T
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8)
-# define __STL_STATIC_TEMPLATE_MEMBER_BUG
-# define __STL_NEED_TYPENAME
-# define __STL_NEED_EXPLICIT
-# else
-# define __STL_CLASS_PARTIAL_SPECIALIZATION
-# define __STL_FUNCTION_TMPL_PARTIAL_ORDER
-# define __STL_MEMBER_TEMPLATES
-# define __STL_MEMBER_TEMPLATE_CLASSES
-# define __STL_EXPLICIT_FUNCTION_TMPL_ARGS
-# define __STL_HAS_NAMESPACES
-# define __STL_NO_NAMESPACES
-# define __SGI_STL_USE_AUTO_PTR_CONVERSIONS
-# define __STL_USE_NAMESPACES
-# endif
-# if defined(__linux__)
- /* glibc pre 2.0 is very buggy. We have to disable thread for it.
- It should be upgraded to glibc 2.0 or later. */
-# if !defined(_NOTHREADS) && __GLIBC__ >= 2 && defined(_G_USING_THUNKS)
-# define __STL_PTHREADS
-# ifdef __STRICT_ANSI__
- /* Work around a bug in the glibc 2.0.x pthread.h. */
-# define sigset_t __sigset_t
-# endif
-# endif
-# endif
-# ifdef __EXCEPTIONS
-# define __STL_USE_EXCEPTIONS
-# endif
-# ifndef __STRICT_ANSI__
-# define __STL_LONG_LONG
-# endif
-# endif
-
-# if defined(__SUNPRO_CC)
-# define __STL_NO_BOOL
-# define __STL_NEED_TYPENAME
-# define __STL_NEED_EXPLICIT
-# define __STL_USE_EXCEPTIONS
-# endif
-
-# if defined(__COMO__)
-# define __STL_MEMBER_TEMPLATES
-# define __STL_MEMBER_TEMPLATE_CLASSES
-# define __STL_CLASS_PARTIAL_SPECIALIZATION
-# define __STL_USE_EXCEPTIONS
-# define __STL_HAS_NAMESPACES
-# endif
-
-# if defined(__MINGW32__)
-# define __STL_NO_DRAND48
-# endif
-
-# if defined(__CYGWIN__)
-# define __STL_NO_DRAND48
-# endif
-
-# if defined(_MSC_VER)
-# define __STL_NO_DRAND48
-# define __STL_NEED_TYPENAME
-# if _MSC_VER < 1100 /* 1000 is version 4.0, 1100 is 5.0, 1200 is 6.0. */
-# define __STL_NEED_EXPLICIT
-# define __STL_NO_BOOL
-# if _MSC_VER > 1000
-# include <yvals.h>
-# define __STL_DONT_USE_BOOL_TYPEDEF
-# endif
-# endif
-# define __STL_NON_TYPE_TMPL_PARAM_BUG
-# define __SGI_STL_NO_ARROW_OPERATOR
-# ifdef _CPPUNWIND
-# define __STL_USE_EXCEPTIONS
-# endif
-# ifdef _MT
-# define __STL_WIN32THREADS
-# endif
-# if _MSC_VER >= 1200
-# define __STL_PARTIAL_SPECIALIZATION_SYNTAX
-# define __STL_HAS_NAMESPACES
-# define __STL_NO_NAMESPACES
-# endif
-# endif
-
-# if defined(__BORLANDC__)
-# define __STL_NO_DRAND48
-# define __STL_NEED_TYPENAME
-# define __STL_LIMITED_DEFAULT_TEMPLATES
-# define __SGI_STL_NO_ARROW_OPERATOR
-# define __STL_NON_TYPE_TMPL_PARAM_BUG
-# ifdef _CPPUNWIND
-# define __STL_USE_EXCEPTIONS
-# endif
-# ifdef __MT__
-# define __STL_WIN32THREADS
-# endif
-# endif
-
-# if defined(__STL_NO_BOOL) && !defined(__STL_DONT_USE_BOOL_TYPEDEF)
- typedef int bool;
-# define true 1
-# define false 0
-# endif
-
-# ifdef __STL_NEED_TYPENAME
-# define typename
-# endif
-
-# ifdef __STL_MEMBER_TEMPLATE_KEYWORD
-# define __STL_TEMPLATE template
-# else
-# define __STL_TEMPLATE
-# endif
-
-# ifdef __STL_NEED_EXPLICIT
-# define explicit
-# endif
-
-# ifdef __STL_EXPLICIT_FUNCTION_TMPL_ARGS
-# define __STL_NULL_TMPL_ARGS <>
-# else
-# define __STL_NULL_TMPL_ARGS
-# endif
-
-# if defined(__STL_CLASS_PARTIAL_SPECIALIZATION) \
- || defined (__STL_PARTIAL_SPECIALIZATION_SYNTAX)
-# define __STL_TEMPLATE_NULL template<>
-# else
-# define __STL_TEMPLATE_NULL
-# endif
-
-// Use standard-conforming allocators if we have the necessary language
-// features. __STL_USE_SGI_ALLOCATORS is a hook so that users can
-// disable new-style allocators, and continue to use the same kind of
-// allocators as before, without having to edit library headers.
-# if defined(__STL_CLASS_PARTIAL_SPECIALIZATION) && \
- defined(__STL_MEMBER_TEMPLATES) && \
- defined(__STL_MEMBER_TEMPLATE_CLASSES) && \
- !defined(__STL_NO_BOOL) && \
- !defined(__STL_NON_TYPE_TMPL_PARAM_BUG) && \
- !defined(__STL_LIMITED_DEFAULT_TEMPLATES) && \
- !defined(__STL_USE_SGI_ALLOCATORS)
-# define __STL_USE_STD_ALLOCATORS
-# endif
-
-# ifndef __STL_DEFAULT_ALLOCATOR
-# ifdef __STL_USE_STD_ALLOCATORS
-# define __STL_DEFAULT_ALLOCATOR(T) allocator<T>
-# else
-# define __STL_DEFAULT_ALLOCATOR(T) alloc
-# endif
-# endif
-
-// __STL_NO_NAMESPACES is a hook so that users can disable namespaces
-// without having to edit library headers.
-# if defined(__STL_HAS_NAMESPACES) && !defined(__STL_NO_NAMESPACES)
-# define __STD std
-# define __STL_BEGIN_NAMESPACE namespace std {
-# define __STL_END_NAMESPACE }
-# define __STL_USE_NAMESPACE_FOR_RELOPS
-# define __STL_BEGIN_RELOPS_NAMESPACE namespace std {
-# define __STL_END_RELOPS_NAMESPACE }
-# define __STD_RELOPS std
-# define __STL_USE_NAMESPACES
-# else
-# define __STD
-# define __STL_BEGIN_NAMESPACE
-# define __STL_END_NAMESPACE
-# undef __STL_USE_NAMESPACE_FOR_RELOPS
-# define __STL_BEGIN_RELOPS_NAMESPACE
-# define __STL_END_RELOPS_NAMESPACE
-# define __STD_RELOPS
-# undef __STL_USE_NAMESPACES
-# endif
-
-# ifdef __STL_USE_EXCEPTIONS
-# define __STL_TRY try
-# define __STL_CATCH_ALL catch(...)
-# define __STL_THROW(x) throw x
-# define __STL_RETHROW throw
-# define __STL_NOTHROW throw()
-# define __STL_UNWIND(action) catch(...) { action; throw; }
-# else
-# define __STL_TRY
-# define __STL_CATCH_ALL if (false)
-# define __STL_THROW(x)
-# define __STL_RETHROW
-# define __STL_NOTHROW
-# define __STL_UNWIND(action)
-# endif
-
-#ifdef __STL_ASSERTIONS
-# include <stdio.h>
-# define __stl_assert(expr) \
- if (!(expr)) { fprintf(stderr, "%s:%d STL assertion failure: %s\n", \
- __FILE__, __LINE__, # expr); abort(); }
-#else
-# define __stl_assert(expr)
-#endif
-
-#endif /* __STL_CONFIG_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_construct.h b/contrib/libstdc++/stl/stl_construct.h
deleted file mode 100644
index 761784d..0000000
--- a/contrib/libstdc++/stl/stl_construct.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_CONSTRUCT_H
-#define __SGI_STL_INTERNAL_CONSTRUCT_H
-
-#include <new.h>
-
-__STL_BEGIN_NAMESPACE
-
-// construct and destroy. These functions are not part of the C++ standard,
-// and are provided for backward compatibility with the HP STL.
-
-template <class _Tp>
-inline void destroy(_Tp* __pointer) {
- __pointer->~_Tp();
-}
-
-template <class _T1, class _T2>
-inline void construct(_T1* __p, const _T2& __value) {
- new (__p) _T1(__value);
-}
-
-template <class _T1>
-inline void construct(_T1* __p) {
- new (__p) _T1();
-}
-
-template <class _ForwardIterator>
-inline void
-__destroy_aux(_ForwardIterator __first, _ForwardIterator __last, __false_type)
-{
- for ( ; __first != __last; ++__first)
- destroy(&*__first);
-}
-
-template <class _ForwardIterator>
-inline void __destroy_aux(_ForwardIterator, _ForwardIterator, __true_type) {}
-
-template <class _ForwardIterator, class _Tp>
-inline void
-__destroy(_ForwardIterator __first, _ForwardIterator __last, _Tp*)
-{
- typedef typename __type_traits<_Tp>::has_trivial_destructor
- _Trivial_destructor;
- __destroy_aux(__first, __last, _Trivial_destructor());
-}
-
-template <class _ForwardIterator>
-inline void destroy(_ForwardIterator __first, _ForwardIterator __last) {
- __destroy(__first, __last, __VALUE_TYPE(__first));
-}
-
-inline void destroy(char*, char*) {}
-inline void destroy(wchar_t*, wchar_t*) {}
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_CONSTRUCT_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_deque.h b/contrib/libstdc++/stl/stl_deque.h
deleted file mode 100644
index 24a8bfb..0000000
--- a/contrib/libstdc++/stl/stl_deque.h
+++ /dev/null
@@ -1,1698 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_DEQUE_H
-#define __SGI_STL_INTERNAL_DEQUE_H
-
-/* Class invariants:
- * For any nonsingular iterator i:
- * i.node is the address of an element in the map array. The
- * contents of i.node is a pointer to the beginning of a node.
- * i.first == *(i.node)
- * i.last == i.first + node_size
- * i.cur is a pointer in the range [i.first, i.last). NOTE:
- * the implication of this is that i.cur is always a dereferenceable
- * pointer, even if i is a past-the-end iterator.
- * Start and Finish are always nonsingular iterators. NOTE: this means
- * that an empty deque must have one node, and that a deque
- * with N elements, where N is the buffer size, must have two nodes.
- * For every node other than start.node and finish.node, every element
- * in the node is an initialized object. If start.node == finish.node,
- * then [start.cur, finish.cur) are initialized objects, and
- * the elements outside that range are uninitialized storage. Otherwise,
- * [start.cur, start.last) and [finish.first, finish.cur) are initialized
- * objects, and [start.first, start.cur) and [finish.cur, finish.last)
- * are uninitialized storage.
- * [map, map + map_size) is a valid, non-empty range.
- * [start.node, finish.node] is a valid range contained within
- * [map, map + map_size).
- * A pointer in the range [map, map + map_size) points to an allocated node
- * if and only if the pointer is in the range [start.node, finish.node].
- */
-
-
-/*
- * In previous versions of deque, node_size was fixed by the
- * implementation. In this version, however, users can select
- * the node size. Deque has three template parameters; the third,
- * a number of type size_t, is the number of elements per node.
- * If the third template parameter is 0 (which is the default),
- * then deque will use a default node size.
- *
- * The only reason for using an alternate node size is if your application
- * requires a different performance tradeoff than the default. If,
- * for example, your program contains many deques each of which contains
- * only a few elements, then you might want to save memory (possibly
- * by sacrificing some speed) by using smaller nodes.
- *
- * Unfortunately, some compilers have trouble with non-type template
- * parameters; stl_config.h defines __STL_NON_TYPE_TMPL_PARAM_BUG if
- * that is the case. If your compiler is one of them, then you will
- * not be able to use alternate node sizes; you will have to use the
- * default value.
- */
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1174
-#pragma set woff 1375
-#endif
-
-// Note: this function is simply a kludge to work around several compilers'
-// bugs in handling constant expressions.
-inline size_t
-__deque_buf_size(size_t __n, size_t __size)
-{
- return __n != 0 ? __n : (__size < 512 ? size_t(512 / __size) : size_t(1));
-}
-
-#ifndef __STL_NON_TYPE_TMPL_PARAM_BUG
-template <class _Tp, class _Ref, class _Ptr, size_t __bufsiz>
-struct _Deque_iterator {
- typedef _Deque_iterator<_Tp,_Tp&,_Tp*,__bufsiz> iterator;
- typedef _Deque_iterator<_Tp,const _Tp&,const _Tp*,__bufsiz> const_iterator;
- static size_t
- _S_buffer_size() { return __deque_buf_size(__bufsiz, sizeof(_Tp)); }
-#else /* __STL_NON_TYPE_TMPL_PARAM_BUG */
-template <class _Tp, class _Ref, class _Ptr>
-struct _Deque_iterator {
- typedef _Deque_iterator<_Tp, _Tp&, _Tp*> iterator;
- typedef _Deque_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;
- static size_t
- _S_buffer_size() { return __deque_buf_size(0, sizeof(_Tp)); }
-#endif
-
- typedef random_access_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef _Ptr pointer;
- typedef _Ref reference;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp** _Map_pointer;
-
- typedef _Deque_iterator _Self;
-
- _Tp* _M_cur;
- _Tp* _M_first;
- _Tp* _M_last;
- _Map_pointer _M_node;
-
- _Deque_iterator(_Tp* __x, _Map_pointer __y)
- : _M_cur(__x), _M_first(*__y),
- _M_last(*__y + _S_buffer_size()), _M_node(__y) {}
- _Deque_iterator() : _M_cur(0), _M_first(0), _M_last(0), _M_node(0) {}
- _Deque_iterator(const iterator& __x)
- : _M_cur(__x._M_cur), _M_first(__x._M_first),
- _M_last(__x._M_last), _M_node(__x._M_node) {}
-
- reference operator*() const { return *_M_cur; }
-#ifndef __SGI_STL_NO_ARROW_OPERATOR
- pointer operator->() const { return _M_cur; }
-#endif /* __SGI_STL_NO_ARROW_OPERATOR */
-
- difference_type operator-(const _Self& __x) const {
- return difference_type(_S_buffer_size()) * (_M_node - __x._M_node - 1) +
- (_M_cur - _M_first) + (__x._M_last - __x._M_cur);
- }
-
- _Self& operator++() {
- ++_M_cur;
- if (_M_cur == _M_last) {
- _M_set_node(_M_node + 1);
- _M_cur = _M_first;
- }
- return *this;
- }
- _Self operator++(int) {
- _Self __tmp = *this;
- ++*this;
- return __tmp;
- }
-
- _Self& operator--() {
- if (_M_cur == _M_first) {
- _M_set_node(_M_node - 1);
- _M_cur = _M_last;
- }
- --_M_cur;
- return *this;
- }
- _Self operator--(int) {
- _Self __tmp = *this;
- --*this;
- return __tmp;
- }
-
- _Self& operator+=(difference_type __n)
- {
- difference_type __offset = __n + (_M_cur - _M_first);
- if (__offset >= 0 && __offset < difference_type(_S_buffer_size()))
- _M_cur += __n;
- else {
- difference_type __node_offset =
- __offset > 0 ? __offset / difference_type(_S_buffer_size())
- : -difference_type((-__offset - 1) / _S_buffer_size()) - 1;
- _M_set_node(_M_node + __node_offset);
- _M_cur = _M_first +
- (__offset - __node_offset * difference_type(_S_buffer_size()));
- }
- return *this;
- }
-
- _Self operator+(difference_type __n) const
- {
- _Self __tmp = *this;
- return __tmp += __n;
- }
-
- _Self& operator-=(difference_type __n) { return *this += -__n; }
-
- _Self operator-(difference_type __n) const {
- _Self __tmp = *this;
- return __tmp -= __n;
- }
-
- reference operator[](difference_type __n) const { return *(*this + __n); }
-
- bool operator==(const _Self& __x) const { return _M_cur == __x._M_cur; }
- bool operator!=(const _Self& __x) const { return !(*this == __x); }
- bool operator<(const _Self& __x) const {
- return (_M_node == __x._M_node) ?
- (_M_cur < __x._M_cur) : (_M_node < __x._M_node);
- }
-
- void _M_set_node(_Map_pointer __new_node) {
- _M_node = __new_node;
- _M_first = *__new_node;
- _M_last = _M_first + difference_type(_S_buffer_size());
- }
-};
-
-#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-#ifndef __STL_NON_TYPE_TMPL_PARAM_BUG
-
-template <class _Tp, class _Ref, class _Ptr, size_t __bufsiz>
-inline random_access_iterator_tag
-iterator_category(const _Deque_iterator<_Tp,_Ref,_Ptr,__bufsiz>&) {
- return random_access_iterator_tag();
-}
-
-template <class _Tp, class _Ref, class _Ptr, size_t __bufsiz>
-inline _Tp*
-value_type(const _Deque_iterator<_Tp,_Ref,_Ptr,__bufsiz>&) {
- return 0;
-}
-
-template <class _Tp, class _Ref, class _Ptr, size_t __bufsiz>
-inline ptrdiff_t*
-distance_type(const _Deque_iterator<_Tp,_Ref,_Ptr,__bufsiz>&) {
- return 0;
-}
-
-#else /* __STL_NON_TYPE_TMPL_PARAM_BUG */
-
-template <class _Tp, class _Ref, class _Ptr>
-inline random_access_iterator_tag
-iterator_category(const _Deque_iterator<_Tp,_Ref,_Ptr>&)
-{
- return random_access_iterator_tag();
-}
-
-template <class _Tp, class _Ref, class _Ptr>
-inline _Tp*
-value_type(const _Deque_iterator<_Tp,_Ref,_Ptr>&) { return 0; }
-
-template <class _Tp, class _Ref, class _Ptr>
-inline ptrdiff_t*
-distance_type(const _Deque_iterator<_Tp,_Ref,_Ptr>&) {
- return 0;
-}
-
-#endif /* __STL_NON_TYPE_TMPL_PARAM_BUG */
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-// Deque base class. It has two purposes. First, its constructor
-// and destructor allocate (but don't initialize) storage. This makes
-// exception safety easier. Second, the base class encapsulates all of
-// the differences between SGI-style allocators and standard-conforming
-// allocators.
-
-#ifdef __STL_USE_STD_ALLOCATORS
-
-// Base class for ordinary allocators.
-template <class _Tp, class _Alloc, size_t __bufsiz, bool __is_static>
-class _Deque_alloc_base {
-public:
- typedef typename _Alloc_traits<_Tp,_Alloc>::allocator_type allocator_type;
- allocator_type get_allocator() const { return node_allocator; }
-
- _Deque_alloc_base(const allocator_type& __a)
- : node_allocator(__a), map_allocator(__a), _M_map(0), _M_map_size(0)
- {}
-
-protected:
- typedef typename _Alloc_traits<_Tp*, _Alloc>::allocator_type
- map_allocator_type;
-
- allocator_type node_allocator;
- map_allocator_type map_allocator;
-
- _Tp* _M_allocate_node() {
- return node_allocator.allocate(__deque_buf_size(__bufsiz,sizeof(_Tp)));
- }
- void _M_deallocate_node(_Tp* __p) {
- node_allocator.deallocate(__p, __deque_buf_size(__bufsiz,sizeof(_Tp)));
- }
- _Tp** _M_allocate_map(size_t __n)
- { return map_allocator.allocate(__n); }
- void _M_deallocate_map(_Tp** __p, size_t __n)
- { map_allocator.deallocate(__p, __n); }
-
- _Tp** _M_map;
- size_t _M_map_size;
-};
-
-// Specialization for instanceless allocators.
-template <class _Tp, class _Alloc, size_t __bufsiz>
-class _Deque_alloc_base<_Tp, _Alloc, __bufsiz, true>
-{
-public:
- typedef typename _Alloc_traits<_Tp,_Alloc>::allocator_type allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
-
- _Deque_alloc_base(const allocator_type&) : _M_map(0), _M_map_size(0) {}
-
-protected:
- typedef typename _Alloc_traits<_Tp, _Alloc>::_Alloc_type _Node_alloc_type;
- typedef typename _Alloc_traits<_Tp*, _Alloc>::_Alloc_type _Map_alloc_type;
-
- _Tp* _M_allocate_node()
- { return _Node_alloc_type::allocate(__deque_buf_size(__bufsiz,
- sizeof(_Tp))); }
- void _M_deallocate_node(_Tp* __p)
- { _Node_alloc_type::deallocate(__p, __deque_buf_size(__bufsiz,
- sizeof(_Tp))); }
- _Tp** _M_allocate_map(size_t __n)
- { return _Map_alloc_type::allocate(__n); }
- void _M_deallocate_map(_Tp** __p, size_t __n)
- { _Map_alloc_type::deallocate(__p, __n); }
-
- _Tp** _M_map;
- size_t _M_map_size;
-};
-
-template <class _Tp, class _Alloc, size_t __bufsiz>
-class _Deque_base
- : public _Deque_alloc_base<_Tp,_Alloc,__bufsiz,
- _Alloc_traits<_Tp, _Alloc>::_S_instanceless>
-{
-public:
- typedef _Deque_alloc_base<_Tp,_Alloc,__bufsiz,
- _Alloc_traits<_Tp, _Alloc>::_S_instanceless>
- _Base;
- typedef typename _Base::allocator_type allocator_type;
- typedef _Deque_iterator<_Tp,_Tp&,_Tp*,__bufsiz> iterator;
- typedef _Deque_iterator<_Tp,const _Tp&,const _Tp*, __bufsiz> const_iterator;
-
- _Deque_base(const allocator_type& __a, size_t __num_elements)
- : _Base(__a), _M_start(), _M_finish()
- { _M_initialize_map(__num_elements); }
- _Deque_base(const allocator_type& __a)
- : _Base(__a), _M_start(), _M_finish() {}
- ~_Deque_base();
-
-protected:
- void _M_initialize_map(size_t);
- void _M_create_nodes(_Tp** __nstart, _Tp** __nfinish);
- void _M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish);
- enum { _S_initial_map_size = 8 };
-
-protected:
- iterator _M_start;
- iterator _M_finish;
-};
-
-#else /* __STL_USE_STD_ALLOCATORS */
-
-template <class _Tp, class _Alloc, size_t __bufsiz>
-class _Deque_base {
-public:
-#ifndef __STL_NON_TYPE_TMPL_PARAM_BUG
- typedef _Deque_iterator<_Tp,_Tp&,_Tp*,__bufsiz> iterator;
- typedef _Deque_iterator<_Tp,const _Tp&,const _Tp*, __bufsiz> const_iterator;
-#else /* __STL_NON_TYPE_TMPL_PARAM_BUG */
- typedef _Deque_iterator<_Tp,_Tp&,_Tp*> iterator;
- typedef _Deque_iterator<_Tp,const _Tp&,const _Tp*> const_iterator;
-#endif /* __STL_NON_TYPE_TMPL_PARAM_BUG */
-
- typedef _Alloc allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
-
- _Deque_base(const allocator_type&, size_t __num_elements)
- : _M_map(0), _M_map_size(0), _M_start(), _M_finish() {
- _M_initialize_map(__num_elements);
- }
- _Deque_base(const allocator_type&)
- : _M_map(0), _M_map_size(0), _M_start(), _M_finish() {}
- ~_Deque_base();
-
-protected:
- void _M_initialize_map(size_t);
- void _M_create_nodes(_Tp** __nstart, _Tp** __nfinish);
- void _M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish);
- enum { _S_initial_map_size = 8 };
-
-protected:
- _Tp** _M_map;
- size_t _M_map_size;
- iterator _M_start;
- iterator _M_finish;
-
- typedef simple_alloc<_Tp, _Alloc> _Node_alloc_type;
- typedef simple_alloc<_Tp*, _Alloc> _Map_alloc_type;
-
- _Tp* _M_allocate_node()
- { return _Node_alloc_type::allocate(__deque_buf_size(__bufsiz,
- sizeof(_Tp))); }
- void _M_deallocate_node(_Tp* __p)
- { _Node_alloc_type::deallocate(__p, __deque_buf_size(__bufsiz,
- sizeof(_Tp))); }
- _Tp** _M_allocate_map(size_t __n)
- { return _Map_alloc_type::allocate(__n); }
- void _M_deallocate_map(_Tp** __p, size_t __n)
- { _Map_alloc_type::deallocate(__p, __n); }
-};
-
-#endif /* __STL_USE_STD_ALLOCATORS */
-
-// Non-inline member functions from _Deque_base.
-
-template <class _Tp, class _Alloc, size_t __bufsiz>
-_Deque_base<_Tp,_Alloc,__bufsiz>::~_Deque_base() {
- if (_M_map) {
- _M_destroy_nodes(_M_start._M_node, _M_finish._M_node + 1);
- _M_deallocate_map(_M_map, _M_map_size);
- }
-}
-
-template <class _Tp, class _Alloc, size_t __bufsiz>
-void
-_Deque_base<_Tp,_Alloc,__bufsiz>::_M_initialize_map(size_t __num_elements)
-{
- size_t __num_nodes =
- __num_elements / __deque_buf_size(__bufsiz, sizeof(_Tp)) + 1;
-
- _M_map_size = max((size_t) _S_initial_map_size, __num_nodes + 2);
- _M_map = _M_allocate_map(_M_map_size);
-
- _Tp** __nstart = _M_map + (_M_map_size - __num_nodes) / 2;
- _Tp** __nfinish = __nstart + __num_nodes;
-
- __STL_TRY {
- _M_create_nodes(__nstart, __nfinish);
- }
- __STL_UNWIND((_M_deallocate_map(_M_map, _M_map_size),
- _M_map = 0, _M_map_size = 0));
- _M_start._M_set_node(__nstart);
- _M_finish._M_set_node(__nfinish - 1);
- _M_start._M_cur = _M_start._M_first;
- _M_finish._M_cur = _M_finish._M_first +
- __num_elements % __deque_buf_size(__bufsiz, sizeof(_Tp));
-}
-
-template <class _Tp, class _Alloc, size_t __bufsiz>
-void
-_Deque_base<_Tp,_Alloc,__bufsiz>::_M_create_nodes(_Tp** __nstart,
- _Tp** __nfinish)
-{
- _Tp** __cur;
- __STL_TRY {
- for (__cur = __nstart; __cur < __nfinish; ++__cur)
- *__cur = _M_allocate_node();
- }
- __STL_UNWIND(_M_destroy_nodes(__nstart, __cur));
-}
-
-template <class _Tp, class _Alloc, size_t __bufsiz>
-void
-_Deque_base<_Tp,_Alloc,__bufsiz>::_M_destroy_nodes(_Tp** __nstart,
- _Tp** __nfinish)
-{
- for (_Tp** __n = __nstart; __n < __nfinish; ++__n)
- _M_deallocate_node(*__n);
-}
-
-// See __deque_buf_size(). The only reason that the default value is 0
-// is as a workaround for bugs in the way that some compilers handle
-// constant expressions.
-template <class _Tp, class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp),
- size_t __bufsiz = 0>
-class deque : protected _Deque_base<_Tp, _Alloc, __bufsiz> {
- typedef _Deque_base<_Tp, _Alloc, __bufsiz> _Base;
-public: // Basic types
- typedef _Tp value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
-
- typedef typename _Base::allocator_type allocator_type;
- allocator_type get_allocator() const { return _Base::get_allocator(); }
-
-public: // Iterators
- typedef typename _Base::iterator iterator;
- typedef typename _Base::const_iterator const_iterator;
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
- typedef reverse_iterator<const_iterator> const_reverse_iterator;
- typedef reverse_iterator<iterator> reverse_iterator;
-#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */
- typedef reverse_iterator<const_iterator, value_type, const_reference,
- difference_type>
- const_reverse_iterator;
- typedef reverse_iterator<iterator, value_type, reference, difference_type>
- reverse_iterator;
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-protected: // Internal typedefs
- typedef pointer* _Map_pointer;
- static size_t _S_buffer_size()
- { return __deque_buf_size(__bufsiz, sizeof(_Tp)); }
-
-protected:
-#ifdef __STL_USE_NAMESPACES
- using _Base::_M_initialize_map;
- using _Base::_M_create_nodes;
- using _Base::_M_destroy_nodes;
- using _Base::_M_allocate_node;
- using _Base::_M_deallocate_node;
- using _Base::_M_allocate_map;
- using _Base::_M_deallocate_map;
-
- using _Base::_M_map;
- using _Base::_M_map_size;
- using _Base::_M_start;
- using _Base::_M_finish;
-#endif /* __STL_USE_NAMESPACES */
-
-public: // Basic accessors
- iterator begin() { return _M_start; }
- iterator end() { return _M_finish; }
- const_iterator begin() const { return _M_start; }
- const_iterator end() const { return _M_finish; }
-
- reverse_iterator rbegin() { return reverse_iterator(_M_finish); }
- reverse_iterator rend() { return reverse_iterator(_M_start); }
- const_reverse_iterator rbegin() const
- { return const_reverse_iterator(_M_finish); }
- const_reverse_iterator rend() const
- { return const_reverse_iterator(_M_start); }
-
- reference operator[](size_type __n)
- { return _M_start[difference_type(__n)]; }
- const_reference operator[](size_type __n) const
- { return _M_start[difference_type(__n)]; }
-
- reference front() { return *_M_start; }
- reference back() {
- iterator __tmp = _M_finish;
- --__tmp;
- return *__tmp;
- }
- const_reference front() const { return *_M_start; }
- const_reference back() const {
- const_iterator __tmp = _M_finish;
- --__tmp;
- return *__tmp;
- }
-
- size_type size() const { return _M_finish - _M_start;; }
- size_type max_size() const { return size_type(-1); }
- bool empty() const { return _M_finish == _M_start; }
-
-public: // Constructor, destructor.
- explicit deque(const allocator_type& __a = allocator_type())
- : _Base(__a, 0) {}
- deque(const deque& __x) : _Base(__x.get_allocator(), __x.size())
- { uninitialized_copy(__x.begin(), __x.end(), _M_start); }
- deque(size_type __n, const value_type& __value,
- const allocator_type& __a = allocator_type()) : _Base(__a, __n)
- { _M_fill_initialize(__value); }
- explicit deque(size_type __n) : _Base(allocator_type(), __n)
- { _M_fill_initialize(value_type()); }
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- // Check whether it's an integral type. If so, it's not an iterator.
- template <class _InputIterator>
- deque(_InputIterator __first, _InputIterator __last,
- const allocator_type& __a = allocator_type()) : _Base(__a) {
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_initialize_dispatch(__first, __last, _Integral());
- }
-
- template <class _Integer>
- void _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) {
- _M_initialize_map(__n);
- _M_fill_initialize(__x);
- }
-
- template <class _InputIter>
- void _M_initialize_dispatch(_InputIter __first, _InputIter __last,
- __false_type) {
- _M_range_initialize(__first, __last, __ITERATOR_CATEGORY(__first));
- }
-
-#else /* __STL_MEMBER_TEMPLATES */
-
- deque(const value_type* __first, const value_type* __last,
- const allocator_type& __a = allocator_type())
- : _Base(__a, __last - __first)
- { uninitialized_copy(__first, __last, _M_start); }
- deque(const_iterator __first, const_iterator __last,
- const allocator_type& __a = allocator_type())
- : _Base(__a, __last - __first)
- { uninitialized_copy(__first, __last, _M_start); }
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
- ~deque() { destroy(_M_start, _M_finish); }
-
- deque& operator= (const deque& __x) {
- const size_type __len = size();
- if (&__x != this) {
- if (__len >= __x.size())
- erase(copy(__x.begin(), __x.end(), _M_start), _M_finish);
- else {
- const_iterator __mid = __x.begin() + difference_type(__len);
- copy(__x.begin(), __mid, _M_start);
- insert(_M_finish, __mid, __x.end());
- }
- }
- return *this;
- }
-
- void swap(deque& __x) {
- __STD::swap(_M_start, __x._M_start);
- __STD::swap(_M_finish, __x._M_finish);
- __STD::swap(_M_map, __x._M_map);
- __STD::swap(_M_map_size, __x._M_map_size);
- }
-
-public:
- // assign(), a generalized assignment member function. Two
- // versions: one that takes a count, and one that takes a range.
- // The range version is a member template, so we dispatch on whether
- // or not the type is an integer.
-
- void assign(size_type __n, const _Tp& __val) {
- if (__n > size()) {
- fill(begin(), end(), __val);
- insert(end(), __n - size(), __val);
- }
- else {
- erase(begin() + __n, end());
- fill(begin(), end(), __val);
- }
- }
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- template <class _InputIterator>
- void assign(_InputIterator __first, _InputIterator __last) {
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_assign_dispatch(__first, __last, _Integral());
- }
-
-private: // helper functions for assign()
-
- template <class _Integer>
- void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
- { assign((size_type) __n, (_Tp) __val); }
-
- template <class _InputIterator>
- void _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
- __false_type) {
- _M_assign_aux(__first, __last, __ITERATOR_CATEGORY(__first));
- }
-
- template <class _InputIterator>
- void _M_assign_aux(_InputIterator __first, _InputIterator __last,
- input_iterator_tag);
-
- template <class _ForwardIterator>
- void _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
- forward_iterator_tag) {
- size_type __len = 0;
- distance(__first, __last, __len);
- if (__len > size()) {
- _ForwardIterator __mid = __first;
- advance(__mid, size());
- copy(__first, __mid, begin());
- insert(end(), __mid, __last);
- }
- else
- erase(copy(__first, __last, begin()), end());
- }
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-public: // push_* and pop_*
-
- void push_back(const value_type& __t) {
- if (_M_finish._M_cur != _M_finish._M_last - 1) {
- construct(_M_finish._M_cur, __t);
- ++_M_finish._M_cur;
- }
- else
- _M_push_back_aux(__t);
- }
-
- void push_back() {
- if (_M_finish._M_cur != _M_finish._M_last - 1) {
- construct(_M_finish._M_cur);
- ++_M_finish._M_cur;
- }
- else
- _M_push_back_aux();
- }
-
- void push_front(const value_type& __t) {
- if (_M_start._M_cur != _M_start._M_first) {
- construct(_M_start._M_cur - 1, __t);
- --_M_start._M_cur;
- }
- else
- _M_push_front_aux(__t);
- }
-
- void push_front() {
- if (_M_start._M_cur != _M_start._M_first) {
- construct(_M_start._M_cur - 1);
- --_M_start._M_cur;
- }
- else
- _M_push_front_aux();
- }
-
-
- void pop_back() {
- if (_M_finish._M_cur != _M_finish._M_first) {
- --_M_finish._M_cur;
- destroy(_M_finish._M_cur);
- }
- else
- _M_pop_back_aux();
- }
-
- void pop_front() {
- if (_M_start._M_cur != _M_start._M_last - 1) {
- destroy(_M_start._M_cur);
- ++_M_start._M_cur;
- }
- else
- _M_pop_front_aux();
- }
-
-public: // Insert
-
- iterator insert(iterator position, const value_type& __x) {
- if (position._M_cur == _M_start._M_cur) {
- push_front(__x);
- return _M_start;
- }
- else if (position._M_cur == _M_finish._M_cur) {
- push_back(__x);
- iterator __tmp = _M_finish;
- --__tmp;
- return __tmp;
- }
- else {
- return _M_insert_aux(position, __x);
- }
- }
-
- iterator insert(iterator __position)
- { return insert(__position, value_type()); }
-
- void insert(iterator __pos, size_type __n, const value_type& __x);
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- // Check whether it's an integral type. If so, it's not an iterator.
- template <class _InputIterator>
- void insert(iterator __pos, _InputIterator __first, _InputIterator __last) {
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_insert_dispatch(__pos, __first, __last, _Integral());
- }
-
- template <class _Integer>
- void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x,
- __true_type) {
- insert(__pos, (size_type) __n, (value_type) __x);
- }
-
- template <class _InputIterator>
- void _M_insert_dispatch(iterator __pos,
- _InputIterator __first, _InputIterator __last,
- __false_type) {
- insert(__pos, __first, __last, __ITERATOR_CATEGORY(__first));
- }
-
-#else /* __STL_MEMBER_TEMPLATES */
-
- void insert(iterator __pos,
- const value_type* __first, const value_type* __last);
- void insert(iterator __pos,
- const_iterator __first, const_iterator __last);
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
- void resize(size_type __new_size, const value_type& __x) {
- const size_type __len = size();
- if (__new_size < __len)
- erase(_M_start + __new_size, _M_finish);
- else
- insert(_M_finish, __new_size - __len, __x);
- }
-
- void resize(size_type new_size) { resize(new_size, value_type()); }
-
-public: // Erase
- iterator erase(iterator __pos) {
- iterator __next = __pos;
- ++__next;
- difference_type __index = __pos - _M_start;
- if (static_cast<size_type>(__index) < (size() >> 1)) {
- copy_backward(_M_start, __pos, __next);
- pop_front();
- }
- else {
- copy(__next, _M_finish, __pos);
- pop_back();
- }
- return _M_start + __index;
- }
-
- iterator erase(iterator __first, iterator __last);
- void clear();
-
-protected: // Internal construction/destruction
-
- void _M_fill_initialize(const value_type& __value);
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- template <class _InputIterator>
- void _M_range_initialize(_InputIterator __first, _InputIterator __last,
- input_iterator_tag);
-
- template <class _ForwardIterator>
- void _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
- forward_iterator_tag);
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-protected: // Internal push_* and pop_*
-
- void _M_push_back_aux(const value_type&);
- void _M_push_back_aux();
- void _M_push_front_aux(const value_type&);
- void _M_push_front_aux();
- void _M_pop_back_aux();
- void _M_pop_front_aux();
-
-protected: // Internal insert functions
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- template <class _InputIterator>
- void insert(iterator __pos, _InputIterator __first, _InputIterator __last,
- input_iterator_tag);
-
- template <class _ForwardIterator>
- void insert(iterator __pos,
- _ForwardIterator __first, _ForwardIterator __last,
- forward_iterator_tag);
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
- iterator _M_insert_aux(iterator __pos, const value_type& __x);
- iterator _M_insert_aux(iterator __pos);
- void _M_insert_aux(iterator __pos, size_type __n, const value_type& __x);
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- template <class _ForwardIterator>
- void _M_insert_aux(iterator __pos,
- _ForwardIterator __first, _ForwardIterator __last,
- size_type __n);
-
-#else /* __STL_MEMBER_TEMPLATES */
-
- void _M_insert_aux(iterator __pos,
- const value_type* __first, const value_type* __last,
- size_type __n);
-
- void _M_insert_aux(iterator __pos,
- const_iterator __first, const_iterator __last,
- size_type __n);
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
- iterator _M_reserve_elements_at_front(size_type __n) {
- size_type __vacancies = _M_start._M_cur - _M_start._M_first;
- if (__n > __vacancies)
- _M_new_elements_at_front(__n - __vacancies);
- return _M_start - difference_type(__n);
- }
-
- iterator _M_reserve_elements_at_back(size_type __n) {
- size_type __vacancies = (_M_finish._M_last - _M_finish._M_cur) - 1;
- if (__n > __vacancies)
- _M_new_elements_at_back(__n - __vacancies);
- return _M_finish + difference_type(__n);
- }
-
- void _M_new_elements_at_front(size_type __new_elements);
- void _M_new_elements_at_back(size_type __new_elements);
-
-protected: // Allocation of _M_map and nodes
-
- // Makes sure the _M_map has space for new nodes. Does not actually
- // add the nodes. Can invalidate _M_map pointers. (And consequently,
- // deque iterators.)
-
- void _M_reserve_map_at_back (size_type __nodes_to_add = 1) {
- if (__nodes_to_add + 1 > _M_map_size - (_M_finish._M_node - _M_map))
- _M_reallocate_map(__nodes_to_add, false);
- }
-
- void _M_reserve_map_at_front (size_type __nodes_to_add = 1) {
- if (__nodes_to_add > size_type(_M_start._M_node - _M_map))
- _M_reallocate_map(__nodes_to_add, true);
- }
-
- void _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front);
-
-#ifdef __STL_NON_TYPE_TMPL_PARAM_BUG
-public:
- bool operator==(const deque<_Tp,_Alloc,0>& __x) const {
- return size() == __x.size() && equal(begin(), end(), __x.begin());
- }
- bool operator!=(const deque<_Tp,_Alloc,0>& __x) const {
- return size() != __x.size() || !equal(begin(), end(), __x.begin());
- }
- bool operator<(const deque<_Tp,_Alloc,0>& __x) const {
- return lexicographical_compare(begin(), end(), __x.begin(), __x.end());
- }
-#endif /* __STL_NON_TYPE_TMPL_PARAM_BUG */
-};
-
-// Non-inline member functions
-
-#ifdef __STL_MEMBER_TEMPLATES
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-template <class _InputIter>
-void deque<_Tp, _Alloc, __bufsize>
- ::_M_assign_aux(_InputIter __first, _InputIter __last, input_iterator_tag)
-{
- iterator __cur = begin();
- for ( ; __first != __last && __cur != end(); ++__cur, ++__first)
- *__cur = *__first;
- if (__first == __last)
- erase(__cur, end());
- else
- insert(end(), __first, __last);
-}
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-void
-deque<_Tp, _Alloc, __bufsize>::insert(iterator __pos,
- size_type __n, const value_type& __x)
-{
- if (__pos._M_cur == _M_start._M_cur) {
- iterator __new_start = _M_reserve_elements_at_front(__n);
- uninitialized_fill(__new_start, _M_start, __x);
- _M_start = __new_start;
- }
- else if (__pos._M_cur == _M_finish._M_cur) {
- iterator __new_finish = _M_reserve_elements_at_back(__n);
- uninitialized_fill(_M_finish, __new_finish, __x);
- _M_finish = __new_finish;
- }
- else
- _M_insert_aux(__pos, __n, __x);
-}
-
-#ifndef __STL_MEMBER_TEMPLATES
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-void deque<_Tp, _Alloc, __bufsize>::insert(iterator __pos,
- const value_type* __first,
- const value_type* __last) {
- size_type __n = __last - __first;
- if (__pos._M_cur == _M_start._M_cur) {
- iterator __new_start = _M_reserve_elements_at_front(__n);
- __STL_TRY {
- uninitialized_copy(__first, __last, __new_start);
- _M_start = __new_start;
- }
- __STL_UNWIND(_M_destroy_nodes(__new_start._M_node, _M_start._M_node));
- }
- else if (__pos._M_cur == _M_finish._M_cur) {
- iterator __new_finish = _M_reserve_elements_at_back(__n);
- __STL_TRY {
- uninitialized_copy(__first, __last, _M_finish);
- _M_finish = __new_finish;
- }
- __STL_UNWIND(_M_destroy_nodes(_M_finish._M_node + 1,
- __new_finish._M_node + 1));
- }
- else
- _M_insert_aux(__pos, __first, __last, __n);
-}
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-void deque<_Tp,_Alloc,__bufsize>::insert(iterator __pos,
- const_iterator __first,
- const_iterator __last)
-{
- size_type __n = __last - __first;
- if (__pos._M_cur == _M_start._M_cur) {
- iterator __new_start = _M_reserve_elements_at_front(__n);
- __STL_TRY {
- uninitialized_copy(__first, __last, __new_start);
- _M_start = __new_start;
- }
- __STL_UNWIND(_M_destroy_nodes(__new_start._M_node, _M_start._M_node));
- }
- else if (__pos._M_cur == _M_finish._M_cur) {
- iterator __new_finish = _M_reserve_elements_at_back(__n);
- __STL_TRY {
- uninitialized_copy(__first, __last, _M_finish);
- _M_finish = __new_finish;
- }
- __STL_UNWIND(_M_destroy_nodes(_M_finish._M_node + 1,
- __new_finish._M_node + 1));
- }
- else
- _M_insert_aux(__pos, __first, __last, __n);
-}
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-deque<_Tp,_Alloc,__bufsize>::iterator
-deque<_Tp,_Alloc,__bufsize>::erase(iterator __first, iterator __last)
-{
- if (__first == _M_start && __last == _M_finish) {
- clear();
- return _M_finish;
- }
- else {
- difference_type __n = __last - __first;
- difference_type __elems_before = __first - _M_start;
- if (static_cast<size_type>(__elems_before) < (size() - __n) / 2) {
- copy_backward(_M_start, __first, __last);
- iterator __new_start = _M_start + __n;
- destroy(_M_start, __new_start);
- _M_destroy_nodes(__new_start._M_node, _M_start._M_node);
- _M_start = __new_start;
- }
- else {
- copy(__last, _M_finish, __first);
- iterator __new_finish = _M_finish - __n;
- destroy(__new_finish, _M_finish);
- _M_destroy_nodes(__new_finish._M_node + 1, _M_finish._M_node + 1);
- _M_finish = __new_finish;
- }
- return _M_start + __elems_before;
- }
-}
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-void deque<_Tp,_Alloc,__bufsize>::clear()
-{
- for (_Map_pointer __node = _M_start._M_node + 1;
- __node < _M_finish._M_node;
- ++__node) {
- destroy(*__node, *__node + _S_buffer_size());
- _M_deallocate_node(*__node);
- }
-
- if (_M_start._M_node != _M_finish._M_node) {
- destroy(_M_start._M_cur, _M_start._M_last);
- destroy(_M_finish._M_first, _M_finish._M_cur);
- _M_deallocate_node(_M_finish._M_first);
- }
- else
- destroy(_M_start._M_cur, _M_finish._M_cur);
-
- _M_finish = _M_start;
-}
-
-// Precondition: _M_start and _M_finish have already been initialized,
-// but none of the deque's elements have yet been constructed.
-template <class _Tp, class _Alloc, size_t __bufsize>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_fill_initialize(const value_type& __value) {
- _Map_pointer __cur;
- __STL_TRY {
- for (__cur = _M_start._M_node; __cur < _M_finish._M_node; ++__cur)
- uninitialized_fill(*__cur, *__cur + _S_buffer_size(), __value);
- uninitialized_fill(_M_finish._M_first, _M_finish._M_cur, __value);
- }
- __STL_UNWIND(destroy(_M_start, iterator(*__cur, __cur)));
-}
-
-#ifdef __STL_MEMBER_TEMPLATES
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-template <class _InputIterator>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_range_initialize(_InputIterator __first,
- _InputIterator __last,
- input_iterator_tag)
-{
- _M_initialize_map(0);
- for ( ; __first != __last; ++__first)
- push_back(*__first);
-}
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-template <class _ForwardIterator>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_range_initialize(_ForwardIterator __first,
- _ForwardIterator __last,
- forward_iterator_tag)
-{
- size_type __n = 0;
- distance(__first, __last, __n);
- _M_initialize_map(__n);
-
- _Map_pointer __cur_node;
- __STL_TRY {
- for (__cur_node = _M_start._M_node;
- __cur_node < _M_finish._M_node;
- ++__cur_node) {
- _ForwardIterator __mid = __first;
- advance(__mid, _S_buffer_size());
- uninitialized_copy(__first, __mid, *__cur_node);
- __first = __mid;
- }
- uninitialized_copy(__first, __last, _M_finish._M_first);
- }
- __STL_UNWIND(destroy(_M_start, iterator(*__cur_node, __cur_node)));
-}
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-// Called only if _M_finish._M_cur == _M_finish._M_last - 1.
-template <class _Tp, class _Alloc, size_t __bufsize>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_push_back_aux(const value_type& __t)
-{
- value_type __t_copy = __t;
- _M_reserve_map_at_back();
- *(_M_finish._M_node + 1) = _M_allocate_node();
- __STL_TRY {
- construct(_M_finish._M_cur, __t_copy);
- _M_finish._M_set_node(_M_finish._M_node + 1);
- _M_finish._M_cur = _M_finish._M_first;
- }
- __STL_UNWIND(_M_deallocate_node(*(_M_finish._M_node + 1)));
-}
-
-// Called only if _M_finish._M_cur == _M_finish._M_last - 1.
-template <class _Tp, class _Alloc, size_t __bufsize>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_push_back_aux()
-{
- _M_reserve_map_at_back();
- *(_M_finish._M_node + 1) = _M_allocate_node();
- __STL_TRY {
- construct(_M_finish._M_cur);
- _M_finish._M_set_node(_M_finish._M_node + 1);
- _M_finish._M_cur = _M_finish._M_first;
- }
- __STL_UNWIND(_M_deallocate_node(*(_M_finish._M_node + 1)));
-}
-
-// Called only if _M_start._M_cur == _M_start._M_first.
-template <class _Tp, class _Alloc, size_t __bufsize>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_push_front_aux(const value_type& __t)
-{
- value_type __t_copy = __t;
- _M_reserve_map_at_front();
- *(_M_start._M_node - 1) = _M_allocate_node();
- __STL_TRY {
- _M_start._M_set_node(_M_start._M_node - 1);
- _M_start._M_cur = _M_start._M_last - 1;
- construct(_M_start._M_cur, __t_copy);
- }
- __STL_UNWIND((++_M_start, _M_deallocate_node(*(_M_start._M_node - 1))));
-}
-
-// Called only if _M_start._M_cur == _M_start._M_first.
-template <class _Tp, class _Alloc, size_t __bufsize>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_push_front_aux()
-{
- _M_reserve_map_at_front();
- *(_M_start._M_node - 1) = _M_allocate_node();
- __STL_TRY {
- _M_start._M_set_node(_M_start._M_node - 1);
- _M_start._M_cur = _M_start._M_last - 1;
- construct(_M_start._M_cur);
- }
- __STL_UNWIND((++_M_start, _M_deallocate_node(*(_M_start._M_node - 1))));
-}
-
-// Called only if _M_finish._M_cur == _M_finish._M_first.
-template <class _Tp, class _Alloc, size_t __bufsize>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_pop_back_aux()
-{
- _M_deallocate_node(_M_finish._M_first);
- _M_finish._M_set_node(_M_finish._M_node - 1);
- _M_finish._M_cur = _M_finish._M_last - 1;
- destroy(_M_finish._M_cur);
-}
-
-// Called only if _M_start._M_cur == _M_start._M_last - 1. Note that
-// if the deque has at least one element (a precondition for this member
-// function), and if _M_start._M_cur == _M_start._M_last, then the deque
-// must have at least two nodes.
-template <class _Tp, class _Alloc, size_t __bufsize>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_pop_front_aux()
-{
- destroy(_M_start._M_cur);
- _M_deallocate_node(_M_start._M_first);
- _M_start._M_set_node(_M_start._M_node + 1);
- _M_start._M_cur = _M_start._M_first;
-}
-
-#ifdef __STL_MEMBER_TEMPLATES
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-template <class _InputIterator>
-void
-deque<_Tp,_Alloc,__bufsize>::insert(iterator __pos,
- _InputIterator __first,
- _InputIterator __last,
- input_iterator_tag)
-{
- copy(__first, __last, inserter(*this, __pos));
-}
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-template <class _ForwardIterator>
-void
-deque<_Tp,_Alloc,__bufsize>::insert(iterator __pos,
- _ForwardIterator __first,
- _ForwardIterator __last,
- forward_iterator_tag) {
- size_type __n = 0;
- distance(__first, __last, __n);
- if (__pos._M_cur == _M_start._M_cur) {
- iterator __new_start = _M_reserve_elements_at_front(__n);
- __STL_TRY {
- uninitialized_copy(__first, __last, __new_start);
- _M_start = __new_start;
- }
- __STL_UNWIND(_M_destroy_nodes(__new_start._M_node, _M_start._M_node));
- }
- else if (__pos._M_cur == _M_finish._M_cur) {
- iterator __new_finish = _M_reserve_elements_at_back(__n);
- __STL_TRY {
- uninitialized_copy(__first, __last, _M_finish);
- _M_finish = __new_finish;
- }
- __STL_UNWIND(_M_destroy_nodes(_M_finish._M_node + 1,
- __new_finish._M_node + 1));
- }
- else
- _M_insert_aux(__pos, __first, __last, __n);
-}
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-typename deque<_Tp, _Alloc, __bufsize>::iterator
-deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos,
- const value_type& __x)
-{
- difference_type __index = __pos - _M_start;
- value_type __x_copy = __x;
- if (static_cast<size_type>(__index) < size() / 2) {
- push_front(front());
- iterator __front1 = _M_start;
- ++__front1;
- iterator __front2 = __front1;
- ++__front2;
- __pos = _M_start + __index;
- iterator __pos1 = __pos;
- ++__pos1;
- copy(__front2, __pos1, __front1);
- }
- else {
- push_back(back());
- iterator __back1 = _M_finish;
- --__back1;
- iterator __back2 = __back1;
- --__back2;
- __pos = _M_start + __index;
- copy_backward(__pos, __back2, __back1);
- }
- *__pos = __x_copy;
- return __pos;
-}
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-typename deque<_Tp,_Alloc,__bufsize>::iterator
-deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos)
-{
- difference_type __index = __pos - _M_start;
- if (static_cast<size_type>(__index) < size() / 2) {
- push_front(front());
- iterator __front1 = _M_start;
- ++__front1;
- iterator __front2 = __front1;
- ++__front2;
- __pos = _M_start + __index;
- iterator __pos1 = __pos;
- ++__pos1;
- copy(__front2, __pos1, __front1);
- }
- else {
- push_back(back());
- iterator __back1 = _M_finish;
- --__back1;
- iterator __back2 = __back1;
- --__back2;
- __pos = _M_start + __index;
- copy_backward(__pos, __back2, __back1);
- }
- *__pos = value_type();
- return __pos;
-}
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos,
- size_type __n,
- const value_type& __x)
-{
- const difference_type __elems_before = __pos - _M_start;
- size_type __length = size();
- value_type __x_copy = __x;
- if (static_cast<size_type>(__elems_before) < __length / 2) {
- iterator __new_start = _M_reserve_elements_at_front(__n);
- iterator __old_start = _M_start;
- __pos = _M_start + __elems_before;
- __STL_TRY {
- if (__elems_before >= difference_type(__n)) {
- iterator __start_n = _M_start + difference_type(__n);
- uninitialized_copy(_M_start, __start_n, __new_start);
- _M_start = __new_start;
- copy(__start_n, __pos, __old_start);
- fill(__pos - difference_type(__n), __pos, __x_copy);
- }
- else {
- __uninitialized_copy_fill(_M_start, __pos, __new_start,
- _M_start, __x_copy);
- _M_start = __new_start;
- fill(__old_start, __pos, __x_copy);
- }
- }
- __STL_UNWIND(_M_destroy_nodes(__new_start._M_node, _M_start._M_node));
- }
- else {
- iterator __new_finish = _M_reserve_elements_at_back(__n);
- iterator __old_finish = _M_finish;
- const difference_type __elems_after =
- difference_type(__length) - __elems_before;
- __pos = _M_finish - __elems_after;
- __STL_TRY {
- if (__elems_after > difference_type(__n)) {
- iterator __finish_n = _M_finish - difference_type(__n);
- uninitialized_copy(__finish_n, _M_finish, _M_finish);
- _M_finish = __new_finish;
- copy_backward(__pos, __finish_n, __old_finish);
- fill(__pos, __pos + difference_type(__n), __x_copy);
- }
- else {
- __uninitialized_fill_copy(_M_finish, __pos + difference_type(__n),
- __x_copy, __pos, _M_finish);
- _M_finish = __new_finish;
- fill(__pos, __old_finish, __x_copy);
- }
- }
- __STL_UNWIND(_M_destroy_nodes(_M_finish._M_node + 1,
- __new_finish._M_node + 1));
- }
-}
-
-#ifdef __STL_MEMBER_TEMPLATES
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-template <class _ForwardIterator>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos,
- _ForwardIterator __first,
- _ForwardIterator __last,
- size_type __n)
-{
- const difference_type __elemsbefore = __pos - _M_start;
- size_type __length = size();
- if (static_cast<size_type>(__elemsbefore) < __length / 2) {
- iterator __new_start = _M_reserve_elements_at_front(__n);
- iterator __old_start = _M_start;
- __pos = _M_start + __elemsbefore;
- __STL_TRY {
- if (__elemsbefore >= difference_type(__n)) {
- iterator __start_n = _M_start + difference_type(__n);
- uninitialized_copy(_M_start, __start_n, __new_start);
- _M_start = __new_start;
- copy(__start_n, __pos, __old_start);
- copy(__first, __last, __pos - difference_type(__n));
- }
- else {
- _ForwardIterator __mid = __first;
- advance(__mid, difference_type(__n) - __elemsbefore);
- __uninitialized_copy_copy(_M_start, __pos, __first, __mid,
- __new_start);
- _M_start = __new_start;
- copy(__mid, __last, __old_start);
- }
- }
- __STL_UNWIND(_M_destroy_nodes(__new_start._M_node, _M_start._M_node));
- }
- else {
- iterator __new_finish = _M_reserve_elements_at_back(__n);
- iterator __old_finish = _M_finish;
- const difference_type __elemsafter =
- difference_type(__length) - __elemsbefore;
- __pos = _M_finish - __elemsafter;
- __STL_TRY {
- if (__elemsafter > difference_type(__n)) {
- iterator __finish_n = _M_finish - difference_type(__n);
- uninitialized_copy(__finish_n, _M_finish, _M_finish);
- _M_finish = __new_finish;
- copy_backward(__pos, __finish_n, __old_finish);
- copy(__first, __last, __pos);
- }
- else {
- _ForwardIterator __mid = __first;
- advance(__mid, __elemsafter);
- __uninitialized_copy_copy(__mid, __last, __pos, _M_finish, _M_finish);
- _M_finish = __new_finish;
- copy(__first, __mid, __pos);
- }
- }
- __STL_UNWIND(_M_destroy_nodes(_M_finish._M_node + 1,
- __new_finish._M_node + 1));
- }
-}
-
-#else /* __STL_MEMBER_TEMPLATES */
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos,
- const value_type* __first,
- const value_type* __last,
- size_type __n)
-{
- const difference_type __elemsbefore = __pos - _M_start;
- size_type __length = size();
- if (__elemsbefore < __length / 2) {
- iterator __new_start = _M_reserve_elements_at_front(__n);
- iterator __old_start = _M_start;
- __pos = _M_start + __elemsbefore;
- __STL_TRY {
- if (__elemsbefore >= difference_type(__n)) {
- iterator __start_n = _M_start + difference_type(__n);
- uninitialized_copy(_M_start, __start_n, __new_start);
- _M_start = __new_start;
- copy(__start_n, __pos, __old_start);
- copy(__first, __last, __pos - difference_type(__n));
- }
- else {
- const value_type* __mid =
- __first + (difference_type(__n) - __elemsbefore);
- __uninitialized_copy_copy(_M_start, __pos, __first, __mid,
- __new_start);
- _M_start = __new_start;
- copy(__mid, __last, __old_start);
- }
- }
- __STL_UNWIND(_M_destroy_nodes(__new_start._M_node, _M_start._M_node));
- }
- else {
- iterator __new_finish = _M_reserve_elements_at_back(__n);
- iterator __old_finish = _M_finish;
- const difference_type __elemsafter =
- difference_type(__length) - __elemsbefore;
- __pos = _M_finish - __elemsafter;
- __STL_TRY {
- if (__elemsafter > difference_type(__n)) {
- iterator __finish_n = _M_finish - difference_type(__n);
- uninitialized_copy(__finish_n, _M_finish, _M_finish);
- _M_finish = __new_finish;
- copy_backward(__pos, __finish_n, __old_finish);
- copy(__first, __last, __pos);
- }
- else {
- const value_type* __mid = __first + __elemsafter;
- __uninitialized_copy_copy(__mid, __last, __pos, _M_finish, _M_finish);
- _M_finish = __new_finish;
- copy(__first, __mid, __pos);
- }
- }
- __STL_UNWIND(_M_destroy_nodes(_M_finish._M_node + 1,
- __new_finish._M_node + 1));
- }
-}
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos,
- const_iterator __first,
- const_iterator __last,
- size_type __n)
-{
- const difference_type __elemsbefore = __pos - _M_start;
- size_type __length = size();
- if (__elemsbefore < __length / 2) {
- iterator __new_start = _M_reserve_elements_at_front(__n);
- iterator __old_start = _M_start;
- __pos = _M_start + __elemsbefore;
- __STL_TRY {
- if (__elemsbefore >= __n) {
- iterator __start_n = _M_start + __n;
- uninitialized_copy(_M_start, __start_n, __new_start);
- _M_start = __new_start;
- copy(__start_n, __pos, __old_start);
- copy(__first, __last, __pos - difference_type(__n));
- }
- else {
- const_iterator __mid = __first + (__n - __elemsbefore);
- __uninitialized_copy_copy(_M_start, __pos, __first, __mid,
- __new_start);
- _M_start = __new_start;
- copy(__mid, __last, __old_start);
- }
- }
- __STL_UNWIND(_M_destroy_nodes(__new_start._M_node, _M_start._M_node));
- }
- else {
- iterator __new_finish = _M_reserve_elements_at_back(__n);
- iterator __old_finish = _M_finish;
- const difference_type __elemsafter = __length - __elemsbefore;
- __pos = _M_finish - __elemsafter;
- __STL_TRY {
- if (__elemsafter > __n) {
- iterator __finish_n = _M_finish - difference_type(__n);
- uninitialized_copy(__finish_n, _M_finish, _M_finish);
- _M_finish = __new_finish;
- copy_backward(__pos, __finish_n, __old_finish);
- copy(__first, __last, __pos);
- }
- else {
- const_iterator __mid = __first + __elemsafter;
- __uninitialized_copy_copy(__mid, __last, __pos, _M_finish, _M_finish);
- _M_finish = __new_finish;
- copy(__first, __mid, __pos);
- }
- }
- __STL_UNWIND(_M_destroy_nodes(_M_finish._M_node + 1,
- __new_finish._M_node + 1));
- }
-}
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_new_elements_at_front(size_type __new_elems)
-{
- size_type __new_nodes
- = (__new_elems + _S_buffer_size() - 1) / _S_buffer_size();
- _M_reserve_map_at_front(__new_nodes);
- size_type __i;
- __STL_TRY {
- for (__i = 1; __i <= __new_nodes; ++__i)
- *(_M_start._M_node - __i) = _M_allocate_node();
- }
-# ifdef __STL_USE_EXCEPTIONS
- catch(...) {
- for (size_type __j = 1; __j < __i; ++__j)
- _M_deallocate_node(*(_M_start._M_node - __j));
- throw;
- }
-# endif /* __STL_USE_EXCEPTIONS */
-}
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_new_elements_at_back(size_type __new_elems)
-{
- size_type __new_nodes
- = (__new_elems + _S_buffer_size() - 1) / _S_buffer_size();
- _M_reserve_map_at_back(__new_nodes);
- size_type __i;
- __STL_TRY {
- for (__i = 1; __i <= __new_nodes; ++__i)
- *(_M_finish._M_node + __i) = _M_allocate_node();
- }
-# ifdef __STL_USE_EXCEPTIONS
- catch(...) {
- for (size_type __j = 1; __j < __i; ++__j)
- _M_deallocate_node(*(_M_finish._M_node + __j));
- throw;
- }
-# endif /* __STL_USE_EXCEPTIONS */
-}
-
-template <class _Tp, class _Alloc, size_t __bufsize>
-void
-deque<_Tp,_Alloc,__bufsize>::_M_reallocate_map(size_type __nodes_to_add,
- bool __add_at_front)
-{
- size_type __old_num_nodes = _M_finish._M_node - _M_start._M_node + 1;
- size_type __new_num_nodes = __old_num_nodes + __nodes_to_add;
-
- _Map_pointer __new_nstart;
- if (_M_map_size > 2 * __new_num_nodes) {
- __new_nstart = _M_map + (_M_map_size - __new_num_nodes) / 2
- + (__add_at_front ? __nodes_to_add : 0);
- if (__new_nstart < _M_start._M_node)
- copy(_M_start._M_node, _M_finish._M_node + 1, __new_nstart);
- else
- copy_backward(_M_start._M_node, _M_finish._M_node + 1,
- __new_nstart + __old_num_nodes);
- }
- else {
- size_type __new_map_size =
- _M_map_size + max(_M_map_size, __nodes_to_add) + 2;
-
- _Map_pointer __new_map = _M_allocate_map(__new_map_size);
- __new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2
- + (__add_at_front ? __nodes_to_add : 0);
- copy(_M_start._M_node, _M_finish._M_node + 1, __new_nstart);
- _M_deallocate_map(_M_map, _M_map_size);
-
- _M_map = __new_map;
- _M_map_size = __new_map_size;
- }
-
- _M_start._M_set_node(__new_nstart);
- _M_finish._M_set_node(__new_nstart + __old_num_nodes - 1);
-}
-
-
-// Nonmember functions.
-
-#ifndef __STL_NON_TYPE_TMPL_PARAM_BUG
-
-template <class _Tp, class _Alloc, size_t __bufsiz>
-bool operator==(const deque<_Tp, _Alloc, __bufsiz>& __x,
- const deque<_Tp, _Alloc, __bufsiz>& __y)
-{
- return __x.size() == __y.size() &&
- equal(__x.begin(), __x.end(), __y.begin());
-}
-
-template <class _Tp, class _Alloc, size_t __bufsiz>
-bool operator<(const deque<_Tp, _Alloc, __bufsiz>& __x,
- const deque<_Tp, _Alloc, __bufsiz>& __y)
-{
- return lexicographical_compare(__x.begin(), __x.end(),
- __y.begin(), __y.end());
-}
-
-#endif /* __STL_NON_TYPE_TMPL_PARAM_BUG */
-
-#if defined(__STL_FUNCTION_TMPL_PARTIAL_ORDER) && \
- !defined(__STL_NON_TYPE_TMPL_PARAM_BUG)
-
-template <class _Tp, class _Alloc, size_t __bufsiz>
-inline void
-swap(deque<_Tp,_Alloc,__bufsiz>& __x, deque<_Tp,_Alloc,__bufsiz>& __y)
-{
- __x.swap(__y);
-}
-
-#endif
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1174
-#pragma reset woff 1375
-#endif
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_DEQUE_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_function.h b/contrib/libstdc++/stl/stl_function.h
deleted file mode 100644
index a5a8486..0000000
--- a/contrib/libstdc++/stl/stl_function.h
+++ /dev/null
@@ -1,700 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996-1998
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_FUNCTION_H
-#define __SGI_STL_INTERNAL_FUNCTION_H
-
-__STL_BEGIN_NAMESPACE
-
-template <class _Arg, class _Result>
-struct unary_function {
- typedef _Arg argument_type;
- typedef _Result result_type;
-};
-
-template <class _Arg1, class _Arg2, class _Result>
-struct binary_function {
- typedef _Arg1 first_argument_type;
- typedef _Arg2 second_argument_type;
- typedef _Result result_type;
-};
-
-template <class _Tp>
-struct plus : public binary_function<_Tp,_Tp,_Tp> {
- _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x + __y; }
-};
-
-template <class _Tp>
-struct minus : public binary_function<_Tp,_Tp,_Tp> {
- _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x - __y; }
-};
-
-template <class _Tp>
-struct multiplies : public binary_function<_Tp,_Tp,_Tp> {
- _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x * __y; }
-};
-
-template <class _Tp>
-struct divides : public binary_function<_Tp,_Tp,_Tp> {
- _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x / __y; }
-};
-
-// identity_element (not part of the C++ standard).
-
-template <class _Tp> inline _Tp identity_element(plus<_Tp>) {
- return _Tp(0);
-}
-template <class _Tp> inline _Tp identity_element(multiplies<_Tp>) {
- return _Tp(1);
-}
-
-template <class _Tp>
-struct modulus : public binary_function<_Tp,_Tp,_Tp>
-{
- _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x % __y; }
-};
-
-template <class _Tp>
-struct negate : public unary_function<_Tp,_Tp>
-{
- _Tp operator()(const _Tp& __x) const { return -__x; }
-};
-
-template <class _Tp>
-struct equal_to : public binary_function<_Tp,_Tp,bool>
-{
- bool operator()(const _Tp& __x, const _Tp& __y) const { return __x == __y; }
-};
-
-template <class _Tp>
-struct not_equal_to : public binary_function<_Tp,_Tp,bool>
-{
- bool operator()(const _Tp& __x, const _Tp& __y) const { return __x != __y; }
-};
-
-template <class _Tp>
-struct greater : public binary_function<_Tp,_Tp,bool>
-{
- bool operator()(const _Tp& __x, const _Tp& __y) const { return __x > __y; }
-};
-
-template <class _Tp>
-struct less : public binary_function<_Tp,_Tp,bool>
-{
- bool operator()(const _Tp& __x, const _Tp& __y) const { return __x < __y; }
-};
-
-template <class _Tp>
-struct greater_equal : public binary_function<_Tp,_Tp,bool>
-{
- bool operator()(const _Tp& __x, const _Tp& __y) const { return __x >= __y; }
-};
-
-template <class _Tp>
-struct less_equal : public binary_function<_Tp,_Tp,bool>
-{
- bool operator()(const _Tp& __x, const _Tp& __y) const { return __x <= __y; }
-};
-
-template <class _Tp>
-struct logical_and : public binary_function<_Tp,_Tp,bool>
-{
- bool operator()(const _Tp& __x, const _Tp& __y) const { return __x && __y; }
-};
-
-template <class _Tp>
-struct logical_or : public binary_function<_Tp,_Tp,bool>
-{
- bool operator()(const _Tp& __x, const _Tp& __y) const { return __x || __y; }
-};
-
-template <class _Tp>
-struct logical_not : public unary_function<_Tp,bool>
-{
- bool operator()(const _Tp& __x) const { return !__x; }
-};
-
-template <class _Predicate>
-class unary_negate
- : public unary_function<typename _Predicate::argument_type, bool> {
-protected:
- _Predicate _M_pred;
-public:
- explicit unary_negate(const _Predicate& __x) : _M_pred(__x) {}
- bool operator()(const typename _Predicate::argument_type& __x) const {
- return !_M_pred(__x);
- }
-};
-
-template <class _Predicate>
-inline unary_negate<_Predicate>
-not1(const _Predicate& __pred)
-{
- return unary_negate<_Predicate>(__pred);
-}
-
-template <class _Predicate>
-class binary_negate
- : public binary_function<typename _Predicate::first_argument_type,
- typename _Predicate::second_argument_type,
- bool> {
-protected:
- _Predicate _M_pred;
-public:
- explicit binary_negate(const _Predicate& __x) : _M_pred(__x) {}
- bool operator()(const typename _Predicate::first_argument_type& __x,
- const typename _Predicate::second_argument_type& __y) const
- {
- return !_M_pred(__x, __y);
- }
-};
-
-template <class _Predicate>
-inline binary_negate<_Predicate>
-not2(const _Predicate& __pred)
-{
- return binary_negate<_Predicate>(__pred);
-}
-
-template <class _Operation>
-class binder1st
- : public unary_function<typename _Operation::second_argument_type,
- typename _Operation::result_type> {
-protected:
- _Operation op;
- typename _Operation::first_argument_type value;
-public:
- binder1st(const _Operation& __x,
- const typename _Operation::first_argument_type& __y)
- : op(__x), value(__y) {}
- typename _Operation::result_type
- operator()(const typename _Operation::second_argument_type& __x) const {
- return op(value, __x);
- }
-};
-
-template <class _Operation, class _Tp>
-inline binder1st<_Operation>
-bind1st(const _Operation& __oper, const _Tp& __x)
-{
- typedef typename _Operation::first_argument_type _Arg1_type;
- return binder1st<_Operation>(__oper, _Arg1_type(__x));
-}
-
-template <class _Operation>
-class binder2nd
- : public unary_function<typename _Operation::first_argument_type,
- typename _Operation::result_type> {
-protected:
- _Operation op;
- typename _Operation::second_argument_type value;
-public:
- binder2nd(const _Operation& __x,
- const typename _Operation::second_argument_type& __y)
- : op(__x), value(__y) {}
- typename _Operation::result_type
- operator()(const typename _Operation::first_argument_type& __x) const {
- return op(__x, value);
- }
-};
-
-template <class _Operation, class _Tp>
-inline binder2nd<_Operation>
-bind2nd(const _Operation& __oper, const _Tp& __x)
-{
- typedef typename _Operation::second_argument_type _Arg2_type;
- return binder2nd<_Operation>(__oper, _Arg2_type(__x));
-}
-
-// unary_compose and binary_compose (extensions, not part of the standard).
-
-template <class _Operation1, class _Operation2>
-class unary_compose
- : public unary_function<typename _Operation2::argument_type,
- typename _Operation1::result_type>
-{
-protected:
- _Operation1 __op1;
- _Operation2 __op2;
-public:
- unary_compose(const _Operation1& __x, const _Operation2& __y)
- : __op1(__x), __op2(__y) {}
- typename _Operation1::result_type
- operator()(const typename _Operation2::argument_type& __x) const {
- return __op1(__op2(__x));
- }
-};
-
-template <class _Operation1, class _Operation2>
-inline unary_compose<_Operation1,_Operation2>
-compose1(const _Operation1& __op1, const _Operation2& __op2)
-{
- return unary_compose<_Operation1,_Operation2>(__op1, __op2);
-}
-
-template <class _Operation1, class _Operation2, class _Operation3>
-class binary_compose
- : public unary_function<typename _Operation2::argument_type,
- typename _Operation1::result_type> {
-protected:
- _Operation1 _M_op1;
- _Operation2 _M_op2;
- _Operation3 _M_op3;
-public:
- binary_compose(const _Operation1& __x, const _Operation2& __y,
- const _Operation3& __z)
- : _M_op1(__x), _M_op2(__y), _M_op3(__z) { }
- typename _Operation1::result_type
- operator()(const typename _Operation2::argument_type& __x) const {
- return _M_op1(_M_op2(__x), _M_op3(__x));
- }
-};
-
-template <class _Operation1, class _Operation2, class _Operation3>
-inline binary_compose<_Operation1, _Operation2, _Operation3>
-compose2(const _Operation1& __op1, const _Operation2& __op2,
- const _Operation3& __op3)
-{
- return binary_compose<_Operation1,_Operation2,_Operation3>
- (__op1, __op2, __op3);
-}
-
-template <class _Arg, class _Result>
-class pointer_to_unary_function : public unary_function<_Arg, _Result> {
-protected:
- _Result (*_M_ptr)(_Arg);
-public:
- pointer_to_unary_function() {}
- explicit pointer_to_unary_function(_Result (*__x)(_Arg)) : _M_ptr(__x) {}
- _Result operator()(_Arg __x) const { return _M_ptr(__x); }
-};
-
-template <class _Arg, class _Result>
-inline pointer_to_unary_function<_Arg, _Result> ptr_fun(_Result (*__x)(_Arg))
-{
- return pointer_to_unary_function<_Arg, _Result>(__x);
-}
-
-template <class _Arg1, class _Arg2, class _Result>
-class pointer_to_binary_function :
- public binary_function<_Arg1,_Arg2,_Result> {
-protected:
- _Result (*_M_ptr)(_Arg1, _Arg2);
-public:
- pointer_to_binary_function() {}
- explicit pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2))
- : _M_ptr(__x) {}
- _Result operator()(_Arg1 __x, _Arg2 __y) const {
- return _M_ptr(__x, __y);
- }
-};
-
-template <class _Arg1, class _Arg2, class _Result>
-inline pointer_to_binary_function<_Arg1,_Arg2,_Result>
-ptr_fun(_Result (*__x)(_Arg1, _Arg2)) {
- return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__x);
-}
-
-// identity is an extensions: it is not part of the standard.
-template <class _Tp>
-struct _Identity : public unary_function<_Tp,_Tp> {
- const _Tp& operator()(const _Tp& __x) const { return __x; }
-};
-
-template <class _Tp> struct identity : public _Identity<_Tp> {};
-
-// select1st and select2nd are extensions: they are not part of the standard.
-template <class _Pair>
-struct _Select1st : public unary_function<_Pair, typename _Pair::first_type> {
- const typename _Pair::first_type& operator()(const _Pair& __x) const {
- return __x.first;
- }
-};
-
-template <class _Pair>
-struct _Select2nd : public unary_function<_Pair, typename _Pair::second_type>
-{
- const typename _Pair::second_type& operator()(const _Pair& __x) const {
- return __x.second;
- }
-};
-
-template <class _Pair> struct select1st : public _Select1st<_Pair> {};
-template <class _Pair> struct select2nd : public _Select2nd<_Pair> {};
-
-// project1st and project2nd are extensions: they are not part of the standard
-template <class _Arg1, class _Arg2>
-struct _Project1st : public binary_function<_Arg1, _Arg2, _Arg1> {
- _Arg1 operator()(const _Arg1& __x, const _Arg2&) const { return __x; }
-};
-
-template <class _Arg1, class _Arg2>
-struct _Project2nd : public binary_function<_Arg1, _Arg2, _Arg2> {
- _Arg2 operator()(const _Arg1&, const _Arg2& __y) const { return __y; }
-};
-
-template <class _Arg1, class _Arg2>
-struct project1st : public _Project1st<_Arg1, _Arg2> {};
-
-template <class _Arg1, class _Arg2>
-struct project2nd : public _Project2nd<_Arg1, _Arg2> {};
-
-// constant_void_fun, constant_unary_fun, and constant_binary_fun are
-// extensions: they are not part of the standard. (The same, of course,
-// is true of the helper functions constant0, constant1, and constant2.)
-template <class _Result>
-struct constant_void_fun
-{
- typedef _Result result_type;
- result_type __val;
- constant_void_fun(const result_type& __v) : __val(__v) {}
- const result_type& operator()() const { return __val; }
-};
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _Result, class _Argument = _Result>
-#else
-template <class _Result, class _Argument>
-#endif
-struct constant_unary_fun : public unary_function<_Argument, _Result> {
- _Result _M_val;
- constant_unary_fun(const _Result& __v) : _M_val(__v) {}
- const _Result& operator()(const _Argument&) const { return _M_val; }
-};
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _Result, class _Arg1 = _Result, class _Arg2 = _Arg1>
-#else
-template <class _Result, class _Arg1, class _Arg2>
-#endif
-struct constant_binary_fun : public binary_function<_Arg1, _Arg2, _Result> {
- _Result _M_val;
- constant_binary_fun(const _Result& __v) : _M_val(__v) {}
- const _Result& operator()(const _Arg1&, const _Arg2&) const {
- return _M_val;
- }
-};
-
-template <class _Result>
-inline constant_void_fun<_Result> constant0(const _Result& __val)
-{
- return constant_void_fun<_Result>(__val);
-}
-
-template <class _Result>
-inline constant_unary_fun<_Result,_Result> constant1(const _Result& __val)
-{
- return constant_unary_fun<_Result,_Result>(__val);
-}
-
-template <class _Result>
-inline constant_binary_fun<_Result,_Result,_Result>
-constant2(const _Result& __val)
-{
- return constant_binary_fun<_Result,_Result,_Result>(__val);
-}
-
-// subtractive_rng is an extension: it is not part of the standard.
-// Note: this code assumes that int is 32 bits.
-class subtractive_rng : public unary_function<unsigned int, unsigned int> {
-private:
- unsigned int _M_table[55];
- size_t _M_index1;
- size_t _M_index2;
-public:
- unsigned int operator()(unsigned int __limit) {
- _M_index1 = (_M_index1 + 1) % 55;
- _M_index2 = (_M_index2 + 1) % 55;
- _M_table[_M_index1] = _M_table[_M_index1] - _M_table[_M_index2];
- return _M_table[_M_index1] % __limit;
- }
-
- void _M_initialize(unsigned int __seed)
- {
- unsigned int __k = 1;
- _M_table[54] = __seed;
- size_t __i;
- for (__i = 0; __i < 54; __i++) {
- size_t __ii = (21 * (__i + 1) % 55) - 1;
- _M_table[__ii] = __k;
- __k = __seed - __k;
- __seed = _M_table[__ii];
- }
- for (int __loop = 0; __loop < 4; __loop++) {
- for (__i = 0; __i < 55; __i++)
- _M_table[__i] = _M_table[__i] - _M_table[(1 + __i + 30) % 55];
- }
- _M_index1 = 0;
- _M_index2 = 31;
- }
-
- subtractive_rng(unsigned int __seed) { _M_initialize(__seed); }
- subtractive_rng() { _M_initialize(161803398u); }
-};
-
-
-// Adaptor function objects: pointers to member functions.
-
-// There are a total of 16 = 2^4 function objects in this family.
-// (1) Member functions taking no arguments vs member functions taking
-// one argument.
-// (2) Call through pointer vs call through reference.
-// (3) Member function with void return type vs member function with
-// non-void return type.
-// (4) Const vs non-const member function.
-
-// Note that choice (3) is nothing more than a workaround: according
-// to the draft, compilers should handle void and non-void the same way.
-// This feature is not yet widely implemented, though. You can only use
-// member functions returning void if your compiler supports partial
-// specialization.
-
-// All of this complexity is in the function objects themselves. You can
-// ignore it by using the helper function mem_fun and mem_fun_ref,
-// which create whichever type of adaptor is appropriate.
-// (mem_fun1 and mem_fun1_ref are no longer part of the C++ standard,
-// but they are provided for backward compatibility.)
-
-
-template <class _Ret, class _Tp>
-class mem_fun_t : public unary_function<_Tp*,_Ret> {
-public:
- explicit mem_fun_t(_Ret (_Tp::*__pf)()) : _M_f(__pf) {}
- _Ret operator()(_Tp* __p) const { return (__p->*_M_f)(); }
-private:
- _Ret (_Tp::*_M_f)();
-};
-
-template <class _Ret, class _Tp>
-class const_mem_fun_t : public unary_function<const _Tp*,_Ret> {
-public:
- explicit const_mem_fun_t(_Ret (_Tp::*__pf)() const) : _M_f(__pf) {}
- _Ret operator()(const _Tp* __p) const { return (__p->*_M_f)(); }
-private:
- _Ret (_Tp::*_M_f)() const;
-};
-
-
-template <class _Ret, class _Tp>
-class mem_fun_ref_t : public unary_function<_Tp,_Ret> {
-public:
- explicit mem_fun_ref_t(_Ret (_Tp::*__pf)()) : _M_f(__pf) {}
- _Ret operator()(_Tp& __r) const { return (__r.*_M_f)(); }
-private:
- _Ret (_Tp::*_M_f)();
-};
-
-template <class _Ret, class _Tp>
-class const_mem_fun_ref_t : public unary_function<_Tp,_Ret> {
-public:
- explicit const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) : _M_f(__pf) {}
- _Ret operator()(const _Tp& __r) const { return (__r.*_M_f)(); }
-private:
- _Ret (_Tp::*_M_f)() const;
-};
-
-template <class _Ret, class _Tp, class _Arg>
-class mem_fun1_t : public binary_function<_Tp*,_Arg,_Ret> {
-public:
- explicit mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) : _M_f(__pf) {}
- _Ret operator()(_Tp* __p, _Arg __x) const { return (__p->*_M_f)(__x); }
-private:
- _Ret (_Tp::*_M_f)(_Arg);
-};
-
-template <class _Ret, class _Tp, class _Arg>
-class const_mem_fun1_t : public binary_function<const _Tp*,_Arg,_Ret> {
-public:
- explicit const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) : _M_f(__pf) {}
- _Ret operator()(const _Tp* __p, _Arg __x) const
- { return (__p->*_M_f)(__x); }
-private:
- _Ret (_Tp::*_M_f)(_Arg) const;
-};
-
-template <class _Ret, class _Tp, class _Arg>
-class mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> {
-public:
- explicit mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) : _M_f(__pf) {}
- _Ret operator()(_Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); }
-private:
- _Ret (_Tp::*_M_f)(_Arg);
-};
-
-template <class _Ret, class _Tp, class _Arg>
-class const_mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> {
-public:
- explicit const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) : _M_f(__pf) {}
- _Ret operator()(const _Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); }
-private:
- _Ret (_Tp::*_M_f)(_Arg) const;
-};
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _Tp>
-class mem_fun_t<void, _Tp> : public unary_function<_Tp*,void> {
-public:
- explicit mem_fun_t(void (_Tp::*__pf)()) : _M_f(__pf) {}
- void operator()(_Tp* __p) const { (__p->*_M_f)(); }
-private:
- void (_Tp::*_M_f)();
-};
-
-template <class _Tp>
-class const_mem_fun_t<void, _Tp> : public unary_function<const _Tp*,void> {
-public:
- explicit const_mem_fun_t(void (_Tp::*__pf)() const) : _M_f(__pf) {}
- void operator()(const _Tp* __p) const { (__p->*_M_f)(); }
-private:
- void (_Tp::*_M_f)() const;
-};
-
-template <class _Tp>
-class mem_fun_ref_t<void, _Tp> : public unary_function<_Tp,void> {
-public:
- explicit mem_fun_ref_t(void (_Tp::*__pf)()) : _M_f(__pf) {}
- void operator()(_Tp& __r) const { (__r.*_M_f)(); }
-private:
- void (_Tp::*_M_f)();
-};
-
-template <class _Tp>
-class const_mem_fun_ref_t<void, _Tp> : public unary_function<_Tp,void> {
-public:
- explicit const_mem_fun_ref_t(void (_Tp::*__pf)() const) : _M_f(__pf) {}
- void operator()(const _Tp& __r) const { (__r.*_M_f)(); }
-private:
- void (_Tp::*_M_f)() const;
-};
-
-template <class _Tp, class _Arg>
-class mem_fun1_t<void, _Tp, _Arg> : public binary_function<_Tp*,_Arg,void> {
-public:
- explicit mem_fun1_t(void (_Tp::*__pf)(_Arg)) : _M_f(__pf) {}
- void operator()(_Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); }
-private:
- void (_Tp::*_M_f)(_Arg);
-};
-
-template <class _Tp, class _Arg>
-class const_mem_fun1_t<void, _Tp, _Arg>
- : public binary_function<const _Tp*,_Arg,void> {
-public:
- explicit const_mem_fun1_t(void (_Tp::*__pf)(_Arg) const) : _M_f(__pf) {}
- void operator()(const _Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); }
-private:
- void (_Tp::*_M_f)(_Arg) const;
-};
-
-template <class _Tp, class _Arg>
-class mem_fun1_ref_t<void, _Tp, _Arg>
- : public binary_function<_Tp,_Arg,void> {
-public:
- explicit mem_fun1_ref_t(void (_Tp::*__pf)(_Arg)) : _M_f(__pf) {}
- void operator()(_Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); }
-private:
- void (_Tp::*_M_f)(_Arg);
-};
-
-template <class _Tp, class _Arg>
-class const_mem_fun1_ref_t<void, _Tp, _Arg>
- : public binary_function<_Tp,_Arg,void> {
-public:
- explicit const_mem_fun1_ref_t(void (_Tp::*__pf)(_Arg) const) : _M_f(__pf) {}
- void operator()(const _Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); }
-private:
- void (_Tp::*_M_f)(_Arg) const;
-};
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-// Mem_fun adaptor helper functions. There are only two:
-// mem_fun and mem_fun_ref. (mem_fun1 and mem_fun1_ref
-// are provided for backward compatibility, but they are no longer
-// part of the C++ standard.)
-
-template <class _Ret, class _Tp>
-inline mem_fun_t<_Ret,_Tp> mem_fun(_Ret (_Tp::*__f)())
- { return mem_fun_t<_Ret,_Tp>(__f); }
-
-template <class _Ret, class _Tp>
-inline const_mem_fun_t<_Ret,_Tp> mem_fun(_Ret (_Tp::*__f)() const)
- { return const_mem_fun_t<_Ret,_Tp>(__f); }
-
-template <class _Ret, class _Tp>
-inline mem_fun_ref_t<_Ret,_Tp> mem_fun_ref(_Ret (_Tp::*__f)())
- { return mem_fun_ref_t<_Ret,_Tp>(__f); }
-
-template <class _Ret, class _Tp>
-inline const_mem_fun_ref_t<_Ret,_Tp> mem_fun_ref(_Ret (_Tp::*__f)() const)
- { return const_mem_fun_ref_t<_Ret,_Tp>(__f); }
-
-template <class _Ret, class _Tp, class _Arg>
-inline mem_fun1_t<_Ret,_Tp,_Arg> mem_fun(_Ret (_Tp::*__f)(_Arg))
- { return mem_fun1_t<_Ret,_Tp,_Arg>(__f); }
-
-template <class _Ret, class _Tp, class _Arg>
-inline const_mem_fun1_t<_Ret,_Tp,_Arg> mem_fun(_Ret (_Tp::*__f)(_Arg) const)
- { return const_mem_fun1_t<_Ret,_Tp,_Arg>(__f); }
-
-template <class _Ret, class _Tp, class _Arg>
-inline mem_fun1_ref_t<_Ret,_Tp,_Arg> mem_fun_ref(_Ret (_Tp::*__f)(_Arg))
- { return mem_fun1_ref_t<_Ret,_Tp,_Arg>(__f); }
-
-template <class _Ret, class _Tp, class _Arg>
-inline const_mem_fun1_ref_t<_Ret,_Tp,_Arg>
-mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const)
- { return const_mem_fun1_ref_t<_Ret,_Tp,_Arg>(__f); }
-
-template <class _Ret, class _Tp, class _Arg>
-inline mem_fun1_t<_Ret,_Tp,_Arg> mem_fun1(_Ret (_Tp::*__f)(_Arg))
- { return mem_fun1_t<_Ret,_Tp,_Arg>(__f); }
-
-template <class _Ret, class _Tp, class _Arg>
-inline const_mem_fun1_t<_Ret,_Tp,_Arg> mem_fun1(_Ret (_Tp::*__f)(_Arg) const)
- { return const_mem_fun1_t<_Ret,_Tp,_Arg>(__f); }
-
-template <class _Ret, class _Tp, class _Arg>
-inline mem_fun1_ref_t<_Ret,_Tp,_Arg> mem_fun1_ref(_Ret (_Tp::*__f)(_Arg))
- { return mem_fun1_ref_t<_Ret,_Tp,_Arg>(__f); }
-
-template <class _Ret, class _Tp, class _Arg>
-inline const_mem_fun1_ref_t<_Ret,_Tp,_Arg>
-mem_fun1_ref(_Ret (_Tp::*__f)(_Arg) const)
- { return const_mem_fun1_ref_t<_Ret,_Tp,_Arg>(__f); }
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_FUNCTION_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_hash_fun.h b/contrib/libstdc++/stl/stl_hash_fun.h
deleted file mode 100644
index 44ab9bb..0000000
--- a/contrib/libstdc++/stl/stl_hash_fun.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 1996-1998
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_HASH_FUN_H
-#define __SGI_STL_HASH_FUN_H
-
-#include <stddef.h>
-
-__STL_BEGIN_NAMESPACE
-
-template <class _Key> struct hash { };
-
-inline size_t __stl_hash_string(const char* __s)
-{
- unsigned long __h = 0;
- for ( ; *__s; ++__s)
- __h = 5*__h + *__s;
-
- return size_t(__h);
-}
-
-__STL_TEMPLATE_NULL struct hash<char*>
-{
- size_t operator()(const char* __s) const { return __stl_hash_string(__s); }
-};
-
-__STL_TEMPLATE_NULL struct hash<const char*>
-{
- size_t operator()(const char* __s) const { return __stl_hash_string(__s); }
-};
-
-__STL_TEMPLATE_NULL struct hash<char> {
- size_t operator()(char __x) const { return __x; }
-};
-__STL_TEMPLATE_NULL struct hash<unsigned char> {
- size_t operator()(unsigned char __x) const { return __x; }
-};
-__STL_TEMPLATE_NULL struct hash<signed char> {
- size_t operator()(unsigned char __x) const { return __x; }
-};
-__STL_TEMPLATE_NULL struct hash<short> {
- size_t operator()(short __x) const { return __x; }
-};
-__STL_TEMPLATE_NULL struct hash<unsigned short> {
- size_t operator()(unsigned short __x) const { return __x; }
-};
-__STL_TEMPLATE_NULL struct hash<int> {
- size_t operator()(int __x) const { return __x; }
-};
-__STL_TEMPLATE_NULL struct hash<unsigned int> {
- size_t operator()(unsigned int __x) const { return __x; }
-};
-__STL_TEMPLATE_NULL struct hash<long> {
- size_t operator()(long __x) const { return __x; }
-};
-__STL_TEMPLATE_NULL struct hash<unsigned long> {
- size_t operator()(unsigned long __x) const { return __x; }
-};
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_HASH_FUN_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_hash_map.h b/contrib/libstdc++/stl/stl_hash_map.h
deleted file mode 100644
index bf16f60..0000000
--- a/contrib/libstdc++/stl/stl_hash_map.h
+++ /dev/null
@@ -1,416 +0,0 @@
-/*
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_HASH_MAP_H
-#define __SGI_STL_INTERNAL_HASH_MAP_H
-
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1174
-#pragma set woff 1375
-#endif
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _Key, class _Tp, class _HashFcn = hash<_Key>,
- class _EqualKey = equal_to<_Key>,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
-#else
-template <class _Key, class _Tp, class _HashFcn, class _EqualKey,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
-#endif
-class hash_map
-{
-private:
- typedef hashtable<pair<const _Key,_Tp>,_Key,_HashFcn,
- _Select1st<pair<const _Key,_Tp> >,_EqualKey,_Alloc> _Ht;
- _Ht _M_ht;
-
-public:
- typedef typename _Ht::key_type key_type;
- typedef _Tp data_type;
- typedef _Tp mapped_type;
- typedef typename _Ht::value_type value_type;
- typedef typename _Ht::hasher hasher;
- typedef typename _Ht::key_equal key_equal;
-
- typedef typename _Ht::size_type size_type;
- typedef typename _Ht::difference_type difference_type;
- typedef typename _Ht::pointer pointer;
- typedef typename _Ht::const_pointer const_pointer;
- typedef typename _Ht::reference reference;
- typedef typename _Ht::const_reference const_reference;
-
- typedef typename _Ht::iterator iterator;
- typedef typename _Ht::const_iterator const_iterator;
-
- typedef typename _Ht::allocator_type allocator_type;
-
- hasher hash_funct() const { return _M_ht.hash_funct(); }
- key_equal key_eq() const { return _M_ht.key_eq(); }
- allocator_type get_allocator() const { return _M_ht.get_allocator(); }
-
-public:
- hash_map() : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
- explicit hash_map(size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
- hash_map(size_type __n, const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
- hash_map(size_type __n, const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a) {}
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- hash_map(_InputIterator __f, _InputIterator __l)
- : _M_ht(100, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- template <class _InputIterator>
- hash_map(_InputIterator __f, _InputIterator __l, size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- template <class _InputIterator>
- hash_map(_InputIterator __f, _InputIterator __l, size_type __n,
- const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- template <class _InputIterator>
- hash_map(_InputIterator __f, _InputIterator __l, size_type __n,
- const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a)
- { _M_ht.insert_unique(__f, __l); }
-
-#else
- hash_map(const value_type* __f, const value_type* __l)
- : _M_ht(100, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- hash_map(const value_type* __f, const value_type* __l, size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- hash_map(const value_type* __f, const value_type* __l, size_type __n,
- const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- hash_map(const value_type* __f, const value_type* __l, size_type __n,
- const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a)
- { _M_ht.insert_unique(__f, __l); }
-
- hash_map(const_iterator __f, const_iterator __l)
- : _M_ht(100, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- hash_map(const_iterator __f, const_iterator __l, size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- hash_map(const_iterator __f, const_iterator __l, size_type __n,
- const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- hash_map(const_iterator __f, const_iterator __l, size_type __n,
- const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a)
- { _M_ht.insert_unique(__f, __l); }
-#endif /*__STL_MEMBER_TEMPLATES */
-
-public:
- size_type size() const { return _M_ht.size(); }
- size_type max_size() const { return _M_ht.max_size(); }
- bool empty() const { return _M_ht.empty(); }
- void swap(hash_map& __hs) { _M_ht.swap(__hs._M_ht); }
- friend bool
- operator== __STL_NULL_TMPL_ARGS (const hash_map&, const hash_map&);
-
- iterator begin() { return _M_ht.begin(); }
- iterator end() { return _M_ht.end(); }
- const_iterator begin() const { return _M_ht.begin(); }
- const_iterator end() const { return _M_ht.end(); }
-
-public:
- pair<iterator,bool> insert(const value_type& __obj)
- { return _M_ht.insert_unique(__obj); }
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- void insert(_InputIterator __f, _InputIterator __l)
- { _M_ht.insert_unique(__f,__l); }
-#else
- void insert(const value_type* __f, const value_type* __l) {
- _M_ht.insert_unique(__f,__l);
- }
- void insert(const_iterator __f, const_iterator __l)
- { _M_ht.insert_unique(__f, __l); }
-#endif /*__STL_MEMBER_TEMPLATES */
- pair<iterator,bool> insert_noresize(const value_type& __obj)
- { return _M_ht.insert_unique_noresize(__obj); }
-
- iterator find(const key_type& __key) { return _M_ht.find(__key); }
- const_iterator find(const key_type& __key) const
- { return _M_ht.find(__key); }
-
- _Tp& operator[](const key_type& __key) {
- return _M_ht.find_or_insert(value_type(__key, _Tp())).second;
- }
-
- size_type count(const key_type& __key) const { return _M_ht.count(__key); }
-
- pair<iterator, iterator> equal_range(const key_type& __key)
- { return _M_ht.equal_range(__key); }
- pair<const_iterator, const_iterator>
- equal_range(const key_type& __key) const
- { return _M_ht.equal_range(__key); }
-
- size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
- void erase(iterator __it) { _M_ht.erase(__it); }
- void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
- void clear() { _M_ht.clear(); }
-
- void resize(size_type __hint) { _M_ht.resize(__hint); }
- size_type bucket_count() const { return _M_ht.bucket_count(); }
- size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
- size_type elems_in_bucket(size_type __n) const
- { return _M_ht.elems_in_bucket(__n); }
-};
-
-template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
-inline bool
-operator==(const hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
- const hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2)
-{
- return __hm1._M_ht == __hm2._M_ht;
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
-inline void
-swap(hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
- hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2)
-{
- __hm1.swap(__hm2);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _Key, class _Tp, class _HashFcn = hash<_Key>,
- class _EqualKey = equal_to<_Key>,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
-#else
-template <class _Key, class _Tp, class _HashFcn, class _EqualKey,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
-#endif
-class hash_multimap
-{
-private:
- typedef hashtable<pair<const _Key, _Tp>, _Key, _HashFcn,
- _Select1st<pair<const _Key, _Tp> >, _EqualKey, _Alloc>
- _Ht;
- _Ht _M_ht;
-
-public:
- typedef typename _Ht::key_type key_type;
- typedef _Tp data_type;
- typedef _Tp mapped_type;
- typedef typename _Ht::value_type value_type;
- typedef typename _Ht::hasher hasher;
- typedef typename _Ht::key_equal key_equal;
-
- typedef typename _Ht::size_type size_type;
- typedef typename _Ht::difference_type difference_type;
- typedef typename _Ht::pointer pointer;
- typedef typename _Ht::const_pointer const_pointer;
- typedef typename _Ht::reference reference;
- typedef typename _Ht::const_reference const_reference;
-
- typedef typename _Ht::iterator iterator;
- typedef typename _Ht::const_iterator const_iterator;
-
- typedef typename _Ht::allocator_type allocator_type;
-
- hasher hash_funct() const { return _M_ht.hash_funct(); }
- key_equal key_eq() const { return _M_ht.key_eq(); }
- allocator_type get_allocator() const { return _M_ht.get_allocator(); }
-
-public:
- hash_multimap() : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
- explicit hash_multimap(size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
- hash_multimap(size_type __n, const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
- hash_multimap(size_type __n, const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a) {}
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- hash_multimap(_InputIterator __f, _InputIterator __l)
- : _M_ht(100, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- template <class _InputIterator>
- hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- template <class _InputIterator>
- hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n,
- const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- template <class _InputIterator>
- hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n,
- const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a)
- { _M_ht.insert_equal(__f, __l); }
-
-#else
- hash_multimap(const value_type* __f, const value_type* __l)
- : _M_ht(100, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- hash_multimap(const value_type* __f, const value_type* __l, size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- hash_multimap(const value_type* __f, const value_type* __l, size_type __n,
- const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- hash_multimap(const value_type* __f, const value_type* __l, size_type __n,
- const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a)
- { _M_ht.insert_equal(__f, __l); }
-
- hash_multimap(const_iterator __f, const_iterator __l)
- : _M_ht(100, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- hash_multimap(const_iterator __f, const_iterator __l, size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- hash_multimap(const_iterator __f, const_iterator __l, size_type __n,
- const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- hash_multimap(const_iterator __f, const_iterator __l, size_type __n,
- const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a)
- { _M_ht.insert_equal(__f, __l); }
-#endif /*__STL_MEMBER_TEMPLATES */
-
-public:
- size_type size() const { return _M_ht.size(); }
- size_type max_size() const { return _M_ht.max_size(); }
- bool empty() const { return _M_ht.empty(); }
- void swap(hash_multimap& __hs) { _M_ht.swap(__hs._M_ht); }
- friend bool
- operator== __STL_NULL_TMPL_ARGS (const hash_multimap&,
- const hash_multimap&);
-
- iterator begin() { return _M_ht.begin(); }
- iterator end() { return _M_ht.end(); }
- const_iterator begin() const { return _M_ht.begin(); }
- const_iterator end() const { return _M_ht.end(); }
-
-public:
- iterator insert(const value_type& __obj)
- { return _M_ht.insert_equal(__obj); }
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- void insert(_InputIterator __f, _InputIterator __l)
- { _M_ht.insert_equal(__f,__l); }
-#else
- void insert(const value_type* __f, const value_type* __l) {
- _M_ht.insert_equal(__f,__l);
- }
- void insert(const_iterator __f, const_iterator __l)
- { _M_ht.insert_equal(__f, __l); }
-#endif /*__STL_MEMBER_TEMPLATES */
- iterator insert_noresize(const value_type& __obj)
- { return _M_ht.insert_equal_noresize(__obj); }
-
- iterator find(const key_type& __key) { return _M_ht.find(__key); }
- const_iterator find(const key_type& __key) const
- { return _M_ht.find(__key); }
-
- size_type count(const key_type& __key) const { return _M_ht.count(__key); }
-
- pair<iterator, iterator> equal_range(const key_type& __key)
- { return _M_ht.equal_range(__key); }
- pair<const_iterator, const_iterator>
- equal_range(const key_type& __key) const
- { return _M_ht.equal_range(__key); }
-
- size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
- void erase(iterator __it) { _M_ht.erase(__it); }
- void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
- void clear() { _M_ht.clear(); }
-
-public:
- void resize(size_type __hint) { _M_ht.resize(__hint); }
- size_type bucket_count() const { return _M_ht.bucket_count(); }
- size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
- size_type elems_in_bucket(size_type __n) const
- { return _M_ht.elems_in_bucket(__n); }
-};
-
-template <class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
-inline bool
-operator==(const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm1,
- const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm2)
-{
- return __hm1._M_ht == __hm2._M_ht;
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
-inline void
-swap(hash_multimap<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
- hash_multimap<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2)
-{
- __hm1.swap(__hm2);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1174
-#pragma reset woff 1375
-#endif
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_HASH_MAP_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_hash_set.h b/contrib/libstdc++/stl/stl_hash_set.h
deleted file mode 100644
index b623a64..0000000
--- a/contrib/libstdc++/stl/stl_hash_set.h
+++ /dev/null
@@ -1,401 +0,0 @@
-/*
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_HASH_SET_H
-#define __SGI_STL_INTERNAL_HASH_SET_H
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1174
-#pragma set woff 1375
-#endif
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _Value, class _HashFcn = hash<_Value>,
- class _EqualKey = equal_to<_Value>,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Value) >
-#else
-template <class _Value, class _HashFcn, class _EqualKey,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Value) >
-#endif
-class hash_set
-{
-private:
- typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>,
- _EqualKey, _Alloc> _Ht;
- _Ht _M_ht;
-
-public:
- typedef typename _Ht::key_type key_type;
- typedef typename _Ht::value_type value_type;
- typedef typename _Ht::hasher hasher;
- typedef typename _Ht::key_equal key_equal;
-
- typedef typename _Ht::size_type size_type;
- typedef typename _Ht::difference_type difference_type;
- typedef typename _Ht::const_pointer pointer;
- typedef typename _Ht::const_pointer const_pointer;
- typedef typename _Ht::const_reference reference;
- typedef typename _Ht::const_reference const_reference;
-
- typedef typename _Ht::const_iterator iterator;
- typedef typename _Ht::const_iterator const_iterator;
-
- typedef typename _Ht::allocator_type allocator_type;
-
- hasher hash_funct() const { return _M_ht.hash_funct(); }
- key_equal key_eq() const { return _M_ht.key_eq(); }
- allocator_type get_allocator() const { return _M_ht.get_allocator(); }
-
-public:
- hash_set()
- : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
- explicit hash_set(size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
- hash_set(size_type __n, const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
- hash_set(size_type __n, const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a) {}
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- hash_set(_InputIterator __f, _InputIterator __l)
- : _M_ht(100, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- template <class _InputIterator>
- hash_set(_InputIterator __f, _InputIterator __l, size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- template <class _InputIterator>
- hash_set(_InputIterator __f, _InputIterator __l, size_type __n,
- const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- template <class _InputIterator>
- hash_set(_InputIterator __f, _InputIterator __l, size_type __n,
- const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a)
- { _M_ht.insert_unique(__f, __l); }
-#else
-
- hash_set(const value_type* __f, const value_type* __l)
- : _M_ht(100, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- hash_set(const value_type* __f, const value_type* __l, size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- hash_set(const value_type* __f, const value_type* __l, size_type __n,
- const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- hash_set(const value_type* __f, const value_type* __l, size_type __n,
- const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a)
- { _M_ht.insert_unique(__f, __l); }
-
- hash_set(const_iterator __f, const_iterator __l)
- : _M_ht(100, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- hash_set(const_iterator __f, const_iterator __l, size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- hash_set(const_iterator __f, const_iterator __l, size_type __n,
- const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type())
- { _M_ht.insert_unique(__f, __l); }
- hash_set(const_iterator __f, const_iterator __l, size_type __n,
- const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a)
- { _M_ht.insert_unique(__f, __l); }
-#endif /*__STL_MEMBER_TEMPLATES */
-
-public:
- size_type size() const { return _M_ht.size(); }
- size_type max_size() const { return _M_ht.max_size(); }
- bool empty() const { return _M_ht.empty(); }
- void swap(hash_set& __hs) { _M_ht.swap(__hs._M_ht); }
- friend bool operator== __STL_NULL_TMPL_ARGS (const hash_set&,
- const hash_set&);
-
- iterator begin() const { return _M_ht.begin(); }
- iterator end() const { return _M_ht.end(); }
-
-public:
- pair<iterator, bool> insert(const value_type& __obj)
- {
- pair<typename _Ht::iterator, bool> __p = _M_ht.insert_unique(__obj);
- return pair<iterator,bool>(__p.first, __p.second);
- }
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- void insert(_InputIterator __f, _InputIterator __l)
- { _M_ht.insert_unique(__f,__l); }
-#else
- void insert(const value_type* __f, const value_type* __l) {
- _M_ht.insert_unique(__f,__l);
- }
- void insert(const_iterator __f, const_iterator __l)
- {_M_ht.insert_unique(__f, __l); }
-#endif /*__STL_MEMBER_TEMPLATES */
- pair<iterator, bool> insert_noresize(const value_type& __obj)
- {
- pair<typename _Ht::iterator, bool> __p =
- _M_ht.insert_unique_noresize(__obj);
- return pair<iterator, bool>(__p.first, __p.second);
- }
-
- iterator find(const key_type& __key) const { return _M_ht.find(__key); }
-
- size_type count(const key_type& __key) const { return _M_ht.count(__key); }
-
- pair<iterator, iterator> equal_range(const key_type& __key) const
- { return _M_ht.equal_range(__key); }
-
- size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
- void erase(iterator __it) { _M_ht.erase(__it); }
- void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
- void clear() { _M_ht.clear(); }
-
-public:
- void resize(size_type __hint) { _M_ht.resize(__hint); }
- size_type bucket_count() const { return _M_ht.bucket_count(); }
- size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
- size_type elems_in_bucket(size_type __n) const
- { return _M_ht.elems_in_bucket(__n); }
-};
-
-template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
-inline bool
-operator==(const hash_set<_Value,_HashFcn,_EqualKey,_Alloc>& __hs1,
- const hash_set<_Value,_HashFcn,_EqualKey,_Alloc>& __hs2)
-{
- return __hs1._M_ht == __hs2._M_ht;
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Val, class _HashFcn, class _EqualKey, class _Alloc>
-inline void
-swap(hash_set<_Val,_HashFcn,_EqualKey,_Alloc>& __hs1,
- hash_set<_Val,_HashFcn,_EqualKey,_Alloc>& __hs2)
-{
- __hs1.swap(__hs2);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _Value, class _HashFcn = hash<_Value>,
- class _EqualKey = equal_to<_Value>,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Value) >
-#else
-template <class _Value, class _HashFcn, class _EqualKey,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Value) >
-#endif
-class hash_multiset
-{
-private:
- typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>,
- _EqualKey, _Alloc> _Ht;
- _Ht _M_ht;
-
-public:
- typedef typename _Ht::key_type key_type;
- typedef typename _Ht::value_type value_type;
- typedef typename _Ht::hasher hasher;
- typedef typename _Ht::key_equal key_equal;
-
- typedef typename _Ht::size_type size_type;
- typedef typename _Ht::difference_type difference_type;
- typedef typename _Ht::const_pointer pointer;
- typedef typename _Ht::const_pointer const_pointer;
- typedef typename _Ht::const_reference reference;
- typedef typename _Ht::const_reference const_reference;
-
- typedef typename _Ht::const_iterator iterator;
- typedef typename _Ht::const_iterator const_iterator;
-
- typedef typename _Ht::allocator_type allocator_type;
-
- hasher hash_funct() const { return _M_ht.hash_funct(); }
- key_equal key_eq() const { return _M_ht.key_eq(); }
- allocator_type get_allocator() const { return _M_ht.get_allocator(); }
-
-public:
- hash_multiset()
- : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
- explicit hash_multiset(size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
- hash_multiset(size_type __n, const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type()) {}
- hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a) {}
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- hash_multiset(_InputIterator __f, _InputIterator __l)
- : _M_ht(100, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- template <class _InputIterator>
- hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- template <class _InputIterator>
- hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n,
- const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- template <class _InputIterator>
- hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n,
- const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a)
- { _M_ht.insert_equal(__f, __l); }
-#else
-
- hash_multiset(const value_type* __f, const value_type* __l)
- : _M_ht(100, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- hash_multiset(const value_type* __f, const value_type* __l, size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- hash_multiset(const value_type* __f, const value_type* __l, size_type __n,
- const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- hash_multiset(const value_type* __f, const value_type* __l, size_type __n,
- const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a)
- { _M_ht.insert_equal(__f, __l); }
-
- hash_multiset(const_iterator __f, const_iterator __l)
- : _M_ht(100, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- hash_multiset(const_iterator __f, const_iterator __l, size_type __n)
- : _M_ht(__n, hasher(), key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- hash_multiset(const_iterator __f, const_iterator __l, size_type __n,
- const hasher& __hf)
- : _M_ht(__n, __hf, key_equal(), allocator_type())
- { _M_ht.insert_equal(__f, __l); }
- hash_multiset(const_iterator __f, const_iterator __l, size_type __n,
- const hasher& __hf, const key_equal& __eql,
- const allocator_type& __a = allocator_type())
- : _M_ht(__n, __hf, __eql, __a)
- { _M_ht.insert_equal(__f, __l); }
-#endif /*__STL_MEMBER_TEMPLATES */
-
-public:
- size_type size() const { return _M_ht.size(); }
- size_type max_size() const { return _M_ht.max_size(); }
- bool empty() const { return _M_ht.empty(); }
- void swap(hash_multiset& hs) { _M_ht.swap(hs._M_ht); }
- friend bool operator== __STL_NULL_TMPL_ARGS (const hash_multiset&,
- const hash_multiset&);
-
- iterator begin() const { return _M_ht.begin(); }
- iterator end() const { return _M_ht.end(); }
-
-public:
- iterator insert(const value_type& __obj)
- { return _M_ht.insert_equal(__obj); }
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- void insert(_InputIterator __f, _InputIterator __l)
- { _M_ht.insert_equal(__f,__l); }
-#else
- void insert(const value_type* __f, const value_type* __l) {
- _M_ht.insert_equal(__f,__l);
- }
- void insert(const_iterator __f, const_iterator __l)
- { _M_ht.insert_equal(__f, __l); }
-#endif /*__STL_MEMBER_TEMPLATES */
- iterator insert_noresize(const value_type& __obj)
- { return _M_ht.insert_equal_noresize(__obj); }
-
- iterator find(const key_type& __key) const { return _M_ht.find(__key); }
-
- size_type count(const key_type& __key) const { return _M_ht.count(__key); }
-
- pair<iterator, iterator> equal_range(const key_type& __key) const
- { return _M_ht.equal_range(__key); }
-
- size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
- void erase(iterator __it) { _M_ht.erase(__it); }
- void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
- void clear() { _M_ht.clear(); }
-
-public:
- void resize(size_type __hint) { _M_ht.resize(__hint); }
- size_type bucket_count() const { return _M_ht.bucket_count(); }
- size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
- size_type elems_in_bucket(size_type __n) const
- { return _M_ht.elems_in_bucket(__n); }
-};
-
-template <class _Val, class _HashFcn, class _EqualKey, class _Alloc>
-inline bool
-operator==(const hash_multiset<_Val,_HashFcn,_EqualKey,_Alloc>& __hs1,
- const hash_multiset<_Val,_HashFcn,_EqualKey,_Alloc>& __hs2)
-{
- return __hs1._M_ht == __hs2._M_ht;
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Val, class _HashFcn, class _EqualKey, class _Alloc>
-inline void
-swap(hash_multiset<_Val,_HashFcn,_EqualKey,_Alloc>& __hs1,
- hash_multiset<_Val,_HashFcn,_EqualKey,_Alloc>& __hs2) {
- __hs1.swap(__hs2);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1174
-#pragma reset woff 1375
-#endif
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_HASH_SET_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_hashtable.h b/contrib/libstdc++/stl/stl_hashtable.h
deleted file mode 100644
index 78b36c1..0000000
--- a/contrib/libstdc++/stl/stl_hashtable.h
+++ /dev/null
@@ -1,1039 +0,0 @@
-/*
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_HASHTABLE_H
-#define __SGI_STL_INTERNAL_HASHTABLE_H
-
-// Hashtable class, used to implement the hashed associative containers
-// hash_set, hash_map, hash_multiset, and hash_multimap.
-
-#include <stl_algobase.h>
-#include <stl_alloc.h>
-#include <stl_construct.h>
-#include <stl_tempbuf.h>
-#include <stl_algo.h>
-#include <stl_uninitialized.h>
-#include <stl_function.h>
-#include <stl_vector.h>
-#include <stl_hash_fun.h>
-
-__STL_BEGIN_NAMESPACE
-
-template <class _Val>
-struct _Hashtable_node
-{
- _Hashtable_node* _M_next;
- _Val _M_val;
-};
-
-template <class _Val, class _Key, class _HashFcn,
- class _ExtractKey, class _EqualKey, class _Alloc = alloc>
-class hashtable;
-
-template <class _Val, class _Key, class _HashFcn,
- class _ExtractKey, class _EqualKey, class _Alloc>
-struct _Hashtable_iterator;
-
-template <class _Val, class _Key, class _HashFcn,
- class _ExtractKey, class _EqualKey, class _Alloc>
-struct _Hashtable_const_iterator;
-
-template <class _Val, class _Key, class _HashFcn,
- class _ExtractKey, class _EqualKey, class _Alloc>
-struct _Hashtable_iterator {
- typedef hashtable<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>
- _Hashtable;
- typedef _Hashtable_iterator<_Val, _Key, _HashFcn,
- _ExtractKey, _EqualKey, _Alloc>
- iterator;
- typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn,
- _ExtractKey, _EqualKey, _Alloc>
- const_iterator;
- typedef _Hashtable_node<_Val> _Node;
-
- typedef forward_iterator_tag iterator_category;
- typedef _Val value_type;
- typedef ptrdiff_t difference_type;
- typedef size_t size_type;
- typedef _Val& reference;
- typedef _Val* pointer;
-
- _Node* _M_cur;
- _Hashtable* _M_ht;
-
- _Hashtable_iterator(_Node* __n, _Hashtable* __tab)
- : _M_cur(__n), _M_ht(__tab) {}
- _Hashtable_iterator() {}
- reference operator*() const { return _M_cur->_M_val; }
-#ifndef __SGI_STL_NO_ARROW_OPERATOR
- pointer operator->() const { return &(operator*()); }
-#endif /* __SGI_STL_NO_ARROW_OPERATOR */
- iterator& operator++();
- iterator operator++(int);
- bool operator==(const iterator& __it) const
- { return _M_cur == __it._M_cur; }
- bool operator!=(const iterator& __it) const
- { return _M_cur != __it._M_cur; }
-};
-
-
-template <class _Val, class _Key, class _HashFcn,
- class _ExtractKey, class _EqualKey, class _Alloc>
-struct _Hashtable_const_iterator {
- typedef hashtable<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>
- _Hashtable;
- typedef _Hashtable_iterator<_Val,_Key,_HashFcn,
- _ExtractKey,_EqualKey,_Alloc>
- iterator;
- typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn,
- _ExtractKey, _EqualKey, _Alloc>
- const_iterator;
- typedef _Hashtable_node<_Val> _Node;
-
- typedef forward_iterator_tag iterator_category;
- typedef _Val value_type;
- typedef ptrdiff_t difference_type;
- typedef size_t size_type;
- typedef const _Val& reference;
- typedef const _Val* pointer;
-
- const _Node* _M_cur;
- const _Hashtable* _M_ht;
-
- _Hashtable_const_iterator(const _Node* __n, const _Hashtable* __tab)
- : _M_cur(__n), _M_ht(__tab) {}
- _Hashtable_const_iterator() {}
- _Hashtable_const_iterator(const iterator& __it)
- : _M_cur(__it._M_cur), _M_ht(__it._M_ht) {}
- reference operator*() const { return _M_cur->_M_val; }
-#ifndef __SGI_STL_NO_ARROW_OPERATOR
- pointer operator->() const { return &(operator*()); }
-#endif /* __SGI_STL_NO_ARROW_OPERATOR */
- const_iterator& operator++();
- const_iterator operator++(int);
- bool operator==(const const_iterator& __it) const
- { return _M_cur == __it._M_cur; }
- bool operator!=(const const_iterator& __it) const
- { return _M_cur != __it._M_cur; }
-};
-
-// Note: assumes long is at least 32 bits.
-static const int __stl_num_primes = 28;
-static const unsigned long __stl_prime_list[__stl_num_primes] =
-{
- 53ul, 97ul, 193ul, 389ul, 769ul,
- 1543ul, 3079ul, 6151ul, 12289ul, 24593ul,
- 49157ul, 98317ul, 196613ul, 393241ul, 786433ul,
- 1572869ul, 3145739ul, 6291469ul, 12582917ul, 25165843ul,
- 50331653ul, 100663319ul, 201326611ul, 402653189ul, 805306457ul,
- 1610612741ul, 3221225473ul, 4294967291ul
-};
-
-inline unsigned long __stl_next_prime(unsigned long __n)
-{
- const unsigned long* __first = __stl_prime_list;
- const unsigned long* __last = __stl_prime_list + __stl_num_primes;
- const unsigned long* pos = lower_bound(__first, __last, __n);
- return pos == __last ? *(__last - 1) : *pos;
-}
-
-// Forward declaration of operator==.
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-class hashtable;
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-bool operator==(const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht1,
- const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht2);
-
-
-// Hashtables handle allocators a bit differently than other containers
-// do. If we're using standard-conforming allocators, then a hashtable
-// unconditionally has a member variable to hold its allocator, even if
-// it so happens that all instances of the allocator type are identical.
-// This is because, for hashtables, this extra storage is negligible.
-// Additionally, a base class wouldn't serve any other purposes; it
-// wouldn't, for example, simplify the exception-handling code.
-
-template <class _Val, class _Key, class _HashFcn,
- class _ExtractKey, class _EqualKey, class _Alloc>
-class hashtable {
-public:
- typedef _Key key_type;
- typedef _Val value_type;
- typedef _HashFcn hasher;
- typedef _EqualKey key_equal;
-
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type& reference;
- typedef const value_type& const_reference;
-
- hasher hash_funct() const { return _M_hash; }
- key_equal key_eq() const { return _M_equals; }
-
-private:
- typedef _Hashtable_node<_Val> _Node;
-
-#ifdef __STL_USE_STD_ALLOCATORS
-public:
- typedef typename _Alloc_traits<_Val,_Alloc>::allocator_type allocator_type;
- allocator_type get_allocator() const { return _M_node_allocator; }
-private:
- typename _Alloc_traits<_Node, _Alloc>::allocator_type _M_node_allocator;
- _Node* _M_get_node() { return _M_node_allocator.allocate(1); }
- void _M_put_node(_Node* __p) { _M_node_allocator.deallocate(__p, 1); }
-# define __HASH_ALLOC_INIT(__a) _M_node_allocator(__a),
-#else /* __STL_USE_STD_ALLOCATORS */
-public:
- typedef _Alloc allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
-private:
- typedef simple_alloc<_Node, _Alloc> _M_node_allocator_type;
- _Node* _M_get_node() { return _M_node_allocator_type::allocate(1); }
- void _M_put_node(_Node* __p) { _M_node_allocator_type::deallocate(__p, 1); }
-# define __HASH_ALLOC_INIT(__a)
-#endif /* __STL_USE_STD_ALLOCATORS */
-
-private:
- hasher _M_hash;
- key_equal _M_equals;
- _ExtractKey _M_get_key;
- vector<_Node*,_Alloc> _M_buckets;
- size_type _M_num_elements;
-
-public:
- typedef _Hashtable_iterator<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>
- iterator;
- typedef _Hashtable_const_iterator<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,
- _Alloc>
- const_iterator;
-
- friend struct
- _Hashtable_iterator<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>;
- friend struct
- _Hashtable_const_iterator<_Val,_Key,_HashFcn,_ExtractKey,_EqualKey,_Alloc>;
-
-public:
- hashtable(size_type __n,
- const _HashFcn& __hf,
- const _EqualKey& __eql,
- const _ExtractKey& __ext,
- const allocator_type& __a = allocator_type())
- : __HASH_ALLOC_INIT(__a)
- _M_hash(__hf),
- _M_equals(__eql),
- _M_get_key(__ext),
- _M_buckets(__a),
- _M_num_elements(0)
- {
- _M_initialize_buckets(__n);
- }
-
- hashtable(size_type __n,
- const _HashFcn& __hf,
- const _EqualKey& __eql,
- const allocator_type& __a = allocator_type())
- : __HASH_ALLOC_INIT(__a)
- _M_hash(__hf),
- _M_equals(__eql),
- _M_get_key(_ExtractKey()),
- _M_buckets(__a),
- _M_num_elements(0)
- {
- _M_initialize_buckets(__n);
- }
-
- hashtable(const hashtable& __ht)
- : __HASH_ALLOC_INIT(__ht.get_allocator())
- _M_hash(__ht._M_hash),
- _M_equals(__ht._M_equals),
- _M_get_key(__ht._M_get_key),
- _M_buckets(__ht.get_allocator()),
- _M_num_elements(0)
- {
- _M_copy_from(__ht);
- }
-
-#undef __HASH_ALLOC_INIT
-
- hashtable& operator= (const hashtable& __ht)
- {
- if (&__ht != this) {
- clear();
- _M_hash = __ht._M_hash;
- _M_equals = __ht._M_equals;
- _M_get_key = __ht._M_get_key;
- _M_copy_from(__ht);
- }
- return *this;
- }
-
- ~hashtable() { clear(); }
-
- size_type size() const { return _M_num_elements; }
- size_type max_size() const { return size_type(-1); }
- bool empty() const { return size() == 0; }
-
- void swap(hashtable& __ht)
- {
- __STD::swap(_M_hash, __ht._M_hash);
- __STD::swap(_M_equals, __ht._M_equals);
- __STD::swap(_M_get_key, __ht._M_get_key);
- _M_buckets.swap(__ht._M_buckets);
- __STD::swap(_M_num_elements, __ht._M_num_elements);
- }
-
- iterator begin()
- {
- for (size_type __n = 0; __n < _M_buckets.size(); ++__n)
- if (_M_buckets[__n])
- return iterator(_M_buckets[__n], this);
- return end();
- }
-
- iterator end() { return iterator(0, this); }
-
- const_iterator begin() const
- {
- for (size_type __n = 0; __n < _M_buckets.size(); ++__n)
- if (_M_buckets[__n])
- return const_iterator(_M_buckets[__n], this);
- return end();
- }
-
- const_iterator end() const { return const_iterator(0, this); }
-
- friend bool
- operator== __STL_NULL_TMPL_ARGS (const hashtable&, const hashtable&);
-
-public:
-
- size_type bucket_count() const { return _M_buckets.size(); }
-
- size_type max_bucket_count() const
- { return __stl_prime_list[__stl_num_primes - 1]; }
-
- size_type elems_in_bucket(size_type __bucket) const
- {
- size_type __result = 0;
- for (_Node* __cur = _M_buckets[__bucket]; __cur; __cur = __cur->_M_next)
- __result += 1;
- return __result;
- }
-
- pair<iterator, bool> insert_unique(const value_type& __obj)
- {
- resize(_M_num_elements + 1);
- return insert_unique_noresize(__obj);
- }
-
- iterator insert_equal(const value_type& __obj)
- {
- resize(_M_num_elements + 1);
- return insert_equal_noresize(__obj);
- }
-
- pair<iterator, bool> insert_unique_noresize(const value_type& __obj);
- iterator insert_equal_noresize(const value_type& __obj);
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- void insert_unique(_InputIterator __f, _InputIterator __l)
- {
- insert_unique(__f, __l, __ITERATOR_CATEGORY(__f));
- }
-
- template <class _InputIterator>
- void insert_equal(_InputIterator __f, _InputIterator __l)
- {
- insert_equal(__f, __l, __ITERATOR_CATEGORY(__f));
- }
-
- template <class _InputIterator>
- void insert_unique(_InputIterator __f, _InputIterator __l,
- input_iterator_tag)
- {
- for ( ; __f != __l; ++__f)
- insert_unique(*__f);
- }
-
- template <class _InputIterator>
- void insert_equal(_InputIterator __f, _InputIterator __l,
- input_iterator_tag)
- {
- for ( ; __f != __l; ++__f)
- insert_equal(*__f);
- }
-
- template <class _ForwardIterator>
- void insert_unique(_ForwardIterator __f, _ForwardIterator __l,
- forward_iterator_tag)
- {
- size_type __n = 0;
- distance(__f, __l, __n);
- resize(_M_num_elements + __n);
- for ( ; __n > 0; --__n, ++__f)
- insert_unique_noresize(*__f);
- }
-
- template <class _ForwardIterator>
- void insert_equal(_ForwardIterator __f, _ForwardIterator __l,
- forward_iterator_tag)
- {
- size_type __n = 0;
- distance(__f, __l, __n);
- resize(_M_num_elements + __n);
- for ( ; __n > 0; --__n, ++__f)
- insert_equal_noresize(*__f);
- }
-
-#else /* __STL_MEMBER_TEMPLATES */
- void insert_unique(const value_type* __f, const value_type* __l)
- {
- size_type __n = __l - __f;
- resize(_M_num_elements + __n);
- for ( ; __n > 0; --__n, ++__f)
- insert_unique_noresize(*__f);
- }
-
- void insert_equal(const value_type* __f, const value_type* __l)
- {
- size_type __n = __l - __f;
- resize(_M_num_elements + __n);
- for ( ; __n > 0; --__n, ++__f)
- insert_equal_noresize(*__f);
- }
-
- void insert_unique(const_iterator __f, const_iterator __l)
- {
- size_type __n = 0;
- distance(__f, __l, __n);
- resize(_M_num_elements + __n);
- for ( ; __n > 0; --__n, ++__f)
- insert_unique_noresize(*__f);
- }
-
- void insert_equal(const_iterator __f, const_iterator __l)
- {
- size_type __n = 0;
- distance(__f, __l, __n);
- resize(_M_num_elements + __n);
- for ( ; __n > 0; --__n, ++__f)
- insert_equal_noresize(*__f);
- }
-#endif /*__STL_MEMBER_TEMPLATES */
-
- reference find_or_insert(const value_type& __obj);
-
- iterator find(const key_type& __key)
- {
- size_type __n = _M_bkt_num_key(__key);
- _Node* __first;
- for ( __first = _M_buckets[__n];
- __first && !_M_equals(_M_get_key(__first->_M_val), __key);
- __first = __first->_M_next)
- {}
- return iterator(__first, this);
- }
-
- const_iterator find(const key_type& __key) const
- {
- size_type __n = _M_bkt_num_key(__key);
- const _Node* __first;
- for ( __first = _M_buckets[__n];
- __first && !_M_equals(_M_get_key(__first->_M_val), __key);
- __first = __first->_M_next)
- {}
- return const_iterator(__first, this);
- }
-
- size_type count(const key_type& __key) const
- {
- const size_type __n = _M_bkt_num_key(__key);
- size_type __result = 0;
-
- for (const _Node* __cur = _M_buckets[__n]; __cur; __cur = __cur->_M_next)
- if (_M_equals(_M_get_key(__cur->_M_val), __key))
- ++__result;
- return __result;
- }
-
- pair<iterator, iterator>
- equal_range(const key_type& __key);
-
- pair<const_iterator, const_iterator>
- equal_range(const key_type& __key) const;
-
- size_type erase(const key_type& __key);
- void erase(const iterator& __it);
- void erase(iterator __first, iterator __last);
-
- void erase(const const_iterator& __it);
- void erase(const_iterator __first, const_iterator __last);
-
- void resize(size_type __num_elements_hint);
- void clear();
-
-private:
- size_type _M_next_size(size_type __n) const
- { return __stl_next_prime(__n); }
-
- void _M_initialize_buckets(size_type __n)
- {
- const size_type __n_buckets = _M_next_size(__n);
- _M_buckets.reserve(__n_buckets);
- _M_buckets.insert(_M_buckets.end(), __n_buckets, (_Node*) 0);
- _M_num_elements = 0;
- }
-
- size_type _M_bkt_num_key(const key_type& __key) const
- {
- return _M_bkt_num_key(__key, _M_buckets.size());
- }
-
- size_type _M_bkt_num(const value_type& __obj) const
- {
- return _M_bkt_num_key(_M_get_key(__obj));
- }
-
- size_type _M_bkt_num_key(const key_type& __key, size_t __n) const
- {
- return _M_hash(__key) % __n;
- }
-
- size_type _M_bkt_num(const value_type& __obj, size_t __n) const
- {
- return _M_bkt_num_key(_M_get_key(__obj), __n);
- }
-
- _Node* _M_new_node(const value_type& __obj)
- {
- _Node* __n = _M_get_node();
- __n->_M_next = 0;
- __STL_TRY {
- construct(&__n->_M_val, __obj);
- return __n;
- }
- __STL_UNWIND(_M_put_node(__n));
- }
-
- void _M_delete_node(_Node* __n)
- {
- destroy(&__n->_M_val);
- _M_put_node(__n);
- }
-
- void _M_erase_bucket(const size_type __n, _Node* __first, _Node* __last);
- void _M_erase_bucket(const size_type __n, _Node* __last);
-
- void _M_copy_from(const hashtable& __ht);
-
-};
-
-template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
- class _All>
-_Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>&
-_Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++()
-{
- const _Node* __old = _M_cur;
- _M_cur = _M_cur->_M_next;
- if (!_M_cur) {
- size_type __bucket = _M_ht->_M_bkt_num(__old->_M_val);
- while (!_M_cur && ++__bucket < _M_ht->_M_buckets.size())
- _M_cur = _M_ht->_M_buckets[__bucket];
- }
- return *this;
-}
-
-template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
- class _All>
-inline _Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>
-_Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++(int)
-{
- iterator __tmp = *this;
- ++*this;
- return __tmp;
-}
-
-template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
- class _All>
-_Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>&
-_Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++()
-{
- const _Node* __old = _M_cur;
- _M_cur = _M_cur->_M_next;
- if (!_M_cur) {
- size_type __bucket = _M_ht->_M_bkt_num(__old->_M_val);
- while (!_M_cur && ++__bucket < _M_ht->_M_buckets.size())
- _M_cur = _M_ht->_M_buckets[__bucket];
- }
- return *this;
-}
-
-template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
- class _All>
-inline _Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>
-_Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::operator++(int)
-{
- const_iterator __tmp = *this;
- ++*this;
- return __tmp;
-}
-
-#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
- class _All>
-inline forward_iterator_tag
-iterator_category(const _Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>&)
-{
- return forward_iterator_tag();
-}
-
-template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
- class _All>
-inline _Val*
-value_type(const _Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>&)
-{
- return (_Val*) 0;
-}
-
-template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
- class _All>
-inline hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::difference_type*
-distance_type(const _Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>&)
-{
- return (hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::difference_type*) 0;
-}
-
-template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
- class _All>
-inline forward_iterator_tag
-iterator_category(const _Hashtable_const_iterator<_Val,_Key,_HF,
- _ExK,_EqK,_All>&)
-{
- return forward_iterator_tag();
-}
-
-template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
- class _All>
-inline _Val*
-value_type(const _Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>&)
-{
- return (_Val*) 0;
-}
-
-template <class _Val, class _Key, class _HF, class _ExK, class _EqK,
- class _All>
-inline hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::difference_type*
-distance_type(const _Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>&)
-{
- return (hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::difference_type*) 0;
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-inline bool operator==(const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht1,
- const hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>& __ht2)
-{
- typedef typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::_Node _Node;
- if (__ht1._M_buckets.size() != __ht2._M_buckets.size())
- return false;
- for (int __n = 0; __n < __ht1._M_buckets.size(); ++__n) {
- _Node* __cur1 = __ht1._M_buckets[__n];
- _Node* __cur2 = __ht2._M_buckets[__n];
- for ( ; __cur1 && __cur2 && __cur1->_M_val == __cur2->_M_val;
- __cur1 = __cur1->_M_next, __cur2 = __cur2->_M_next)
- {}
- if (__cur1 || __cur2)
- return false;
- }
- return true;
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Val, class _Key, class _HF, class _Extract, class _EqKey,
- class _All>
-inline void swap(hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht1,
- hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht2) {
- __ht1.swap(__ht2);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-pair<typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::iterator, bool>
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::insert_unique_noresize(const value_type& __obj)
-{
- const size_type __n = _M_bkt_num(__obj);
- _Node* __first = _M_buckets[__n];
-
- for (_Node* __cur = __first; __cur; __cur = __cur->_M_next)
- if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj)))
- return pair<iterator, bool>(iterator(__cur, this), false);
-
- _Node* __tmp = _M_new_node(__obj);
- __tmp->_M_next = __first;
- _M_buckets[__n] = __tmp;
- ++_M_num_elements;
- return pair<iterator, bool>(iterator(__tmp, this), true);
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::iterator
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::insert_equal_noresize(const value_type& __obj)
-{
- const size_type __n = _M_bkt_num(__obj);
- _Node* __first = _M_buckets[__n];
-
- for (_Node* __cur = __first; __cur; __cur = __cur->_M_next)
- if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj))) {
- _Node* __tmp = _M_new_node(__obj);
- __tmp->_M_next = __cur->_M_next;
- __cur->_M_next = __tmp;
- ++_M_num_elements;
- return iterator(__tmp, this);
- }
-
- _Node* __tmp = _M_new_node(__obj);
- __tmp->_M_next = __first;
- _M_buckets[__n] = __tmp;
- ++_M_num_elements;
- return iterator(__tmp, this);
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::reference
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::find_or_insert(const value_type& __obj)
-{
- resize(_M_num_elements + 1);
-
- size_type __n = _M_bkt_num(__obj);
- _Node* __first = _M_buckets[__n];
-
- for (_Node* __cur = __first; __cur; __cur = __cur->_M_next)
- if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj)))
- return __cur->_M_val;
-
- _Node* __tmp = _M_new_node(__obj);
- __tmp->_M_next = __first;
- _M_buckets[__n] = __tmp;
- ++_M_num_elements;
- return __tmp->_M_val;
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-pair<typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::iterator,
- typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::iterator>
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::equal_range(const key_type& __key)
-{
- typedef pair<iterator, iterator> _Pii;
- const size_type __n = _M_bkt_num_key(__key);
-
- for (_Node* __first = _M_buckets[__n]; __first; __first = __first->_M_next)
- if (_M_equals(_M_get_key(__first->_M_val), __key)) {
- for (_Node* __cur = __first->_M_next; __cur; __cur = __cur->_M_next)
- if (!_M_equals(_M_get_key(__cur->_M_val), __key))
- return _Pii(iterator(__first, this), iterator(__cur, this));
- for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m)
- if (_M_buckets[__m])
- return _Pii(iterator(__first, this),
- iterator(_M_buckets[__m], this));
- return _Pii(iterator(__first, this), end());
- }
- return _Pii(end(), end());
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-pair<typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::const_iterator,
- typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::const_iterator>
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::equal_range(const key_type& __key) const
-{
- typedef pair<const_iterator, const_iterator> _Pii;
- const size_type __n = _M_bkt_num_key(__key);
-
- for (const _Node* __first = _M_buckets[__n] ;
- __first;
- __first = __first->_M_next) {
- if (_M_equals(_M_get_key(__first->_M_val), __key)) {
- for (const _Node* __cur = __first->_M_next;
- __cur;
- __cur = __cur->_M_next)
- if (!_M_equals(_M_get_key(__cur->_M_val), __key))
- return _Pii(const_iterator(__first, this),
- const_iterator(__cur, this));
- for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m)
- if (_M_buckets[__m])
- return _Pii(const_iterator(__first, this),
- const_iterator(_M_buckets[__m], this));
- return _Pii(const_iterator(__first, this), end());
- }
- }
- return _Pii(end(), end());
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-typename hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::size_type
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const key_type& __key)
-{
- const size_type __n = _M_bkt_num_key(__key);
- _Node* __first = _M_buckets[__n];
- size_type __erased = 0;
-
- if (__first) {
- _Node* __cur = __first;
- _Node* __next = __cur->_M_next;
- while (__next) {
- if (_M_equals(_M_get_key(__next->_M_val), __key)) {
- __cur->_M_next = __next->_M_next;
- _M_delete_node(__next);
- __next = __cur->_M_next;
- ++__erased;
- --_M_num_elements;
- }
- else {
- __cur = __next;
- __next = __cur->_M_next;
- }
- }
- if (_M_equals(_M_get_key(__first->_M_val), __key)) {
- _M_buckets[__n] = __first->_M_next;
- _M_delete_node(__first);
- ++__erased;
- --_M_num_elements;
- }
- }
- return __erased;
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const iterator& __it)
-{
- if (_Node* const __p = __it._M_cur) {
- const size_type __n = _M_bkt_num(__p->_M_val);
- _Node* __cur = _M_buckets[__n];
-
- if (__cur == __p) {
- _M_buckets[__n] = __cur->_M_next;
- _M_delete_node(__cur);
- --_M_num_elements;
- }
- else {
- _Node* __next = __cur->_M_next;
- while (__next) {
- if (__next == __p) {
- __cur->_M_next = __next->_M_next;
- _M_delete_node(__next);
- --_M_num_elements;
- break;
- }
- else {
- __cur = __next;
- __next = __cur->_M_next;
- }
- }
- }
- }
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::erase(iterator __first, iterator __last)
-{
- size_type __f_bucket = __first._M_cur ?
- _M_bkt_num(__first._M_cur->_M_val) : _M_buckets.size();
- size_type __l_bucket = __last._M_cur ?
- _M_bkt_num(__last._M_cur->_M_val) : _M_buckets.size();
-
- if (__first._M_cur == __last._M_cur)
- return;
- else if (__f_bucket == __l_bucket)
- _M_erase_bucket(__f_bucket, __first._M_cur, __last._M_cur);
- else {
- _M_erase_bucket(__f_bucket, __first._M_cur, 0);
- for (size_type __n = __f_bucket + 1; __n < __l_bucket; ++__n)
- _M_erase_bucket(__n, 0);
- if (__l_bucket != _M_buckets.size())
- _M_erase_bucket(__l_bucket, __last._M_cur);
- }
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-inline void
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const_iterator __first,
- const_iterator __last)
-{
- erase(iterator(const_cast<_Node*>(__first._M_cur),
- const_cast<hashtable*>(__first._M_ht)),
- iterator(const_cast<_Node*>(__last._M_cur),
- const_cast<hashtable*>(__last._M_ht)));
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-inline void
-hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const const_iterator& __it)
-{
- erase(iterator(const_cast<_Node*>(__it._M_cur),
- const_cast<hashtable*>(__it._M_ht)));
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::resize(size_type __num_elements_hint)
-{
- const size_type __old_n = _M_buckets.size();
- if (__num_elements_hint > __old_n) {
- const size_type __n = _M_next_size(__num_elements_hint);
- if (__n > __old_n) {
- vector<_Node*, _All> __tmp(__n, (_Node*)(0),
- _M_buckets.get_allocator());
- __STL_TRY {
- for (size_type __bucket = 0; __bucket < __old_n; ++__bucket) {
- _Node* __first = _M_buckets[__bucket];
- while (__first) {
- size_type __new_bucket = _M_bkt_num(__first->_M_val, __n);
- _M_buckets[__bucket] = __first->_M_next;
- __first->_M_next = __tmp[__new_bucket];
- __tmp[__new_bucket] = __first;
- __first = _M_buckets[__bucket];
- }
- }
- _M_buckets.swap(__tmp);
- }
-# ifdef __STL_USE_EXCEPTIONS
- catch(...) {
- for (size_type __bucket = 0; __bucket < __tmp.size(); ++__bucket) {
- while (__tmp[__bucket]) {
- _Node* __next = __tmp[__bucket]->_M_next;
- _M_delete_node(__tmp[__bucket]);
- __tmp[__bucket] = __next;
- }
- }
- throw;
- }
-# endif /* __STL_USE_EXCEPTIONS */
- }
- }
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::_M_erase_bucket(const size_type __n, _Node* __first, _Node* __last)
-{
- _Node* __cur = _M_buckets[__n];
- if (__cur == __first)
- _M_erase_bucket(__n, __last);
- else {
- _Node* __next;
- for (__next = __cur->_M_next;
- __next != __first;
- __cur = __next, __next = __cur->_M_next)
- ;
- while (__next) {
- __cur->_M_next = __next->_M_next;
- _M_delete_node(__next);
- __next = __cur->_M_next;
- --_M_num_elements;
- }
- }
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::_M_erase_bucket(const size_type __n, _Node* __last)
-{
- _Node* __cur = _M_buckets[__n];
- while (__cur != __last) {
- _Node* __next = __cur->_M_next;
- _M_delete_node(__cur);
- __cur = __next;
- _M_buckets[__n] = __cur;
- --_M_num_elements;
- }
-}
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::clear()
-{
- for (size_type __i = 0; __i < _M_buckets.size(); ++__i) {
- _Node* __cur = _M_buckets[__i];
- while (__cur != 0) {
- _Node* __next = __cur->_M_next;
- _M_delete_node(__cur);
- __cur = __next;
- }
- _M_buckets[__i] = 0;
- }
- _M_num_elements = 0;
-}
-
-
-template <class _Val, class _Key, class _HF, class _Ex, class _Eq, class _All>
-void hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>
- ::_M_copy_from(const hashtable& __ht)
-{
- _M_buckets.clear();
- _M_buckets.reserve(__ht._M_buckets.size());
- _M_buckets.insert(_M_buckets.end(), __ht._M_buckets.size(), (_Node*) 0);
- __STL_TRY {
- for (size_type __i = 0; __i < __ht._M_buckets.size(); ++__i) {
- if (const _Node* __cur = __ht._M_buckets[__i]) {
- _Node* __copy = _M_new_node(__cur->_M_val);
- _M_buckets[__i] = __copy;
-
- for (_Node* __next = __cur->_M_next;
- __next;
- __cur = __next, __next = __cur->_M_next) {
- __copy->_M_next = _M_new_node(__next->_M_val);
- __copy = __copy->_M_next;
- }
- }
- }
- _M_num_elements = __ht._M_num_elements;
- }
- __STL_UNWIND(clear());
-}
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_HASHTABLE_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_heap.h b/contrib/libstdc++/stl/stl_heap.h
deleted file mode 100644
index 62f142e..0000000
--- a/contrib/libstdc++/stl/stl_heap.h
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_HEAP_H
-#define __SGI_STL_INTERNAL_HEAP_H
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1209
-#endif
-
-// Heap-manipulation functions: push_heap, pop_heap, make_heap, sort_heap.
-
-template <class _RandomAccessIterator, class _Distance, class _Tp>
-void
-__push_heap(_RandomAccessIterator __first,
- _Distance __holeIndex, _Distance __topIndex, _Tp __value)
-{
- _Distance __parent = (__holeIndex - 1) / 2;
- while (__holeIndex > __topIndex && *(__first + __parent) < __value) {
- *(__first + __holeIndex) = *(__first + __parent);
- __holeIndex = __parent;
- __parent = (__holeIndex - 1) / 2;
- }
- *(__first + __holeIndex) = __value;
-}
-
-template <class _RandomAccessIterator, class _Distance, class _Tp>
-inline void
-__push_heap_aux(_RandomAccessIterator __first,
- _RandomAccessIterator __last, _Distance*, _Tp*)
-{
- __push_heap(__first, _Distance((__last - __first) - 1), _Distance(0),
- _Tp(*(__last - 1)));
-}
-
-template <class _RandomAccessIterator>
-inline void
-push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
-{
- __push_heap_aux(__first, __last,
- __DISTANCE_TYPE(__first), __VALUE_TYPE(__first));
-}
-
-template <class _RandomAccessIterator, class _Distance, class _Tp,
- class _Compare>
-void
-__push_heap(_RandomAccessIterator __first, _Distance __holeIndex,
- _Distance __topIndex, _Tp __value, _Compare __comp)
-{
- _Distance __parent = (__holeIndex - 1) / 2;
- while (__holeIndex > __topIndex && __comp(*(__first + __parent), __value)) {
- *(__first + __holeIndex) = *(__first + __parent);
- __holeIndex = __parent;
- __parent = (__holeIndex - 1) / 2;
- }
- *(__first + __holeIndex) = __value;
-}
-
-template <class _RandomAccessIterator, class _Compare,
- class _Distance, class _Tp>
-inline void
-__push_heap_aux(_RandomAccessIterator __first,
- _RandomAccessIterator __last, _Compare __comp,
- _Distance*, _Tp*)
-{
- __push_heap(__first, _Distance((__last - __first) - 1), _Distance(0),
- _Tp(*(__last - 1)), __comp);
-}
-
-template <class _RandomAccessIterator, class _Compare>
-inline void
-push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
- _Compare __comp)
-{
- __push_heap_aux(__first, __last, __comp,
- __DISTANCE_TYPE(__first), __VALUE_TYPE(__first));
-}
-
-template <class _RandomAccessIterator, class _Distance, class _Tp>
-void
-__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
- _Distance __len, _Tp __value)
-{
- _Distance __topIndex = __holeIndex;
- _Distance __secondChild = 2 * __holeIndex + 2;
- while (__secondChild < __len) {
- if (*(__first + __secondChild) < *(__first + (__secondChild - 1)))
- __secondChild--;
- *(__first + __holeIndex) = *(__first + __secondChild);
- __holeIndex = __secondChild;
- __secondChild = 2 * (__secondChild + 1);
- }
- if (__secondChild == __len) {
- *(__first + __holeIndex) = *(__first + (__secondChild - 1));
- __holeIndex = __secondChild - 1;
- }
- __push_heap(__first, __holeIndex, __topIndex, __value);
-}
-
-template <class _RandomAccessIterator, class _Tp, class _Distance>
-inline void
-__pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
- _RandomAccessIterator __result, _Tp __value, _Distance*)
-{
- *__result = *__first;
- __adjust_heap(__first, _Distance(0), _Distance(__last - __first), __value);
-}
-
-template <class _RandomAccessIterator, class _Tp>
-inline void
-__pop_heap_aux(_RandomAccessIterator __first, _RandomAccessIterator __last,
- _Tp*)
-{
- __pop_heap(__first, __last - 1, __last - 1,
- _Tp(*(__last - 1)), __DISTANCE_TYPE(__first));
-}
-
-template <class _RandomAccessIterator>
-inline void pop_heap(_RandomAccessIterator __first,
- _RandomAccessIterator __last)
-{
- __pop_heap_aux(__first, __last, __VALUE_TYPE(__first));
-}
-
-template <class _RandomAccessIterator, class _Distance,
- class _Tp, class _Compare>
-void
-__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
- _Distance __len, _Tp __value, _Compare __comp)
-{
- _Distance __topIndex = __holeIndex;
- _Distance __secondChild = 2 * __holeIndex + 2;
- while (__secondChild < __len) {
- if (__comp(*(__first + __secondChild), *(__first + (__secondChild - 1))))
- __secondChild--;
- *(__first + __holeIndex) = *(__first + __secondChild);
- __holeIndex = __secondChild;
- __secondChild = 2 * (__secondChild + 1);
- }
- if (__secondChild == __len) {
- *(__first + __holeIndex) = *(__first + (__secondChild - 1));
- __holeIndex = __secondChild - 1;
- }
- __push_heap(__first, __holeIndex, __topIndex, __value, __comp);
-}
-
-template <class _RandomAccessIterator, class _Tp, class _Compare,
- class _Distance>
-inline void
-__pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
- _RandomAccessIterator __result, _Tp __value, _Compare __comp,
- _Distance*)
-{
- *__result = *__first;
- __adjust_heap(__first, _Distance(0), _Distance(__last - __first),
- __value, __comp);
-}
-
-template <class _RandomAccessIterator, class _Tp, class _Compare>
-inline void
-__pop_heap_aux(_RandomAccessIterator __first,
- _RandomAccessIterator __last, _Tp*, _Compare __comp)
-{
- __pop_heap(__first, __last - 1, __last - 1, _Tp(*(__last - 1)), __comp,
- __DISTANCE_TYPE(__first));
-}
-
-template <class _RandomAccessIterator, class _Compare>
-inline void
-pop_heap(_RandomAccessIterator __first,
- _RandomAccessIterator __last, _Compare __comp)
-{
- __pop_heap_aux(__first, __last, __VALUE_TYPE(__first), __comp);
-}
-
-template <class _RandomAccessIterator, class _Tp, class _Distance>
-void
-__make_heap(_RandomAccessIterator __first,
- _RandomAccessIterator __last, _Tp*, _Distance*)
-{
- if (__last - __first < 2) return;
- _Distance __len = __last - __first;
- _Distance __parent = (__len - 2)/2;
-
- while (true) {
- __adjust_heap(__first, __parent, __len, _Tp(*(__first + __parent)));
- if (__parent == 0) return;
- __parent--;
- }
-}
-
-template <class _RandomAccessIterator>
-inline void
-make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
-{
- __make_heap(__first, __last,
- __VALUE_TYPE(__first), __DISTANCE_TYPE(__first));
-}
-
-template <class _RandomAccessIterator, class _Compare,
- class _Tp, class _Distance>
-void
-__make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
- _Compare __comp, _Tp*, _Distance*)
-{
- if (__last - __first < 2) return;
- _Distance __len = __last - __first;
- _Distance __parent = (__len - 2)/2;
-
- while (true) {
- __adjust_heap(__first, __parent, __len, _Tp(*(__first + __parent)),
- __comp);
- if (__parent == 0) return;
- __parent--;
- }
-}
-
-template <class _RandomAccessIterator, class _Compare>
-inline void
-make_heap(_RandomAccessIterator __first,
- _RandomAccessIterator __last, _Compare __comp)
-{
- __make_heap(__first, __last, __comp,
- __VALUE_TYPE(__first), __DISTANCE_TYPE(__first));
-}
-
-template <class _RandomAccessIterator>
-void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
-{
- while (__last - __first > 1)
- pop_heap(__first, __last--);
-}
-
-template <class _RandomAccessIterator, class _Compare>
-void
-sort_heap(_RandomAccessIterator __first,
- _RandomAccessIterator __last, _Compare __comp)
-{
- while (__last - __first > 1)
- pop_heap(__first, __last--, __comp);
-}
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1209
-#endif
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_HEAP_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_iterator.h b/contrib/libstdc++/stl/stl_iterator.h
deleted file mode 100644
index e2bd714..0000000
--- a/contrib/libstdc++/stl/stl_iterator.h
+++ /dev/null
@@ -1,915 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996-1998
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_ITERATOR_H
-#define __SGI_STL_INTERNAL_ITERATOR_H
-
-__STL_BEGIN_NAMESPACE
-
-struct input_iterator_tag {};
-struct output_iterator_tag {};
-struct forward_iterator_tag : public input_iterator_tag {};
-struct bidirectional_iterator_tag : public forward_iterator_tag {};
-struct random_access_iterator_tag : public bidirectional_iterator_tag {};
-
-// The base classes input_iterator, output_iterator, forward_iterator,
-// bidirectional_iterator, and random_access_iterator are not part of
-// the C++ standard. (they have been replaced by struct iterator.)
-// They are included for backward compatibility with the HP STL.
-
-template <class _Tp, class _Distance> struct input_iterator {
- typedef input_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef _Distance difference_type;
- typedef _Tp* pointer;
- typedef _Tp& reference;
-};
-
-struct output_iterator {
- typedef output_iterator_tag iterator_category;
- typedef void value_type;
- typedef void difference_type;
- typedef void pointer;
- typedef void reference;
-};
-
-template <class _Tp, class _Distance> struct forward_iterator {
- typedef forward_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef _Distance difference_type;
- typedef _Tp* pointer;
- typedef _Tp& reference;
-};
-
-
-template <class _Tp, class _Distance> struct bidirectional_iterator {
- typedef bidirectional_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef _Distance difference_type;
- typedef _Tp* pointer;
- typedef _Tp& reference;
-};
-
-template <class _Tp, class _Distance> struct random_access_iterator {
- typedef random_access_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef _Distance difference_type;
- typedef _Tp* pointer;
- typedef _Tp& reference;
-};
-
-#ifdef __STL_USE_NAMESPACES
-template <class _Category, class _Tp, class _Distance = ptrdiff_t,
- class _Pointer = _Tp*, class _Reference = _Tp&>
-struct iterator {
- typedef _Category iterator_category;
- typedef _Tp value_type;
- typedef _Distance difference_type;
- typedef _Pointer pointer;
- typedef _Reference reference;
-};
-#endif /* __STL_USE_NAMESPACES */
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _Iterator>
-struct iterator_traits {
- typedef typename _Iterator::iterator_category iterator_category;
- typedef typename _Iterator::value_type value_type;
- typedef typename _Iterator::difference_type difference_type;
- typedef typename _Iterator::pointer pointer;
- typedef typename _Iterator::reference reference;
-};
-
-template <class _Tp>
-struct iterator_traits<_Tp*> {
- typedef random_access_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef _Tp& reference;
-};
-
-template <class _Tp>
-struct iterator_traits<const _Tp*> {
- typedef random_access_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef ptrdiff_t difference_type;
- typedef const _Tp* pointer;
- typedef const _Tp& reference;
-};
-
-// The overloaded functions iterator_category, distance_type, and
-// value_type are not part of the C++ standard. (They have been
-// replaced by struct iterator_traits.) They are included for
-// backward compatibility with the HP STL.
-
-// We introduce internal names for these functions.
-
-template <class _Iter>
-inline typename iterator_traits<_Iter>::iterator_category
-__iterator_category(const _Iter&)
-{
- typedef typename iterator_traits<_Iter>::iterator_category _Category;
- return _Category();
-}
-
-template <class _Iter>
-inline typename iterator_traits<_Iter>::difference_type*
-__distance_type(const _Iter&)
-{
- return static_cast<typename iterator_traits<_Iter>::difference_type*>(0);
-}
-
-template <class _Iter>
-inline typename iterator_traits<_Iter>::value_type*
-__value_type(const _Iter&)
-{
- return static_cast<typename iterator_traits<_Iter>::value_type*>(0);
-}
-
-template <class _Iter>
-inline typename iterator_traits<_Iter>::iterator_category
-iterator_category(const _Iter& __i) { return __iterator_category(__i); }
-
-
-template <class _Iter>
-inline typename iterator_traits<_Iter>::difference_type*
-distance_type(const _Iter& __i) { return __distance_type(__i); }
-
-template <class _Iter>
-inline typename iterator_traits<_Iter>::value_type*
-value_type(const _Iter& __i) { return __value_type(__i); }
-
-#define __ITERATOR_CATEGORY(__i) __iterator_category(__i)
-#define __DISTANCE_TYPE(__i) __distance_type(__i)
-#define __VALUE_TYPE(__i) __value_type(__i)
-
-#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-template <class _Tp, class _Distance>
-inline input_iterator_tag
-iterator_category(const input_iterator<_Tp, _Distance>&)
- { return input_iterator_tag(); }
-
-inline output_iterator_tag iterator_category(const output_iterator&)
- { return output_iterator_tag(); }
-
-template <class _Tp, class _Distance>
-inline forward_iterator_tag
-iterator_category(const forward_iterator<_Tp, _Distance>&)
- { return forward_iterator_tag(); }
-
-template <class _Tp, class _Distance>
-inline bidirectional_iterator_tag
-iterator_category(const bidirectional_iterator<_Tp, _Distance>&)
- { return bidirectional_iterator_tag(); }
-
-template <class _Tp, class _Distance>
-inline random_access_iterator_tag
-iterator_category(const random_access_iterator<_Tp, _Distance>&)
- { return random_access_iterator_tag(); }
-
-template <class _Tp>
-inline random_access_iterator_tag iterator_category(const _Tp*)
- { return random_access_iterator_tag(); }
-
-template <class _Tp, class _Distance>
-inline _Tp* value_type(const input_iterator<_Tp, _Distance>&)
- { return (_Tp*)(0); }
-
-template <class _Tp, class _Distance>
-inline _Tp* value_type(const forward_iterator<_Tp, _Distance>&)
- { return (_Tp*)(0); }
-
-template <class _Tp, class _Distance>
-inline _Tp* value_type(const bidirectional_iterator<_Tp, _Distance>&)
- { return (_Tp*)(0); }
-
-template <class _Tp, class _Distance>
-inline _Tp* value_type(const random_access_iterator<_Tp, _Distance>&)
- { return (_Tp*)(0); }
-
-template <class _Tp>
-inline _Tp* value_type(const _Tp*) { return (_Tp*)(0); }
-
-template <class _Tp, class _Distance>
-inline _Distance* distance_type(const input_iterator<_Tp, _Distance>&)
-{
- return (_Distance*)(0);
-}
-
-template <class _Tp, class _Distance>
-inline _Distance* distance_type(const forward_iterator<_Tp, _Distance>&)
-{
- return (_Distance*)(0);
-}
-
-template <class _Tp, class _Distance>
-inline _Distance*
-distance_type(const bidirectional_iterator<_Tp, _Distance>&)
-{
- return (_Distance*)(0);
-}
-
-template <class _Tp, class _Distance>
-inline _Distance*
-distance_type(const random_access_iterator<_Tp, _Distance>&)
-{
- return (_Distance*)(0);
-}
-
-template <class _Tp>
-inline ptrdiff_t* distance_type(const _Tp*) { return (ptrdiff_t*)(0); }
-
-// Without partial specialization we can't use iterator_traits, so
-// we must keep the old iterator query functions around.
-
-#define __ITERATOR_CATEGORY(__i) iterator_category(__i)
-#define __DISTANCE_TYPE(__i) distance_type(__i)
-#define __VALUE_TYPE(__i) value_type(__i)
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-template <class _InputIterator, class _Distance>
-inline void __distance(_InputIterator __first, _InputIterator __last,
- _Distance& __n, input_iterator_tag)
-{
- while (__first != __last) { ++__first; ++__n; }
-}
-
-template <class _RandomAccessIterator, class _Distance>
-inline void __distance(_RandomAccessIterator __first,
- _RandomAccessIterator __last,
- _Distance& __n, random_access_iterator_tag)
-{
- __n += __last - __first;
-}
-
-template <class _InputIterator, class _Distance>
-inline void distance(_InputIterator __first,
- _InputIterator __last, _Distance& __n)
-{
- __distance(__first, __last, __n, iterator_category(__first));
-}
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _InputIterator>
-inline typename iterator_traits<_InputIterator>::difference_type
-__distance(_InputIterator __first, _InputIterator __last, input_iterator_tag)
-{
- typename iterator_traits<_InputIterator>::difference_type __n = 0;
- while (__first != __last) {
- ++__first; ++__n;
- }
- return __n;
-}
-
-template <class _RandomAccessIterator>
-inline typename iterator_traits<_RandomAccessIterator>::difference_type
-__distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
- random_access_iterator_tag) {
- return __last - __first;
-}
-
-template <class _InputIterator>
-inline typename iterator_traits<_InputIterator>::difference_type
-distance(_InputIterator __first, _InputIterator __last) {
- typedef typename iterator_traits<_InputIterator>::iterator_category
- _Category;
- return __distance(__first, __last, _Category());
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-template <class _InputIter, class _Distance>
-inline void __advance(_InputIter& __i, _Distance __n, input_iterator_tag) {
- while (__n--) ++__i;
-}
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1183
-#endif
-
-template <class _BidirectionalIterator, class _Distance>
-inline void __advance(_BidirectionalIterator& __i, _Distance __n,
- bidirectional_iterator_tag) {
- if (__n >= 0)
- while (__n--) ++__i;
- else
- while (__n++) --__i;
-}
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1183
-#endif
-
-template <class _RandomAccessIterator, class _Distance>
-inline void __advance(_RandomAccessIterator& __i, _Distance __n,
- random_access_iterator_tag) {
- __i += __n;
-}
-
-template <class _InputIterator, class _Distance>
-inline void advance(_InputIterator& __i, _Distance __n) {
- __advance(__i, __n, iterator_category(__i));
-}
-
-template <class _Container>
-class back_insert_iterator {
-protected:
- _Container* container;
-public:
- typedef _Container container_type;
- typedef output_iterator_tag iterator_category;
- typedef void value_type;
- typedef void difference_type;
- typedef void pointer;
- typedef void reference;
-
- explicit back_insert_iterator(_Container& __x) : container(&__x) {}
- back_insert_iterator<_Container>&
- operator=(const typename _Container::value_type& __value) {
- container->push_back(__value);
- return *this;
- }
- back_insert_iterator<_Container>& operator*() { return *this; }
- back_insert_iterator<_Container>& operator++() { return *this; }
- back_insert_iterator<_Container>& operator++(int) { return *this; }
-};
-
-#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _Container>
-inline output_iterator_tag
-iterator_category(const back_insert_iterator<_Container>&)
-{
- return output_iterator_tag();
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-template <class _Container>
-inline back_insert_iterator<_Container> back_inserter(_Container& __x) {
- return back_insert_iterator<_Container>(__x);
-}
-
-template <class _Container>
-class front_insert_iterator {
-protected:
- _Container* container;
-public:
- typedef _Container container_type;
- typedef output_iterator_tag iterator_category;
- typedef void value_type;
- typedef void difference_type;
- typedef void pointer;
- typedef void reference;
-
- explicit front_insert_iterator(_Container& __x) : container(&__x) {}
- front_insert_iterator<_Container>&
- operator=(const typename _Container::value_type& __value) {
- container->push_front(__value);
- return *this;
- }
- front_insert_iterator<_Container>& operator*() { return *this; }
- front_insert_iterator<_Container>& operator++() { return *this; }
- front_insert_iterator<_Container>& operator++(int) { return *this; }
-};
-
-#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _Container>
-inline output_iterator_tag
-iterator_category(const front_insert_iterator<_Container>&)
-{
- return output_iterator_tag();
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-template <class _Container>
-inline front_insert_iterator<_Container> front_inserter(_Container& __x) {
- return front_insert_iterator<_Container>(__x);
-}
-
-template <class _Container>
-class insert_iterator {
-protected:
- _Container* container;
- typename _Container::iterator iter;
-public:
- typedef _Container container_type;
- typedef output_iterator_tag iterator_category;
- typedef void value_type;
- typedef void difference_type;
- typedef void pointer;
- typedef void reference;
-
- insert_iterator(_Container& __x, typename _Container::iterator __i)
- : container(&__x), iter(__i) {}
- insert_iterator<_Container>&
- operator=(const typename _Container::value_type& __value) {
- iter = container->insert(iter, __value);
- ++iter;
- return *this;
- }
- insert_iterator<_Container>& operator*() { return *this; }
- insert_iterator<_Container>& operator++() { return *this; }
- insert_iterator<_Container>& operator++(int) { return *this; }
-};
-
-#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _Container>
-inline output_iterator_tag
-iterator_category(const insert_iterator<_Container>&)
-{
- return output_iterator_tag();
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-template <class _Container, class _Iterator>
-inline
-insert_iterator<_Container> inserter(_Container& __x, _Iterator __i)
-{
- typedef typename _Container::iterator __iter;
- return insert_iterator<_Container>(__x, __iter(__i));
-}
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _BidirectionalIterator, class _Tp, class _Reference = _Tp&,
- class _Distance = ptrdiff_t>
-#else
-template <class _BidirectionalIterator, class _Tp, class _Reference,
- class _Distance>
-#endif
-class reverse_bidirectional_iterator {
- typedef reverse_bidirectional_iterator<_BidirectionalIterator, _Tp,
- _Reference, _Distance> _Self;
-protected:
- _BidirectionalIterator current;
-public:
- typedef bidirectional_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef _Distance difference_type;
- typedef _Tp* pointer;
- typedef _Reference reference;
-
- reverse_bidirectional_iterator() {}
- explicit reverse_bidirectional_iterator(_BidirectionalIterator __x)
- : current(__x) {}
- _BidirectionalIterator base() const { return current; }
- _Reference operator*() const {
- _BidirectionalIterator __tmp = current;
- return *--__tmp;
- }
-#ifndef __SGI_STL_NO_ARROW_OPERATOR
- pointer operator->() const { return &(operator*()); }
-#endif /* __SGI_STL_NO_ARROW_OPERATOR */
- _Self& operator++() {
- --current;
- return *this;
- }
- _Self operator++(int) {
- _Self __tmp = *this;
- --current;
- return __tmp;
- }
- _Self& operator--() {
- ++current;
- return *this;
- }
- _Self operator--(int) {
- _Self __tmp = *this;
- ++current;
- return __tmp;
- }
-};
-
-#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _BidirectionalIterator, class _Tp, class _Reference,
- class _Distance>
-inline bidirectional_iterator_tag
-iterator_category(const reverse_bidirectional_iterator<_BidirectionalIterator,
- _Tp, _Reference,
- _Distance>&)
-{
- return bidirectional_iterator_tag();
-}
-
-template <class _BidirectionalIterator, class _Tp, class _Reference,
- class _Distance>
-inline _Tp*
-value_type(const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp,
- _Reference, _Distance>&)
-{
- return (_Tp*) 0;
-}
-
-template <class _BidirectionalIterator, class _Tp, class _Reference,
- class _Distance>
-inline _Distance*
-distance_type(const reverse_bidirectional_iterator<_BidirectionalIterator,
- _Tp,
- _Reference, _Distance>&)
-{
- return (_Distance*) 0;
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-template <class _BiIter, class _Tp, class _Ref,
- class _Distance>
-inline bool operator==(
- const reverse_bidirectional_iterator<_BiIter, _Tp, _Ref, _Distance>& __x,
- const reverse_bidirectional_iterator<_BiIter, _Tp, _Ref, _Distance>& __y)
-{
- return __x.base() == __y.base();
-}
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-// This is the new version of reverse_iterator, as defined in the
-// draft C++ standard. It relies on the iterator_traits template,
-// which in turn relies on partial specialization. The class
-// reverse_bidirectional_iterator is no longer part of the draft
-// standard, but it is retained for backward compatibility.
-
-template <class _Iterator>
-class reverse_iterator
-{
-protected:
- _Iterator current;
-public:
- typedef typename iterator_traits<_Iterator>::iterator_category
- iterator_category;
- typedef typename iterator_traits<_Iterator>::value_type
- value_type;
- typedef typename iterator_traits<_Iterator>::difference_type
- difference_type;
- typedef typename iterator_traits<_Iterator>::pointer
- pointer;
- typedef typename iterator_traits<_Iterator>::reference
- reference;
-
- typedef _Iterator iterator_type;
- typedef reverse_iterator<_Iterator> _Self;
-
-public:
- reverse_iterator() {}
- explicit reverse_iterator(iterator_type __x) : current(__x) {}
-
- reverse_iterator(const _Self& __x) : current(__x.current) {}
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _Iter>
- reverse_iterator(const reverse_iterator<_Iter>& __x)
- : current(__x.base()) {}
-#endif /* __STL_MEMBER_TEMPLATES */
-
- iterator_type base() const { return current; }
- reference operator*() const {
- _Iterator __tmp = current;
- return *--__tmp;
- }
-#ifndef __SGI_STL_NO_ARROW_OPERATOR
- pointer operator->() const { return &(operator*()); }
-#endif /* __SGI_STL_NO_ARROW_OPERATOR */
-
- _Self& operator++() {
- --current;
- return *this;
- }
- _Self operator++(int) {
- _Self __tmp = *this;
- --current;
- return __tmp;
- }
- _Self& operator--() {
- ++current;
- return *this;
- }
- _Self operator--(int) {
- _Self __tmp = *this;
- ++current;
- return __tmp;
- }
-
- _Self operator+(difference_type __n) const {
- return _Self(current - __n);
- }
- _Self& operator+=(difference_type __n) {
- current -= __n;
- return *this;
- }
- _Self operator-(difference_type __n) const {
- return _Self(current + __n);
- }
- _Self& operator-=(difference_type __n) {
- current += __n;
- return *this;
- }
- reference operator[](difference_type __n) const { return *(*this + __n); }
-};
-
-template <class _Iterator>
-inline bool operator==(const reverse_iterator<_Iterator>& __x,
- const reverse_iterator<_Iterator>& __y) {
- return __x.base() == __y.base();
-}
-
-template <class _Iterator>
-inline bool operator<(const reverse_iterator<_Iterator>& __x,
- const reverse_iterator<_Iterator>& __y) {
- return __y.base() < __x.base();
-}
-
-template <class _Iterator>
-inline typename reverse_iterator<_Iterator>::difference_type
-operator-(const reverse_iterator<_Iterator>& __x,
- const reverse_iterator<_Iterator>& __y) {
- return __y.base() - __x.base();
-}
-
-template <class _Iterator>
-inline reverse_iterator<_Iterator>
-operator+(typename reverse_iterator<_Iterator>::difference_type __n,
- const reverse_iterator<_Iterator>& __x) {
- return reverse_iterator<_Iterator>(__x.base() - __n);
-}
-
-#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-// This is the old version of reverse_iterator, as found in the original
-// HP STL. It does not use partial specialization.
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _RandomAccessIterator, class _Tp, class _Reference = _Tp&,
- class _Distance = ptrdiff_t>
-#else
-template <class _RandomAccessIterator, class _Tp, class _Reference,
- class _Distance>
-#endif
-class reverse_iterator {
- typedef reverse_iterator<_RandomAccessIterator, _Tp, _Reference, _Distance>
- _Self;
-protected:
- _RandomAccessIterator current;
-public:
- typedef random_access_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef _Distance difference_type;
- typedef _Tp* pointer;
- typedef _Reference reference;
-
- reverse_iterator() {}
- explicit reverse_iterator(_RandomAccessIterator __x) : current(__x) {}
- _RandomAccessIterator base() const { return current; }
- _Reference operator*() const { return *(current - 1); }
-#ifndef __SGI_STL_NO_ARROW_OPERATOR
- pointer operator->() const { return &(operator*()); }
-#endif /* __SGI_STL_NO_ARROW_OPERATOR */
- _Self& operator++() {
- --current;
- return *this;
- }
- _Self operator++(int) {
- _Self __tmp = *this;
- --current;
- return __tmp;
- }
- _Self& operator--() {
- ++current;
- return *this;
- }
- _Self operator--(int) {
- _Self __tmp = *this;
- ++current;
- return __tmp;
- }
- _Self operator+(_Distance __n) const {
- return _Self(current - __n);
- }
- _Self& operator+=(_Distance __n) {
- current -= __n;
- return *this;
- }
- _Self operator-(_Distance __n) const {
- return _Self(current + __n);
- }
- _Self& operator-=(_Distance __n) {
- current += __n;
- return *this;
- }
- _Reference operator[](_Distance __n) const { return *(*this + __n); }
-};
-
-template <class _RandomAccessIterator, class _Tp,
- class _Reference, class _Distance>
-inline random_access_iterator_tag
-iterator_category(const reverse_iterator<_RandomAccessIterator, _Tp,
- _Reference, _Distance>&)
-{
- return random_access_iterator_tag();
-}
-
-template <class _RandomAccessIterator, class _Tp,
- class _Reference, class _Distance>
-inline _Tp* value_type(const reverse_iterator<_RandomAccessIterator, _Tp,
- _Reference, _Distance>&)
-{
- return (_Tp*) 0;
-}
-
-template <class _RandomAccessIterator, class _Tp,
- class _Reference, class _Distance>
-inline _Distance*
-distance_type(const reverse_iterator<_RandomAccessIterator,
- _Tp, _Reference, _Distance>&)
-{
- return (_Distance*) 0;
-}
-
-
-template <class _RandomAccessIterator, class _Tp,
- class _Reference, class _Distance>
-inline bool
-operator==(const reverse_iterator<_RandomAccessIterator, _Tp,
- _Reference, _Distance>& __x,
- const reverse_iterator<_RandomAccessIterator, _Tp,
- _Reference, _Distance>& __y)
-{
- return __x.base() == __y.base();
-}
-
-template <class _RandomAccessIterator, class _Tp,
- class _Reference, class _Distance>
-inline bool
-operator<(const reverse_iterator<_RandomAccessIterator, _Tp,
- _Reference, _Distance>& __x,
- const reverse_iterator<_RandomAccessIterator, _Tp,
- _Reference, _Distance>& __y)
-{
- return __y.base() < __x.base();
-}
-
-template <class _RandomAccessIterator, class _Tp,
- class _Reference, class _Distance>
-inline _Distance
-operator-(const reverse_iterator<_RandomAccessIterator, _Tp,
- _Reference, _Distance>& __x,
- const reverse_iterator<_RandomAccessIterator, _Tp,
- _Reference, _Distance>& __y)
-{
- return __y.base() - __x.base();
-}
-
-template <class _RandAccIter, class _Tp, class _Ref, class _Dist>
-inline reverse_iterator<_RandAccIter, _Tp, _Ref, _Dist>
-operator+(_Dist __n,
- const reverse_iterator<_RandAccIter, _Tp, _Ref, _Dist>& __x)
-{
- return reverse_iterator<_RandAccIter, _Tp, _Ref, _Dist>(__x.base() - __n);
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-// When we have templatized iostreams, istream_iterator and ostream_iterator
-// must be rewritten.
-
-template <class _Tp, class _Dist = ptrdiff_t>
-class istream_iterator {
- friend bool operator== __STL_NULL_TMPL_ARGS (const istream_iterator&,
- const istream_iterator&);
-protected:
- istream* _M_stream;
- _Tp _M_value;
- bool _M_end_marker;
- void _M_read() {
- _M_end_marker = (*_M_stream) ? true : false;
- if (_M_end_marker) *_M_stream >> _M_value;
- _M_end_marker = (*_M_stream) ? true : false;
- }
-public:
- typedef input_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef _Dist difference_type;
- typedef const _Tp* pointer;
- typedef const _Tp& reference;
-
- istream_iterator() : _M_stream(&cin), _M_end_marker(false) {}
- istream_iterator(istream& __s) : _M_stream(&__s) { _M_read(); }
- reference operator*() const { return _M_value; }
-#ifndef __SGI_STL_NO_ARROW_OPERATOR
- pointer operator->() const { return &(operator*()); }
-#endif /* __SGI_STL_NO_ARROW_OPERATOR */
- istream_iterator<_Tp, _Dist>& operator++() {
- _M_read();
- return *this;
- }
- istream_iterator<_Tp, _Dist> operator++(int) {
- istream_iterator<_Tp, _Dist> __tmp = *this;
- _M_read();
- return __tmp;
- }
-};
-
-#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _Tp, class _Dist>
-inline input_iterator_tag
-iterator_category(const istream_iterator<_Tp, _Dist>&)
-{
- return input_iterator_tag();
-}
-
-template <class _Tp, class _Dist>
-inline _Tp*
-value_type(const istream_iterator<_Tp, _Dist>&) { return (_Tp*) 0; }
-
-template <class _Tp, class _Dist>
-inline _Dist*
-distance_type(const istream_iterator<_Tp, _Dist>&) { return (_Dist*)0; }
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-template <class _Tp, class _Distance>
-inline bool operator==(const istream_iterator<_Tp, _Distance>& __x,
- const istream_iterator<_Tp, _Distance>& __y) {
- return (__x._M_stream == __y._M_stream &&
- __x._M_end_marker == __y._M_end_marker) ||
- __x._M_end_marker == false && __y._M_end_marker == false;
-}
-
-template <class _Tp>
-class ostream_iterator {
-protected:
- ostream* _M_stream;
- const char* _M_string;
-public:
- typedef output_iterator_tag iterator_category;
- typedef void value_type;
- typedef void difference_type;
- typedef void pointer;
- typedef void reference;
-
- ostream_iterator(ostream& __s) : _M_stream(&__s), _M_string(0) {}
- ostream_iterator(ostream& __s, const char* __c)
- : _M_stream(&__s), _M_string(__c) {}
- ostream_iterator<_Tp>& operator=(const _Tp& __value) {
- *_M_stream << __value;
- if (_M_string) *_M_stream << _M_string;
- return *this;
- }
- ostream_iterator<_Tp>& operator*() { return *this; }
- ostream_iterator<_Tp>& operator++() { return *this; }
- ostream_iterator<_Tp>& operator++(int) { return *this; }
-};
-
-#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _Tp>
-inline output_iterator_tag
-iterator_category(const ostream_iterator<_Tp>&) {
- return output_iterator_tag();
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_ITERATOR_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_list.h b/contrib/libstdc++/stl/stl_list.h
deleted file mode 100644
index 5d95d64..0000000
--- a/contrib/libstdc++/stl/stl_list.h
+++ /dev/null
@@ -1,840 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_LIST_H
-#define __SGI_STL_INTERNAL_LIST_H
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1174
-#pragma set woff 1375
-#endif
-
-template <class _Tp>
-struct _List_node {
- typedef void* _Void_pointer;
- _Void_pointer _M_next;
- _Void_pointer _M_prev;
- _Tp _M_data;
-};
-
-template<class _Tp, class _Ref, class _Ptr>
-struct _List_iterator {
- typedef _List_iterator<_Tp,_Tp&,_Tp*> iterator;
- typedef _List_iterator<_Tp,const _Tp&,const _Tp*> const_iterator;
- typedef _List_iterator<_Tp,_Ref,_Ptr> _Self;
-
- typedef bidirectional_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef _Ptr pointer;
- typedef _Ref reference;
- typedef _List_node<_Tp> _Node;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
-
- _Node* _M_node;
-
- _List_iterator(_Node* __x) : _M_node(__x) {}
- _List_iterator() {}
- _List_iterator(const iterator& __x) : _M_node(__x._M_node) {}
-
- bool operator==(const _Self& __x) const { return _M_node == __x._M_node; }
- bool operator!=(const _Self& __x) const { return _M_node != __x._M_node; }
- reference operator*() const { return (*_M_node)._M_data; }
-
-#ifndef __SGI_STL_NO_ARROW_OPERATOR
- pointer operator->() const { return &(operator*()); }
-#endif /* __SGI_STL_NO_ARROW_OPERATOR */
-
- _Self& operator++() {
- _M_node = (_Node*)(_M_node->_M_next);
- return *this;
- }
- _Self operator++(int) {
- _Self __tmp = *this;
- ++*this;
- return __tmp;
- }
- _Self& operator--() {
- _M_node = (_Node*)(_M_node->_M_prev);
- return *this;
- }
- _Self operator--(int) {
- _Self __tmp = *this;
- --*this;
- return __tmp;
- }
-};
-
-#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _Tp, class _Ref, class _Ptr>
-inline bidirectional_iterator_tag
-iterator_category(const _List_iterator<_Tp, _Ref, _Ptr>&)
-{
- return bidirectional_iterator_tag();
-}
-
-template <class _Tp, class _Ref, class _Ptr>
-inline _Tp*
-value_type(const _List_iterator<_Tp, _Ref, _Ptr>&)
-{
- return 0;
-}
-
-template <class _Tp, class _Ref, class _Ptr>
-inline ptrdiff_t*
-distance_type(const _List_iterator<_Tp, _Ref, _Ptr>&)
-{
- return 0;
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-
-// Base class that encapsulates details of allocators. Three cases:
-// an ordinary standard-conforming allocator, a standard-conforming
-// allocator with no non-static data, and an SGI-style allocator.
-// This complexity is necessary only because we're worrying about backward
-// compatibility and because we want to avoid wasting storage on an
-// allocator instance if it isn't necessary.
-
-#ifdef __STL_USE_STD_ALLOCATORS
-
-// Base for general standard-conforming allocators.
-template <class _Tp, class _Allocator, bool _IsStatic>
-class _List_alloc_base {
-public:
- typedef typename _Alloc_traits<_Tp, _Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return _Node_allocator; }
-
- _List_alloc_base(const allocator_type& __a) : _Node_allocator(__a) {}
-
-protected:
- _List_node<_Tp>* _M_get_node()
- { return _Node_allocator.allocate(1); }
- void _M_put_node(_List_node<_Tp>* __p)
- { _Node_allocator.deallocate(__p, 1); }
-
-protected:
- typename _Alloc_traits<_List_node<_Tp>, _Allocator>::allocator_type
- _Node_allocator;
- _List_node<_Tp>* _M_node;
-};
-
-// Specialization for instanceless allocators.
-
-template <class _Tp, class _Allocator>
-class _List_alloc_base<_Tp, _Allocator, true> {
-public:
- typedef typename _Alloc_traits<_Tp, _Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
-
- _List_alloc_base(const allocator_type&) {}
-
-protected:
- typedef typename _Alloc_traits<_List_node<_Tp>, _Allocator>::_Alloc_type
- _Alloc_type;
- _List_node<_Tp>* _M_get_node() { return _Alloc_type::allocate(1); }
- void _M_put_node(_List_node<_Tp>* __p) { _Alloc_type::deallocate(__p, 1); }
-
-protected:
- _List_node<_Tp>* _M_node;
-};
-
-template <class _Tp, class _Alloc>
-class _List_base
- : public _List_alloc_base<_Tp, _Alloc,
- _Alloc_traits<_Tp, _Alloc>::_S_instanceless>
-{
-public:
- typedef _List_alloc_base<_Tp, _Alloc,
- _Alloc_traits<_Tp, _Alloc>::_S_instanceless>
- _Base;
- typedef typename _Base::allocator_type allocator_type;
-
- _List_base(const allocator_type& __a) : _Base(__a) {
- _M_node = _M_get_node();
- _M_node->_M_next = _M_node;
- _M_node->_M_prev = _M_node;
- }
- ~_List_base() {
- clear();
- _M_put_node(_M_node);
- }
-
- void clear();
-};
-
-#else /* __STL_USE_STD_ALLOCATORS */
-
-template <class _Tp, class _Alloc>
-class _List_base
-{
-public:
- typedef _Alloc allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
-
- _List_base(const allocator_type&) {
- _M_node = _M_get_node();
- _M_node->_M_next = _M_node;
- _M_node->_M_prev = _M_node;
- }
- ~_List_base() {
- clear();
- _M_put_node(_M_node);
- }
-
- void clear();
-
-protected:
- typedef simple_alloc<_List_node<_Tp>, _Alloc> _Alloc_type;
- _List_node<_Tp>* _M_get_node() { return _Alloc_type::allocate(1); }
- void _M_put_node(_List_node<_Tp>* __p) { _Alloc_type::deallocate(__p, 1); }
-
-protected:
- _List_node<_Tp>* _M_node;
-};
-
-#endif /* __STL_USE_STD_ALLOCATORS */
-
-template <class _Tp, class _Alloc>
-void
-_List_base<_Tp,_Alloc>::clear()
-{
- _List_node<_Tp>* __cur = (_List_node<_Tp>*) _M_node->_M_next;
- while (__cur != _M_node) {
- _List_node<_Tp>* __tmp = __cur;
- __cur = (_List_node<_Tp>*) __cur->_M_next;
- destroy(&__tmp->_M_data);
- _M_put_node(__tmp);
- }
- _M_node->_M_next = _M_node;
- _M_node->_M_prev = _M_node;
-}
-
-template <class _Tp, class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
-class list : protected _List_base<_Tp, _Alloc> {
- typedef _List_base<_Tp, _Alloc> _Base;
-protected:
- typedef void* _Void_pointer;
-
-public:
- typedef _Tp value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef _List_node<_Tp> _Node;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
-
- typedef typename _Base::allocator_type allocator_type;
- allocator_type get_allocator() const { return _Base::get_allocator(); }
-
-public:
- typedef _List_iterator<_Tp,_Tp&,_Tp*> iterator;
- typedef _List_iterator<_Tp,const _Tp&,const _Tp*> const_iterator;
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
- typedef reverse_iterator<const_iterator> const_reverse_iterator;
- typedef reverse_iterator<iterator> reverse_iterator;
-#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */
- typedef reverse_bidirectional_iterator<const_iterator,value_type,
- const_reference,difference_type>
- const_reverse_iterator;
- typedef reverse_bidirectional_iterator<iterator,value_type,reference,
- difference_type>
- reverse_iterator;
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-protected:
-#ifdef __STL_HAS_NAMESPACES
- using _Base::_M_node;
- using _Base::_M_put_node;
- using _Base::_M_get_node;
-#endif /* __STL_HAS_NAMESPACES */
-
-protected:
- _Node* _M_create_node(const _Tp& __x)
- {
- _Node* __p = _M_get_node();
- __STL_TRY {
- construct(&__p->_M_data, __x);
- }
- __STL_UNWIND(_M_put_node(__p));
- return __p;
- }
-
- _Node* _M_create_node()
- {
- _Node* __p = _M_get_node();
- __STL_TRY {
- construct(&__p->_M_data);
- }
- __STL_UNWIND(_M_put_node(__p));
- return __p;
- }
-
-public:
- explicit list(const allocator_type& __a = allocator_type()) : _Base(__a) {}
-
- iterator begin() { return (_Node*)(_M_node->_M_next); }
- const_iterator begin() const { return (_Node*)(_M_node->_M_next); }
-
- iterator end() { return _M_node; }
- const_iterator end() const { return _M_node; }
-
- reverse_iterator rbegin()
- { return reverse_iterator(end()); }
- const_reverse_iterator rbegin() const
- { return const_reverse_iterator(end()); }
-
- reverse_iterator rend()
- { return reverse_iterator(begin()); }
- const_reverse_iterator rend() const
- { return const_reverse_iterator(begin()); }
-
- bool empty() const { return _M_node->_M_next == _M_node; }
- size_type size() const {
- size_type __result = 0;
- distance(begin(), end(), __result);
- return __result;
- }
- size_type max_size() const { return size_type(-1); }
-
- reference front() { return *begin(); }
- const_reference front() const { return *begin(); }
- reference back() { return *(--end()); }
- const_reference back() const { return *(--end()); }
-
- void swap(list<_Tp, _Alloc>& __x) { __STD::swap(_M_node, __x._M_node); }
-
- iterator insert(iterator __position, const _Tp& __x) {
- _Node* __tmp = _M_create_node(__x);
- __tmp->_M_next = __position._M_node;
- __tmp->_M_prev = __position._M_node->_M_prev;
- ((_Node*) (__position._M_node->_M_prev))->_M_next = __tmp;
- __position._M_node->_M_prev = __tmp;
- return __tmp;
- }
- iterator insert(iterator __position) { return insert(__position, _Tp()); }
-#ifdef __STL_MEMBER_TEMPLATES
- // Check whether it's an integral type. If so, it's not an iterator.
-
- template<class _Integer>
- void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x,
- __true_type) {
- insert(__pos, (size_type) __n, (_Tp) __x);
- }
-
- template <class _InputIterator>
- void _M_insert_dispatch(iterator __pos,
- _InputIterator __first, _InputIterator __last,
- __false_type);
-
- template <class _InputIterator>
- void insert(iterator __pos, _InputIterator __first, _InputIterator __last) {
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_insert_dispatch(__pos, __first, __last, _Integral());
- }
-
-#else /* __STL_MEMBER_TEMPLATES */
- void insert(iterator __position, const _Tp* __first, const _Tp* __last);
- void insert(iterator __position,
- const_iterator __first, const_iterator __last);
-#endif /* __STL_MEMBER_TEMPLATES */
- void insert(iterator __pos, size_type __n, const _Tp& __x);
-
- void push_front(const _Tp& __x) { insert(begin(), __x); }
- void push_front() {insert(begin());}
- void push_back(const _Tp& __x) { insert(end(), __x); }
- void push_back() {insert(end());}
-
- iterator erase(iterator __position) {
- _Node* __next_node = (_Node*) (__position._M_node->_M_next);
- _Node* __prev_node = (_Node*) (__position._M_node->_M_prev);
- __prev_node->_M_next = __next_node;
- __next_node->_M_prev = __prev_node;
- destroy(&__position._M_node->_M_data);
- _M_put_node(__position._M_node);
- return iterator(__next_node);
- }
- iterator erase(iterator __first, iterator __last);
- void clear() { _Base::clear(); }
-
- void resize(size_type __new_size, const _Tp& __x);
- void resize(size_type __new_size) { resize(__new_size, _Tp()); }
-
- void pop_front() { erase(begin()); }
- void pop_back() {
- iterator __tmp = end();
- erase(--__tmp);
- }
- list(size_type __n, const _Tp& __value,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- { insert(begin(), __n, __value); }
- explicit list(size_type __n)
- : _Base(allocator_type())
- { insert(begin(), __n, _Tp()); }
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- // We don't need any dispatching tricks here, because insert does all of
- // that anyway.
- template <class _InputIterator>
- list(_InputIterator __first, _InputIterator __last,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- { insert(begin(), __first, __last); }
-
-#else /* __STL_MEMBER_TEMPLATES */
-
- list(const _Tp* __first, const _Tp* __last,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- { insert(begin(), __first, __last); }
- list(const_iterator __first, const_iterator __last,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- { insert(begin(), __first, __last); }
-
-#endif /* __STL_MEMBER_TEMPLATES */
- list(const list<_Tp, _Alloc>& __x) : _Base(__x.get_allocator())
- { insert(begin(), __x.begin(), __x.end()); }
-
- ~list() { }
-
- list<_Tp, _Alloc>& operator=(const list<_Tp, _Alloc>& __x);
-
-public:
- // assign(), a generalized assignment member function. Two
- // versions: one that takes a count, and one that takes a range.
- // The range version is a member template, so we dispatch on whether
- // or not the type is an integer.
-
- void assign(size_type __n, const _Tp& __val);
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- template <class _InputIterator>
- void assign(_InputIterator __first, _InputIterator __last) {
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_assign_dispatch(__first, __last, _Integral());
- }
-
- template <class _Integer>
- void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
- { assign((size_type) __n, (_Tp) __val); }
-
- template <class _InputIterator>
- void _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
- __false_type);
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-protected:
- void transfer(iterator __position, iterator __first, iterator __last) {
- if (__position != __last) {
- // Remove [first, last) from its old position.
- ((_Node*) (__last._M_node->_M_prev))->_M_next = __position._M_node;
- ((_Node*) (__first._M_node->_M_prev))->_M_next = __last._M_node;
- ((_Node*) (__position._M_node->_M_prev))->_M_next = __first._M_node;
-
- // Splice [first, last) into its new position.
- _Node* __tmp = (_Node*) (__position._M_node->_M_prev);
- __position._M_node->_M_prev = __last._M_node->_M_prev;
- __last._M_node->_M_prev = __first._M_node->_M_prev;
- __first._M_node->_M_prev = __tmp;
- }
- }
-
-public:
- void splice(iterator __position, list& __x) {
- if (!__x.empty())
- transfer(__position, __x.begin(), __x.end());
- }
- void splice(iterator __position, list&, iterator __i) {
- iterator __j = __i;
- ++__j;
- if (__position == __i || __position == __j) return;
- transfer(__position, __i, __j);
- }
- void splice(iterator __position, list&, iterator __first, iterator __last) {
- if (__first != __last)
- transfer(__position, __first, __last);
- }
- void remove(const _Tp& __value);
- void unique();
- void merge(list& __x);
- void reverse();
- void sort();
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _Predicate> void remove_if(_Predicate);
- template <class _BinaryPredicate> void unique(_BinaryPredicate);
- template <class _StrictWeakOrdering> void merge(list&, _StrictWeakOrdering);
- template <class _StrictWeakOrdering> void sort(_StrictWeakOrdering);
-#endif /* __STL_MEMBER_TEMPLATES */
-
- friend bool operator== __STL_NULL_TMPL_ARGS (
- const list& __x, const list& __y);
-};
-
-template <class _Tp, class _Alloc>
-inline bool operator==(const list<_Tp,_Alloc>& __x,
- const list<_Tp,_Alloc>& __y)
-{
- typedef typename list<_Tp,_Alloc>::_Node _Node;
- _Node* __e1 = __x._M_node;
- _Node* __e2 = __y._M_node;
- _Node* __n1 = (_Node*) __e1->_M_next;
- _Node* __n2 = (_Node*) __e2->_M_next;
- for ( ; __n1 != __e1 && __n2 != __e2 ;
- __n1 = (_Node*) __n1->_M_next, __n2 = (_Node*) __n2->_M_next)
- if (__n1->_M_data != __n2->_M_data)
- return false;
- return __n1 == __e1 && __n2 == __e2;
-}
-
-template <class _Tp, class _Alloc>
-inline bool operator<(const list<_Tp,_Alloc>& __x,
- const list<_Tp,_Alloc>& __y)
-{
- return lexicographical_compare(__x.begin(), __x.end(),
- __y.begin(), __y.end());
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Tp, class _Alloc>
-inline void
-swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y)
-{
- __x.swap(__y);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-#ifdef __STL_MEMBER_TEMPLATES
-
-template <class _Tp, class _Alloc> template <class _InputIter>
-void
-list<_Tp, _Alloc>::_M_insert_dispatch(iterator __position,
- _InputIter __first, _InputIter __last,
- __false_type)
-{
- for ( ; __first != __last; ++__first)
- insert(__position, *__first);
-}
-
-#else /* __STL_MEMBER_TEMPLATES */
-
-template <class _Tp, class _Alloc>
-void
-list<_Tp, _Alloc>::insert(iterator __position,
- const _Tp* __first, const _Tp* __last)
-{
- for ( ; __first != __last; ++__first)
- insert(__position, *__first);
-}
-
-template <class _Tp, class _Alloc>
-void
-list<_Tp, _Alloc>::insert(iterator __position,
- const_iterator __first, const_iterator __last)
-{
- for ( ; __first != __last; ++__first)
- insert(__position, *__first);
-}
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-template <class _Tp, class _Alloc>
-void
-list<_Tp, _Alloc>::insert(iterator __position, size_type __n, const _Tp& __x)
-{
- for ( ; __n > 0; --__n)
- insert(__position, __x);
-}
-
-template <class _Tp, class _Alloc>
-list<_Tp,_Alloc>::iterator list<_Tp, _Alloc>::erase(iterator __first,
- iterator __last)
-{
- while (__first != __last)
- erase(__first++);
- return __last;
-}
-
-template <class _Tp, class _Alloc>
-void list<_Tp, _Alloc>::resize(size_type __new_size, const _Tp& __x)
-{
- iterator __i = begin();
- size_type __len = 0;
- for ( ; __i != end() && __len < __new_size; ++__i, ++__len)
- ;
- if (__len == __new_size)
- erase(__i, end());
- else // __i == end()
- insert(end(), __new_size - __len, __x);
-}
-
-template <class _Tp, class _Alloc>
-list<_Tp, _Alloc>& list<_Tp, _Alloc>::operator=(const list<_Tp, _Alloc>& __x)
-{
- if (this != &__x) {
- iterator __first1 = begin();
- iterator __last1 = end();
- const_iterator __first2 = __x.begin();
- const_iterator __last2 = __x.end();
- while (__first1 != __last1 && __first2 != __last2)
- *__first1++ = *__first2++;
- if (__first2 == __last2)
- erase(__first1, __last1);
- else
- insert(__last1, __first2, __last2);
- }
- return *this;
-}
-
-template <class _Tp, class _Alloc>
-void list<_Tp, _Alloc>::assign(size_type __n, const _Tp& __val) {
- iterator __i = begin();
- for ( ; __i != end() && __n > 0; ++__i, --__n)
- *__i = __val;
- if (__n > 0)
- insert(end(), __n, __val);
- else
- erase(__i, end());
-}
-
-#ifdef __STL_MEMBER_TEMPLATES
-
-template <class _Tp, class _Alloc> template <class _InputIter>
-void
-list<_Tp, _Alloc>::_M_assign_dispatch(_InputIter __first2, _InputIter __last2,
- __false_type)
-{
- iterator __first1 = begin();
- iterator __last1 = end();
- for ( ; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2)
- *__first1 = *__first2;
- if (__first2 == __last2)
- erase(__first1, __last1);
- else
- insert(__last1, __first2, __last2);
-}
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-template <class _Tp, class _Alloc>
-void list<_Tp, _Alloc>::remove(const _Tp& __value)
-{
- iterator __first = begin();
- iterator __last = end();
- while (__first != __last) {
- iterator __next = __first;
- ++__next;
- if (*__first == __value) erase(__first);
- __first = __next;
- }
-}
-
-template <class _Tp, class _Alloc>
-void list<_Tp, _Alloc>::unique()
-{
- iterator __first = begin();
- iterator __last = end();
- if (__first == __last) return;
- iterator __next = __first;
- while (++__next != __last) {
- if (*__first == *__next)
- erase(__next);
- else
- __first = __next;
- __next = __first;
- }
-}
-
-template <class _Tp, class _Alloc>
-void list<_Tp, _Alloc>::merge(list<_Tp, _Alloc>& __x)
-{
- iterator __first1 = begin();
- iterator __last1 = end();
- iterator __first2 = __x.begin();
- iterator __last2 = __x.end();
- while (__first1 != __last1 && __first2 != __last2)
- if (*__first2 < *__first1) {
- iterator __next = __first2;
- transfer(__first1, __first2, ++__next);
- __first2 = __next;
- }
- else
- ++__first1;
- if (__first2 != __last2) transfer(__last1, __first2, __last2);
-}
-
-template <class _Tp, class _Alloc>
-void list<_Tp, _Alloc>::reverse()
-{
- // Do nothing if the list has length 0 or 1.
- if (_M_node->_M_next != _M_node &&
- ((_Node*) (_M_node->_M_next))->_M_next != _M_node) {
- iterator __first = begin();
- ++__first;
- while (__first != end()) {
- iterator __old = __first;
- ++__first;
- transfer(begin(), __old, __first);
- }
- }
-}
-
-template <class _Tp, class _Alloc>
-void list<_Tp, _Alloc>::sort()
-{
- // Do nothing if the list has length 0 or 1.
- if (_M_node->_M_next != _M_node &&
- ((_Node*) (_M_node->_M_next))->_M_next != _M_node) {
- list<_Tp, _Alloc> __carry;
- list<_Tp, _Alloc> __counter[64];
- int __fill = 0;
- while (!empty()) {
- __carry.splice(__carry.begin(), *this, begin());
- int __i = 0;
- while(__i < __fill && !__counter[__i].empty()) {
- __counter[__i].merge(__carry);
- __carry.swap(__counter[__i++]);
- }
- __carry.swap(__counter[__i]);
- if (__i == __fill) ++__fill;
- }
-
- for (int __i = 1; __i < __fill; ++__i)
- __counter[__i].merge(__counter[__i-1]);
- swap(__counter[__fill-1]);
- }
-}
-
-#ifdef __STL_MEMBER_TEMPLATES
-
-template <class _Tp, class _Alloc> template <class _Predicate>
-void list<_Tp, _Alloc>::remove_if(_Predicate __pred)
-{
- iterator __first = begin();
- iterator __last = end();
- while (__first != __last) {
- iterator __next = __first;
- ++__next;
- if (__pred(*__first)) erase(__first);
- __first = __next;
- }
-}
-
-template <class _Tp, class _Alloc> template <class _BinaryPredicate>
-void list<_Tp, _Alloc>::unique(_BinaryPredicate __binary_pred)
-{
- iterator __first = begin();
- iterator __last = end();
- if (__first == __last) return;
- iterator __next = __first;
- while (++__next != __last) {
- if (__binary_pred(*__first, *__next))
- erase(__next);
- else
- __first = __next;
- __next = __first;
- }
-}
-
-template <class _Tp, class _Alloc> template <class _StrictWeakOrdering>
-void list<_Tp, _Alloc>::merge(list<_Tp, _Alloc>& __x,
- _StrictWeakOrdering __comp)
-{
- iterator __first1 = begin();
- iterator __last1 = end();
- iterator __first2 = __x.begin();
- iterator __last2 = __x.end();
- while (__first1 != __last1 && __first2 != __last2)
- if (__comp(*__first2, *__first1)) {
- iterator __next = __first2;
- transfer(__first1, __first2, ++__next);
- __first2 = __next;
- }
- else
- ++__first1;
- if (__first2 != __last2) transfer(__last1, __first2, __last2);
-}
-
-template <class _Tp, class _Alloc> template <class _StrictWeakOrdering>
-void list<_Tp, _Alloc>::sort(_StrictWeakOrdering __comp)
-{
- // Do nothing if the list has length 0 or 1.
- if (_M_node->_M_next != _M_node &&
- ((_Node*) (_M_node->_M_next))->_M_next != _M_node) {
- list<_Tp, _Alloc> __carry;
- list<_Tp, _Alloc> __counter[64];
- int __fill = 0;
- while (!empty()) {
- __carry.splice(__carry.begin(), *this, begin());
- int __i = 0;
- while(__i < __fill && !__counter[__i].empty()) {
- __counter[__i].merge(__carry, __comp);
- __carry.swap(__counter[__i++]);
- }
- __carry.swap(__counter[__i]);
- if (__i == __fill) ++__fill;
- }
-
- for (int __i = 1; __i < __fill; ++__i)
- __counter[__i].merge(__counter[__i-1], __comp);
- swap(__counter[__fill-1]);
- }
-}
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1174
-#pragma reset woff 1375
-#endif
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_LIST_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_map.h b/contrib/libstdc++/stl/stl_map.h
deleted file mode 100644
index a702e80..0000000
--- a/contrib/libstdc++/stl/stl_map.h
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_MAP_H
-#define __SGI_STL_INTERNAL_MAP_H
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1174
-#pragma set woff 1375
-#endif
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _Key, class _Tp, class _Compare = less<_Key>,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
-#else
-template <class _Key, class _Tp, class _Compare,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
-#endif
-class map {
-public:
-
-// typedefs:
-
- typedef _Key key_type;
- typedef _Tp data_type;
- typedef _Tp mapped_type;
- typedef pair<const _Key, _Tp> value_type;
- typedef _Compare key_compare;
-
- class value_compare
- : public binary_function<value_type, value_type, bool> {
- friend class map<_Key,_Tp,_Compare,_Alloc>;
- protected :
- _Compare _M_comp;
- value_compare(_Compare __c) : _M_comp(__c) {}
- public:
- bool operator()(const value_type& __x, const value_type& __y) const {
- return _M_comp(__x.first, __y.first);
- }
- };
-
-private:
- typedef _Rb_tree<key_type, value_type,
- _Select1st<value_type>, key_compare, _Alloc> _Rep_type;
- _Rep_type _M_t; // red-black tree representing map
-public:
- typedef typename _Rep_type::pointer pointer;
- typedef typename _Rep_type::const_pointer const_pointer;
- typedef typename _Rep_type::reference reference;
- typedef typename _Rep_type::const_reference const_reference;
- typedef typename _Rep_type::iterator iterator;
- typedef typename _Rep_type::const_iterator const_iterator;
- typedef typename _Rep_type::reverse_iterator reverse_iterator;
- typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
- typedef typename _Rep_type::size_type size_type;
- typedef typename _Rep_type::difference_type difference_type;
- typedef typename _Rep_type::allocator_type allocator_type;
-
- // allocation/deallocation
-
- map() : _M_t(_Compare(), allocator_type()) {}
- explicit map(const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) {}
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- map(_InputIterator __first, _InputIterator __last)
- : _M_t(_Compare(), allocator_type())
- { _M_t.insert_unique(__first, __last); }
-
- template <class _InputIterator>
- map(_InputIterator __first, _InputIterator __last, const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }
-#else
- map(const value_type* __first, const value_type* __last)
- : _M_t(_Compare(), allocator_type())
- { _M_t.insert_unique(__first, __last); }
-
- map(const value_type* __first,
- const value_type* __last, const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }
-
- map(const_iterator __first, const_iterator __last)
- : _M_t(_Compare(), allocator_type())
- { _M_t.insert_unique(__first, __last); }
-
- map(const_iterator __first, const_iterator __last, const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
- map(const map<_Key,_Tp,_Compare,_Alloc>& __x) : _M_t(__x._M_t) {}
- map<_Key,_Tp,_Compare,_Alloc>&
- operator=(const map<_Key, _Tp, _Compare, _Alloc>& __x)
- {
- _M_t = __x._M_t;
- return *this;
- }
-
- // accessors:
-
- key_compare key_comp() const { return _M_t.key_comp(); }
- value_compare value_comp() const { return value_compare(_M_t.key_comp()); }
- allocator_type get_allocator() const { return _M_t.get_allocator(); }
-
- iterator begin() { return _M_t.begin(); }
- const_iterator begin() const { return _M_t.begin(); }
- iterator end() { return _M_t.end(); }
- const_iterator end() const { return _M_t.end(); }
- reverse_iterator rbegin() { return _M_t.rbegin(); }
- const_reverse_iterator rbegin() const { return _M_t.rbegin(); }
- reverse_iterator rend() { return _M_t.rend(); }
- const_reverse_iterator rend() const { return _M_t.rend(); }
- bool empty() const { return _M_t.empty(); }
- size_type size() const { return _M_t.size(); }
- size_type max_size() const { return _M_t.max_size(); }
- _Tp& operator[](const key_type& __k) {
- iterator __i = lower_bound(__k);
- // __i->first is greater than or equivalent to __k.
- if (__i == end() || key_comp()(__k, (*__i).first))
- __i = insert(__i, value_type(__k, _Tp()));
- return (*__i).second;
- }
- void swap(map<_Key,_Tp,_Compare,_Alloc>& __x) { _M_t.swap(__x._M_t); }
-
- // insert/erase
-
- pair<iterator,bool> insert(const value_type& __x)
- { return _M_t.insert_unique(__x); }
- iterator insert(iterator position, const value_type& __x)
- { return _M_t.insert_unique(position, __x); }
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- void insert(_InputIterator __first, _InputIterator __last) {
- _M_t.insert_unique(__first, __last);
- }
-#else
- void insert(const value_type* __first, const value_type* __last) {
- _M_t.insert_unique(__first, __last);
- }
- void insert(const_iterator __first, const_iterator __last) {
- _M_t.insert_unique(__first, __last);
- }
-#endif /* __STL_MEMBER_TEMPLATES */
-
- void erase(iterator __position) { _M_t.erase(__position); }
- size_type erase(const key_type& __x) { return _M_t.erase(__x); }
- void erase(iterator __first, iterator __last)
- { _M_t.erase(__first, __last); }
- void clear() { _M_t.clear(); }
-
- // map operations:
-
- iterator find(const key_type& __x) { return _M_t.find(__x); }
- const_iterator find(const key_type& __x) const { return _M_t.find(__x); }
- size_type count(const key_type& __x) const { return _M_t.count(__x); }
- iterator lower_bound(const key_type& __x) {return _M_t.lower_bound(__x); }
- const_iterator lower_bound(const key_type& __x) const {
- return _M_t.lower_bound(__x);
- }
- iterator upper_bound(const key_type& __x) {return _M_t.upper_bound(__x); }
- const_iterator upper_bound(const key_type& __x) const {
- return _M_t.upper_bound(__x);
- }
-
- pair<iterator,iterator> equal_range(const key_type& __x) {
- return _M_t.equal_range(__x);
- }
- pair<const_iterator,const_iterator> equal_range(const key_type& __x) const {
- return _M_t.equal_range(__x);
- }
- friend bool operator== __STL_NULL_TMPL_ARGS (const map&, const map&);
- friend bool operator< __STL_NULL_TMPL_ARGS (const map&, const map&);
-};
-
-template <class _Key, class _Tp, class _Compare, class _Alloc>
-inline bool operator==(const map<_Key,_Tp,_Compare,_Alloc>& __x,
- const map<_Key,_Tp,_Compare,_Alloc>& __y) {
- return __x._M_t == __y._M_t;
-}
-
-template <class _Key, class _Tp, class _Compare, class _Alloc>
-inline bool operator<(const map<_Key,_Tp,_Compare,_Alloc>& __x,
- const map<_Key,_Tp,_Compare,_Alloc>& __y) {
- return __x._M_t < __y._M_t;
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Key, class _Tp, class _Compare, class _Alloc>
-inline void swap(map<_Key,_Tp,_Compare,_Alloc>& __x,
- map<_Key,_Tp,_Compare,_Alloc>& __y) {
- __x.swap(__y);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1174
-#pragma reset woff 1375
-#endif
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_MAP_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_multimap.h b/contrib/libstdc++/stl/stl_multimap.h
deleted file mode 100644
index b7d3b87..0000000
--- a/contrib/libstdc++/stl/stl_multimap.h
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_MULTIMAP_H
-#define __SGI_STL_INTERNAL_MULTIMAP_H
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1174
-#pragma set woff 1375
-#endif
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _Key, class _Tp, class _Compare = less<_Key>,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
-#else
-template <class _Key, class _Tp, class _Compare,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
-#endif
-class multimap {
-public:
-
-// typedefs:
-
- typedef _Key key_type;
- typedef _Tp data_type;
- typedef _Tp mapped_type;
- typedef pair<const _Key, _Tp> value_type;
- typedef _Compare key_compare;
-
- class value_compare : public binary_function<value_type, value_type, bool> {
- friend class multimap<_Key,_Tp,_Compare,_Alloc>;
- protected:
- _Compare _M_comp;
- value_compare(_Compare __c) : _M_comp(__c) {}
- public:
- bool operator()(const value_type& __x, const value_type& __y) const {
- return _M_comp(__x.first, __y.first);
- }
- };
-
-private:
- typedef _Rb_tree<key_type, value_type,
- _Select1st<value_type>, key_compare, _Alloc> _Rep_type;
- _Rep_type _M_t; // red-black tree representing multimap
-public:
- typedef typename _Rep_type::pointer pointer;
- typedef typename _Rep_type::const_pointer const_pointer;
- typedef typename _Rep_type::reference reference;
- typedef typename _Rep_type::const_reference const_reference;
- typedef typename _Rep_type::iterator iterator;
- typedef typename _Rep_type::const_iterator const_iterator;
- typedef typename _Rep_type::reverse_iterator reverse_iterator;
- typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
- typedef typename _Rep_type::size_type size_type;
- typedef typename _Rep_type::difference_type difference_type;
- typedef typename _Rep_type::allocator_type allocator_type;
-
-// allocation/deallocation
-
- multimap() : _M_t(_Compare(), allocator_type()) { }
- explicit multimap(const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { }
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- multimap(_InputIterator __first, _InputIterator __last)
- : _M_t(_Compare(), allocator_type())
- { _M_t.insert_equal(__first, __last); }
-
- template <class _InputIterator>
- multimap(_InputIterator __first, _InputIterator __last,
- const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); }
-#else
- multimap(const value_type* __first, const value_type* __last)
- : _M_t(_Compare(), allocator_type())
- { _M_t.insert_equal(__first, __last); }
- multimap(const value_type* __first, const value_type* __last,
- const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); }
-
- multimap(const_iterator __first, const_iterator __last)
- : _M_t(_Compare(), allocator_type())
- { _M_t.insert_equal(__first, __last); }
- multimap(const_iterator __first, const_iterator __last,
- const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); }
-#endif /* __STL_MEMBER_TEMPLATES */
-
- multimap(const multimap<_Key,_Tp,_Compare,_Alloc>& __x) : _M_t(__x._M_t) { }
- multimap<_Key,_Tp,_Compare,_Alloc>&
- operator=(const multimap<_Key,_Tp,_Compare,_Alloc>& __x) {
- _M_t = __x._M_t;
- return *this;
- }
-
- // accessors:
-
- key_compare key_comp() const { return _M_t.key_comp(); }
- value_compare value_comp() const { return value_compare(_M_t.key_comp()); }
- allocator_type get_allocator() const { return _M_t.get_allocator(); }
-
- iterator begin() { return _M_t.begin(); }
- const_iterator begin() const { return _M_t.begin(); }
- iterator end() { return _M_t.end(); }
- const_iterator end() const { return _M_t.end(); }
- reverse_iterator rbegin() { return _M_t.rbegin(); }
- const_reverse_iterator rbegin() const { return _M_t.rbegin(); }
- reverse_iterator rend() { return _M_t.rend(); }
- const_reverse_iterator rend() const { return _M_t.rend(); }
- bool empty() const { return _M_t.empty(); }
- size_type size() const { return _M_t.size(); }
- size_type max_size() const { return _M_t.max_size(); }
- void swap(multimap<_Key,_Tp,_Compare,_Alloc>& __x) { _M_t.swap(__x._M_t); }
-
- // insert/erase
-
- iterator insert(const value_type& __x) { return _M_t.insert_equal(__x); }
- iterator insert(iterator __position, const value_type& __x) {
- return _M_t.insert_equal(__position, __x);
- }
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- void insert(_InputIterator __first, _InputIterator __last) {
- _M_t.insert_equal(__first, __last);
- }
-#else
- void insert(const value_type* __first, const value_type* __last) {
- _M_t.insert_equal(__first, __last);
- }
- void insert(const_iterator __first, const_iterator __last) {
- _M_t.insert_equal(__first, __last);
- }
-#endif /* __STL_MEMBER_TEMPLATES */
- void erase(iterator __position) { _M_t.erase(__position); }
- size_type erase(const key_type& __x) { return _M_t.erase(__x); }
- void erase(iterator __first, iterator __last)
- { _M_t.erase(__first, __last); }
- void clear() { _M_t.clear(); }
-
- // multimap operations:
-
- iterator find(const key_type& __x) { return _M_t.find(__x); }
- const_iterator find(const key_type& __x) const { return _M_t.find(__x); }
- size_type count(const key_type& __x) const { return _M_t.count(__x); }
- iterator lower_bound(const key_type& __x) {return _M_t.lower_bound(__x); }
- const_iterator lower_bound(const key_type& __x) const {
- return _M_t.lower_bound(__x);
- }
- iterator upper_bound(const key_type& __x) {return _M_t.upper_bound(__x); }
- const_iterator upper_bound(const key_type& __x) const {
- return _M_t.upper_bound(__x);
- }
- pair<iterator,iterator> equal_range(const key_type& __x) {
- return _M_t.equal_range(__x);
- }
- pair<const_iterator,const_iterator> equal_range(const key_type& __x) const {
- return _M_t.equal_range(__x);
- }
- friend bool operator== __STL_NULL_TMPL_ARGS (const multimap&,
- const multimap&);
- friend bool operator< __STL_NULL_TMPL_ARGS (const multimap&,
- const multimap&);
-};
-
-template <class _Key, class _Tp, class _Compare, class _Alloc>
-inline bool operator==(const multimap<_Key,_Tp,_Compare,_Alloc>& __x,
- const multimap<_Key,_Tp,_Compare,_Alloc>& __y) {
- return __x._M_t == __y._M_t;
-}
-
-template <class _Key, class _Tp, class _Compare, class _Alloc>
-inline bool operator<(const multimap<_Key,_Tp,_Compare,_Alloc>& __x,
- const multimap<_Key,_Tp,_Compare,_Alloc>& __y) {
- return __x._M_t < __y._M_t;
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Key, class _Tp, class _Compare, class _Alloc>
-inline void swap(multimap<_Key,_Tp,_Compare,_Alloc>& __x,
- multimap<_Key,_Tp,_Compare,_Alloc>& __y) {
- __x.swap(__y);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1174
-#pragma reset woff 1375
-#endif
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_MULTIMAP_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_multiset.h b/contrib/libstdc++/stl/stl_multiset.h
deleted file mode 100644
index 7378e43..0000000
--- a/contrib/libstdc++/stl/stl_multiset.h
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_MULTISET_H
-#define __SGI_STL_INTERNAL_MULTISET_H
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1174
-#pragma set woff 1375
-#endif
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _Key, class _Compare = less<_Key>,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Key) >
-#else
-template <class _Key, class _Compare,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Key) >
-#endif
-class multiset {
-public:
- // typedefs:
-
- typedef _Key key_type;
- typedef _Key value_type;
- typedef _Compare key_compare;
- typedef _Compare value_compare;
-private:
- typedef _Rb_tree<key_type, value_type,
- _Identity<value_type>, key_compare, _Alloc> _Rep_type;
- _Rep_type _M_t; // red-black tree representing multiset
-public:
- typedef typename _Rep_type::const_pointer pointer;
- typedef typename _Rep_type::const_pointer const_pointer;
- typedef typename _Rep_type::const_reference reference;
- typedef typename _Rep_type::const_reference const_reference;
- typedef typename _Rep_type::const_iterator iterator;
- typedef typename _Rep_type::const_iterator const_iterator;
- typedef typename _Rep_type::const_reverse_iterator reverse_iterator;
- typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
- typedef typename _Rep_type::size_type size_type;
- typedef typename _Rep_type::difference_type difference_type;
- typedef typename _Rep_type::allocator_type allocator_type;
-
- // allocation/deallocation
-
- multiset() : _M_t(_Compare(), allocator_type()) {}
- explicit multiset(const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) {}
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- template <class _InputIterator>
- multiset(_InputIterator __first, _InputIterator __last)
- : _M_t(_Compare(), allocator_type())
- { _M_t.insert_equal(__first, __last); }
-
- template <class _InputIterator>
- multiset(_InputIterator __first, _InputIterator __last,
- const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); }
-
-#else
-
- multiset(const value_type* __first, const value_type* __last)
- : _M_t(_Compare(), allocator_type())
- { _M_t.insert_equal(__first, __last); }
-
- multiset(const value_type* __first, const value_type* __last,
- const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); }
-
- multiset(const_iterator __first, const_iterator __last)
- : _M_t(_Compare(), allocator_type())
- { _M_t.insert_equal(__first, __last); }
-
- multiset(const_iterator __first, const_iterator __last,
- const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); }
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
- multiset(const multiset<_Key,_Compare,_Alloc>& __x) : _M_t(__x._M_t) {}
- multiset<_Key,_Compare,_Alloc>&
- operator=(const multiset<_Key,_Compare,_Alloc>& __x) {
- _M_t = __x._M_t;
- return *this;
- }
-
- // accessors:
-
- key_compare key_comp() const { return _M_t.key_comp(); }
- value_compare value_comp() const { return _M_t.key_comp(); }
- allocator_type get_allocator() const { return _M_t.get_allocator(); }
-
- iterator begin() const { return _M_t.begin(); }
- iterator end() const { return _M_t.end(); }
- reverse_iterator rbegin() const { return _M_t.rbegin(); }
- reverse_iterator rend() const { return _M_t.rend(); }
- bool empty() const { return _M_t.empty(); }
- size_type size() const { return _M_t.size(); }
- size_type max_size() const { return _M_t.max_size(); }
- void swap(multiset<_Key,_Compare,_Alloc>& __x) { _M_t.swap(__x._M_t); }
-
- // insert/erase
- iterator insert(const value_type& __x) {
- return _M_t.insert_equal(__x);
- }
- iterator insert(iterator __position, const value_type& __x) {
- typedef typename _Rep_type::iterator _Rep_iterator;
- return _M_t.insert_equal((_Rep_iterator&)__position, __x);
- }
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- void insert(_InputIterator __first, _InputIterator __last) {
- _M_t.insert_equal(__first, __last);
- }
-#else
- void insert(const value_type* __first, const value_type* __last) {
- _M_t.insert_equal(__first, __last);
- }
- void insert(const_iterator __first, const_iterator __last) {
- _M_t.insert_equal(__first, __last);
- }
-#endif /* __STL_MEMBER_TEMPLATES */
- void erase(iterator __position) {
- typedef typename _Rep_type::iterator _Rep_iterator;
- _M_t.erase((_Rep_iterator&)__position);
- }
- size_type erase(const key_type& __x) {
- return _M_t.erase(__x);
- }
- void erase(iterator __first, iterator __last) {
- typedef typename _Rep_type::iterator _Rep_iterator;
- _M_t.erase((_Rep_iterator&)__first, (_Rep_iterator&)__last);
- }
- void clear() { _M_t.clear(); }
-
- // multiset operations:
-
- iterator find(const key_type& __x) const { return _M_t.find(__x); }
- size_type count(const key_type& __x) const { return _M_t.count(__x); }
- iterator lower_bound(const key_type& __x) const {
- return _M_t.lower_bound(__x);
- }
- iterator upper_bound(const key_type& __x) const {
- return _M_t.upper_bound(__x);
- }
- pair<iterator,iterator> equal_range(const key_type& __x) const {
- return _M_t.equal_range(__x);
- }
- friend bool operator== __STL_NULL_TMPL_ARGS (const multiset&,
- const multiset&);
- friend bool operator< __STL_NULL_TMPL_ARGS (const multiset&,
- const multiset&);
-};
-
-template <class _Key, class _Compare, class _Alloc>
-inline bool operator==(const multiset<_Key,_Compare,_Alloc>& __x,
- const multiset<_Key,_Compare,_Alloc>& __y) {
- return __x._M_t == __y._M_t;
-}
-
-template <class _Key, class _Compare, class _Alloc>
-inline bool operator<(const multiset<_Key,_Compare,_Alloc>& __x,
- const multiset<_Key,_Compare,_Alloc>& __y) {
- return __x._M_t < __y._M_t;
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Key, class _Compare, class _Alloc>
-inline void swap(multiset<_Key,_Compare,_Alloc>& __x,
- multiset<_Key,_Compare,_Alloc>& __y) {
- __x.swap(__y);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1174
-#pragma reset woff 1375
-#endif
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_MULTISET_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_numeric.h b/contrib/libstdc++/stl/stl_numeric.h
deleted file mode 100644
index 392515a..0000000
--- a/contrib/libstdc++/stl/stl_numeric.h
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-
-#ifndef __SGI_STL_INTERNAL_NUMERIC_H
-#define __SGI_STL_INTERNAL_NUMERIC_H
-
-__STL_BEGIN_NAMESPACE
-
-template <class _InputIterator, class _Tp>
-_Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp __init)
-{
- for ( ; __first != __last; ++__first)
- __init = __init + *__first;
- return __init;
-}
-
-template <class _InputIterator, class _Tp, class _BinaryOperation>
-_Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp __init,
- _BinaryOperation __binary_op)
-{
- for ( ; __first != __last; ++__first)
- __init = __binary_op(__init, *__first);
- return __init;
-}
-
-template <class _InputIterator1, class _InputIterator2, class _Tp>
-_Tp inner_product(_InputIterator1 __first1, _InputIterator1 __last1,
- _InputIterator2 __first2, _Tp __init)
-{
- for ( ; __first1 != __last1; ++__first1, ++__first2)
- __init = __init + (*__first1 * *__first2);
- return __init;
-}
-
-template <class _InputIterator1, class _InputIterator2, class _Tp,
- class _BinaryOperation1, class _BinaryOperation2>
-_Tp inner_product(_InputIterator1 __first1, _InputIterator1 __last1,
- _InputIterator2 __first2, _Tp __init,
- _BinaryOperation1 __binary_op1,
- _BinaryOperation2 __binary_op2)
-{
- for ( ; __first1 != __last1; ++__first1, ++__first2)
- __init = __binary_op1(__init, __binary_op2(*__first1, *__first2));
- return __init;
-}
-
-template <class _InputIterator, class _OutputIterator, class _Tp>
-_OutputIterator
-__partial_sum(_InputIterator __first, _InputIterator __last,
- _OutputIterator __result, _Tp*)
-{
- _Tp __value = *__first;
- while (++__first != __last) {
- __value = __value + *__first;
- *++__result = __value;
- }
- return ++__result;
-}
-
-template <class _InputIterator, class _OutputIterator>
-_OutputIterator
-partial_sum(_InputIterator __first, _InputIterator __last,
- _OutputIterator __result)
-{
- if (__first == __last) return __result;
- *__result = *__first;
- return __partial_sum(__first, __last, __result, __VALUE_TYPE(__first));
-}
-
-template <class _InputIterator, class _OutputIterator, class _Tp,
- class _BinaryOperation>
-_OutputIterator
-__partial_sum(_InputIterator __first, _InputIterator __last,
- _OutputIterator __result, _Tp*, _BinaryOperation __binary_op)
-{
- _Tp __value = *__first;
- while (++__first != __last) {
- __value = __binary_op(__value, *__first);
- *++__result = __value;
- }
- return ++__result;
-}
-
-template <class _InputIterator, class _OutputIterator, class _BinaryOperation>
-_OutputIterator
-partial_sum(_InputIterator __first, _InputIterator __last,
- _OutputIterator __result, _BinaryOperation __binary_op)
-{
- if (__first == __last) return __result;
- *__result = *__first;
- return __partial_sum(__first, __last, __result, __VALUE_TYPE(__first),
- __binary_op);
-}
-
-template <class _InputIterator, class _OutputIterator, class _Tp>
-_OutputIterator
-__adjacent_difference(_InputIterator __first, _InputIterator __last,
- _OutputIterator __result, _Tp*)
-{
- _Tp __value = *__first;
- while (++__first != __last) {
- _Tp __tmp = *__first;
- *++__result = __tmp - __value;
- __value = __tmp;
- }
- return ++__result;
-}
-
-template <class _InputIterator, class _OutputIterator>
-_OutputIterator
-adjacent_difference(_InputIterator __first,
- _InputIterator __last, _OutputIterator __result)
-{
- if (__first == __last) return __result;
- *__result = *__first;
- return __adjacent_difference(__first, __last, __result,
- __VALUE_TYPE(__first));
-}
-
-template <class _InputIterator, class _OutputIterator, class _Tp,
- class _BinaryOperation>
-_OutputIterator
-__adjacent_difference(_InputIterator __first, _InputIterator __last,
- _OutputIterator __result, _Tp*,
- _BinaryOperation __binary_op) {
- _Tp __value = *__first;
- while (++__first != __last) {
- _Tp __tmp = *__first;
- *++__result = __binary_op(__tmp, __value);
- __value = __tmp;
- }
- return ++__result;
-}
-
-template <class _InputIterator, class _OutputIterator, class _BinaryOperation>
-_OutputIterator
-adjacent_difference(_InputIterator __first, _InputIterator __last,
- _OutputIterator __result, _BinaryOperation __binary_op)
-{
- if (__first == __last) return __result;
- *__result = *__first;
- return __adjacent_difference(__first, __last, __result,
- __VALUE_TYPE(__first),
- __binary_op);
-}
-
-// Returns __x ** __n, where __n >= 0. _Note that "multiplication"
-// is required to be associative, but not necessarily commutative.
-
-
-template <class _Tp, class _Integer, class _MonoidOperation>
-_Tp __power(_Tp __x, _Integer __n, _MonoidOperation __oper)
-{
- if (__n == 0)
- return identity_element(__oper);
- else {
- while ((__n & 1) == 0) {
- __n >>= 1;
- __x = __oper(__x, __x);
- }
-
- _Tp __result = __x;
- __n >>= 1;
- while (__n != 0) {
- __x = __oper(__x, __x);
- if ((__n & 1) != 0)
- __result = __oper(__result, __x);
- __n >>= 1;
- }
- return __result;
- }
-}
-
-template <class _Tp, class _Integer>
-inline _Tp __power(_Tp __x, _Integer __n)
-{
- return __power(__x, __n, multiplies<_Tp>());
-}
-
-// Alias for the internal name __power. Note that power is an extension,
-// not part of the C++ standard.
-
-template <class _Tp, class _Integer, class _MonoidOperation>
-inline _Tp power(_Tp __x, _Integer __n, _MonoidOperation __oper)
-{
- return __power(__x, __n, __oper);
-}
-
-template <class _Tp, class _Integer>
-inline _Tp power(_Tp __x, _Integer __n)
-{
- return __power(__x, __n);
-}
-
-// iota is not part of the C++ standard. It is an extension.
-
-template <class _ForwardIterator, class _Tp>
-void
-iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __value)
-{
- while (__first != __last)
- *__first++ = __value++;
-}
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_NUMERIC_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_pair.h b/contrib/libstdc++/stl/stl_pair.h
deleted file mode 100644
index 3aa290b..0000000
--- a/contrib/libstdc++/stl/stl_pair.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_PAIR_H
-#define __SGI_STL_INTERNAL_PAIR_H
-
-__STL_BEGIN_NAMESPACE
-
-template <class _T1, class _T2>
-struct pair {
- typedef _T1 first_type;
- typedef _T2 second_type;
-
- _T1 first;
- _T2 second;
- pair() : first(_T1()), second(_T2()) {}
- pair(const _T1& __a, const _T2& __b) : first(__a), second(__b) {}
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _U1, class _U2>
- pair(const pair<_U1, _U2>& __p) : first(__p.first), second(__p.second) {}
-#endif
-};
-
-template <class _T1, class _T2>
-inline bool operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
-{
- return __x.first == __y.first && __x.second == __y.second;
-}
-
-template <class _T1, class _T2>
-inline bool operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
-{
- return __x.first < __y.first ||
- (!(__y.first < __x.first) && __x.second < __y.second);
-}
-
-template <class _T1, class _T2>
-inline pair<_T1, _T2> make_pair(const _T1& __x, const _T2& __y)
-{
- return pair<_T1, _T2>(__x, __y);
-}
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_PAIR_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_queue.h b/contrib/libstdc++/stl/stl_queue.h
deleted file mode 100644
index c1e2b69..0000000
--- a/contrib/libstdc++/stl/stl_queue.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_QUEUE_H
-#define __SGI_STL_INTERNAL_QUEUE_H
-
-__STL_BEGIN_NAMESPACE
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _Tp, class _Sequence = deque<_Tp> >
-#else
-template <class _Tp, class _Sequence>
-#endif
-class queue {
- friend bool operator== __STL_NULL_TMPL_ARGS (const queue&, const queue&);
- friend bool operator< __STL_NULL_TMPL_ARGS (const queue&, const queue&);
-public:
- typedef typename _Sequence::value_type value_type;
- typedef typename _Sequence::size_type size_type;
- typedef _Sequence container_type;
-
- typedef typename _Sequence::reference reference;
- typedef typename _Sequence::const_reference const_reference;
-protected:
- _Sequence c;
-public:
- queue() : c() {}
- explicit queue(const _Sequence& __c) : c(__c) {}
-
- bool empty() const { return c.empty(); }
- size_type size() const { return c.size(); }
- reference front() { return c.front(); }
- const_reference front() const { return c.front(); }
- reference back() { return c.back(); }
- const_reference back() const { return c.back(); }
- void push(const value_type& __x) { c.push_back(__x); }
- void pop() { c.pop_front(); }
-};
-
-template <class _Tp, class _Sequence>
-bool
-operator==(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
-{
- return __x.c == __y.c;
-}
-
-template <class _Tp, class _Sequence>
-bool
-operator<(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
-{
- return __x.c < __y.c;
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Tp, class _Sequence>
-bool
-operator!=(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
-{
- return !(__x == __y);
-}
-
-template <class _Tp, class _Sequence>
-bool
-operator>(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
-{
- return __y < __x;
-}
-
-template <class _Tp, class _Sequence>
-bool
-operator<=(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
-{
- return !(__y < __x);
-}
-
-template <class _Tp, class _Sequence>
-bool
-operator>=(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y)
-{
- return !(__x < __y);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _Tp, class _Sequence = vector<_Tp>,
- class _Compare = less<typename _Sequence::value_type> >
-#else
-template <class _Tp, class _Sequence, class _Compare>
-#endif
-class priority_queue {
-public:
- typedef typename _Sequence::value_type value_type;
- typedef typename _Sequence::size_type size_type;
- typedef _Sequence container_type;
-
- typedef typename _Sequence::reference reference;
- typedef typename _Sequence::const_reference const_reference;
-protected:
- _Sequence c;
- _Compare comp;
-public:
- priority_queue() : c() {}
- explicit priority_queue(const _Compare& __x) : c(), comp(__x) {}
- priority_queue(const _Compare& __x, const _Sequence& __s)
- : c(__s), comp(__x)
- { make_heap(c.begin(), c.end(), comp); }
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- priority_queue(_InputIterator __first, _InputIterator __last)
- : c(__first, __last) { make_heap(c.begin(), c.end(), comp); }
-
- template <class _InputIterator>
- priority_queue(_InputIterator __first,
- _InputIterator __last, const _Compare& __x)
- : c(__first, __last), comp(__x)
- { make_heap(c.begin(), c.end(), comp); }
-
- template <class _InputIterator>
- priority_queue(_InputIterator __first, _InputIterator __last,
- const _Compare& __x, const _Sequence& __s)
- : c(__s), comp(__x)
- {
- c.insert(c.end(), __first, __last);
- make_heap(c.begin(), c.end(), comp);
- }
-
-#else /* __STL_MEMBER_TEMPLATES */
- priority_queue(const value_type* __first, const value_type* __last)
- : c(__first, __last) { make_heap(c.begin(), c.end(), comp); }
-
- priority_queue(const value_type* __first, const value_type* __last,
- const _Compare& __x)
- : c(__first, __last), comp(__x)
- { make_heap(c.begin(), c.end(), comp); }
-
- priority_queue(const value_type* __first, const value_type* __last,
- const _Compare& __x, const _Sequence& __c)
- : c(__c), comp(__x)
- {
- c.insert(c.end(), __first, __last);
- make_heap(c.begin(), c.end(), comp);
- }
-#endif /* __STL_MEMBER_TEMPLATES */
-
- bool empty() const { return c.empty(); }
- size_type size() const { return c.size(); }
- const_reference top() const { return c.front(); }
- void push(const value_type& __x) {
- __STL_TRY {
- c.push_back(__x);
- push_heap(c.begin(), c.end(), comp);
- }
- __STL_UNWIND(c.clear());
- }
- void pop() {
- __STL_TRY {
- pop_heap(c.begin(), c.end(), comp);
- c.pop_back();
- }
- __STL_UNWIND(c.clear());
- }
-};
-
-// no equality is provided
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_QUEUE_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_raw_storage_iter.h b/contrib/libstdc++/stl/stl_raw_storage_iter.h
deleted file mode 100644
index 6f3951c..0000000
--- a/contrib/libstdc++/stl/stl_raw_storage_iter.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_RAW_STORAGE_ITERATOR_H
-#define __SGI_STL_INTERNAL_RAW_STORAGE_ITERATOR_H
-
-__STL_BEGIN_NAMESPACE
-
-template <class _ForwardIterator, class _Tp>
-class raw_storage_iterator {
-protected:
- _ForwardIterator _M_iter;
-public:
- typedef output_iterator_tag iterator_category;
- typedef void value_type;
- typedef void difference_type;
- typedef void pointer;
- typedef void reference;
-
- explicit raw_storage_iterator(_ForwardIterator __x) : _M_iter(__x) {}
- raw_storage_iterator& operator*() { return *this; }
- raw_storage_iterator& operator=(const _Tp& __element) {
- construct(&*_M_iter, __element);
- return *this;
- }
- raw_storage_iterator<_ForwardIterator, _Tp>& operator++() {
- ++_M_iter;
- return *this;
- }
- raw_storage_iterator<_ForwardIterator, _Tp> operator++(int) {
- raw_storage_iterator<_ForwardIterator, _Tp> __tmp = *this;
- ++_M_iter;
- return __tmp;
- }
-};
-
-#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _ForwardIterator, class _Tp>
-inline output_iterator_tag
-iterator_category(const raw_storage_iterator<_ForwardIterator, _Tp>&)
-{
- return output_iterator_tag();
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_RAW_STORAGE_ITERATOR_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_relops.h b/contrib/libstdc++/stl/stl_relops.h
deleted file mode 100644
index 16cad1b..0000000
--- a/contrib/libstdc++/stl/stl_relops.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_RELOPS
-#define __SGI_STL_INTERNAL_RELOPS
-
-__STL_BEGIN_RELOPS_NAMESPACE
-
-template <class _Tp>
-inline bool operator!=(const _Tp& __x, const _Tp& __y) {
- return !(__x == __y);
-}
-
-template <class _Tp>
-inline bool operator>(const _Tp& __x, const _Tp& __y) {
- return __y < __x;
-}
-
-template <class _Tp>
-inline bool operator<=(const _Tp& __x, const _Tp& __y) {
- return !(__y < __x);
-}
-
-template <class _Tp>
-inline bool operator>=(const _Tp& __x, const _Tp& __y) {
- return !(__x < __y);
-}
-
-__STL_END_RELOPS_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_RELOPS */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_rope.h b/contrib/libstdc++/stl/stl_rope.h
deleted file mode 100644
index fa1e848..0000000
--- a/contrib/libstdc++/stl/stl_rope.h
+++ /dev/null
@@ -1,2541 +0,0 @@
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-// rope<_CharT,_Alloc> is a sequence of _CharT.
-// Ropes appear to be mutable, but update operations
-// really copy enough of the data structure to leave the original
-// valid. Thus ropes can be logically copied by just copying
-// a pointer value.
-
-#ifndef __SGI_STL_INTERNAL_ROPE_H
-# define __SGI_STL_INTERNAL_ROPE_H
-
-# ifdef __GC
-# define __GC_CONST const
-# else
-# define __GC_CONST // constant except for deallocation
-# endif
-# ifdef __STL_SGI_THREADS
-# include <mutex.h>
-# endif
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1174
-#endif
-
-// The _S_eos function is used for those functions that
-// convert to/from C-like strings to detect the end of the string.
-
-// The end-of-C-string character.
-// This is what the draft standard says it should be.
-template <class _CharT>
-inline _CharT _S_eos(_CharT*) { return _CharT(); }
-
-// Test for basic character types.
-// For basic character types leaves having a trailing eos.
-template <class _CharT>
-inline bool _S_is_basic_char_type(_CharT*) { return false; }
-template <class _CharT>
-inline bool _S_is_one_byte_char_type(_CharT*) { return false; }
-
-inline bool _S_is_basic_char_type(char*) { return true; }
-inline bool _S_is_one_byte_char_type(char*) { return true; }
-inline bool _S_is_basic_char_type(wchar_t*) { return true; }
-
-// Store an eos iff _CharT is a basic character type.
-// Do not reference _S_eos if it isn't.
-template <class _CharT>
-inline void _S_cond_store_eos(_CharT&) {}
-
-inline void _S_cond_store_eos(char& __c) { __c = 0; }
-inline void _S_cond_store_eos(wchar_t& __c) { __c = 0; }
-
-// char_producers are logically functions that generate a section of
-// a string. These can be convereted to ropes. The resulting rope
-// invokes the char_producer on demand. This allows, for example,
-// files to be viewed as ropes without reading the entire file.
-template <class _CharT>
-class char_producer {
- public:
- virtual ~char_producer() {};
- virtual void operator()(size_t __start_pos, size_t __len,
- _CharT* __buffer) = 0;
- // Buffer should really be an arbitrary output iterator.
- // That way we could flatten directly into an ostream, etc.
- // This is thoroughly impossible, since iterator types don't
- // have runtime descriptions.
-};
-
-// Sequence buffers:
-//
-// Sequence must provide an append operation that appends an
-// array to the sequence. Sequence buffers are useful only if
-// appending an entire array is cheaper than appending element by element.
-// This is true for many string representations.
-// This should perhaps inherit from ostream<sequence::value_type>
-// and be implemented correspondingly, so that they can be used
-// for formatted. For the sake of portability, we don't do this yet.
-//
-// For now, sequence buffers behave as output iterators. But they also
-// behave a little like basic_ostringstream<sequence::value_type> and a
-// little like containers.
-
-template<class _Sequence, size_t _Buf_sz = 100
-# if defined(__sgi) && !defined(__GNUC__)
-# define __TYPEDEF_WORKAROUND
- ,class _V = typename _Sequence::value_type
-# endif
- >
-// The 3rd parameter works around a common compiler bug.
-class sequence_buffer : public output_iterator {
- public:
-# ifndef __TYPEDEF_WORKAROUND
- typedef typename _Sequence::value_type value_type;
-# else
- typedef _V value_type;
-# endif
- protected:
- _Sequence* _M_prefix;
- value_type _M_buffer[_Buf_sz];
- size_t _M_buf_count;
- public:
- void flush() {
- _M_prefix->append(_M_buffer, _M_buffer + _M_buf_count);
- _M_buf_count = 0;
- }
- ~sequence_buffer() { flush(); }
- sequence_buffer() : _M_prefix(0), _M_buf_count(0) {}
- sequence_buffer(const sequence_buffer& __x) {
- _M_prefix = __x._M_prefix;
- _M_buf_count = __x._M_buf_count;
- copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer);
- }
- sequence_buffer(sequence_buffer& __x) {
- __x.flush();
- _M_prefix = __x._M_prefix;
- _M_buf_count = 0;
- }
- sequence_buffer(_Sequence& __s) : _M_prefix(&__s), _M_buf_count(0) {}
- sequence_buffer& operator= (sequence_buffer& __x) {
- __x.flush();
- _M_prefix = __x._M_prefix;
- _M_buf_count = 0;
- return *this;
- }
- sequence_buffer& operator= (const sequence_buffer& __x) {
- _M_prefix = __x._M_prefix;
- _M_buf_count = __x._M_buf_count;
- copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer);
- return *this;
- }
- void push_back(value_type __x)
- {
- if (_M_buf_count < _Buf_sz) {
- _M_buffer[_M_buf_count] = __x;
- ++_M_buf_count;
- } else {
- flush();
- _M_buffer[0] = __x;
- _M_buf_count = 1;
- }
- }
- void append(value_type* __s, size_t __len)
- {
- if (__len + _M_buf_count <= _Buf_sz) {
- size_t __i = _M_buf_count;
- size_t __j = 0;
- for (; __j < __len; __i++, __j++) {
- _M_buffer[__i] = __s[__j];
- }
- _M_buf_count += __len;
- } else if (0 == _M_buf_count) {
- _M_prefix->append(__s, __s + __len);
- } else {
- flush();
- append(__s, __len);
- }
- }
- sequence_buffer& write(value_type* __s, size_t __len)
- {
- append(__s, __len);
- return *this;
- }
- sequence_buffer& put(value_type __x)
- {
- push_back(__x);
- return *this;
- }
- sequence_buffer& operator=(const value_type& __rhs)
- {
- push_back(__rhs);
- return *this;
- }
- sequence_buffer& operator*() { return *this; }
- sequence_buffer& operator++() { return *this; }
- sequence_buffer& operator++(int) { return *this; }
-};
-
-// The following should be treated as private, at least for now.
-template<class _CharT>
-class _Rope_char_consumer {
- public:
- // If we had member templates, these should not be virtual.
- // For now we need to use run-time parametrization where
- // compile-time would do. _Hence this should all be private
- // for now.
- // The symmetry with char_producer is accidental and temporary.
- virtual ~_Rope_char_consumer() {};
- virtual bool operator()(const _CharT* __buffer, size_t __len) = 0;
-};
-
-//
-// What follows should really be local to rope. Unfortunately,
-// that doesn't work, since it makes it impossible to define generic
-// equality on rope iterators. According to the draft standard, the
-// template parameters for such an equality operator cannot be inferred
-// from the occurence of a member class as a parameter.
-// (SGI compilers in fact allow this, but the __result wouldn't be
-// portable.)
-// Similarly, some of the static member functions are member functions
-// only to avoid polluting the global namespace, and to circumvent
-// restrictions on type inference for template functions.
-//
-
-template<class _CharT, class _Alloc=__STL_DEFAULT_ALLOCATOR(_CharT)> class rope;
-template<class _CharT, class _Alloc> struct _Rope_RopeConcatenation;
-template<class _CharT, class _Alloc> struct _Rope_RopeLeaf;
-template<class _CharT, class _Alloc> struct _Rope_RopeFunction;
-template<class _CharT, class _Alloc> struct _Rope_RopeSubstring;
-template<class _CharT, class _Alloc> class _Rope_iterator;
-template<class _CharT, class _Alloc> class _Rope_const_iterator;
-template<class _CharT, class _Alloc> class _Rope_char_ref_proxy;
-template<class _CharT, class _Alloc> class _Rope_char_ptr_proxy;
-
-//
-// The internal data structure for representing a rope. This is
-// private to the implementation. A rope is really just a pointer
-// to one of these.
-//
-// A few basic functions for manipulating this data structure
-// are members of _RopeRep. Most of the more complex algorithms
-// are implemented as rope members.
-//
-// Some of the static member functions of _RopeRep have identically
-// named functions in rope that simply invoke the _RopeRep versions.
-//
-// A macro to introduce various allocation and deallocation functions
-// These need to be defined differently depending on whether or not
-// we are using standard conforming allocators, and whether the allocator
-// instances have real state. Thus this macro is invoked repeatedly
-// with different definitions of __ROPE_DEFINE_ALLOC.
-// __ROPE_DEFINE_ALLOC(type,name) defines
-// type * name_allocate(size_t) and
-// void name_deallocate(tipe *, size_t)
-// Both functions may or may not be static.
-
-#define __ROPE_DEFINE_ALLOCS(__a) \
- __ROPE_DEFINE_ALLOC(_CharT,_Data) /* character data */ \
- typedef _Rope_RopeConcatenation<_CharT,__a> __C; \
- __ROPE_DEFINE_ALLOC(__C,_C) \
- typedef _Rope_RopeLeaf<_CharT,__a> __L; \
- __ROPE_DEFINE_ALLOC(__L,_L) \
- typedef _Rope_RopeFunction<_CharT,__a> __F; \
- __ROPE_DEFINE_ALLOC(__F,_F) \
- typedef _Rope_RopeSubstring<_CharT,__a> __S; \
- __ROPE_DEFINE_ALLOC(__S,_S)
-
-// Internal rope nodes potentially store a copy of the allocator
-// instance used to allocate them. This is mostly redundant.
-// But the alternative would be to pass allocator instances around
-// in some form to nearly all internal functions, since any pointer
-// assignment may result in a zero reference count and thus require
-// deallocation.
-// The _Rope_rep_base class encapsulates
-// the differences between SGI-style allocators and standard-conforming
-// allocators.
-
-#ifdef __STL_USE_STD_ALLOCATORS
-
-#define __STATIC_IF_SGI_ALLOC /* not static */
-
-// Base class for ordinary allocators.
-template <class _CharT, class _Allocator, bool _IsStatic>
-class _Rope_rep_alloc_base {
-public:
- typedef typename _Alloc_traits<_CharT,_Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return _M_data_allocator; }
- _Rope_rep_alloc_base(size_t __size, const allocator_type& __a)
- : _M_size(__size), _M_data_allocator(__a) {}
- size_t _M_size; // This is here only to avoid wasting space
- // for an otherwise empty base class.
-
-
-protected:
- allocator_type _M_data_allocator;
-
-# define __ROPE_DEFINE_ALLOC(_Tp, __name) \
- typedef typename \
- _Alloc_traits<_Tp,_Allocator>::allocator_type __name##Allocator; \
- /*static*/ _Tp * __name##_allocate(size_t __n) \
- { return __name##Allocator(_M_data_allocator).allocate(__n); } \
- void __name##_deallocate(_Tp* __p, size_t __n) \
- { __name##Allocator(_M_data_allocator).deallocate(__p, __n); }
- __ROPE_DEFINE_ALLOCS(_Allocator);
-# undef __ROPE_DEFINE_ALLOC
-};
-
-// Specialization for allocators that have the property that we don't
-// actually have to store an allocator object.
-template <class _CharT, class _Allocator>
-class _Rope_rep_alloc_base<_CharT,_Allocator,true> {
-public:
- typedef typename _Alloc_traits<_CharT,_Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
- _Rope_rep_alloc_base(size_t __size, const allocator_type&)
- : _M_size(__size) {}
- size_t _M_size;
-
-protected:
-
-# define __ROPE_DEFINE_ALLOC(_Tp, __name) \
- typedef typename \
- _Alloc_traits<_Tp,_Allocator>::_Alloc_type __name##Alloc; \
- typedef typename \
- _Alloc_traits<_Tp,_Allocator>::allocator_type __name##Allocator; \
- static _Tp* __name##_allocate(size_t __n) \
- { return __name##Alloc::allocate(__n); } \
- void __name##_deallocate(_Tp *__p, size_t __n) \
- { __name##Alloc::deallocate(__p, __n); }
- __ROPE_DEFINE_ALLOCS(_Allocator);
-# undef __ROPE_DEFINE_ALLOC
-};
-
-template <class _CharT, class _Alloc>
-struct _Rope_rep_base
- : public _Rope_rep_alloc_base<_CharT,_Alloc,
- _Alloc_traits<_CharT,_Alloc>::_S_instanceless>
-{
- typedef _Rope_rep_alloc_base<_CharT,_Alloc,
- _Alloc_traits<_CharT,_Alloc>::_S_instanceless>
- _Base;
- typedef typename _Base::allocator_type allocator_type;
- _Rope_rep_base(size_t __size, const allocator_type& __a)
- : _Base(__size, __a) {}
-};
-
-#else /* !__STL_USE_STD_ALLOCATORS */
-
-#define __STATIC_IF_SGI_ALLOC static
-
-template <class _CharT, class _Alloc>
-class _Rope_rep_base {
-public:
- typedef _Alloc allocator_type;
- static allocator_type get_allocator() { return allocator_type(); }
- _Rope_rep_base(size_t __size, const allocator_type&) : _M_size(__size) {}
- size_t _M_size;
-
-protected:
-
-# define __ROPE_DEFINE_ALLOC(_Tp, __name) \
- typedef simple_alloc<_Tp, _Alloc> __name##Alloc; \
- static _Tp* __name##_allocate(size_t __n) \
- { return __name##Alloc::allocate(__n); } \
- static void __name##_deallocate(_Tp* __p, size_t __n) \
- { __name##Alloc::deallocate(__p, __n); }
- __ROPE_DEFINE_ALLOCS(_Alloc);
-# undef __ROPE_DEFINE_ALLOC
-};
-
-#endif /* __STL_USE_STD_ALLOCATORS */
-
-
-template<class _CharT, class _Alloc>
-struct _Rope_RopeRep : public _Rope_rep_base<_CharT,_Alloc> {
- public:
- enum { _S_max_rope_depth = 45 };
- enum _Tag {_S_leaf, _S_concat, _S_substringfn, _S_function};
- _Tag _M_tag:8;
- bool _M_is_balanced:8;
- unsigned char _M_depth;
- __GC_CONST _CharT* _M_c_string;
- /* Flattened version of string, if needed. */
- /* typically 0. */
- /* If it's not 0, then the memory is owned */
- /* by this node. */
- /* In the case of a leaf, this may point to */
- /* the same memory as the data field. */
- typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
- _Rope_RopeRep(_Tag __t, int __d, bool __b, size_t __size,
- allocator_type __a)
- : _Rope_rep_base<_CharT,_Alloc>(__size, __a),
- _M_tag(__t), _M_depth(__d), _M_is_balanced(__b), _M_c_string(0)
- {
-# ifndef __GC
- _M_refcount = 1;
- _M_init_refcount_lock();
-# endif
- }
-# ifndef __GC
-# if defined(__STL_WIN32THREADS)
- long _M_refcount; // InterlockedIncrement wants a long *
-# else
- size_t _M_refcount;
-# endif
- // We count references from rope instances
- // and references from other rope nodes. We
- // do not count const_iterator references.
- // Iterator references are counted so that rope modifications
- // can be detected after the fact.
- // Generally function results are counted, i.__e.
- // a pointer returned by a function is included at the
- // point at which the pointer is returned.
- // The recipient should decrement the count if the
- // __result is not needed.
- // Generally function arguments are not reflected
- // in the reference count. The callee should increment
- // the count before saving the argument someplace that
- // will outlive the call.
-# endif
-# ifndef __GC
-# ifdef __STL_SGI_THREADS
- // Reference counting with multiple threads and no
- // hardware or thread package support is pretty awful.
- // Mutexes are normally too expensive.
- // We'll assume a COMPARE_AND_SWAP(destp, __old, new)
- // operation, which might be cheaper.
-# if __mips < 3 || !(defined (_ABIN32) || defined(_ABI64))
-# define __add_and_fetch(l,v) add_then_test((unsigned long*)l,v)
-# endif
- void _M_init_refcount_lock() {}
- void _M_incr_refcount ()
- {
- __add_and_fetch(&_M_refcount, 1);
- }
- size_t _M_decr_refcount ()
- {
- return __add_and_fetch(&_M_refcount, (size_t)(-1));
- }
-# elif defined(__STL_WIN32THREADS)
- void _M_init_refcount_lock() {}
- void _M_incr_refcount ()
- {
- InterlockedIncrement(&_M_refcount);
- }
- size_t _M_decr_refcount ()
- {
- return InterlockedDecrement(&_M_refcount);
- }
-# elif defined(__STL_PTHREADS)
- // This should be portable, but performance is expected
- // to be quite awful. This really needs platform specific
- // code.
- pthread_mutex_t _M_refcount_lock;
- void _M_init_refcount_lock() {
- pthread_mutex_init(&_M_refcount_lock, 0);
- }
- void _M_incr_refcount ()
- {
- pthread_mutex_lock(&_M_refcount_lock);
- ++_M_refcount;
- pthread_mutex_unlock(&_M_refcount_lock);
- }
- size_t _M_decr_refcount ()
- {
- size_t __result;
- pthread_mutex_lock(&_M_refcount_lock);
- __result = --_M_refcount;
- pthread_mutex_unlock(&_M_refcount_lock);
- return __result;
- }
-# else
- void _M_init_refcount_lock() {}
- void _M_incr_refcount ()
- {
- ++_M_refcount;
- }
- size_t _M_decr_refcount ()
- {
- --_M_refcount;
- return _M_refcount;
- }
-# endif
-# else
- void _M_incr_refcount () {}
-# endif
-# ifdef __STL_USE_STD_ALLOCATORS
- static void _S_free_string(__GC_CONST _CharT*, size_t __len,
- allocator_type __a);
-# define __STL_FREE_STRING(__s, __l, __a) _S_free_string(__s, __l, __a);
-# else
- static void _S_free_string(__GC_CONST _CharT*, size_t __len);
-# define __STL_FREE_STRING(__s, __l, __a) _S_free_string(__s, __l);
-# endif
- // Deallocate data section of a leaf.
- // This shouldn't be a member function.
- // But its hard to do anything else at the
- // moment, because it's templatized w.r.t.
- // an allocator.
- // Does nothing if __GC is defined.
-# ifndef __GC
- void _M_free_c_string();
- void _M_free_tree();
- // Deallocate t. Assumes t is not 0.
- void _M_unref_nonnil()
- {
- if (0 == _M_decr_refcount()) _M_free_tree();
- }
- void _M_ref_nonnil()
- {
- _M_incr_refcount();
- }
- static void _S_unref(_Rope_RopeRep* __t)
- {
- if (0 != __t) {
- __t->_M_unref_nonnil();
- }
- }
- static void _S_ref(_Rope_RopeRep* __t)
- {
- if (0 != __t) __t->_M_incr_refcount();
- }
- static void _S_free_if_unref(_Rope_RopeRep* __t)
- {
- if (0 != __t && 0 == __t->_M_refcount) __t->_M_free_tree();
- }
-# else /* __GC */
- void _M_unref_nonnil() {}
- void _M_ref_nonnil() {}
- static void _S_unref(_Rope_RopeRep*) {}
- static void _S_ref(_Rope_RopeRep*) {}
- static void _S_free_if_unref(_Rope_RopeRep*) {}
-# endif
-
-};
-
-template<class _CharT, class _Alloc>
-struct _Rope_RopeLeaf : public _Rope_RopeRep<_CharT,_Alloc> {
- public:
- // Apparently needed by VC++
- // The data fields of leaves are allocated with some
- // extra space, to accomodate future growth and for basic
- // character types, to hold a trailing eos character.
- enum { _S_alloc_granularity = 8 };
- static size_t _S_rounded_up_size(size_t __n) {
- size_t __size_with_eos;
-
- if (_S_is_basic_char_type((_CharT*)0)) {
- __size_with_eos = __n + 1;
- } else {
- __size_with_eos = __n;
- }
-# ifdef __GC
- return __size_with_eos;
-# else
- // Allow slop for in-place expansion.
- return (__size_with_eos + _S_alloc_granularity-1)
- &~ (_S_alloc_granularity-1);
-# endif
- }
- __GC_CONST _CharT* _M_data; /* Not necessarily 0 terminated. */
- /* The allocated size is */
- /* _S_rounded_up_size(size), except */
- /* in the GC case, in which it */
- /* doesn't matter. */
- typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
- _Rope_RopeLeaf(__GC_CONST _CharT* __d, size_t __size, allocator_type __a)
- : _Rope_RopeRep<_CharT,_Alloc>(_S_leaf, 0, true, __size, __a),
- _M_data(__d)
- {
- __stl_assert(__size > 0);
- if (_S_is_basic_char_type((_CharT *)0)) {
- // already eos terminated.
- _M_c_string = __d;
- }
- }
- // The constructor assumes that d has been allocated with
- // the proper allocator and the properly padded size.
- // In contrast, the destructor deallocates the data:
-# ifndef __GC
- ~_Rope_RopeLeaf() {
- if (_M_data != _M_c_string) {
- _M_free_c_string();
- }
- __STL_FREE_STRING(_M_data, _M_size, get_allocator());
- }
-# endif
-};
-
-template<class _CharT, class _Alloc>
-struct _Rope_RopeConcatenation : public _Rope_RopeRep<_CharT,_Alloc> {
- public:
- _Rope_RopeRep<_CharT,_Alloc>* _M_left;
- _Rope_RopeRep<_CharT,_Alloc>* _M_right;
- typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
- _Rope_RopeConcatenation(_Rope_RopeRep<_CharT,_Alloc>* __l,
- _Rope_RopeRep<_CharT,_Alloc>* __r,
- allocator_type __a)
- : _Rope_RopeRep<_CharT,_Alloc>(
- _S_concat, max(__l->_M_depth, __r->_M_depth) + 1, false,
- __l->_M_size + __r->_M_size, __a),
- _M_left(__l), _M_right(__r)
- {}
-# ifndef __GC
- ~_Rope_RopeConcatenation() {
- _M_free_c_string();
- _M_left->_M_unref_nonnil();
- _M_right->_M_unref_nonnil();
- }
-# endif
-};
-
-template<class _CharT, class _Alloc>
-struct _Rope_RopeFunction : public _Rope_RopeRep<_CharT,_Alloc> {
- public:
- char_producer<_CharT>* _M_fn;
-# ifndef __GC
- bool _M_delete_when_done; // Char_producer is owned by the
- // rope and should be explicitly
- // deleted when the rope becomes
- // inaccessible.
-# else
- // In the GC case, we either register the rope for
- // finalization, or not. Thus the field is unnecessary;
- // the information is stored in the collector data structures.
- // We do need a finalization procedure to be invoked by the
- // collector.
- static void _S_fn_finalization_proc(void * __tree, void *) {
- delete ((_Rope_RopeFunction *)__tree) -> _M_fn;
- }
-# endif
- typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
- _Rope_RopeFunction(char_producer<_CharT>* __f, size_t __size,
- bool __d, allocator_type __a)
- :_Rope_RopeRep<_CharT,_Alloc>(_S_function, 0, true, __size, __a),
- _M_fn(__f)
-# ifndef __GC
- , _M_delete_when_done(__d)
-# endif
- {
- __stl_assert(__size > 0);
-# ifdef __GC
- if (__d) {
- GC_REGISTER_FINALIZER(
- this, _Rope_RopeFunction::_S_fn_finalization_proc, 0, 0, 0);
- }
-# endif
- }
-# ifndef __GC
- ~_Rope_RopeFunction() {
- _M_free_c_string();
- if (_M_delete_when_done) {
- delete _M_fn;
- }
- }
-# endif
-};
-// Substring results are usually represented using just
-// concatenation nodes. But in the case of very long flat ropes
-// or ropes with a functional representation that isn't practical.
-// In that case, we represent the __result as a special case of
-// RopeFunction, whose char_producer points back to the rope itself.
-// In all cases except repeated substring operations and
-// deallocation, we treat the __result as a RopeFunction.
-template<class _CharT, class _Alloc>
-struct _Rope_RopeSubstring : public _Rope_RopeFunction<_CharT,_Alloc>,
- public char_producer<_CharT> {
- public:
- // XXX this whole class should be rewritten.
- _Rope_RopeRep<_CharT,_Alloc>* _M_base; // not 0
- size_t _M_start;
- virtual void operator()(size_t __start_pos, size_t __req_len,
- _CharT* __buffer) {
- switch(_M_base->_M_tag) {
- case _S_function:
- case _S_substringfn:
- {
- char_producer<_CharT>* __fn =
- ((_Rope_RopeFunction<_CharT,_Alloc>*)_M_base)->_M_fn;
- __stl_assert(__start_pos + __req_len <= _M_size);
- __stl_assert(_M_start + _M_size <= _M_base->_M_size);
- (*__fn)(__start_pos + _M_start, __req_len, __buffer);
- }
- break;
- case _S_leaf:
- {
- __GC_CONST _CharT* __s =
- ((_Rope_RopeLeaf<_CharT,_Alloc>*)_M_base)->_M_data;
- uninitialized_copy_n(__s + __start_pos + _M_start, __req_len,
- __buffer);
- }
- break;
- default:
- __stl_assert(false);
- }
- }
- typedef _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
- _Rope_RopeSubstring(_Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
- size_t __l, allocator_type __a)
- : _Rope_RopeFunction<_CharT,_Alloc>(this, __l, false, __a), _M_base(__b)
- , _M_start(__s)
- {
- __stl_assert(__l > 0);
- __stl_assert(__s + __l <= __b->_M_size);
-# ifndef __GC
- _M_base->_M_ref_nonnil();
-# endif
- _M_tag = _S_substringfn;
- }
- virtual ~_Rope_RopeSubstring()
- {
-# ifndef __GC
- _M_base->_M_unref_nonnil();
- // _M_free_c_string(); -- done by parent class
-# endif
- }
-};
-
-
-// Self-destructing pointers to Rope_rep.
-// These are not conventional smart pointers. Their
-// only purpose in life is to ensure that unref is called
-// on the pointer either at normal exit or if an exception
-// is raised. It is the caller's responsibility to
-// adjust reference counts when these pointers are initialized
-// or assigned to. (This convention significantly reduces
-// the number of potentially expensive reference count
-// updates.)
-#ifndef __GC
- template<class _CharT, class _Alloc>
- struct _Rope_self_destruct_ptr {
- _Rope_RopeRep<_CharT,_Alloc>* _M_ptr;
- ~_Rope_self_destruct_ptr()
- { _Rope_RopeRep<_CharT,_Alloc>::_S_unref(_M_ptr); }
-# ifdef __STL_USE_EXCEPTIONS
- _Rope_self_destruct_ptr() : _M_ptr(0) {};
-# else
- _Rope_self_destruct_ptr() {};
-# endif
- _Rope_self_destruct_ptr(_Rope_RopeRep<_CharT,_Alloc>* __p) : _M_ptr(__p) {}
- _Rope_RopeRep<_CharT,_Alloc>& operator*() { return *_M_ptr; }
- _Rope_RopeRep<_CharT,_Alloc>* operator->() { return _M_ptr; }
- operator _Rope_RopeRep<_CharT,_Alloc>*() { return _M_ptr; }
- _Rope_self_destruct_ptr& operator= (_Rope_RopeRep<_CharT,_Alloc>* __x)
- { _M_ptr = __x; return *this; }
- };
-#endif
-
-// Dereferencing a nonconst iterator has to return something
-// that behaves almost like a reference. It's not possible to
-// return an actual reference since assignment requires extra
-// work. And we would get into the same problems as with the
-// CD2 version of basic_string.
-template<class _CharT, class _Alloc>
-class _Rope_char_ref_proxy {
- friend class rope<_CharT,_Alloc>;
- friend class _Rope_iterator<_CharT,_Alloc>;
- friend class _Rope_char_ptr_proxy<_CharT,_Alloc>;
-# ifdef __GC
- typedef _Rope_RopeRep<_CharT,_Alloc>* _Self_destruct_ptr;
-# else
- typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr;
-# endif
- typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
- typedef rope<_CharT,_Alloc> _My_rope;
- size_t _M_pos;
- _CharT _M_current;
- bool _M_current_valid;
- _My_rope* _M_root; // The whole rope.
- public:
- _Rope_char_ref_proxy(_My_rope* __r, size_t __p) :
- _M_pos(__p), _M_current_valid(false), _M_root(__r) {}
- _Rope_char_ref_proxy(const _Rope_char_ref_proxy& __x) :
- _M_pos(__x._M_pos), _M_current_valid(false), _M_root(__x._M_root) {}
- // Don't preserve cache if the reference can outlive the
- // expression. We claim that's not possible without calling
- // a copy constructor or generating reference to a proxy
- // reference. We declare the latter to have undefined semantics.
- _Rope_char_ref_proxy(_My_rope* __r, size_t __p,
- _CharT __c) :
- _M_pos(__p), _M_current(__c), _M_current_valid(true), _M_root(__r) {}
- inline operator _CharT () const;
- _Rope_char_ref_proxy& operator= (_CharT __c);
- _Rope_char_ptr_proxy<_CharT,_Alloc> operator& () const;
- _Rope_char_ref_proxy& operator= (const _Rope_char_ref_proxy& __c) {
- return operator=((_CharT)__c);
- }
-};
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
- template<class _CharT, class __Alloc>
- inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a,
- _Rope_char_ref_proxy <_CharT, __Alloc > __b) {
- _CharT __tmp = __a;
- __a = __b;
- __b = __tmp;
- }
-#else
-// There is no really acceptable way to handle this. The default
-// definition of swap doesn't work for proxy references.
-// It can't really be made to work, even with ugly hacks, since
-// the only unusual operation it uses is the copy constructor, which
-// is needed for other purposes. We provide a macro for
-// full specializations, and instantiate the most common case.
-# define _ROPE_SWAP_SPECIALIZATION(_CharT, __Alloc) \
- inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a, \
- _Rope_char_ref_proxy <_CharT, __Alloc > __b) { \
- _CharT __tmp = __a; \
- __a = __b; \
- __b = __tmp; \
- }
-
-_ROPE_SWAP_SPECIALIZATION(char,__STL_DEFAULT_ALLOCATOR(char))
-
-#endif /* !__STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-template<class _CharT, class _Alloc>
-class _Rope_char_ptr_proxy {
- // XXX this class should be rewritten.
- friend class _Rope_char_ref_proxy<_CharT,_Alloc>;
- size_t _M_pos;
- rope<_CharT,_Alloc>* _M_root; // The whole rope.
- public:
- _Rope_char_ptr_proxy(const _Rope_char_ref_proxy<_CharT,_Alloc>& __x)
- : _M_pos(__x._M_pos), _M_root(__x._M_root) {}
- _Rope_char_ptr_proxy(const _Rope_char_ptr_proxy& __x)
- : _M_pos(__x._M_pos), _M_root(__x._M_root) {}
- _Rope_char_ptr_proxy() {}
- _Rope_char_ptr_proxy(_CharT* __x) : _M_root(0), _M_pos(0) {
- __stl_assert(0 == __x);
- }
- _Rope_char_ptr_proxy&
- operator= (const _Rope_char_ptr_proxy& __x) {
- _M_pos = __x._M_pos;
- _M_root = __x._M_root;
- return *this;
- }
- friend bool operator== __STL_NULL_TMPL_ARGS
- (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x,
- const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y);
-
- _Rope_char_ref_proxy<_CharT,_Alloc> operator*() const {
- return _Rope_char_ref_proxy<_CharT,_Alloc>(_M_root, _M_pos);
- }
-};
-
-
-// Rope iterators:
-// Unlike in the C version, we cache only part of the stack
-// for rope iterators, since they must be efficiently copyable.
-// When we run out of cache, we have to reconstruct the iterator
-// value.
-// Pointers from iterators are not included in reference counts.
-// Iterators are assumed to be thread private. Ropes can
-// be shared.
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1375
-#endif
-
-template<class _CharT, class _Alloc>
-class _Rope_iterator_base
- : public random_access_iterator<_CharT, ptrdiff_t> {
- friend class rope<_CharT,_Alloc>;
- public:
- typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
- // Borland doesnt want this to be protected.
- protected:
- enum { _S_path_cache_len = 4 }; // Must be <= 9.
- enum { _S_iterator_buf_len = 15 };
- size_t _M_current_pos;
- _RopeRep* _M_root; // The whole rope.
- size_t _M_leaf_pos; // Starting position for current leaf
- __GC_CONST _CharT* _M_buf_start;
- // Buffer possibly
- // containing current char.
- __GC_CONST _CharT* _M_buf_ptr;
- // Pointer to current char in buffer.
- // != 0 ==> buffer valid.
- __GC_CONST _CharT* _M_buf_end;
- // One past __last valid char in buffer.
- // What follows is the path cache. We go out of our
- // way to make this compact.
- // Path_end contains the bottom section of the path from
- // the root to the current leaf.
- const _RopeRep* _M_path_end[_S_path_cache_len];
- int _M_leaf_index; // Last valid __pos in path_end;
- // _M_path_end[0] ... _M_path_end[leaf_index-1]
- // point to concatenation nodes.
- unsigned char _M_path_directions;
- // (path_directions >> __i) & 1 is 1
- // iff we got from _M_path_end[leaf_index - __i - 1]
- // to _M_path_end[leaf_index - __i] by going to the
- // __right. Assumes path_cache_len <= 9.
- _CharT _M_tmp_buf[_S_iterator_buf_len];
- // Short buffer for surrounding chars.
- // This is useful primarily for
- // RopeFunctions. We put the buffer
- // here to avoid locking in the
- // multithreaded case.
- // The cached path is generally assumed to be valid
- // only if the buffer is valid.
- static void _S_setbuf(_Rope_iterator_base& __x);
- // Set buffer contents given
- // path cache.
- static void _S_setcache(_Rope_iterator_base& __x);
- // Set buffer contents and
- // path cache.
- static void _S_setcache_for_incr(_Rope_iterator_base& __x);
- // As above, but assumes path
- // cache is valid for previous posn.
- _Rope_iterator_base() {}
- _Rope_iterator_base(_RopeRep* __root, size_t __pos)
- : _M_root(__root), _M_current_pos(__pos), _M_buf_ptr(0) {}
- void _M_incr(size_t __n);
- void _M_decr(size_t __n);
- public:
- size_t index() const { return _M_current_pos; }
- _Rope_iterator_base(const _Rope_iterator_base& __x) {
- if (0 != __x._M_buf_ptr) {
- *this = __x;
- } else {
- _M_current_pos = __x._M_current_pos;
- _M_root = __x._M_root;
- _M_buf_ptr = 0;
- }
- }
-};
-
-template<class _CharT, class _Alloc> class _Rope_iterator;
-
-template<class _CharT, class _Alloc>
-class _Rope_const_iterator : public _Rope_iterator_base<_CharT,_Alloc> {
- friend class rope<_CharT,_Alloc>;
- protected:
- _Rope_const_iterator(const _RopeRep* __root, size_t __pos):
- _Rope_iterator_base<_CharT,_Alloc>(
- const_cast<_RopeRep*>(__root), __pos)
- // Only nonconst iterators modify root ref count
- {}
- public:
- typedef _CharT reference; // Really a value. Returning a reference
- // Would be a mess, since it would have
- // to be included in refcount.
- typedef const _CharT* pointer;
-
- public:
- _Rope_const_iterator() {};
- _Rope_const_iterator(const _Rope_const_iterator& __x) :
- _Rope_iterator_base<_CharT,_Alloc>(__x) { }
- _Rope_const_iterator(const _Rope_iterator<_CharT,_Alloc>& __x);
- _Rope_const_iterator(const rope<_CharT,_Alloc>& __r, size_t __pos) :
- _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr, __pos) {}
- _Rope_const_iterator& operator= (const _Rope_const_iterator& __x) {
- if (0 != __x._M_buf_ptr) {
- *(static_cast<_Rope_iterator_base<_CharT,_Alloc>*>(this)) = __x;
- } else {
- _M_current_pos = __x._M_current_pos;
- _M_root = __x._M_root;
- _M_buf_ptr = 0;
- }
- return(*this);
- }
- reference operator*() {
- if (0 == _M_buf_ptr) _S_setcache(*this);
- return *_M_buf_ptr;
- }
- _Rope_const_iterator& operator++() {
- __GC_CONST _CharT* __next;
- if (0 != _M_buf_ptr && (__next = _M_buf_ptr + 1) < _M_buf_end) {
- _M_buf_ptr = __next;
- ++_M_current_pos;
- } else {
- _M_incr(1);
- }
- return *this;
- }
- _Rope_const_iterator& operator+=(ptrdiff_t __n) {
- if (__n >= 0) {
- _M_incr(__n);
- } else {
- _M_decr(-__n);
- }
- return *this;
- }
- _Rope_const_iterator& operator--() {
- _M_decr(1);
- return *this;
- }
- _Rope_const_iterator& operator-=(ptrdiff_t __n) {
- if (__n >= 0) {
- _M_decr(__n);
- } else {
- _M_incr(-__n);
- }
- return *this;
- }
- _Rope_const_iterator operator++(int) {
- size_t __old_pos = _M_current_pos;
- _M_incr(1);
- return _Rope_const_iterator<_CharT,_Alloc>(_M_root, __old_pos);
- // This makes a subsequent dereference expensive.
- // Perhaps we should instead copy the iterator
- // if it has a valid cache?
- }
- _Rope_const_iterator operator--(int) {
- size_t __old_pos = _M_current_pos;
- _M_decr(1);
- return _Rope_const_iterator<_CharT,_Alloc>(_M_root, __old_pos);
- }
- friend _Rope_const_iterator<_CharT,_Alloc> operator- __STL_NULL_TMPL_ARGS
- (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- ptrdiff_t __n);
- friend _Rope_const_iterator<_CharT,_Alloc> operator+ __STL_NULL_TMPL_ARGS
- (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- ptrdiff_t __n);
- friend _Rope_const_iterator<_CharT,_Alloc> operator+ __STL_NULL_TMPL_ARGS
- (ptrdiff_t __n,
- const _Rope_const_iterator<_CharT,_Alloc>& __x);
- reference operator[](size_t __n) {
- return rope<_CharT,_Alloc>::_S_fetch(_M_root, _M_current_pos + __n);
- }
- friend bool operator== __STL_NULL_TMPL_ARGS
- (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y);
- friend bool operator< __STL_NULL_TMPL_ARGS
- (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y);
- friend ptrdiff_t operator- __STL_NULL_TMPL_ARGS
- (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y);
-};
-
-template<class _CharT, class _Alloc>
-class _Rope_iterator : public _Rope_iterator_base<_CharT,_Alloc> {
- friend class rope<_CharT,_Alloc>;
- protected:
- rope<_CharT,_Alloc>* _M_root_rope;
- // root is treated as a cached version of this,
- // and is used to detect changes to the underlying
- // rope.
- // Root is included in the reference count.
- // This is necessary so that we can detect changes reliably.
- // Unfortunately, it requires careful bookkeeping for the
- // nonGC case.
- _Rope_iterator(rope<_CharT,_Alloc>* __r, size_t __pos)
- : _Rope_iterator_base<_CharT,_Alloc>(__r->_M_tree_ptr, __pos),
- _M_root_rope(__r)
- { _RopeRep::_S_ref(_M_root); }
-
- void _M_check();
- public:
- typedef _Rope_char_ref_proxy<_CharT,_Alloc> reference;
- typedef _Rope_char_ref_proxy<_CharT,_Alloc>* pointer;
-
- public:
- rope<_CharT,_Alloc>& container() { return *_M_root_rope; }
- _Rope_iterator() {
- _M_root = 0; // Needed for reference counting.
- };
- _Rope_iterator(const _Rope_iterator& __x) :
- _Rope_iterator_base<_CharT,_Alloc>(__x) {
- _M_root_rope = __x._M_root_rope;
- _RopeRep::_S_ref(_M_root);
- }
- _Rope_iterator(rope<_CharT,_Alloc>& __r, size_t __pos);
- ~_Rope_iterator() {
- _RopeRep::_S_unref(_M_root);
- }
- _Rope_iterator& operator= (const _Rope_iterator& __x) {
- _RopeRep* __old = _M_root;
-
- _RopeRep::_S_ref(__x._M_root);
- if (0 != __x._M_buf_ptr) {
- _M_root_rope = __x._M_root_rope;
- *(static_cast<_Rope_iterator_base<_CharT,_Alloc>*>(this)) = __x;
- } else {
- _M_current_pos = __x._M_current_pos;
- _M_root = __x._M_root;
- _M_root_rope = __x._M_root_rope;
- _M_buf_ptr = 0;
- }
- _RopeRep::_S_unref(__old);
- return(*this);
- }
- reference operator*() {
- _M_check();
- if (0 == _M_buf_ptr) {
- return _Rope_char_ref_proxy<_CharT,_Alloc>(
- _M_root_rope, _M_current_pos);
- } else {
- return _Rope_char_ref_proxy<_CharT,_Alloc>(
- _M_root_rope, _M_current_pos, *_M_buf_ptr);
- }
- }
- _Rope_iterator& operator++() {
- _M_incr(1);
- return *this;
- }
- _Rope_iterator& operator+=(difference_type __n) {
- if (__n >= 0) {
- _M_incr(__n);
- } else {
- _M_decr(-__n);
- }
- return *this;
- }
- _Rope_iterator& operator--() {
- _M_decr(1);
- return *this;
- }
- _Rope_iterator& operator-=(difference_type __n) {
- if (__n >= 0) {
- _M_decr(__n);
- } else {
- _M_incr(-__n);
- }
- return *this;
- }
- _Rope_iterator operator++(int) {
- size_t __old_pos = _M_current_pos;
- _M_incr(1);
- return _Rope_iterator<_CharT,_Alloc>(_M_root_rope, __old_pos);
- }
- _Rope_iterator operator--(int) {
- size_t __old_pos = _M_current_pos;
- _M_decr(1);
- return _Rope_iterator<_CharT,_Alloc>(_M_root_rope, __old_pos);
- }
- reference operator[](ptrdiff_t __n) {
- return _Rope_char_ref_proxy<_CharT,_Alloc>(
- _M_root_rope, _M_current_pos + __n);
- }
- friend bool operator== __STL_NULL_TMPL_ARGS
- (const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y);
- friend bool operator< __STL_NULL_TMPL_ARGS
- (const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y);
- friend ptrdiff_t operator- __STL_NULL_TMPL_ARGS
- (const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y);
- friend _Rope_iterator<_CharT,_Alloc> operator- __STL_NULL_TMPL_ARGS
- (const _Rope_iterator<_CharT,_Alloc>& __x,
- ptrdiff_t __n);
- friend _Rope_iterator<_CharT,_Alloc> operator+ __STL_NULL_TMPL_ARGS
- (const _Rope_iterator<_CharT,_Alloc>& __x,
- ptrdiff_t __n);
- friend _Rope_iterator<_CharT,_Alloc> operator+ __STL_NULL_TMPL_ARGS
- (ptrdiff_t __n,
- const _Rope_iterator<_CharT,_Alloc>& __x);
-
-};
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1375
-#endif
-
-// The rope base class encapsulates
-// the differences between SGI-style allocators and standard-conforming
-// allocators.
-
-#ifdef __STL_USE_STD_ALLOCATORS
-
-// Base class for ordinary allocators.
-template <class _CharT, class _Allocator, bool _IsStatic>
-class _Rope_alloc_base {
-public:
- typedef _Rope_RopeRep<_CharT,_Allocator> _RopeRep;
- typedef typename _Alloc_traits<_CharT,_Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return _M_data_allocator; }
- _Rope_alloc_base(_RopeRep *__t, const allocator_type& __a)
- : _M_tree_ptr(__t), _M_data_allocator(__a) {}
- _Rope_alloc_base(const allocator_type& __a)
- : _M_data_allocator(__a) {}
-
-protected:
- // The only data members of a rope:
- allocator_type _M_data_allocator;
- _RopeRep* _M_tree_ptr;
-
-# define __ROPE_DEFINE_ALLOC(_Tp, __name) \
- typedef typename \
- _Alloc_traits<_Tp,_Allocator>::allocator_type __name##Allocator; \
- _Tp* __name##_allocate(size_t __n) const \
- { return __name##Allocator(_M_data_allocator).allocate(__n); } \
- void __name##_deallocate(_Tp *__p, size_t __n) const \
- { __name##Allocator(_M_data_allocator).deallocate(__p, __n); }
- __ROPE_DEFINE_ALLOCS(_Allocator)
-# undef __ROPE_DEFINE_ALLOC
-};
-
-// Specialization for allocators that have the property that we don't
-// actually have to store an allocator object.
-template <class _CharT, class _Allocator>
-class _Rope_alloc_base<_CharT,_Allocator,true> {
-public:
- typedef _Rope_RopeRep<_CharT,_Allocator> _RopeRep;
- typedef typename _Alloc_traits<_CharT,_Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
- _Rope_alloc_base(_RopeRep *__t, const allocator_type&)
- : _M_tree_ptr(__t) {}
- _Rope_alloc_base(const allocator_type&) {}
-
-protected:
- // The only data member of a rope:
- _RopeRep *_M_tree_ptr;
-
-# define __ROPE_DEFINE_ALLOC(_Tp, __name) \
- typedef typename \
- _Alloc_traits<_Tp,_Allocator>::_Alloc_type __name##Alloc; \
- typedef typename \
- _Alloc_traits<_Tp,_Allocator>::allocator_type __name##Allocator; \
- static _Tp* __name##_allocate(size_t __n) \
- { return __name##Alloc::allocate(__n); } \
- static void __name##_deallocate(_Tp *__p, size_t __n) \
- { __name##Alloc::deallocate(__p, __n); }
- __ROPE_DEFINE_ALLOCS(_Allocator)
-# undef __ROPE_DEFINE_ALLOC
-};
-
-template <class _CharT, class _Alloc>
-struct _Rope_base
- : public _Rope_alloc_base<_CharT,_Alloc,
- _Alloc_traits<_CharT,_Alloc>::_S_instanceless>
-{
- typedef _Rope_alloc_base<_CharT,_Alloc,
- _Alloc_traits<_CharT,_Alloc>::_S_instanceless>
- _Base;
- typedef typename _Base::allocator_type allocator_type;
- _Rope_base(_RopeRep* __t, const allocator_type& __a) : _Base(__t, __a) {}
- _Rope_base(const allocator_type& __a) : _Base(__a) {}
-};
-
-#else /* !__STL_USE_STD_ALLOCATORS */
-
-template <class _CharT, class _Alloc>
-class _Rope_base {
-public:
- typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
- typedef _Alloc allocator_type;
- static allocator_type get_allocator() { return allocator_type(); }
- _Rope_base(_RopeRep * __t, const allocator_type&) : _M_tree_ptr(__t) {}
- _Rope_base(const allocator_type&) {}
-
-protected:
- // The only data member of a rope:
- _RopeRep* _M_tree_ptr;
-
-# define __ROPE_DEFINE_ALLOC(_Tp, __name) \
- typedef simple_alloc<_Tp, _Alloc> __name##Alloc; \
- static _Tp* __name##_allocate(size_t __n) \
- { return __name##Alloc::allocate(__n); } \
- static void __name##_deallocate(_Tp *__p, size_t __n) \
- { __name##Alloc::deallocate(__p, __n); }
- __ROPE_DEFINE_ALLOCS(_Alloc)
-# undef __ROPE_DEFINE_ALLOC
-};
-
-#endif /* __STL_USE_STD_ALLOCATORS */
-
-
-template <class _CharT, class _Alloc>
-class rope : public _Rope_base<_CharT,_Alloc> {
- public:
- typedef _CharT value_type;
- typedef ptrdiff_t difference_type;
- typedef size_t size_type;
- typedef _CharT const_reference;
- typedef const _CharT* const_pointer;
- typedef _Rope_iterator<_CharT,_Alloc> iterator;
- typedef _Rope_const_iterator<_CharT,_Alloc> const_iterator;
- typedef _Rope_char_ref_proxy<_CharT,_Alloc> reference;
- typedef _Rope_char_ptr_proxy<_CharT,_Alloc> pointer;
-
- friend class _Rope_iterator<_CharT,_Alloc>;
- friend class _Rope_const_iterator<_CharT,_Alloc>;
- friend struct _Rope_RopeRep<_CharT,_Alloc>;
- friend class _Rope_iterator_base<_CharT,_Alloc>;
- friend class _Rope_char_ptr_proxy<_CharT,_Alloc>;
- friend class _Rope_char_ref_proxy<_CharT,_Alloc>;
- friend struct _Rope_RopeSubstring<_CharT,_Alloc>;
-
- protected:
- typedef _Rope_base<_CharT,_Alloc> _Base;
- typedef typename _Base::allocator_type allocator_type;
-# ifdef __STL_USE_NAMESPACES
- using _Base::_M_tree_ptr;
-# endif
- typedef __GC_CONST _CharT* _Cstrptr;
-# ifdef __STL_SGI_THREADS
- static _Cstrptr _S_atomic_swap(_Cstrptr* __p, _Cstrptr __q) {
-# if __mips < 3 || !(defined (_ABIN32) || defined(_ABI64))
- return (_Cstrptr) test_and_set((unsigned long*)__p,
- (unsigned long)__q);
-# else
- return (_Cstrptr) __test_and_set((unsigned long*)__p,
- (unsigned long)__q);
-# endif
- }
-# elif defined(__STL_WIN32THREADS)
- static _Cstrptr _S_atomic_swap(_Cstrptr* __p, _Cstrptr __q) {
- return (_Cstrptr) InterlockedExchange(
- (LPLONG)__p, (LONG)__q);
- }
-# elif defined(__STL_PTHREADS)
- // This should be portable, but performance is expected
- // to be quite awful. This really needs platform specific
- // code.
- static pthread_mutex_t _S_swap_lock;
- static _Cstrptr _S_atomic_swap(_Cstrptr* __p, _Cstrptr __q) {
- pthread_mutex_lock(&_S_swap_lock);
- _Cstrptr __result = *__p;
- *__p = __q;
- pthread_mutex_unlock(&_S_swap_lock);
- return __result;
- }
-# else
- static _Cstrptr _S_atomic_swap(_Cstrptr* __p, _Cstrptr __q) {
- _Cstrptr __result = *__p;
- *__p = __q;
- return __result;
- }
-# endif
-
- static _CharT _S_empty_c_str[1];
-
- static bool _S_is0(_CharT __c) { return __c == _S_eos((_CharT*)0); }
- enum { _S_copy_max = 23 };
- // For strings shorter than _S_copy_max, we copy to
- // concatenate.
-
- typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
- typedef _Rope_RopeConcatenation<_CharT,_Alloc> _RopeConcatenation;
- typedef _Rope_RopeLeaf<_CharT,_Alloc> _RopeLeaf;
- typedef _Rope_RopeFunction<_CharT,_Alloc> _RopeFunction;
- typedef _Rope_RopeSubstring<_CharT,_Alloc> _RopeSubstring;
-
- // Retrieve a character at the indicated position.
- static _CharT _S_fetch(_RopeRep* __r, size_type __pos);
-
-# ifndef __GC
- // Obtain a pointer to the character at the indicated position.
- // The pointer can be used to change the character.
- // If such a pointer cannot be produced, as is frequently the
- // case, 0 is returned instead.
- // (Returns nonzero only if all nodes in the path have a refcount
- // of 1.)
- static _CharT* _S_fetch_ptr(_RopeRep* __r, size_type __pos);
-# endif
-
- static bool _S_apply_to_pieces(
- // should be template parameter
- _Rope_char_consumer<_CharT>& __c,
- const _RopeRep* __r,
- size_t __begin, size_t __end);
- // begin and end are assumed to be in range.
-
-# ifndef __GC
- static void _S_unref(_RopeRep* __t)
- {
- _RopeRep::_S_unref(__t);
- }
- static void _S_ref(_RopeRep* __t)
- {
- _RopeRep::_S_ref(__t);
- }
-# else /* __GC */
- static void _S_unref(_RopeRep*) {}
- static void _S_ref(_RopeRep*) {}
-# endif
-
-
-# ifdef __GC
- typedef _Rope_RopeRep<_CharT,_Alloc>* _Self_destruct_ptr;
-# else
- typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr;
-# endif
-
- // _Result is counted in refcount.
- static _RopeRep* _S_substring(_RopeRep* __base,
- size_t __start, size_t __endp1);
-
- static _RopeRep* _S_concat_char_iter(_RopeRep* __r,
- const _CharT* __iter, size_t __slen);
- // Concatenate rope and char ptr, copying __s.
- // Should really take an arbitrary iterator.
- // Result is counted in refcount.
- static _RopeRep* _S_destr_concat_char_iter(_RopeRep* __r,
- const _CharT* __iter, size_t __slen)
- // As above, but one reference to __r is about to be
- // destroyed. Thus the pieces may be recycled if all
- // relevent reference counts are 1.
-# ifdef __GC
- // We can't really do anything since refcounts are unavailable.
- { return _S_concat_char_iter(__r, __iter, __slen); }
-# else
- ;
-# endif
-
- static _RopeRep* _S_concat(_RopeRep* __left, _RopeRep* __right);
- // General concatenation on _RopeRep. _Result
- // has refcount of 1. Adjusts argument refcounts.
-
- public:
- void apply_to_pieces( size_t __begin, size_t __end,
- _Rope_char_consumer<_CharT>& __c) const {
- _S_apply_to_pieces(__c, _M_tree_ptr, __begin, __end);
- }
-
-
- protected:
-
- static size_t _S_rounded_up_size(size_t __n) {
- return _RopeLeaf::_S_rounded_up_size(__n);
- }
-
- static size_t _S_allocated_capacity(size_t __n) {
- if (_S_is_basic_char_type((_CharT*)0)) {
- return _S_rounded_up_size(__n) - 1;
- } else {
- return _S_rounded_up_size(__n);
- }
- }
-
- // Allocate and construct a RopeLeaf using the supplied allocator
- // Takes ownership of s instead of copying.
- static _RopeLeaf* _S_new_RopeLeaf(__GC_CONST _CharT *__s,
- size_t __size, allocator_type __a)
- {
-# ifdef __STL_USE_STD_ALLOCATORS
- _RopeLeaf* __space = _LAllocator(__a).allocate(1);
-# else
- _RopeLeaf* __space = _L_allocate(1);
-# endif
- return new(__space) _RopeLeaf(__s, __size, __a);
- }
-
- static _RopeConcatenation* _S_new_RopeConcatenation(
- _RopeRep* __left, _RopeRep* __right,
- allocator_type __a)
- {
-# ifdef __STL_USE_STD_ALLOCATORS
- _RopeConcatenation* __space = _CAllocator(__a).allocate(1);
-# else
- _RopeConcatenation* __space = _C_allocate(1);
-# endif
- return new(__space) _RopeConcatenation(__left, __right, __a);
- }
-
- static _RopeFunction* _S_new_RopeFunction(char_producer<_CharT>* __f,
- size_t __size, bool __d, allocator_type __a)
- {
-# ifdef __STL_USE_STD_ALLOCATORS
- _RopeFunction* __space = _FAllocator(__a).allocate(1);
-# else
- _RopeFunction* __space = _F_allocate(1);
-# endif
- return new(__space) _RopeFunction(__f, __size, __d, __a);
- }
-
- static _RopeSubstring* _S_new_RopeSubstring(
- _Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
- size_t __l, allocator_type __a)
- {
-# ifdef __STL_USE_STD_ALLOCATORS
- _RopeSubstring* __space = _SAllocator(__a).allocate(1);
-# else
- _RopeSubstring* __space = _S_allocate(1);
-# endif
- return new(__space) _RopeSubstring(__b, __s, __l, __a);
- }
-
-# ifdef __STL_USE_STD_ALLOCATORS
- static
- _RopeLeaf* _S_RopeLeaf_from_unowned_char_ptr(const _CharT *__s,
- size_t __size, allocator_type __a)
-# define __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __size, __a) \
- _S_RopeLeaf_from_unowned_char_ptr(__s, __size, __a)
-# else
- static
- _RopeLeaf* _S_RopeLeaf_from_unowned_char_ptr2(const _CharT* __s,
- size_t __size)
-# define __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __size, __a) \
- _S_RopeLeaf_from_unowned_char_ptr2(__s, __size)
-# endif
- {
- if (0 == __size) return 0;
-# ifdef __STL_USE_STD_ALLOCATORS
- _CharT* __buf = __a.allocate(_S_rounded_up_size(__size));
-# else
- _CharT* __buf = _Data_allocate(_S_rounded_up_size(__size));
- allocator_type __a = allocator_type();
-# endif
-
- uninitialized_copy_n(__s, __size, __buf);
- _S_cond_store_eos(__buf[__size]);
- __STL_TRY {
- return _S_new_RopeLeaf(__buf, __size, __a);
- }
- __STL_UNWIND(_RopeRep::__STL_FREE_STRING(__buf, __size, __a))
- }
-
-
- // Concatenation of nonempty strings.
- // Always builds a concatenation node.
- // Rebalances if the result is too deep.
- // Result has refcount 1.
- // Does not increment left and right ref counts even though
- // they are referenced.
- static _RopeRep*
- _S_tree_concat(_RopeRep* __left, _RopeRep* __right);
-
- // Concatenation helper functions
- static _RopeLeaf*
- _S_leaf_concat_char_iter(_RopeLeaf* __r,
- const _CharT* __iter, size_t __slen);
- // Concatenate by copying leaf.
- // should take an arbitrary iterator
- // result has refcount 1.
-# ifndef __GC
- static _RopeLeaf* _S_destr_leaf_concat_char_iter
- (_RopeLeaf* __r, const _CharT* __iter, size_t __slen);
- // A version that potentially clobbers __r if __r->_M_refcount == 1.
-# endif
-
- // A helper function for exponentiating strings.
- // This uses a nonstandard refcount convention.
- // The result has refcount 0.
- struct _Concat_fn
- : public binary_function<rope<_CharT,_Alloc>,
- rope<_CharT,_Alloc>,
- rope<_CharT,_Alloc> > {
- rope operator() (const rope& __x, const rope& __y) {
- return __x + __y;
- }
- };
-
- // Needed by the call to "power" used to build ropes
- // consisting of n copies of a character.
- friend rope identity_element(_Concat_fn)
- { return rope<_CharT,_Alloc>(); }
-
- static size_t _S_char_ptr_len(const _CharT* __s);
- // slightly generalized strlen
-
- rope(_RopeRep* __t, const allocator_type& __a = allocator_type())
- : _Base(__t,__a) { }
-
-
- // Copy __r to the _CharT buffer.
- // Returns __buffer + __r->_M_size.
- // Assumes that buffer is uninitialized.
- static _CharT* _S_flatten(_RopeRep* __r, _CharT* __buffer);
-
- // Again, with explicit starting position and length.
- // Assumes that buffer is uninitialized.
- static _CharT* _S_flatten(_RopeRep* __r,
- size_t __start, size_t __len,
- _CharT* __buffer);
-
- static const unsigned long
- _S_min_len[_RopeRep::_S_max_rope_depth + 1];
-
- static bool _S_is_balanced(_RopeRep* __r)
- { return (__r->_M_size >= _S_min_len[__r->_M_depth]); }
-
- static bool _S_is_almost_balanced(_RopeRep* __r)
- { return (__r->_M_depth == 0 ||
- __r->_M_size >= _S_min_len[__r->_M_depth - 1]); }
-
- static bool _S_is_roughly_balanced(_RopeRep* __r)
- { return (__r->_M_depth <= 1 ||
- __r->_M_size >= _S_min_len[__r->_M_depth - 2]); }
-
- // Assumes the result is not empty.
- static _RopeRep* _S_concat_and_set_balanced(_RopeRep* __left,
- _RopeRep* __right)
- {
- _RopeRep* __result = _S_concat(__left, __right);
- if (_S_is_balanced(__result)) __result->_M_is_balanced = true;
- return __result;
- }
-
- // The basic rebalancing operation. Logically copies the
- // rope. The result has refcount of 1. The client will
- // usually decrement the reference count of __r.
- // The result is within height 2 of balanced by the above
- // definition.
- static _RopeRep* _S_balance(_RopeRep* __r);
-
- // Add all unbalanced subtrees to the forest of balanceed trees.
- // Used only by balance.
- static void _S_add_to_forest(_RopeRep*__r, _RopeRep** __forest);
-
- // Add __r to forest, assuming __r is already balanced.
- static void _S_add_leaf_to_forest(_RopeRep* __r, _RopeRep** __forest);
-
- // Print to stdout, exposing structure
- static void _S_dump(_RopeRep* __r, int __indent = 0);
-
- // Return -1, 0, or 1 if __x < __y, __x == __y, or __x > __y resp.
- static int _S_compare(const _RopeRep* __x, const _RopeRep* __y);
-
- public:
- bool empty() const { return 0 == _M_tree_ptr; }
-
- // Comparison member function. This is public only for those
- // clients that need a ternary comparison. Others
- // should use the comparison operators below.
- int compare(const rope& __y) const {
- return _S_compare(_M_tree_ptr, __y._M_tree_ptr);
- }
-
- rope(const _CharT* __s, const allocator_type& __a = allocator_type())
- : _Base(__STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, _S_char_ptr_len(__s),
- __a),__a)
- { }
-
- rope(const _CharT* __s, size_t __len,
- const allocator_type& __a = allocator_type())
- : _Base(__STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __len, __a), __a)
- { }
-
- // Should perhaps be templatized with respect to the iterator type
- // and use Sequence_buffer. (It should perhaps use sequence_buffer
- // even now.)
- rope(const _CharT *__s, const _CharT *__e,
- const allocator_type& __a = allocator_type())
- : _Base(__STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __e - __s, __a), __a)
- { }
-
- rope(const const_iterator& __s, const const_iterator& __e,
- const allocator_type& __a = allocator_type())
- : _Base(_S_substring(__s._M_root, __s._M_current_pos,
- __e._M_current_pos), __a)
- { }
-
- rope(const iterator& __s, const iterator& __e,
- const allocator_type& __a = allocator_type())
- : _Base(_S_substring(__s._M_root, __s._M_current_pos,
- __e._M_current_pos), __a)
- { }
-
- rope(_CharT __c, const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- _CharT* __buf = _Data_allocate(_S_rounded_up_size(1));
-
- construct(__buf, __c);
- __STL_TRY {
- _M_tree_ptr = _S_new_RopeLeaf(__buf, 1, __a);
- }
- __STL_UNWIND(_RopeRep::__STL_FREE_STRING(__buf, 1, __a))
- }
-
- rope(size_t __n, _CharT __c,
- const allocator_type& __a = allocator_type());
-
- rope(const allocator_type& __a = allocator_type())
- : _Base(0, __a) {}
-
- // Construct a rope from a function that can compute its members
- rope(char_producer<_CharT> *__fn, size_t __len, bool __delete_fn,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- _M_tree_ptr = (0 == __len) ?
- 0 : _S_new_RopeFunction(__fn, __len, __delete_fn, __a);
- }
-
- rope(const rope& __x, const allocator_type& __a = allocator_type())
- : _Base(__x._M_tree_ptr, __a)
- {
- _S_ref(_M_tree_ptr);
- }
-
- ~rope()
- {
- _S_unref(_M_tree_ptr);
- }
-
- rope& operator=(const rope& __x)
- {
- _RopeRep* __old = _M_tree_ptr;
-# ifdef __STL_USE_STD_ALLOCATORS
- __stl_assert(get_allocator() == __x.get_allocator());
-# endif
- _M_tree_ptr = __x._M_tree_ptr;
- _S_ref(_M_tree_ptr);
- _S_unref(__old);
- return(*this);
- }
-
- void push_back(_CharT __x)
- {
- _RopeRep* __old = _M_tree_ptr;
- _M_tree_ptr = _S_concat_char_iter(_M_tree_ptr, &__x, 1);
- _S_unref(__old);
- }
-
- void pop_back()
- {
- _RopeRep* __old = _M_tree_ptr;
- _M_tree_ptr =
- _S_substring(_M_tree_ptr, 0, _M_tree_ptr->_M_size - 1);
- _S_unref(__old);
- }
-
- _CharT back() const
- {
- return _S_fetch(_M_tree_ptr, _M_tree_ptr->_M_size - 1);
- }
-
- void push_front(_CharT __x)
- {
- _RopeRep* __old = _M_tree_ptr;
- _RopeRep* __left =
- __STL_ROPE_FROM_UNOWNED_CHAR_PTR(&__x, 1, get_allocator());
- __STL_TRY {
- _M_tree_ptr = _S_concat(__left, _M_tree_ptr);
- _S_unref(__old);
- _S_unref(__left);
- }
- __STL_UNWIND(_S_unref(__left))
- }
-
- void pop_front()
- {
- _RopeRep* __old = _M_tree_ptr;
- _M_tree_ptr = _S_substring(_M_tree_ptr, 1, _M_tree_ptr->_M_size);
- _S_unref(__old);
- }
-
- _CharT front() const
- {
- return _S_fetch(_M_tree_ptr, 0);
- }
-
- void balance()
- {
- _RopeRep* __old = _M_tree_ptr;
- _M_tree_ptr = _S_balance(_M_tree_ptr);
- _S_unref(__old);
- }
-
- void copy(_CharT* __buffer) const {
- destroy(__buffer, __buffer + size());
- _S_flatten(_M_tree_ptr, __buffer);
- }
-
- // This is the copy function from the standard, but
- // with the arguments reordered to make it consistent with the
- // rest of the interface.
- // Note that this guaranteed not to compile if the draft standard
- // order is assumed.
- size_type copy(size_type __pos, size_type __n, _CharT* __buffer) const
- {
- size_t __size = size();
- size_t __len = (__pos + __n > __size? __size - __pos : __n);
-
- destroy(__buffer, __buffer + __len);
- _S_flatten(_M_tree_ptr, __pos, __len, __buffer);
- return __len;
- }
-
- // Print to stdout, exposing structure. May be useful for
- // performance debugging.
- void dump() {
- _S_dump(_M_tree_ptr);
- }
-
- // Convert to 0 terminated string in new allocated memory.
- // Embedded 0s in the input do not terminate the copy.
- const _CharT* c_str() const;
-
- // As above, but lso use the flattened representation as the
- // the new rope representation.
- const _CharT* replace_with_c_str();
-
- // Reclaim memory for the c_str generated flattened string.
- // Intentionally undocumented, since it's hard to say when this
- // is safe for multiple threads.
- void delete_c_str () {
- if (0 == _M_tree_ptr) return;
- if (_RopeRep::_S_leaf == _M_tree_ptr->_M_tag &&
- ((_RopeLeaf*)_M_tree_ptr)->_M_data ==
- _M_tree_ptr->_M_c_string) {
- // Representation shared
- return;
- }
-# ifndef __GC
- _M_tree_ptr->_M_free_c_string();
-# endif
- _M_tree_ptr->_M_c_string = 0;
- }
-
- _CharT operator[] (size_type __pos) const {
- return _S_fetch(_M_tree_ptr, __pos);
- }
-
- _CharT at(size_type __pos) const {
- // if (__pos >= size()) throw out_of_range; // XXX
- return (*this)[__pos];
- }
-
- const_iterator begin() const {
- return(const_iterator(_M_tree_ptr, 0));
- }
-
- // An easy way to get a const iterator from a non-const container.
- const_iterator const_begin() const {
- return(const_iterator(_M_tree_ptr, 0));
- }
-
- const_iterator end() const {
- return(const_iterator(_M_tree_ptr, size()));
- }
-
- const_iterator const_end() const {
- return(const_iterator(_M_tree_ptr, size()));
- }
-
- size_type size() const {
- return(0 == _M_tree_ptr? 0 : _M_tree_ptr->_M_size);
- }
-
- size_type length() const {
- return size();
- }
-
- size_type max_size() const {
- return _S_min_len[_RopeRep::_S_max_rope_depth-1] - 1;
- // Guarantees that the result can be sufficirntly
- // balanced. Longer ropes will probably still work,
- // but it's harder to make guarantees.
- }
-
-# ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
- typedef reverse_iterator<const_iterator> const_reverse_iterator;
-# else /* __STL_CLASS_PARTIAL_SPECIALIZATION */
- typedef reverse_iterator<const_iterator, value_type, const_reference,
- difference_type> const_reverse_iterator;
-# endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
- const_reverse_iterator rbegin() const {
- return const_reverse_iterator(end());
- }
-
- const_reverse_iterator const_rbegin() const {
- return const_reverse_iterator(end());
- }
-
- const_reverse_iterator rend() const {
- return const_reverse_iterator(begin());
- }
-
- const_reverse_iterator const_rend() const {
- return const_reverse_iterator(begin());
- }
-
- friend rope<_CharT,_Alloc>
- operator+ __STL_NULL_TMPL_ARGS (const rope<_CharT,_Alloc>& __left,
- const rope<_CharT,_Alloc>& __right);
-
- friend rope<_CharT,_Alloc>
- operator+ __STL_NULL_TMPL_ARGS (const rope<_CharT,_Alloc>& __left,
- const _CharT* __right);
-
- friend rope<_CharT,_Alloc>
- operator+ __STL_NULL_TMPL_ARGS (const rope<_CharT,_Alloc>& __left,
- _CharT __right);
-
- // The symmetric cases are intentionally omitted, since they're presumed
- // to be less common, and we don't handle them as well.
-
- // The following should really be templatized.
- // The first argument should be an input iterator or
- // forward iterator with value_type _CharT.
- rope& append(const _CharT* __iter, size_t __n) {
- _RopeRep* __result =
- _S_destr_concat_char_iter(_M_tree_ptr, __iter, __n);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- return *this;
- }
-
- rope& append(const _CharT* __c_string) {
- size_t __len = _S_char_ptr_len(__c_string);
- append(__c_string, __len);
- return(*this);
- }
-
- rope& append(const _CharT* __s, const _CharT* __e) {
- _RopeRep* __result =
- _S_destr_concat_char_iter(_M_tree_ptr, __s, __e - __s);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- return *this;
- }
-
- rope& append(const_iterator __s, const_iterator __e) {
- __stl_assert(__s._M_root == __e._M_root);
-# ifdef __STL_USE_STD_ALLOCATORS
- __stl_assert(get_allocator() == __s._M_root->get_allocator());
-# endif
- _Self_destruct_ptr __appendee(_S_substring(
- __s._M_root, __s._M_current_pos, __e._M_current_pos));
- _RopeRep* __result =
- _S_concat(_M_tree_ptr, (_RopeRep*)__appendee);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- return *this;
- }
-
- rope& append(_CharT __c) {
- _RopeRep* __result =
- _S_destr_concat_char_iter(_M_tree_ptr, &__c, 1);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- return *this;
- }
-
- rope& append() { return append(_CharT()); } // XXX why?
-
- rope& append(const rope& __y) {
-# ifdef __STL_USE_STD_ALLOCATORS
- __stl_assert(__y.get_allocator() == get_allocator());
-# endif
- _RopeRep* __result = _S_concat(_M_tree_ptr, __y._M_tree_ptr);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- return *this;
- }
-
- rope& append(size_t __n, _CharT __c) {
- rope<_CharT,_Alloc> __last(__n, __c);
- return append(__last);
- }
-
- void swap(rope& __b) {
-# ifdef __STL_USE_STD_ALLOCATORS
- __stl_assert(get_allocator() == __b.get_allocator());
-# endif
- _RopeRep* __tmp = _M_tree_ptr;
- _M_tree_ptr = __b._M_tree_ptr;
- __b._M_tree_ptr = __tmp;
- }
-
-
- protected:
- // Result is included in refcount.
- static _RopeRep* replace(_RopeRep* __old, size_t __pos1,
- size_t __pos2, _RopeRep* __r) {
- if (0 == __old) { _S_ref(__r); return __r; }
- _Self_destruct_ptr __left(
- _S_substring(__old, 0, __pos1));
- _Self_destruct_ptr __right(
- _S_substring(__old, __pos2, __old->_M_size));
- _RopeRep* __result;
-
-# ifdef __STL_USE_STD_ALLOCATORS
- __stl_assert(__old->get_allocator() == __r->get_allocator());
-# endif
- if (0 == __r) {
- __result = _S_concat(__left, __right);
- } else {
- _Self_destruct_ptr __left_result(_S_concat(__left, __r));
- __result = _S_concat(__left_result, __right);
- }
- return __result;
- }
-
- public:
- void insert(size_t __p, const rope& __r) {
- _RopeRep* __result =
- replace(_M_tree_ptr, __p, __p, __r._M_tree_ptr);
-# ifdef __STL_USE_STD_ALLOCATORS
- __stl_assert(get_allocator() == __r.get_allocator());
-# endif
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- }
-
- void insert(size_t __p, size_t __n, _CharT __c) {
- rope<_CharT,_Alloc> __r(__n,__c);
- insert(__p, __r);
- }
-
- void insert(size_t __p, const _CharT* __i, size_t __n) {
- _Self_destruct_ptr __left(_S_substring(_M_tree_ptr, 0, __p));
- _Self_destruct_ptr __right(_S_substring(_M_tree_ptr, __p, size()));
- _Self_destruct_ptr __left_result(
- _S_concat_char_iter(__left, __i, __n));
- _RopeRep* __result = _S_concat(__left_result, __right);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- }
-
- void insert(size_t __p, const _CharT* __c_string) {
- insert(__p, __c_string, _S_char_ptr_len(__c_string));
- }
-
- void insert(size_t __p, _CharT __c) {
- insert(__p, &__c, 1);
- }
-
- void insert(size_t __p) {
- _CharT __c = _CharT();
- insert(__p, &__c, 1);
- }
-
- void insert(size_t __p, const _CharT* __i, const _CharT* __j) {
- rope __r(__i, __j);
- insert(__p, __r);
- }
-
- void insert(size_t __p, const const_iterator& __i,
- const const_iterator& __j) {
- rope __r(__i, __j);
- insert(__p, __r);
- }
-
- void insert(size_t __p, const iterator& __i,
- const iterator& __j) {
- rope __r(__i, __j);
- insert(__p, __r);
- }
-
- // (position, length) versions of replace operations:
-
- void replace(size_t __p, size_t __n, const rope& __r) {
- _RopeRep* __result =
- replace(_M_tree_ptr, __p, __p + __n, __r._M_tree_ptr);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- }
-
- void replace(size_t __p, size_t __n,
- const _CharT* __i, size_t __i_len) {
- rope __r(__i, __i_len);
- replace(__p, __n, __r);
- }
-
- void replace(size_t __p, size_t __n, _CharT __c) {
- rope __r(__c);
- replace(__p, __n, __r);
- }
-
- void replace(size_t __p, size_t __n, const _CharT* __c_string) {
- rope __r(__c_string);
- replace(__p, __n, __r);
- }
-
- void replace(size_t __p, size_t __n,
- const _CharT* __i, const _CharT* __j) {
- rope __r(__i, __j);
- replace(__p, __n, __r);
- }
-
- void replace(size_t __p, size_t __n,
- const const_iterator& __i, const const_iterator& __j) {
- rope __r(__i, __j);
- replace(__p, __n, __r);
- }
-
- void replace(size_t __p, size_t __n,
- const iterator& __i, const iterator& __j) {
- rope __r(__i, __j);
- replace(__p, __n, __r);
- }
-
- // Single character variants:
- void replace(size_t __p, _CharT __c) {
- iterator __i(this, __p);
- *__i = __c;
- }
-
- void replace(size_t __p, const rope& __r) {
- replace(__p, 1, __r);
- }
-
- void replace(size_t __p, const _CharT* __i, size_t __i_len) {
- replace(__p, 1, __i, __i_len);
- }
-
- void replace(size_t __p, const _CharT* __c_string) {
- replace(__p, 1, __c_string);
- }
-
- void replace(size_t __p, const _CharT* __i, const _CharT* __j) {
- replace(__p, 1, __i, __j);
- }
-
- void replace(size_t __p, const const_iterator& __i,
- const const_iterator& __j) {
- replace(__p, 1, __i, __j);
- }
-
- void replace(size_t __p, const iterator& __i,
- const iterator& __j) {
- replace(__p, 1, __i, __j);
- }
-
- // Erase, (position, size) variant.
- void erase(size_t __p, size_t __n) {
- _RopeRep* __result = replace(_M_tree_ptr, __p, __p + __n, 0);
- _S_unref(_M_tree_ptr);
- _M_tree_ptr = __result;
- }
-
- // Erase, single character
- void erase(size_t __p) {
- erase(__p, __p + 1);
- }
-
- // Insert, iterator variants.
- iterator insert(const iterator& __p, const rope& __r)
- { insert(__p.index(), __r); return __p; }
- iterator insert(const iterator& __p, size_t __n, _CharT __c)
- { insert(__p.index(), __n, __c); return __p; }
- iterator insert(const iterator& __p, _CharT __c)
- { insert(__p.index(), __c); return __p; }
- iterator insert(const iterator& __p )
- { insert(__p.index()); return __p; }
- iterator insert(const iterator& __p, const _CharT* c_string)
- { insert(__p.index(), c_string); return __p; }
- iterator insert(const iterator& __p, const _CharT* __i, size_t __n)
- { insert(__p.index(), __i, __n); return __p; }
- iterator insert(const iterator& __p, const _CharT* __i,
- const _CharT* __j)
- { insert(__p.index(), __i, __j); return __p; }
- iterator insert(const iterator& __p,
- const const_iterator& __i, const const_iterator& __j)
- { insert(__p.index(), __i, __j); return __p; }
- iterator insert(const iterator& __p,
- const iterator& __i, const iterator& __j)
- { insert(__p.index(), __i, __j); return __p; }
-
- // Replace, range variants.
- void replace(const iterator& __p, const iterator& __q,
- const rope& __r)
- { replace(__p.index(), __q.index() - __p.index(), __r); }
- void replace(const iterator& __p, const iterator& __q, _CharT __c)
- { replace(__p.index(), __q.index() - __p.index(), __c); }
- void replace(const iterator& __p, const iterator& __q,
- const _CharT* __c_string)
- { replace(__p.index(), __q.index() - __p.index(), __c_string); }
- void replace(const iterator& __p, const iterator& __q,
- const _CharT* __i, size_t __n)
- { replace(__p.index(), __q.index() - __p.index(), __i, __n); }
- void replace(const iterator& __p, const iterator& __q,
- const _CharT* __i, const _CharT* __j)
- { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
- void replace(const iterator& __p, const iterator& __q,
- const const_iterator& __i, const const_iterator& __j)
- { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
- void replace(const iterator& __p, const iterator& __q,
- const iterator& __i, const iterator& __j)
- { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
-
- // Replace, iterator variants.
- void replace(const iterator& __p, const rope& __r)
- { replace(__p.index(), __r); }
- void replace(const iterator& __p, _CharT __c)
- { replace(__p.index(), __c); }
- void replace(const iterator& __p, const _CharT* __c_string)
- { replace(__p.index(), __c_string); }
- void replace(const iterator& __p, const _CharT* __i, size_t __n)
- { replace(__p.index(), __i, __n); }
- void replace(const iterator& __p, const _CharT* __i, const _CharT* __j)
- { replace(__p.index(), __i, __j); }
- void replace(const iterator& __p, const_iterator __i,
- const_iterator __j)
- { replace(__p.index(), __i, __j); }
- void replace(const iterator& __p, iterator __i, iterator __j)
- { replace(__p.index(), __i, __j); }
-
- // Iterator and range variants of erase
- iterator erase(const iterator& __p, const iterator& __q) {
- size_t __p_index = __p.index();
- erase(__p_index, __q.index() - __p_index);
- return iterator(this, __p_index);
- }
- iterator erase(const iterator& __p) {
- size_t __p_index = __p.index();
- erase(__p_index, 1);
- return iterator(this, __p_index);
- }
-
- rope substr(size_t __start, size_t __len = 1) const {
- return rope<_CharT,_Alloc>(
- _S_substring(_M_tree_ptr, __start, __start + __len));
- }
-
- rope substr(iterator __start, iterator __end) const {
- return rope<_CharT,_Alloc>(
- _S_substring(_M_tree_ptr, __start.index(), __end.index()));
- }
-
- rope substr(iterator __start) const {
- size_t __pos = __start.index();
- return rope<_CharT,_Alloc>(
- _S_substring(_M_tree_ptr, __pos, __pos + 1));
- }
-
- rope substr(const_iterator __start, const_iterator __end) const {
- // This might eventually take advantage of the cache in the
- // iterator.
- return rope<_CharT,_Alloc>(
- _S_substring(_M_tree_ptr, __start.index(), __end.index()));
- }
-
- rope<_CharT,_Alloc> substr(const_iterator __start) {
- size_t __pos = __start.index();
- return rope<_CharT,_Alloc>(
- _S_substring(_M_tree_ptr, __pos, __pos + 1));
- }
-
- static const size_type npos;
-
- size_type find(_CharT __c, size_type __pos = 0) const;
- size_type find(_CharT* __s, size_type __pos = 0) const {
- size_type __result_pos;
- const_iterator __result = search(const_begin() + __pos, const_end(),
- __s, __s + _S_char_ptr_len(__s));
- __result_pos = __result.index();
-# ifndef __STL_OLD_ROPE_SEMANTICS
- if (__result_pos == size()) __result_pos = npos;
-# endif
- return __result_pos;
- }
-
- iterator mutable_begin() {
- return(iterator(this, 0));
- }
-
- iterator mutable_end() {
- return(iterator(this, size()));
- }
-
-# ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
- typedef reverse_iterator<iterator> reverse_iterator;
-# else /* __STL_CLASS_PARTIAL_SPECIALIZATION */
- typedef reverse_iterator<iterator, value_type, reference,
- difference_type> reverse_iterator;
-# endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
- reverse_iterator mutable_rbegin() {
- return reverse_iterator(mutable_end());
- }
-
- reverse_iterator mutable_rend() {
- return reverse_iterator(mutable_begin());
- }
-
- reference mutable_reference_at(size_type __pos) {
- return reference(this, __pos);
- }
-
-# ifdef __STD_STUFF
- reference operator[] (size_type __pos) {
- return _char_ref_proxy(this, __pos);
- }
-
- reference at(size_type __pos) {
- // if (__pos >= size()) throw out_of_range; // XXX
- return (*this)[__pos];
- }
-
- void resize(size_type __n, _CharT __c) {}
- void resize(size_type __n) {}
- void reserve(size_type __res_arg = 0) {}
- size_type capacity() const {
- return max_size();
- }
-
- // Stuff below this line is dangerous because it's error prone.
- // I would really like to get rid of it.
- // copy function with funny arg ordering.
- size_type copy(_CharT* __buffer, size_type __n,
- size_type __pos = 0) const {
- return copy(__pos, __n, __buffer);
- }
-
- iterator end() { return mutable_end(); }
-
- iterator begin() { return mutable_begin(); }
-
- reverse_iterator rend() { return mutable_rend(); }
-
- reverse_iterator rbegin() { return mutable_rbegin(); }
-
-# else
-
- const_iterator end() { return const_end(); }
-
- const_iterator begin() { return const_begin(); }
-
- const_reverse_iterator rend() { return const_rend(); }
-
- const_reverse_iterator rbegin() { return const_rbegin(); }
-
-# endif
-
-};
-
-template <class _CharT, class _Alloc>
-const rope<_CharT, _Alloc>::size_type rope<_CharT, _Alloc>::npos =
- (size_type)(-1);
-
-template <class _CharT, class _Alloc>
-inline bool operator== (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y) {
- return (__x._M_current_pos == __y._M_current_pos &&
- __x._M_root == __y._M_root);
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator< (const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y) {
- return (__x._M_current_pos < __y._M_current_pos);
-}
-
-template <class _CharT, class _Alloc>
-inline ptrdiff_t operator-(const _Rope_const_iterator<_CharT,_Alloc>& __x,
- const _Rope_const_iterator<_CharT,_Alloc>& __y) {
- return (ptrdiff_t)__x._M_current_pos - (ptrdiff_t)__y._M_current_pos;
-}
-
-template <class _CharT, class _Alloc>
-inline _Rope_const_iterator<_CharT,_Alloc>
-operator-(const _Rope_const_iterator<_CharT,_Alloc>& __x, ptrdiff_t __n) {
- return _Rope_const_iterator<_CharT,_Alloc>(
- __x._M_root, __x._M_current_pos - __n);
-}
-
-template <class _CharT, class _Alloc>
-inline _Rope_const_iterator<_CharT,_Alloc>
-operator+(const _Rope_const_iterator<_CharT,_Alloc>& __x, ptrdiff_t __n) {
- return _Rope_const_iterator<_CharT,_Alloc>(
- __x._M_root, __x._M_current_pos + __n);
-}
-
-template <class _CharT, class _Alloc>
-inline _Rope_const_iterator<_CharT,_Alloc>
-operator+(ptrdiff_t __n, const _Rope_const_iterator<_CharT,_Alloc>& __x) {
- return _Rope_const_iterator<_CharT,_Alloc>(
- __x._M_root, __x._M_current_pos + __n);
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator== (const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y) {
- return (__x._M_current_pos == __y._M_current_pos &&
- __x._M_root_rope == __y._M_root_rope);
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator< (const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y) {
- return (__x._M_current_pos < __y._M_current_pos);
-}
-
-template <class _CharT, class _Alloc>
-inline ptrdiff_t operator-(const _Rope_iterator<_CharT,_Alloc>& __x,
- const _Rope_iterator<_CharT,_Alloc>& __y) {
- return (ptrdiff_t)__x._M_current_pos - (ptrdiff_t)__y._M_current_pos;
-}
-
-template <class _CharT, class _Alloc>
-inline _Rope_iterator<_CharT,_Alloc>
-operator-(const _Rope_iterator<_CharT,_Alloc>& __x,
- ptrdiff_t __n) {
- return _Rope_iterator<_CharT,_Alloc>(
- __x._M_root_rope, __x._M_current_pos - __n);
-}
-
-template <class _CharT, class _Alloc>
-inline _Rope_iterator<_CharT,_Alloc>
-operator+(const _Rope_iterator<_CharT,_Alloc>& __x,
- ptrdiff_t __n) {
- return _Rope_iterator<_CharT,_Alloc>(
- __x._M_root_rope, __x._M_current_pos + __n);
-}
-
-template <class _CharT, class _Alloc>
-inline _Rope_iterator<_CharT,_Alloc>
-operator+(ptrdiff_t __n, const _Rope_iterator<_CharT,_Alloc>& __x) {
- return _Rope_iterator<_CharT,_Alloc>(
- __x._M_root_rope, __x._M_current_pos + __n);
-}
-
-template <class _CharT, class _Alloc>
-inline
-rope<_CharT,_Alloc>
-operator+ (const rope<_CharT,_Alloc>& __left,
- const rope<_CharT,_Alloc>& __right)
-{
-# ifdef __STL_USE_STD_ALLOCATORS
- __stl_assert(__left.get_allocator() == __right.get_allocator());
-# endif
- return rope<_CharT,_Alloc>(
- rope<_CharT,_Alloc>::_S_concat(__left._M_tree_ptr, __right._M_tree_ptr));
- // Inlining this should make it possible to keep __left and
- // __right in registers.
-}
-
-template <class _CharT, class _Alloc>
-inline
-rope<_CharT,_Alloc>&
-operator+= (rope<_CharT,_Alloc>& __left,
- const rope<_CharT,_Alloc>& __right)
-{
- __left.append(__right);
- return __left;
-}
-
-template <class _CharT, class _Alloc>
-inline
-rope<_CharT,_Alloc>
-operator+ (const rope<_CharT,_Alloc>& __left,
- const _CharT* __right) {
- size_t __rlen = rope<_CharT,_Alloc>::_S_char_ptr_len(__right);
- return rope<_CharT,_Alloc>(
- rope<_CharT,_Alloc>::_S_concat_char_iter(
- __left._M_tree_ptr, __right, __rlen));
-}
-
-template <class _CharT, class _Alloc>
-inline
-rope<_CharT,_Alloc>&
-operator+= (rope<_CharT,_Alloc>& __left,
- const _CharT* __right) {
- __left.append(__right);
- return __left;
-}
-
-template <class _CharT, class _Alloc>
-inline
-rope<_CharT,_Alloc>
-operator+ (const rope<_CharT,_Alloc>& __left, _CharT __right) {
- return rope<_CharT,_Alloc>(
- rope<_CharT,_Alloc>::_S_concat_char_iter(
- __left._M_tree_ptr, &__right, 1));
-}
-
-template <class _CharT, class _Alloc>
-inline
-rope<_CharT,_Alloc>&
-operator+= (rope<_CharT,_Alloc>& __left, _CharT __right) {
- __left.append(__right);
- return __left;
-}
-
-template <class _CharT, class _Alloc>
-bool
-operator< (const rope<_CharT,_Alloc>& __left,
- const rope<_CharT,_Alloc>& __right) {
- return __left.compare(__right) < 0;
-}
-
-template <class _CharT, class _Alloc>
-bool
-operator== (const rope<_CharT,_Alloc>& __left,
- const rope<_CharT,_Alloc>& __right) {
- return __left.compare(__right) == 0;
-}
-
-template <class _CharT, class _Alloc>
-inline bool operator== (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x,
- const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y) {
- return (__x._M_pos == __y._M_pos && __x._M_root == __y._M_root);
-}
-
-template<class _CharT, class _Alloc>
-ostream& operator<< (ostream& __o, const rope<_CharT,_Alloc>& __r);
-
-typedef rope<char> crope;
-typedef rope<wchar_t> wrope;
-
-inline crope::reference __mutable_reference_at(crope& __c, size_t __i)
-{
- return __c.mutable_reference_at(__i);
-}
-
-inline wrope::reference __mutable_reference_at(wrope& __c, size_t __i)
-{
- return __c.mutable_reference_at(__i);
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _CharT, class _Alloc>
-inline void swap(rope<_CharT,_Alloc>& __x, rope<_CharT,_Alloc>& __y) {
- __x.swap(__y);
-}
-
-#else
-
-inline void swap(crope __x, crope __y) { __x.swap(__y); }
-inline void swap(wrope __x, wrope __y) { __x.swap(__y); }
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-// Hash functions should probably be revisited later:
-__STL_TEMPLATE_NULL struct hash<crope>
-{
- size_t operator()(const crope& __str) const
- {
- size_t __size = __str.size();
-
- if (0 == __size) return 0;
- return 13*__str[0] + 5*__str[__size - 1] + __size;
- }
-};
-
-
-__STL_TEMPLATE_NULL struct hash<wrope>
-{
- size_t operator()(const wrope& __str) const
- {
- size_t __size = __str.size();
-
- if (0 == __size) return 0;
- return 13*__str[0] + 5*__str[__size - 1] + __size;
- }
-};
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1174
-#endif
-
-__STL_END_NAMESPACE
-
-# include <ropeimpl.h>
-
-# endif /* __SGI_STL_INTERNAL_ROPE_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_set.h b/contrib/libstdc++/stl/stl_set.h
deleted file mode 100644
index 003069c..0000000
--- a/contrib/libstdc++/stl/stl_set.h
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_SET_H
-#define __SGI_STL_INTERNAL_SET_H
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1174
-#pragma set woff 1375
-#endif
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _Key, class _Compare = less<_Key>,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Key) >
-#else
-template <class _Key, class _Compare,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Key) >
-#endif
-class set {
-public:
- // typedefs:
-
- typedef _Key key_type;
- typedef _Key value_type;
- typedef _Compare key_compare;
- typedef _Compare value_compare;
-private:
- typedef _Rb_tree<key_type, value_type,
- _Identity<value_type>, key_compare, _Alloc> _Rep_type;
- _Rep_type _M_t; // red-black tree representing set
-public:
- typedef typename _Rep_type::const_pointer pointer;
- typedef typename _Rep_type::const_pointer const_pointer;
- typedef typename _Rep_type::const_reference reference;
- typedef typename _Rep_type::const_reference const_reference;
- typedef typename _Rep_type::const_iterator iterator;
- typedef typename _Rep_type::const_iterator const_iterator;
- typedef typename _Rep_type::const_reverse_iterator reverse_iterator;
- typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
- typedef typename _Rep_type::size_type size_type;
- typedef typename _Rep_type::difference_type difference_type;
- typedef typename _Rep_type::allocator_type allocator_type;
-
- // allocation/deallocation
-
- set() : _M_t(_Compare(), allocator_type()) {}
- explicit set(const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) {}
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- set(_InputIterator __first, _InputIterator __last)
- : _M_t(_Compare(), allocator_type())
- { _M_t.insert_unique(__first, __last); }
-
- template <class _InputIterator>
- set(_InputIterator __first, _InputIterator __last, const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }
-#else
- set(const value_type* __first, const value_type* __last)
- : _M_t(_Compare(), allocator_type())
- { _M_t.insert_unique(__first, __last); }
-
- set(const value_type* __first,
- const value_type* __last, const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }
-
- set(const_iterator __first, const_iterator __last)
- : _M_t(_Compare(), allocator_type())
- { _M_t.insert_unique(__first, __last); }
-
- set(const_iterator __first, const_iterator __last, const _Compare& __comp,
- const allocator_type& __a = allocator_type())
- : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); }
-#endif /* __STL_MEMBER_TEMPLATES */
-
- set(const set<_Key,_Compare,_Alloc>& __x) : _M_t(__x._M_t) {}
- set<_Key,_Compare,_Alloc>& operator=(const set<_Key, _Compare, _Alloc>& __x)
- {
- _M_t = __x._M_t;
- return *this;
- }
-
- // accessors:
-
- key_compare key_comp() const { return _M_t.key_comp(); }
- value_compare value_comp() const { return _M_t.key_comp(); }
- allocator_type get_allocator() const { return _M_t.get_allocator(); }
-
- iterator begin() const { return _M_t.begin(); }
- iterator end() const { return _M_t.end(); }
- reverse_iterator rbegin() const { return _M_t.rbegin(); }
- reverse_iterator rend() const { return _M_t.rend(); }
- bool empty() const { return _M_t.empty(); }
- size_type size() const { return _M_t.size(); }
- size_type max_size() const { return _M_t.max_size(); }
- void swap(set<_Key,_Compare,_Alloc>& __x) { _M_t.swap(__x._M_t); }
-
- // insert/erase
- pair<iterator,bool> insert(const value_type& __x) {
- pair<typename _Rep_type::iterator, bool> __p = _M_t.insert_unique(__x);
- return pair<iterator, bool>(__p.first, __p.second);
- }
- iterator insert(iterator __position, const value_type& __x) {
- typedef typename _Rep_type::iterator _Rep_iterator;
- return _M_t.insert_unique((_Rep_iterator&)__position, __x);
- }
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- void insert(_InputIterator __first, _InputIterator __last) {
- _M_t.insert_unique(__first, __last);
- }
-#else
- void insert(const_iterator __first, const_iterator __last) {
- _M_t.insert_unique(__first, __last);
- }
- void insert(const value_type* __first, const value_type* __last) {
- _M_t.insert_unique(__first, __last);
- }
-#endif /* __STL_MEMBER_TEMPLATES */
- void erase(iterator __position) {
- typedef typename _Rep_type::iterator _Rep_iterator;
- _M_t.erase((_Rep_iterator&)__position);
- }
- size_type erase(const key_type& __x) {
- return _M_t.erase(__x);
- }
- void erase(iterator __first, iterator __last) {
- typedef typename _Rep_type::iterator _Rep_iterator;
- _M_t.erase((_Rep_iterator&)__first, (_Rep_iterator&)__last);
- }
- void clear() { _M_t.clear(); }
-
- // set operations:
-
- iterator find(const key_type& __x) const { return _M_t.find(__x); }
- size_type count(const key_type& __x) const { return _M_t.count(__x); }
- iterator lower_bound(const key_type& __x) const {
- return _M_t.lower_bound(__x);
- }
- iterator upper_bound(const key_type& __x) const {
- return _M_t.upper_bound(__x);
- }
- pair<iterator,iterator> equal_range(const key_type& __x) const {
- return _M_t.equal_range(__x);
- }
- friend bool operator== __STL_NULL_TMPL_ARGS (const set&, const set&);
- friend bool operator< __STL_NULL_TMPL_ARGS (const set&, const set&);
-};
-
-template <class _Key, class _Compare, class _Alloc>
-inline bool operator==(const set<_Key,_Compare,_Alloc>& __x,
- const set<_Key,_Compare,_Alloc>& __y) {
- return __x._M_t == __y._M_t;
-}
-
-template <class _Key, class _Compare, class _Alloc>
-inline bool operator<(const set<_Key,_Compare,_Alloc>& __x,
- const set<_Key,_Compare,_Alloc>& __y) {
- return __x._M_t < __y._M_t;
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Key, class _Compare, class _Alloc>
-inline void swap(set<_Key,_Compare,_Alloc>& __x,
- set<_Key,_Compare,_Alloc>& __y) {
- __x.swap(__y);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1174
-#pragma reset woff 1375
-#endif
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_SET_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_slist.h b/contrib/libstdc++/stl/stl_slist.h
deleted file mode 100644
index 6da234d..0000000
--- a/contrib/libstdc++/stl/stl_slist.h
+++ /dev/null
@@ -1,945 +0,0 @@
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_SLIST_H
-#define __SGI_STL_INTERNAL_SLIST_H
-
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1174
-#pragma set woff 1375
-#endif
-
-struct _Slist_node_base
-{
- _Slist_node_base* _M_next;
-};
-
-inline _Slist_node_base*
-__slist_make_link(_Slist_node_base* __prev_node,
- _Slist_node_base* __new_node)
-{
- __new_node->_M_next = __prev_node->_M_next;
- __prev_node->_M_next = __new_node;
- return __new_node;
-}
-
-inline _Slist_node_base*
-__slist_previous(_Slist_node_base* __head,
- const _Slist_node_base* __node)
-{
- while (__head && __head->_M_next != __node)
- __head = __head->_M_next;
- return __head;
-}
-
-inline const _Slist_node_base*
-__slist_previous(const _Slist_node_base* __head,
- const _Slist_node_base* __node)
-{
- while (__head && __head->_M_next != __node)
- __head = __head->_M_next;
- return __head;
-}
-
-inline void __slist_splice_after(_Slist_node_base* __pos,
- _Slist_node_base* __before_first,
- _Slist_node_base* __before_last)
-{
- if (__pos != __before_first && __pos != __before_last) {
- _Slist_node_base* __first = __before_first->_M_next;
- _Slist_node_base* __after = __pos->_M_next;
- __before_first->_M_next = __before_last->_M_next;
- __pos->_M_next = __first;
- __before_last->_M_next = __after;
- }
-}
-
-inline _Slist_node_base* __slist_reverse(_Slist_node_base* __node)
-{
- _Slist_node_base* __result = __node;
- __node = __node->_M_next;
- __result->_M_next = 0;
- while(__node) {
- _Slist_node_base* __next = __node->_M_next;
- __node->_M_next = __result;
- __result = __node;
- __node = __next;
- }
- return __result;
-}
-
-inline size_t __slist_size(_Slist_node_base* __node)
-{
- size_t __result = 0;
- for ( ; __node != 0; __node = __node->_M_next)
- ++__result;
- return __result;
-}
-
-template <class _Tp>
-struct _Slist_node : public _Slist_node_base
-{
- _Tp _M_data;
-};
-
-struct _Slist_iterator_base
-{
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef forward_iterator_tag iterator_category;
-
- _Slist_node_base* _M_node;
-
- _Slist_iterator_base(_Slist_node_base* __x) : _M_node(__x) {}
- void _M_incr() { _M_node = _M_node->_M_next; }
-
- bool operator==(const _Slist_iterator_base& __x) const {
- return _M_node == __x._M_node;
- }
- bool operator!=(const _Slist_iterator_base& __x) const {
- return _M_node != __x._M_node;
- }
-};
-
-template <class _Tp, class _Ref, class _Ptr>
-struct _Slist_iterator : public _Slist_iterator_base
-{
- typedef _Slist_iterator<_Tp, _Tp&, _Tp*> iterator;
- typedef _Slist_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;
- typedef _Slist_iterator<_Tp, _Ref, _Ptr> _Self;
-
- typedef _Tp value_type;
- typedef _Ptr pointer;
- typedef _Ref reference;
- typedef _Slist_node<_Tp> _Node;
-
- _Slist_iterator(_Node* __x) : _Slist_iterator_base(__x) {}
- _Slist_iterator() : _Slist_iterator_base(0) {}
- _Slist_iterator(const iterator& __x) : _Slist_iterator_base(__x._M_node) {}
-
- reference operator*() const { return ((_Node*) _M_node)->_M_data; }
-#ifndef __SGI_STL_NO_ARROW_OPERATOR
- pointer operator->() const { return &(operator*()); }
-#endif /* __SGI_STL_NO_ARROW_OPERATOR */
-
- _Self& operator++()
- {
- _M_incr();
- return *this;
- }
- _Self operator++(int)
- {
- _Self __tmp = *this;
- _M_incr();
- return __tmp;
- }
-};
-
-#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-inline ptrdiff_t* distance_type(const _Slist_iterator_base&) {
- return 0;
-}
-
-inline forward_iterator_tag iterator_category(const _Slist_iterator_base&) {
- return forward_iterator_tag();
-}
-
-template <class _Tp, class _Ref, class _Ptr>
-inline _Tp* value_type(const _Slist_iterator<_Tp, _Ref, _Ptr>&) {
- return 0;
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-// Base class that encapsulates details of allocators. Three cases:
-// an ordinary standard-conforming allocator, a standard-conforming
-// allocator with no non-static data, and an SGI-style allocator.
-// This complexity is necessary only because we're worrying about backward
-// compatibility and because we want to avoid wasting storage on an
-// allocator instance if it isn't necessary.
-
-#ifdef __STL_USE_STD_ALLOCATORS
-
-// Base for general standard-conforming allocators.
-template <class _Tp, class _Allocator, bool _IsStatic>
-class _Slist_alloc_base {
-public:
- typedef typename _Alloc_traits<_Tp,_Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return _M_node_allocator; }
-
- _Slist_alloc_base(const allocator_type& __a) : _M_node_allocator(__a) {}
-
-protected:
- _Slist_node<_Tp>* _M_get_node()
- { return _M_node_allocator.allocate(1); }
- void _M_put_node(_Slist_node<_Tp>* __p)
- { _M_node_allocator.deallocate(__p, 1); }
-
-protected:
- typename _Alloc_traits<_Slist_node<_Tp>,_Allocator>::allocator_type
- _M_node_allocator;
- _Slist_node_base _M_head;
-};
-
-// Specialization for instanceless allocators.
-template <class _Tp, class _Allocator>
-class _Slist_alloc_base<_Tp,_Allocator, true> {
-public:
- typedef typename _Alloc_traits<_Tp,_Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
-
- _Slist_alloc_base(const allocator_type&) {}
-
-protected:
- typedef typename _Alloc_traits<_Slist_node<_Tp>, _Allocator>::_Alloc_type
- _Alloc_type;
- _Slist_node<_Tp>* _M_get_node() { return _Alloc_type::allocate(1); }
- void _M_put_node(_Slist_node<_Tp>* __p) { _Alloc_type::deallocate(__p, 1); }
-
-protected:
- _Slist_node_base _M_head;
-};
-
-
-template <class _Tp, class _Alloc>
-struct _Slist_base
- : public _Slist_alloc_base<_Tp, _Alloc,
- _Alloc_traits<_Tp, _Alloc>::_S_instanceless>
-{
- typedef _Slist_alloc_base<_Tp, _Alloc,
- _Alloc_traits<_Tp, _Alloc>::_S_instanceless>
- _Base;
- typedef typename _Base::allocator_type allocator_type;
-
- _Slist_base(const allocator_type& __a) : _Base(__a) { _M_head._M_next = 0; }
- ~_Slist_base() { _M_erase_after(&_M_head, 0); }
-
-protected:
-
- _Slist_node_base* _M_erase_after(_Slist_node_base* __pos)
- {
- _Slist_node<_Tp>* __next = (_Slist_node<_Tp>*) (__pos->_M_next);
- _Slist_node_base* __next_next = __next->_M_next;
- __pos->_M_next = __next_next;
- destroy(&__next->_M_data);
- _M_put_node(__next);
- return __next_next;
- }
- _Slist_node_base* _M_erase_after(_Slist_node_base*, _Slist_node_base*);
-};
-
-#else /* __STL_USE_STD_ALLOCATORS */
-
-template <class _Tp, class _Alloc>
-struct _Slist_base {
- typedef _Alloc allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
-
- _Slist_base(const allocator_type&) { _M_head._M_next = 0; }
- ~_Slist_base() { _M_erase_after(&_M_head, 0); }
-
-protected:
- typedef simple_alloc<_Slist_node<_Tp>, _Alloc> _Alloc_type;
- _Slist_node<_Tp>* _M_get_node() { return _Alloc_type::allocate(1); }
- void _M_put_node(_Slist_node<_Tp>* __p) { _Alloc_type::deallocate(__p, 1); }
-
- _Slist_node_base* _M_erase_after(_Slist_node_base* __pos)
- {
- _Slist_node<_Tp>* __next = (_Slist_node<_Tp>*) (__pos->_M_next);
- _Slist_node_base* __next_next = __next->_M_next;
- __pos->_M_next = __next_next;
- destroy(&__next->_M_data);
- _M_put_node(__next);
- return __next_next;
- }
- _Slist_node_base* _M_erase_after(_Slist_node_base*, _Slist_node_base*);
-
-protected:
- _Slist_node_base _M_head;
-};
-
-#endif /* __STL_USE_STD_ALLOCATORS */
-
-template <class _Tp, class _Alloc>
-_Slist_node_base*
-_Slist_base<_Tp,_Alloc>::_M_erase_after(_Slist_node_base* __before_first,
- _Slist_node_base* __last_node) {
- _Slist_node<_Tp>* __cur = (_Slist_node<_Tp>*) (__before_first->_M_next);
- while (__cur != __last_node) {
- _Slist_node<_Tp>* __tmp = __cur;
- __cur = (_Slist_node<_Tp>*) __cur->_M_next;
- destroy(&__tmp->_M_data);
- _M_put_node(__tmp);
- }
- __before_first->_M_next = __last_node;
- return __last_node;
-}
-
-template <class _Tp, class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
-class slist : private _Slist_base<_Tp,_Alloc>
-{
-private:
- typedef _Slist_base<_Tp,_Alloc> _Base;
-public:
- typedef _Tp value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
-
- typedef _Slist_iterator<_Tp, _Tp&, _Tp*> iterator;
- typedef _Slist_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;
-
- typedef typename _Base::allocator_type allocator_type;
- allocator_type get_allocator() const { return _Base::get_allocator(); }
-
-private:
- typedef _Slist_node<_Tp> _Node;
- typedef _Slist_node_base _Node_base;
- typedef _Slist_iterator_base _Iterator_base;
-
- _Node* _M_create_node(const value_type& __x) {
- _Node* __node = _M_get_node();
- __STL_TRY {
- construct(&__node->_M_data, __x);
- __node->_M_next = 0;
- }
- __STL_UNWIND(_M_put_node(__node));
- return __node;
- }
-
- _Node* _M_create_node() {
- _Node* __node = _M_get_node();
- __STL_TRY {
- construct(&__node->_M_data);
- __node->_M_next = 0;
- }
- __STL_UNWIND(_M_put_node(__node));
- return __node;
- }
-
-private:
-#ifdef __STL_USE_NAMESPACES
- using _Base::_M_get_node;
- using _Base::_M_put_node;
- using _Base::_M_erase_after;
- using _Base::_M_head;
-#endif /* __STL_USE_NAMESPACES */
-
-public:
- explicit slist(const allocator_type& __a = allocator_type()) : _Base(__a) {}
-
- slist(size_type __n, const value_type& __x,
- const allocator_type& __a = allocator_type()) : _Base(__a)
- { _M_insert_after_fill(&_M_head, __n, __x); }
-
- explicit slist(size_type __n) : _Base(allocator_type())
- { _M_insert_after_fill(&_M_head, __n, value_type()); }
-
-#ifdef __STL_MEMBER_TEMPLATES
- // We don't need any dispatching tricks here, because _M_insert_after_range
- // already does them.
- template <class _InputIterator>
- slist(_InputIterator __first, _InputIterator __last,
- const allocator_type& __a = allocator_type()) : _Base(__a)
- { _M_insert_after_range(&_M_head, __first, __last); }
-
-#else /* __STL_MEMBER_TEMPLATES */
- slist(const_iterator __first, const_iterator __last,
- const allocator_type& __a = allocator_type()) : _Base(__a)
- { _M_insert_after_range(&_M_head, __first, __last); }
- slist(const value_type* __first, const value_type* __last,
- const allocator_type& __a = allocator_type()) : _Base(__a)
- { _M_insert_after_range(&_M_head, __first, __last); }
-#endif /* __STL_MEMBER_TEMPLATES */
-
- slist(const slist& __x) : _Base(__x.get_allocator())
- { _M_insert_after_range(&_M_head, __x.begin(), __x.end()); }
-
- slist& operator= (const slist& __x);
-
- ~slist() {}
-
-public:
- // assign(), a generalized assignment member function. Two
- // versions: one that takes a count, and one that takes a range.
- // The range version is a member template, so we dispatch on whether
- // or not the type is an integer.
-
- void assign(size_type __n, const _Tp& __val);
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- template <class _InputIterator>
- void assign(_InputIterator __first, _InputIterator __last) {
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_assign_dispatch(__first, __last, _Integral());
- }
-
- template <class _Integer>
- void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
- { assign((size_type) __n, (_Tp) __val); }
-
- template <class _InputIterator>
- void _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
- __false_type);
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-public:
-
- iterator begin() { return iterator((_Node*)_M_head._M_next); }
- const_iterator begin() const
- { return const_iterator((_Node*)_M_head._M_next);}
-
- iterator end() { return iterator(0); }
- const_iterator end() const { return const_iterator(0); }
-
- size_type size() const { return __slist_size(_M_head._M_next); }
-
- size_type max_size() const { return size_type(-1); }
-
- bool empty() const { return _M_head._M_next == 0; }
-
- void swap(slist& __x) { __STD::swap(_M_head._M_next, __x._M_head._M_next); }
-
-public:
- friend bool operator== __STL_NULL_TMPL_ARGS (const slist<_Tp,_Alloc>& _SL1,
- const slist<_Tp,_Alloc>& _SL2);
-
-public:
-
- reference front() { return ((_Node*) _M_head._M_next)->_M_data; }
- const_reference front() const
- { return ((_Node*) _M_head._M_next)->_M_data; }
- void push_front(const value_type& __x) {
- __slist_make_link(&_M_head, _M_create_node(__x));
- }
- void push_front() { __slist_make_link(&_M_head, _M_create_node());}
- void pop_front() {
- _Node* __node = (_Node*) _M_head._M_next;
- _M_head._M_next = __node->_M_next;
- destroy(&__node->_M_data);
- _M_put_node(__node);
- }
-
- iterator previous(const_iterator __pos) {
- return iterator((_Node*) __slist_previous(&_M_head, __pos._M_node));
- }
- const_iterator previous(const_iterator __pos) const {
- return const_iterator((_Node*) __slist_previous(&_M_head, __pos._M_node));
- }
-
-private:
- _Node* _M_insert_after(_Node_base* __pos, const value_type& __x) {
- return (_Node*) (__slist_make_link(__pos, _M_create_node(__x)));
- }
-
- _Node* _M_insert_after(_Node_base* __pos) {
- return (_Node*) (__slist_make_link(__pos, _M_create_node()));
- }
-
- void _M_insert_after_fill(_Node_base* __pos,
- size_type __n, const value_type& __x) {
- for (size_type __i = 0; __i < __n; ++__i)
- __pos = __slist_make_link(__pos, _M_create_node(__x));
- }
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- // Check whether it's an integral type. If so, it's not an iterator.
- template <class _InIter>
- void _M_insert_after_range(_Node_base* __pos,
- _InIter __first, _InIter __last) {
- typedef typename _Is_integer<_InIter>::_Integral _Integral;
- _M_insert_after_range(__pos, __first, __last, _Integral());
- }
-
- template <class _Integer>
- void _M_insert_after_range(_Node_base* __pos, _Integer __n, _Integer __x,
- __true_type) {
- _M_insert_after_fill(__pos, __n, __x);
- }
-
- template <class _InIter>
- void _M_insert_after_range(_Node_base* __pos,
- _InIter __first, _InIter __last,
- __false_type) {
- while (__first != __last) {
- __pos = __slist_make_link(__pos, _M_create_node(*__first));
- ++__first;
- }
- }
-
-#else /* __STL_MEMBER_TEMPLATES */
-
- void _M_insert_after_range(_Node_base* __pos,
- const_iterator __first, const_iterator __last) {
- while (__first != __last) {
- __pos = __slist_make_link(__pos, _M_create_node(*__first));
- ++__first;
- }
- }
- void _M_insert_after_range(_Node_base* __pos,
- const value_type* __first,
- const value_type* __last) {
- while (__first != __last) {
- __pos = __slist_make_link(__pos, _M_create_node(*__first));
- ++__first;
- }
- }
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-public:
-
- iterator insert_after(iterator __pos, const value_type& __x) {
- return iterator(_M_insert_after(__pos._M_node, __x));
- }
-
- iterator insert_after(iterator __pos) {
- return insert_after(__pos, value_type());
- }
-
- void insert_after(iterator __pos, size_type __n, const value_type& __x) {
- _M_insert_after_fill(__pos._M_node, __n, __x);
- }
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- // We don't need any dispatching tricks here, because _M_insert_after_range
- // already does them.
- template <class _InIter>
- void insert_after(iterator __pos, _InIter __first, _InIter __last) {
- _M_insert_after_range(__pos._M_node, __first, __last);
- }
-
-#else /* __STL_MEMBER_TEMPLATES */
-
- void insert_after(iterator __pos,
- const_iterator __first, const_iterator __last) {
- _M_insert_after_range(__pos._M_node, __first, __last);
- }
- void insert_after(iterator __pos,
- const value_type* __first, const value_type* __last) {
- _M_insert_after_range(__pos._M_node, __first, __last);
- }
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
- iterator insert(iterator __pos, const value_type& __x) {
- return iterator(_M_insert_after(__slist_previous(&_M_head, __pos._M_node),
- __x));
- }
-
- iterator insert(iterator __pos) {
- return iterator(_M_insert_after(__slist_previous(&_M_head, __pos._M_node),
- value_type()));
- }
-
- void insert(iterator __pos, size_type __n, const value_type& __x) {
- _M_insert_after_fill(__slist_previous(&_M_head, __pos._M_node), __n, __x);
- }
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- // We don't need any dispatching tricks here, because _M_insert_after_range
- // already does them.
- template <class _InIter>
- void insert(iterator __pos, _InIter __first, _InIter __last) {
- _M_insert_after_range(__slist_previous(&_M_head, __pos._M_node),
- __first, __last);
- }
-
-#else /* __STL_MEMBER_TEMPLATES */
-
- void insert(iterator __pos, const_iterator __first, const_iterator __last) {
- _M_insert_after_range(__slist_previous(&_M_head, __pos._M_node),
- __first, __last);
- }
- void insert(iterator __pos, const value_type* __first,
- const value_type* __last) {
- _M_insert_after_range(__slist_previous(&_M_head, __pos._M_node),
- __first, __last);
- }
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-
-public:
- iterator erase_after(iterator __pos) {
- return iterator((_Node*) _M_erase_after(__pos._M_node));
- }
- iterator erase_after(iterator __before_first, iterator __last) {
- return iterator((_Node*) _M_erase_after(__before_first._M_node,
- __last._M_node));
- }
-
- iterator erase(iterator __pos) {
- return (_Node*) _M_erase_after(__slist_previous(&_M_head,
- __pos._M_node));
- }
- iterator erase(iterator __first, iterator __last) {
- return (_Node*) _M_erase_after(
- __slist_previous(&_M_head, __first._M_node), __last._M_node);
- }
-
- void resize(size_type new_size, const _Tp& __x);
- void resize(size_type new_size) { resize(new_size, _Tp()); }
- void clear() { _M_erase_after(&_M_head, 0); }
-
-public:
- // Moves the range [__before_first + 1, __before_last + 1) to *this,
- // inserting it immediately after __pos. This is constant time.
- void splice_after(iterator __pos,
- iterator __before_first, iterator __before_last)
- {
- if (__before_first != __before_last)
- __slist_splice_after(__pos._M_node, __before_first._M_node,
- __before_last._M_node);
- }
-
- // Moves the element that follows __prev to *this, inserting it immediately
- // after __pos. This is constant time.
- void splice_after(iterator __pos, iterator __prev)
- {
- __slist_splice_after(__pos._M_node,
- __prev._M_node, __prev._M_node->_M_next);
- }
-
-
- // Linear in distance(begin(), __pos), and linear in __x.size().
- void splice(iterator __pos, slist& __x) {
- if (__x._M_head._M_next)
- __slist_splice_after(__slist_previous(&_M_head, __pos._M_node),
- &__x._M_head, __slist_previous(&__x._M_head, 0));
- }
-
- // Linear in distance(begin(), __pos), and in distance(__x.begin(), __i).
- void splice(iterator __pos, slist& __x, iterator __i) {
- __slist_splice_after(__slist_previous(&_M_head, __pos._M_node),
- __slist_previous(&__x._M_head, __i._M_node),
- __i._M_node);
- }
-
- // Linear in distance(begin(), __pos), in distance(__x.begin(), __first),
- // and in distance(__first, __last).
- void splice(iterator __pos, slist& __x, iterator __first, iterator __last)
- {
- if (__first != __last)
- __slist_splice_after(__slist_previous(&_M_head, __pos._M_node),
- __slist_previous(&__x._M_head, __first._M_node),
- __slist_previous(__first._M_node, __last._M_node));
- }
-
-public:
- void reverse() {
- if (_M_head._M_next)
- _M_head._M_next = __slist_reverse(_M_head._M_next);
- }
-
- void remove(const _Tp& __val);
- void unique();
- void merge(slist& __x);
- void sort();
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _Predicate>
- void remove_if(_Predicate __pred);
-
- template <class _BinaryPredicate>
- void unique(_BinaryPredicate __pred);
-
- template <class _StrictWeakOrdering>
- void merge(slist&, _StrictWeakOrdering);
-
- template <class _StrictWeakOrdering>
- void sort(_StrictWeakOrdering __comp);
-#endif /* __STL_MEMBER_TEMPLATES */
-};
-
-template <class _Tp, class _Alloc>
-slist<_Tp,_Alloc>& slist<_Tp,_Alloc>::operator=(const slist<_Tp,_Alloc>& __x)
-{
- if (&__x != this) {
- _Node_base* __p1 = &_M_head;
- _Node* __n1 = (_Node*) _M_head._M_next;
- const _Node* __n2 = (const _Node*) __x._M_head._M_next;
- while (__n1 && __n2) {
- __n1->_M_data = __n2->_M_data;
- __p1 = __n1;
- __n1 = (_Node*) __n1->_M_next;
- __n2 = (const _Node*) __n2->_M_next;
- }
- if (__n2 == 0)
- _M_erase_after(__p1, 0);
- else
- _M_insert_after_range(__p1, const_iterator((_Node*)__n2),
- const_iterator(0));
- }
- return *this;
-}
-
-template <class _Tp, class _Alloc>
-void slist<_Tp, _Alloc>::assign(size_type __n, const _Tp& __val) {
- _Node_base* __prev = &_M_head;
- _Node* __node = (_Node*) _M_head._M_next;
- for ( ; __node != 0 && __n > 0 ; --__n) {
- __node->_M_data = __val;
- __prev = __node;
- __node = (_Node*) __node->_M_next;
- }
- if (__n > 0)
- _M_insert_after_fill(__prev, __n, __val);
- else
- _M_erase_after(__prev, 0);
-}
-
-#ifdef __STL_MEMBER_TEMPLATES
-
-template <class _Tp, class _Alloc> template <class _InputIter>
-void
-slist<_Tp, _Alloc>::_M_assign_dispatch(_InputIter __first, _InputIter __last,
- __false_type)
-{
- _Node_base* __prev = &_M_head;
- _Node* __node = (_Node*) _M_head._M_next;
- while (__node != 0 && __first != __last) {
- __node->_M_data = *__first;
- __prev = __node;
- __node = (_Node*) __node->_M_next;
- ++__first;
- }
- if (__first != __last)
- _M_insert_after_range(__prev, __first, __last);
- else
- _M_erase_after(__prev, 0);
-}
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-template <class _Tp, class _Alloc>
-inline bool
-operator==(const slist<_Tp,_Alloc>& _SL1, const slist<_Tp,_Alloc>& _SL2)
-{
- typedef typename slist<_Tp,_Alloc>::_Node _Node;
- _Node* __n1 = (_Node*) _SL1._M_head._M_next;
- _Node* __n2 = (_Node*) _SL2._M_head._M_next;
- while (__n1 && __n2 && __n1->_M_data == __n2->_M_data) {
- __n1 = (_Node*) __n1->_M_next;
- __n2 = (_Node*) __n2->_M_next;
- }
- return __n1 == 0 && __n2 == 0;
-}
-
-template <class _Tp, class _Alloc>
-inline bool operator<(const slist<_Tp,_Alloc>& _SL1,
- const slist<_Tp,_Alloc>& _SL2)
-{
- return lexicographical_compare(_SL1.begin(), _SL1.end(),
- _SL2.begin(), _SL2.end());
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Tp, class _Alloc>
-inline void swap(slist<_Tp,_Alloc>& __x, slist<_Tp,_Alloc>& __y) {
- __x.swap(__y);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-
-template <class _Tp, class _Alloc>
-void slist<_Tp,_Alloc>::resize(size_type __len, const _Tp& __x)
-{
- _Node_base* __cur = &_M_head;
- while (__cur->_M_next != 0 && __len > 0) {
- --__len;
- __cur = __cur->_M_next;
- }
- if (__cur->_M_next)
- _M_erase_after(__cur, 0);
- else
- _M_insert_after_fill(__cur, __len, __x);
-}
-
-template <class _Tp, class _Alloc>
-void slist<_Tp,_Alloc>::remove(const _Tp& __val)
-{
- _Node_base* __cur = &_M_head;
- while (__cur && __cur->_M_next) {
- if (((_Node*) __cur->_M_next)->_M_data == __val)
- _M_erase_after(__cur);
- else
- __cur = __cur->_M_next;
- }
-}
-
-template <class _Tp, class _Alloc>
-void slist<_Tp,_Alloc>::unique()
-{
- _Node_base* __cur = _M_head._M_next;
- if (__cur) {
- while (__cur->_M_next) {
- if (((_Node*)__cur)->_M_data ==
- ((_Node*)(__cur->_M_next))->_M_data)
- _M_erase_after(__cur);
- else
- __cur = __cur->_M_next;
- }
- }
-}
-
-template <class _Tp, class _Alloc>
-void slist<_Tp,_Alloc>::merge(slist<_Tp,_Alloc>& __x)
-{
- _Node_base* __n1 = &_M_head;
- while (__n1->_M_next && __x._M_head._M_next) {
- if (((_Node*) __x._M_head._M_next)->_M_data <
- ((_Node*) __n1->_M_next)->_M_data)
- __slist_splice_after(__n1, &__x._M_head, __x._M_head._M_next);
- __n1 = __n1->_M_next;
- }
- if (__x._M_head._M_next) {
- __n1->_M_next = __x._M_head._M_next;
- __x._M_head._M_next = 0;
- }
-}
-
-template <class _Tp, class _Alloc>
-void slist<_Tp,_Alloc>::sort()
-{
- if (_M_head._M_next && _M_head._M_next->_M_next) {
- slist __carry;
- slist __counter[64];
- int __fill = 0;
- while (!empty()) {
- __slist_splice_after(&__carry._M_head, &_M_head, _M_head._M_next);
- int __i = 0;
- while (__i < __fill && !__counter[__i].empty()) {
- __counter[__i].merge(__carry);
- __carry.swap(__counter[__i]);
- ++__i;
- }
- __carry.swap(__counter[__i]);
- if (__i == __fill)
- ++__fill;
- }
-
- for (int __i = 1; __i < __fill; ++__i)
- __counter[__i].merge(__counter[__i-1]);
- this->swap(__counter[__fill-1]);
- }
-}
-
-#ifdef __STL_MEMBER_TEMPLATES
-
-template <class _Tp, class _Alloc>
-template <class _Predicate>
-void slist<_Tp,_Alloc>::remove_if(_Predicate __pred)
-{
- _Node_base* __cur = &_M_head;
- while (__cur->_M_next) {
- if (__pred(((_Node*) __cur->_M_next)->_M_data))
- _M_erase_after(__cur);
- else
- __cur = __cur->_M_next;
- }
-}
-
-template <class _Tp, class _Alloc> template <class _BinaryPredicate>
-void slist<_Tp,_Alloc>::unique(_BinaryPredicate __pred)
-{
- _Node* __cur = (_Node*) _M_head._M_next;
- if (__cur) {
- while (__cur->_M_next) {
- if (__pred(((_Node*)__cur)->_M_data,
- ((_Node*)(__cur->_M_next))->_M_data))
- _M_erase_after(__cur);
- else
- __cur = (_Node*) __cur->_M_next;
- }
- }
-}
-
-template <class _Tp, class _Alloc> template <class _StrictWeakOrdering>
-void slist<_Tp,_Alloc>::merge(slist<_Tp,_Alloc>& __x,
- _StrictWeakOrdering __comp)
-{
- _Node_base* __n1 = &_M_head;
- while (__n1->_M_next && __x._M_head._M_next) {
- if (__comp(((_Node*) __x._M_head._M_next)->_M_data,
- ((_Node*) __n1->_M_next)->_M_data))
- __slist_splice_after(__n1, &__x._M_head, __x._M_head._M_next);
- __n1 = __n1->_M_next;
- }
- if (__x._M_head._M_next) {
- __n1->_M_next = __x._M_head._M_next;
- __x._M_head._M_next = 0;
- }
-}
-
-template <class _Tp, class _Alloc> template <class _StrictWeakOrdering>
-void slist<_Tp,_Alloc>::sort(_StrictWeakOrdering __comp)
-{
- if (_M_head._M_next && _M_head._M_next->_M_next) {
- slist __carry;
- slist __counter[64];
- int __fill = 0;
- while (!empty()) {
- __slist_splice_after(&__carry._M_head, &_M_head, _M_head._M_next);
- int __i = 0;
- while (__i < __fill && !__counter[__i].empty()) {
- __counter[__i].merge(__carry, __comp);
- __carry.swap(__counter[__i]);
- ++__i;
- }
- __carry.swap(__counter[__i]);
- if (__i == __fill)
- ++__fill;
- }
-
- for (int __i = 1; __i < __fill; ++__i)
- __counter[__i].merge(__counter[__i-1], __comp);
- this->swap(__counter[__fill-1]);
- }
-}
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1174
-#pragma reset woff 1375
-#endif
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_SLIST_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_stack.h b/contrib/libstdc++/stl/stl_stack.h
deleted file mode 100644
index 2a04b21..0000000
--- a/contrib/libstdc++/stl/stl_stack.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_STACK_H
-#define __SGI_STL_INTERNAL_STACK_H
-
-__STL_BEGIN_NAMESPACE
-
-#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
-template <class _Tp, class _Sequence = deque<_Tp> >
-#else
-template <class _Tp, class _Sequence>
-#endif
-class stack {
- friend bool operator== __STL_NULL_TMPL_ARGS (const stack&, const stack&);
- friend bool operator< __STL_NULL_TMPL_ARGS (const stack&, const stack&);
-public:
- typedef typename _Sequence::value_type value_type;
- typedef typename _Sequence::size_type size_type;
- typedef _Sequence container_type;
-
- typedef typename _Sequence::reference reference;
- typedef typename _Sequence::const_reference const_reference;
-protected:
- _Sequence _M_c;
-public:
- stack() : _M_c() {}
- explicit stack(const _Sequence& __s) : _M_c(__s) {}
-
- bool empty() const { return _M_c.empty(); }
- size_type size() const { return _M_c.size(); }
- reference top() { return _M_c.back(); }
- const_reference top() const { return _M_c.back(); }
- void push(const value_type& __x) { _M_c.push_back(__x); }
- void pop() { _M_c.pop_back(); }
-};
-
-template <class _Tp, class _Seq>
-bool operator==(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
-{
- return __x._M_c == __y._M_c;
-}
-
-template <class _Tp, class _Seq>
-bool operator<(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
-{
- return __x._M_c < __y._M_c;
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Tp, class _Seq>
-bool operator!=(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
-{
- return !(__x == __y);
-}
-
-template <class _Tp, class _Seq>
-bool operator>(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
-{
- return __y < __x;
-}
-
-template <class _Tp, class _Seq>
-bool operator<=(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
-{
- return !(__y < __x);
-}
-
-template <class _Tp, class _Seq>
-bool operator>=(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y)
-{
- return !(__x < __y);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_STACK_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_tempbuf.h b/contrib/libstdc++/stl/stl_tempbuf.h
deleted file mode 100644
index e1b2ead..0000000
--- a/contrib/libstdc++/stl/stl_tempbuf.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_TEMPBUF_H
-#define __SGI_STL_INTERNAL_TEMPBUF_H
-
-
-__STL_BEGIN_NAMESPACE
-
-template <class _Tp>
-pair<_Tp*, ptrdiff_t>
-__get_temporary_buffer(ptrdiff_t __len, _Tp*)
-{
- if (__len > ptrdiff_t(INT_MAX / sizeof(_Tp)))
- __len = INT_MAX / sizeof(_Tp);
-
- while (__len > 0) {
- _Tp* __tmp = (_Tp*) malloc((size_t)__len * sizeof(_Tp));
- if (__tmp != 0)
- return pair<_Tp*, ptrdiff_t>(__tmp, __len);
- __len /= 2;
- }
-
- return pair<_Tp*, ptrdiff_t>((_Tp*)0, 0);
-}
-
-#ifdef __STL_EXPLICIT_FUNCTION_TMPL_ARGS
-
-template <class _Tp>
-inline pair<_Tp*, ptrdiff_t> get_temporary_buffer(ptrdiff_t __len) {
- return __get_temporary_buffer(__len, (_Tp*) 0);
-}
-
-#endif /* __STL_EXPLICIT_FUNCTION_TMPL_ARGS */
-
-// This overload is not required by the standard; it is an extension.
-// It is supported for backward compatibility with the HP STL, and
-// because not all compilers support the language feature (explicit
-// function template arguments) that is required for the standard
-// version of get_temporary_buffer.
-template <class _Tp>
-inline pair<_Tp*, ptrdiff_t> get_temporary_buffer(ptrdiff_t __len, _Tp*) {
- return __get_temporary_buffer(__len, (_Tp*) 0);
-}
-
-template <class _Tp>
-void return_temporary_buffer(_Tp* __p) {
- free(__p);
-}
-
-template <class _ForwardIterator, class _Tp>
-class _Temporary_buffer {
-private:
- ptrdiff_t _M_original_len;
- ptrdiff_t _M_len;
- _Tp* _M_buffer;
-
- void _M_allocate_buffer() {
- _M_original_len = _M_len;
- _M_buffer = 0;
-
- if (_M_len > (ptrdiff_t)(INT_MAX / sizeof(_Tp)))
- _M_len = INT_MAX / sizeof(_Tp);
-
- while (_M_len > 0) {
- _M_buffer = (_Tp*) malloc(_M_len * sizeof(_Tp));
- if (_M_buffer)
- break;
- _M_len /= 2;
- }
- }
-
- void _M_initialize_buffer(const _Tp&, __true_type) {}
- void _M_initialize_buffer(const _Tp& val, __false_type) {
- uninitialized_fill_n(_M_buffer, _M_len, val);
- }
-
-public:
- ptrdiff_t size() const { return _M_len; }
- ptrdiff_t requested_size() const { return _M_original_len; }
- _Tp* begin() { return _M_buffer; }
- _Tp* end() { return _M_buffer + _M_len; }
-
- _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) {
- typedef typename __type_traits<_Tp>::has_trivial_default_constructor
- _Trivial;
- __STL_TRY {
- _M_len = 0;
- distance(__first, __last, _M_len);
- _M_allocate_buffer();
- if (_M_len > 0)
- _M_initialize_buffer(*__first, _Trivial());
- }
- __STL_UNWIND(free(_M_buffer); _M_buffer = 0; _M_len = 0);
- }
-
- ~_Temporary_buffer() {
- destroy(_M_buffer, _M_buffer + _M_len);
- free(_M_buffer);
- }
-
-private:
- // Disable copy constructor and assignment operator.
- _Temporary_buffer(const _Temporary_buffer&) {}
- void operator=(const _Temporary_buffer&) {}
-};
-
-// Class temporary_buffer is not part of the standard. It is an extension.
-
-template <class _ForwardIterator,
- class _Tp
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
- = typename iterator_traits<_ForwardIterator>::value_type
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
- >
-struct temporary_buffer : public _Temporary_buffer<_ForwardIterator, _Tp>
-{
- temporary_buffer(_ForwardIterator __first, _ForwardIterator __last)
- : _Temporary_buffer<_ForwardIterator, _Tp>(__first, __last) {}
- ~temporary_buffer() {}
-};
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_TEMPBUF_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_tree.h b/contrib/libstdc++/stl/stl_tree.h
deleted file mode 100644
index c82943f..0000000
--- a/contrib/libstdc++/stl/stl_tree.h
+++ /dev/null
@@ -1,1333 +0,0 @@
-/*
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_TREE_H
-#define __SGI_STL_INTERNAL_TREE_H
-
-/*
-
-Red-black tree class, designed for use in implementing STL
-associative containers (set, multiset, map, and multimap). The
-insertion and deletion algorithms are based on those in Cormen,
-Leiserson, and Rivest, Introduction to Algorithms (MIT Press, 1990),
-except that
-
-(1) the header cell is maintained with links not only to the root
-but also to the leftmost node of the tree, to enable constant time
-begin(), and to the rightmost node of the tree, to enable linear time
-performance when used with the generic set algorithms (set_union,
-etc.);
-
-(2) when a node being deleted has two children its successor node is
-relinked into its place, rather than copied, so that the only
-iterators invalidated are those referring to the deleted node.
-
-*/
-
-#include <stl_algobase.h>
-#include <stl_alloc.h>
-#include <stl_construct.h>
-#include <stl_function.h>
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1375
-#endif
-
-typedef bool _Rb_tree_Color_type;
-const _Rb_tree_Color_type _S_rb_tree_red = false;
-const _Rb_tree_Color_type _S_rb_tree_black = true;
-
-struct _Rb_tree_node_base
-{
- typedef _Rb_tree_Color_type _Color_type;
- typedef _Rb_tree_node_base* _Base_ptr;
-
- _Color_type _M_color;
- _Base_ptr _M_parent;
- _Base_ptr _M_left;
- _Base_ptr _M_right;
-
- static _Base_ptr _S_minimum(_Base_ptr __x)
- {
- while (__x->_M_left != 0) __x = __x->_M_left;
- return __x;
- }
-
- static _Base_ptr _S_maximum(_Base_ptr __x)
- {
- while (__x->_M_right != 0) __x = __x->_M_right;
- return __x;
- }
-};
-
-template <class _Value>
-struct _Rb_tree_node : public _Rb_tree_node_base
-{
- typedef _Rb_tree_node<_Value>* _Link_type;
- _Value _M_value_field;
-};
-
-
-struct _Rb_tree_base_iterator
-{
- typedef _Rb_tree_node_base::_Base_ptr _Base_ptr;
- typedef bidirectional_iterator_tag iterator_category;
- typedef ptrdiff_t difference_type;
- _Base_ptr _M_node;
-
- void _M_increment()
- {
- if (_M_node->_M_right != 0) {
- _M_node = _M_node->_M_right;
- while (_M_node->_M_left != 0)
- _M_node = _M_node->_M_left;
- }
- else {
- _Base_ptr __y = _M_node->_M_parent;
- while (_M_node == __y->_M_right) {
- _M_node = __y;
- __y = __y->_M_parent;
- }
- if (_M_node->_M_right != __y)
- _M_node = __y;
- }
- }
-
- void _M_decrement()
- {
- if (_M_node->_M_color == _S_rb_tree_red &&
- _M_node->_M_parent->_M_parent == _M_node)
- _M_node = _M_node->_M_right;
- else if (_M_node->_M_left != 0) {
- _Base_ptr __y = _M_node->_M_left;
- while (__y->_M_right != 0)
- __y = __y->_M_right;
- _M_node = __y;
- }
- else {
- _Base_ptr __y = _M_node->_M_parent;
- while (_M_node == __y->_M_left) {
- _M_node = __y;
- __y = __y->_M_parent;
- }
- _M_node = __y;
- }
- }
-};
-
-template <class _Value, class _Ref, class _Ptr>
-struct _Rb_tree_iterator : public _Rb_tree_base_iterator
-{
- typedef _Value value_type;
- typedef _Ref reference;
- typedef _Ptr pointer;
- typedef _Rb_tree_iterator<_Value, _Value&, _Value*>
- iterator;
- typedef _Rb_tree_iterator<_Value, const _Value&, const _Value*>
- const_iterator;
- typedef _Rb_tree_iterator<_Value, _Ref, _Ptr>
- _Self;
- typedef _Rb_tree_node<_Value>* _Link_type;
-
- _Rb_tree_iterator() {}
- _Rb_tree_iterator(_Link_type __x) { _M_node = __x; }
- _Rb_tree_iterator(const iterator& __it) { _M_node = __it._M_node; }
-
- reference operator*() const { return _Link_type(_M_node)->_M_value_field; }
-#ifndef __SGI_STL_NO_ARROW_OPERATOR
- pointer operator->() const { return &(operator*()); }
-#endif /* __SGI_STL_NO_ARROW_OPERATOR */
-
- _Self& operator++() { _M_increment(); return *this; }
- _Self operator++(int) {
- _Self __tmp = *this;
- _M_increment();
- return __tmp;
- }
-
- _Self& operator--() { _M_decrement(); return *this; }
- _Self operator--(int) {
- _Self __tmp = *this;
- _M_decrement();
- return __tmp;
- }
-};
-
-inline bool operator==(const _Rb_tree_base_iterator& __x,
- const _Rb_tree_base_iterator& __y) {
- return __x._M_node == __y._M_node;
-}
-
-inline bool operator!=(const _Rb_tree_base_iterator& __x,
- const _Rb_tree_base_iterator& __y) {
- return __x._M_node != __y._M_node;
-}
-
-#ifndef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-inline bidirectional_iterator_tag
-iterator_category(const _Rb_tree_base_iterator&) {
- return bidirectional_iterator_tag();
-}
-
-inline _Rb_tree_base_iterator::difference_type*
-distance_type(const _Rb_tree_base_iterator&) {
- return (_Rb_tree_base_iterator::difference_type*) 0;
-}
-
-template <class _Value, class _Ref, class _Ptr>
-inline _Value* value_type(const _Rb_tree_iterator<_Value, _Ref, _Ptr>&) {
- return (_Value*) 0;
-}
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-inline void
-_Rb_tree_rotate_left(_Rb_tree_node_base* __x, _Rb_tree_node_base*& __root)
-{
- _Rb_tree_node_base* __y = __x->_M_right;
- __x->_M_right = __y->_M_left;
- if (__y->_M_left !=0)
- __y->_M_left->_M_parent = __x;
- __y->_M_parent = __x->_M_parent;
-
- if (__x == __root)
- __root = __y;
- else if (__x == __x->_M_parent->_M_left)
- __x->_M_parent->_M_left = __y;
- else
- __x->_M_parent->_M_right = __y;
- __y->_M_left = __x;
- __x->_M_parent = __y;
-}
-
-inline void
-_Rb_tree_rotate_right(_Rb_tree_node_base* __x, _Rb_tree_node_base*& __root)
-{
- _Rb_tree_node_base* __y = __x->_M_left;
- __x->_M_left = __y->_M_right;
- if (__y->_M_right != 0)
- __y->_M_right->_M_parent = __x;
- __y->_M_parent = __x->_M_parent;
-
- if (__x == __root)
- __root = __y;
- else if (__x == __x->_M_parent->_M_right)
- __x->_M_parent->_M_right = __y;
- else
- __x->_M_parent->_M_left = __y;
- __y->_M_right = __x;
- __x->_M_parent = __y;
-}
-
-inline void
-_Rb_tree_rebalance(_Rb_tree_node_base* __x, _Rb_tree_node_base*& __root)
-{
- __x->_M_color = _S_rb_tree_red;
- while (__x != __root && __x->_M_parent->_M_color == _S_rb_tree_red) {
- if (__x->_M_parent == __x->_M_parent->_M_parent->_M_left) {
- _Rb_tree_node_base* __y = __x->_M_parent->_M_parent->_M_right;
- if (__y && __y->_M_color == _S_rb_tree_red) {
- __x->_M_parent->_M_color = _S_rb_tree_black;
- __y->_M_color = _S_rb_tree_black;
- __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red;
- __x = __x->_M_parent->_M_parent;
- }
- else {
- if (__x == __x->_M_parent->_M_right) {
- __x = __x->_M_parent;
- _Rb_tree_rotate_left(__x, __root);
- }
- __x->_M_parent->_M_color = _S_rb_tree_black;
- __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red;
- _Rb_tree_rotate_right(__x->_M_parent->_M_parent, __root);
- }
- }
- else {
- _Rb_tree_node_base* __y = __x->_M_parent->_M_parent->_M_left;
- if (__y && __y->_M_color == _S_rb_tree_red) {
- __x->_M_parent->_M_color = _S_rb_tree_black;
- __y->_M_color = _S_rb_tree_black;
- __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red;
- __x = __x->_M_parent->_M_parent;
- }
- else {
- if (__x == __x->_M_parent->_M_left) {
- __x = __x->_M_parent;
- _Rb_tree_rotate_right(__x, __root);
- }
- __x->_M_parent->_M_color = _S_rb_tree_black;
- __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red;
- _Rb_tree_rotate_left(__x->_M_parent->_M_parent, __root);
- }
- }
- }
- __root->_M_color = _S_rb_tree_black;
-}
-
-inline _Rb_tree_node_base*
-_Rb_tree_rebalance_for_erase(_Rb_tree_node_base* __z,
- _Rb_tree_node_base*& __root,
- _Rb_tree_node_base*& __leftmost,
- _Rb_tree_node_base*& __rightmost)
-{
- _Rb_tree_node_base* __y = __z;
- _Rb_tree_node_base* __x = 0;
- _Rb_tree_node_base* __x_parent = 0;
- if (__y->_M_left == 0) // __z has at most one non-null child. y == z.
- __x = __y->_M_right; // __x might be null.
- else
- if (__y->_M_right == 0) // __z has exactly one non-null child. y == z.
- __x = __y->_M_left; // __x is not null.
- else { // __z has two non-null children. Set __y to
- __y = __y->_M_right; // __z's successor. __x might be null.
- while (__y->_M_left != 0)
- __y = __y->_M_left;
- __x = __y->_M_right;
- }
- if (__y != __z) { // relink y in place of z. y is z's successor
- __z->_M_left->_M_parent = __y;
- __y->_M_left = __z->_M_left;
- if (__y != __z->_M_right) {
- __x_parent = __y->_M_parent;
- if (__x) __x->_M_parent = __y->_M_parent;
- __y->_M_parent->_M_left = __x; // __y must be a child of _M_left
- __y->_M_right = __z->_M_right;
- __z->_M_right->_M_parent = __y;
- }
- else
- __x_parent = __y;
- if (__root == __z)
- __root = __y;
- else if (__z->_M_parent->_M_left == __z)
- __z->_M_parent->_M_left = __y;
- else
- __z->_M_parent->_M_right = __y;
- __y->_M_parent = __z->_M_parent;
- __STD::swap(__y->_M_color, __z->_M_color);
- __y = __z;
- // __y now points to node to be actually deleted
- }
- else { // __y == __z
- __x_parent = __y->_M_parent;
- if (__x) __x->_M_parent = __y->_M_parent;
- if (__root == __z)
- __root = __x;
- else
- if (__z->_M_parent->_M_left == __z)
- __z->_M_parent->_M_left = __x;
- else
- __z->_M_parent->_M_right = __x;
- if (__leftmost == __z)
- if (__z->_M_right == 0) // __z->_M_left must be null also
- __leftmost = __z->_M_parent;
- // makes __leftmost == _M_header if __z == __root
- else
- __leftmost = _Rb_tree_node_base::_S_minimum(__x);
- if (__rightmost == __z)
- if (__z->_M_left == 0) // __z->_M_right must be null also
- __rightmost = __z->_M_parent;
- // makes __rightmost == _M_header if __z == __root
- else // __x == __z->_M_left
- __rightmost = _Rb_tree_node_base::_S_maximum(__x);
- }
- if (__y->_M_color != _S_rb_tree_red) {
- while (__x != __root && (__x == 0 || __x->_M_color == _S_rb_tree_black))
- if (__x == __x_parent->_M_left) {
- _Rb_tree_node_base* __w = __x_parent->_M_right;
- if (__w->_M_color == _S_rb_tree_red) {
- __w->_M_color = _S_rb_tree_black;
- __x_parent->_M_color = _S_rb_tree_red;
- _Rb_tree_rotate_left(__x_parent, __root);
- __w = __x_parent->_M_right;
- }
- if ((__w->_M_left == 0 ||
- __w->_M_left->_M_color == _S_rb_tree_black) &&
- (__w->_M_right == 0 ||
- __w->_M_right->_M_color == _S_rb_tree_black)) {
- __w->_M_color = _S_rb_tree_red;
- __x = __x_parent;
- __x_parent = __x_parent->_M_parent;
- } else {
- if (__w->_M_right == 0 ||
- __w->_M_right->_M_color == _S_rb_tree_black) {
- if (__w->_M_left) __w->_M_left->_M_color = _S_rb_tree_black;
- __w->_M_color = _S_rb_tree_red;
- _Rb_tree_rotate_right(__w, __root);
- __w = __x_parent->_M_right;
- }
- __w->_M_color = __x_parent->_M_color;
- __x_parent->_M_color = _S_rb_tree_black;
- if (__w->_M_right) __w->_M_right->_M_color = _S_rb_tree_black;
- _Rb_tree_rotate_left(__x_parent, __root);
- break;
- }
- } else { // same as above, with _M_right <-> _M_left.
- _Rb_tree_node_base* __w = __x_parent->_M_left;
- if (__w->_M_color == _S_rb_tree_red) {
- __w->_M_color = _S_rb_tree_black;
- __x_parent->_M_color = _S_rb_tree_red;
- _Rb_tree_rotate_right(__x_parent, __root);
- __w = __x_parent->_M_left;
- }
- if ((__w->_M_right == 0 ||
- __w->_M_right->_M_color == _S_rb_tree_black) &&
- (__w->_M_left == 0 ||
- __w->_M_left->_M_color == _S_rb_tree_black)) {
- __w->_M_color = _S_rb_tree_red;
- __x = __x_parent;
- __x_parent = __x_parent->_M_parent;
- } else {
- if (__w->_M_left == 0 ||
- __w->_M_left->_M_color == _S_rb_tree_black) {
- if (__w->_M_right) __w->_M_right->_M_color = _S_rb_tree_black;
- __w->_M_color = _S_rb_tree_red;
- _Rb_tree_rotate_left(__w, __root);
- __w = __x_parent->_M_left;
- }
- __w->_M_color = __x_parent->_M_color;
- __x_parent->_M_color = _S_rb_tree_black;
- if (__w->_M_left) __w->_M_left->_M_color = _S_rb_tree_black;
- _Rb_tree_rotate_right(__x_parent, __root);
- break;
- }
- }
- if (__x) __x->_M_color = _S_rb_tree_black;
- }
- return __y;
-}
-
-// Base class to encapsulate the differences between old SGI-style
-// allocators and standard-conforming allocators. In order to avoid
-// having an empty base class, we arbitrarily move one of rb_tree's
-// data members into the base class.
-
-#ifdef __STL_USE_STD_ALLOCATORS
-
-// _Base for general standard-conforming allocators.
-template <class _Tp, class _Alloc, bool _S_instanceless>
-class _Rb_tree_alloc_base {
-public:
- typedef typename _Alloc_traits<_Tp, _Alloc>::allocator_type allocator_type;
- allocator_type get_allocator() const { return _M_node_allocator; }
-
- _Rb_tree_alloc_base(const allocator_type& __a)
- : _M_node_allocator(__a), _M_header(0) {}
-
-protected:
- typename _Alloc_traits<_Rb_tree_node<_Tp>, _Alloc>::allocator_type
- _M_node_allocator;
- _Rb_tree_node<_Tp>* _M_header;
-
- _Rb_tree_node<_Tp>* _M_get_node()
- { return _M_node_allocator.allocate(1); }
- void _M_put_node(_Rb_tree_node<_Tp>* __p)
- { _M_node_allocator.deallocate(__p, 1); }
-};
-
-// Specialization for instanceless allocators.
-template <class _Tp, class _Alloc>
-class _Rb_tree_alloc_base<_Tp, _Alloc, true> {
-public:
- typedef typename _Alloc_traits<_Tp, _Alloc>::allocator_type allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
-
- _Rb_tree_alloc_base(const allocator_type&) : _M_header(0) {}
-
-protected:
- _Rb_tree_node<_Tp>* _M_header;
-
- typedef typename _Alloc_traits<_Rb_tree_node<_Tp>, _Alloc>::_Alloc_type
- _Alloc_type;
-
- _Rb_tree_node<_Tp>* _M_get_node()
- { return _Alloc_type::allocate(1); }
- void _M_put_node(_Rb_tree_node<_Tp>* __p)
- { _Alloc_type::deallocate(__p, 1); }
-};
-
-template <class _Tp, class _Alloc>
-struct _Rb_tree_base
- : public _Rb_tree_alloc_base<_Tp, _Alloc,
- _Alloc_traits<_Tp, _Alloc>::_S_instanceless>
-{
- typedef _Rb_tree_alloc_base<_Tp, _Alloc,
- _Alloc_traits<_Tp, _Alloc>::_S_instanceless>
- _Base;
- typedef typename _Base::allocator_type allocator_type;
-
- _Rb_tree_base(const allocator_type& __a)
- : _Base(__a) { _M_header = _M_get_node(); }
- ~_Rb_tree_base() { _M_put_node(_M_header); }
-
-};
-
-#else /* __STL_USE_STD_ALLOCATORS */
-
-template <class _Tp, class _Alloc>
-struct _Rb_tree_base
-{
- typedef _Alloc allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
-
- _Rb_tree_base(const allocator_type&)
- : _M_header(0) { _M_header = _M_get_node(); }
- ~_Rb_tree_base() { _M_put_node(_M_header); }
-
-protected:
- _Rb_tree_node<_Tp>* _M_header;
-
- typedef simple_alloc<_Rb_tree_node<_Tp>, _Alloc> _Alloc_type;
-
- _Rb_tree_node<_Tp>* _M_get_node()
- { return _Alloc_type::allocate(1); }
- void _M_put_node(_Rb_tree_node<_Tp>* __p)
- { _Alloc_type::deallocate(__p, 1); }
-};
-
-#endif /* __STL_USE_STD_ALLOCATORS */
-
-template <class _Key, class _Value, class _KeyOfValue, class _Compare,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Value) >
-class _Rb_tree : protected _Rb_tree_base<_Value, _Alloc> {
- typedef _Rb_tree_base<_Value, _Alloc> _Base;
-protected:
- typedef _Rb_tree_node_base* _Base_ptr;
- typedef _Rb_tree_node<_Value> _Rb_tree_node;
- typedef _Rb_tree_Color_type _Color_type;
-public:
- typedef _Key key_type;
- typedef _Value value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef _Rb_tree_node* _Link_type;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
-
- typedef typename _Base::allocator_type allocator_type;
- allocator_type get_allocator() const { return _Base::get_allocator(); }
-
-protected:
-#ifdef __STL_USE_NAMESPACES
- using _Base::_M_get_node;
- using _Base::_M_put_node;
- using _Base::_M_header;
-#endif /* __STL_USE_NAMESPACES */
-
-protected:
-
- _Link_type _M_create_node(const value_type& __x)
- {
- _Link_type __tmp = _M_get_node();
- __STL_TRY {
- construct(&__tmp->_M_value_field, __x);
- }
- __STL_UNWIND(_M_put_node(__tmp));
- return __tmp;
- }
-
- _Link_type _M_clone_node(_Link_type __x)
- {
- _Link_type __tmp = _M_create_node(__x->_M_value_field);
- __tmp->_M_color = __x->_M_color;
- __tmp->_M_left = 0;
- __tmp->_M_right = 0;
- return __tmp;
- }
-
- void destroy_node(_Link_type __p)
- {
- destroy(&__p->_M_value_field);
- _M_put_node(__p);
- }
-
-protected:
- size_type _M_node_count; // keeps track of size of tree
- _Compare _M_key_compare;
-
- _Link_type& _M_root() const
- { return (_Link_type&) _M_header->_M_parent; }
- _Link_type& _M_leftmost() const
- { return (_Link_type&) _M_header->_M_left; }
- _Link_type& _M_rightmost() const
- { return (_Link_type&) _M_header->_M_right; }
-
- static _Link_type& _S_left(_Link_type __x)
- { return (_Link_type&)(__x->_M_left); }
- static _Link_type& _S_right(_Link_type __x)
- { return (_Link_type&)(__x->_M_right); }
- static _Link_type& _S_parent(_Link_type __x)
- { return (_Link_type&)(__x->_M_parent); }
- static reference _S_value(_Link_type __x)
- { return __x->_M_value_field; }
- static const _Key& _S_key(_Link_type __x)
- { return _KeyOfValue()(_S_value(__x)); }
- static _Color_type& _S_color(_Link_type __x)
- { return (_Color_type&)(__x->_M_color); }
-
- static _Link_type& _S_left(_Base_ptr __x)
- { return (_Link_type&)(__x->_M_left); }
- static _Link_type& _S_right(_Base_ptr __x)
- { return (_Link_type&)(__x->_M_right); }
- static _Link_type& _S_parent(_Base_ptr __x)
- { return (_Link_type&)(__x->_M_parent); }
- static reference _S_value(_Base_ptr __x)
- { return ((_Link_type)__x)->_M_value_field; }
- static const _Key& _S_key(_Base_ptr __x)
- { return _KeyOfValue()(_S_value(_Link_type(__x)));}
- static _Color_type& _S_color(_Base_ptr __x)
- { return (_Color_type&)(_Link_type(__x)->_M_color); }
-
- static _Link_type _S_minimum(_Link_type __x)
- { return (_Link_type) _Rb_tree_node_base::_S_minimum(__x); }
-
- static _Link_type _S_maximum(_Link_type __x)
- { return (_Link_type) _Rb_tree_node_base::_S_maximum(__x); }
-
-public:
- typedef _Rb_tree_iterator<value_type, reference, pointer> iterator;
- typedef _Rb_tree_iterator<value_type, const_reference, const_pointer>
- const_iterator;
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
- typedef reverse_iterator<const_iterator> const_reverse_iterator;
- typedef reverse_iterator<iterator> reverse_iterator;
-#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */
- typedef reverse_bidirectional_iterator<iterator, value_type, reference,
- difference_type>
- reverse_iterator;
- typedef reverse_bidirectional_iterator<const_iterator, value_type,
- const_reference, difference_type>
- const_reverse_iterator;
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-private:
- iterator _M_insert(_Base_ptr __x, _Base_ptr __y, const value_type& __v);
- _Link_type _M_copy(_Link_type __x, _Link_type __p);
- void _M_erase(_Link_type __x);
-
-public:
- // allocation/deallocation
- _Rb_tree()
- : _Base(allocator_type()), _M_node_count(0), _M_key_compare()
- { _M_empty_initialize(); }
-
- _Rb_tree(const _Compare& __comp)
- : _Base(allocator_type()), _M_node_count(0), _M_key_compare(__comp)
- { _M_empty_initialize(); }
-
- _Rb_tree(const _Compare& __comp, const allocator_type& __a)
- : _Base(__a), _M_node_count(0), _M_key_compare(__comp)
- { _M_empty_initialize(); }
-
- _Rb_tree(const _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>& __x)
- : _Base(__x.get_allocator()),
- _M_node_count(0), _M_key_compare(__x._M_key_compare)
- {
- if (__x._M_root() == 0)
- _M_empty_initialize();
- else {
- _S_color(_M_header) = _S_rb_tree_red;
- _M_root() = _M_copy(__x._M_root(), _M_header);
- _M_leftmost() = _S_minimum(_M_root());
- _M_rightmost() = _S_maximum(_M_root());
- }
- _M_node_count = __x._M_node_count;
- }
- ~_Rb_tree() { clear(); }
- _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>&
- operator=(const _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>& __x);
-
-private:
- void _M_empty_initialize() {
- _S_color(_M_header) = _S_rb_tree_red; // used to distinguish header from
- // __root, in iterator.operator++
- _M_root() = 0;
- _M_leftmost() = _M_header;
- _M_rightmost() = _M_header;
- }
-
-public:
- // accessors:
- _Compare key_comp() const { return _M_key_compare; }
- iterator begin() { return _M_leftmost(); }
- const_iterator begin() const { return _M_leftmost(); }
- iterator end() { return _M_header; }
- const_iterator end() const { return _M_header; }
- reverse_iterator rbegin() { return reverse_iterator(end()); }
- const_reverse_iterator rbegin() const {
- return const_reverse_iterator(end());
- }
- reverse_iterator rend() { return reverse_iterator(begin()); }
- const_reverse_iterator rend() const {
- return const_reverse_iterator(begin());
- }
- bool empty() const { return _M_node_count == 0; }
- size_type size() const { return _M_node_count; }
- size_type max_size() const { return size_type(-1); }
-
- void swap(_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>& __t) {
- __STD::swap(_M_header, __t._M_header);
- __STD::swap(_M_node_count, __t._M_node_count);
- __STD::swap(_M_key_compare, __t._M_key_compare);
- }
-
-public:
- // insert/erase
- pair<iterator,bool> insert_unique(const value_type& __x);
- iterator insert_equal(const value_type& __x);
-
- iterator insert_unique(iterator __position, const value_type& __x);
- iterator insert_equal(iterator __position, const value_type& __x);
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- void insert_unique(_InputIterator __first, _InputIterator __last);
- template <class _InputIterator>
- void insert_equal(_InputIterator __first, _InputIterator __last);
-#else /* __STL_MEMBER_TEMPLATES */
- void insert_unique(const_iterator __first, const_iterator __last);
- void insert_unique(const value_type* __first, const value_type* __last);
- void insert_equal(const_iterator __first, const_iterator __last);
- void insert_equal(const value_type* __first, const value_type* __last);
-#endif /* __STL_MEMBER_TEMPLATES */
-
- void erase(iterator __position);
- size_type erase(const key_type& __x);
- void erase(iterator __first, iterator __last);
- void erase(const key_type* __first, const key_type* __last);
- void clear() {
- if (_M_node_count != 0) {
- _M_erase(_M_root());
- _M_leftmost() = _M_header;
- _M_root() = 0;
- _M_rightmost() = _M_header;
- _M_node_count = 0;
- }
- }
-
-public:
- // set operations:
- iterator find(const key_type& __x);
- const_iterator find(const key_type& __x) const;
- size_type count(const key_type& __x) const;
- iterator lower_bound(const key_type& __x);
- const_iterator lower_bound(const key_type& __x) const;
- iterator upper_bound(const key_type& __x);
- const_iterator upper_bound(const key_type& __x) const;
- pair<iterator,iterator> equal_range(const key_type& __x);
- pair<const_iterator, const_iterator> equal_range(const key_type& __x) const;
-
-public:
- // Debugging.
- bool __rb_verify() const;
-};
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-inline bool
-operator==(const _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>& __x,
- const _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>& __y)
-{
- return __x.size() == __y.size() &&
- equal(__x.begin(), __x.end(), __y.begin());
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-inline bool
-operator<(const _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>& __x,
- const _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>& __y)
-{
- return lexicographical_compare(__x.begin(), __x.end(),
- __y.begin(), __y.end());
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-inline void
-swap(_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>& __x,
- _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>& __y)
-{
- __x.swap(__y);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>&
-_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>
- ::operator=(const _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>& __x)
-{
- if (this != &__x) {
- // Note that _Key may be a constant type.
- clear();
- _M_node_count = 0;
- _M_key_compare = __x._M_key_compare;
- if (__x._M_root() == 0) {
- _M_root() = 0;
- _M_leftmost() = _M_header;
- _M_rightmost() = _M_header;
- }
- else {
- _M_root() = _M_copy(__x._M_root(), _M_header);
- _M_leftmost() = _S_minimum(_M_root());
- _M_rightmost() = _S_maximum(_M_root());
- _M_node_count = __x._M_node_count;
- }
- }
- return *this;
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::iterator
-_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>
- ::_M_insert(_Base_ptr __x_, _Base_ptr __y_, const _Value& __v)
-{
- _Link_type __x = (_Link_type) __x_;
- _Link_type __y = (_Link_type) __y_;
- _Link_type __z;
-
- if (__y == _M_header || __x != 0 ||
- _M_key_compare(_KeyOfValue()(__v), _S_key(__y))) {
- __z = _M_create_node(__v);
- _S_left(__y) = __z; // also makes _M_leftmost() = __z
- // when __y == _M_header
- if (__y == _M_header) {
- _M_root() = __z;
- _M_rightmost() = __z;
- }
- else if (__y == _M_leftmost())
- _M_leftmost() = __z; // maintain _M_leftmost() pointing to min node
- }
- else {
- __z = _M_create_node(__v);
- _S_right(__y) = __z;
- if (__y == _M_rightmost())
- _M_rightmost() = __z; // maintain _M_rightmost() pointing to max node
- }
- _S_parent(__z) = __y;
- _S_left(__z) = 0;
- _S_right(__z) = 0;
- _Rb_tree_rebalance(__z, _M_header->_M_parent);
- ++_M_node_count;
- return iterator(__z);
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::iterator
-_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>
- ::insert_equal(const _Value& __v)
-{
- _Link_type __y = _M_header;
- _Link_type __x = _M_root();
- while (__x != 0) {
- __y = __x;
- __x = _M_key_compare(_KeyOfValue()(__v), _S_key(__x)) ?
- _S_left(__x) : _S_right(__x);
- }
- return _M_insert(__x, __y, __v);
-}
-
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-pair<typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::iterator,
- bool>
-_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>
- ::insert_unique(const _Value& __v)
-{
- _Link_type __y = _M_header;
- _Link_type __x = _M_root();
- bool __comp = true;
- while (__x != 0) {
- __y = __x;
- __comp = _M_key_compare(_KeyOfValue()(__v), _S_key(__x));
- __x = __comp ? _S_left(__x) : _S_right(__x);
- }
- iterator __j = iterator(__y);
- if (__comp)
- if (__j == begin())
- return pair<iterator,bool>(_M_insert(__x, __y, __v), true);
- else
- --__j;
- if (_M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__v)))
- return pair<iterator,bool>(_M_insert(__x, __y, __v), true);
- return pair<iterator,bool>(__j, false);
-}
-
-
-template <class _Key, class _Val, class _KeyOfValue,
- class _Compare, class _Alloc>
-typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
-_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>
- ::insert_unique(iterator __position, const _Val& __v)
-{
- if (__position._M_node == _M_header->_M_left) { // begin()
- if (size() > 0 &&
- _M_key_compare(_KeyOfValue()(__v), _S_key(__position._M_node)))
- return _M_insert(__position._M_node, __position._M_node, __v);
- // first argument just needs to be non-null
- else
- return insert_unique(__v).first;
- } else if (__position._M_node == _M_header) { // end()
- if (_M_key_compare(_S_key(_M_rightmost()), _KeyOfValue()(__v)))
- return _M_insert(0, _M_rightmost(), __v);
- else
- return insert_unique(__v).first;
- } else {
- iterator __before = __position;
- --__before;
- if (_M_key_compare(_S_key(__before._M_node), _KeyOfValue()(__v))
- && _M_key_compare(_KeyOfValue()(__v), _S_key(__position._M_node))) {
- if (_S_right(__before._M_node) == 0)
- return _M_insert(0, __before._M_node, __v);
- else
- return _M_insert(__position._M_node, __position._M_node, __v);
- // first argument just needs to be non-null
- } else
- return insert_unique(__v).first;
- }
-}
-
-template <class _Key, class _Val, class _KeyOfValue,
- class _Compare, class _Alloc>
-typename _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::iterator
-_Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>
- ::insert_equal(iterator __position, const _Val& __v)
-{
- if (__position._M_node == _M_header->_M_left) { // begin()
- if (size() > 0 &&
- _M_key_compare(_KeyOfValue()(__v), _S_key(__position._M_node)))
- return _M_insert(__position._M_node, __position._M_node, __v);
- // first argument just needs to be non-null
- else
- return insert_equal(__v);
- } else if (__position._M_node == _M_header) {// end()
- if (!_M_key_compare(_KeyOfValue()(__v), _S_key(_M_rightmost())))
- return _M_insert(0, _M_rightmost(), __v);
- else
- return insert_equal(__v);
- } else {
- iterator __before = __position;
- --__before;
- if (!_M_key_compare(_KeyOfValue()(__v), _S_key(__before._M_node))
- && !_M_key_compare(_S_key(__position._M_node), _KeyOfValue()(__v))) {
- if (_S_right(__before._M_node) == 0)
- return _M_insert(0, __before._M_node, __v);
- else
- return _M_insert(__position._M_node, __position._M_node, __v);
- // first argument just needs to be non-null
- } else
- return insert_equal(__v);
- }
-}
-
-#ifdef __STL_MEMBER_TEMPLATES
-
-template <class _Key, class _Val, class _KoV, class _Cmp, class _Alloc>
- template<class _II>
-void _Rb_tree<_Key,_Val,_KoV,_Cmp,_Alloc>
- ::insert_equal(_II __first, _II __last)
-{
- for ( ; __first != __last; ++__first)
- insert_equal(*__first);
-}
-
-template <class _Key, class _Val, class _KoV, class _Cmp, class _Alloc>
- template<class _II>
-void _Rb_tree<_Key,_Val,_KoV,_Cmp,_Alloc>
- ::insert_unique(_II __first, _II __last) {
- for ( ; __first != __last; ++__first)
- insert_unique(*__first);
-}
-
-#else /* __STL_MEMBER_TEMPLATES */
-
-template <class _Key, class _Val, class _KoV, class _Cmp, class _Alloc>
-void
-_Rb_tree<_Key,_Val,_KoV,_Cmp,_Alloc>
- ::insert_equal(const _Val* __first, const _Val* __last)
-{
- for ( ; __first != __last; ++__first)
- insert_equal(*__first);
-}
-
-template <class _Key, class _Val, class _KoV, class _Cmp, class _Alloc>
-void
-_Rb_tree<_Key,_Val,_KoV,_Cmp,_Alloc>
- ::insert_equal(const_iterator __first, const_iterator __last)
-{
- for ( ; __first != __last; ++__first)
- insert_equal(*__first);
-}
-
-template <class _Key, class _Val, class _KoV, class _Cmp, class _Alloc>
-void
-_Rb_tree<_Key,_Val,_KoV,_Cmp,_Alloc>
- ::insert_unique(const _Val* __first, const _Val* __last)
-{
- for ( ; __first != __last; ++__first)
- insert_unique(*__first);
-}
-
-template <class _Key, class _Val, class _KoV, class _Cmp, class _Alloc>
-void _Rb_tree<_Key,_Val,_KoV,_Cmp,_Alloc>
- ::insert_unique(const_iterator __first, const_iterator __last)
-{
- for ( ; __first != __last; ++__first)
- insert_unique(*__first);
-}
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-inline void _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>
- ::erase(iterator __position)
-{
- _Link_type __y =
- (_Link_type) _Rb_tree_rebalance_for_erase(__position._M_node,
- _M_header->_M_parent,
- _M_header->_M_left,
- _M_header->_M_right);
- destroy_node(__y);
- --_M_node_count;
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::size_type
-_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::erase(const _Key& __x)
-{
- pair<iterator,iterator> __p = equal_range(__x);
- size_type __n = 0;
- distance(__p.first, __p.second, __n);
- erase(__p.first, __p.second);
- return __n;
-}
-
-template <class _Key, class _Val, class _KoV, class _Compare, class _Alloc>
-typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type
-_Rb_tree<_Key,_Val,_KoV,_Compare,_Alloc>
- ::_M_copy(_Link_type __x, _Link_type __p)
-{
- // structural copy. __x and __p must be non-null.
- _Link_type __top = _M_clone_node(__x);
- __top->_M_parent = __p;
-
- __STL_TRY {
- if (__x->_M_right)
- __top->_M_right = _M_copy(_S_right(__x), __top);
- __p = __top;
- __x = _S_left(__x);
-
- while (__x != 0) {
- _Link_type __y = _M_clone_node(__x);
- __p->_M_left = __y;
- __y->_M_parent = __p;
- if (__x->_M_right)
- __y->_M_right = _M_copy(_S_right(__x), __y);
- __p = __y;
- __x = _S_left(__x);
- }
- }
- __STL_UNWIND(_M_erase(__top));
-
- return __top;
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-void _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>
- ::_M_erase(_Link_type __x)
-{
- // erase without rebalancing
- while (__x != 0) {
- _M_erase(_S_right(__x));
- _Link_type __y = _S_left(__x);
- destroy_node(__x);
- __x = __y;
- }
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-void _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>
- ::erase(iterator __first, iterator __last)
-{
- if (__first == begin() && __last == end())
- clear();
- else
- while (__first != __last) erase(__first++);
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-void _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>
- ::erase(const _Key* __first, const _Key* __last)
-{
- while (__first != __last) erase(*__first++);
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::iterator
-_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::find(const _Key& __k)
-{
- _Link_type __y = _M_header; // Last node which is not less than __k.
- _Link_type __x = _M_root(); // Current node.
-
- while (__x != 0)
- if (!_M_key_compare(_S_key(__x), __k))
- __y = __x, __x = _S_left(__x);
- else
- __x = _S_right(__x);
-
- iterator __j = iterator(__y);
- return (__j == end() || _M_key_compare(__k, _S_key(__j._M_node))) ?
- end() : __j;
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::const_iterator
-_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::find(const _Key& __k) const
-{
- _Link_type __y = _M_header; /* Last node which is not less than __k. */
- _Link_type __x = _M_root(); /* Current node. */
-
- while (__x != 0) {
- if (!_M_key_compare(_S_key(__x), __k))
- __y = __x, __x = _S_left(__x);
- else
- __x = _S_right(__x);
- }
- const_iterator __j = const_iterator(__y);
- return (__j == end() || _M_key_compare(__k, _S_key(__j._M_node))) ?
- end() : __j;
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::size_type
-_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>
- ::count(const _Key& __k) const
-{
- pair<const_iterator, const_iterator> __p = equal_range(__k);
- size_type __n = 0;
- distance(__p.first, __p.second, __n);
- return __n;
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::iterator
-_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>
- ::lower_bound(const _Key& __k)
-{
- _Link_type __y = _M_header; /* Last node which is not less than __k. */
- _Link_type __x = _M_root(); /* Current node. */
-
- while (__x != 0)
- if (!_M_key_compare(_S_key(__x), __k))
- __y = __x, __x = _S_left(__x);
- else
- __x = _S_right(__x);
-
- return iterator(__y);
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::const_iterator
-_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>
- ::lower_bound(const _Key& __k) const
-{
- _Link_type __y = _M_header; /* Last node which is not less than __k. */
- _Link_type __x = _M_root(); /* Current node. */
-
- while (__x != 0)
- if (!_M_key_compare(_S_key(__x), __k))
- __y = __x, __x = _S_left(__x);
- else
- __x = _S_right(__x);
-
- return const_iterator(__y);
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::iterator
-_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>
- ::upper_bound(const _Key& __k)
-{
- _Link_type __y = _M_header; /* Last node which is greater than __k. */
- _Link_type __x = _M_root(); /* Current node. */
-
- while (__x != 0)
- if (_M_key_compare(__k, _S_key(__x)))
- __y = __x, __x = _S_left(__x);
- else
- __x = _S_right(__x);
-
- return iterator(__y);
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::const_iterator
-_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>
- ::upper_bound(const _Key& __k) const
-{
- _Link_type __y = _M_header; /* Last node which is greater than __k. */
- _Link_type __x = _M_root(); /* Current node. */
-
- while (__x != 0)
- if (_M_key_compare(__k, _S_key(__x)))
- __y = __x, __x = _S_left(__x);
- else
- __x = _S_right(__x);
-
- return const_iterator(__y);
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-inline
-pair<typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::iterator,
- typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::iterator>
-_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>
- ::equal_range(const _Key& __k)
-{
- return pair<iterator, iterator>(lower_bound(__k), upper_bound(__k));
-}
-
-template <class _Key, class _Value, class _KoV, class _Compare, class _Alloc>
-inline
-pair<typename _Rb_tree<_Key, _Value, _KoV, _Compare, _Alloc>::const_iterator,
- typename _Rb_tree<_Key, _Value, _KoV, _Compare, _Alloc>::const_iterator>
-_Rb_tree<_Key, _Value, _KoV, _Compare, _Alloc>
- ::equal_range(const _Key& __k) const
-{
- return pair<const_iterator,const_iterator>(lower_bound(__k),
- upper_bound(__k));
-}
-
-inline int
-__black_count(_Rb_tree_node_base* __node, _Rb_tree_node_base* __root)
-{
- if (__node == 0)
- return 0;
- else {
- int __bc = __node->_M_color == _S_rb_tree_black ? 1 : 0;
- if (__node == __root)
- return __bc;
- else
- return __bc + __black_count(__node->_M_parent, __root);
- }
-}
-
-template <class _Key, class _Value, class _KeyOfValue,
- class _Compare, class _Alloc>
-bool _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const
-{
- if (_M_node_count == 0 || begin() == end())
- return _M_node_count == 0 && begin() == end() &&
- _M_header->_M_left == _M_header && _M_header->_M_right == _M_header;
-
- int __len = __black_count(_M_leftmost(), _M_root());
- for (const_iterator __it = begin(); __it != end(); ++__it) {
- _Link_type __x = (_Link_type) __it._M_node;
- _Link_type __L = _S_left(__x);
- _Link_type __R = _S_right(__x);
-
- if (__x->_M_color == _S_rb_tree_red)
- if ((__L && __L->_M_color == _S_rb_tree_red) ||
- (__R && __R->_M_color == _S_rb_tree_red))
- return false;
-
- if (__L && _M_key_compare(_S_key(__x), _S_key(__L)))
- return false;
- if (__R && _M_key_compare(_S_key(__R), _S_key(__x)))
- return false;
-
- if (!__L && !__R && __black_count(__x, _M_root()) != __len)
- return false;
- }
-
- if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root()))
- return false;
- if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root()))
- return false;
-
- return true;
-}
-
-// Class rb_tree is not part of the C++ standard. It is provided for
-// compatibility with the HP STL.
-
-template <class _Key, class _Value, class _KeyOfValue, class _Compare,
- class _Alloc = __STL_DEFAULT_ALLOCATOR(_Value) >
-struct rb_tree : public _Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc>
-{
- typedef _Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc> _Base;
- typedef typename _Base::allocator_type allocator_type;
-
- rb_tree(const _Compare& __comp = _Compare(),
- const allocator_type& __a = allocator_type())
- : _Base(__comp, __a) {}
-
- ~rb_tree() {}
-};
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1375
-#endif
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_TREE_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_uninitialized.h b/contrib/libstdc++/stl/stl_uninitialized.h
deleted file mode 100644
index 3146c82..0000000
--- a/contrib/libstdc++/stl/stl_uninitialized.h
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_UNINITIALIZED_H
-#define __SGI_STL_INTERNAL_UNINITIALIZED_H
-
-__STL_BEGIN_NAMESPACE
-
-// uninitialized_copy
-
-// Valid if copy construction is equivalent to assignment, and if the
-// destructor is trivial.
-template <class _InputIter, class _ForwardIter>
-inline _ForwardIter
-__uninitialized_copy_aux(_InputIter __first, _InputIter __last,
- _ForwardIter __result,
- __true_type)
-{
- return copy(__first, __last, __result);
-}
-
-template <class _InputIter, class _ForwardIter>
-_ForwardIter
-__uninitialized_copy_aux(_InputIter __first, _InputIter __last,
- _ForwardIter __result,
- __false_type)
-{
- _ForwardIter __cur = __result;
- __STL_TRY {
- for ( ; __first != __last; ++__first, ++__cur)
- construct(&*__cur, *__first);
- return __cur;
- }
- __STL_UNWIND(destroy(__result, __cur));
-}
-
-
-template <class _InputIter, class _ForwardIter, class _Tp>
-inline _ForwardIter
-__uninitialized_copy(_InputIter __first, _InputIter __last,
- _ForwardIter __result, _Tp*)
-{
- typedef typename __type_traits<_Tp>::is_POD_type _Is_POD;
- return __uninitialized_copy_aux(__first, __last, __result, _Is_POD());
-}
-
-template <class _InputIter, class _ForwardIter>
-inline _ForwardIter
- uninitialized_copy(_InputIter __first, _InputIter __last,
- _ForwardIter __result)
-{
- return __uninitialized_copy(__first, __last, __result,
- __VALUE_TYPE(__result));
-}
-
-inline char* uninitialized_copy(const char* __first, const char* __last,
- char* __result) {
- memmove(__result, __first, __last - __first);
- return __result + (__last - __first);
-}
-
-inline wchar_t*
-uninitialized_copy(const wchar_t* __first, const wchar_t* __last,
- wchar_t* __result)
-{
- memmove(__result, __first, sizeof(wchar_t) * (__last - __first));
- return __result + (__last - __first);
-}
-
-// uninitialized_copy_n (not part of the C++ standard)
-
-template <class _InputIter, class _Size, class _ForwardIter>
-pair<_InputIter, _ForwardIter>
-__uninitialized_copy_n(_InputIter __first, _Size __count,
- _ForwardIter __result,
- input_iterator_tag)
-{
- _ForwardIter __cur = __result;
- __STL_TRY {
- for ( ; __count > 0 ; --__count, ++__first, ++__cur)
- construct(&*__cur, *__first);
- return pair<_InputIter, _ForwardIter>(__first, __cur);
- }
- __STL_UNWIND(destroy(__result, __cur));
-}
-
-template <class _RandomAccessIter, class _Size, class _ForwardIter>
-inline pair<_RandomAccessIter, _ForwardIter>
-__uninitialized_copy_n(_RandomAccessIter __first, _Size __count,
- _ForwardIter __result,
- random_access_iterator_tag) {
- _RandomAccessIter __last = __first + __count;
- return pair<_RandomAccessIter, _ForwardIter>(
- __last,
- uninitialized_copy(__first, __last, __result));
-}
-
-template <class _InputIter, class _Size, class _ForwardIter>
-inline pair<_InputIter, _ForwardIter>
-__uninitialized_copy_n(_InputIter __first, _Size __count,
- _ForwardIter __result) {
- return __uninitialized_copy_n(__first, __count, __result,
- __ITERATOR_CATEGORY(__first));
-}
-
-template <class _InputIter, class _Size, class _ForwardIter>
-inline pair<_InputIter, _ForwardIter>
-uninitialized_copy_n(_InputIter __first, _Size __count,
- _ForwardIter __result) {
- return __uninitialized_copy_n(__first, __count, __result,
- __ITERATOR_CATEGORY(__first));
-}
-
-// Valid if copy construction is equivalent to assignment, and if the
-// destructor is trivial.
-template <class _ForwardIter, class _Tp>
-inline void
-__uninitialized_fill_aux(_ForwardIter __first, _ForwardIter __last,
- const _Tp& __x, __true_type)
-{
- fill(__first, __last, __x);
-}
-
-template <class _ForwardIter, class _Tp>
-void
-__uninitialized_fill_aux(_ForwardIter __first, _ForwardIter __last,
- const _Tp& __x, __false_type)
-{
- _ForwardIter __cur = __first;
- __STL_TRY {
- for ( ; __cur != __last; ++__cur)
- construct(&*__cur, __x);
- }
- __STL_UNWIND(destroy(__first, __cur));
-}
-
-template <class _ForwardIter, class _Tp, class _Tp1>
-inline void __uninitialized_fill(_ForwardIter __first,
- _ForwardIter __last, const _Tp& __x, _Tp1*)
-{
- typedef typename __type_traits<_Tp1>::is_POD_type _Is_POD;
- __uninitialized_fill_aux(__first, __last, __x, _Is_POD());
-
-}
-
-template <class _ForwardIter, class _Tp>
-inline void uninitialized_fill(_ForwardIter __first,
- _ForwardIter __last,
- const _Tp& __x)
-{
- __uninitialized_fill(__first, __last, __x, __VALUE_TYPE(__first));
-}
-
-// Valid if copy construction is equivalent to assignment, and if the
-// destructor is trivial.
-template <class _ForwardIter, class _Size, class _Tp>
-inline _ForwardIter
-__uninitialized_fill_n_aux(_ForwardIter __first, _Size __n,
- const _Tp& __x, __true_type)
-{
- return fill_n(__first, __n, __x);
-}
-
-template <class _ForwardIter, class _Size, class _Tp>
-_ForwardIter
-__uninitialized_fill_n_aux(_ForwardIter __first, _Size __n,
- const _Tp& __x, __false_type)
-{
- _ForwardIter __cur = __first;
- __STL_TRY {
- for ( ; __n > 0; --__n, ++__cur)
- construct(&*__cur, __x);
- return __cur;
- }
- __STL_UNWIND(destroy(__first, __cur));
-}
-
-template <class _ForwardIter, class _Size, class _Tp, class _Tp1>
-inline _ForwardIter
-__uninitialized_fill_n(_ForwardIter __first, _Size __n, const _Tp& __x, _Tp1*)
-{
- typedef typename __type_traits<_Tp1>::is_POD_type _Is_POD;
- return __uninitialized_fill_n_aux(__first, __n, __x, _Is_POD());
-}
-
-template <class _ForwardIter, class _Size, class _Tp>
-inline _ForwardIter
-uninitialized_fill_n(_ForwardIter __first, _Size __n, const _Tp& __x)
-{
- return __uninitialized_fill_n(__first, __n, __x, __VALUE_TYPE(__first));
-}
-
-// Extensions: __uninitialized_copy_copy, __uninitialized_copy_fill,
-// __uninitialized_fill_copy.
-
-// __uninitialized_copy_copy
-// Copies [first1, last1) into [result, result + (last1 - first1)), and
-// copies [first2, last2) into
-// [result, result + (last1 - first1) + (last2 - first2)).
-
-template <class _InputIter1, class _InputIter2, class _ForwardIter>
-inline _ForwardIter
-__uninitialized_copy_copy(_InputIter1 __first1, _InputIter1 __last1,
- _InputIter2 __first2, _InputIter2 __last2,
- _ForwardIter __result)
-{
- _ForwardIter __mid = uninitialized_copy(__first1, __last1, __result);
- __STL_TRY {
- return uninitialized_copy(__first2, __last2, __mid);
- }
- __STL_UNWIND(destroy(__result, __mid));
-}
-
-// __uninitialized_fill_copy
-// Fills [result, mid) with x, and copies [first, last) into
-// [mid, mid + (last - first)).
-template <class _ForwardIter, class _Tp, class _InputIter>
-inline _ForwardIter
-__uninitialized_fill_copy(_ForwardIter __result, _ForwardIter __mid,
- const _Tp& __x,
- _InputIter __first, _InputIter __last)
-{
- uninitialized_fill(__result, __mid, __x);
- __STL_TRY {
- return uninitialized_copy(__first, __last, __mid);
- }
- __STL_UNWIND(destroy(__result, __mid));
-}
-
-// __uninitialized_copy_fill
-// Copies [first1, last1) into [first2, first2 + (last1 - first1)), and
-// fills [first2 + (last1 - first1), last2) with x.
-template <class _InputIter, class _ForwardIter, class _Tp>
-inline void
-__uninitialized_copy_fill(_InputIter __first1, _InputIter __last1,
- _ForwardIter __first2, _ForwardIter __last2,
- const _Tp& __x)
-{
- _ForwardIter __mid2 = uninitialized_copy(__first1, __last1, __first2);
- __STL_TRY {
- uninitialized_fill(__mid2, __last2, __x);
- }
- __STL_UNWIND(destroy(__first2, __mid2));
-}
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_UNINITIALIZED_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/stl_vector.h b/contrib/libstdc++/stl/stl_vector.h
deleted file mode 100644
index d1149e9..0000000
--- a/contrib/libstdc++/stl/stl_vector.h
+++ /dev/null
@@ -1,823 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/* NOTE: This is an internal header file, included by other STL headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef __SGI_STL_INTERNAL_VECTOR_H
-#define __SGI_STL_INTERNAL_VECTOR_H
-
-__STL_BEGIN_NAMESPACE
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma set woff 1174
-#pragma set woff 1375
-#endif
-
-// The vector base class serves two purposes. First, its constructor
-// and destructor allocate (but don't initialize) storage. This makes
-// exception safety easier. Second, the base class encapsulates all of
-// the differences between SGI-style allocators and standard-conforming
-// allocators.
-
-#ifdef __STL_USE_STD_ALLOCATORS
-
-// Base class for ordinary allocators.
-template <class _Tp, class _Allocator, bool _IsStatic>
-class _Vector_alloc_base {
-public:
- typedef typename _Alloc_traits<_Tp, _Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return _M_data_allocator; }
-
- _Vector_alloc_base(const allocator_type& __a)
- : _M_data_allocator(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0)
- {}
-
-protected:
- allocator_type _M_data_allocator;
- _Tp* _M_start;
- _Tp* _M_finish;
- _Tp* _M_end_of_storage;
-
- _Tp* _M_allocate(size_t __n)
- { return _M_data_allocator.allocate(__n); }
- void _M_deallocate(_Tp* __p, size_t __n)
- { if (__p) _M_data_allocator.deallocate(__p, __n); }
-};
-
-// Specialization for allocators that have the property that we don't
-// actually have to store an allocator object.
-template <class _Tp, class _Allocator>
-class _Vector_alloc_base<_Tp, _Allocator, true> {
-public:
- typedef typename _Alloc_traits<_Tp, _Allocator>::allocator_type
- allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
-
- _Vector_alloc_base(const allocator_type&)
- : _M_start(0), _M_finish(0), _M_end_of_storage(0)
- {}
-
-protected:
- _Tp* _M_start;
- _Tp* _M_finish;
- _Tp* _M_end_of_storage;
-
- typedef typename _Alloc_traits<_Tp, _Allocator>::_Alloc_type _Alloc_type;
- _Tp* _M_allocate(size_t __n)
- { return _Alloc_type::allocate(__n); }
- void _M_deallocate(_Tp* __p, size_t __n)
- { _Alloc_type::deallocate(__p, __n);}
-};
-
-template <class _Tp, class _Alloc>
-struct _Vector_base
- : public _Vector_alloc_base<_Tp, _Alloc,
- _Alloc_traits<_Tp, _Alloc>::_S_instanceless>
-{
- typedef _Vector_alloc_base<_Tp, _Alloc,
- _Alloc_traits<_Tp, _Alloc>::_S_instanceless>
- _Base;
- typedef typename _Base::allocator_type allocator_type;
-
- _Vector_base(const allocator_type& __a) : _Base(__a) {}
- _Vector_base(size_t __n, const allocator_type& __a) : _Base(__a) {
- _M_start = _M_allocate(__n);
- _M_finish = _M_start;
- _M_end_of_storage = _M_start + __n;
- }
-
- ~_Vector_base() { _M_deallocate(_M_start, _M_end_of_storage - _M_start); }
-};
-
-#else /* __STL_USE_STD_ALLOCATORS */
-
-template <class _Tp, class _Alloc>
-class _Vector_base {
-public:
- typedef _Alloc allocator_type;
- allocator_type get_allocator() const { return allocator_type(); }
-
- _Vector_base(const _Alloc&)
- : _M_start(0), _M_finish(0), _M_end_of_storage(0) {}
- _Vector_base(size_t __n, const _Alloc&)
- : _M_start(0), _M_finish(0), _M_end_of_storage(0)
- {
- _M_start = _M_allocate(__n);
- _M_finish = _M_start;
- _M_end_of_storage = _M_start + __n;
- }
-
- ~_Vector_base() { _M_deallocate(_M_start, _M_end_of_storage - _M_start); }
-
-protected:
- _Tp* _M_start;
- _Tp* _M_finish;
- _Tp* _M_end_of_storage;
-
- typedef simple_alloc<_Tp, _Alloc> _M_data_allocator;
- _Tp* _M_allocate(size_t __n)
- { return _M_data_allocator::allocate(__n); }
- void _M_deallocate(_Tp* __p, size_t __n)
- { _M_data_allocator::deallocate(__p, __n); }
-};
-
-#endif /* __STL_USE_STD_ALLOCATORS */
-
-template <class _Tp, class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
-class vector : protected _Vector_base<_Tp, _Alloc>
-{
-private:
- typedef _Vector_base<_Tp, _Alloc> _Base;
-public:
- typedef _Tp value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type* iterator;
- typedef const value_type* const_iterator;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
-
- typedef typename _Base::allocator_type allocator_type;
- allocator_type get_allocator() const { return _Base::get_allocator(); }
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
- typedef reverse_iterator<const_iterator> const_reverse_iterator;
- typedef reverse_iterator<iterator> reverse_iterator;
-#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */
- typedef reverse_iterator<const_iterator, value_type, const_reference,
- difference_type> const_reverse_iterator;
- typedef reverse_iterator<iterator, value_type, reference, difference_type>
- reverse_iterator;
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-protected:
-#ifdef __STL_HAS_NAMESPACES
- using _Base::_M_allocate;
- using _Base::_M_deallocate;
- using _Base::_M_start;
- using _Base::_M_finish;
- using _Base::_M_end_of_storage;
-#endif /* __STL_HAS_NAMESPACES */
-
-protected:
- void _M_insert_aux(iterator __position, const _Tp& __x);
- void _M_insert_aux(iterator __position);
-
-public:
- iterator begin() { return _M_start; }
- const_iterator begin() const { return _M_start; }
- iterator end() { return _M_finish; }
- const_iterator end() const { return _M_finish; }
-
- reverse_iterator rbegin()
- { return reverse_iterator(end()); }
- const_reverse_iterator rbegin() const
- { return const_reverse_iterator(end()); }
- reverse_iterator rend()
- { return reverse_iterator(begin()); }
- const_reverse_iterator rend() const
- { return const_reverse_iterator(begin()); }
-
- size_type size() const
- { return size_type(end() - begin()); }
- size_type max_size() const
- { return size_type(-1) / sizeof(_Tp); }
- size_type capacity() const
- { return size_type(_M_end_of_storage - begin()); }
- bool empty() const
- { return begin() == end(); }
-
- reference operator[](size_type __n) { return *(begin() + __n); }
- const_reference operator[](size_type __n) const { return *(begin() + __n); }
-
- explicit vector(const allocator_type& __a = allocator_type())
- : _Base(__a) {}
-
- vector(size_type __n, const _Tp& __value,
- const allocator_type& __a = allocator_type())
- : _Base(__n, __a)
- { _M_finish = uninitialized_fill_n(_M_start, __n, __value); }
-
- explicit vector(size_type __n)
- : _Base(__n, allocator_type())
- { _M_finish = uninitialized_fill_n(_M_start, __n, _Tp()); }
-
- vector(const vector<_Tp, _Alloc>& __x)
- : _Base(__x.size(), __x.get_allocator())
- { _M_finish = uninitialized_copy(__x.begin(), __x.end(), _M_start); }
-
-#ifdef __STL_MEMBER_TEMPLATES
- // Check whether it's an integral type. If so, it's not an iterator.
- template <class _InputIterator>
- vector(_InputIterator __first, _InputIterator __last,
- const allocator_type& __a = allocator_type()) : _Base(__a) {
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_initialize_aux(__first, __last, _Integral());
- }
-
- template <class _Integer>
- void _M_initialize_aux(_Integer __n, _Integer __value, __true_type) {
- _M_start = _M_allocate(__n);
- _M_end_of_storage = _M_start + __n;
- _M_finish = uninitialized_fill_n(_M_start, __n, __value);
- }
-
- template <class _InputIterator>
- void _M_initialize_aux(_InputIterator __first, _InputIterator __last,
- __false_type) {
- _M_range_initialize(__first, __last, __ITERATOR_CATEGORY(__first));
- }
-
-#else
- vector(const _Tp* __first, const _Tp* __last,
- const allocator_type& __a = allocator_type())
- : _Base(__last - __first, __a)
- { _M_finish = uninitialized_copy(__first, __last, _M_start); }
-#endif /* __STL_MEMBER_TEMPLATES */
-
- ~vector() { destroy(_M_start, _M_finish); }
-
- vector<_Tp, _Alloc>& operator=(const vector<_Tp, _Alloc>& __x);
- void reserve(size_type __n) {
- if (capacity() < __n) {
- const size_type __old_size = size();
- iterator __tmp = _M_allocate_and_copy(__n, _M_start, _M_finish);
- destroy(_M_start, _M_finish);
- _M_deallocate(_M_start, _M_end_of_storage - _M_start);
- _M_start = __tmp;
- _M_finish = __tmp + __old_size;
- _M_end_of_storage = _M_start + __n;
- }
- }
-
- // assign(), a generalized assignment member function. Two
- // versions: one that takes a count, and one that takes a range.
- // The range version is a member template, so we dispatch on whether
- // or not the type is an integer.
-
- void assign(size_type __n, const _Tp& __val);
-
-#ifdef __STL_MEMBER_TEMPLATES
-
- template <class _InputIterator>
- void assign(_InputIterator __first, _InputIterator __last) {
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_assign_dispatch(__first, __last, _Integral());
- }
-
- template <class _Integer>
- void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
- { assign((size_type) __n, (_Tp) __val); }
-
- template <class _InputIter>
- void _M_assign_dispatch(_InputIter __first, _InputIter __last, __false_type)
- { _M_assign_aux(__first, __last, __ITERATOR_CATEGORY(__first)); }
-
- template <class _InputIterator>
- void _M_assign_aux(_InputIterator __first, _InputIterator __last,
- input_iterator_tag);
-
- template <class _ForwardIterator>
- void _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
- forward_iterator_tag);
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
- reference front() { return *begin(); }
- const_reference front() const { return *begin(); }
- reference back() { return *(end() - 1); }
- const_reference back() const { return *(end() - 1); }
-
- void push_back(const _Tp& __x) {
- if (_M_finish != _M_end_of_storage) {
- construct(_M_finish, __x);
- ++_M_finish;
- }
- else
- _M_insert_aux(end(), __x);
- }
- void push_back() {
- if (_M_finish != _M_end_of_storage) {
- construct(_M_finish);
- ++_M_finish;
- }
- else
- _M_insert_aux(end());
- }
- void swap(vector<_Tp, _Alloc>& __x) {
- __STD::swap(_M_start, __x._M_start);
- __STD::swap(_M_finish, __x._M_finish);
- __STD::swap(_M_end_of_storage, __x._M_end_of_storage);
- }
-
- iterator insert(iterator __position, const _Tp& __x) {
- size_type __n = __position - begin();
- if (_M_finish != _M_end_of_storage && __position == end()) {
- construct(_M_finish, __x);
- ++_M_finish;
- }
- else
- _M_insert_aux(__position, __x);
- return begin() + __n;
- }
- iterator insert(iterator __position) {
- size_type __n = __position - begin();
- if (_M_finish != _M_end_of_storage && __position == end()) {
- construct(_M_finish);
- ++_M_finish;
- }
- else
- _M_insert_aux(__position);
- return begin() + __n;
- }
-#ifdef __STL_MEMBER_TEMPLATES
- // Check whether it's an integral type. If so, it's not an iterator.
- template <class _InputIterator>
- void insert(iterator __pos, _InputIterator __first, _InputIterator __last) {
- typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
- _M_insert_dispatch(__pos, __first, __last, _Integral());
- }
-
- template <class _Integer>
- void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val,
- __true_type) {
- insert(__pos, (size_type) __n, (_Tp) __val);
- }
-
- template <class _InputIterator>
- void _M_insert_dispatch(iterator __pos,
- _InputIterator __first, _InputIterator __last,
- __false_type) {
- _M_range_insert(__pos, __first, __last, __ITERATOR_CATEGORY(__first));
- }
-#else /* __STL_MEMBER_TEMPLATES */
- void insert(iterator __position,
- const_iterator __first, const_iterator __last);
-#endif /* __STL_MEMBER_TEMPLATES */
-
- void insert (iterator __pos, size_type __n, const _Tp& __x);
-
- void pop_back() {
- --_M_finish;
- destroy(_M_finish);
- }
- iterator erase(iterator __position) {
- if (__position + 1 != end())
- copy(__position + 1, _M_finish, __position);
- --_M_finish;
- destroy(_M_finish);
- return __position;
- }
- iterator erase(iterator __first, iterator __last) {
- iterator __i = copy(__last, _M_finish, __first);
- destroy(__i, _M_finish);
- _M_finish = _M_finish - (__last - __first);
- return __first;
- }
-
- void resize(size_type __new_size, const _Tp& __x) {
- if (__new_size < size())
- erase(begin() + __new_size, end());
- else
- insert(end(), __new_size - size(), __x);
- }
- void resize(size_type __new_size) { resize(__new_size, _Tp()); }
- void clear() { erase(begin(), end()); }
-
-protected:
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _ForwardIterator>
- iterator _M_allocate_and_copy(size_type __n, _ForwardIterator __first,
- _ForwardIterator __last)
-{
- iterator __result = _M_allocate(__n);
- __STL_TRY {
- uninitialized_copy(__first, __last, __result);
- return __result;
- }
- __STL_UNWIND(_M_deallocate(__result, __n));
- }
-#else /* __STL_MEMBER_TEMPLATES */
- iterator _M_allocate_and_copy(size_type __n, const_iterator __first,
- const_iterator __last)
- {
- iterator __result = _M_allocate(__n);
- __STL_TRY {
- uninitialized_copy(__first, __last, __result);
- return __result;
- }
- __STL_UNWIND(_M_deallocate(__result, __n));
- }
-#endif /* __STL_MEMBER_TEMPLATES */
-
-
-#ifdef __STL_MEMBER_TEMPLATES
- template <class _InputIterator>
- void _M_range_initialize(_InputIterator __first,
- _InputIterator __last, input_iterator_tag)
- {
- for ( ; __first != __last; ++__first)
- push_back(*__first);
- }
-
- // This function is only called by the constructor.
- template <class _ForwardIterator>
- void _M_range_initialize(_ForwardIterator __first,
- _ForwardIterator __last, forward_iterator_tag)
- {
- size_type __n = 0;
- distance(__first, __last, __n);
- _M_start = _M_allocate(__n);
- _M_end_of_storage = _M_start + __n;
- _M_finish = uninitialized_copy(__first, __last, _M_start);
- }
-
- template <class _InputIterator>
- void _M_range_insert(iterator __pos,
- _InputIterator __first, _InputIterator __last,
- input_iterator_tag);
-
- template <class _ForwardIterator>
- void _M_range_insert(iterator __pos,
- _ForwardIterator __first, _ForwardIterator __last,
- forward_iterator_tag);
-
-#endif /* __STL_MEMBER_TEMPLATES */
-};
-
-template <class _Tp, class _Alloc>
-inline bool
-operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
-{
- return __x.size() == __y.size() &&
- equal(__x.begin(), __x.end(), __y.begin());
-}
-
-template <class _Tp, class _Alloc>
-inline bool
-operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
-{
- return lexicographical_compare(__x.begin(), __x.end(),
- __y.begin(), __y.end());
-}
-
-#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
-
-template <class _Tp, class _Alloc>
-inline void swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y)
-{
- __x.swap(__y);
-}
-
-#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
-
-template <class _Tp, class _Alloc>
-vector<_Tp,_Alloc>&
-vector<_Tp,_Alloc>::operator=(const vector<_Tp, _Alloc>& __x)
-{
- if (&__x != this) {
- const size_type __xlen = __x.size();
- if (__xlen > capacity()) {
- iterator __tmp = _M_allocate_and_copy(__xlen, __x.begin(), __x.end());
- destroy(_M_start, _M_finish);
- _M_deallocate(_M_start, _M_end_of_storage - _M_start);
- _M_start = __tmp;
- _M_end_of_storage = _M_start + __xlen;
- }
- else if (size() >= __xlen) {
- iterator __i = copy(__x.begin(), __x.end(), begin());
- destroy(__i, _M_finish);
- }
- else {
- copy(__x.begin(), __x.begin() + size(), _M_start);
- uninitialized_copy(__x.begin() + size(), __x.end(), _M_finish);
- }
- _M_finish = _M_start + __xlen;
- }
- return *this;
-}
-
-template <class _Tp, class _Alloc>
-void vector<_Tp, _Alloc>::assign(size_t __n, const value_type& __val) {
- if (__n > capacity()) {
- vector<_Tp, _Alloc> __tmp(__n, __val, get_allocator());
- __tmp.swap(*this);
- }
- else if (__n > size()) {
- fill(begin(), end(), __val);
- _M_finish = uninitialized_fill_n(_M_finish, __n - size(), __val);
- }
- else
- erase(fill_n(begin(), __n, __val), end());
-}
-
-#ifdef __STL_MEMBER_TEMPLATES
-
-template <class _Tp, class _Alloc> template <class _InputIter>
-void vector<_Tp, _Alloc>::_M_assign_aux(_InputIter __first, _InputIter __last,
- input_iterator_tag) {
- iterator __cur = begin();
- for ( ; __first != __last && __cur != end(); ++__cur, ++__first)
- *__cur = *__first;
- if (__first == __last)
- erase(__cur, end());
- else
- insert(end(), __first, __last);
-}
-
-template <class _Tp, class _Alloc> template <class _ForwardIter>
-void
-vector<_Tp, _Alloc>::_M_assign_aux(_ForwardIter __first, _ForwardIter __last,
- forward_iterator_tag) {
- size_type __len = 0;
- distance(__first, __last, __len);
-
- if (__len > capacity()) {
- iterator __tmp = _M_allocate_and_copy(__len, __first, __last);
- destroy(_M_start, _M_finish);
- _M_deallocate(_M_start, _M_end_of_storage - _M_start);
- _M_start = __tmp;
- _M_end_of_storage = _M_finish = _M_start + __len;
- }
- else if (size() >= __len) {
- iterator __new_finish = copy(__first, __last, _M_start);
- destroy(__new_finish, _M_finish);
- _M_finish = __new_finish;
- }
- else {
- _ForwardIter __mid = __first;
- advance(__mid, size());
- copy(__first, __mid, _M_start);
- _M_finish = uninitialized_copy(__mid, __last, _M_finish);
- }
-}
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-template <class _Tp, class _Alloc>
-void
-vector<_Tp, _Alloc>::_M_insert_aux(iterator __position, const _Tp& __x)
-{
- if (_M_finish != _M_end_of_storage) {
- construct(_M_finish, *(_M_finish - 1));
- ++_M_finish;
- _Tp __x_copy = __x;
- copy_backward(__position, _M_finish - 2, _M_finish - 1);
- *__position = __x_copy;
- }
- else {
- const size_type __old_size = size();
- const size_type __len = __old_size != 0 ? 2 * __old_size : 1;
- iterator __new_start = _M_allocate(__len);
- iterator __new_finish = __new_start;
- __STL_TRY {
- __new_finish = uninitialized_copy(_M_start, __position, __new_start);
- construct(__new_finish, __x);
- ++__new_finish;
- __new_finish = uninitialized_copy(__position, _M_finish, __new_finish);
- }
- __STL_UNWIND((destroy(__new_start,__new_finish),
- _M_deallocate(__new_start,__len)));
- destroy(begin(), end());
- _M_deallocate(_M_start, _M_end_of_storage - _M_start);
- _M_start = __new_start;
- _M_finish = __new_finish;
- _M_end_of_storage = __new_start + __len;
- }
-}
-
-template <class _Tp, class _Alloc>
-void
-vector<_Tp, _Alloc>::_M_insert_aux(iterator __position)
-{
- if (_M_finish != _M_end_of_storage) {
- construct(_M_finish, *(_M_finish - 1));
- ++_M_finish;
- copy_backward(__position, _M_finish - 2, _M_finish - 1);
- *__position = _Tp();
- }
- else {
- const size_type __old_size = size();
- const size_type __len = __old_size != 0 ? 2 * __old_size : 1;
- iterator __new_start = _M_allocate(__len);
- iterator __new_finish = __new_start;
- __STL_TRY {
- __new_finish = uninitialized_copy(_M_start, __position, __new_start);
- construct(__new_finish);
- ++__new_finish;
- __new_finish = uninitialized_copy(__position, _M_finish, __new_finish);
- }
- __STL_UNWIND((destroy(__new_start,__new_finish),
- _M_deallocate(__new_start,__len)));
- destroy(begin(), end());
- _M_deallocate(_M_start, _M_end_of_storage - _M_start);
- _M_start = __new_start;
- _M_finish = __new_finish;
- _M_end_of_storage = __new_start + __len;
- }
-}
-
-template <class _Tp, class _Alloc>
-void vector<_Tp, _Alloc>::insert(iterator __position, size_type __n,
- const _Tp& __x)
-{
- if (__n != 0) {
- if (size_type(_M_end_of_storage - _M_finish) >= __n) {
- _Tp __x_copy = __x;
- const size_type __elems_after = _M_finish - __position;
- iterator __old_finish = _M_finish;
- if (__elems_after > __n) {
- uninitialized_copy(_M_finish - __n, _M_finish, _M_finish);
- _M_finish += __n;
- copy_backward(__position, __old_finish - __n, __old_finish);
- fill(__position, __position + __n, __x_copy);
- }
- else {
- uninitialized_fill_n(_M_finish, __n - __elems_after, __x_copy);
- _M_finish += __n - __elems_after;
- uninitialized_copy(__position, __old_finish, _M_finish);
- _M_finish += __elems_after;
- fill(__position, __old_finish, __x_copy);
- }
- }
- else {
- const size_type __old_size = size();
- const size_type __len = __old_size + max(__old_size, __n);
- iterator __new_start = _M_allocate(__len);
- iterator __new_finish = __new_start;
- __STL_TRY {
- __new_finish = uninitialized_copy(_M_start, __position, __new_start);
- __new_finish = uninitialized_fill_n(__new_finish, __n, __x);
- __new_finish
- = uninitialized_copy(__position, _M_finish, __new_finish);
- }
- __STL_UNWIND((destroy(__new_start,__new_finish),
- _M_deallocate(__new_start,__len)));
- destroy(_M_start, _M_finish);
- _M_deallocate(_M_start, _M_end_of_storage - _M_start);
- _M_start = __new_start;
- _M_finish = __new_finish;
- _M_end_of_storage = __new_start + __len;
- }
- }
-}
-
-#ifdef __STL_MEMBER_TEMPLATES
-
-template <class _Tp, class _Alloc> template <class _InputIterator>
-void
-vector<_Tp, _Alloc>::_M_range_insert(iterator __pos,
- _InputIterator __first,
- _InputIterator __last,
- input_iterator_tag)
-{
- for ( ; __first != __last; ++__first) {
- __pos = insert(__pos, *__first);
- ++__pos;
- }
-}
-
-template <class _Tp, class _Alloc> template <class _ForwardIterator>
-void
-vector<_Tp, _Alloc>::_M_range_insert(iterator __position,
- _ForwardIterator __first,
- _ForwardIterator __last,
- forward_iterator_tag)
-{
- if (__first != __last) {
- size_type __n = 0;
- distance(__first, __last, __n);
- if (size_type(_M_end_of_storage - _M_finish) >= __n) {
- const size_type __elems_after = _M_finish - __position;
- iterator __old_finish = _M_finish;
- if (__elems_after > __n) {
- uninitialized_copy(_M_finish - __n, _M_finish, _M_finish);
- _M_finish += __n;
- copy_backward(__position, __old_finish - __n, __old_finish);
- copy(__first, __last, __position);
- }
- else {
- _ForwardIterator __mid = __first;
- advance(__mid, __elems_after);
- uninitialized_copy(__mid, __last, _M_finish);
- _M_finish += __n - __elems_after;
- uninitialized_copy(__position, __old_finish, _M_finish);
- _M_finish += __elems_after;
- copy(__first, __mid, __position);
- }
- }
- else {
- const size_type __old_size = size();
- const size_type __len = __old_size + max(__old_size, __n);
- iterator __new_start = _M_allocate(__len);
- iterator __new_finish = __new_start;
- __STL_TRY {
- __new_finish = uninitialized_copy(_M_start, __position, __new_start);
- __new_finish = uninitialized_copy(__first, __last, __new_finish);
- __new_finish
- = uninitialized_copy(__position, _M_finish, __new_finish);
- }
- __STL_UNWIND((destroy(__new_start,__new_finish),
- _M_deallocate(__new_start,__len)));
- destroy(_M_start, _M_finish);
- _M_deallocate(_M_start, _M_end_of_storage - _M_start);
- _M_start = __new_start;
- _M_finish = __new_finish;
- _M_end_of_storage = __new_start + __len;
- }
- }
-}
-
-#else /* __STL_MEMBER_TEMPLATES */
-
-template <class _Tp, class _Alloc>
-void
-vector<_Tp, _Alloc>::insert(iterator __position,
- const_iterator __first,
- const_iterator __last)
-{
- if (__first != __last) {
- size_type __n = 0;
- distance(__first, __last, __n);
- if (size_type(_M_end_of_storage - _M_finish) >= __n) {
- const size_type __elems_after = _M_finish - __position;
- iterator __old_finish = _M_finish;
- if (__elems_after > __n) {
- uninitialized_copy(_M_finish - __n, _M_finish, _M_finish);
- _M_finish += __n;
- copy_backward(__position, __old_finish - __n, __old_finish);
- copy(__first, __last, __position);
- }
- else {
- uninitialized_copy(__first + __elems_after, __last, _M_finish);
- _M_finish += __n - __elems_after;
- uninitialized_copy(__position, __old_finish, _M_finish);
- _M_finish += __elems_after;
- copy(__first, __first + __elems_after, __position);
- }
- }
- else {
- const size_type __old_size = size();
- const size_type __len = __old_size + max(__old_size, __n);
- iterator __new_start = _M_allocate(__len);
- iterator __new_finish = __new_start;
- __STL_TRY {
- __new_finish = uninitialized_copy(_M_start, __position, __new_start);
- __new_finish = uninitialized_copy(__first, __last, __new_finish);
- __new_finish
- = uninitialized_copy(__position, _M_finish, __new_finish);
- }
- __STL_UNWIND((destroy(__new_start,__new_finish),
- _M_deallocate(__new_start,__len)));
- destroy(_M_start, _M_finish);
- _M_deallocate(_M_start, _M_end_of_storage - _M_start);
- _M_start = __new_start;
- _M_finish = __new_finish;
- _M_end_of_storage = __new_start + __len;
- }
- }
-}
-
-#endif /* __STL_MEMBER_TEMPLATES */
-
-#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
-#pragma reset woff 1174
-#pragma reset woff 1375
-#endif
-
-__STL_END_NAMESPACE
-
-#endif /* __SGI_STL_INTERNAL_VECTOR_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/tempbuf.h b/contrib/libstdc++/stl/tempbuf.h
deleted file mode 100644
index aa4f289..0000000
--- a/contrib/libstdc++/stl/tempbuf.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_TEMPBUF_H
-#define __SGI_STL_TEMPBUF_H
-
-#ifndef __SGI_STL_PAIR_H
-#include <pair.h>
-#endif
-#include <limits.h> /* XXX should use <climits> */
-#include <stddef.h> /* XXX should use <cstddef> */
-#include <stdlib.h> /* XXX should use <cstdlib> */
-#ifndef __TYPE_TRAITS_H
-#include <type_traits.h>
-#endif
-#ifndef __SGI_STL_INTERNAL_CONSTRUCT_H
-#include <stl_construct.h>
-#endif
-#ifndef __SGI_STL_INTERNAL_UNINITIALIZED_H
-#include <stl_uninitialized.h>
-#endif
-#ifndef __SGI_STL_INTERNAL_TEMPBUF_H
-#include <stl_tempbuf.h>
-#endif
-
-#ifdef __STL_USE_NAMESPACES
-
-using __STD::get_temporary_buffer;
-using __STD::return_temporary_buffer;
-using __STD::temporary_buffer;
-
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_TEMPBUF_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/tree.h b/contrib/libstdc++/stl/tree.h
deleted file mode 100644
index 77c57cb..0000000
--- a/contrib/libstdc++/stl/tree.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- */
-
-#ifndef __SGI_STL_TREE_H
-#define __SGI_STL_TREE_H
-
-#ifndef __SGI_STL_INTERNAL_TREE_H
-#include <stl_tree.h>
-#endif
-#include <algobase.h>
-#include <alloc.h>
-
-#ifdef __STL_USE_NAMESPACES
-using __STD::rb_tree;
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_TREE_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/type_traits.h b/contrib/libstdc++/stl/type_traits.h
deleted file mode 100644
index b6a7dfc6..0000000
--- a/contrib/libstdc++/stl/type_traits.h
+++ /dev/null
@@ -1,373 +0,0 @@
-/*
- *
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __TYPE_TRAITS_H
-#define __TYPE_TRAITS_H
-
-#ifndef __STL_CONFIG_H
-#include <stl_config.h>
-#endif
-
-/*
-This header file provides a framework for allowing compile time dispatch
-based on type attributes. This is useful when writing template code.
-For example, when making a copy of an array of an unknown type, it helps
-to know if the type has a trivial copy constructor or not, to help decide
-if a memcpy can be used.
-
-The class template __type_traits provides a series of typedefs each of
-which is either __true_type or __false_type. The argument to
-__type_traits can be any type. The typedefs within this template will
-attain their correct values by one of these means:
- 1. The general instantiation contain conservative values which work
- for all types.
- 2. Specializations may be declared to make distinctions between types.
- 3. Some compilers (such as the Silicon Graphics N32 and N64 compilers)
- will automatically provide the appropriate specializations for all
- types.
-
-EXAMPLE:
-
-//Copy an array of elements which have non-trivial copy constructors
-template <class T> void copy(T* source, T* destination, int n, __false_type);
-//Copy an array of elements which have trivial copy constructors. Use memcpy.
-template <class T> void copy(T* source, T* destination, int n, __true_type);
-
-//Copy an array of any type by using the most efficient copy mechanism
-template <class T> inline void copy(T* source,T* destination,int n) {
- copy(source, destination, n,
- typename __type_traits<T>::has_trivial_copy_constructor());
-}
-*/
-
-
-struct __true_type {
-};
-
-struct __false_type {
-};
-
-template <class _Tp>
-struct __type_traits {
- typedef __true_type this_dummy_member_must_be_first;
- /* Do not remove this member. It informs a compiler which
- automatically specializes __type_traits that this
- __type_traits template is special. It just makes sure that
- things work if an implementation is using a template
- called __type_traits for something unrelated. */
-
- /* The following restrictions should be observed for the sake of
- compilers which automatically produce type specific specializations
- of this class:
- - You may reorder the members below if you wish
- - You may remove any of the members below if you wish
- - You must not rename members without making the corresponding
- name change in the compiler
- - Members you add will be treated like regular members unless
- you add the appropriate support in the compiler. */
-
-
- typedef __false_type has_trivial_default_constructor;
- typedef __false_type has_trivial_copy_constructor;
- typedef __false_type has_trivial_assignment_operator;
- typedef __false_type has_trivial_destructor;
- typedef __false_type is_POD_type;
-};
-
-
-
-// Provide some specializations. This is harmless for compilers that
-// have built-in __types_traits support, and essential for compilers
-// that don't.
-
-#ifndef __STL_NO_BOOL
-
-__STL_TEMPLATE_NULL struct __type_traits<bool> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-#endif /* __STL_NO_BOOL */
-
-__STL_TEMPLATE_NULL struct __type_traits<char> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<signed char> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<unsigned char> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-#ifdef __STL_HAS_WCHAR_T
-
-__STL_TEMPLATE_NULL struct __type_traits<wchar_t> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-#endif /* __STL_HAS_WCHAR_T */
-
-__STL_TEMPLATE_NULL struct __type_traits<short> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<unsigned short> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<int> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<unsigned int> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<long> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<unsigned long> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-#ifdef __STL_LONG_LONG
-
-__STL_TEMPLATE_NULL struct __type_traits<long long> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<unsigned long long> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-#endif /* __STL_LONG_LONG */
-
-__STL_TEMPLATE_NULL struct __type_traits<float> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<double> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<long double> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
-
-template <class _Tp>
-struct __type_traits<_Tp*> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-__STL_TEMPLATE_NULL struct __type_traits<char*> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<signed char*> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<unsigned char*> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<const char*> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<const signed char*> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-__STL_TEMPLATE_NULL struct __type_traits<const unsigned char*> {
- typedef __true_type has_trivial_default_constructor;
- typedef __true_type has_trivial_copy_constructor;
- typedef __true_type has_trivial_assignment_operator;
- typedef __true_type has_trivial_destructor;
- typedef __true_type is_POD_type;
-};
-
-#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
-
-
-// The following could be written in terms of numeric_limits.
-// We're doing it separately to reduce the number of dependencies.
-
-template <class _Tp> struct _Is_integer {
- typedef __false_type _Integral;
-};
-
-#ifndef __STL_NO_BOOL
-
-__STL_TEMPLATE_NULL struct _Is_integer<bool> {
- typedef __true_type _Integral;
-};
-
-#endif /* __STL_NO_BOOL */
-
-__STL_TEMPLATE_NULL struct _Is_integer<char> {
- typedef __true_type _Integral;
-};
-
-__STL_TEMPLATE_NULL struct _Is_integer<signed char> {
- typedef __true_type _Integral;
-};
-
-__STL_TEMPLATE_NULL struct _Is_integer<unsigned char> {
- typedef __true_type _Integral;
-};
-
-#ifdef __STL_HAS_WCHAR_T
-
-__STL_TEMPLATE_NULL struct _Is_integer<wchar_t> {
- typedef __true_type _Integral;
-};
-
-#endif /* __STL_HAS_WCHAR_T */
-
-__STL_TEMPLATE_NULL struct _Is_integer<short> {
- typedef __true_type _Integral;
-};
-
-__STL_TEMPLATE_NULL struct _Is_integer<unsigned short> {
- typedef __true_type _Integral;
-};
-
-__STL_TEMPLATE_NULL struct _Is_integer<int> {
- typedef __true_type _Integral;
-};
-
-__STL_TEMPLATE_NULL struct _Is_integer<unsigned int> {
- typedef __true_type _Integral;
-};
-
-__STL_TEMPLATE_NULL struct _Is_integer<long> {
- typedef __true_type _Integral;
-};
-
-__STL_TEMPLATE_NULL struct _Is_integer<unsigned long> {
- typedef __true_type _Integral;
-};
-
-#ifdef __STL_LONG_LONG
-
-__STL_TEMPLATE_NULL struct _Is_integer<long long> {
- typedef __true_type _Integral;
-};
-
-__STL_TEMPLATE_NULL struct _Is_integer<unsigned long long> {
- typedef __true_type _Integral;
-};
-
-#endif /* __STL_LONG_LONG */
-
-#endif /* __TYPE_TRAITS_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/utility b/contrib/libstdc++/stl/utility
deleted file mode 100644
index df8c224..0000000
--- a/contrib/libstdc++/stl/utility
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_UTILITY
-#define __SGI_STL_UTILITY
-
-#include <stl_config.h>
-#include <stl_relops.h>
-#include <stl_pair.h>
-
-#endif /* __SGI_STL_UTILITY */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/vector b/contrib/libstdc++/stl/vector
deleted file mode 100644
index 4bcdebc..0000000
--- a/contrib/libstdc++/stl/vector
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_VECTOR
-#define __SGI_STL_VECTOR
-
-#include <stl_algobase.h>
-#include <stl_alloc.h>
-#include <stl_construct.h>
-#include <stl_uninitialized.h>
-#include <stl_vector.h>
-#include <stl_bvector.h>
-
-#endif /* __SGI_STL_VECTOR */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stl/vector.h b/contrib/libstdc++/stl/vector.h
deleted file mode 100644
index 231a227..0000000
--- a/contrib/libstdc++/stl/vector.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-#ifndef __SGI_STL_VECTOR_H
-#define __SGI_STL_VECTOR_H
-
-#include <algobase.h>
-#include <alloc.h>
-#include <stl_vector.h>
-
-#ifdef __STL_USE_NAMESPACES
-using __STD::vector;
-#endif /* __STL_USE_NAMESPACES */
-
-#endif /* __SGI_STL_VECTOR_H */
-
-// Local Variables:
-// mode:C++
-// End:
diff --git a/contrib/libstdc++/stlinst.cc b/contrib/libstdc++/stlinst.cc
deleted file mode 100644
index 2a221fb..0000000
--- a/contrib/libstdc++/stlinst.cc
+++ /dev/null
@@ -1,10 +0,0 @@
-// Instantiation file for the -*- C++ -*- Standard Library allocator templates
-// This file is part of the GNU ANSI C++ Library.
-
-#include <alloc.h>
-
-#ifndef __USE_MALLOC
-template class __default_alloc_template<__NODE_ALLOCATOR_THREADS, 0>;
-#endif
-
-template class __malloc_alloc_template<0>;
diff --git a/contrib/libstdc++/string b/contrib/libstdc++/string
deleted file mode 100644
index fa6f1ab..0000000
--- a/contrib/libstdc++/string
+++ /dev/null
@@ -1,13 +0,0 @@
-// Main header for the -*- C++ -*- string classes.
-
-#ifndef __STRING__
-#define __STRING__
-
-#include <std/bastring.h>
-
-extern "C++" {
-typedef basic_string <char> string;
-// typedef basic_string <wchar_t> wstring;
-} // extern "C++"
-
-#endif
diff --git a/contrib/libstdc++/strstream b/contrib/libstdc++/strstream
deleted file mode 100644
index ee360e0..0000000
--- a/contrib/libstdc++/strstream
+++ /dev/null
@@ -1,7 +0,0 @@
-// -*- C++ -*- forwarding header.
-// This file is part of the GNU ANSI C++ Library.
-
-#ifndef __STRSTREAM__
-#define __STRSTREAM__
-#include <strstream.h>
-#endif
diff --git a/contrib/libstdc++/tests/ChangeLog b/contrib/libstdc++/tests/ChangeLog
deleted file mode 100644
index 3bcb473..0000000
--- a/contrib/libstdc++/tests/ChangeLog
+++ /dev/null
@@ -1,132 +0,0 @@
-Fri Mar 16 12:46:19 GMT 2001 Bernd Schmidt (bernds@redhat.com)
-
- * gcc-2.95.3 Released.
-
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-1998-07-17 Jason Merrill <jason@yorick.cygnus.com>
-
- * tmap.cc: Use less<int>.
- * tlist.cc (main): Use remove_if.
-
-1998-07-13 Manfred Hollstein <manfred@s-direktnet.de>
-
- * Makefile.in (VERSION): Bump to 2.9.0.
-
-1998-07-12 Bob Sidebotham <rns@fore.com>
-
- * tstring.cc (findtest): New fn.
-
-1998-06-01 Jason Merrill <jason@yorick.cygnus.com>
-
- * tlist.cc, tvector.cc, tmap.cc: Remove explicit instantiations.
-
-Fri Oct 10 00:40:31 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * tstring.cc (identitytest): s/remove/erase/.
-
-Thu Sep 25 19:48:22 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * tstring.cc: Add some tests for the member templates.
-
-Wed Jun 11 11:00:10 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * tmap.cc: Explicitly instantiate allocator classes.
- * tvector.cc, tlist.cc: Likewise.
-
-Fri May 16 18:38:05 1997 Bob Manson <manson@charmed.cygnus.com>
-
- * tcomplex.cc (main): If we're using short doubles, compensate for
- roundoff in result of pow(a,b).
-
-Thu May 1 17:37:53 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * configure.in (CHECK): Add $(CXXFLAGS).
- * Makefile.in (tcomplex): Add $(CXXFLAGS).
-
-Fri Apr 25 16:07:46 1997 Bob Manson <manson@charmed.cygnus.com>
-
- * configure.in: Change "check" to "check-old". Add do-nothing
- check target.
-
-Sun Nov 3 12:44:48 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * tstring.cc: Treat string literals as const.
-
-Tue Sep 24 18:00:20 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * tstring.cc, tcomplex.cc: Remove gratuitous uses of std/.
-
-Mon Jun 17 14:05:50 1996 Per Bothner <bothner@deneb.cygnus.com>
-
- * tlist.cc (test_splice): New test.
-
-Fri Mar 22 16:08:36 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * Makefile.in (VERSION): 2.8.0.
-
- * tlist.cc, tmap.cc, tvector.cc: Remove explicit instantiation
- directive.
-
-Sat Nov 18 19:52:26 1995 Mike Stump <mrs@cygnus.com>
-
- * Makefile.in: Update version to 2.7.1.
-
-Tue May 9 19:36:54 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * tstring.cc (decltest): Adjust single-character test.
-
-Fri May 5 14:35:19 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * tcomplex.*: Update to reflect that operator<< now
- accepts more forms of input.
-
-Thu Apr 27 15:34:58 1995 Brendan Kehoe (brendan@lisa.cygnus.com)
-
- * configure.in: Update to stay in sync with config.shared.
-
-Thu Feb 16 00:08:28 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * Makefile.in (VERSION, SHLIB): Define.
-
-Tue Jan 24 02:36:24 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * Makefile.in (CXXFLAGS): Don't set.
-
-Mon Jan 23 04:12:10 1995 Jason Merrill <jason@python.cygnus.com>
-
- * tlist.cc (plus): Remove.
-
-Thu Jan 19 19:41:07 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * Makefile.in: Don't set LD_LIBRARY_PATH. Users will have to set
- it themselves.
-
-Mon Jan 16 13:57:34 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * Makefile.in: Update to reflect header movement.
-
-Wed Dec 14 19:55:45 1994 Per Bothner <bothner@kalessin.cygnus.com>
-
- * configure.in: Fix quoting problem. Reported nu H.J.Lu.
-
-Tue Nov 29 16:46:56 1994 Per Bothner <bothner@kalessin.cygnus.com>
-
- * Makefile.in, configure.in: Re-write to avoid duplication.
- * {tvector,tmap,tlist}.{cc,exp}, configure.in: New tests for STL.
-
-
diff --git a/contrib/libstdc++/tests/Makefile.in b/contrib/libstdc++/tests/Makefile.in
deleted file mode 100644
index 057482f..0000000
--- a/contrib/libstdc++/tests/Makefile.in
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 1994 Free Software Foundation
-
-# This file is part of the GNU ANSI 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 2, 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 COPYING. If not, write to the Free
-# Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-VERSION = 2.9.0
-SHLIB = libstdc++.so.$(VERSION)
-
-DEPLIBS = ../libstdc++.a
-LDLIBS = -L.. -lstdc++
-MDEPLIBS = $(DEPLIBS)
-MLDLIBS = $(LDLIBS) -lm
-
-#### package, host, target, and site dependent Makefile fragments come in here.
-##
-
-tcomplex.o: ${srcdir}/../std/complext.h ${srcdir}/../std/dcomplex.h
-tcomplex: tcomplex.o $(MDEPLIBS)
- $(CXX) $(CXXFLAGS) -o tcomplex tcomplex.o $(MLDLIBS)
-
-tstring.o: ${srcdir}/../std/bastring.h
-
-# NOTE: Rules for following tests are generated by $(srcdir)/configure.in !!!
-
diff --git a/contrib/libstdc++/tests/configure.in b/contrib/libstdc++/tests/configure.in
deleted file mode 100644
index 06c5619..0000000
--- a/contrib/libstdc++/tests/configure.in
+++ /dev/null
@@ -1,65 +0,0 @@
-# This file is a shell script fragment that supplies the information
-# necessary for a configure script to process the program in
-# this directory. For more information, look at ../../configure.
-
-configdirs=
-srctrigger=tcomplex.cc
-srcname="tests for ANSI C++ library"
-package_makefile_frag=Make.pack
-package_makefile_rules_frag=Make.pack.r
-
-# per-host:
-
-# per-target:
-
-target_makefile_frag=../target-mkfrag
-
-TO_TOPDIR=../../
-ALL=' '
-XCXXINCLUDES="-I${srcdir}/.. -I${srcdir}/../stl -I${TO_TOPDIR}libio -I${srcdir}/${TO_TOPDIR}libio"
-SIMPLE_TESTS='tstring tlist tmap tvector'
-TESTS="tcomplex ${SIMPLE_TESTS}"
-MOSTLYCLEAN="*.o core ${TESTS} *.out"
-(. ${srcdir}/${TO_TOPDIR}libio/config.shared) >${package_makefile_frag} 2>${package_makefile_rules_frag}
-
-# post-target:
-
-CHECK=""
-
-for TEST in ${SIMPLE_TESTS} ; do
- echo "${TEST}: ${TEST}.o" '$(DEPLIBS)
- $(CXX) $(CXXFLAGS) -o' "${TEST} ${TEST}.o" '$(LDLIBS)
-' >> Makefile
-done
-
-for TEST in ${TESTS} ; do
- echo ".PHONY: check-${TEST}" >>Makefile
- if [ -f ${srcdir}/${TEST}.inp ] ; then
- echo "check-${TEST}: ${TEST}" '$(srcdir)'"/${TEST}.inp
- ./${TEST} < "'$(srcdir)'"/${TEST}.inp > ${TEST}.out 2>&1" >>Makefile
- else
- echo "check-${TEST}: ${TEST}
- ./${TEST} > ${TEST}.out 2>&1" >>Makefile
- fi
- echo ' diff -c $(srcdir)/'"${TEST}.exp ${TEST}.out" >>Makefile
- CHECK="${CHECK} check-${TEST}"
-done
-
-if [ "${srcdir}" = "." ] ; then
- if [ "${with_target_subdir}" != "." ] ; then
- topsrcdir=${with_multisrctop}../../..
- else
- topsrcdir=${with_multisrctop}../..
- fi
-else
- topsrcdir=${srcdir}/../..
-fi
-
-if [ -d ${topsrcdir}/gcc ] ; then
- echo "
-check:
-check-old: ${CHECK}" >>Makefile
-else
- echo "
-check: ${CHECK}" >>Makefile
-fi
diff --git a/contrib/libstdc++/tests/tcomplex.cc b/contrib/libstdc++/tests/tcomplex.cc
deleted file mode 100644
index 5311f0d..0000000
--- a/contrib/libstdc++/tests/tcomplex.cc
+++ /dev/null
@@ -1,151 +0,0 @@
-// Tests for the -*- C++ -*- complex number classes.
-// Copyright (C) 1994 Free Software Foundation
-
-// This file is part of the GNU ANSI 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-#include <assert.h>
-#include <iostream.h>
-#include <complex>
-
-// to test near-equality
-
-const double eps = 0.000001;
-
-static void close_enough(const double_complex& a, const double_complex& b)
-{
- assert(fabs(real(a) - real(b)) < eps &&
- fabs(imag(a) - imag(b)) < eps);
-}
-
-
-void test3(double_complex& a, double_complex& b, double_complex& c)
-{
-
- close_enough(-(-a) , a);
- close_enough((a + b) , (b + a));
- close_enough((a + (-b)) , (a - b));
- close_enough((a * b) , (b * a));
- close_enough((a * (-b)) , -(a * b));
- close_enough((a / (-b)) , -(a / b));
- close_enough((a - b) , -(b - a));
- close_enough((a + (b + c)) , ((a + b) + c));
- close_enough((a * (b * c)) , ((a * b) * c));
- close_enough((a * (b + c)) , ((a * b) + (a * c)));
- close_enough(((a - b) + b) , a);
- close_enough(((a + b) - b) , a);
- close_enough(((a * b) / b) , a);
- close_enough(((a / b) * b) , a);
-
-
- double_complex x = a;
- x *= b;
- close_enough(x , (a * b));
- x += c;
- close_enough(x , ((a * b) + c));
- x -= a;
- close_enough(x , (((a * b) + c) - a));
- x /= b;
- close_enough(x , ((((a * b) + c) - a) / b));
-
-}
-
-main()
-{
- double_complex one = 1.0;
- double_complex i (0.0, 1.0);
- double_complex neg_one = -1.0;
-
- cout << "double_complex one = " << one << "\n";
- cout << "i = " << i << "\n";
- cout << "neg_one = " << neg_one << "\n";
- cout << "sqrt(neg_one) = " << sqrt(neg_one) << "\n";
-
- double_complex a (2.0, 3.0);
- double_complex b (4.0, 5.0);
-
- cout << "a = " << a << "\n";
- cout << "b = " << b << "\n";
-
- cout << "a + one = " << (a + one) << "\n";
- (close_enough((a+one), double_complex(3.0, 3.0)));
- cout << "a - one = " << (a - one) << "\n";
- (close_enough((a-one), double_complex(1.0, 3.0)));
- cout << "a * one = " << (a * one) << "\n";
- (close_enough((a*one), a));
- cout << "a / one = " << (a / one) << "\n";
- (close_enough((a/one), a));
-
- cout << "a + b = " << (a + b) << "\n";
- (close_enough((a+b), double_complex(6.0, 8.0)));
- cout << "a - b = " << (a - b) << "\n";
- (close_enough((a-b), double_complex(-2.0, -2.0)));
- cout << "a * b = " << (a * b) << "\n";
- (close_enough((a*b), double_complex(-7.0, 22.0)));
- cout << "a / b = " << (a / b) << "\n";
- (close_enough((a/b), double_complex(0.5609760976, 0.0487804878)));
-
- double_complex c;
-
- c = a; cout << "c = a; c += b = " << (c += b) << "\n";
- c = a; cout << "c = a; c -= b = " << (c -= b) << "\n";
- c = a; cout << "c = a; c *= b = " << (c *= b) << "\n";
- c = a; cout << "c = a; c /= b = " << (c /= b) << "\n";
-
- cout << "-a = " << (-a) << "\n";
- cout << "real(a) = " << real(a) << "\n";
- assert(real(a) == 2.0);
- cout << "imag(a) = " << imag(a) << "\n";
- assert(imag(a) == 3.0);
- cout << "conj(a) = " << conj(a) << "\n";
- assert(conj(a) == double_complex(2.0, -3.0));
- cout << "norm(a) = " << norm(a) << "\n";
- assert(norm(a) == 13.0);
-
- cout << "abs(a) = " << abs(a) << "\n";
- cout << "arg(a) = " << arg(a) << "\n";
- cout << "cos(a) = " << cos(a) << "\n";
- cout << "sin(a) = " << sin(a) << "\n";
- cout << "cosh(a) = " << cosh(a) << "\n";
- cout << "sinh(a) = " << sinh(a) << "\n";
- cout << "log(a) = " << log(a) << "\n";
- cout << "exp(a) = " << exp(a) << "\n";
- cout << "sqrt(a) = " << sqrt(a) << "\n";
- cout << "pow(a, 2) = " << pow(a, 2) << "\n";
- {
- double_complex p = pow(a, b);
- if(sizeof(float)==sizeof(double)) {
- long w = (long)(p.imag()*100000);
- if (w==-98642)
- p=double_complex(-0.753046,-0.986429);
- }
- cout << "pow(a, b) = " << p << "\n";
- }
-
- double_complex d (10, 20);
- double_complex e = pow(a, 2);
-
- test3(one, one, one);
- test3(a, a, a);
- test3(a, b, d);
- test3(e, i, b);
- test3(d, d, i);
-
- cout << "enter a complex number in form a or (a) or (a, b): ";
- cin >> c;
- cout << "number = " << c << "\n";
-
- cout << "\nEnd of test\n";
- return 0;
-}
diff --git a/contrib/libstdc++/tests/tcomplex.exp b/contrib/libstdc++/tests/tcomplex.exp
deleted file mode 100644
index 5bef15c..0000000
--- a/contrib/libstdc++/tests/tcomplex.exp
+++ /dev/null
@@ -1,37 +0,0 @@
-double_complex one = (1,0)
-i = (0,1)
-neg_one = (-1,0)
-sqrt(neg_one) = (0,1)
-a = (2,3)
-b = (4,5)
-a + one = (3,3)
-a - one = (1,3)
-a * one = (2,3)
-a / one = (2,3)
-a + b = (6,8)
-a - b = (-2,-2)
-a * b = (-7,22)
-a / b = (0.560976,0.0487805)
-c = a; c += b = (6,8)
-c = a; c -= b = (-2,-2)
-c = a; c *= b = (-7,22)
-c = a; c /= b = (0.560976,0.0487805)
--a = (-2,-3)
-real(a) = 2
-imag(a) = 3
-conj(a) = (2,-3)
-norm(a) = 13
-abs(a) = 3.60555
-arg(a) = 0.982794
-cos(a) = (-4.18963,-9.10923)
-sin(a) = (9.1545,-4.16891)
-cosh(a) = (-3.72455,0.511823)
-sinh(a) = (-3.59056,0.530921)
-log(a) = (1.28247,0.982794)
-exp(a) = (-7.31511,1.04274)
-sqrt(a) = (1.67415,0.895977)
-pow(a, 2) = (-5,12)
-pow(a, b) = (-0.753046,-0.986429)
-enter a complex number in form a or (a) or (a, b): number = (1.2,-34)
-
-End of test
diff --git a/contrib/libstdc++/tests/tcomplex.inp b/contrib/libstdc++/tests/tcomplex.inp
deleted file mode 100644
index c4e1d84..0000000
--- a/contrib/libstdc++/tests/tcomplex.inp
+++ /dev/null
@@ -1 +0,0 @@
-(1.2, -34)
diff --git a/contrib/libstdc++/tests/tlist.cc b/contrib/libstdc++/tests/tlist.cc
deleted file mode 100644
index a37c999..0000000
--- a/contrib/libstdc++/tests/tlist.cc
+++ /dev/null
@@ -1,151 +0,0 @@
-// test/demo of generic lists
-
-#include <assert.h>
-
-#define tassert(ex) {if ((ex)) cerr << #ex << "\n"; \
- else _assert(#ex, __FILE__,__LINE__); }
-
-#include <iostream.h>
-#include <list.h>
-#include <algo.h>
-
-bool int_compare(int a, int b)
-{
- return a < b;
-}
-
-int inc(int x)
-{
- return x + 1;
-}
-
-void print(list<int>& l)
-{
- for (list<int>::iterator it = l.begin(); it != l.end(); it++)
- cout << *it << " ";
- cout << "\n";
-}
-
-int is_odd(int x)
-{
- return x & 1;
-}
-
-int is_even(int x)
-{
- return (x & 1) == 0;
-}
-
-void sequence(list<int>& a, int lo, int hi)
-{
- back_insert_iterator<list<int> > it(a);
- while (lo <= hi)
- *it++ = lo++;
-}
-
-int old_rand = 9999;
-
-int get_rand()
-{
- old_rand = ((long)old_rand * (long)1243) % (long)971;
- return old_rand;
-}
-
-void randseq(list<int>& a, int n)
-{
- back_insert_iterator<list<int> > it(a);
- while (--n >= 0)
- *it++ = get_rand() % 50;
-}
-
-int array1 [] = { 9, 16, 36 };
-int array2 [] = { 1, 4 };
-
-int test_splice ()
-{
- list<int> l1 (array1, array1 + 3);
- list<int> l2 (array2, array2 + 2);
- list<int>::iterator i1 = l1.begin ();
- l1.splice (i1, l2);
- list<int>::iterator i2 = l1.begin ();
- while (i2 != l1.end ())
- cout << *i2++ << endl;
- return 0;
-}
-
-main()
-{
- list<int> a; int i;
- list<int>::iterator it, bit;
- sequence(a, 1, 20);
- cout << "\nlist<int> a = sequence(1, 20);\n"; print(a);
- for (it = a.begin (), i = 0; it != a.end (); it++, i++)
- assert (*it == i + 1);
- list<int> b;
- randseq(b, 20);
- cout << "\nlist<int> b = randseq(20);\n"; print(b);
- list<int> c;
- c.insert (c.end(), a.begin(), a.end());
- c.insert (c.end(), b.begin(), b.end());
- cout << "\nlist<int> c = a and b;\n"; print(c);
-
- list<int> d;
- for (it = a.begin(); it != a.end(); it++)
- d.insert(d.end (), inc(*it));
- cout << "\nlist<int> d = map(inc, a);\n"; print(d);
-
- list<int> e;
- back_insert_iterator<list<int> > e_insertor (e);
- reverse_copy (a.begin(), a.end (), e_insertor);
- cout << "\nlist<int> e = reverse(a);\n"; print(e);
-
- list<int> f;
- for (it = a.begin(); it != a.end(); it++)
- if (is_odd (*it))
- f.insert(f.end (), *it);
- cout << "\nlist<int> f = select(is_odd, a);\n"; print(f);
- list<int> ff;
- for (it = f.begin(); it != f.end(); it++)
- if (is_even (*it))
- ff.insert(ff.end (), *it);
- assert(ff.empty());
-
- int red = 0;
- for (it = a.begin(); it != a.end(); it++)
- red += *it;
- cout << "\nint red = a.reduce(plus, 0);\n"; cout << red;
- it = a.begin(); ++it; ++it;
- int second = *it;
- cout << "\nint second = a[2];\n"; cout << second;
- list<int> g;
- for (it = a.begin(), bit = b.begin(); it != a.end () && bit != b.end (); )
- g.insert (g.end (), *it++ + *bit++);
- cout << "\nlist<int> g = combine(plus, a, b);\n"; print(g);
- g.remove_if (is_odd);
- cout << "\ng.del(is_odd);\n"; print(g);
-
- ff.erase (ff.begin (), ff.end());
- for (it = g.begin(); it != g.end(); it++)
- if (is_odd (*it))
- ff.insert (ff.end (), *it);
- assert(ff.empty());
-
- b.sort();
- for (it = b.begin(); bit = it++, it != b.end (); ) assert (*it >= *bit);
- cout << "\nb.sort(int_compare);\n"; print(b);
-
- list<int> h;
- back_insert_iterator<list<int> > h_insertor (h);
- merge (a.begin (), a.end (), b.begin (), b.end (), h_insertor, int_compare);
- cout << "\nlist<int> h = merge(a, b, int_compare);\n"; print(h);
- for (it = h.begin(); bit = it++, it != h.end (); ) assert (*it >= *bit);
-
- cout << "\nh via iterator:\n";
- for (it = h.begin(); it != h.end (); it++)
- cout << *it << ", ";
- cout << "\n";
-
- test_splice ();
-
- cout << "\ndone\n";
-}
diff --git a/contrib/libstdc++/tests/tlist.exp b/contrib/libstdc++/tests/tlist.exp
deleted file mode 100644
index 65f7806..0000000
--- a/contrib/libstdc++/tests/tlist.exp
+++ /dev/null
@@ -1,44 +0,0 @@
-
-list<int> a = sequence(1, 20);
-1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
-
-list<int> b = randseq(20);
-28 27 5 17 44 6 9 40 15 26 49 35 15 48 13 27 25 25 9 6
-
-list<int> c = a and b;
-1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 28 27 5 17 44 6 9 40 15 26 49 35 15 48 13 27 25 25 9 6
-
-list<int> d = map(inc, a);
-2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
-
-list<int> e = reverse(a);
-20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-
-list<int> f = select(is_odd, a);
-1 3 5 7 9 11 13 15 17 19
-
-int red = a.reduce(plus, 0);
-210
-int second = a[2];
-3
-list<int> g = combine(plus, a, b);
-29 29 8 21 49 12 16 48 24 36 60 47 28 62 28 43 42 43 28 26
-
-g.del(is_odd);
-8 12 16 48 24 36 60 28 62 28 42 28 26
-
-b.sort(int_compare);
-5 6 6 9 9 13 15 15 17 25 25 26 27 27 28 35 40 44 48 49
-
-list<int> h = merge(a, b, int_compare);
-1 2 3 4 5 5 6 6 6 7 8 9 9 9 10 11 12 13 13 14 15 15 15 16 17 17 18 19 20 25 25 26 27 27 28 35 40 44 48 49
-
-h via iterator:
-1, 2, 3, 4, 5, 5, 6, 6, 6, 7, 8, 9, 9, 9, 10, 11, 12, 13, 13, 14, 15, 15, 15, 16, 17, 17, 18, 19, 20, 25, 25, 26, 27, 27, 28, 35, 40, 44, 48, 49,
-1
-4
-9
-16
-36
-
-done
diff --git a/contrib/libstdc++/tests/tmap.cc b/contrib/libstdc++/tests/tmap.cc
deleted file mode 100644
index 900e66f..0000000
--- a/contrib/libstdc++/tests/tmap.cc
+++ /dev/null
@@ -1,59 +0,0 @@
-#include <map.h>
-#include <algo.h>
-#include <iostream.h>
-#include <function.h>
-
-#define int_less less<int>
-struct str_less {
- bool operator() (char* x, char* y) const { return strcmp(x,y) < 0; }
-};
-
-#if 0
-int SIZE;
-
-void add(int x[], int y[], map<int,int, int_less>& a)
-{
- for (int i = 0; i < SIZE; ++i) a[x[i]] = y[i];
-}
-#endif
-
-int
-main(int argv, char** argc)
-{
-#if 0
- if (argv > 1)
- {
- SIZE = abs(atoi(argc[1]));
- SIZE &= ~1;
- }
- else
- SIZE = 100;
- nums = new int[SIZE];
- odds = new int[SIZE];
- perm = new int[SIZE];
-#endif
-
- map<int, int, int_less> my_map;
-
- map<char*, int, str_less> phones;
-
- my_map[4] = 40;
- my_map[2] = 20;
-
- // The (char*) is needed because g++ doesn't
- // convert char[] to char* in this context.
- phones[(char*)"tom"] = 2345;
- phones[(char*)"dick"] = 5678;
- phones[(char*)"harry"] = 7654;
-
- cout << "2 -> " << my_map[2] << endl;
- cout << "4 -> " << my_map[4] << endl;
-
- map<int, int, int_less>::iterator it = my_map.begin();
- for ( ; it != my_map.end(); it++)
- cout << "my_map[" << (*it).first << "] = " << (*it).second << endl;
-
- map<char*, int, str_less>::iterator pit = phones.begin();
- for ( ; pit != phones.end(); pit++)
- cout << "phones[" << (*pit).first << "] = " << (*pit).second << endl;
-}
diff --git a/contrib/libstdc++/tests/tmap.exp b/contrib/libstdc++/tests/tmap.exp
deleted file mode 100644
index b7b5df2..0000000
--- a/contrib/libstdc++/tests/tmap.exp
+++ /dev/null
@@ -1,7 +0,0 @@
-2 -> 20
-4 -> 40
-my_map[2] = 20
-my_map[4] = 40
-phones[dick] = 5678
-phones[harry] = 7654
-phones[tom] = 2345
diff --git a/contrib/libstdc++/tests/tstring.cc b/contrib/libstdc++/tests/tstring.cc
deleted file mode 100644
index 833d3d9..0000000
--- a/contrib/libstdc++/tests/tstring.cc
+++ /dev/null
@@ -1,249 +0,0 @@
-// Tests for the -*- C++ -*- string classes.
-// Copyright (C) 1994 Free Software Foundation
-
-// This file is part of the GNU ANSI 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 2, 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 COPYING. If not, write to the Free
-// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-#include <string>
-#include <algorithm>
-#include <iostream.h>
-#include <stdlib.h>
-#include <assert.h>
-
-string X = "Hello";
-string Y = "world";
-string N = "123";
-string c;
-const char* s = ",";
-
-void decltest()
-{
- string x;
- cout << "an empty string:" << x << "\n";
- assert(x == "");
-
- string y = "Hello";
- cout << "A string initialized to Hello:" << y << "\n";
- assert(y == "Hello");
-
- if (y[y.length()-1] == 'o')
- y = y + '\n';
- assert(y == "Hello\n");
- y = "Hello";
-
- string a = y;
- cout << "A string initialized to previous string:" << a << "\n";
- assert(a == "Hello");
- assert(a == y);
-
- string b (a, 1, 2);
- cout << "A string initialized to (previous string, 1, 2):" << b << "\n";
- assert(b == "el");
-
- char ch = '@';
- string z (1, ch);
- cout << "A string initialized to @:" << z << "\n";
- assert (z == "@");
-
- string n ("20");
- cout << "A string initialized to 20:" << n << "\n";
- assert(n == "20");
-
- int i = atoi(n.c_str ());
- double f = atof(n.c_str ());
- cout << "n = " << n << " atoi(n) = " << i << " atof(n) = " << f << "\n";
- assert(i == 20);
- assert(f == 20);
-
- int ar[] = { 'H', 'e', 'l', 'l', 'o' };
- string is (ar, ar+sizeof(ar)/sizeof(ar[0]));
- cout << "is = " << is << endl;
- assert (is == "Hello");
-}
-
-void cattest()
-{
- string x = X;
- string y = Y;
- string z = x + y;
- cout << "z = x + y = " << z << "\n";
- assert(z == "Helloworld");
-
- x += y;
- cout << "x += y; x = " << x << "\n";
- assert(x == "Helloworld");
-
- y = Y;
- x = X;
- y.insert (0, x);
- cout << "y.insert (0, x); y = " << y << "\n";
- assert(y == "Helloworld");
-
- y = Y;
- x = X;
- x = x + y + x;
- cout << "x = x + y + x; x = " << x << "\n";
- assert(x == "HelloworldHello");
-
- y = Y;
- x = X;
- x = y + x + x;
- cout << "x = y + x + x; x = " << x << "\n";
- assert(x == "worldHelloHello");
-
- x = X;
- y = Y;
- z = x + s + ' ' + y.substr (y.find ('w'), 1) + y.substr (y.find ('w') + 1) + ".";
- cout << "z = x + s + + y.substr (y.find (w), 1) + y.substr (y.find (w) + 1) + . = " << z << "\n";
- assert(z == "Hello, world.");
-}
-
-void
-findtest()
-{
- string x;
- string::size_type pos;
- pos = x.find_last_not_of('X');
- assert(pos == string::npos);
- pos = x.find_last_not_of("XYZ");
- assert(pos == string::npos);
-
- string y("a");
- pos = y.find_last_not_of('X');
- assert(pos == 0);
- pos = y.find_last_not_of('a');
- assert(pos == string::npos);
- pos = y.find_last_not_of("XYZ");
- assert(pos == 0);
- pos = y.find_last_not_of("a");
- assert(pos == string::npos);
-
- string z("ab");
- pos = z.find_last_not_of('X');
- assert(pos == 1);
- pos = z.find_last_not_of("XYZ");
- assert(pos == 1);
- pos = z.find_last_not_of('b');
- assert(pos == 0);
- pos = z.find_last_not_of("Xb");
- assert(pos == 0);
- pos = z.find_last_not_of("Xa");
- assert(pos == 1);
- pos = z.find_last_of("ab");
- assert(pos == 1);
- pos = z.find_last_of("Xa");
- assert(pos == 0);
- pos = z.find_last_of("Xb");
- assert(pos == 1);
- pos = z.find_last_of("XYZ");
- assert(pos == string::npos);
- pos = z.find_last_of('a');
- assert(pos == 0);
- pos = z.find_last_of('b');
- assert(pos == 1);
- pos = z.find_last_of('X');
- assert(pos == string::npos);
-}
-
-void comparetest()
-{
- string x = X;
- string y = Y;
- string n = N;
- string z = x + y;
-
- assert(x != y);
- assert(x == "Hello");
- assert(x != z.substr (0, 4));
- assert(x.compare (y) < 0);
- assert(x.compare (z.substr (0, 6)) < 0);
-
- assert(x.find ("lo") == 3);
- assert(x.find ("l", 2) == 2);
- assert(x.rfind ("l") == 3);
-}
-
-void substrtest()
-{
- string x = X;
-
- char ch = x[0];
- cout << "ch = x[0] = " << ch << "\n";
- assert(ch == 'H');
-
- string z = x.substr (2, 3);
- cout << "z = x.substr (2, 3) = " << z << "\n";
- assert(z == "llo");
-
- x.replace (2, 2, "r");
- cout << "x.replace (2, 2, r); x = " << x << "\n";
- assert(x == "Hero");
-
- x = X;
- x.replace (0, 1, 'j');
- cout << "x.replace (0, 1, 'j'); x = " << x << "\n";
- assert(x == "jello");
-
- int ar[] = { 'H', 'e', 'l', 'l', 'o' };
- x.replace (find (x.begin (), x.end (), 'l'),
- find (x.rbegin (), x.rend (), 'l').base (),
- ar, ar+sizeof(ar)/sizeof(ar[0]));
- cout << "x = " << x << endl;
- assert (x == "jeHelloo");
-}
-
-void iotest()
-{
- string z;
- cout << "enter a word:";
- cin >> z;
- cout << "word =" << z << " ";
- cout << "length = " << z.length() << "\n";
-}
-
-void identitytest(string a, string b)
-{
- string x = a;
- string y = b;
- x += b;
- y.insert (0, a);
- assert((a + b) == x);
- assert((a + b) == y);
- assert(x == y);
-
- assert((a + b + a) == (a + (b + a)));
-
- x.erase (x.rfind (b));
- assert(x == a);
-
- y.replace (0, y.rfind (b), b);
- assert(y == (b + b));
- y.replace (y.find (b), b.length (), a);
- assert(y == (a + b));
-}
-
-int main()
-{
- decltest();
- cattest();
- comparetest();
- findtest();
- substrtest();
- identitytest(X, X);
- identitytest(X, Y);
- identitytest(X+Y+N+X+Y+N, "A string that will be used in identitytest but is otherwise just another useless string.");
- iotest();
- cout << "\nEnd of test\n";
- return 0;
-}
diff --git a/contrib/libstdc++/tests/tstring.exp b/contrib/libstdc++/tests/tstring.exp
deleted file mode 100644
index 4526279..0000000
--- a/contrib/libstdc++/tests/tstring.exp
+++ /dev/null
@@ -1,22 +0,0 @@
-an empty string:
-A string initialized to Hello:Hello
-A string initialized to previous string:Hello
-A string initialized to (previous string, 1, 2):el
-A string initialized to @:@
-A string initialized to 20:20
-n = 20 atoi(n) = 20 atof(n) = 20
-is = Hello
-z = x + y = Helloworld
-x += y; x = Helloworld
-y.insert (0, x); y = Helloworld
-x = x + y + x; x = HelloworldHello
-x = y + x + x; x = worldHelloHello
-z = x + s + + y.substr (y.find (w), 1) + y.substr (y.find (w) + 1) + . = Hello, world.
-ch = x[0] = H
-z = x.substr (2, 3) = llo
-x.replace (2, 2, r); x = Hero
-x.replace (0, 1, 'j'); x = jello
-x = jeHelloo
-enter a word:word =abcdefghijklmnopqrstuvwxyz length = 26
-
-End of test
diff --git a/contrib/libstdc++/tests/tstring.inp b/contrib/libstdc++/tests/tstring.inp
deleted file mode 100644
index b0883f3..0000000
--- a/contrib/libstdc++/tests/tstring.inp
+++ /dev/null
@@ -1 +0,0 @@
-abcdefghijklmnopqrstuvwxyz
diff --git a/contrib/libstdc++/tests/tvector.cc b/contrib/libstdc++/tests/tvector.cc
deleted file mode 100644
index ef238ef..0000000
--- a/contrib/libstdc++/tests/tvector.cc
+++ /dev/null
@@ -1,20 +0,0 @@
-#include <vector.h>
-#include <iostream.h>
-#include <algo.h>
-
-main ()
-{
- cout << "Fill of C array:\n";
- char x[50];
- fill (x, x+50, '/');
- fill (x+1, x+49, '*');
- copy (x, x+50, ostream_iterator<char>(cout));
-
- cout << "\nFill of vector<char>:\n";
-
- vector<char> cvec;
- cvec.insert (cvec.begin(), 50, '/');
- fill (cvec.begin()+1, cvec.end()-1, '-');
- copy (cvec.begin(), cvec.end(), ostream_iterator<char>(cout));
- cout << endl;
-}
diff --git a/contrib/libstdc++/tests/tvector.exp b/contrib/libstdc++/tests/tvector.exp
deleted file mode 100644
index 84a9d1b..0000000
--- a/contrib/libstdc++/tests/tvector.exp
+++ /dev/null
@@ -1,4 +0,0 @@
-Fill of C array:
-/************************************************/
-Fill of vector<char>:
-/------------------------------------------------/
diff --git a/contrib/libstdc++/testsuite/ChangeLog b/contrib/libstdc++/testsuite/ChangeLog
deleted file mode 100644
index 3d76027..0000000
--- a/contrib/libstdc++/testsuite/ChangeLog
+++ /dev/null
@@ -1,94 +0,0 @@
-Fri Mar 16 12:46:19 GMT 2001 Bernd Schmidt (bernds@redhat.com)
-
- * gcc-2.95.3 Released.
-
-Sun Oct 24 23:54:10 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.2 Released.
-
-Mon Aug 16 01:29:24 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95.1 Released.
-
-Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com)
-
- * gcc-2.95 Released.
-
-Wed Nov 25 01:00:07 1998 Marc Espie <espie@quatramaran.ens.fr>
-
- * Makefile.in (just-check): Ignore errors.
-
-Sun Jun 28 00:00:10 1998 Carlo Wood <carlo@runaway.xs4all.nl>
-
- * lib/libstdc++.exp: Use global variable ld_library_path (not local)
- that is a lot more persistent; dejagnu-980528 needs this.
- * lib/libstdc++.exp (test_stdc++): Use regular expression " -lstdc.."
- to remove -lstdc++ arguments (not " -lstdc.*").
-
-Thu Dec 25 00:34:03 1997 Jeffrey A Law (law@cygnus.com)
-
- * lib/libstdc++.exp (test_libstdc++): Set LD_LIBRARY_PATH
- and SHLIB_PATH appropriately.
-
-Wed Sep 3 09:39:36 1997 Jeffrey A Law (law@cygnus.com)
-
- * lib/libstdc++.exp: Remove libg++_link_flags.
-
-Wed Aug 6 18:43:23 1997 Jason Merrill <jason@yorick.cygnus.com>
-
- * lib/libstdc++.exp: Remove libio_link_flags.
-
-Thu Jul 17 14:54:58 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * lib/libstdc++.exp (base_dir): Move from here...
- (test_libstdc++): To here.
- (LIBSTDCPP): Delete unused global decl.
-
-Tue Jun 17 01:46:49 1997 Bob Manson <manson@farmer>
-
- * lib/libstdc++.exp: Strip off leading LFs from both the pattern
- being matched against and the output from the board. Find the
- correct multilib libstdc++ to link with. Use g++_link_flags
- and libio_link_flags. Link in the status wrapper if needed.
- (libstdc++_init): New procedure.
-
-Tue Jun 3 17:16:39 1997 Bob Manson <manson@charmed.cygnus.com>
-
- * lib/libstdc++.exp: Don't use global exec_output variable; the
- output is returned from remote_load instead.
-
-Tue Apr 29 17:20:05 1997 Mike Stump <mrs@cygnus.com>
-
- * lib/libstdc++.exp: Fixup so that $compile_args works better.
- * libstdc++.tests/test.exp: Also run with -O.
-
-Tue Apr 29 16:34:37 1997 Mike Stump <mrs@cygnus.com>
-
- * testsuite/lib/libstdc++.exp: Fixup so that we always have the
- same number of testcases, and so that we have meaningful testcase
- names.
-
-Tue Apr 29 13:05:14 1997 Bob Manson <manson@charmed.cygnus.com>
-
- * lib/libstdc++.exp: Add support for --tool_opts.
-
-Mon Apr 28 11:10:25 1997 Bob Manson <manson@charmed.cygnus.com>
-
- * Makefile.in: Add comment so target Makefile fragments get added.
- Removed clean rule, because it is added by configure.
-
- * configure.in (TESTS): Add.
-
-Sun Apr 27 15:03:10 1997 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * Makefile.in (clean): Add empty rule for now.
-
-Fri Apr 25 18:59:14 1997 Bob Manson <manson@charmed.cygnus.com>
-
- * lib/libstdc++.exp(test_libstdc++): Return on error. Generate a
- FAIL if the compile fails. Remove CRs from the output from the
- testcase.
diff --git a/contrib/libstdc++/testsuite/Makefile.in b/contrib/libstdc++/testsuite/Makefile.in
deleted file mode 100644
index 20f9ec9..0000000
--- a/contrib/libstdc++/testsuite/Makefile.in
+++ /dev/null
@@ -1,428 +0,0 @@
-# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
-
-# Copyright (C) 1994, 1995-8, 1999, 2001 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.
-
-
-SHELL = @SHELL@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-sbindir = @sbindir@
-libexecdir = @libexecdir@
-datadir = @datadir@
-sysconfdir = @sysconfdir@
-sharedstatedir = @sharedstatedir@
-localstatedir = @localstatedir@
-libdir = @libdir@
-infodir = @infodir@
-mandir = @mandir@
-includedir = @includedir@
-oldincludedir = /usr/include
-
-DESTDIR =
-
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-
-top_builddir = ..
-
-ACLOCAL = @ACLOCAL@
-AUTOCONF = @AUTOCONF@
-AUTOMAKE = @AUTOMAKE@
-AUTOHEADER = @AUTOHEADER@
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-transform = @program_transform_name@
-
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_alias = @build_alias@
-build_triplet = @build@
-host_alias = @host_alias@
-host_triplet = @host@
-target_alias = @target_alias@
-target_triplet = @target@
-AR = @AR@
-AS = @AS@
-ATOMICITY_INC_SRCDIR = @ATOMICITY_INC_SRCDIR@
-AWK = @AWK@
-BASIC_FILE_H = @BASIC_FILE_H@
-CC = @CC@
-CCODECVT_C = @CCODECVT_C@
-CCODECVT_H = @CCODECVT_H@
-CLOCALE_H = @CLOCALE_H@
-CMESSAGES_H = @CMESSAGES_H@
-CPP = @CPP@
-CPU_LIMITS_INC_SRCDIR = @CPU_LIMITS_INC_SRCDIR@
-CSTDIO_H = @CSTDIO_H@
-CXXCPP = @CXXCPP@
-C_INCLUDE_DIR = @C_INCLUDE_DIR@
-DEBUG_FLAGS = @DEBUG_FLAGS@
-DLLTOOL = @DLLTOOL@
-EXEEXT = @EXEEXT@
-EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
-GCJ = @GCJ@
-GCJFLAGS = @GCJFLAGS@
-GLIBCPP_INCLUDES = @GLIBCPP_INCLUDES@
-GLIBCPP_IS_CROSS_COMPILING = @GLIBCPP_IS_CROSS_COMPILING@
-LIBIO_INCLUDES = @LIBIO_INCLUDES@
-LIBMATHOBJS = @LIBMATHOBJS@
-LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
-LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
-LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
-LIBTOOL = @LIBTOOL@
-LIBUNWIND_FLAG = @LIBUNWIND_FLAG@
-LN_S = @LN_S@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
-OPT_LDFLAGS = @OPT_LDFLAGS@
-OS_INC_SRCDIR = @OS_INC_SRCDIR@
-PACKAGE = @PACKAGE@
-RANLIB = @RANLIB@
-SECTION_FLAGS = @SECTION_FLAGS@
-SECTION_LDFLAGS = @SECTION_LDFLAGS@
-STRIP = @STRIP@
-TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-WARN_FLAGS = @WARN_FLAGS@
-WERROR = @WERROR@
-baseline_file = @baseline_file@
-check_msgfmt = @check_msgfmt@
-enable_shared = @enable_shared@
-enable_static = @enable_static@
-glibcpp_CXX = @glibcpp_CXX@
-glibcpp_MOFILES = @glibcpp_MOFILES@
-glibcpp_POFILES = @glibcpp_POFILES@
-glibcpp_basedir = @glibcpp_basedir@
-glibcpp_builddir = @glibcpp_builddir@
-glibcpp_localedir = @glibcpp_localedir@
-glibcpp_prefixdir = @glibcpp_prefixdir@
-glibcpp_srcdir = @glibcpp_srcdir@
-glibcpp_thread_h = @glibcpp_thread_h@
-glibcpp_toolexecdir = @glibcpp_toolexecdir@
-glibcpp_toolexeclibdir = @glibcpp_toolexeclibdir@
-gxx_include_dir = @gxx_include_dir@
-ifGNUmake = @ifGNUmake@
-libio_la = @libio_la@
-libtool_VERSION = @libtool_VERSION@
-toplevel_srcdir = @toplevel_srcdir@
-
-AUTOMAKE_OPTIONS = cygnus dejagnu
-
-DEJATOOL = libstdc++-v3
-
-EXPECT = `if [ -f @glibcpp_builddir@/../../expect/expect ] ; then \
- echo @glibcpp_builddir@/../../expect/expect ; \
- else echo expect ; fi`
-
-
-RUNTEST = `if [ -f @glibcpp_srcdir@/../dejagnu/runtest ] ; then \
- echo @glibcpp_srcdir@/../dejagnu/runtest ; \
- else echo runtest; fi`
-
-
-RUNTESTFLAGS =
-
-CXX_fake = @glibcpp_CXX@
-CXX = `echo $(CXX_fake) | sed 's/xgcc/g++/g'`
-CXXLINK = \
- LD_RUN_PATH=${LD_RUN_PATH:+$LD_RUN_PATH:}${glibcpp_builddir}/src/.libs\
- $(LIBTOOL) --tag=CXX --mode=link $(CXX) \
- $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@
-
-
-INCLUDES = \
- -nostdinc++ \
- @GLIBCPP_INCLUDES@ @LIBSUPCXX_INCLUDES@ @TOPLEVEL_INCLUDES@
-
-@GLIBCPP_BUILD_ABI_CHECK_TRUE@noinst_PROGRAMS = @GLIBCPP_BUILD_ABI_CHECK_TRUE@abi_check
-@GLIBCPP_BUILD_ABI_CHECK_FALSE@noinst_PROGRAMS =
-abi_check_SOURCES = abi_check.cc
-mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
-CONFIG_HEADER = ../config.h
-CONFIG_CLEAN_FILES =
-@GLIBCPP_BUILD_ABI_CHECK_FALSE@noinst_PROGRAMS =
-PROGRAMS = $(noinst_PROGRAMS)
-
-
-DEFS = @DEFS@ -I. -I$(srcdir) -I..
-CPPFLAGS = @CPPFLAGS@
-LDFLAGS = @LDFLAGS@
-LIBS = @LIBS@
-abi_check_OBJECTS = abi_check.$(OBJEXT)
-abi_check_LDADD = $(LDADD)
-abi_check_DEPENDENCIES =
-abi_check_LDFLAGS =
-CXXFLAGS = @CXXFLAGS@
-CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-CXXLD = $(CXX)
-DIST_COMMON = README Makefile.am Makefile.in
-
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
-TAR = gtar
-GZIP_ENV = --best
-SOURCES = $(abi_check_SOURCES)
-OBJECTS = $(abi_check_OBJECTS)
-
-all: all-redirect
-.SUFFIXES:
-.SUFFIXES: .S .c .cc .lo .o .obj .s
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
- cd $(top_srcdir) && $(AUTOMAKE) --cygnus testsuite/Makefile
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-
-mostlyclean-noinstPROGRAMS:
-
-clean-noinstPROGRAMS:
- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
-
-distclean-noinstPROGRAMS:
-
-maintainer-clean-noinstPROGRAMS:
-
-.c.o:
- $(COMPILE) -c $<
-
-# FIXME: We should only use cygpath when building on Windows,
-# and only if it is available.
-.c.obj:
- $(COMPILE) -c `cygpath -w $<`
-
-.s.o:
- $(COMPILE) -c $<
-
-.S.o:
- $(COMPILE) -c $<
-
-mostlyclean-compile:
- -rm -f *.o core *.core
- -rm -f *.$(OBJEXT)
-
-clean-compile:
-
-distclean-compile:
- -rm -f *.tab.c
-
-maintainer-clean-compile:
-
-.c.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-.s.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-.S.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) -c $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
-
-maintainer-clean-libtool:
-
-abi_check$(EXEEXT): $(abi_check_OBJECTS) $(abi_check_DEPENDENCIES)
- @rm -f abi_check$(EXEEXT)
- $(CXXLINK) $(abi_check_LDFLAGS) $(abi_check_OBJECTS) $(abi_check_LDADD) $(LIBS)
-.cc.o:
- $(CXXCOMPILE) -c $<
-.cc.obj:
- $(CXXCOMPILE) -c `cygpath -w $<`
-.cc.lo:
- $(LTCXXCOMPILE) -c $<
-
-tags: TAGS
-
-ID: $(HEADERS) $(SOURCES) $(LISP)
- list='$(SOURCES) $(HEADERS)'; \
- unique=`for i in $$list; do echo $$i; done | \
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- here=`pwd` && cd $(srcdir) \
- && mkid -f$$here/ID $$unique $(LISP)
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS)'; \
- unique=`for i in $$list; do echo $$i; done | \
- awk ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
-
-mostlyclean-tags:
-
-clean-tags:
-
-distclean-tags:
- -rm -f TAGS ID
-
-maintainer-clean-tags:
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-
-subdir = testsuite
-
-distdir: $(DISTFILES)
- @for file in $(DISTFILES); do \
- if test -f $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- cp -pr $$d/$$file $(distdir)/$$file; \
- else \
- test -f $(distdir)/$$file \
- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $$d/$$file $(distdir)/$$file || :; \
- fi; \
- done
-
-RUNTESTDEFAULTFLAGS = --tool $(DEJATOOL) --srcdir $$srcdir
-
-check-DEJAGNU: site.exp
- srcdir=`cd $(srcdir) && pwd`; export srcdir; \
- EXPECT=$(EXPECT); export EXPECT; \
- if [ -f $(top_builddir)/../expect/expect ]; then \
- TCL_LIBRARY=`cd $(top_srcdir)/../tcl/library && pwd`; \
- export TCL_LIBRARY; \
- fi; \
- runtest=$(RUNTEST); \
- if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
- $$runtest $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \
- else echo "WARNING: could not find \`runtest'" 1>&2; :;\
- fi
-site.exp: Makefile
- @echo 'Making a new site.exp file...'
- @test ! -f site.bak || rm -f site.bak
- @echo '## these variables are automatically generated by make ##' > $@-t
- @echo '# Do not edit here. If you wish to override these values' >> $@-t
- @echo '# edit the last section' >> $@-t
- @echo 'set tool $(DEJATOOL)' >> $@-t
- @echo 'set srcdir $(srcdir)' >> $@-t
- @echo 'set objdir' `pwd` >> $@-t
- @echo 'set host_alias $(host_alias)' >> $@-t
- @echo 'set host_triplet $(host_triplet)' >> $@-t
- @echo 'set target_alias $(target_alias)' >> $@-t
- @echo 'set target_triplet $(target_triplet)' >> $@-t
- @echo 'set build_alias $(build_alias)' >> $@-t
- @echo 'set build_triplet $(build_triplet)' >> $@-t
- @echo '## All variables above are generated by configure. Do Not Edit ##' >> $@-t
- @test ! -f site.exp || sed '1,/^## All variables above are.*##/ d' site.exp >> $@-t
- @test ! -f site.exp || mv site.exp site.bak
- @mv $@-t site.exp
-info-am:
-info: info-am
-dvi-am:
-dvi: dvi-am
-check-am:
- $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
-check: check-am
-installcheck-am:
-installcheck: installcheck-am
-install-info-am:
-install-info: install-info-am
-install-exec-am:
-install-exec: install-exec-am
-
-install-data-am:
-install-data: install-data-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-install: install-am
-uninstall-am:
-uninstall: uninstall-am
-all-am: Makefile $(PROGRAMS)
-all-redirect: all-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
-installdirs:
-
-
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -rm -f Makefile $(CONFIG_CLEAN_FILES)
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
-
-maintainer-clean-generic:
-mostlyclean-am: mostlyclean-noinstPROGRAMS mostlyclean-compile \
- mostlyclean-libtool mostlyclean-tags \
- mostlyclean-generic
-
-mostlyclean: mostlyclean-am
-
-clean-am: clean-noinstPROGRAMS clean-compile clean-libtool clean-tags \
- clean-generic mostlyclean-am
-
-clean: clean-am
-
-distclean-am: distclean-noinstPROGRAMS distclean-compile \
- distclean-libtool distclean-tags distclean-generic \
- clean-am
- -rm -f libtool
-
-distclean: distclean-am
-
-maintainer-clean-am: maintainer-clean-noinstPROGRAMS \
- maintainer-clean-compile maintainer-clean-libtool \
- maintainer-clean-tags maintainer-clean-generic \
- distclean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-maintainer-clean: maintainer-clean-am
-
-.PHONY: mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \
-clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \
-mostlyclean-compile distclean-compile clean-compile \
-maintainer-clean-compile mostlyclean-libtool distclean-libtool \
-clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
-distclean-tags clean-tags maintainer-clean-tags distdir check-DEJAGNU \
-info-am info dvi-am dvi check check-am installcheck-am installcheck \
-install-info-am install-info install-exec-am install-exec \
-install-data-am install-data install-am install uninstall-am uninstall \
-all-redirect all-am all installdirs mostlyclean-generic \
-distclean-generic clean-generic maintainer-clean-generic clean \
-mostlyclean distclean maintainer-clean
-
-
-# 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/contrib/libstdc++/testsuite/config/default.exp b/contrib/libstdc++/testsuite/config/default.exp
deleted file mode 100644
index dbe227b..0000000
--- a/contrib/libstdc++/testsuite/config/default.exp
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2001 Free Software Foundation, Inc.
-
-# 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 2 of the License, 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; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-# libstdc++@gcc.gnu.org
-
-load_lib "standard.exp"
-
diff --git a/contrib/libstdc++/testsuite/configure.in b/contrib/libstdc++/testsuite/configure.in
deleted file mode 100644
index ad5f232..0000000
--- a/contrib/libstdc++/testsuite/configure.in
+++ /dev/null
@@ -1,24 +0,0 @@
-# This file is a shell script fragment that supplies the information
-# necessary for a configure script to process the program in
-# this directory. For more information, look at ../../configure.
-
-configdirs=
-srctrigger=configure.in
-srcname="tests for ANSI C++ library, dejagnu style"
-package_makefile_frag=Make.pack
-package_makefile_rules_frag=Make.pack.r
-
-# per-host:
-
-# per-target:
-
-target_makefile_frag=../target-mkfrag
-
-TO_TOPDIR=../../
-ALL=' '
-XCXXINCLUDES="-I${srcdir}/.. -I${srcdir}/../stl -I${TO_TOPDIR}libio -I${srcdir}/${TO_TOPDIR}libio"
-TESTS="tcomplex tstring tlist tmap tvector"
-MOSTLYCLEAN="*.o core ${TESTS} *.out"
-(. ${srcdir}/${TO_TOPDIR}libio/config.shared) >${package_makefile_frag} 2>${package_makefile_rules_frag}
-
-# post-target:
diff --git a/contrib/libstdc++/testsuite/lib/libstdc++.exp b/contrib/libstdc++/testsuite/lib/libstdc++.exp
deleted file mode 100644
index 3333dda..0000000
--- a/contrib/libstdc++/testsuite/lib/libstdc++.exp
+++ /dev/null
@@ -1,179 +0,0 @@
-# Copyright (C) 1997 Free Software Foundation, Inc.
-
-# 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 2 of the License, 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; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-lib-g++@prep.ai.mit.edu
-
-# This file was written by Bob Manson. (manson@cygnus.com)
-
-load_lib "libgloss.exp"
-
-global tmpdir
-
-if ![info exists tmpdir] {
- set tmpdir "/tmp"
-}
-
-#
-# Build the status wrapper library as needed.
-#
-proc libstdc++_init { args } {
- global wrapper_file;
- global wrap_compile_flags;
- set wrapper_file "";
- set wrap_compile_flags "";
- if [target_info exists needs_status_wrapper] {
- set result [build_wrapper "testglue.o"];
- if { $result != "" } {
- set wrapper_file [lindex $result 0];
- set wrap_compile_flags [lindex $result 1];
- } else {
- warning "Status wrapper failed to build."
- }
- }
-}
-#
-# Run the test specified by srcfile and resultfile. compile_args and
-# exec_args are additional arguments to be passed in when compiling and
-# running the testcase, respectively.
-#
-
-proc test_libstdc++ { options srcfile compile_args inpfile resultfile exec_args } {
- global base_dir
- global LIBSTDCPP
- global srcdir subdir objdir
- global TOOL_OPTIONS
- global ld_library_path
-
- if [info exists LIBSTDCPP] {
- set libstdcpp $LIBSTDCPP;
- } else {
- set gp [get_multilibs];
- if { $gp != "" } {
- if [file exists "$gp/libstdc++/libstdc++.a"] {
- set libstdcpp "-L$gp/libstdc++ -lstdc++";
- }
- }
- if ![info exists libstdcpp] {
- set libstdcpp [findfile $base_dir/../../libstdc++/libstdc++.a "-L$base_dir/../../libstdc++ -lstdc++" -lstdc++]
- }
- }
-
- verbose "using LIBSTDCPP = $libstdcpp" 2
- set args ""
-
- # Basically we want to build up a colon separated path list from
- # the value of $libstdcpp.
-
- # First strip away any -L arguments.
- regsub -all -- "-L" $libstdcpp "" ld_library_path
-
- # Then remove any -lstdc++ argument.
- regsub -all -- " -lstdc.." $ld_library_path "" ld_library_path
-
- # That's enough to make things work for the normal case.
- # If we wanted to handle an arbitrary value of libstdcpp,
- # then we'd have to do a lot more work.
-
- if { $compile_args != "" } {
- lappend args "additional_flags=$compile_args"
- }
- lappend args "incdir=.."
- lappend args "incdir=$srcdir/.."
- lappend args "incdir=$srcdir/../stl"
- lappend args "incdir=."
- if [info exists TOOL_OPTIONS] {
- lappend args "additional_flags=$TOOL_OPTIONS"
- }
-
- global wrapper_file wrap_compile_flags;
- # We have to include libio, for _G_config.h.
- lappend args "additional_flags=$wrap_compile_flags";
- lappend args "libs=$wrapper_file";
- lappend args "libs=$libstdcpp";
- lappend args "additional_flags=[libio_include_flags]"
- lappend args debug
-
- regsub "^.*/(\[^/.\]+)\[.\]\[^/]*$" "$srcfile" "\\1" out
- set executable "${objdir}/$out"
- set errname "[file tail $srcfile]"
- if { $compile_args != "" } {
- set errname "$errname $compile_args"
- }
-
- if { [target_compile $srcfile "$executable" executable $args] != "" } {
- fail "$errname compilation"
- setup_xfail "*-*-*"
- fail "$errname execution"
- setup_xfail "*-*-*"
- fail "$errname output"
- return;
- }
- pass "$errname compilation"
-
- set result [libstdc++_load $executable "$exec_args" "$inpfile"];
- set status [lindex $result 0];
- set output [lindex $result 1];
- $status "$errname execution"
- if { $status != "pass" } {
- setup_xfail "*-*-*"
- fail "$errname output"
- return;
- }
-
- verbose "resultfile is $resultfile"
- set id [open $resultfile r];
- set expected ""
- append expected [read $id];
- regsub -all "\r" "$output" "" output;
- regsub "\n*$" $expected "" expected
- regsub "\n*$" $output "" output
- regsub "^\n*" $expected "" expected
- regsub "^\n*" $output "" output
- regsub -all "\[ \t\]\[ \t\]*" $expected " " expected
- regsub -all "\[ \t\]*\n\n*" $expected "\n" expected
- regsub -all "\[ \t\]\[ \t\]*" $output " " output
- regsub -all "\[ \t\]*\n\n*" $output "\n" output
- verbose "expected is $expected"
- verbose "actual is $output"
- set passed 0;
- if {$options == "regexp_match"} {
- if [regexp $expected $output] {
- set passed 1;
- }
- } else {
- if { $expected == $output } {
- set passed 1;
- }
- }
- if { $passed == 1 } {
- pass "$errname output"
- } else {
- clone_output "expected was $expected"
- clone_output "output was $output"
- fail "$errname output"
- }
- close $id;
-}
-
-#
-# libstdc++_version -- extract and print the version number of libstdc++p
-#
-proc default_libstdc++_version {} {
-}
-
-proc default_libstdc++_start { } {
-}
diff --git a/contrib/libstdc++/testsuite/libstdc++.tests/test.exp b/contrib/libstdc++/testsuite/libstdc++.tests/test.exp
deleted file mode 100644
index 7368cfb..0000000
--- a/contrib/libstdc++/testsuite/libstdc++.tests/test.exp
+++ /dev/null
@@ -1,34 +0,0 @@
-global srcdir subdir
-
-catch "glob -nocomplain $srcdir/$subdir/../../tests/*.exp" srcfiles
-verbose "srcfiles are $srcfiles"
-
-set prefix ""
-foreach x $srcfiles {
- regsub "\\.exp$" $x "" prefix
- set bname [file tail $prefix]
- set args ""
- if [file exists $srcdir/$subdir/${bname}.arg] {
- set id [open "$srcdir/$subdir/${bname}.arg" r];
- set args [read -nonewline $id];
- close $id;
- }
- if [file exists $srcdir/$subdir/${bname}.xpo] {
- set resfile "$srcdir/$subdir/${bname}.xpo"
- set options "regexp_match"
- } else {
- set resfile "${prefix}.exp"
- set options ""
- }
-
- if [file exists ${prefix}.inp] {
- set inpfile ${prefix}.inp
- } else {
- set inpfile ""
- }
-
- verbose "inpfile is $inpfile"
-
- test_libstdc++ $options "${prefix}.cc" "" $inpfile $resfile $args
- test_libstdc++ $options "${prefix}.cc" "-O" $inpfile $resfile $args
-}
diff --git a/contrib/libstdc++/testsuite_flags.in b/contrib/libstdc++/testsuite_flags.in
deleted file mode 100755
index 1a24b5e..0000000
--- a/contrib/libstdc++/testsuite_flags.in
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/sh
-
-#
-# This script computes the various flags needed to run GNU C++ testsuites
-# (compiler specific as well as library specific).
-#
-# Written by Benjamin Kosnik <bkoz@redhat.com>
-# Gabriel Dos Reis <gdr@codesourcery.com>
-#
-
-# Print a message saying how this script is intended to be invoked
-print_usage() {
- cat <<EOF
-Usage:
- testsuite_flags --install-includes
- --build-includes
- --build-cxx
- --install-cxx
- --cxxflags
-EOF
-}
-
-# Establish configure-generated directory structure.
-BUILD_DIR=@glibcpp_builddir@
-SRC_DIR=@glibcpp_srcdir@
-PREFIX_DIR=@glibcpp_prefixdir@
-query=$1
-
-case ${query} in
- --install-includes)
- INCLUDES="-I${SRC_DIR}/testsuite"
- echo ${INCLUDES}
- ;;
- --build-includes)
- INCLUDES="-nostdinc++ @GLIBCPP_INCLUDES@
- -I${SRC_DIR}/libsupc++ -I${SRC_DIR}/libio
- -I${SRC_DIR}/include/backward
- -I${SRC_DIR}/testsuite"
- echo ${INCLUDES}
- ;;
- --install-cxx)
- CXX=${PREFIX_DIR}/bin/g++
- echo ${CXX}
- ;;
- --build-cxx)
- CC_build="@glibcpp_CXX@"
- CXX=`echo $CC_build | sed 's/xgcc/g++/g'`
- echo ${CXX}
- ;;
- --cxxflags)
- CXXFLAGS=' -g @SECTION_FLAGS@ @SECTION_LDFLAGS@
- -fmessage-length=0
- -DDEBUG_ASSERT -DLOCALEDIR="@glibcpp_localedir@" '
- echo ${CXXFLAGS}
- ;;
- *)
- print_usage
- ;;
-esac
-
-exit 0
diff --git a/contrib/libstdc++/valarray b/contrib/libstdc++/valarray
deleted file mode 100644
index a938b6a..0000000
--- a/contrib/libstdc++/valarray
+++ /dev/null
@@ -1,8 +0,0 @@
-// Main header for -*- C++ -*- valarray classes.
-
-#ifndef __VALARRAY__
-#define __VALARRAY__
-
-#include <std/std_valarray.h>
-
-#endif
diff --git a/contrib/libstdc++/valarray.cc b/contrib/libstdc++/valarray.cc
deleted file mode 100644
index 5e7fe0c..0000000
--- a/contrib/libstdc++/valarray.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-#include <std/std_valarray.h>
-
-// Some Explicit Instanciations.
-template class multiplies<size_t>;
-template size_t accumulate(size_t*, size_t*, size_t, multiplies<size_t>);
-
-template void
- __valarray_fill(size_t* __restrict__, size_t, const size_t&);
-
-template void
- __valarray_copy(const size_t* __restrict__, size_t, size_t* __restrict__);
-
-template valarray<size_t>::valarray(size_t);
-template valarray<size_t>::~valarray();
-template valarray<size_t>::valarray(const valarray<size_t>&);
-template size_t valarray<size_t>::size() const;
-template size_t& valarray<size_t>::operator[](size_t);
-template size_t valarray<size_t>::product() const;
-
-
-void __gslice_to_index(size_t __o, const valarray<size_t>& __l,
- const valarray<size_t>& __s,
- valarray<size_t>& __i)
-{
- const size_t __n = __l.size();
- size_t* const __t = static_cast<size_t*>(alloca(__n*sizeof(size_t)));
- __valarray_fill(__t, __n, size_t(0));
- const size_t __z = __i.size();
- __valarray_fill(&__i[0], __z, __o);
- for (size_t __j=0; __j<__z; ++__j) {
- for (size_t __k=0; __k<__n; ++__k)
- __i[__j] += __s[__k]*__t[__k];
- ++__t[__n-1];
- for (size_t __k=__n-1; __k; --__k) {
- if (__t[__k] >= __l[__k]) {
- __t[__k] = 0;
- ++__t[__k-1];
- }
- }
- }
-}
-
-_Indexer::_Indexer(size_t __o, const valarray<size_t>& __l,
- const valarray<size_t>& __s)
- : _M_count(1), _M_start(__o), _M_size(__l), _M_stride(__s),
- _M_index(__l.size() ? __l.product() : 0)
-{ __gslice_to_index(__o, __l, __s, _M_index); }
-
-
-
OpenPOWER on IntegriCloud