From 292f200484a09d76500f9a54fd3ce8a79efc63b7 Mon Sep 17 00:00:00 2001 From: Alexander Kabaev Date: Aug 12 2004 16:41:42 +0000 Subject: Remove files that are not part of GCC 3.4.x from the vendor branch. --- 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 - -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 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. rather than ). The .h names - are still available, but are deprecated. - * is deprecated, use 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 - 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= 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 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 - -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 - -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 - -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 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 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 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 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 - -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< - -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<) 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 - - 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 -#include -#include - -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 */ - -#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 <&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 ],[ -#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 only if it exists, -# doesn't clash with , and declares intmax_t. -AC_MSG_CHECKING(for inttypes.h) -AC_CACHE_VAL(gcc_cv_header_inttypes_h, -[AC_TRY_COMPILE( - [#include -#include ], - [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 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 -#endif -]) - -AC_TRY_COMPILE([ -#include "ansidecl.h" -#include "system.h" -#ifdef HAVE_SYS_RESOURCE_H -#include -#endif -],[rlim_t l = 0;],,[AC_DEFINE([rlim_t],[long], -[Define to \`long' if doesn't define.])]) - -gcc_AC_CHECK_DECLS(times, , ,[ -#include "ansidecl.h" -#include "system.h" -#ifdef HAVE_SYS_TIMES_H -#include -#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 -#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 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 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 </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 < /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 < /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 < conftest.lit < conftest.big < /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 < /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 / 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 -#else -#include -#endif -#include -#include -#if !defined(_WIN32) -#include /* May get R_OK, etc. on some systems. */ -#else -#include -#endif -#include - -/* 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, ¤t_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 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 AGGR -%token 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 ':' -%right ASSIGN '=' -%right '?' -%left OROR -%left ANDAND -%left '|' -%left '^' -%left '&' -%left MIN_MAX -%left EQCOMPARE -%left ARITHCOMPARE '<' '>' -%left LSHIFT RSHIFT -%left '+' '-' -%left '*' '/' '%' -%left POINTSAT_STAR DOT_STAR -%right UNARY PLUSPLUS MINUSMINUS '~' -%left HYPERUNARY -%left LEFT_RIGHT -%left POINTSAT '.' '(' '[' - -%right SCOPE /* C++ extension */ -%nonassoc NEW DELETE TRY CATCH - -%type unop - -%type identifier IDENTIFIER tTYPENAME CONSTANT expr nonnull_exprlist -%type PFUNCNAME maybe_identifier -%type paren_expr_or_null nontrivial_exprlist SELFNAME -%type expr_no_commas expr_no_comma_rangle -%type cast_expr unary_expr primary STRING -%type reserved_declspecs boolean_literal -%type reserved_typespecquals -%type SCSPEC TYPESPEC CV_QUALIFIER maybe_cv_qualifier -%type init initlist maybeasm maybe_init defarg defarg1 -%type asm_operands nonnull_asm_operands asm_operand asm_clobbers -%type maybe_attribute attributes attribute attribute_list attrib -%type any_word unoperator - -%type save_lineno -%type simple_stmt simple_if - -%type declarator notype_declarator after_type_declarator -%type notype_declarator_intern absdcl_intern -%type after_type_declarator_intern -%type direct_notype_declarator direct_after_type_declarator -%type components notype_components -%type component_decl component_decl_1 -%type component_declarator component_declarator0 -%type notype_component_declarator notype_component_declarator0 -%type after_type_component_declarator after_type_component_declarator0 -%type absdcl cv_qualifiers -%type direct_abstract_declarator conversion_declarator -%type new_declarator direct_new_declarator -%type xexpr parmlist parms bad_parm -%type identifiers_or_typenames -%type fcast_or_absdcl regcast_or_absdcl -%type expr_or_declarator expr_or_declarator_intern -%type complex_notype_declarator -%type notype_unqualified_id unqualified_id qualified_id -%type template_id do_id object_template_id notype_template_declarator -%type overqualified_id notype_qualified_id any_id -%type complex_direct_notype_declarator functional_cast -%type complex_parmlist parms_comma -%type namespace_qualifier namespace_using_decl - -%type type_id new_type_id typed_typespecs typespec typed_declspecs -%type typed_declspecs1 type_specifier_seq nonempty_cv_qualifiers -%type structsp typespecqual_reserved parm named_parm full_parm -%type declmods - -%type extension - -/* C++ extensions */ -%token PTYPENAME -%token EXTERN_LANG_STRING ALL -%token PRE_PARSED_CLASS_DECL DEFARG DEFARG_MARKER -%token PRE_PARSED_FUNCTION_DECL -%type component_constructor_declarator -%type fn_def2 return_id constructor_declarator -%type begin_function_body_ -%type class_head class_head_apparent_template -%type class_head_decl class_head_defn -%type base_class_list -%type base_class_access_list -%type base_class maybe_base_class_list base_class_1 -%type exception_specification_opt ansi_raise_identifier ansi_raise_identifiers -%type operator_name -%type object aggr -%type new delete -/* %type primary_no_id */ -%type maybe_parmlist -%type begin_member_init member_init -%type member_init_list -%type template_parm_header template_spec_header template_header -%type template_parm_list template_parm -%type template_type_parm template_template_parm -%type template_close_bracket -%type apparent_template_type -%type template_type template_arg_list template_arg_list_opt -%type template_arg template_arg_1 -%type condition xcond paren_cond_or_null -%type type_name nested_name_specifier nested_type ptr_to_mem -%type complete_type_name notype_identifier nonnested_type -%type complex_type_name nested_name_specifier_1 -%type new_initializer new_placement -%type using_decl -%type typename_sub typename_sub0 typename_sub1 typename_sub2 -%type explicit_template_type -/* in order to recognize aggr tags as defining and thus shadowing. */ -%token TYPENAME_DEFN IDENTIFIER_DEFN PTYPENAME_DEFN -%type identifier_defn IDENTIFIER_DEFN TYPENAME_DEFN PTYPENAME_DEFN -%type handler_args -%type self_template_type finish_template_type_ - -%token NSNAME -%type 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: - { $$ = NULL_TREE; } - lang_extdef - { $$ = NULL_TREE; ggc_collect (); } - | extdefs lang_extdef - { $$ = NULL_TREE; ggc_collect (); } - ; - -extdefs_opt: - extdefs - | /* empty */ - ; - -.hush_warning: - { have_extern_spec = true; - $$ = 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 '{' - { $$ = begin_compound_stmt (/*has_no_scope=*/1); } - compstmtend - { - STMT_LINENO ($5) = $3; - finish_compound_stmt (/*has_no_scope=*/1, $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 ($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 ($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 ($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 ($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 ($$, $2); } - | return_id '(' nonnull_exprlist ')' - { finish_named_return_value ($$, $3); } - | return_id LEFT_RIGHT - { finish_named_return_value ($$, 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 ($-3, $-1, - yychar == SCOPE); - } - ; - -template_close_bracket: - '>' - | RSHIFT - { - /* Handle `Class>' 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; - $$ = parse_decl ($2, $4, 1); - } - init - { - parse_end_decl ($6, $7, $4); - $$ = convert_from_reference ($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, so don't - do_identifier; we only do that for unqualified - identifiers. */ - if (!lastiddecl || !BASELINK_P (lastiddecl)) - $$ = do_identifier ($-1, 3, NULL_TREE); - else - $$ = $-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"); - $$ = begin_stmt_expr (); - } - compstmt_or_stmtexpr ')' - { $$ = finish_stmt_expr ($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; - } - $$ = expand_start_stmt_expr (); } - compstmt_or_stmtexpr ')' - { if (pedantic) - pedwarn ("ISO C++ forbids braced-groups within expressions"); - $$ = expand_end_stmt_expr ($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 '=' - { $$ = parse_decl ($1, $3, 1); } - init -/* Note how the declaration of the variable is in effect while its init is parsed! */ - { parse_end_decl ($5, $6, $2); } - | declarator maybeasm maybe_attribute - { - $$ = parse_decl ($1, $3, 0); - parse_end_decl ($$, 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 '=' - { $$ = parse_decl0 ($-1, $-2.t, - $-2.lookups, $1, 1); } - /* Note how the declaration of the variable is in effect - while its init is parsed! */ - init - { parse_end_decl ($3, $4, $0); } - | maybe_attribute - { tree d = parse_decl0 ($-1, $-2.t, - $-2.lookups, $1, 0); - parse_end_decl (d, NULL_TREE, $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. */ - $$ = $2; - $2 = $1; - $1.t = NULL_TREE; - $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 '{' - { $$ = 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 = $4; - check_for_missing_semicolon ($$.t); } - | ENUM '{' - { $$ = 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 = $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); - $$ = 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 = $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, $0.t, $0.lookups, - $3, $2, $4); } - | tTYPENAME ':' expr_no_commas maybe_attribute - { $$ = parse_bitfield0 ($1, $0.t, $0.lookups, - $4, $3); } - ; - -notype_component_declarator0: - notype_declarator maybeasm maybe_attribute maybe_init - { $$ = parse_field0 ($1, $0.t, $0.lookups, - $3, $2, $4); } - | constructor_declarator maybeasm maybe_attribute maybe_init - { $$ = parse_field0 ($1, $0.t, $0.lookups, - $3, $2, $4); } - | IDENTIFIER ':' expr_no_commas maybe_attribute - { $$ = parse_bitfield0 ($1, $0.t, $0.lookups, - $4, $3); } - | ':' expr_no_commas maybe_attribute - { $$ = parse_bitfield0 (NULL_TREE, $0.t, - $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 '{' - { $$ = begin_compound_stmt (0); } - compstmtend - { STMT_LINENO ($3) = $1; - finish_compound_stmt (0, $3); } - ; - -compstmt: - compstmt_or_stmtexpr - { last_expr_type = NULL_TREE; } - ; - -simple_if: - IF - { $$ = begin_if_stmt (); - cond_stmt_keyword = "if"; } - paren_cond_or_null - { finish_if_stmt_cond ($3, $2); } - implicitly_scoped_stmt - { $$ = $2; - finish_then_clause ($2); } - ; - -implicitly_scoped_stmt: - compstmt - | - { $$ = begin_compound_stmt (0); } - save_lineno simple_stmt - { STMT_LINENO ($1) = $2; - if ($3) STMT_LINENO ($3) = $2; - finish_compound_stmt (0, $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 - { - $$ = begin_while_stmt (); - cond_stmt_keyword = "while"; - } - paren_cond_or_null - { finish_while_stmt_cond ($3, $2); } - implicitly_scoped_stmt - { $$ = $2; - finish_while_stmt ($2); } - | DO - { $$ = begin_do_stmt (); } - implicitly_scoped_stmt WHILE - { - finish_do_body ($2); - cond_stmt_keyword = "do"; - } - paren_expr_or_null ';' - { $$ = $2; - finish_do_stmt ($6, $2); } - | FOR - { $$ = begin_for_stmt (); } - '(' for.init.statement - { finish_for_init_stmt ($2); } - xcond ';' - { finish_for_cond ($6, $2); } - xexpr ')' - { finish_for_expr ($9, $2); } - implicitly_scoped_stmt - { $$ = $2; - finish_for_stmt ($2); } - | SWITCH - { $$ = begin_switch_stmt (); } - '(' condition ')' - { finish_switch_cond ($4, $2); } - implicitly_scoped_stmt - { $$ = $2; - finish_switch_stmt ($2); } - | CASE expr_no_commas ':' - { $$ = finish_case_label ($2, NULL_TREE); } - stmt - { $$ = $4; } - | CASE expr_no_commas ELLIPSIS expr_no_commas ':' - { $$ = finish_case_label ($2, $4); } - stmt - { $$ = $6; } - | DEFAULT ':' - { $$ = finish_case_label (NULL_TREE, NULL_TREE); } - stmt - { $$ = $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 - { $$ = begin_function_try_block (); } - function_body - { finish_function_try_block ($2); } - handler_seq - { finish_function_handler_sequence ($2); } - ; - -try_block: - TRY - { $$ = begin_try_block (); } - compstmt - { finish_try_block ($2); } - handler_seq - { finish_handler_sequence ($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); - $$ = fake_handler; - - error ("must have at least one catch per try block"); - } - ; - -handler: - CATCH - { $$ = begin_handler (); } - handler_args - { finish_handler_parms ($3, $2); } - compstmt - { finish_handler ($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}. 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 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 t; -int Stack::statc; -int Stack::statc2; -int Stack::bar() @{ @} -@end group -@end smallexample - -Note that using @samp{-fexternal-templates} does not reduce memory usage -from completely different instantiations (@samp{Stack} vs. -@samp{Stack}), but only collapses different occurrences -of @samp{Stack} so that only one @samp{Stack} 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 A @{ @dots{} @}; - -@exdent @file{b.h}: -#pragma interface -class B @{ @dots{} @}; -void f (A); -@end example - -Under @samp{-fexternal-templates}, the definition of @samp{A} 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}}, where @var{paramvals} is a list of values -for the template parameters. For example, you might write - -@example -template class A -@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 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 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 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 -

Old installation documentation

-@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 -

@anchor{Configurations}Configurations Supported by GNU CC

-@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 -

@anchor{Cross-Compiler}Building and Installing a Cross-Compiler

-@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 -

Steps of Cross-Compilation

-@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 -

Configuring a Cross-Compiler

-@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 -

Tools and Libraries for a Cross-Compiler

-@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 -

Cross-Compilers and Header Files

-@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 -

Actually Building the Cross-Compiler

-@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 -

@anchor{VMS Install}Installing GNU CC on VMS

-@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 -
-

-@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 -


-

-@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 -


-

-@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 -


-

-@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 -


-

-@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 -


-

-@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 -


-

-@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 - -


-@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 -
-@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 -
-@end html -@heading @anchor{a29k-*-bsd}a29k-*-bsd -AMD Am29050 used in a system running a variant of BSD Unix. - -@html -
-@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 -
-@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 -
-@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 -
-@end html -@heading @anchor{arc-*-elf}arc-*-elf -Argonaut ARC processor. -This configuration is intended for embedded systems. - -@html -
-@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 -
-@end html -@heading @anchor{arm-*-elf}arm-*-elf -This configuration is intended for embedded systems. - -@html -
-@end html -@heading @anchor{arm*-*-linux-gnu}arm*-*-linux-gnu - -We require GNU binutils 2.10 or newer. - -@html -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@end html -@heading @anchor{dsp16xx}dsp16xx -A port to the AT&T DSP1610 family of processors. - -@html -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -US, Canada, Asia-Pacific, and -Latin-America -@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 -
-@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 -
-@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 -
-@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 -

-@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 -


-@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 -
-@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 -
-@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 -
-@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 -
-@end html -@heading @anchor{ix86-*-sco3.2v4}i?86-*-sco3.2v4 -Use this configuration for SCO release 3.2 version 4. - -@html -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -@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 -
-@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 -
-@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 -
- -@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 -
-@end html -@heading @anchor{m32r-*-elf}m32r-*-elf -Mitsubishi M32R processor. -This configuration is intended for embedded systems. - -@html -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@end html -@heading @anchor{ns32k-sequent}ns32k-sequent -This configuration is obsoleted in GCC 3.1. - -Go to the Berkeley universe before compiling. - -@html -
-@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 -
-@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 -
-@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 -
-@end html -@heading @anchor{powerpc-*-elf}powerpc-*-elf, powerpc-*-sysv4 -PowerPC system in big endian mode, running System V.4. - -@html -
-@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 -
-@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 -
-@end html -@heading @anchor{powerpc-*-eabiaix}powerpc-*-eabiaix -Embedded PowerPC system in big endian mode with @option{-mcall-aix} selected as -the default. - -@html -
-@end html -@heading @anchor{powerpc-*-eabisim}powerpc-*-eabisim -Embedded PowerPC system in big endian mode for use in running under the -PSIM simulator. - -@html -
-@end html -@heading @anchor{powerpc-*-eabi}powerpc-*-eabi -Embedded PowerPC system in big endian mode. - -@html -
-@end html -@heading @anchor{powerpcle-*-elf}powerpcle-*-elf, powerpcle-*-sysv4 -PowerPC system in little endian mode, running System V.4. - -@html -
-@end html -@heading @anchor{powerpcle-*-eabisim}powerpcle-*-eabisim -Embedded PowerPC system in little endian mode for use in running under -the PSIM simulator. - -@html -
-@end html -@heading @anchor{powerpcle-*-eabi}powerpcle-*-eabi -Embedded PowerPC system in little endian mode. - -@html -
-@end html -@heading @anchor{powerpcle-*-winnt}powerpcle-*-winnt, powerpcle-*-pe -PowerPC system in little endian mode running Windows NT@. - -@html -
-@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 -
-@end html -@heading @anchor{s390-*-linux*}s390-*-linux* -S/390 system running Linux for S/390@. - -@html -
-@end html -@heading @anchor{s390x-*-linux*}s390x-*-linux* -zSeries system (64-bit) running Linux for zSeries@. - -@html -
-@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 -
-@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 -
-@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 -

-


-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-@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 -
-

-@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 -


-

-@end html -@ifhtml -@uref{./index.html,,Return to the GCC Installation page} -@end ifhtml -@end ifset - -@c ***GFDL******************************************************************** -@ifset gfdlhtml -@include fdl.texi -@html -


-

-@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 , 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 -#ifdef __MSDOS__ -#include -#else -#include -#endif -#include -#include - -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; idos_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; ifull_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; ifull_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 . 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_"; - } -} - -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_"; - } -} - -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_"; - } -} - -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_"; - } -} - -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_"; - } -} - -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_"; - } -} - -/* 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 6654dd0..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 -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 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 . - Ditto for AIX 3.2 and . */ -#ifndef _NO_PROTO -# define _NO_PROTO -#endif - -#ifdef HAVE_CONFIG_H -# include -#endif - -#if !defined __STDC__ || !__STDC__ -/* This is a separate conditional since some stdc systems - reject `defined (const)'. */ -# ifndef const -# define const -# endif -#endif - -#include - -/* 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 -# 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 -# include -#endif /* GNU C library. */ - -#ifdef VMS -# include -# if HAVE_STRING_H - 0 -# include -# 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 -# 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 -# define my_index strchr -#else - -# if HAVE_STRING_H -# include -# else -# if HAVE_STRINGS_H -# include -# 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 -#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 - -/* 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 -#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 -#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 - -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 - -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 - -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;imethod_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 -#include -#ifdef NEED_DECLARATION_ERRNO -extern int errno; -#endif -#ifdef HAVE_STRING_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_WAIT_H -#include -#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 - -/* 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 - -#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 -#include -#include - -/* 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 - Fleshed out and major cleanups by Jeff Law - -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 . - -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 (¤t_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 (¤t_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 (®_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 (®_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 . - -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 - - 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 - -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 - -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 - -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 -#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 -#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 -#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 -#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 - -typedef complex 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&); -#endif -#ifdef INSERT -template ostream& operator<< (ostream&, const complex&); -#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 -#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 -#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 -#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 - -#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 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 - -extern "C++" { -#define __STD_COMPLEX - -// ANSI complex types -typedef complex float_complex; -typedef complex double_complex; -typedef complex 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 -#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 -struct __Atomicity_lock -{ - static unsigned char _S_atomicity_lock; -}; - -template -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 - -namespace std -{ - // __basic_file definitions - __basic_file::__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::overflow(int __c) - { return _IO_file_overflow(this, __c); } - - // NB: Unused. - int - __basic_file::underflow() - { return _IO_file_underflow(this); } - - // NB: Unused. - int - __basic_file::uflow() - { return _IO_default_uflow(this); } - - // NB: Unused. - int - __basic_file::pbackfail(int __c) - { return _IO_default_pbackfail(this, __c); } - - streamsize - __basic_file::xsputn(const char* __s, streamsize __n) - { return _IO_file_xsputn(this, __s, __n); } - - streamoff - __basic_file::seekoff(streamoff __off, ios_base::seekdir __way, - ios_base::openmode __mode) - { return _IO_file_seekoff(this, __off, __way, __mode); } - - streamoff - __basic_file::seekpos(streamoff __pos, ios_base::openmode __mode) - { return _IO_file_seekoff(this, __pos, ios_base::beg, __mode); } - - // NB: Unused. - streambuf* - __basic_file::setbuf(char* __b, int __len) - { return (streambuf*) _IO_file_setbuf(this,__b, __len); } - - int - __basic_file::sync() - { return _IO_file_sync(this); } - - // NB: Unused. - int - __basic_file::doallocate() - { return _IO_file_doallocate(this); } - - // __basic_file definitions -#ifdef _GLIBCPP_USE_WCHAR_T - __basic_file::__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::overflow(int __c) - { return _IO_wfile_overflow(this, __c); } - - int - __basic_file::underflow() - { return _IO_wfile_underflow(this); } - - // NB: Unused. - int - __basic_file::uflow() - { return _IO_wdefault_uflow(this); } - - // NB: Unused. - int - __basic_file::pbackfail(int __c) - { return _IO_wdefault_pbackfail(this, __c); } - - streamsize - __basic_file::xsputn(const wchar_t* __s, streamsize __n) - { return _IO_wfile_xsputn(this, __s, __n); } - - streamoff - __basic_file::seekoff(streamoff __off, ios_base::seekdir __way, - ios_base::openmode __mode) - { return _IO_wfile_seekoff(this, __off, __way, __mode); } - - streamoff - __basic_file::seekpos(streamoff __pos, ios_base::openmode __mode) - { return _IO_wfile_seekoff(this, __pos, ios_base::beg, __mode); } - - streambuf* - __basic_file::setbuf(wchar_t* __b, int __len) - { return (streambuf*) _IO_wfile_setbuf(this,__b, __len); } - - int - __basic_file::sync() - { return _IO_wfile_sync(this); } - - int - __basic_file::doallocate() - { return _IO_wfile_doallocate(this); } -#endif - - // Need to instantiate base class here for type-info bits, etc - template struct __basic_file_base; - template class __basic_file; -#ifdef _GLIBCPP_USE_WCHAR_T - template struct __basic_file_base; - template class __basic_file; -#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 -#include -#include - -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 - 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 - 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 specializations - template<> - __basic_file::__basic_file(__c_lock* __lock); - - template<> - int - __basic_file::overflow(int __c); - - template<> - int - __basic_file::underflow(); - - template<> - int - __basic_file::uflow(); - - template<> - int - __basic_file::pbackfail(int __c); - - template<> - streamsize - __basic_file::xsputn(const char* __s, streamsize __n); - - template<> - streamoff - __basic_file::seekoff(streamoff __off, ios_base::seekdir __way, - ios_base::openmode __mode); - - template<> - streamoff - __basic_file::seekpos(streamoff __pos, ios_base::openmode __mode); - - template<> - streambuf* - __basic_file::setbuf(char* __b, int __len); - - template<> - int - __basic_file::sync(); - - template<> - int - __basic_file::doallocate(); - - // __basic_file specializations -#ifdef _GLIBCPP_USE_WCHAR_T - template<> - __basic_file::__basic_file(__c_lock* __lock); - - template<> - int - __basic_file::overflow(int __c); - - template<> - int - __basic_file::underflow(); - - template<> - int - __basic_file::uflow(); - - template<> - int - __basic_file::pbackfail(int __c); - - template<> - streamsize - __basic_file::xsputn(const wchar_t* __s, streamsize __n); - - template<> - streamoff - __basic_file::seekoff(streamoff __off, ios_base::seekdir __way, - ios_base::openmode __mode); - - template<> - streamoff - __basic_file::seekpos(streamoff __pos, ios_base::openmode __mode); - - template<> - streambuf* - __basic_file::setbuf(wchar_t* __b, int __len); - - template<> - int - __basic_file::sync(); - - template<> - int - __basic_file::doallocate(); -#endif - - template - __basic_file<_CharT>::~__basic_file() - { _IO_file_finish(this, 0); } - - template - 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 - __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 - __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 - bool - __basic_file<_CharT>::is_open() { return _fileno >= 0; } - - template - __basic_file<_CharT>* - __basic_file<_CharT>::close() - { - return _IO_file_close_it(this) ? static_cast<__basic_file*>(NULL) : this; - } - - template - streamsize - __basic_file<_CharT>::xsgetn(_CharT* __s, streamsize __n) - { return _IO_file_xsgetn(this, __s, __n); } - - // NB: Unused. - template - streamsize - __basic_file<_CharT>::sys_read(_CharT* __s, streamsize __n) - { return _IO_file_read(this, __s, __n); } - - // NB: Unused. - template - streamsize - __basic_file<_CharT>::sys_write(const _CharT* __s, streamsize __n) - { return _IO_file_write(this, __s, __n); } - - // NB: Unused. - template - streamoff - __basic_file<_CharT>::sys_seek(streamoff __pos, ios_base::seekdir __way) - { return _IO_file_seek(this, __pos, __way); } - - // NB: Unused. - template - int - __basic_file<_CharT>::sys_close() - { return _IO_file_close(this); } - - // NB: Unused. - template - int - __basic_file<_CharT>::sys_stat(void* __v) - { return _IO_file_stat(this, __v); } - - // NB: Unused. - template - int - __basic_file<_CharT>::showmanyc() { return EOF; } - - // NB: Unused. - template - 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 - -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 - -#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 - ], [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 => " - echo "" - echo "and the configuration information here:" - echo " faster => ${srcdir}/docs/html/configopts.html" - echo " slower => " - 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 -#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 -#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 -#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 -#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 -#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 - -#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 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 - -#if 0 // Let's not bother with this just yet. -#include - -#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 (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 (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 (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 (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 (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 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 -#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 -#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 -#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 -#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 -#include // For mbstate_t. - -namespace std -{ - // 27.4.1 Types - - // [27.4.3] template class fpos - /** - * @doctodo - */ - template - 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 streampos; -# ifdef _GLIBCPP_USE_WCHAR_T - /// 27.2, paragraph 10 about fpos/char_traits circularity - typedef fpos 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 -#include -#include -#ifndef __RESTRICT -# define __RESTRICT -#endif - -#include - -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 -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 -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 -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 -_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 -_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 -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 -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 -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 -_Pthread_alloc_per_thread_state<_Max_size> * -_Pthread_alloc_template<_Max_size>::_S_free_per_thread_states = 0; - -template -pthread_key_t _Pthread_alloc_template<_Max_size>::_S_key; - -template -bool _Pthread_alloc_template<_Max_size>::_S_key_initialized = false; - -template -pthread_mutex_t _Pthread_alloc_template<_Max_size>::_S_chunk_allocator_lock -= PTHREAD_MUTEX_INITIALIZER; - -template -char *_Pthread_alloc_template<_Max_size> -::_S_start_free = 0; - -template -char *_Pthread_alloc_template<_Max_size> -::_S_end_free = 0; - -template -size_t _Pthread_alloc_template<_Max_size> -::_S_heap_size = 0; - - -template -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 struct rebind { - typedef pthread_allocator<_NewType> other; - }; - - pthread_allocator() throw() {} - pthread_allocator(const pthread_allocator& a) throw() {} - template - 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 { -public: - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef void* pointer; - typedef const void* const_pointer; - typedef void value_type; - - template struct rebind { - typedef pthread_allocator<_NewType> other; - }; -}; - -template -inline bool operator==(const _Pthread_alloc_template<_Max_size>&, - const _Pthread_alloc_template<_Max_size>&) -{ - return true; -} - -template -inline bool operator==(const pthread_allocator<_T1>&, - const pthread_allocator<_T2>& a2) -{ - return true; -} - -template -inline bool operator!=(const pthread_allocator<_T1>&, - const pthread_allocator<_T2>&) -{ - return false; -} - -template -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 -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 -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 -#include -#include -#include // For __throw_bad_alloc -#include - -#include - -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 - 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 - void (* __malloc_alloc_template<__inst>::__malloc_alloc_oom_handler)() = 0; - - template - 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 - 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 - 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 - 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 - 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 _Atomic_word - __default_alloc_template<__threads, __inst>::_S_force_new = 0; - - template - inline bool - operator==(const __default_alloc_template<__threads,__inst>&, - const __default_alloc_template<__threads,__inst>&) - { return true; } - - template - 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 - 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 - 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 - void* - __default_alloc_template:: - 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 - _STL_mutex_lock - __default_alloc_template<__threads,__inst>::_S_node_allocator_lock - __STL_MUTEX_INITIALIZER; - - template - char* __default_alloc_template<__threads,__inst>::_S_start_free = 0; - - template - char* __default_alloc_template<__threads,__inst>::_S_end_free = 0; - - template - size_t __default_alloc_template<__threads,__inst>::_S_heap_size = 0; - - template - typename __default_alloc_template<__threads,__inst>::_Obj* volatile - __default_alloc_template<__threads,__inst>::_S_free_list[_NFREELISTS]; - - typedef __default_alloc_template __alloc; - typedef __default_alloc_template __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 - 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 - struct rebind - { typedef allocator<_Tp1> other; }; - - allocator() throw() {} - allocator(const allocator&) throw() {} - template - 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 - { - public: - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef void* pointer; - typedef const void* const_pointer; - typedef void value_type; - - template - struct rebind - { typedef allocator<_Tp1> other; }; - }; - - - template - inline bool - operator==(const allocator<_T1>&, const allocator<_T2>&) - { return true; } - - template - 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 - 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 - struct rebind - { typedef __allocator<_Tp1, _Alloc> other; }; - - __allocator() throw() {} - __allocator(const __allocator& __a) throw() - : __underlying_alloc(__a.__underlying_alloc) {} - - template - __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 - struct __allocator - { - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef void* pointer; - typedef const void* const_pointer; - typedef void value_type; - - template - struct rebind - { typedef __allocator<_Tp1, _Alloc> other; }; - }; - - template - inline bool - operator==(const __allocator<_Tp,_Alloc>& __a1, - const __allocator<_Tp,_Alloc>& __a2) - { return __a1.__underlying_alloc == __a2.__underlying_alloc; } - - template - 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 (for example) will work - * correctly. As required, all allocators compare equal. - */ - template - inline bool - operator==(const __malloc_alloc_template&, - const __malloc_alloc_template&) - { return true; } - - template - inline bool - operator!=(const __malloc_alloc_template<__inst>&, - const __malloc_alloc_template<__inst>&) - { return false; } - - template - inline bool - operator==(const __debug_alloc<_Alloc>&, const __debug_alloc<_Alloc>&) - { return true; } - - template - 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 - struct _Alloc_traits - { - static const bool _S_instanceless = false; - typedef typename _Allocator::template rebind<_Tp>::other allocator_type; - }; - - template - const bool _Alloc_traits<_Tp, _Allocator>::_S_instanceless; - - /// The version for the default allocator. - template - 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 - 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 - 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 - 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 - 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 - 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 - 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; - extern template class allocator; - extern template class __default_alloc_template; -#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 - -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 - -/** @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 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 - _Tp operator()(const _Tp& __t) const { return abs(__t); } - }; - - struct __cos - { - template - _Tp operator()(const _Tp& __t) const { return cos(__t); } - }; - - struct __acos - { - template - _Tp operator()(const _Tp& __t) const { return acos(__t); } - }; - - struct __cosh - { - template - _Tp operator()(const _Tp& __t) const { return cosh(__t); } - }; - - struct __sin - { - template - _Tp operator()(const _Tp& __t) const { return sin(__t); } - }; - - struct __asin - { - template - _Tp operator()(const _Tp& __t) const { return asin(__t); } - }; - - struct __sinh - { - template - _Tp operator()(const _Tp& __t) const { return sinh(__t); } - }; - - struct __tan - { - template - _Tp operator()(const _Tp& __t) const { return tan(__t); } - }; - - struct __atan - { - template - _Tp operator()(const _Tp& __t) const { return atan(__t); } - }; - - struct __tanh - { - template - _Tp operator()(const _Tp& __t) const { return tanh(__t); } - }; - - struct __exp - { - template - _Tp operator()(const _Tp& __t) const { return exp(__t); } - }; - - struct __log - { - template - _Tp operator()(const _Tp& __t) const { return log(__t); } - }; - - struct __log10 - { - template - _Tp operator()(const _Tp& __t) const { return log10(__t); } - }; - - struct __sqrt - { - template - _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 - _Tp operator()(const _Tp& __t) const { return +__t; } - }; - - struct __negate - { - template - _Tp operator()(const _Tp& __t) const { return -__t; } - }; - - struct __bitwise_not - { - template - _Tp operator()(const _Tp& __t) const { return ~__t; } - }; - - struct __plus - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x + __y; } - }; - - struct __minus - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x - __y; } - }; - - struct __multiplies - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x * __y; } - }; - - struct __divides - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x / __y; } - }; - - struct __modulus - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x % __y; } - }; - - struct __bitwise_xor - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x ^ __y; } - }; - - struct __bitwise_and - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x & __y; } - }; - - struct __bitwise_or - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x | __y; } - }; - - struct __shift_left - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x << __y; } - }; - - struct __shift_right - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x >> __y; } - }; - - struct __logical_and - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x && __y; } - }; - - struct __logical_or - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x || __y; } - }; - - struct __logical_not - { - template - bool operator()(const _Tp& __x) const { return !__x; } - }; - - struct __equal_to - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x == __y; } - }; - - struct __not_equal_to - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x != __y; } - }; - - struct __less - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x < __y; } - }; - - struct __greater - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x > __y; } - }; - - struct __less_equal - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x <= __y; } - }; - - struct __greater_equal - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x >= __y; } - }; - - // The few binary functions we miss. - struct __atan2 - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return atan2(__x, __y); } - }; - - struct __pow - { - template - _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 - struct __fun - { - typedef _Tp result_type; - }; - - // several specializations for relational operators. - template - struct __fun<__logical_not, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__logical_and, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__logical_or, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__less, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__greater, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__less_equal, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__greater_equal, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__equal_to, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__not_equal_to, _Tp> - { - typedef bool result_type; - }; - - // - // Apply function taking a value/const reference closure - // - - template - 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 - 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 - struct _ValFunClos<_ValArray,_Tp> : _FunBase, _Tp> - { - typedef _FunBase, _Tp> _Base; - typedef _Tp value_type; - - _ValFunClos(const valarray<_Tp>& __v, _Tp __f(_Tp)) : _Base(__v, __f) {} - }; - - template - 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 - struct _RefFunClos<_ValArray,_Tp> : _FunBase, const _Tp&> - { - typedef _FunBase, const _Tp&> _Base; - typedef _Tp value_type; - - _RefFunClos(const valarray<_Tp>& __v, _Tp __f(const _Tp&)) - : _Base(__v, __f) {} - }; - - // - // Unary expression closure. - // - - template - 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 - 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 - 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 _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 _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 _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 - 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 - 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 - struct _BinClos<_Oper,_Expr,_ValArray,_Dom,typename _Dom::value_type> - : _BinBase<_Oper,_Dom,valarray > - { - 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 - struct _BinClos<_Oper,_ValArray,_Expr,typename _Dom::value_type,_Dom> - : _BinBase<_Oper,valarray,_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 - 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 - 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 - 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 - 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 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 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 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 - 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 _GBase { - public: - typedef typename _Dom::value_type value_type; - - _GBase (const _Dom& __e, const valarray& __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& _M_index; - }; - - template class _GBase<_Array<_Tp> > { - public: - typedef _Tp value_type; - - _GBase (_Array<_Tp> __a, const valarray& __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& _M_index; - }; - - template struct _GClos<_Expr,_Dom> : _GBase<_Dom> { - typedef _GBase<_Dom> _Base; - typedef typename _Base::value_type value_type; - - _GClos (const _Dom& __e, const valarray& __i) - : _Base (__e, __i) {} - }; - - template - 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& __i) - : _Base (__a, __i) {} - }; - - // - // indirect_array closure - // - - template class _IBase { - public: - typedef typename _Dom::value_type value_type; - - _IBase (const _Dom& __e, const valarray& __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& _M_index; - }; - - template struct _IClos<_Expr,_Dom> : _IBase<_Dom> { - typedef _IBase<_Dom> _Base; - typedef typename _Base::value_type value_type; - - _IClos (const _Dom& __e, const valarray& __i) - : _Base (__e, __i) {} - }; - - template - struct _IClos<_ValArray,_Tp> : _IBase > { - typedef _IBase > _Base; - typedef _Tp value_type; - - _IClos (const valarray<_Tp>& __a, const valarray& __i) - : _Base (__a, __i) {} - }; - - // - // class _Expr - // - template - class _Expr - { - public: - typedef _Tp value_type; - - _Expr(const _Clos&); - - const _Clos& operator()() const; - - value_type operator[](size_t) const; - valarray operator[](slice) const; - valarray operator[](const gslice&) const; - valarray operator[](const valarray&) const; - valarray operator[](const valarray&) 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 shift(int) const; - valarray cshift(int) const; - - value_type min() const; - value_type max() const; - - valarray apply(value_type (*)(const value_type&)) const; - valarray apply(value_type (*)(value_type)) const; - - private: - const _Clos _M_closure; - }; - - template - inline - _Expr<_Clos,_Tp>::_Expr(const _Clos& __c) : _M_closure(__c) {} - - template - inline const _Clos& - _Expr<_Clos,_Tp>::operator()() const - { return _M_closure; } - - template - inline _Tp - _Expr<_Clos,_Tp>::operator[](size_t __i) const - { return _M_closure[__i]; } - - template - inline valarray<_Tp> - _Expr<_Clos,_Tp>::operator[](slice __s) const - { return _M_closure[__s]; } - - template - inline valarray<_Tp> - _Expr<_Clos,_Tp>::operator[](const gslice& __gs) const - { return _M_closure[__gs]; } - - template - inline valarray<_Tp> - _Expr<_Clos,_Tp>::operator[](const valarray& __m) const - { return _M_closure[__m]; } - - template - inline valarray<_Tp> - _Expr<_Clos,_Tp>::operator[](const valarray& __i) const - { return _M_closure[__i]; } - - template - inline size_t - _Expr<_Clos,_Tp>::size() const { return _M_closure.size (); } - - template - inline valarray<_Tp> - _Expr<_Clos, _Tp>::shift(int __n) const - { return valarray<_Tp>(_M_closure).shift(__n); } - - template - inline valarray<_Tp> - _Expr<_Clos, _Tp>::cshift(int __n) const - { return valarray<_Tp>(_M_closure).cshift(__n); } - - template - inline valarray<_Tp> - _Expr<_Clos, _Tp>::apply(_Tp __f(const _Tp&)) const - { return valarray<_Tp>(_M_closure).apply(__f); } - - template - 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 - 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 - inline _Tp - _Expr<_Clos, _Tp>::min() const - { return __valarray_min(_M_closure); } - - template - inline _Tp - _Expr<_Clos, _Tp>::max() const - { return __valarray_max(_M_closure); } - - template - 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 \ - 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 \ - 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 \ -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 \ -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 \ -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& __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 \ -inline _Expr<_BinClos<_Name,_ValArray,_Expr,typename _Dom::value_type,_Dom>,\ - typename __fun<_Name, typename _Dom::value_type>::result_type>\ -operator _Op(const valarray& __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 \ - 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 \ - 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 \ - 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 \ - 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& __v) \ - { \ - typedef typename _Dom::value_type _Tp; \ - typedef _BinClos<__##_Fun, _Expr, _ValArray, _Dom, _Tp> _Closure;\ - return _Expr<_Closure,_Tp>(_Closure(__e(), __v)); \ - } \ - \ - template \ - inline _Expr<_BinClos<__##_Fun, _ValArray, _Expr, \ - typename _Dom::value_type,_Dom>, \ - typename _Dom::value_type> \ - _Fun(const 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 \ - 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 \ - 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 \ - 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 \ - 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 \ - 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 - -namespace __gnu_cxx -{ -using std::size_t; - -template 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 -{ - size_t operator()(const char* __s) const { return __stl_hash_string(__s); } -}; - -template<> struct hash -{ - size_t operator()(const char* __s) const { return __stl_hash_string(__s); } -}; - -template<> struct hash { - size_t operator()(char __x) const { return __x; } -}; -template<> struct hash { - size_t operator()(unsigned char __x) const { return __x; } -}; -template<> struct hash { - size_t operator()(unsigned char __x) const { return __x; } -}; -template<> struct hash { - size_t operator()(short __x) const { return __x; } -}; -template<> struct hash { - size_t operator()(unsigned short __x) const { return __x; } -}; -template<> struct hash { - size_t operator()(int __x) const { return __x; } -}; -template<> struct hash { - size_t operator()(unsigned int __x) const { return __x; } -}; -template<> struct hash { - size_t operator()(long __x) const { return __x; } -}; -template<> struct hash { - 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 -#include -#include -#include -#include - -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 -struct _Hashtable_node -{ - _Hashtable_node* _M_next; - _Val _M_val; -}; - -template -class hashtable; - -template -struct _Hashtable_iterator; - -template -struct _Hashtable_const_iterator; - -template -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 -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 hashtable; - -template -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 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 - 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 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 insert_unique_noresize(const value_type& __obj); - iterator insert_equal_noresize(const value_type& __obj); - - template - void insert_unique(_InputIterator __f, _InputIterator __l) - { - insert_unique(__f, __l, __iterator_category(__f)); - } - - template - void insert_equal(_InputIterator __f, _InputIterator __l) - { - insert_equal(__f, __l, __iterator_category(__f)); - } - - template - void insert_unique(_InputIterator __f, _InputIterator __l, - input_iterator_tag) - { - for ( ; __f != __l; ++__f) - insert_unique(*__f); - } - - template - void insert_equal(_InputIterator __f, _InputIterator __l, - input_iterator_tag) - { - for ( ; __f != __l; ++__f) - insert_equal(*__f); - } - - template - 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 - 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 - equal_range(const key_type& __key); - - pair - 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 -_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 -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 -_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 -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 -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 -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 -inline void swap(hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht1, - hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht2) { - __ht1.swap(__ht2); -} - - -template -pair::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(__cur, this), false); - - _Node* __tmp = _M_new_node(__obj); - __tmp->_M_next = __first; - _M_buckets[__n] = __tmp; - ++_M_num_elements; - return pair(iterator(__tmp, this), true); -} - -template -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 -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 -pair::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 _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 -pair::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 _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 -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 -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 -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 -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(__first._M_ht)), - iterator(const_cast<_Node*>(__last._M_cur), - const_cast(__last._M_ht))); -} - -template -inline void -hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const const_iterator& __it) -{ - erase(iterator(const_cast<_Node*>(__it._M_cur), - const_cast(__it._M_ht))); -} - -template -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 -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 -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 -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 -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 -# define __GC_CONST // constant except for deallocation -# endif - -#include // 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 -inline _CharT _S_eos(_CharT*) { return _CharT(); } - -// Test for basic character types. -// For basic character types leaves having a trailing eos. -template -inline bool _S_is_basic_char_type(_CharT*) { return false; } -template -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 -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 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 -// 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 and a -// little like containers. - -template -class sequence_buffer : public iterator -{ - 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 _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 rope; -template struct _Rope_RopeConcatenation; -template struct _Rope_RopeLeaf; -template struct _Rope_RopeFunction; -template struct _Rope_RopeSubstring; -template class _Rope_iterator; -template class _Rope_const_iterator; -template class _Rope_char_ref_proxy; -template class _Rope_char_ptr_proxy; - -template -bool operator== (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x, - const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y); - -template -_Rope_const_iterator<_CharT,_Alloc> operator- - (const _Rope_const_iterator<_CharT,_Alloc>& __x, - ptrdiff_t __n); - -template -_Rope_const_iterator<_CharT,_Alloc> operator+ - (const _Rope_const_iterator<_CharT,_Alloc>& __x, - ptrdiff_t __n); - -template -_Rope_const_iterator<_CharT,_Alloc> operator+ - (ptrdiff_t __n, - const _Rope_const_iterator<_CharT,_Alloc>& __x); - -template -bool operator== - (const _Rope_const_iterator<_CharT,_Alloc>& __x, - const _Rope_const_iterator<_CharT,_Alloc>& __y); - -template -bool operator< - (const _Rope_const_iterator<_CharT,_Alloc>& __x, - const _Rope_const_iterator<_CharT,_Alloc>& __y); - -template -ptrdiff_t operator- - (const _Rope_const_iterator<_CharT,_Alloc>& __x, - const _Rope_const_iterator<_CharT,_Alloc>& __y); - -template -_Rope_iterator<_CharT,_Alloc> operator- - (const _Rope_iterator<_CharT,_Alloc>& __x, - ptrdiff_t __n); - -template -_Rope_iterator<_CharT,_Alloc> operator+ - (const _Rope_iterator<_CharT,_Alloc>& __x, - ptrdiff_t __n); - -template -_Rope_iterator<_CharT,_Alloc> operator+ - (ptrdiff_t __n, - const _Rope_iterator<_CharT,_Alloc>& __x); - -template -bool operator== - (const _Rope_iterator<_CharT,_Alloc>& __x, - const _Rope_iterator<_CharT,_Alloc>& __y); - -template -bool operator< - (const _Rope_iterator<_CharT,_Alloc>& __x, - const _Rope_iterator<_CharT,_Alloc>& __y); - -template -ptrdiff_t operator- - (const _Rope_iterator<_CharT,_Alloc>& __x, - const _Rope_iterator<_CharT,_Alloc>& __y); - -template -rope<_CharT,_Alloc> operator+ (const rope<_CharT,_Alloc>& __left, - const rope<_CharT,_Alloc>& __right); - -template -rope<_CharT,_Alloc> operator+ (const rope<_CharT,_Alloc>& __left, - const _CharT* __right); - -template -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 -struct _Rope_Concat_fn - : public std::binary_function, rope<_CharT,_Alloc>, - rope<_CharT,_Alloc> > { - rope<_CharT,_Alloc> operator() (const rope<_CharT,_Alloc>& __x, - const rope<_CharT,_Alloc>& __y) { - return __x + __y; - } -}; - -template -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 _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 _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 -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 -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 -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 -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 -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 -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 - 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 _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 -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 _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 - 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 _Rope_iterator_base - : public iterator -{ - 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 _Rope_iterator; - -template -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 - friend _Rope_const_iterator<_CharT2,_Alloc2> operator- - (const _Rope_const_iterator<_CharT2,_Alloc2>& __x, - ptrdiff_t __n); - template - friend _Rope_const_iterator<_CharT2,_Alloc2> operator+ - (const _Rope_const_iterator<_CharT2,_Alloc2>& __x, - ptrdiff_t __n); - template - 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 - friend bool operator== - (const _Rope_const_iterator<_CharT2,_Alloc2>& __x, - const _Rope_const_iterator<_CharT2,_Alloc2>& __y); - template - friend bool operator< - (const _Rope_const_iterator<_CharT2,_Alloc2>& __x, - const _Rope_const_iterator<_CharT2,_Alloc2>& __y); - template - friend ptrdiff_t operator- - (const _Rope_const_iterator<_CharT2,_Alloc2>& __x, - const _Rope_const_iterator<_CharT2,_Alloc2>& __y); -}; - -template -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 - friend bool operator== - (const _Rope_iterator<_CharT2,_Alloc2>& __x, - const _Rope_iterator<_CharT2,_Alloc2>& __y); - template - friend bool operator< - (const _Rope_iterator<_CharT2,_Alloc2>& __x, - const _Rope_iterator<_CharT2,_Alloc2>& __y); - template - friend ptrdiff_t operator- - (const _Rope_iterator<_CharT2,_Alloc2>& __x, - const _Rope_iterator<_CharT2,_Alloc2>& __y); - template - friend _Rope_iterator<_CharT2,_Alloc2> operator- - (const _Rope_iterator<_CharT2,_Alloc2>& __x, - ptrdiff_t __n); - template - friend _Rope_iterator<_CharT2,_Alloc2> operator+ - (const _Rope_iterator<_CharT2,_Alloc2>& __x, - ptrdiff_t __n); - template - 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 _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 _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 -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 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_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 - friend rope<_CharT2,_Alloc2> - operator+ (const rope<_CharT2,_Alloc2>& __left, - const rope<_CharT2,_Alloc2>& __right); - - template - friend rope<_CharT2,_Alloc2> - operator+ (const rope<_CharT2,_Alloc2>& __left, - const _CharT2* __right); - - template - 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 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 -const typename rope<_CharT, _Alloc>::size_type rope<_CharT, _Alloc>::npos = - (size_type)(-1); - -template -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 -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 -inline bool operator!= (const _Rope_const_iterator<_CharT,_Alloc>& __x, - const _Rope_const_iterator<_CharT,_Alloc>& __y) { - return !(__x == __y); -} - -template -inline bool operator> (const _Rope_const_iterator<_CharT,_Alloc>& __x, - const _Rope_const_iterator<_CharT,_Alloc>& __y) { - return __y < __x; -} - -template -inline bool operator<= (const _Rope_const_iterator<_CharT,_Alloc>& __x, - const _Rope_const_iterator<_CharT,_Alloc>& __y) { - return !(__y < __x); -} - -template -inline bool operator>= (const _Rope_const_iterator<_CharT,_Alloc>& __x, - const _Rope_const_iterator<_CharT,_Alloc>& __y) { - return !(__x < __y); -} - -template -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 -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 -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 -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 -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 -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 -inline bool operator!= (const _Rope_iterator<_CharT,_Alloc>& __x, - const _Rope_iterator<_CharT,_Alloc>& __y) { - return !(__x == __y); -} - -template -inline bool operator> (const _Rope_iterator<_CharT,_Alloc>& __x, - const _Rope_iterator<_CharT,_Alloc>& __y) { - return __y < __x; -} - -template -inline bool operator<= (const _Rope_iterator<_CharT,_Alloc>& __x, - const _Rope_iterator<_CharT,_Alloc>& __y) { - return !(__y < __x); -} - -template -inline bool operator>= (const _Rope_iterator<_CharT,_Alloc>& __x, - const _Rope_iterator<_CharT,_Alloc>& __y) { - return !(__x < __y); -} - -template -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 -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 -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 -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 -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 -inline -rope<_CharT,_Alloc>& -operator+= (rope<_CharT,_Alloc>& __left, - const rope<_CharT,_Alloc>& __right) -{ - __left.append(__right); - return __left; -} - -template -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 -inline -rope<_CharT,_Alloc>& -operator+= (rope<_CharT,_Alloc>& __left, - const _CharT* __right) { - __left.append(__right); - return __left; -} - -template -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 -inline -rope<_CharT,_Alloc>& -operator+= (rope<_CharT,_Alloc>& __left, _CharT __right) { - __left.append(__right); - return __left; -} - -template -bool -operator< (const rope<_CharT,_Alloc>& __left, - const rope<_CharT,_Alloc>& __right) { - return __left.compare(__right) < 0; -} - -template -bool -operator== (const rope<_CharT,_Alloc>& __left, - const rope<_CharT,_Alloc>& __right) { - return __left.compare(__right) == 0; -} - -template -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 -inline bool -operator!= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) { - return !(__x == __y); -} - -template -inline bool -operator> (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) { - return __y < __x; -} - -template -inline bool -operator<= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) { - return !(__y < __x); -} - -template -inline bool -operator>= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) { - return !(__x < __y); -} - -template -inline bool operator!= (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x, - const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y) { - return !(__x == __y); -} - -template -std::basic_ostream<_CharT, _Traits>& operator<< - (std::basic_ostream<_CharT, _Traits>& __o, - const rope<_CharT, _Alloc>& __r); - -typedef rope crope; -typedef rope 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 -inline void swap(rope<_CharT,_Alloc>& __x, rope<_CharT,_Alloc>& __y) { - __x.swap(__y); -} - -// Hash functions should probably be revisited later: -template<> struct hash -{ - 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 -{ - 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 - -# 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 -#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 -#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 - Gerald Pfeifer - - * Makefile.am (mkinstalldirs): Set. - -2001-01-28 Benjamin Kosnik - - * Makefile.am (LIBIO_SRCS): Remove stdio.c. - -2000-10-29 Benjamin Kosnik - - * Makefile.am (INCLUDES): Change to $(top_builddir)/include. - -2000-10-29 Mark Mitchell - - * 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 - - * 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 - - * Makefile.am: Add includes from GLIBCPP_EXPORT_INCLUDES. - -2000-10-10 Benjamin Kosnik - - * _G_config.h (__need_ptrdiff_t): Add. - -2000-10-08 Benjamin Kosnik - - * Makefile.am (INCLUDES): Simplify. - * libioP.h (JUMP1): If compiling c++, use std headers. - * _G_config.h: Same. - -2000-10-07 Benjamin Kosnik - - * Makefile.am (CONFIG_INCLUDES): Remove. - -2000-10-06 Benjamin Kosnik - - * Makefile.am (libio_la_DEPENDENCIES): Remove extaneous cruft. - (libio_la_SOURCES): Remove. - -2000-10-05 Benjamin Kosnik - - * Makefile.am (INCLUDES): Add glibcpp_includedir. - -2000-10-04 Benjamin Kosnik - - * _G_config.h : Re-guard the __mbstate_t declaration. - -2000-09-27 Benjamin Kosnik - - * libioP.h: Remove fcntl.h include. - -2000-08-22 Benjamin Kosnik - - * iofwide.c (_IO_fwide): Simplify, as nl_langinfo is assumed. - -2000-08-14 Benjamin Kosnik - - * *: 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 - - * genops.c (_IO_unbuffer_write): Don't call _IO_SETBUF if the - stream is not orientated. - -2000-08-04 Benjamin Kosnik - - * Makefile.am (LIBIO_SRCS): Add c_codecvt.c - -2000-07-12 benjamin kosnik - - * _G_config.h: Smoke less crack, don't define _G_HAVE_ST_BLKSIZE. - -2000-04-25 Benjamin Kosnik - - * 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 - - * Makefile.am (libio_headers): Strip out deadweight. - -2000-02-21 Benjamin Kosnik - - * gen-params (CONFIG_NM): Specifically add in nm as the - default CONFIG_NM. - -2000-02-10 Benjamin Kosnik - - * Makefile.am: Add bits for _G_config.h generation. - * gen-params: New file. - -2000-02-07 Benjamin Kosnik - - * Makefile.am: Change license. - -1999-07-28 Benjamin Kosnik - - * Makefile.am (libio_la_SOURCES): Remove cleanup.c, so that - _IO_cleanup will not be undefined. - -1998-11-26 Manfred Hollstein - - * configure.in (compiler_name): Add check to detect if this - language's compiler has been built. - -1998-10-12 Alexandre Oliva - - * 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 - - * 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 - - * 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 - - * libio/iogetline.c (_IO_getline_info): Don't read anything for - N == 0. Patch by HJ Lu. - -1998-08-23 Mark Mitchell - - * iomanip.h: Use __extension__ for `extern' explicit template - instantiations. - -1998-08-17 Ulrich Drepper - - * strfile.h: Define __PMT if not already defined. - -1998-08-03 Andreas Jaeger - - * libioP.h: Use __PMT in typedefs. - * strfile.h: Likewise. - -1998-06-29 Ulrich Drepper - - * 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 - - * Makefile.in (install): Remove superfluous /include. - -1998-06-26 Manfred Hollstein - - * config.shared (FLAGS_TO_PASS): Add gcc_version_trigger. - (Makefile): Add dependency upon $(gcc_version_trigger). - -1998-06-24 Manfred Hollstein - - * 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 - - * config.shared (FLAGS_TO_PASS): Add gcc_version. - -1998-06-19 Manfred Hollstein - - * config.shared (FLAGS_TO_PASS): Add libsubdir. - -1998-06-07 Andreas Schwab - - * genops.c (__underflow): Read character from read pointer as unsigned. - (__uflow): Likewise. - -1998-05-22 Ulrich Drepper - - * 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 - - * configure.in: Make locating frag files failsafe even for the - special case if configuring and building in srcdir. - -1998-02-24 Andreas Schwab - - 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 . - * ioprims.c: Likewise. - -1998-02-10 Mark Mitchell - - * iostream.cc (ostream::operator<<(long double)): Don't use - labeled initializers. - -Fri Feb 6 01:35:56 1998 Manfred Hollstein - - * 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 - - * 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 - - * 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 - - * 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 - - * config.shared (FLAGS_TO_PASS): Add SHELL. - -Thu Jan 15 00:21:58 1998 Ian Lance Taylor - - * 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 - - * 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 - - 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 - - * 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 - - * iomanip.h: Fix guiding decls. - -1997-11-05 Brendan Kehoe - - * 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 - - * gen-params: Override NULL. - -1997-10-27 03:53 Ulrich Drepper - - * 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 - - * 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 - - * iostream.cc, libio.h: Convert other uses of #ifdef - _G_HAVE_PRINTF_FP to #if. - -1997-10-02 Brendan Kehoe - - * iostream.cc (operator<<): Use `#if _G_HAVE_PRINTF_FP', not ifdef. - -Thu Oct 2 10:36:49 1997 Jason Merrill - - * gen-params: Fix __printf_fp test. - * config/linuxlibc1.mt (gxx_includedir): Don't define. - -Thu Oct 2 10:36:26 1997 Ulrich Drepper - - * 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 - - * iomanip.h: Use new friend <> syntax. - -Sun Sep 28 12:04:21 1997 Jason Merrill - - * 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 - - * Makefile.in (LIBIO_OBJECTS): Depend on _G_CONFIG_H. - -1997-09-17 04:08 Ulrich Drepper - - * 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 - - * libioP.h: Define __set_errno if not already defined. - -1997-09-15 02:37 Ulrich Drepper - - * 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 - - * Makefile.in (iostream.list): Remove STDIO_WRAP_OBJECTS. - -Mon Sep 8 01:30:27 1997 Weiwen Liu - - * 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 - - * 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 - - * parsestream.cc (general_parsebuf): Cast return of malloc to char*. - -1997-09-04 16:11 Ulrich Drepper - - 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 - - * iostream.h: Add copy assignment ops for _IO_?stream_withassign. - -Tue Jul 22 10:31:41 1997 Brendan Kehoe - - * config.shared (CHECK_SUBDIRS): Use install-sh, not install.sh. - -Wed Jun 25 12:20:55 1997 Brendan Kehoe - - * config.shared (DOING_GPERF): Look for this, defining TOLIBGXX - and LIBS for it. - -Wed Jun 18 11:03:34 1997 Bob Manson - - * config.shared (FLAGS_TO_PASS): Don't include RUNTEST. - -Tue Jun 17 22:23:48 1997 Bob Manson - - * config.shared (FLAGS_TO_PASS): Pass RUNTEST and RUNTESTFLAGS. - -Fri May 16 21:08:53 1997 Bob Manson - - * 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 - - * 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 - - * Makefile.in (test, tpipe): Add $(CFLAGS). - -Wed Apr 30 12:16:29 1997 Jason Merrill - - * configure.in: Don't turn on multilib here. - -Sat Apr 26 13:38:21 1997 Bob Manson - - * 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 - - * 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 - - * libioP.h (_IO_file_attach): Delete redundant decl. - -Tue Jan 21 22:13:45 1997 Brendan Kehoe - - * 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 - - * 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 - - * dbz/dbz.c: Use off_t. - -Sat Nov 23 15:44:37 1996 Jason Merrill - - * Makefile.in (install): Don't install _G_config.h with other headers. - -Mon Nov 18 17:12:41 1996 Jason Merrill - - * config.shared (SUBDIRS): Use -O instead of -O3 for debugging. - -Sun Nov 3 12:43:34 1996 Jason Merrill - - * iostream.cc (write_int): Treat string literals as const. - -Thu Sep 26 10:09:18 1996 Michael Meissner - - * depend: Regenerate. - -Wed Sep 25 22:54:45 1996 Jason Merrill - - * config.shared (depend.new): Deal with headers that don't end in .h. - -Thu Aug 29 17:05:53 1996 Michael Meissner - - * configure.in (i[345]86-*-*): Recognize i686 for pentium pro. - -Mon Aug 5 01:26:32 1996 Jason Merrill - - * config{ure.in,.shared} (DISTCLEAN): Add multilib.out. - -Fri Aug 2 17:39:35 1996 Jason Merrill - - * 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 - - * strfile.h (struct _IO_streambuf): New struct type. - (struct _IO_strfile): Use it. - -Tue Jun 18 18:24:21 1996 Jason Merrill - - * fstream.h (fstreambase): Make __my_fb mutable. - From Joe Buck. - -Tue Jun 18 11:03:53 1996 Brendan Kehoe - - * 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 - - * 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 - - * 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 - - * 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 - - 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 - - * 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 - - * 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 - - * libioP.h (JUMP*): Implement for thunks. - (_IO_jump_t): Add second dummy field for thunks. - -Thu Apr 25 13:20:00 1996 Jason Merrill - - * config.shared (CXX): Use gcc, not g++. - -Wed Apr 24 10:29:50 1996 Doug Evans - - * config.shared (depend.new): Delete $(srcdir)/ from foo.{c,cc} - for SunOS VPATH. - * depend: Regenerated. - -Fri Apr 19 17:24:51 1996 Jason Merrill - - * Version 2.8.0b3. - -Wed Apr 10 17:16:01 1996 Jason Merrill - - * configure.in (ALL): Don't build iostream.a. - -Mon Apr 8 14:44:11 1996 Per Bothner - - * iosetvbuf.c (_IO_setvbuf): Clear _IO_UNBUFFERED unless _IONBF. - -Mon Apr 8 15:08:23 1996 Ian Lance Taylor - - * configure.in: Permit --enable-shared to specify a list of - directories. - -Fri Apr 5 17:48:56 1996 Per Bothner - - * config.shared (MOSTLYCLEAN): Also remove ${EXTRA_MOSTLYCLEAN}. - -Fri Mar 22 23:25:00 1996 Ulrich Drepper - - * genops.c (_IO_sputbackc, _IO_sungetc): Clear EOF flag if putsh - back was successful. - -Wed Mar 27 11:54:08 1996 Jason Merrill - - * Version 2.8.0b2. - -Fri Mar 22 15:39:36 1996 Per Bothner - - * 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 - - * fileops.c (_IO_do_write): Even if to_do==0, must re-set buffer - pointers. Bug and solution from Luke Blanshard . - -Wed Feb 28 10:00:24 1996 Jason Merrill - - * Version 2.8.0b1. - -Tue Feb 27 18:08:16 1996 Per Bothner - - * 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 - - * 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 - - * 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 - - * filedoalloc.c (_IO_cleanup_registration_needed): Declare as extern. - -Tue Dec 12 17:21:13 1995 Per Bothner - - * indstream.h, instream.cc (indirectbuf::uflow): New method. - * indstream.cc (indirectbuf::underflow): Fix to use sgetc, not sbumpc. - Fixes bug reported by Kevin Beyer . - - * indstream.cc (indirectbuf::seekpos): Add paranoia test. - -Fri Dec 8 14:55:34 1995 Per Bothner - - * 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 - - * config.shared: Use test instead of [ to avoid DEC Unix lossage. - -Thu Nov 23 14:51:43 1995 Per Bothner - - * iopopen.c: Move #include ahead of #include - to deal with BSDI's literal implementation of Posix. - -Sat Nov 25 11:21:55 1995 Doug Evans - - * 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 - - * configure.in: Check ${with_cross_host} rather than comparing - ${host} and ${target}. - -Mon Nov 20 13:55:29 1995 Brendan Kehoe - - * configure.in: Match *-sco3.2v[45]*. - -Wed Nov 15 20:19:31 1995 Brendan Kehoe - - * config.shared (FLAGS_TO_PASS): Also pass SHLIB and SHCURSES. - -Tue Nov 14 01:41:08 1995 Doug Evans - - * 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 - - * 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 - - * config.shared (check): Add missing semicolon. - -Thu Nov 9 17:27:22 1995 Jason Merrill - - * 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 - - * streambuf.cc, editbuf.cc, isgetline.cc, parsestream.cc: - Fixes to avoid -Wall warnings. - -Fri Nov 3 16:41:41 1995 Brendan Kehoe - - * gen-params [!__STDC__]: Include varargs.h instead of stdarg.h. - -Thu Nov 2 15:04:03 1995 Per Bothner - - * config.shared: Re-write if X then Y else true fi to (not X) || Y. - -Wed Nov 1 13:26:44 1995 Per Bothner - - * iostream.h (istream::ipfx): Add default argument value. - Reported by Yotam Medini . - - * libioP.h (_IO_blen): Fix typo. - Reported by Bryan T. Vold . - -Fri Oct 27 19:26:20 1995 Per Bothner - - * 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 - - * iostdio.h: Wrap including the file with #ifndef _IOSTDIO_H. - -Wed Oct 25 11:14:25 1995 Per Bothner - - * 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 . - - * 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 . - -Mon Oct 9 18:09:54 1995 Jason Molenda - - * config.shared (SUFFIXES): add .c. - -Tue Sep 26 16:08:01 1995 Per Bothner - - * procbuf.cc: Move #pragma implementation to beginning. - -Wed Sep 20 17:53:33 1995 Per Bothner - - * procbuf.h, procbuf.cc: Add #pragma interface/implementation stuff. - -Wed Sep 20 18:59:00 1995 John Eaton - - * procbuf.h: Protect from being included multiple times. - -Wed Sep 20 15:47:14 1995 John Eaton - - * procbuf.h (procbuf): Add '_next' pointer field for compatibility - with _IO_proc_file. - -Wed Sep 20 13:54:02 1995 Ian Lance Taylor - - * 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 - - * iopopen.c: #include before . - This is in accordance with Posix, and needed for ISC. - -Fri Sep 8 00:11:55 1995 Brendan Kehoe - - * 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 - - * 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 - - * gen-params: Generate new macro _G_HAVE_SYS_CDEFS. - * libio.h: If _G_HAVE_SYS_CDEFS, get __P from . - -Fri Aug 4 23:21:17 1995 Paul Eggert - - * 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 - - * iostream.h, iostream.cc (istream::sync): Added missing method. - -Thu Aug 3 17:49:34 1995 Per Bothner - - * configure.in: Remove netbsd special case. - * config/netbsd.mt: Removed; no longer used. - -Tue Jun 20 16:07:12 1995 Paul Eggert - - * 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 - - * config.shared (TOPDIR): Delete extra '/', $rootme may be empty. - -Sat Jul 22 13:27:45 1995 Doug Evans - - * 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 - - * 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 - - * gen-params: Surround attributes with __. - -Mon Jun 19 00:33:22 1995 Jason Merrill - - * config.shared (SUBDIRS): Massage broken shells that require - 'else true'. - -Sat Jun 17 11:25:38 1995 Jason Merrill - - * streambuf.h: Declare inline members inline in class. - -Thu Jun 15 20:45:13 1995 Per Bothner - - * Makefile.in (VERSION): Update to version 2.7.0. - -Wed Jun 14 21:41:11 1995 Jason Merrill - - * Makefile.in (STDIO_WRAP_OBJECTS): Remove stdfiles.o. - (LIBIO_OBJECTS): Add stdfiles.o. - -Wed Jun 7 16:11:36 1995 Jason Merrill - - * config.shared (all): Appease bash. - -Wed Jun 7 11:16:38 1995 Jason Merrill - - * configure.in (MOSTLYCLEAN): Remove stamp-picdir. - - * config.shared (MOSTLYCLEAN): Ditto. - (CLEAN): Don't. - -Mon Jun 5 18:29:39 1995 Jason Merrill - - * 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 - - * 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 - - * 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 - - * 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 - - * libioP.h (_IO_jump_t): Change TYPE for __dummy from int to - _G_size_t. - -Sat May 6 13:50:37 1995 Per Bothner - - * 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 - - * 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 . - Add missing quote in 'eval'. - Do add #include in test for . - * 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 - - * 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 - - * gen-params: #include . 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 - - * 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 - - * 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 - - * streambuf.h (__adjust_column): Remove redundant declaration. - -Sat Apr 15 11:39:25 1995 Per Bothner - - * 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 - - * 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 - - * indstream.*: Fix prototypes of xsputn and xsgetn. - - * fileops.c: Avoid ??? trigraph. - -Mon Mar 27 16:16:38 1995 Jason Merrill - - * iomanip.h (operator<< (ostream&, const omanip&): Define - separately. - (operator>> (istream&, const imanip&): 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 - - * configure.in (DISTCLEAN): Add, with target-mkfrag. - -Fri Feb 24 01:01:08 1995 Jason Merrill - - * configure.in (frags): Don't require so many dashes in the - canonical target name. - -Sat Feb 18 13:18:30 1995 Per Bothner - - * 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 - - * 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 - - * gen-params: Check for struct tms in , defining - HAVE_SYS_TIMES accordingly. - -Wed Feb 15 21:05:11 1995 Per Bothner - - * strops.c (_IO_str_count): Use LEN macro. - (_IO_str_seekoff): Update _len field. - -Mon Feb 6 19:29:00 1995 Jason Merrill - - * 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 - - * gen-params (_G_wint_t): Allow for broken promotions. - -Tue Jan 24 16:15:40 1995 Per Bothner - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 . - - * 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 - - * 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 - - * 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 - - * 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 - - * README: Fix typos. - * libio.h: Add comment. Update Copyright notice. - -Fri Nov 4 21:46:30 1994 Paul Eggert - - * 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 - - * 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 . - -Thu Oct 20 17:09:52 1994 Per Bothner - - * 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 - - * 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 . - * 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 . - - * 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 . - - * 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 and 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 . - -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 . - -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 . 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 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 . - -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 . - - * 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 . - - * ioputs.c: Add #include , to avoid warning on alpha. - - * iofdopen.c: Add #include , 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 and - smanip. - -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 (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 .) - * 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 . - -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 . - -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 .) - * 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 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 . - -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 . - -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 . - -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 . - * 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 -# ifdef _GLIBCPP_USE_THREADS -# define _IO_MTSAFE_IO -# endif -#endif - -/* Define types for libio in terms of the standard internal type names. */ - -#include -#define __need_size_t -#define __need_wchar_t -#define __need_wint_t -#define __need_NULL -#define __need_ptrdiff_t -#ifdef __cplusplus -# include -#else -# include -#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 -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 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 -#include -#ifdef __STDC__ -#include -#include -#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 . - - 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 -#include -#include -#include -#include -#ifdef __STDC__ -#include -#endif -#if _LIBC -# include "../wcsmbs/wcsmbsload.h" -# include -#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 -#endif -#include - -#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 -#endif -#if _LIBC -# include "../iconv/gconv_int.h" -# include -#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 -#endif -#ifdef _LIBC -# include -#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 -#ifdef _LIBC -# include -# include -# include -# include -# include -#endif -#include -#include - -#if defined(_LIBC) || defined(_GLIBCPP_USE_WCHAR_T) -# include -#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 61be4b7..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 . - - 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 -# 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 -# else -# include -# endif -# else -/*# include */ -# 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 - -#ifndef __set_errno -# define __set_errno(Val) errno = (Val) -#endif -#if defined __GLIBC__ && __GLIBC__ >= 2 -# include -#else -/*# include */ -#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 -# include -# include -# include - -#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 -#include -#ifdef __STDC__ -#include -#include -#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 . - Based on the single byte version by Per Bothner . - - 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 -#include -#ifdef _GLIBCPP_USE_WCHAR_T -#include -#ifdef HAVE_GCONV_H -# include -#endif -#include -#include - - -#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 . - Based on the single byte version by Per Bothner . - - 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 -#endif -#include -#include - - -#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 -#include - -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 - -#ifdef C -typedef char c; -#endif -#ifdef W -typedef wchar_t c; -#endif - -#if defined(TRAITS) && !defined(C) -template class string_char_traits ; -#else -/* string_char_traits is already explicitly specialized in - std/straits.h. */ -#endif - -typedef basic_string s; - -#ifdef MAIN -template class basic_string ; -#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 - -// -// 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(__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(__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 - -namespace std -{ - // This function is only declared/used in the cheaders=c_std case. - template float - __cmath_power(float, unsigned int); - template double - __cmath_power(double, unsigned int); - template long double - __cmath_power(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 - -namespace std -{ - template<> - basic_filebuf::int_type - basic_filebuf::_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(_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::int_type - basic_filebuf::_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(_M_in_beg), - _M_buf_size); - __ilen = __elen; - } - else - { - char* __buf = static_cast(__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 -#include -#include -#include -#include - -// 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 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)] - __attribute__ ((aligned(__alignof__(std::ctype)))); - 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)] - __attribute__ ((aligned(__alignof__(std::collate)))); - fake_collate_c collate_c; - _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9collate_cE, _ZSt9collate_c, GLIBCPP_3.2) - - typedef char fake_numpunct_c[sizeof(numpunct)] - __attribute__ ((aligned(__alignof__(numpunct)))); - 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)] - __attribute__ ((aligned(__alignof__(num_get)))); - 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)] - __attribute__ ((aligned(__alignof__(num_put)))); - 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)] - __attribute__ ((aligned(__alignof__(codecvt)))); - fake_codecvt_c codecvt_c; - _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9codecvt_cE, _ZSt9codecvt_c, GLIBCPP_3.2) - - typedef char fake_moneypunct_c[sizeof(moneypunct)] - __attribute__ ((aligned(__alignof__(moneypunct)))); - 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)] - __attribute__ ((aligned(__alignof__(money_get)))); - 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)] - __attribute__ ((aligned(__alignof__(money_put)))); - 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)] - __attribute__ ((aligned(__alignof__(__timepunct)))); - 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)] - __attribute__ ((aligned(__alignof__(time_get)))); - 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)] - __attribute__ ((aligned(__alignof__(time_put)))); - 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)] - __attribute__ ((aligned(__alignof__(messages)))); - 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)] - __attribute__ ((aligned(__alignof__(std::ctype)))); - 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)] - __attribute__ ((aligned(__alignof__(std::collate)))); - fake_wollate_w collate_w; - _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9collate_wE, _ZSt9collate_w, GLIBCPP_3.2) - - typedef char fake_numpunct_w[sizeof(numpunct)] - __attribute__ ((aligned(__alignof__(numpunct)))); - 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)] - __attribute__ ((aligned(__alignof__(num_get)))); - 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)] - __attribute__ ((aligned(__alignof__(num_put)))); - 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)] - __attribute__ ((aligned(__alignof__(codecvt)))); - fake_wodecvt_w codecvt_w; - _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9codecvt_wE, _ZSt9codecvt_w, GLIBCPP_3.2) - - typedef char fake_moneypunct_w[sizeof(moneypunct)] - __attribute__ ((aligned(__alignof__(moneypunct)))); - 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)] - __attribute__ ((aligned(__alignof__(money_get)))); - 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)] - __attribute__ ((aligned(__alignof__(money_put)))); - 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)] - __attribute__ ((aligned(__alignof__(__timepunct)))); - 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)] - __attribute__ ((aligned(__alignof__(time_get)))); - 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)] - __attribute__ ((aligned(__alignof__(time_put)))); - 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)] - __attribute__ ((aligned(__alignof__(messages)))); - 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 >)] - __attribute__ ((aligned(__alignof__(std::__locale_cache >)))); - 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 >)] - __attribute__ ((aligned(__alignof__(std::__locale_cache >)))); - fake_locale_cache_np_w locale_cache_np_w; -#endif - - typedef char fake_filebuf[sizeof(stdio_filebuf)] - __attribute__ ((aligned(__alignof__(stdio_filebuf)))); - 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)] - __attribute__ ((aligned(__alignof__(stdio_filebuf)))); - 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 -#include - -namespace std -{ - template class allocator; - template class allocator; - - template class __default_alloc_template; -} // 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 -#include -#include -#include -#include - -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 -#include -#include - -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(which)), - stream(NULL), stream_len(0) - { - stringbuf_init(); - } - - explicit - stringbuf(const string &str, int which=ios::in|ios::out) - : streambuf(), mode(static_cast(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(&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(&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(&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 -inline void * basic_string ::Rep:: -operator new (size_t s, size_t extra) -{ - return Allocator::allocate(s + extra * sizeof (charT)); -} - -template -inline void basic_string ::Rep:: -operator delete (void * ptr) -{ - Allocator::deallocate(ptr, sizeof(Rep) + - reinterpret_cast(ptr)->res * - sizeof (charT)); -} - -template -inline size_t basic_string ::Rep:: -frob_size (size_t s) -{ - size_t i = 16; - while (i < s) i *= 2; - return i; -} - -template -inline basic_string ::Rep * -basic_string ::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 -charT * basic_string ::Rep:: -clone () -{ - Rep *p = Rep::create (len); - p->copy (0, data (), len); - p->len = len; - return p->data (); -} - -template -inline bool basic_string ::Rep:: -excess_slop (size_t s, size_t r) -{ - return 2 * (s <= 16 ? 16 : s) < r; -} - -template -inline bool basic_string :: -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 -void basic_string :: -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 -basic_string & -basic_string :: -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 -inline void basic_string ::Rep:: -copy (size_t pos, const charT *s, size_t n) -{ - if (n) - traits::copy (data () + pos, s, n); -} - -template -inline void basic_string ::Rep:: -move (size_t pos, const charT *s, size_t n) -{ - if (n) - traits::move (data () + pos, s, n); -} - -template -basic_string & -basic_string :: -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 -inline void basic_string ::Rep:: -set (size_t pos, const charT c, size_t n) -{ - traits::set (data () + pos, c, n); -} - -template -basic_string & basic_string :: -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 -void basic_string :: -resize (size_type n, charT c) -{ - LENGTHERROR (n > max_size ()); - - if (n > length ()) - append (n - length (), c); - else - erase (n); -} - -template -basic_string ::size_type -basic_string :: -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 -basic_string ::size_type -basic_string :: -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 -inline basic_string ::size_type -basic_string :: -_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 -basic_string ::size_type -basic_string :: -find (charT c, size_type pos) const -{ - return _find (data (), c, pos, length ()); -} - -template -basic_string ::size_type -basic_string :: -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 -basic_string ::size_type -basic_string :: -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 -basic_string ::size_type -basic_string :: -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 -basic_string ::size_type -basic_string :: -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 -basic_string ::size_type -basic_string :: -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 -basic_string ::size_type -basic_string :: -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 -basic_string ::size_type -basic_string :: -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 -basic_string ::size_type -basic_string :: -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 -int basic_string :: -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 -int basic_string :: -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 - -template -istream & -operator>> (istream &is, basic_string &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 (ch); - if (--w == 1) - break; - } - } - - is.isfx (); - if (s.length () == 0) - is.setstate (ios::failbit); - - return is; -} - -template -ostream & -operator<< (ostream &o, const basic_string & s) -{ - return o.write (s.data (), s.length ()); -} - -template -istream& -getline (istream &is, basic_string & 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 (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 -basic_string ::Rep -basic_string::nilRep = { 0, 0, 1, false }; - -template -const basic_string ::size_type -basic_string ::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 -#include - -// NOTE : This does NOT conform to the draft standard and is likely to change -#include - -extern "C++" { -class istream; class ostream; - -#include - -#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 -#define OUTOFRANGE(cond) assert (!(cond)) -#define LENGTHERROR(cond) assert (!(cond)) - -#endif - -template , - class Allocator = alloc > -class basic_string -{ -private: - struct Rep { - size_t len, res, ref; - bool selfish; - - charT* data () { return reinterpret_cast(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 reverse_iterator; - typedef ::reverse_iterator const_reverse_iterator; - static const size_type npos = static_cast(-1); - -private: - Rep *rep () const { return reinterpret_cast(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 - 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 - 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 - 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 - 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 - 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 template -basic_string & basic_string :: -replace (iterator i1, iterator i2, InputIterator j1, InputIterator j2) -#else -template -basic_string & basic_string :: -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 -inline basic_string -operator+ (const basic_string & lhs, - const basic_string & rhs) -{ - basic_string str (lhs); - str.append (rhs); - return str; -} - -template -inline basic_string -operator+ (const charT* lhs, const basic_string & rhs) -{ - basic_string str (lhs); - str.append (rhs); - return str; -} - -template -inline basic_string -operator+ (charT lhs, const basic_string & rhs) -{ - basic_string str (1, lhs); - str.append (rhs); - return str; -} - -template -inline basic_string -operator+ (const basic_string & lhs, const charT* rhs) -{ - basic_string str (lhs); - str.append (rhs); - return str; -} - -template -inline basic_string -operator+ (const basic_string & lhs, charT rhs) -{ - basic_string str (lhs); - str.append (1, rhs); - return str; -} - -template -inline bool -operator== (const basic_string & lhs, - const basic_string & rhs) -{ - return (lhs.compare (rhs) == 0); -} - -template -inline bool -operator== (const charT* lhs, const basic_string & rhs) -{ - return (rhs.compare (lhs) == 0); -} - -template -inline bool -operator== (const basic_string & lhs, const charT* rhs) -{ - return (lhs.compare (rhs) == 0); -} - -template -inline bool -operator!= (const charT* lhs, const basic_string & rhs) -{ - return (rhs.compare (lhs) != 0); -} - -template -inline bool -operator!= (const basic_string & lhs, const charT* rhs) -{ - return (lhs.compare (rhs) != 0); -} - -template -inline bool -operator< (const basic_string & lhs, - const basic_string & rhs) -{ - return (lhs.compare (rhs) < 0); -} - -template -inline bool -operator< (const charT* lhs, const basic_string & rhs) -{ - return (rhs.compare (lhs) > 0); -} - -template -inline bool -operator< (const basic_string & lhs, const charT* rhs) -{ - return (lhs.compare (rhs) < 0); -} - -template -inline bool -operator> (const charT* lhs, const basic_string & rhs) -{ - return (rhs.compare (lhs) < 0); -} - -template -inline bool -operator> (const basic_string & lhs, const charT* rhs) -{ - return (lhs.compare (rhs) > 0); -} - -template -inline bool -operator<= (const charT* lhs, const basic_string & rhs) -{ - return (rhs.compare (lhs) >= 0); -} - -template -inline bool -operator<= (const basic_string & lhs, const charT* rhs) -{ - return (lhs.compare (rhs) <= 0); -} - -template -inline bool -operator>= (const charT* lhs, const basic_string & rhs) -{ - return (rhs.compare (lhs) <= 0); -} - -template -inline bool -operator>= (const basic_string & lhs, const charT* rhs) -{ - return (lhs.compare (rhs) >= 0); -} - -template -inline bool -operator!= (const basic_string & lhs, - const basic_string & rhs) -{ - return (lhs.compare (rhs) != 0); -} - -template -inline bool -operator> (const basic_string & lhs, - const basic_string & rhs) -{ - return (lhs.compare (rhs) > 0); -} - -template -inline bool -operator<= (const basic_string & lhs, - const basic_string & rhs) -{ - return (lhs.compare (rhs) <= 0); -} - -template -inline bool -operator>= (const basic_string & lhs, - const basic_string & rhs) -{ - return (lhs.compare (rhs) >= 0); -} - -class istream; class ostream; -template istream& -operator>> (istream&, basic_string &); -template ostream& -operator<< (ostream&, const basic_string &); -template istream& -getline (istream&, basic_string &, charT delim = '\n'); - -} // extern "C++" - -#include - -#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 - -extern "C++" { -template complex -cos (const complex& x) -{ - return complex (cos (real (x)) * cosh (imag (x)), - - sin (real (x)) * sinh (imag (x))); -} - -template complex -cosh (const complex& x) -{ - return complex (cosh (real (x)) * cos (imag (x)), - sinh (real (x)) * sin (imag (x))); -} - -template complex -exp (const complex& x) -{ - return polar (FLOAT (exp (real (x))), imag (x)); -} - -template complex -log (const complex& x) -{ - return complex (log (abs (x)), arg (x)); -} - -template complex -pow (const complex& x, const complex& 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 complex -pow (const complex& x, FLOAT y) -{ - return exp (FLOAT (y) * log (x)); -} - -template complex -pow (FLOAT x, const complex& y) -{ - return exp (y * FLOAT (log (x))); -} - -template complex -sin (const complex& x) -{ - return complex (sin (real (x)) * cosh (imag (x)), - cos (real (x)) * sinh (imag (x))); -} - -template complex -sinh (const complex& x) -{ - return complex (sinh (real (x)) * cos (imag (x)), - cosh (real (x)) * sin (imag (x))); -} - -#include - -template istream& -operator >> (istream& is, complex& 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 (re, im); - - return is; -} - -template ostream& -operator << (ostream& os, const complex& 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 complex& -__doadv (complex* ths, const complex& 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 complex -operator / (const complex& x, const complex& 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 (nr, ni); -} - -template complex -operator / (FLOAT x, const complex& 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 (nr, ni); -} - -template complex -pow (const complex& xin, int y) -{ - if (y == 0) - return complex (1.0); - complex r (1.0); - complex 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 complex -sqrt (const complex& 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 (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 - -#if ! defined (__GNUG__) && ! defined (__attribute__) -#define __attribute__(foo) /* Ignore. */ -#endif - -class istream; -class ostream; - -extern "C++" { -template class complex; -template complex<_FLT>& - __doapl (complex<_FLT>* ths, const complex<_FLT>& r); -template complex<_FLT>& - __doami (complex<_FLT>* ths, const complex<_FLT>& r); -template complex<_FLT>& - __doaml (complex<_FLT>* ths, const complex<_FLT>& r); -template complex<_FLT>& - __doadv (complex<_FLT>* ths, const complex<_FLT>& r); - -template -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; -class complex; -class complex; - -template -inline complex<_FLT>& -__doapl (complex<_FLT>* ths, const complex<_FLT>& r) -{ - ths->re += r.re; - ths->im += r.im; - return *ths; -} -template -inline complex<_FLT>& -complex<_FLT>::operator += (const complex<_FLT>& r) -{ - return __doapl (this, r); -} - -template -inline complex<_FLT>& -__doami (complex<_FLT>* ths, const complex<_FLT>& r) -{ - ths->re -= r.re; - ths->im -= r.im; - return *ths; -} -template -inline complex<_FLT>& -complex<_FLT>::operator -= (const complex<_FLT>& r) -{ - return __doami (this, r); -} - -template -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 -inline complex<_FLT>& -complex<_FLT>::operator *= (const complex<_FLT>& r) -{ - return __doaml (this, r); -} - -template -inline complex<_FLT>& -complex<_FLT>::operator /= (const complex<_FLT>& r) -{ - return __doadv (this, r); -} - -template inline _FLT -imag (const complex<_FLT>& x) __attribute__ ((const)); - -template inline _FLT -imag (const complex<_FLT>& x) -{ - return x.imag (); -} - -template inline _FLT -real (const complex<_FLT>& x) __attribute__ ((const)); - -template inline _FLT -real (const complex<_FLT>& x) -{ - return x.real (); -} - -template inline complex<_FLT> -operator + (const complex<_FLT>& x, const complex<_FLT>& y) __attribute__ ((const)); - -template inline complex<_FLT> -operator + (const complex<_FLT>& x, const complex<_FLT>& y) -{ - return complex<_FLT> (real (x) + real (y), imag (x) + imag (y)); -} - -template inline complex<_FLT> -operator + (const complex<_FLT>& x, _FLT y) __attribute__ ((const)); - -template inline complex<_FLT> -operator + (const complex<_FLT>& x, _FLT y) -{ - return complex<_FLT> (real (x) + y, imag (x)); -} - -template inline complex<_FLT> -operator + (_FLT x, const complex<_FLT>& y) __attribute__ ((const)); - -template inline complex<_FLT> -operator + (_FLT x, const complex<_FLT>& y) -{ - return complex<_FLT> (x + real (y), imag (y)); -} - -template inline complex<_FLT> -operator - (const complex<_FLT>& x, const complex<_FLT>& y) __attribute__ ((const)); - -template inline complex<_FLT> -operator - (const complex<_FLT>& x, const complex<_FLT>& y) -{ - return complex<_FLT> (real (x) - real (y), imag (x) - imag (y)); -} - -template inline complex<_FLT> -operator - (const complex<_FLT>& x, _FLT y) __attribute__ ((const)); - -template inline complex<_FLT> -operator - (const complex<_FLT>& x, _FLT y) -{ - return complex<_FLT> (real (x) - y, imag (x)); -} - -template inline complex<_FLT> -operator - (_FLT x, const complex<_FLT>& y) __attribute__ ((const)); - -template inline complex<_FLT> -operator - (_FLT x, const complex<_FLT>& y) -{ - return complex<_FLT> (x - real (y), - imag (y)); -} - -template inline complex<_FLT> -operator * (const complex<_FLT>& x, const complex<_FLT>& y) __attribute__ ((const)); - -template 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 inline complex<_FLT> -operator * (const complex<_FLT>& x, _FLT y) __attribute__ ((const)); - -template inline complex<_FLT> -operator * (const complex<_FLT>& x, _FLT y) -{ - return complex<_FLT> (real (x) * y, imag (x) * y); -} - -template inline complex<_FLT> -operator * (_FLT x, const complex<_FLT>& y) __attribute__ ((const)); - -template inline complex<_FLT> -operator * (_FLT x, const complex<_FLT>& y) -{ - return complex<_FLT> (x * real (y), x * imag (y)); -} - -template complex<_FLT> -operator / (const complex<_FLT>& x, _FLT y) __attribute__ ((const)); - -template complex<_FLT> -operator / (const complex<_FLT>& x, _FLT y) -{ - return complex<_FLT> (real (x) / y, imag (x) / y); -} - -template inline complex<_FLT> -operator + (const complex<_FLT>& x) __attribute__ ((const)); - -template inline complex<_FLT> -operator + (const complex<_FLT>& x) -{ - return x; -} - -template inline complex<_FLT> -operator - (const complex<_FLT>& x) __attribute__ ((const)); - -template inline complex<_FLT> -operator - (const complex<_FLT>& x) -{ - return complex<_FLT> (-real (x), -imag (x)); -} - -template inline bool -operator == (const complex<_FLT>& x, const complex<_FLT>& y) __attribute__ ((const)); - -template inline bool -operator == (const complex<_FLT>& x, const complex<_FLT>& y) -{ - return real (x) == real (y) && imag (x) == imag (y); -} - -template inline bool -operator == (const complex<_FLT>& x, _FLT y) __attribute__ ((const)); - -template inline bool -operator == (const complex<_FLT>& x, _FLT y) -{ - return real (x) == y && imag (x) == 0; -} - -template inline bool -operator == (_FLT x, const complex<_FLT>& y) __attribute__ ((const)); - -template inline bool -operator == (_FLT x, const complex<_FLT>& y) -{ - return x == real (y) && imag (y) == 0; -} - -template inline bool -operator != (const complex<_FLT>& x, const complex<_FLT>& y) __attribute__ ((const)); - -template inline bool -operator != (const complex<_FLT>& x, const complex<_FLT>& y) -{ - return real (x) != real (y) || imag (x) != imag (y); -} - -template inline bool -operator != (const complex<_FLT>& x, _FLT y) __attribute__ ((const)); - -template inline bool -operator != (const complex<_FLT>& x, _FLT y) -{ - return real (x) != y || imag (x) != 0; -} - -template inline bool -operator != (_FLT x, const complex<_FLT>& y) __attribute__ ((const)); - -template 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 inline _FLT -abs (const complex<_FLT>& x) __attribute__ ((const)); - -template inline _FLT -abs (const complex<_FLT>& x) -{ - return hypot (real (x), imag (x)); -} - -template inline _FLT -arg (const complex<_FLT>& x) __attribute__ ((const)); - -template inline _FLT -arg (const complex<_FLT>& x) -{ - return atan2 (imag (x), real (x)); -} - -template inline complex<_FLT> -polar (_FLT r, _FLT t) __attribute__ ((const)); - -template inline complex<_FLT> -polar (_FLT r, _FLT t) -{ - return complex<_FLT> (r * cos (t), r * sin (t)); -} - -template inline complex<_FLT> -conj (const complex<_FLT>& x) __attribute__ ((const)); - -template inline complex<_FLT> -conj (const complex<_FLT>& x) -{ - return complex<_FLT> (real (x), -imag (x)); -} - -template inline _FLT -norm (const complex<_FLT>& x) __attribute__ ((const)); - -template inline _FLT -norm (const complex<_FLT>& x) -{ - return real (x) * real (x) + imag (x) * imag (x); -} - -// Declarations of templates in complext.ccI - -template complex<_FLT> - operator / (const complex<_FLT>&, const complex<_FLT>&) __attribute__ ((const)); -template complex<_FLT> - operator / (_FLT, const complex<_FLT>&) __attribute__ ((const)); -template complex<_FLT> - cos (const complex<_FLT>&) __attribute__ ((const)); -template complex<_FLT> - cosh (const complex<_FLT>&) __attribute__ ((const)); -template complex<_FLT> - exp (const complex<_FLT>&) __attribute__ ((const)); -template complex<_FLT> - log (const complex<_FLT>&) __attribute__ ((const)); -template complex<_FLT> - pow (const complex<_FLT>&, const complex<_FLT>&) __attribute__ ((const)); -template complex<_FLT> - pow (const complex<_FLT>&, _FLT) __attribute__ ((const)); -template complex<_FLT> - pow (const complex<_FLT>&, int) __attribute__ ((const)); -template complex<_FLT> - pow (_FLT, const complex<_FLT>&) __attribute__ ((const)); -template complex<_FLT> - sin (const complex<_FLT>&) __attribute__ ((const)); -template complex<_FLT> - sinh (const complex<_FLT>&) __attribute__ ((const)); -template complex<_FLT> - sqrt (const complex<_FLT>&) __attribute__ ((const)); - -template istream& operator >> (istream&, complex<_FLT>&); -template ostream& operator << (ostream&, const complex<_FLT>&); -} // extern "C++" - -// Specializations and such - -#include -#include -#include - -#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 -{ -public: - complex (double r = 0, double i = 0): re (r), im (i) { } - complex (const complex& r): re (r.real ()), im (r.imag ()) { } - explicit complex (const complex& 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::complex (const complex& 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 -{ -public: - complex (float r = 0, float i = 0): re (r), im (i) { } - explicit complex (const complex& r); - explicit complex (const complex& 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 - -#ifndef __GSLICE__ -#define __GSLICE__ - -extern "C++" { - -struct _Indexer { - size_t _M_count; - size_t _M_start; - valarray _M_size; - valarray _M_stride; - valarray _M_index; - _Indexer(size_t, const valarray&, const valarray&); - void _M_increment_use() { ++_M_count; } - size_t _M_decrement_use() { return --_M_count; } -}; - - -class gslice -{ -public: - gslice (); - gslice (size_t, const valarray&, const valarray&); - gslice(const gslice&); - ~gslice(); - - gslice& operator= (const gslice&); - size_t start () const; - valarray size () const; - valarray stride () const; - -private: - _Indexer* _M_index; - - template friend class valarray; -}; - -inline size_t -gslice::start () const -{ return _M_index ? _M_index->_M_start : 0; } - -inline valarray -gslice::size () const -{ return _M_index ? _M_index->_M_size : valarray(); } - -inline valarray -gslice::stride () const -{ return _M_index ? _M_index->_M_stride : valarray(); } - -inline gslice::gslice () : _M_index(0) {} - -inline -gslice::gslice(size_t __o, const valarray& __l, - const valarray& __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 - -#ifndef __GSLICE_ARRAY__ -#define __GSLICE_ARRAY__ - -extern "C++" { - -template 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 - void operator= (const _Expr<_Dom,_Tp>&) const; - template - void operator*= (const _Expr<_Dom,_Tp>&) const; - template - void operator/= (const _Expr<_Dom,_Tp>&) const; - template - void operator%= (const _Expr<_Dom,_Tp>&) const; - template - void operator+= (const _Expr<_Dom,_Tp>&) const; - template - void operator-= (const _Expr<_Dom,_Tp>&) const; - template - void operator^= (const _Expr<_Dom,_Tp>&) const; - template - void operator&= (const _Expr<_Dom,_Tp>&) const; - template - void operator|= (const _Expr<_Dom,_Tp>&) const; - template - void operator<<= (const _Expr<_Dom,_Tp>&) const; - template - void operator>>= (const _Expr<_Dom,_Tp>&) const; - -private: - _Array<_Tp> _M_array; - const valarray& _M_index; - - friend class valarray<_Tp>; - - gslice_array (_Array<_Tp>, const valarray&); - - // this constructor needs to be implemented. - gslice_array (const gslice_array&); - - // not implemented - gslice_array(); - gslice_array& operator= (const gslice_array&); -}; - -template -inline -gslice_array<_Tp>::gslice_array (_Array<_Tp> __a, - const valarray& __i) - : _M_array (__a), _M_index (__i) {} - - -template -inline -gslice_array<_Tp>::gslice_array (const gslice_array<_Tp>& __a) - : _M_array (__a._M_array), _M_index (__a._M_index) {} - - -template -inline void -gslice_array<_Tp>::operator= (const _Tp& __t) -{ - __valarray_fill (_M_array, _Array(_M_index), - _M_index.size(), __t); -} - -template -inline void -gslice_array<_Tp>::operator= (const valarray<_Tp>& __v) const -{ - __valarray_copy (_Array<_Tp> (__v), __v.size (), - _M_array, _Array(_M_index)); -} - -template -template -inline void -gslice_array<_Tp>::operator= (const _Expr& __e) const -{ - __valarray_copy (__e, _M_index.size(), _M_array, - _Array(_M_index)); -} - -#undef _DEFINE_VALARRAY_OPERATOR -#define _DEFINE_VALARRAY_OPERATOR(op, name) \ -template \ -inline void \ -gslice_array<_Tp>::operator##op##= (const valarray<_Tp>& __v) const \ -{ \ - _Array_augmented_##name (_M_array, _Array(_M_index), \ - _Array<_Tp> (__v), __v.size ()); \ -} \ - \ -template template \ -inline void \ -gslice_array<_Tp>::operator##op##= (const _Expr& __e) const \ -{ \ - _Array_augmented_##name (_M_array, _Array(_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 - -#ifndef __INDIRECT_ARRAY__ -#define __INDIRECT_ARRAY__ - -extern "C++" { - -template 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 - void operator= (const _Expr<_Dom, _Tp>&) const; - template - void operator*= (const _Expr<_Dom, _Tp>&) const; - template - void operator/= (const _Expr<_Dom, _Tp>&) const; - template - void operator%= (const _Expr<_Dom, _Tp>&) const; - template - void operator+= (const _Expr<_Dom, _Tp>&) const; - template - void operator-= (const _Expr<_Dom, _Tp>&) const; - template - void operator^= (const _Expr<_Dom, _Tp>&) const; - template - void operator&= (const _Expr<_Dom, _Tp>&) const; - template - void operator|= (const _Expr<_Dom, _Tp>&) const; - template - void operator<<= (const _Expr<_Dom, _Tp>&) const; - template - void operator>>= (const _Expr<_Dom, _Tp>&) const; - -private: - indirect_array (const indirect_array&); - indirect_array (_Array<_Tp>, size_t, _Array); - - friend class valarray<_Tp>; - friend class gslice_array<_Tp>; - - const size_t _M_sz; - const _Array _M_index; - const _Array<_Tp> _M_array; - - // not implemented - indirect_array (); - indirect_array& operator= (const indirect_array&); -}; - -template -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 -inline -indirect_array<_Tp>::indirect_array (_Array<_Tp> __a, size_t __s, - _Array __i) - : _M_sz (__s), _M_index (__i), _M_array (__a) {} - - -template -inline void -indirect_array<_Tp>::operator= (const _Tp& __t) -{ __valarray_fill(_M_array, _M_index, _M_sz, __t); } - -template -inline void -indirect_array<_Tp>::operator= (const valarray<_Tp>& __v) const -{ __valarray_copy (_Array<_Tp> (__v), _M_sz, _M_array, _M_index); } - -template -template -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 \ -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 template \ -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 -{ -public: - complex (long double r = 0, long double i = 0): re (r), im (i) { } - complex (const complex& r): re (r.real ()), im (r.imag ()) { } - complex (const complex& 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::complex (const complex& r) -: re (r.real ()), im (r.imag ()) -{ } - -inline complex::complex (const complex& 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 - -#ifndef __MASK_ARRAY__ -#define __MASK_ARRAY__ - -extern "C++" { - -template 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 - void operator= (const _Expr<_Dom,_T>&) const; - template - void operator*= (const _Expr<_Dom,_T>&) const; - template - void operator/= (const _Expr<_Dom,_T>&) const; - template - void operator%= (const _Expr<_Dom,_T>&) const; - template - void operator+= (const _Expr<_Dom,_T>&) const; - template - void operator-= (const _Expr<_Dom,_T>&) const; - template - void operator^= (const _Expr<_Dom,_T>&) const; - template - void operator&= (const _Expr<_Dom,_T>&) const; - template - void operator|= (const _Expr<_Dom,_T>&) const; - template - void operator<<=(const _Expr<_Dom,_T>&) const; - template - void operator>>=(const _Expr<_Dom,_T>&) const; - -private: - mask_array (_Array<_T>, size_t, _Array); - friend class valarray<_T>; - - const size_t _M_sz; - const _Array _M_mask; - const _Array<_T> _M_array; - - mask_array (const mask_array&); - - // not implemented - mask_array (); - mask_array& operator= (const mask_array&); -}; - -template -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 -inline -mask_array<_T>::mask_array (_Array<_T> __a, size_t __s, _Array __m) - : _M_sz (__s), _M_mask (__m), _M_array (__a) {} - -template -inline void -mask_array<_T>::operator= (const _T& __t) -{ __valarray_fill (_M_array, _M_sz, _M_mask, __t); } - -template -inline void -mask_array<_T>::operator= (const valarray<_T>& __v) const -{ __valarray_copy (_Array<_T> (__v), __v.size (), _M_array, _M_mask); } - -template -template -inline void -mask_array<_T>::operator= (const _Expr& __e) const -{ __valarray_copy (__e, __e.size (), _M_array, _M_mask); } - -#undef _DEFINE_VALARRAY_OPERATOR -#define _DEFINE_VALARRAY_OPERATOR(op, name) \ -template \ -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 template \ -inline void \ -mask_array<_T>::operator##op##= (const _Expr& __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 - -#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 - -#ifndef __SLICE_ARRAY__ -#define __SLICE_ARRAY__ - -extern "C++" { - -template -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 - void operator= (const _Expr<_Dom,_T>&) const; - template - void operator*= (const _Expr<_Dom,_T>&) const; - template - void operator/= (const _Expr<_Dom,_T>&) const; - template - void operator%= (const _Expr<_Dom,_T>&) const; - template - void operator+= (const _Expr<_Dom,_T>&) const; - template - void operator-= (const _Expr<_Dom,_T>&) const; - template - void operator^= (const _Expr<_Dom,_T>&) const; - template - void operator&= (const _Expr<_Dom,_T>&) const; - template - void operator|= (const _Expr<_Dom,_T>&) const; - template - void operator<<= (const _Expr<_Dom,_T>&) const; - template - 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 -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 -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 -inline void -slice_array<_T>::operator= (const _T& __t) -{ __valarray_fill (_M_array, _M_sz, _M_stride, __t); } - -template -inline void -slice_array<_T>::operator= (const valarray<_T>& __v) const -{ __valarray_copy (_Array<_T> (__v), _M_array, _M_sz, _M_stride); } - -template -template -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 \ -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 template \ -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 - -#ifndef __STD_VALARRAY__ -#define __STD_VALARRAY__ -#define _G_NO_VALARRAY_TEMPLATE_EXPORT 1 - -#include -#include -#include -#include -#include -#include - -#ifndef alloca -#ifdef __GNUC__ -#define alloca __builtin_alloca -#else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) -#include -#else /* not sparc */ -#if defined (MSDOS) && !defined (__TURBOC__) -#include -#else /* not MSDOS, or __TURBOC__ */ -#if defined(_AIX) -#include - #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 _Expr; - -template class _ValArray; - -template class _Oper, - template class _Meta, class _Dom> struct _UnClos; - -template class _Oper, - template class _Meta1, - template class _Meta2, - class _Dom1, class _Dom2> class _BinClos; - -template class _Meta, class _Dom> class _SClos; - -template class _Meta, class _Dom> class _GClos; - -template class _Meta, class _Dom> class _IClos; - -template class _Meta, class _Dom> class _ValFunClos; - -template class _Meta, class _Dom> class _RefFunClos; - -template struct _Unary_plus; -template struct _Bitwise_and; -template struct _Bitwise_or; -template struct _Bitwise_xor; -template struct _Bitwise_not; -template struct _Shift_left; -template struct _Shift_right; - -template class valarray; // An array of type _Tp -class slice; // BLAS-like slice out of an array -template class slice_array; -class gslice; // generalized slice out of an array -template class gslice_array; -template class mask_array; // masked array -template class indirect_array; // indirected array - -} // extern "C++" - -#include -#include - -extern "C++" { - -template 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 - 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 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&) const; - mask_array<_Tp> operator[](const valarray&); - _Expr<_IClos<_ValArray, _Tp>, _Tp> - operator[](const valarray&) const; - indirect_array<_Tp> operator[](const valarray&); - - // _lib.valarray.unary_ unary operators: - _Expr<_UnClos<_Unary_plus,_ValArray,_Tp>,_Tp> operator+ () const; - _Expr<_UnClos,_Tp> operator- () const; - _Expr<_UnClos<_Bitwise_not,_ValArray,_Tp>,_Tp> operator~ () const; - _Expr<_UnClos,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 - valarray<_Tp>& operator*= (const _Expr<_Dom,_Tp>&); - template - valarray<_Tp>& operator/= (const _Expr<_Dom,_Tp>&); - template - valarray<_Tp>& operator%= (const _Expr<_Dom,_Tp>&); - template - valarray<_Tp>& operator+= (const _Expr<_Dom,_Tp>&); - template - valarray<_Tp>& operator-= (const _Expr<_Dom,_Tp>&); - template - valarray<_Tp>& operator^= (const _Expr<_Dom,_Tp>&); - template - valarray<_Tp>& operator|= (const _Expr<_Dom,_Tp>&); - template - valarray<_Tp>& operator&= (const _Expr<_Dom,_Tp>&); - template - valarray<_Tp>& operator<<=(const _Expr<_Dom,_Tp>&); - template - 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 struct _Unary_plus : unary_function<_Tp,_Tp> { - _Tp operator() (const _Tp& __t) const { return __t; } -}; - -template struct _Bitwise_and : binary_function<_Tp,_Tp,_Tp> { - _Tp operator() (_Tp __x, _Tp __y) const { return __x & __y; } -}; - -template struct _Bitwise_or : binary_function<_Tp,_Tp,_Tp> { - _Tp operator() (_Tp __x, _Tp __y) const { return __x | __y; } -}; - -template struct _Bitwise_xor : binary_function<_Tp,_Tp,_Tp> { - _Tp operator() (_Tp __x, _Tp __y) const { return __x ^ __y; } -}; - -template struct _Bitwise_not : unary_function<_Tp,_Tp> { - _Tp operator() (_Tp __t) const { return ~__t; } -}; - -template struct _Shift_left : unary_function<_Tp,_Tp> { - _Tp operator() (_Tp __x, _Tp __y) const { return __x << __y; } -}; - -template struct _Shift_right : unary_function<_Tp,_Tp> { - _Tp operator() (_Tp __x, _Tp __y) const { return __x >> __y; } -}; - - -template -inline _Tp -valarray<_Tp>::operator[] (size_t __i) const -{ return _M_data[__i]; } - -template -inline _Tp& -valarray<_Tp>::operator[] (size_t __i) -{ return _M_data[__i]; } - -} // extern "C++" - -#include -#include -#include -#include -#include -#include - -extern "C++" { - -template -inline valarray<_Tp>::valarray () : _M_size (0), _M_data (0) {} - -template -inline valarray<_Tp>::valarray (size_t __n) - : _M_size (__n), _M_data (new _Tp[__n]) {} - -template -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 -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 -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 -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 -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(__ga._M_index), - _Array<_Tp>(_M_data), _M_size); } - -template -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 -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 template -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 -inline valarray<_Tp>::~valarray () { delete[] _M_data; } - -template -inline valarray<_Tp>& -valarray<_Tp>::operator= (const valarray<_Tp>& __v) -{ - __valarray_copy(__v._M_data, _M_size, _M_data); - return *this; -} - -template -inline valarray<_Tp>& -valarray<_Tp>::operator= (const _Tp& __t) -{ - __valarray_fill (_M_data, _M_size, __t); - return *this; -} - -template -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 -inline valarray<_Tp>& -valarray<_Tp>::operator= (const gslice_array<_Tp>& __ga) -{ - __valarray_copy (__ga._M_array, _Array(__ga._M_index), - _Array<_Tp>(_M_data), _M_size); - return *this; -} - -template -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 -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 template -inline valarray<_Tp>& -valarray<_Tp>::operator= (const _Expr<_Dom, _Tp>& __e) -{ - __valarray_copy (__e, _M_size, _Array<_Tp>(_M_data)); - return *this; -} - -template -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 -inline slice_array<_Tp> -valarray<_Tp>::operator[] (slice __s) -{ - return slice_array<_Tp> (_Array<_Tp>(_M_data), __s); -} - -template -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 -inline gslice_array<_Tp> -valarray<_Tp>::operator[] (const gslice& __gs) -{ - return gslice_array<_Tp> - (_Array<_Tp>(_M_data), __gs._M_index->_M_index); -} - -template -inline valarray<_Tp> -valarray<_Tp>::operator[] (const valarray& __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 (__m))); -} - -template -inline mask_array<_Tp> -valarray<_Tp>::operator[] (const valarray& __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 (__m)); -} - -template -inline _Expr<_IClos<_ValArray,_Tp>, _Tp> -valarray<_Tp>::operator[] (const valarray& __i) const -{ - typedef _IClos<_ValArray,_Tp> _Closure; - return _Expr<_Closure, _Tp> (_Closure (*this, __i)); -} - -template -inline indirect_array<_Tp> -valarray<_Tp>::operator[] (const valarray& __i) -{ - return indirect_array<_Tp> (_Array<_Tp>(_M_data), __i.size(), - _Array (__i)); -} - -template -inline size_t valarray<_Tp>::size () const { return _M_size; } - -template -inline _Tp -valarray<_Tp>::sum () const -{ - return accumulate (_M_data, _M_data + _M_size, _Tp ()); -} - -template -inline _Tp -valarray<_Tp>::product () const -{ - return accumulate (_M_data, _M_data+_M_size, _Tp(1), multiplies<_Tp> ()); -} - -template -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 -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 -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 -inline _Tp -valarray<_Tp>::min() const -{ - return *min_element (_M_data, _M_data+_M_size); -} - -template -inline _Tp -valarray<_Tp>::max() const -{ - return *max_element (_M_data, _M_data+_M_size); -} - -template -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 -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 \ - 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 - inline _Expr<_UnClos, bool> - valarray<_Tp>::operator!() const - { - typedef _UnClos _Closure; - return _Expr<_Closure, bool> (_Closure (*this)); - } - -#define _DEFINE_VALARRAY_AUGMENTED_ASSIGNMENT(_Op, _Name) \ - template \ - inline valarray<_Tp> & \ - valarray<_Tp>::operator##_Op##= (const _Tp &__t) \ - { \ - _Array_augmented_##_Name (_Array<_Tp>(_M_data), _M_size, __t); \ - return *this; \ - } \ - \ - template \ - 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 template \ - 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 \ - 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 \ - 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 \ - 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 \ - 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 \ - 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 \ - 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 -#pragma interface "std/straits.h" -#endif - -#include - -extern "C++" { -template -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 -#include - -struct string_char_traits { - 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 -struct string_char_traits { - 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 - -#ifndef __VALARRAY_ARRAY__ -#define __VALARRAY_ARRAY__ - -#include -#include - -extern "C++" { - -// -// Helper functions on raw pointers -// - -// fill plain array __a[<__n>] with __t -template -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 -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 -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 -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 -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 -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 -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 -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 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 -inline void -__valarray_fill (_Array<_Tp> __a, size_t __n, const _Tp& __t) -{ __valarray_fill (__a._M_data, __n, __t); } - -template -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 -inline void -__valarray_fill (_Array<_Tp> __a, _Array __i, - size_t __n, const _Tp& __t) -{ __valarray_fill (__a._M_data, __i._M_data, __n, __t); } - -template -inline void -__valarray_copy (_Array<_Tp> __a, size_t __n, _Array<_Tp> __b) -{ __valarray_copy (__a._M_data, __n, __b._M_data); } - -template -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 -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 -inline void -__valarray_copy (_Array<_Tp> __a, _Array __i, - _Array<_Tp> __b, size_t __n) -{ __valarray_copy (__a._M_data, __i._M_data, __b._M_data, __n); } - -template -inline void -__valarray_copy (_Array<_Tp> __a, size_t __n, _Array<_Tp> __b, - _Array __i) -{ __valarray_copy (__a._M_data, __n, __b._M_data, __i._M_data); } - -template -inline -_Array<_Tp>::_Array (size_t __n) : _M_data (new _Tp[__n]) {} - -template -inline -_Array<_Tp>::_Array (_Tp* const __restrict__ __p) : _M_data (__p) {} - -template -inline _Array<_Tp>::_Array (const valarray<_Tp>& __v) - : _M_data (__v._M_data) {} - -template -inline -_Array<_Tp>::_Array (const _Tp* __restrict__ __b, size_t __s) - : _M_data (new _Tp[__s]) { __valarray_copy (__b, __s, _M_data); } - -template -inline void -_Array<_Tp>::free_data() const { delete[] _M_data; } - -template -inline _Tp* -_Array<_Tp>::begin () const -{ return _M_data; } - -#define _DEFINE_ARRAY_FUNCTION(_Op, _Name) \ -template \ -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 \ -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 \ -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 \ -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 \ -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 \ -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 \ -inline void \ -_Array_augmented_##_Name (_Array<_Tp> __a, _Array __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 \ -inline void \ -_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, \ - _Array<_Tp> __b, _Array __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 \ -void \ -_Array_augmented_##_Name (_Array<_Tp> __a, _Array __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 \ -void \ -_Array_augmented_##_Name (_Array<_Tp> __a, _Array __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 \ -void \ -_Array_augmented_##_Name (_Array<_Tp> __a, size_t __n, \ - _Array<_Tp> __b, _Array __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 \ -void \ -_Array_augmented_##_Name (_Array<_Tp> __a, _Array __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 -#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 - -#ifndef __VALARRAY_ARRAY_TCC__ -#define __VALARRAY_ARRAY_TCC__ - -extern "C++" { - -export template -void -__valarray_fill (_Array<_Tp> __a, size_t __n, _Array __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 -void -__valarray_copy (_Array<_Tp> __a, _Array __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 -void -__valarray_copy (_Array<_Tp> __a, size_t __n, _Array<_Tp> __b, _Array __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 -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 -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 -void -__valarray_copy (const _Expr<_Dom, _Tp>& __e, size_t __n, - _Array<_Tp> __a, _Array __i) -{ - size_t* __j (__i._M_data); - for (size_t __k=0; __k<__n; ++__k, ++__j) __a._M_data[*__j] = __e[__k]; -} - -export template -void -__valarray_copy (const _Expr<_Dom, _Tp>& __e, size_t __n, - _Array<_Tp> __a, _Array __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 - -#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 class _Constant; - -// -// Unary function application closure. -// -template 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 class _Meta, class _Dom> class _UnFunClos; - -template -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 -struct _UnFunClos<_ValArray,_Tp> : _UnFunBase > { - typedef _UnFunBase > _Base; - typedef typename _Base::value_type value_type; - - _UnFunClos (const valarray<_Tp>& __v, _Tp __f(_Tp)) - : _Base (__v, __f) {} -}; - -// -// Binary function application closure. -// -template class _Meta1, - template class Meta2, - class _Dom1, class _Dom2> class _BinFunClos; - -template 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 _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 _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 -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 -struct _BinFunClos<_ValArray,_ValArray,_Tp,_Tp> - : _BinFunBase, valarray<_Tp> > { - typedef _BinFunBase, 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 -struct _BinFunClos<_Expr,_ValArray,_Dom,typename _Dom::value_type> - : _BinFunBase<_Dom,valarray > { - 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 -struct _BinFunClos<_ValArray,_Expr,typename _Dom::value_type,_Dom> - : _BinFunBase,_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 -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 -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 -struct _BinFunClos<_ValArray,_Constant,_Tp,_Tp> - : _BinFunBase2 > { - typedef _BinFunBase2 > _Base; - typedef _Tp value_type; - - _BinFunClos (const valarray<_Tp>& __v, const _Tp& __t, - _Tp __f(_Tp, _Tp)) - : _Base (__v, __t, __f) {} -}; - -template -struct _BinFunClos<_Constant,_ValArray,_Tp,_Tp> - : _BinFunBase1 > { - typedef _BinFunBase1 > _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 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 -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 -struct _ValFunClos<_ValArray,_Tp> - : _FunBase, _Tp> { - typedef _FunBase, _Tp> _Base; - typedef _Tp value_type; - - _ValFunClos (const valarray<_Tp>& __v, _Tp __f(_Tp)) - : _Base (__v, __f) {} -}; - -template -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 -struct _RefFunClos<_ValArray,_Tp> - : _FunBase, const _Tp&> { - typedef _FunBase, 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, typename _Arg> -class _UnBase { -public: - typedef _Oper _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 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 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, typename _FirstArg, typename _SecondArg> -class _BinBase { -public: - typedef _Oper _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 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 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 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 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 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 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 > { - 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,_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 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 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 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 -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 _GBase { -public: - typedef typename _Dom::value_type value_type; - - _GBase (const _Dom& __e, const valarray& __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& _M_index; -}; - -template class _GBase<_Array<_Tp> > { -public: - typedef _Tp value_type; - - _GBase (_Array<_Tp> __a, const valarray& __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& _M_index; -}; - -template struct _GClos<_Expr,_Dom> : _GBase<_Dom> { - typedef _GBase<_Dom> _Base; - typedef typename _Base::value_type value_type; - - _GClos (const _Dom& __e, const valarray& __i) - : _Base (__e, __i) {} -}; - -template -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& __i) - : _Base (__a, __i) {} -}; - -// -// indirect_array closure -// - -template class _IBase { -public: - typedef typename _Dom::value_type value_type; - - _IBase (const _Dom& __e, const valarray& __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& _M_index; -}; - -template struct _IClos<_Expr,_Dom> : _IBase<_Dom> { - typedef _IBase<_Dom> _Base; - typedef typename _Base::value_type value_type; - - _IClos (const _Dom& __e, const valarray& __i) - : _Base (__e, __i) {} -}; - -template -struct _IClos<_ValArray,_Tp> : _IBase > { - typedef _IBase > _Base; - typedef _Tp value_type; - - _IClos (const valarray<_Tp>& __a, const valarray& __i) - : _Base (__a, __i) {} -}; - -// -// class _Expr -// -template class _Expr { -public: - typedef _Tp value_type; - - _Expr (const _Clos&); - - const _Clos& operator() () const; - - value_type operator[] (size_t) const; - valarray operator[] (slice) const; - valarray operator[] (const gslice&) const; - valarray operator[] (const valarray&) const; - valarray operator[] (const valarray&) const; - - _Expr<_UnClos<_Unary_plus,_Expr,_Clos>, value_type> - operator+ () const; - - _Expr<_UnClos, value_type> - operator- () const; - - _Expr<_UnClos<_Bitwise_not,_Expr,_Clos>, value_type> - operator~ () const; - - _Expr<_UnClos, bool> - operator! () const; - - size_t size () const; - value_type sum () const; - - valarray shift (int) const; - valarray 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 -inline -_Expr<_Clos,_Tp>::_Expr (const _Clos& __c) : _M_closure(__c) {} - -template -inline const _Clos& -_Expr<_Clos,_Tp>::operator() () const -{ return _M_closure; } - -template -inline _Tp -_Expr<_Clos,_Tp>::operator[] (size_t __i) const -{ return _M_closure[__i]; } - -template -inline valarray<_Tp> -_Expr<_Clos,_Tp>::operator[] (slice __s) const -{ return _M_closure[__s]; } - -template -inline valarray<_Tp> -_Expr<_Clos,_Tp>::operator[] (const gslice& __gs) const -{ return _M_closure[__gs]; } - -template -inline valarray<_Tp> -_Expr<_Clos,_Tp>::operator[] (const valarray& __m) const -{ return _M_closure[__m]; } - -template -inline valarray<_Tp> -_Expr<_Clos,_Tp>::operator[] (const valarray& __i) const -{ return _M_closure[__i]; } - -template -inline size_t -_Expr<_Clos,_Tp>::size () const { return _M_closure.size (); } - -// XXX: replace this with a more robust summation algorithm. -template -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 -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 -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 -inline _Expr<_UnClos, bool> -_Expr<_Dom,_Tp>::operator! () const -{ - typedef _UnClos _Closure; - return _Expr<_Closure,_Tp> (_Closure(this->_M_closure)); -} - -#define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name) \ -template \ -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 \ -inline _Expr<_BinClos<_Name,_Expr,_Expr,_Dom1,_Dom2>, \ - typename _Name::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 \ -inline _Expr<_BinClos<_Name,_Expr,_Constant,_Dom,typename _Dom::value_type>, \ - typename _Name::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 \ -inline _Expr<_BinClos<_Name,_Constant,_Expr,typename _Dom::value_type,_Dom>, \ - typename _Name::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 \ -inline _Expr<_BinClos<_Name,_Expr,_ValArray,_Dom,typename _Dom::value_type>, \ - typename _Name::result_type> \ -operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __e, \ - const valarray& __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 \ -inline _Expr<_BinClos<_Name,_ValArray,_Expr,typename _Dom::value_type,_Dom>, \ - typename _Name::result_type> \ -operator##_Op (const valarray& __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 \ -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 \ -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 \ -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 \ -inline _Expr<_BinClos<_Name,_Expr,_ValArray,_Dom,typename _Dom::value_type>, \ - bool> \ -operator##_Op (const _Expr<_Dom,typename _Dom::value_type>& __e, \ - const valarray& __v) \ -{ \ - typedef typename _Dom::value_type _Tp; \ - typedef _BinClos<_Name,_Expr,_ValArray,_Dom,_Tp> _Closure; \ - return _Expr<_Closure,bool> (_Closure (__e (), __v)); \ -} \ - \ -template \ -inline _Expr<_BinClos<_Name,_ValArray,_Expr,typename _Dom::value_type,_Dom>, \ - bool> \ -operator##_Op (const valarray& __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 \ -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 \ -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 \ -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 \ -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& __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 \ -inline _Expr<_BinFunClos<_ValArray,_Expr,typename _Dom::value_type,_Dom>, \ - typename _Dom::value_type> \ -_Name (const 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 \ -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 \ -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 \ -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 \ -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 \ -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 -#include - -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 - -// 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include 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 - - * 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 - - * 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 - - * stl_queue.h: Rename _M_c to c, and _M_comp to comp. - -1999-06-17 Alexandre Oliva - - * stl_algo.h (transform): Rename __opr to __oper, as __opr is used - internally by egcs. - Reported by Harri Porten - -1999-05-17 Mark Kettenis - - * stl_config.h: Only define __STL_PTHREADS with GLIBC >= 2 for - Linux. - -Mon May 17 03:33:47 1999 Mumit Khan - - * stl_config.h (__CYGWIN__): Cygwin newlib RTL lacks drand48. - -1999-05-07 Ulrich Drepper - - * stl_alloc.h: Make it possible to compile with __USE_MALLOC. - -Tue Apr 13 00:32:57 1999 Mumit Khan - - * 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 - - * 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 - - * stl_config.h (__STL_USE_NAMESPACES): Define. - -1998-11-27 Alexandre Oliva - - * 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 - - * stl_alloc.h (default_alloc_template::_S_free_list): Don't - qualify _NFREELISTS. - -1998-10-11 Mark Mitchell - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * stl_algo.h (__lg): Fix for n == 0. - -Sat Nov 8 00:45:17 1997 Jason Merrill - - * stl_hash_set.h (swap): Fix typo. - -Fri Nov 7 10:27:40 1997 Jason Merrill - - * stl_hashtable.h: Fix typo. - -Thu Nov 6 11:19:09 1997 Jason Merrill - - * 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 - - * 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 - - * tree.h, vector.h: Fix accidental divergence from SGI release. - -Tue Sep 9 19:47:28 1997 Jason Merrill - - * 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 - - * stl_config.h (__STL_MEMBER_TEMPLATES): Enable. - -Tue Aug 5 17:06:01 1997 Jason Merrill - - * 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 - - * 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 - - * tree.h (rb_tree): Reverse order of member initializations - to prevent warnings. - -Sun Jun 15 18:17:21 1997 Jason Merrill - - * *.h: Update to 6/13 SGI release. - -Fri May 23 10:56:18 1997 Jason Merrill - - * 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 - - * *.h: Update to 3/24 SGI release. - -Wed Feb 19 18:19:18 1997 Jason Merrill - - * *.h: Update to 2/18 SGI release. - - * bool.h: Lose. - -Mon Feb 10 16:33:23 1997 Jason Merrill - - * 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 - - * *.h: Update to 1/8 SGI release. - -Mon Sep 30 17:56:43 1996 Jason Merrill - - * alloc.h (__unlock): Never use __lock_release. - -Fri Sep 27 19:03:06 1996 Jason Merrill - - * alloc.h (__default_alloc_template): lock is a friend. - -Thu Sep 19 20:10:37 1996 Jason Merrill - - 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 - - * deque.h, list.h, tree.h: Remove kludge obsoleted by new - overloading code. - -Sat Aug 10 14:59:50 1996 Jason Merrill - - * tempbuf.cc (__stl_temp_buffer): Align like a pointer. - -Wed Jun 26 13:00:44 1996 Jason Merrill - - * iterator.h: Add default template parameters. - -Wed Apr 24 10:45:22 1996 Doug Evans - - * Makefile.in (tempbuf.o,random.o): Add rules for SunOS VPATH. - -Fri Apr 5 17:52:31 1996 Per Bothner - - * configure.in (EXTRA_MOSTLYCLEAN): New, to remove stl.list. - -Fri Mar 22 14:58:30 1996 Jason Merrill - - 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 - - * deque.h (distance_type): Add overload for g++. - From Joe Buck. - -Thu Feb 22 14:07:12 1996 Jason Merrill - - * 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 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 - - * 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 - - * 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 - - * 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 - with #ifndef __GNUG__. - -Thu Nov 2 17:05:44 1995 Jason Merrill - - * deque.h (deque::insert): Fix merge typo. - * vector.h (value_type): Lose. - -Thu Nov 2 14:33:47 1995 Per Bothner - - * 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 - - * list.h: Avoid duplicate construction and destruction of list_nodes. - Patch from Klamer Schutte . - -Fri Aug 11 16:45:18 1995 Per Bothner - - * algo.h, algobase.h, deque.h: Merged in Jul 12 1995 release from HP. - -Mon Jun 5 18:38:56 1995 Jason Merrill - - * Makefile.in (stl.list): Depend on stamp-picdir. - -Wed May 17 02:30:47 1995 Jason Merrill - - * 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 - - * random.cc (seed): Move `for' decl out of `for' statement. - -Wed Apr 26 13:09:16 1995 Jason Merrill - - * configure.in (XCXXINCLUDES): Rename. - -Wed Mar 29 19:24:56 1995 Jason Merrill - - * 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 - - * 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 - - * iterator.h: Add default template parameters where possible. - -Fri Dec 30 16:29:39 1994 Mike Stump - - * algo.h: Change rand to __rand to fix make check on linux systems. - -Tue Nov 29 15:30:30 1994 Per Bothner - - * 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 -#include -#include -#include - -#ifdef __STL_USE_NAMESPACES - -// Names from -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 -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 -#endif -#ifndef __SGI_STL_ITERATOR_H -#include -#endif -#ifndef __SGI_STL_INTERNAL_ALGOBASE_H -#include -#endif -#ifndef __SGI_STL_INTERNAL_UNINITIALIZED_H -#include -#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 -#include -#include -#include -#include - -#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 -#endif -#ifndef __SGI_STL_INTERNAL_ALLOC_H -#include -#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 // for size_t -#include // for CHAR_BIT -#include -#include // for invalid_argument, out_of_range, overflow_error -#include // 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 -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 -struct _First_one { - static unsigned char _S_first_one[256]; -}; - -// -// Base class: general case. -// - -template -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::_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 -_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 -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 -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 -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(-1)); - if (_M_w[0] & ~__mask) - __STL_THROW(__overflow); - - return static_cast(_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( - _M_w[__i]) << (__i * sizeof(_WordT) * CHAR_BIT); - } - return __result; - } -} // End _M_do_to_ulong - -template -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(__thisword & (~(unsigned char)0)); - if ( __this_byte ) - return __i*__BITS_PER_WORDT(_WordT) + __j*CHAR_BIT + - _First_one::_S_first_one[__this_byte]; - - __thisword >>= CHAR_BIT; - } - } - } - // not found, so return an indication of failure. - return __not_found; -} - -template -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(__thisword & (~(unsigned char)0)); - if ( __this_byte ) - return __i*__BITS_PER_WORDT(_WordT) + __j*CHAR_BIT + - _First_one::_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(__thisword & (~(unsigned char)0)); - if ( __this_byte ) - return __i*__BITS_PER_WORDT(_WordT) + __j*CHAR_BIT + - _First_one::_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 -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::_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(_M_w); - else { - const _WordT __mask = static_cast<_WordT>(static_cast(-1)); - if (_M_w & ~__mask) - __STL_THROW(overflow_error("bitset")); - return static_cast(_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 -_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 -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(__thisword & (~(unsigned char)0)); - if ( __this_byte ) - return __j*CHAR_BIT + _First_one::_S_first_one[__this_byte]; - - __thisword >>= CHAR_BIT; - } - } - // not found, so return a value that indicates failure. - return __not_found; -} - -template -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(__thisword & (~(unsigned char)0)); - if ( __this_byte ) - return __j*CHAR_BIT + _First_one::_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 struct _Sanitize { - static void _M_do_sanitize(_WordT& __val) - { __val &= ~((~static_cast<_WordT>(0)) << _Extrabits); } -}; - -template 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 -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 - 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 - 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 - void _M_copy_from_string(const basic_string<_CharT,_Traits,_Alloc>& __s, - size_t, - size_t); - - // Helper functions for string operations. - template - 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 -template -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 -template -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 -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 -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 -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 -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(0), _Nb); - - return __is; -} - -template -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 -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 -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 -#else -#include -#include -#endif - -#include - -#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 . - -#ifndef DEFALLOC_H -#define DEFALLOC_H - -#include -#include -#include -#include -#include -#include - - -template -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 -inline void deallocate(T* buffer) { - ::operator delete(buffer); -} - -template -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 { -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 -#include -#include -#include -#include - -#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 -#include -#include - -#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 -#endif -#ifndef __SGI_STL_INTERNAL_RELOPS -#include -#endif -#include -#ifndef __SGI_STL_INTERNAL_FUNCTION_H -#include -#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 -#include -#include - -#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 -#endif - -#include - -#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 -#endif - -#include -#include - -#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 -#endif - -#include - -#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 -#endif - -#include -#include - -#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 -#include -#include -#include - -#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 -#include - -#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 -#include -#include /* XXX should use */ -#if 0 /* XXX define a flag for this */ -#include -#else -#include -#endif -#include - -#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 -#endif -#include -#include -#ifndef __SGI_STL_INTERNAL_ITERATOR_H -#include -#endif -#ifndef __TYPE_TRAITS_H -#include -#endif -#ifndef __SGI_STL_INTERNAL_CONSTRUCT_H -#include -#endif -#ifndef __SGI_STL_INTERNAL_RAW_STORAGE_ITERATOR_H -#include -#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 -#include -#include -#include -#include - -#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 -#include -#include - -#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 -#endif -#include -#include - -#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 -#include - -#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 -#include -#include -#include -#include -#include - - -#if defined(__STL_MEMBER_TEMPLATES) - -__STL_BEGIN_NAMESPACE - -template 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 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 - 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 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 operator auto_ptr_ref<_Tp1>() __STL_NOTHROW - { return auto_ptr_ref<_Tp>(this->release()); } - template 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 -#include - -#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 -#include - -#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 -#include -#include -#include -#include -#include -#include - -#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 -#endif -#ifndef __SGI_STL_INTERNAL_RELOPS -#include -#endif -#ifndef __SGI_STL_INTERNAL_PAIR_H -#include -#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 -#include -#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 -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 -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 -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 -_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 -_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 -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 -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 -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 -_Pthread_alloc_per_thread_state<_Max_size> * -_Pthread_alloc_template<_Max_size>::_S_free_per_thread_states = 0; - -template -pthread_key_t _Pthread_alloc_template<_Max_size>::_S_key; - -template -bool _Pthread_alloc_template<_Max_size>::_S_key_initialized = false; - -template -pthread_mutex_t _Pthread_alloc_template<_Max_size>::_S_chunk_allocator_lock -= PTHREAD_MUTEX_INITIALIZER; - -template -char *_Pthread_alloc_template<_Max_size> -::_S_start_free = 0; - -template -char *_Pthread_alloc_template<_Max_size> -::_S_end_free = 0; - -template -size_t _Pthread_alloc_template<_Max_size> -::_S_heap_size = 0; - -#ifdef __STL_USE_STD_ALLOCATORS - -template -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 struct rebind { - typedef pthread_allocator<_Up> other; - }; - - pthread_allocator() __STL_NOTHROW {} - pthread_allocator(const pthread_allocator& a) __STL_NOTHROW {} - template 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 { -public: - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef void* pointer; - typedef const void* const_pointer; - typedef void value_type; - - template struct rebind { - typedef pthread_allocator<_Up> other; - }; -}; - -template -inline bool operator==(const _Pthread_alloc_template<_Max_size>&, - const _Pthread_alloc_template<_Max_size>&) -{ - return true; -} - -template -inline bool operator==(const pthread_allocator<_T1>&, - const pthread_allocator<_T2>& a2) -{ - return true; -} - -template -inline bool operator!=(const pthread_allocator<_T1>&, - const pthread_allocator<_T2>&) -{ - return false; -} - -template -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 -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 -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 - -#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 -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#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 -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#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 -#include - -#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 /* XXX should use */ -# include /* XXX should use */ - -__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 -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 -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 -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 -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 -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 -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 -inline -_Rope_const_iterator<_CharT, _Alloc>::_Rope_const_iterator( - const _Rope_iterator<_CharT,_Alloc>& __x) -: _Rope_iterator_base<_CharT,_Alloc>(__x) -{ } - -template -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 -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 -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 -#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 -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 -#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 -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 -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 -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 -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 -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 -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 -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 _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 _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 _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 -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::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::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 -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 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 -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 -_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 -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 -_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 -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 -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 -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 -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 -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 -_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 -_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 -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 -_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 -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 -_Rope_char_ptr_proxy<_CharT, _Alloc> -_Rope_char_ref_proxy<_CharT, _Alloc>::operator& () const { - return _Rope_char_ptr_proxy<_CharT, _Alloc>(*this); -} - -template -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 - _CharT rope<_CharT,_Alloc>::_S_empty_c_str[1]; - -# ifdef __STL_PTHREADS - template - pthread_mutex_t - rope<_CharT,_Alloc>::_S_swap_lock = PTHREAD_MUTEX_INITIALIZER; -# endif - -template -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 -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 -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 __first, - _Rope_iterator __middle, - _Rope_iterator __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 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 __first, - _Rope_iterator __middle, - _Rope_iterator __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 -#endif -#include -#include - -#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 -#include - -#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 -#include -#include -#include -#include - -#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 -#include -#include - -#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 -#include -#include -#include -#include -#include - -#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 -#include -#include -#include -#include - -#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_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 -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 -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 -_Function for_each(_InputIter __first, _InputIter __last, _Function __f) { - for ( ; __first != __last; ++__first) - __f(*__first); - return __f; -} - -// find and find_if. - -template -inline _InputIter find(_InputIter __first, _InputIter __last, - const _Tp& __val, - input_iterator_tag) -{ - while (__first != __last && *__first != __val) - ++__first; - return __first; -} - -template -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 -_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 -_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 -inline _InputIter find(_InputIter __first, _InputIter __last, - const _Tp& __val) -{ - return find(__first, __last, __val, __ITERATOR_CATEGORY(__first)); -} - -template -inline _InputIter find_if(_InputIter __first, _InputIter __last, - _Predicate __pred) { - return find_if(__first, __last, __pred, __ITERATOR_CATEGORY(__first)); -} - -// adjacent_find. - -template -_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 -_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 -void count(_InputIter __first, _InputIter __last, const _Tp& __value, - _Size& __n) { - for ( ; __first != __last; ++__first) - if (*__first == __value) - ++__n; -} - -template -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 -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 -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 -_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 -_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 -_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 -_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 -_ForwardIter2 swap_ranges(_ForwardIter1 __first1, _ForwardIter1 __last1, - _ForwardIter2 __first2) { - for ( ; __first1 != __last1; ++__first1, ++__first2) - iter_swap(__first1, __first2); - return __first2; -} - -// transform - -template -_OutputIter transform(_InputIter __first, _InputIter __last, - _OutputIter __result, _UnaryOperation __oper) { - for ( ; __first != __last; ++__first, ++__result) - *__result = __oper(*__first); - return __result; -} - -template -_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 -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 -void replace_if(_ForwardIter __first, _ForwardIter __last, - _Predicate __pred, const _Tp& __new_value) { - for ( ; __first != __last; ++__first) - if (__pred(*__first)) - *__first = __new_value; -} - -template -_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 -_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 -void generate(_ForwardIter __first, _ForwardIter __last, _Generator __gen) { - for ( ; __first != __last; ++__first) - *__first = __gen(); -} - -template -_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 -_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 -_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 -_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 -_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 -_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 -inline _OutputIter __unique_copy(_InputIter __first, _InputIter __last, - _OutputIter __result, - output_iterator_tag) { - return __unique_copy(__first, __last, __result, __VALUE_TYPE(__first)); -} - -template -_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 -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 -_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 -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 -_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 -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 -_ForwardIter unique(_ForwardIter __first, _ForwardIter __last) { - __first = adjacent_find(__first, __last); - return unique_copy(__first, __last, __first); -} - -template -_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 -void __reverse(_BidirectionalIter __first, _BidirectionalIter __last, - bidirectional_iterator_tag) { - while (true) - if (__first == __last || __first == --__last) - return; - else - iter_swap(__first++, __last); -} - -template -void __reverse(_RandomAccessIter __first, _RandomAccessIter __last, - random_access_iterator_tag) { - while (__first < __last) - iter_swap(__first++, --__last); -} - -template -inline void reverse(_BidirectionalIter __first, _BidirectionalIter __last) { - __reverse(__first, __last, __ITERATOR_CATEGORY(__first)); -} - -template -_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 -_EuclideanRingElement __gcd(_EuclideanRingElement __m, - _EuclideanRingElement __n) -{ - while (__n != 0) { - _EuclideanRingElement __t = __m % __n; - __m = __n; - __n = __t; - } - return __m; -} - -template -_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 -_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 -_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 -inline _ForwardIter rotate(_ForwardIter __first, _ForwardIter __middle, - _ForwardIter __last) { - return __rotate(__first, __middle, __last, - __DISTANCE_TYPE(__first), - __ITERATOR_CATEGORY(__first)); -} - -template -_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 -inline _Distance __random_number(_Distance __n) { -#ifdef __STL_NO_DRAND48 - return rand() % __n; -#else - return lrand48() % __n; -#endif -} - -// random_shuffle - -template -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 -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 -_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 -_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 -_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 -_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 -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 -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 -_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 -_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 -inline _ForwardIter partition(_ForwardIter __first, - _ForwardIter __last, - _Predicate __pred) { - return __partition(__first, __last, __pred, __ITERATOR_CATEGORY(__first)); -} - - -template -_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 -_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 -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 -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 -_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 -_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 -void __unguarded_linear_insert(_RandomAccessIter __last, _Tp __val) { - _RandomAccessIter __next = __last; - --__next; - while (__val < *__next) { - *__last = *__next; - __last = __next; - --__next; - } - *__last = __val; -} - -template -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 -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 -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 -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 -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 -void __unguarded_insertion_sort_aux(_RandomAccessIter __first, - _RandomAccessIter __last, _Tp*) { - for (_RandomAccessIter __i = __first; __i != __last; ++__i) - __unguarded_linear_insert(__i, _Tp(*__i)); -} - -template -inline void __unguarded_insertion_sort(_RandomAccessIter __first, - _RandomAccessIter __last) { - __unguarded_insertion_sort_aux(__first, __last, __VALUE_TYPE(__first)); -} - -template -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 -inline void __unguarded_insertion_sort(_RandomAccessIter __first, - _RandomAccessIter __last, - _Compare __comp) { - __unguarded_insertion_sort_aux(__first, __last, __VALUE_TYPE(__first), - __comp); -} - -template -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 -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 -inline _Size __lg(_Size __n) { - _Size __k; - for (__k = 0; __n != 1; __n >>= 1) ++__k; - return __k; -} - -template -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -inline void stable_sort(_RandomAccessIter __first, - _RandomAccessIter __last) { - __stable_sort_aux(__first, __last, - __VALUE_TYPE(__first), - __DISTANCE_TYPE(__first)); -} - -template -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 -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 -inline void partial_sort(_RandomAccessIter __first, - _RandomAccessIter __middle, - _RandomAccessIter __last) { - __partial_sort(__first, __middle, __last, __VALUE_TYPE(__first)); -} - -template -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 -inline void partial_sort(_RandomAccessIter __first, - _RandomAccessIter __middle, - _RandomAccessIter __last, _Compare __comp) { - __partial_sort(__first, __middle, __last, __VALUE_TYPE(__first), __comp); -} - -template -_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 -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 -_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 -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 -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 -inline void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth, - _RandomAccessIter __last) { - __nth_element(__first, __nth, __last, __VALUE_TYPE(__first)); -} - -template -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 -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 -_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 -inline _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last, - const _Tp& __val) { - return __lower_bound(__first, __last, __val, - __DISTANCE_TYPE(__first)); -} - -template -_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 -inline _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last, - const _Tp& __val, _Compare __comp) { - return __lower_bound(__first, __last, __val, __comp, - __DISTANCE_TYPE(__first)); -} - -template -_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 -inline _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last, - const _Tp& __val) { - return __upper_bound(__first, __last, __val, - __DISTANCE_TYPE(__first)); -} - -template -_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 -inline _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last, - const _Tp& __val, _Compare __comp) { - return __upper_bound(__first, __last, __val, __comp, - __DISTANCE_TYPE(__first)); -} - -template -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 -inline pair<_ForwardIter, _ForwardIter> -equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) { - return __equal_range(__first, __last, __val, - __DISTANCE_TYPE(__first)); -} - -template -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 -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 -bool binary_search(_ForwardIter __first, _ForwardIter __last, - const _Tp& __val) { - _ForwardIter __i = lower_bound(__first, __last, __val); - return __i != __last && !(__val < *__i); -} - -template -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 -_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 -_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 -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 -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 -_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 -_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 -_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 -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 -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 -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 -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 -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 -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 -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 -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 -_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 -_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 -_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 -_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 -_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 -_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 -_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 -_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 -_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 -_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 -_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 -_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 -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 -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 -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 -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 -_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 -_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 -_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 -_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 -_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 -_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 -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 -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 -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 -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 -inline bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last) -{ - return __is_heap(__first, __last - __first); -} - - -template -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 -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 -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 -#endif -#ifndef __SGI_STL_INTERNAL_RELOPS -#include -#endif -#ifndef __SGI_STL_INTERNAL_PAIR_H -#include -#endif -#ifndef __TYPE_TRAITS_H_ -#include -#endif - -#include -#include -#include -#include -#include -#include - -#ifndef __SGI_STL_INTERNAL_ITERATOR_H -#include -#endif - -__STL_BEGIN_NAMESPACE - -// swap and iter_swap - -template -inline void __iter_swap(_ForwardIter1 __a, _ForwardIter2 __b, _Tp*) { - _Tp __tmp = *__a; - *__a = *__b; - *__b = __tmp; -} - -template -inline void iter_swap(_ForwardIter1 __a, _ForwardIter2 __b) { - __iter_swap(__a, __b, __VALUE_TYPE(__a)); -} - -template -inline void swap(_Tp& __a, _Tp& __b) { - _Tp __tmp = __a; - __a = __b; - __b = __tmp; -} - -//-------------------------------------------------- -// min and max - -#ifndef __BORLANDC__ - -#undef min -#undef max - -template -inline const _Tp& min(const _Tp& __a, const _Tp& __b) { - return __b < __a ? __b : __a; -} - -template -inline const _Tp& max(const _Tp& __a, const _Tp& __b) { - return __a < __b ? __b : __a; -} - -#endif /* __BORLANDC__ */ - -template -inline const _Tp& min(const _Tp& __a, const _Tp& __b, _Compare __comp) { - return __comp(__b, __a) ? __b : __a; -} - -template -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 -inline _OutputIter __copy(_InputIter __first, _InputIter __last, - _OutputIter __result, - input_iterator_tag, _Distance*) -{ - for ( ; __first != __last; ++__result, ++__first) - *__result = *__first; - return __result; -} - -template -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 -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 -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 -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 -struct __copy_dispatch -{ - static _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) { - return __copy_trivial(__first, __last, __result); - } -}; - -template -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 -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 -inline _BidirectionalIter2 __copy_backward(_BidirectionalIter1 __first, - _BidirectionalIter1 __last, - _BidirectionalIter2 __result, - bidirectional_iterator_tag, - _Distance*) -{ - while (__first != __last) - *--__result = *--__last; - return __result; -} - -template -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 -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 -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 -struct __copy_backward_dispatch -{ - static _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) { - return __copy_backward_dispatch<_Tp*, _Tp*, __true_type> - ::copy(__first, __last, __result); - } -}; - -template -inline _BI2 copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) { - typedef typename __type_traits::value_type> - ::has_trivial_assignment_operator - _Trivial; - return __copy_backward_dispatch<_BI1, _BI2, _Trivial> - ::copy(__first, __last, __result); -} - -#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */ - -template -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 -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 -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 -inline pair<_InputIter, _OutputIter> -__copy_n(_InputIter __first, _Size __count, _OutputIter __result) { - return __copy_n(__first, __count, __result, - __ITERATOR_CATEGORY(__first)); -} - -template -inline pair<_InputIter, _OutputIter> -copy_n(_InputIter __first, _Size __count, _OutputIter __result) { - return __copy_n(__first, __count, __result); -} - -//-------------------------------------------------- -// fill and fill_n - - -template -void fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __value) { - for ( ; __first != __last; ++__first) - *__first = __value; -} - -template -_OutputIter fill_n(_OutputIter __first, _Size __n, const _Tp& __value) { - for ( ; __n > 0; --__n, ++__first) - *__first = __value; - return __first; -} - -//-------------------------------------------------- -// equal and mismatch - -template -pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1, - _InputIter1 __last1, - _InputIter2 __first2) { - while (__first1 != __last1 && *__first1 == *__first2) { - ++__first1; - ++__first2; - } - return pair<_InputIter1, _InputIter2>(__first1, __first2); -} - -template -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 -inline bool equal(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2) { - for ( ; __first1 != __last1; ++__first1, ++__first2) - if (*__first1 != *__first2) - return false; - return true; -} - -template -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 -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 -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 -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 -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 -# define __THROW_BAD_ALLOC throw bad_alloc() -#elif !defined(__THROW_BAD_ALLOC) -# include -# define __THROW_BAD_ALLOC cerr << "out of memory" << endl; exit(1) -#endif - -#ifdef __STL_WIN32THREADS -# include -#endif - -#include -#include -#include -#include -#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 -# 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 -# 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 - // 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 -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 -void (* __malloc_alloc_template<__inst>::__malloc_alloc_oom_handler)() = 0; -#endif - -template -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 -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 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 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 -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 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 -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 -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 -void* -__default_alloc_template::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 - pthread_mutex_t - __default_alloc_template<__threads, __inst>::_S_node_allocator_lock - = PTHREAD_MUTEX_INITIALIZER; -#endif - -#ifdef __STL_SOLTHREADS - template - mutex_t - __default_alloc_template<__threads, __inst>::_S_node_allocator_lock - = DEFAULTMUTEX; -#endif - -#ifdef __STL_WIN32THREADS - template - CRITICAL_SECTION - __default_alloc_template<__threads, __inst>:: - _S_node_allocator_lock; - - template - bool - __default_alloc_template<__threads, __inst>:: - _S_node_allocator_lock_initialized - = false; -#endif - -#ifdef __STL_SGI_THREADS -__STL_END_NAMESPACE -#include -#include /* XXX should use */ -__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 -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 -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 -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 -char* __default_alloc_template<__threads, __inst>::_S_start_free = 0; - -template -char* __default_alloc_template<__threads, __inst>::_S_end_free = 0; - -template -size_t __default_alloc_template<__threads, __inst>::_S_heap_size = 0; - -template -__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 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 struct rebind { - typedef allocator<_Tp1> other; - }; - - allocator() __STL_NOTHROW {} - allocator(const allocator&) __STL_NOTHROW {} - template 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 { - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef void* pointer; - typedef const void* const_pointer; - typedef void value_type; - - template struct rebind { - typedef allocator<_Tp1> other; - }; -}; - - -template -inline bool operator==(const allocator<_T1>&, const allocator<_T2>&) -{ - return true; -} - -template -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 -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 struct rebind { - typedef __allocator<_Tp1, _Alloc> other; - }; - - __allocator() __STL_NOTHROW {} - __allocator(const __allocator& __a) __STL_NOTHROW - : __underlying_alloc(__a.__underlying_alloc) {} - template - __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 __allocator { - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef void* pointer; - typedef const void* const_pointer; - typedef void value_type; - - template struct rebind { - typedef __allocator<_Tp1, _Alloc> other; - }; -}; - -template -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 -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 (for example) will -// work correctly. - -template -inline bool operator==(const __malloc_alloc_template&, - const __malloc_alloc_template&) -{ - return true; -} - -#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER -template -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 -inline bool operator==(const __default_alloc_template<__threads, __inst>&, - const __default_alloc_template<__threads, __inst>&) -{ - return true; -} - -# ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER -template -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 -inline bool operator==(const debug_alloc<_Alloc>&, - const debug_alloc<_Alloc>&) { - return true; -} - -#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER -template -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 -struct _Alloc_traits -{ - static const bool _S_instanceless = false; - typedef typename _Allocator::__STL_TEMPLATE rebind<_Tp>::other - allocator_type; -}; - -template -const bool _Alloc_traits<_Tp, _Allocator>::_S_instanceless; - -// The version for the default allocator. - -template -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 -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 -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 -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 -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 -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 -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 { - 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 -{ - 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 _Bvector_alloc_base { -public: - typedef typename _Alloc_traits::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::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 _Bvector_alloc_base<_Allocator, true> { -public: - typedef typename _Alloc_traits::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::_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 _Bvector_base - : public _Bvector_alloc_base<_Alloc, - _Alloc_traits::_S_instanceless> -{ - typedef _Bvector_alloc_base<_Alloc, - _Alloc_traits::_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 _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 _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 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_BEGIN_NAMESPACE -template class vector - : 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_reverse_iterator; - typedef reverse_iterator reverse_iterator; -#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */ - typedef reverse_iterator const_reverse_iterator; - typedef reverse_iterator - 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 - 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 - 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 - void _M_insert_range(iterator __pos, - _InputIterator __first, _InputIterator __last, - input_iterator_tag) { - for ( ; __first != __last; ++__first) { - __pos = insert(__pos, *__first); - ++__pos; - } - } - - template - 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 - __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 - 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 - 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 - void assign(_InputIterator __first, _InputIterator __last) { - typedef typename _Is_integer<_InputIterator>::_Integral _Integral; - _M_assign_dispatch(__first, __last, _Integral()); - } - - template - void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) - { assign((size_t) __n, (bool) __val); } - - template - void _M_assign_dispatch(_InputIter __first, _InputIter __last, __false_type) - { _M_assign_aux(__first, __last, __ITERATOR_CATEGORY(__first)); } - - template - 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 - 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 - void insert(iterator __position, - _InputIterator __first, _InputIterator __last) { - typedef typename _Is_integer<_InputIterator>::_Integral _Integral; - _M_insert_dispatch(__position, __first, __last, _Integral()); - } - - template - void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, - __true_type) { - insert(__pos, (size_type) __n, (bool) __x); - } - - template - 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 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 . -// * __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 -# 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 -# 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 -# 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 - -__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 -inline void destroy(_Tp* __pointer) { - __pointer->~_Tp(); -} - -template -inline void construct(_T1* __p, const _T2& __value) { - new (__p) _T1(__value); -} - -template -inline void construct(_T1* __p) { - new (__p) _T1(); -} - -template -inline void -__destroy_aux(_ForwardIterator __first, _ForwardIterator __last, __false_type) -{ - for ( ; __first != __last; ++__first) - destroy(&*__first); -} - -template -inline void __destroy_aux(_ForwardIterator, _ForwardIterator, __true_type) {} - -template -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 -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 -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 -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 -inline random_access_iterator_tag -iterator_category(const _Deque_iterator<_Tp,_Ref,_Ptr,__bufsiz>&) { - return random_access_iterator_tag(); -} - -template -inline _Tp* -value_type(const _Deque_iterator<_Tp,_Ref,_Ptr,__bufsiz>&) { - return 0; -} - -template -inline ptrdiff_t* -distance_type(const _Deque_iterator<_Tp,_Ref,_Ptr,__bufsiz>&) { - return 0; -} - -#else /* __STL_NON_TYPE_TMPL_PARAM_BUG */ - -template -inline random_access_iterator_tag -iterator_category(const _Deque_iterator<_Tp,_Ref,_Ptr>&) -{ - return random_access_iterator_tag(); -} - -template -inline _Tp* -value_type(const _Deque_iterator<_Tp,_Ref,_Ptr>&) { return 0; } - -template -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 _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 _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 _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 _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 -_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 -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 -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 -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 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_reverse_iterator; - typedef reverse_iterator reverse_iterator; -#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */ - typedef reverse_iterator - const_reverse_iterator; - typedef reverse_iterator - 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 - 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 - void _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) { - _M_initialize_map(__n); - _M_fill_initialize(__x); - } - - template - 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 - 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 - void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) - { assign((size_type) __n, (_Tp) __val); } - - template - void _M_assign_dispatch(_InputIterator __first, _InputIterator __last, - __false_type) { - _M_assign_aux(__first, __last, __ITERATOR_CATEGORY(__first)); - } - - template - void _M_assign_aux(_InputIterator __first, _InputIterator __last, - input_iterator_tag); - - template - 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 - void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { - typedef typename _Is_integer<_InputIterator>::_Integral _Integral; - _M_insert_dispatch(__pos, __first, __last, _Integral()); - } - - template - void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, - __true_type) { - insert(__pos, (size_type) __n, (value_type) __x); - } - - template - 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(__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 - void _M_range_initialize(_InputIterator __first, _InputIterator __last, - input_iterator_tag); - - template - 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 - void insert(iterator __pos, _InputIterator __first, _InputIterator __last, - input_iterator_tag); - - template - 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 - 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 -template -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 -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 -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 -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 -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(__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 -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 -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 -template -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 -template -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 -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 -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 -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 -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 -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 -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 -template -void -deque<_Tp,_Alloc,__bufsize>::insert(iterator __pos, - _InputIterator __first, - _InputIterator __last, - input_iterator_tag) -{ - copy(__first, __last, inserter(*this, __pos)); -} - -template -template -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 -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(__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 -typename deque<_Tp,_Alloc,__bufsize>::iterator -deque<_Tp,_Alloc,__bufsize>::_M_insert_aux(iterator __pos) -{ - difference_type __index = __pos - _M_start; - if (static_cast(__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 -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(__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 -template -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(__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 -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 -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 -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 -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 -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 -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 -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 -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 -struct unary_function { - typedef _Arg argument_type; - typedef _Result result_type; -}; - -template -struct binary_function { - typedef _Arg1 first_argument_type; - typedef _Arg2 second_argument_type; - typedef _Result result_type; -}; - -template -struct plus : public binary_function<_Tp,_Tp,_Tp> { - _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x + __y; } -}; - -template -struct minus : public binary_function<_Tp,_Tp,_Tp> { - _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x - __y; } -}; - -template -struct multiplies : public binary_function<_Tp,_Tp,_Tp> { - _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x * __y; } -}; - -template -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 inline _Tp identity_element(plus<_Tp>) { - return _Tp(0); -} -template inline _Tp identity_element(multiplies<_Tp>) { - return _Tp(1); -} - -template -struct modulus : public binary_function<_Tp,_Tp,_Tp> -{ - _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x % __y; } -}; - -template -struct negate : public unary_function<_Tp,_Tp> -{ - _Tp operator()(const _Tp& __x) const { return -__x; } -}; - -template -struct equal_to : public binary_function<_Tp,_Tp,bool> -{ - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x == __y; } -}; - -template -struct not_equal_to : public binary_function<_Tp,_Tp,bool> -{ - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x != __y; } -}; - -template -struct greater : public binary_function<_Tp,_Tp,bool> -{ - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x > __y; } -}; - -template -struct less : public binary_function<_Tp,_Tp,bool> -{ - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x < __y; } -}; - -template -struct greater_equal : public binary_function<_Tp,_Tp,bool> -{ - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x >= __y; } -}; - -template -struct less_equal : public binary_function<_Tp,_Tp,bool> -{ - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x <= __y; } -}; - -template -struct logical_and : public binary_function<_Tp,_Tp,bool> -{ - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x && __y; } -}; - -template -struct logical_or : public binary_function<_Tp,_Tp,bool> -{ - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x || __y; } -}; - -template -struct logical_not : public unary_function<_Tp,bool> -{ - bool operator()(const _Tp& __x) const { return !__x; } -}; - -template -class unary_negate - : public unary_function { -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 -inline unary_negate<_Predicate> -not1(const _Predicate& __pred) -{ - return unary_negate<_Predicate>(__pred); -} - -template -class binary_negate - : public binary_function { -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 -inline binary_negate<_Predicate> -not2(const _Predicate& __pred) -{ - return binary_negate<_Predicate>(__pred); -} - -template -class binder1st - : public unary_function { -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 -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 binder2nd - : public unary_function { -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 -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 unary_compose - : public unary_function -{ -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 -inline unary_compose<_Operation1,_Operation2> -compose1(const _Operation1& __op1, const _Operation2& __op2) -{ - return unary_compose<_Operation1,_Operation2>(__op1, __op2); -} - -template -class binary_compose - : public unary_function { -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 -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 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 -inline pointer_to_unary_function<_Arg, _Result> ptr_fun(_Result (*__x)(_Arg)) -{ - return pointer_to_unary_function<_Arg, _Result>(__x); -} - -template -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 -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 -struct _Identity : public unary_function<_Tp,_Tp> { - const _Tp& operator()(const _Tp& __x) const { return __x; } -}; - -template struct identity : public _Identity<_Tp> {}; - -// select1st and select2nd are extensions: they are not part of the standard. -template -struct _Select1st : public unary_function<_Pair, typename _Pair::first_type> { - const typename _Pair::first_type& operator()(const _Pair& __x) const { - return __x.first; - } -}; - -template -struct _Select2nd : public unary_function<_Pair, typename _Pair::second_type> -{ - const typename _Pair::second_type& operator()(const _Pair& __x) const { - return __x.second; - } -}; - -template struct select1st : public _Select1st<_Pair> {}; -template struct select2nd : public _Select2nd<_Pair> {}; - -// project1st and project2nd are extensions: they are not part of the standard -template -struct _Project1st : public binary_function<_Arg1, _Arg2, _Arg1> { - _Arg1 operator()(const _Arg1& __x, const _Arg2&) const { return __x; } -}; - -template -struct _Project2nd : public binary_function<_Arg1, _Arg2, _Arg2> { - _Arg2 operator()(const _Arg1&, const _Arg2& __y) const { return __y; } -}; - -template -struct project1st : public _Project1st<_Arg1, _Arg2> {}; - -template -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 -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 -#else -template -#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 -#else -template -#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 -inline constant_void_fun<_Result> constant0(const _Result& __val) -{ - return constant_void_fun<_Result>(__val); -} - -template -inline constant_unary_fun<_Result,_Result> constant1(const _Result& __val) -{ - return constant_unary_fun<_Result,_Result>(__val); -} - -template -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 { -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 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 const_mem_fun_t : public unary_function { -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 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 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 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 const_mem_fun1_t : public binary_function { -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 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 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 mem_fun_t : 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 const_mem_fun_t : public unary_function { -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 mem_fun_ref_t : 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 const_mem_fun_ref_t : 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 mem_fun1_t : 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 const_mem_fun1_t - : public binary_function { -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 mem_fun1_ref_t - : 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 const_mem_fun1_ref_t - : 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 -inline mem_fun_t<_Ret,_Tp> mem_fun(_Ret (_Tp::*__f)()) - { return mem_fun_t<_Ret,_Tp>(__f); } - -template -inline const_mem_fun_t<_Ret,_Tp> mem_fun(_Ret (_Tp::*__f)() const) - { return const_mem_fun_t<_Ret,_Tp>(__f); } - -template -inline mem_fun_ref_t<_Ret,_Tp> mem_fun_ref(_Ret (_Tp::*__f)()) - { return mem_fun_ref_t<_Ret,_Tp>(__f); } - -template -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 -inline mem_fun1_t<_Ret,_Tp,_Arg> mem_fun(_Ret (_Tp::*__f)(_Arg)) - { return mem_fun1_t<_Ret,_Tp,_Arg>(__f); } - -template -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 -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 -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 -inline mem_fun1_t<_Ret,_Tp,_Arg> mem_fun1(_Ret (_Tp::*__f)(_Arg)) - { return mem_fun1_t<_Ret,_Tp,_Arg>(__f); } - -template -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 -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 -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 - -__STL_BEGIN_NAMESPACE - -template 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 -{ - size_t operator()(const char* __s) const { return __stl_hash_string(__s); } -}; - -__STL_TEMPLATE_NULL struct hash -{ - size_t operator()(const char* __s) const { return __stl_hash_string(__s); } -}; - -__STL_TEMPLATE_NULL struct hash { - size_t operator()(char __x) const { return __x; } -}; -__STL_TEMPLATE_NULL struct hash { - size_t operator()(unsigned char __x) const { return __x; } -}; -__STL_TEMPLATE_NULL struct hash { - size_t operator()(unsigned char __x) const { return __x; } -}; -__STL_TEMPLATE_NULL struct hash { - size_t operator()(short __x) const { return __x; } -}; -__STL_TEMPLATE_NULL struct hash { - size_t operator()(unsigned short __x) const { return __x; } -}; -__STL_TEMPLATE_NULL struct hash { - size_t operator()(int __x) const { return __x; } -}; -__STL_TEMPLATE_NULL struct hash { - size_t operator()(unsigned int __x) const { return __x; } -}; -__STL_TEMPLATE_NULL struct hash { - size_t operator()(long __x) const { return __x; } -}; -__STL_TEMPLATE_NULL struct hash { - 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 _EqualKey = equal_to<_Key>, - class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) > -#else -template -#endif -class hash_map -{ -private: - typedef hashtable,_Key,_HashFcn, - _Select1st >,_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 - hash_map(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - template - 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 - 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 insert(const value_type& __obj) - { return _M_ht.insert_unique(__obj); } -#ifdef __STL_MEMBER_TEMPLATES - template - 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 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 equal_range(const key_type& __key) - { return _M_ht.equal_range(__key); } - pair - 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 -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 -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 _EqualKey = equal_to<_Key>, - class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) > -#else -template -#endif -class hash_multimap -{ -private: - typedef hashtable, _Key, _HashFcn, - _Select1st >, _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 - hash_multimap(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - template - 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 - 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 - 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 equal_range(const key_type& __key) - { return _M_ht.equal_range(__key); } - pair - 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 -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 -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 _EqualKey = equal_to<_Value>, - class _Alloc = __STL_DEFAULT_ALLOCATOR(_Value) > -#else -template -#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 - hash_set(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - template - 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 - 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 insert(const value_type& __obj) - { - pair __p = _M_ht.insert_unique(__obj); - return pair(__p.first, __p.second); - } -#ifdef __STL_MEMBER_TEMPLATES - template - 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 insert_noresize(const value_type& __obj) - { - pair __p = - _M_ht.insert_unique_noresize(__obj); - return pair(__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 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 -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 -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 _EqualKey = equal_to<_Value>, - class _Alloc = __STL_DEFAULT_ALLOCATOR(_Value) > -#else -template -#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 - hash_multiset(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - template - 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 - 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 - 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 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 -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 -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 -#include -#include -#include -#include -#include -#include -#include -#include - -__STL_BEGIN_NAMESPACE - -template -struct _Hashtable_node -{ - _Hashtable_node* _M_next; - _Val _M_val; -}; - -template -class hashtable; - -template -struct _Hashtable_iterator; - -template -struct _Hashtable_const_iterator; - -template -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 -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 hashtable; - -template -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 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 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 insert_unique_noresize(const value_type& __obj); - iterator insert_equal_noresize(const value_type& __obj); - -#ifdef __STL_MEMBER_TEMPLATES - template - void insert_unique(_InputIterator __f, _InputIterator __l) - { - insert_unique(__f, __l, __ITERATOR_CATEGORY(__f)); - } - - template - void insert_equal(_InputIterator __f, _InputIterator __l) - { - insert_equal(__f, __l, __ITERATOR_CATEGORY(__f)); - } - - template - void insert_unique(_InputIterator __f, _InputIterator __l, - input_iterator_tag) - { - for ( ; __f != __l; ++__f) - insert_unique(*__f); - } - - template - void insert_equal(_InputIterator __f, _InputIterator __l, - input_iterator_tag) - { - for ( ; __f != __l; ++__f) - insert_equal(*__f); - } - - template - 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 - 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 - equal_range(const key_type& __key); - - pair - 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 -_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 -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 -_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 -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 -inline forward_iterator_tag -iterator_category(const _Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>&) -{ - return forward_iterator_tag(); -} - -template -inline _Val* -value_type(const _Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>&) -{ - return (_Val*) 0; -} - -template -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 -inline forward_iterator_tag -iterator_category(const _Hashtable_const_iterator<_Val,_Key,_HF, - _ExK,_EqK,_All>&) -{ - return forward_iterator_tag(); -} - -template -inline _Val* -value_type(const _Hashtable_const_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>&) -{ - return (_Val*) 0; -} - -template -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 -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 -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 -pair::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(__cur, this), false); - - _Node* __tmp = _M_new_node(__obj); - __tmp->_M_next = __first; - _M_buckets[__n] = __tmp; - ++_M_num_elements; - return pair(iterator(__tmp, this), true); -} - -template -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 -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 -pair::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 _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 -pair::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 _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 -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 -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 -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 -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(__first._M_ht)), - iterator(const_cast<_Node*>(__last._M_cur), - const_cast(__last._M_ht))); -} - -template -inline void -hashtable<_Val,_Key,_HF,_Ex,_Eq,_All>::erase(const const_iterator& __it) -{ - erase(iterator(const_cast<_Node*>(__it._M_cur), - const_cast(__it._M_ht))); -} - -template -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 -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 -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 -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 -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 -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 -inline void -__push_heap_aux(_RandomAccessIterator __first, - _RandomAccessIterator __last, _Distance*, _Tp*) -{ - __push_heap(__first, _Distance((__last - __first) - 1), _Distance(0), - _Tp(*(__last - 1))); -} - -template -inline void -push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - __push_heap_aux(__first, __last, - __DISTANCE_TYPE(__first), __VALUE_TYPE(__first)); -} - -template -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 -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 -inline void -push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, - _Compare __comp) -{ - __push_heap_aux(__first, __last, __comp, - __DISTANCE_TYPE(__first), __VALUE_TYPE(__first)); -} - -template -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 -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 -inline void -__pop_heap_aux(_RandomAccessIterator __first, _RandomAccessIterator __last, - _Tp*) -{ - __pop_heap(__first, __last - 1, __last - 1, - _Tp(*(__last - 1)), __DISTANCE_TYPE(__first)); -} - -template -inline void pop_heap(_RandomAccessIterator __first, - _RandomAccessIterator __last) -{ - __pop_heap_aux(__first, __last, __VALUE_TYPE(__first)); -} - -template -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 -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 -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 -inline void -pop_heap(_RandomAccessIterator __first, - _RandomAccessIterator __last, _Compare __comp) -{ - __pop_heap_aux(__first, __last, __VALUE_TYPE(__first), __comp); -} - -template -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 -inline void -make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - __make_heap(__first, __last, - __VALUE_TYPE(__first), __DISTANCE_TYPE(__first)); -} - -template -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 -inline void -make_heap(_RandomAccessIterator __first, - _RandomAccessIterator __last, _Compare __comp) -{ - __make_heap(__first, __last, __comp, - __VALUE_TYPE(__first), __DISTANCE_TYPE(__first)); -} - -template -void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - while (__last - __first > 1) - pop_heap(__first, __last--); -} - -template -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 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 struct forward_iterator { - typedef forward_iterator_tag iterator_category; - typedef _Tp value_type; - typedef _Distance difference_type; - typedef _Tp* pointer; - typedef _Tp& reference; -}; - - -template struct bidirectional_iterator { - typedef bidirectional_iterator_tag iterator_category; - typedef _Tp value_type; - typedef _Distance difference_type; - typedef _Tp* pointer; - typedef _Tp& reference; -}; - -template 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 -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 -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 -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 -struct iterator_traits { - 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 -inline typename iterator_traits<_Iter>::iterator_category -__iterator_category(const _Iter&) -{ - typedef typename iterator_traits<_Iter>::iterator_category _Category; - return _Category(); -} - -template -inline typename iterator_traits<_Iter>::difference_type* -__distance_type(const _Iter&) -{ - return static_cast::difference_type*>(0); -} - -template -inline typename iterator_traits<_Iter>::value_type* -__value_type(const _Iter&) -{ - return static_cast::value_type*>(0); -} - -template -inline typename iterator_traits<_Iter>::iterator_category -iterator_category(const _Iter& __i) { return __iterator_category(__i); } - - -template -inline typename iterator_traits<_Iter>::difference_type* -distance_type(const _Iter& __i) { return __distance_type(__i); } - -template -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 -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 -inline forward_iterator_tag -iterator_category(const forward_iterator<_Tp, _Distance>&) - { return forward_iterator_tag(); } - -template -inline bidirectional_iterator_tag -iterator_category(const bidirectional_iterator<_Tp, _Distance>&) - { return bidirectional_iterator_tag(); } - -template -inline random_access_iterator_tag -iterator_category(const random_access_iterator<_Tp, _Distance>&) - { return random_access_iterator_tag(); } - -template -inline random_access_iterator_tag iterator_category(const _Tp*) - { return random_access_iterator_tag(); } - -template -inline _Tp* value_type(const input_iterator<_Tp, _Distance>&) - { return (_Tp*)(0); } - -template -inline _Tp* value_type(const forward_iterator<_Tp, _Distance>&) - { return (_Tp*)(0); } - -template -inline _Tp* value_type(const bidirectional_iterator<_Tp, _Distance>&) - { return (_Tp*)(0); } - -template -inline _Tp* value_type(const random_access_iterator<_Tp, _Distance>&) - { return (_Tp*)(0); } - -template -inline _Tp* value_type(const _Tp*) { return (_Tp*)(0); } - -template -inline _Distance* distance_type(const input_iterator<_Tp, _Distance>&) -{ - return (_Distance*)(0); -} - -template -inline _Distance* distance_type(const forward_iterator<_Tp, _Distance>&) -{ - return (_Distance*)(0); -} - -template -inline _Distance* -distance_type(const bidirectional_iterator<_Tp, _Distance>&) -{ - return (_Distance*)(0); -} - -template -inline _Distance* -distance_type(const random_access_iterator<_Tp, _Distance>&) -{ - return (_Distance*)(0); -} - -template -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 -inline void __distance(_InputIterator __first, _InputIterator __last, - _Distance& __n, input_iterator_tag) -{ - while (__first != __last) { ++__first; ++__n; } -} - -template -inline void __distance(_RandomAccessIterator __first, - _RandomAccessIterator __last, - _Distance& __n, random_access_iterator_tag) -{ - __n += __last - __first; -} - -template -inline void distance(_InputIterator __first, - _InputIterator __last, _Distance& __n) -{ - __distance(__first, __last, __n, iterator_category(__first)); -} - -#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION - -template -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 -inline typename iterator_traits<_RandomAccessIterator>::difference_type -__distance(_RandomAccessIterator __first, _RandomAccessIterator __last, - random_access_iterator_tag) { - return __last - __first; -} - -template -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 -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 -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 -inline void __advance(_RandomAccessIterator& __i, _Distance __n, - random_access_iterator_tag) { - __i += __n; -} - -template -inline void advance(_InputIterator& __i, _Distance __n) { - __advance(__i, __n, iterator_category(__i)); -} - -template -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 -inline output_iterator_tag -iterator_category(const back_insert_iterator<_Container>&) -{ - return output_iterator_tag(); -} - -#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */ - -template -inline back_insert_iterator<_Container> back_inserter(_Container& __x) { - return back_insert_iterator<_Container>(__x); -} - -template -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 -inline output_iterator_tag -iterator_category(const front_insert_iterator<_Container>&) -{ - return output_iterator_tag(); -} - -#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */ - -template -inline front_insert_iterator<_Container> front_inserter(_Container& __x) { - return front_insert_iterator<_Container>(__x); -} - -template -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 -inline output_iterator_tag -iterator_category(const insert_iterator<_Container>&) -{ - return output_iterator_tag(); -} - -#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */ - -template -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 -#else -template -#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 -inline bidirectional_iterator_tag -iterator_category(const reverse_bidirectional_iterator<_BidirectionalIterator, - _Tp, _Reference, - _Distance>&) -{ - return bidirectional_iterator_tag(); -} - -template -inline _Tp* -value_type(const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, - _Reference, _Distance>&) -{ - return (_Tp*) 0; -} - -template -inline _Distance* -distance_type(const reverse_bidirectional_iterator<_BidirectionalIterator, - _Tp, - _Reference, _Distance>&) -{ - return (_Distance*) 0; -} - -#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */ - -template -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 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 - 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 -inline bool operator==(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) { - return __x.base() == __y.base(); -} - -template -inline bool operator<(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) { - return __y.base() < __x.base(); -} - -template -inline typename reverse_iterator<_Iterator>::difference_type -operator-(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) { - return __y.base() - __x.base(); -} - -template -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 -#else -template -#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 -inline random_access_iterator_tag -iterator_category(const reverse_iterator<_RandomAccessIterator, _Tp, - _Reference, _Distance>&) -{ - return random_access_iterator_tag(); -} - -template -inline _Tp* value_type(const reverse_iterator<_RandomAccessIterator, _Tp, - _Reference, _Distance>&) -{ - return (_Tp*) 0; -} - -template -inline _Distance* -distance_type(const reverse_iterator<_RandomAccessIterator, - _Tp, _Reference, _Distance>&) -{ - return (_Distance*) 0; -} - - -template -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 -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 -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 -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 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 -inline input_iterator_tag -iterator_category(const istream_iterator<_Tp, _Dist>&) -{ - return input_iterator_tag(); -} - -template -inline _Tp* -value_type(const istream_iterator<_Tp, _Dist>&) { return (_Tp*) 0; } - -template -inline _Dist* -distance_type(const istream_iterator<_Tp, _Dist>&) { return (_Dist*)0; } - -#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */ - -template -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 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 -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 -struct _List_node { - typedef void* _Void_pointer; - _Void_pointer _M_next; - _Void_pointer _M_prev; - _Tp _M_data; -}; - -template -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 -inline bidirectional_iterator_tag -iterator_category(const _List_iterator<_Tp, _Ref, _Ptr>&) -{ - return bidirectional_iterator_tag(); -} - -template -inline _Tp* -value_type(const _List_iterator<_Tp, _Ref, _Ptr>&) -{ - return 0; -} - -template -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 _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 _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 _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 _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 -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 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_reverse_iterator; - typedef reverse_iterator reverse_iterator; -#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */ - typedef reverse_bidirectional_iterator - const_reverse_iterator; - typedef reverse_bidirectional_iterator - 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 - void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, - __true_type) { - insert(__pos, (size_type) __n, (_Tp) __x); - } - - template - void _M_insert_dispatch(iterator __pos, - _InputIterator __first, _InputIterator __last, - __false_type); - - template - 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 - 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 - void assign(_InputIterator __first, _InputIterator __last) { - typedef typename _Is_integer<_InputIterator>::_Integral _Integral; - _M_assign_dispatch(__first, __last, _Integral()); - } - - template - void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) - { assign((size_type) __n, (_Tp) __val); } - - template - 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 void remove_if(_Predicate); - template void unique(_BinaryPredicate); - template void merge(list&, _StrictWeakOrdering); - template void sort(_StrictWeakOrdering); -#endif /* __STL_MEMBER_TEMPLATES */ - - friend bool operator== __STL_NULL_TMPL_ARGS ( - const list& __x, const list& __y); -}; - -template -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 -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 -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 template -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 -void -list<_Tp, _Alloc>::insert(iterator __position, - const _Tp* __first, const _Tp* __last) -{ - for ( ; __first != __last; ++__first) - insert(__position, *__first); -} - -template -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 -void -list<_Tp, _Alloc>::insert(iterator __position, size_type __n, const _Tp& __x) -{ - for ( ; __n > 0; --__n) - insert(__position, __x); -} - -template -list<_Tp,_Alloc>::iterator list<_Tp, _Alloc>::erase(iterator __first, - iterator __last) -{ - while (__first != __last) - erase(__first++); - return __last; -} - -template -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 -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 -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 template -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 -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 -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 -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 -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 -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 template -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 template -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 template -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 template -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 _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) > -#else -template -#endif -class map { -public: - -// typedefs: - - typedef _Key key_type; - typedef _Tp data_type; - typedef _Tp mapped_type; - typedef pair value_type; - typedef _Compare key_compare; - - class value_compare - : public binary_function { - 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_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 - map(_InputIterator __first, _InputIterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_unique(__first, __last); } - - template - 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 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 - 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 equal_range(const key_type& __x) { - return _M_t.equal_range(__x); - } - pair 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 -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 -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 -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 _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) > -#else -template -#endif -class multimap { -public: - -// typedefs: - - typedef _Key key_type; - typedef _Tp data_type; - typedef _Tp mapped_type; - typedef pair value_type; - typedef _Compare key_compare; - - class value_compare : public binary_function { - 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_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 - multimap(_InputIterator __first, _InputIterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_equal(__first, __last); } - - template - 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 - 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 equal_range(const key_type& __x) { - return _M_t.equal_range(__x); - } - pair 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 -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 -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 -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 _Alloc = __STL_DEFAULT_ALLOCATOR(_Key) > -#else -template -#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_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 - multiset(_InputIterator __first, _InputIterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_equal(__first, __last); } - - template - 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 - 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 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 -inline bool operator==(const multiset<_Key,_Compare,_Alloc>& __x, - const multiset<_Key,_Compare,_Alloc>& __y) { - return __x._M_t == __y._M_t; -} - -template -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 -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 -_Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp __init) -{ - for ( ; __first != __last; ++__first) - __init = __init + *__first; - return __init; -} - -template -_Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp __init, - _BinaryOperation __binary_op) -{ - for ( ; __first != __last; ++__first) - __init = __binary_op(__init, *__first); - return __init; -} - -template -_Tp inner_product(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _Tp __init) -{ - for ( ; __first1 != __last1; ++__first1, ++__first2) - __init = __init + (*__first1 * *__first2); - return __init; -} - -template -_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 -_OutputIterator -__partial_sum(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, _Tp*) -{ - _Tp __value = *__first; - while (++__first != __last) { - __value = __value + *__first; - *++__result = __value; - } - return ++__result; -} - -template -_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 -_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 -_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 -_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 -_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 -_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 -_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 -_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 -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 -inline _Tp power(_Tp __x, _Integer __n, _MonoidOperation __oper) -{ - return __power(__x, __n, __oper); -} - -template -inline _Tp power(_Tp __x, _Integer __n) -{ - return __power(__x, __n); -} - -// iota is not part of the C++ standard. It is an extension. - -template -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 -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 - pair(const pair<_U1, _U2>& __p) : first(__p.first), second(__p.second) {} -#endif -}; - -template -inline bool operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) -{ - return __x.first == __y.first && __x.second == __y.second; -} - -template -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 -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 > -#else -template -#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 -bool -operator==(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y) -{ - return __x.c == __y.c; -} - -template -bool -operator<(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y) -{ - return __x.c < __y.c; -} - -#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER - -template -bool -operator!=(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y) -{ - return !(__x == __y); -} - -template -bool -operator>(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y) -{ - return __y < __x; -} - -template -bool -operator<=(const queue<_Tp, _Sequence>& __x, const queue<_Tp, _Sequence>& __y) -{ - return !(__y < __x); -} - -template -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 _Compare = less > -#else -template -#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 - priority_queue(_InputIterator __first, _InputIterator __last) - : c(__first, __last) { make_heap(c.begin(), c.end(), comp); } - - template - priority_queue(_InputIterator __first, - _InputIterator __last, const _Compare& __x) - : c(__first, __last), comp(__x) - { make_heap(c.begin(), c.end(), comp); } - - template - 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 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 -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 -inline bool operator!=(const _Tp& __x, const _Tp& __y) { - return !(__x == __y); -} - -template -inline bool operator>(const _Tp& __x, const _Tp& __y) { - return __y < __x; -} - -template -inline bool operator<=(const _Tp& __x, const _Tp& __y) { - return !(__y < __x); -} - -template -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 -# 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 -inline _CharT _S_eos(_CharT*) { return _CharT(); } - -// Test for basic character types. -// For basic character types leaves having a trailing eos. -template -inline bool _S_is_basic_char_type(_CharT*) { return false; } -template -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 -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 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 -// 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 and a -// little like containers. - -template -// 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 _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 rope; -template struct _Rope_RopeConcatenation; -template struct _Rope_RopeLeaf; -template struct _Rope_RopeFunction; -template struct _Rope_RopeSubstring; -template class _Rope_iterator; -template class _Rope_const_iterator; -template class _Rope_char_ref_proxy; -template 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 _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 _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 -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 _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 -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 -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 -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 -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 -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 - 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 _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 - 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 _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 _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 _Rope_iterator; - -template -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 _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 _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 _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 -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 _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 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 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_reverse_iterator; -# else /* __STL_CLASS_PARTIAL_SPECIALIZATION */ - typedef reverse_iterator 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 reverse_iterator; -# else /* __STL_CLASS_PARTIAL_SPECIALIZATION */ - typedef reverse_iterator 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 -const rope<_CharT, _Alloc>::size_type rope<_CharT, _Alloc>::npos = - (size_type)(-1); - -template -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -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 -inline -rope<_CharT,_Alloc>& -operator+= (rope<_CharT,_Alloc>& __left, - const rope<_CharT,_Alloc>& __right) -{ - __left.append(__right); - return __left; -} - -template -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 -inline -rope<_CharT,_Alloc>& -operator+= (rope<_CharT,_Alloc>& __left, - const _CharT* __right) { - __left.append(__right); - return __left; -} - -template -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 -inline -rope<_CharT,_Alloc>& -operator+= (rope<_CharT,_Alloc>& __left, _CharT __right) { - __left.append(__right); - return __left; -} - -template -bool -operator< (const rope<_CharT,_Alloc>& __left, - const rope<_CharT,_Alloc>& __right) { - return __left.compare(__right) < 0; -} - -template -bool -operator== (const rope<_CharT,_Alloc>& __left, - const rope<_CharT,_Alloc>& __right) { - return __left.compare(__right) == 0; -} - -template -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 -ostream& operator<< (ostream& __o, const rope<_CharT,_Alloc>& __r); - -typedef rope crope; -typedef rope 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 -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 -{ - 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 -{ - 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 - -# 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 _Alloc = __STL_DEFAULT_ALLOCATOR(_Key) > -#else -template -#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_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 - set(_InputIterator __first, _InputIterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_unique(__first, __last); } - - template - 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 insert(const value_type& __x) { - pair __p = _M_t.insert_unique(__x); - return pair(__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 - 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 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 -inline bool operator==(const set<_Key,_Compare,_Alloc>& __x, - const set<_Key,_Compare,_Alloc>& __y) { - return __x._M_t == __y._M_t; -} - -template -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 -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 -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 -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 -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 _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 _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 -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 -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 -_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 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 - 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 - void assign(_InputIterator __first, _InputIterator __last) { - typedef typename _Is_integer<_InputIterator>::_Integral _Integral; - _M_assign_dispatch(__first, __last, _Integral()); - } - - template - void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) - { assign((size_type) __n, (_Tp) __val); } - - template - 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 - 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 - void _M_insert_after_range(_Node_base* __pos, _Integer __n, _Integer __x, - __true_type) { - _M_insert_after_fill(__pos, __n, __x); - } - - template - 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 - 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 - 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 - void remove_if(_Predicate __pred); - - template - void unique(_BinaryPredicate __pred); - - template - void merge(slist&, _StrictWeakOrdering); - - template - void sort(_StrictWeakOrdering __comp); -#endif /* __STL_MEMBER_TEMPLATES */ -}; - -template -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 -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 template -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 -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 -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 -inline void swap(slist<_Tp,_Alloc>& __x, slist<_Tp,_Alloc>& __y) { - __x.swap(__y); -} - -#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */ - - -template -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 -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 -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 -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 -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 -template -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 template -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 template -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 template -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 > -#else -template -#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 -bool operator==(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y) -{ - return __x._M_c == __y._M_c; -} - -template -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 -bool operator!=(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y) -{ - return !(__x == __y); -} - -template -bool operator>(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y) -{ - return __y < __x; -} - -template -bool operator<=(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y) -{ - return !(__y < __x); -} - -template -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 -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 -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 -inline pair<_Tp*, ptrdiff_t> get_temporary_buffer(ptrdiff_t __len, _Tp*) { - return __get_temporary_buffer(__len, (_Tp*) 0); -} - -template -void return_temporary_buffer(_Tp* __p) { - free(__p); -} - -template -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 ::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 -#include -#include -#include - -__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 -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 -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 -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 _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 _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 -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 -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 _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 iterator; - typedef _Rb_tree_iterator - const_iterator; - -#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION - typedef reverse_iterator const_reverse_iterator; - typedef reverse_iterator reverse_iterator; -#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */ - typedef reverse_bidirectional_iterator - reverse_iterator; - typedef reverse_bidirectional_iterator - 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 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 - void insert_unique(_InputIterator __first, _InputIterator __last); - template - 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 equal_range(const key_type& __x); - pair equal_range(const key_type& __x) const; - -public: - // Debugging. - bool __rb_verify() const; -}; - -template -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 -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 -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 -_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 -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 -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 -pair::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(_M_insert(__x, __y, __v), true); - else - --__j; - if (_M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__v))) - return pair(_M_insert(__x, __y, __v), true); - return pair(__j, false); -} - - -template -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 -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 - template -void _Rb_tree<_Key,_Val,_KoV,_Cmp,_Alloc> - ::insert_equal(_II __first, _II __last) -{ - for ( ; __first != __last; ++__first) - insert_equal(*__first); -} - -template - template -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 -void -_Rb_tree<_Key,_Val,_KoV,_Cmp,_Alloc> - ::insert_equal(const _Val* __first, const _Val* __last) -{ - for ( ; __first != __last; ++__first) - insert_equal(*__first); -} - -template -void -_Rb_tree<_Key,_Val,_KoV,_Cmp,_Alloc> - ::insert_equal(const_iterator __first, const_iterator __last) -{ - for ( ; __first != __last; ++__first) - insert_equal(*__first); -} - -template -void -_Rb_tree<_Key,_Val,_KoV,_Cmp,_Alloc> - ::insert_unique(const _Val* __first, const _Val* __last) -{ - for ( ; __first != __last; ++__first) - insert_unique(*__first); -} - -template -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 -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 -typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::size_type -_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::erase(const _Key& __x) -{ - pair __p = equal_range(__x); - size_type __n = 0; - distance(__p.first, __p.second, __n); - erase(__p.first, __p.second); - return __n; -} - -template -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 -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 -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 -void _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> - ::erase(const _Key* __first, const _Key* __last) -{ - while (__first != __last) erase(*__first++); -} - -template -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 -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 -typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::size_type -_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> - ::count(const _Key& __k) const -{ - pair __p = equal_range(__k); - size_type __n = 0; - distance(__p.first, __p.second, __n); - return __n; -} - -template -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 -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 -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 -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 -inline -pair::iterator, - typename _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::iterator> -_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> - ::equal_range(const _Key& __k) -{ - return pair(lower_bound(__k), upper_bound(__k)); -} - -template -inline -pair::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(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 -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 -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 -inline _ForwardIter -__uninitialized_copy_aux(_InputIter __first, _InputIter __last, - _ForwardIter __result, - __true_type) -{ - return copy(__first, __last, __result); -} - -template -_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 -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 -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 -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 -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 -inline pair<_InputIter, _ForwardIter> -__uninitialized_copy_n(_InputIter __first, _Size __count, - _ForwardIter __result) { - return __uninitialized_copy_n(__first, __count, __result, - __ITERATOR_CATEGORY(__first)); -} - -template -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 -inline void -__uninitialized_fill_aux(_ForwardIter __first, _ForwardIter __last, - const _Tp& __x, __true_type) -{ - fill(__first, __last, __x); -} - -template -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 -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 -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 -inline _ForwardIter -__uninitialized_fill_n_aux(_ForwardIter __first, _Size __n, - const _Tp& __x, __true_type) -{ - return fill_n(__first, __n, __x); -} - -template -_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 -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 -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 -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 -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 -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 _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 _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 -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 _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 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_reverse_iterator; - typedef reverse_iterator reverse_iterator; -#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */ - typedef reverse_iterator const_reverse_iterator; - typedef reverse_iterator - 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 - 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 - 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 - 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 - void assign(_InputIterator __first, _InputIterator __last) { - typedef typename _Is_integer<_InputIterator>::_Integral _Integral; - _M_assign_dispatch(__first, __last, _Integral()); - } - - template - void _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) - { assign((size_type) __n, (_Tp) __val); } - - template - void _M_assign_dispatch(_InputIter __first, _InputIter __last, __false_type) - { _M_assign_aux(__first, __last, __ITERATOR_CATEGORY(__first)); } - - template - void _M_assign_aux(_InputIterator __first, _InputIterator __last, - input_iterator_tag); - - template - 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 - void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { - typedef typename _Is_integer<_InputIterator>::_Integral _Integral; - _M_insert_dispatch(__pos, __first, __last, _Integral()); - } - - template - void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, - __true_type) { - insert(__pos, (size_type) __n, (_Tp) __val); - } - - template - 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 - 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 - 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 - 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 - void _M_range_insert(iterator __pos, - _InputIterator __first, _InputIterator __last, - input_iterator_tag); - - template - void _M_range_insert(iterator __pos, - _ForwardIterator __first, _ForwardIterator __last, - forward_iterator_tag); - -#endif /* __STL_MEMBER_TEMPLATES */ -}; - -template -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 -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 -inline void swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) -{ - __x.swap(__y); -} - -#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */ - -template -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 -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 template -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 template -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 -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 -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 -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 template -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 template -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 -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 -#endif -#include /* XXX should use */ -#include /* XXX should use */ -#include /* XXX should use */ -#ifndef __TYPE_TRAITS_H -#include -#endif -#ifndef __SGI_STL_INTERNAL_CONSTRUCT_H -#include -#endif -#ifndef __SGI_STL_INTERNAL_UNINITIALIZED_H -#include -#endif -#ifndef __SGI_STL_INTERNAL_TEMPBUF_H -#include -#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 -#endif -#include -#include - -#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 b6a7dfc..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 -#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 void copy(T* source, T* destination, int n, __false_type); -//Copy an array of elements which have trivial copy constructors. Use memcpy. -template void copy(T* source, T* destination, int n, __true_type); - -//Copy an array of any type by using the most efficient copy mechanism -template inline void copy(T* source,T* destination,int n) { - copy(source, destination, n, - typename __type_traits::has_trivial_copy_constructor()); -} -*/ - - -struct __true_type { -}; - -struct __false_type { -}; - -template -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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 -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 { - 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 { - 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 { - 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 { - 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 { - 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 { - 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 struct _Is_integer { - typedef __false_type _Integral; -}; - -#ifndef __STL_NO_BOOL - -__STL_TEMPLATE_NULL struct _Is_integer { - typedef __true_type _Integral; -}; - -#endif /* __STL_NO_BOOL */ - -__STL_TEMPLATE_NULL struct _Is_integer { - typedef __true_type _Integral; -}; - -__STL_TEMPLATE_NULL struct _Is_integer { - typedef __true_type _Integral; -}; - -__STL_TEMPLATE_NULL struct _Is_integer { - typedef __true_type _Integral; -}; - -#ifdef __STL_HAS_WCHAR_T - -__STL_TEMPLATE_NULL struct _Is_integer { - typedef __true_type _Integral; -}; - -#endif /* __STL_HAS_WCHAR_T */ - -__STL_TEMPLATE_NULL struct _Is_integer { - typedef __true_type _Integral; -}; - -__STL_TEMPLATE_NULL struct _Is_integer { - typedef __true_type _Integral; -}; - -__STL_TEMPLATE_NULL struct _Is_integer { - typedef __true_type _Integral; -}; - -__STL_TEMPLATE_NULL struct _Is_integer { - typedef __true_type _Integral; -}; - -__STL_TEMPLATE_NULL struct _Is_integer { - typedef __true_type _Integral; -}; - -__STL_TEMPLATE_NULL struct _Is_integer { - typedef __true_type _Integral; -}; - -#ifdef __STL_LONG_LONG - -__STL_TEMPLATE_NULL struct _Is_integer { - typedef __true_type _Integral; -}; - -__STL_TEMPLATE_NULL struct _Is_integer { - 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 -#include -#include - -#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 -#include -#include -#include -#include -#include - -#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 -#include -#include - -#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 - -#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 - -extern "C++" { -typedef basic_string string; -// typedef basic_string 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 -#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 - - * tmap.cc: Use less. - * tlist.cc (main): Use remove_if. - -1998-07-13 Manfred Hollstein - - * Makefile.in (VERSION): Bump to 2.9.0. - -1998-07-12 Bob Sidebotham - - * tstring.cc (findtest): New fn. - -1998-06-01 Jason Merrill - - * tlist.cc, tvector.cc, tmap.cc: Remove explicit instantiations. - -Fri Oct 10 00:40:31 1997 Jason Merrill - - * tstring.cc (identitytest): s/remove/erase/. - -Thu Sep 25 19:48:22 1997 Jason Merrill - - * tstring.cc: Add some tests for the member templates. - -Wed Jun 11 11:00:10 1997 Jason Merrill - - * tmap.cc: Explicitly instantiate allocator classes. - * tvector.cc, tlist.cc: Likewise. - -Fri May 16 18:38:05 1997 Bob Manson - - * 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 - - * configure.in (CHECK): Add $(CXXFLAGS). - * Makefile.in (tcomplex): Add $(CXXFLAGS). - -Fri Apr 25 16:07:46 1997 Bob Manson - - * configure.in: Change "check" to "check-old". Add do-nothing - check target. - -Sun Nov 3 12:44:48 1996 Jason Merrill - - * tstring.cc: Treat string literals as const. - -Tue Sep 24 18:00:20 1996 Jason Merrill - - * tstring.cc, tcomplex.cc: Remove gratuitous uses of std/. - -Mon Jun 17 14:05:50 1996 Per Bothner - - * tlist.cc (test_splice): New test. - -Fri Mar 22 16:08:36 1996 Jason Merrill - - * 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 - - * Makefile.in: Update version to 2.7.1. - -Tue May 9 19:36:54 1995 Jason Merrill - - * tstring.cc (decltest): Adjust single-character test. - -Fri May 5 14:35:19 1995 Jason Merrill - - * 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 - - * Makefile.in (VERSION, SHLIB): Define. - -Tue Jan 24 02:36:24 1995 Jason Merrill - - * Makefile.in (CXXFLAGS): Don't set. - -Mon Jan 23 04:12:10 1995 Jason Merrill - - * tlist.cc (plus): Remove. - -Thu Jan 19 19:41:07 1995 Jason Merrill - - * Makefile.in: Don't set LD_LIBRARY_PATH. Users will have to set - it themselves. - -Mon Jan 16 13:57:34 1995 Jason Merrill - - * Makefile.in: Update to reflect header movement. - -Wed Dec 14 19:55:45 1994 Per Bothner - - * configure.in: Fix quoting problem. Reported nu H.J.Lu. - -Tue Nov 29 16:46:56 1994 Per Bothner - - * 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 -#include -#include - -// 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 - -#define tassert(ex) {if ((ex)) cerr << #ex << "\n"; \ - else _assert(#ex, __FILE__,__LINE__); } - -#include -#include -#include - -bool int_compare(int a, int b) -{ - return a < b; -} - -int inc(int x) -{ - return x + 1; -} - -void print(list& l) -{ - for (list::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& a, int lo, int hi) -{ - back_insert_iterator > 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& a, int n) -{ - back_insert_iterator > it(a); - while (--n >= 0) - *it++ = get_rand() % 50; -} - -int array1 [] = { 9, 16, 36 }; -int array2 [] = { 1, 4 }; - -int test_splice () -{ - list l1 (array1, array1 + 3); - list l2 (array2, array2 + 2); - list::iterator i1 = l1.begin (); - l1.splice (i1, l2); - list::iterator i2 = l1.begin (); - while (i2 != l1.end ()) - cout << *i2++ << endl; - return 0; -} - -main() -{ - list a; int i; - list::iterator it, bit; - sequence(a, 1, 20); - cout << "\nlist a = sequence(1, 20);\n"; print(a); - for (it = a.begin (), i = 0; it != a.end (); it++, i++) - assert (*it == i + 1); - list b; - randseq(b, 20); - cout << "\nlist b = randseq(20);\n"; print(b); - list c; - c.insert (c.end(), a.begin(), a.end()); - c.insert (c.end(), b.begin(), b.end()); - cout << "\nlist c = a and b;\n"; print(c); - - list d; - for (it = a.begin(); it != a.end(); it++) - d.insert(d.end (), inc(*it)); - cout << "\nlist d = map(inc, a);\n"; print(d); - - list e; - back_insert_iterator > e_insertor (e); - reverse_copy (a.begin(), a.end (), e_insertor); - cout << "\nlist e = reverse(a);\n"; print(e); - - list f; - for (it = a.begin(); it != a.end(); it++) - if (is_odd (*it)) - f.insert(f.end (), *it); - cout << "\nlist f = select(is_odd, a);\n"; print(f); - list 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 g; - for (it = a.begin(), bit = b.begin(); it != a.end () && bit != b.end (); ) - g.insert (g.end (), *it++ + *bit++); - cout << "\nlist 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 h; - back_insert_iterator > h_insertor (h); - merge (a.begin (), a.end (), b.begin (), b.end (), h_insertor, int_compare); - cout << "\nlist 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 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 b = randseq(20); -28 27 5 17 44 6 9 40 15 26 49 35 15 48 13 27 25 25 9 6 - -list 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 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 e = reverse(a); -20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 - -list 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 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 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 -#include -#include -#include - -#define int_less less -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& 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 my_map; - - map 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::iterator it = my_map.begin(); - for ( ; it != my_map.end(); it++) - cout << "my_map[" << (*it).first << "] = " << (*it).second << endl; - - map::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 -#include -#include -#include -#include - -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 -#include -#include - -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(cout)); - - cout << "\nFill of vector:\n"; - - vector cvec; - cvec.insert (cvec.begin(), 50, '/'); - fill (cvec.begin()+1, cvec.end()-1, '-'); - copy (cvec.begin(), cvec.end(), ostream_iterator(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: -/------------------------------------------------/ 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 - - * Makefile.in (just-check): Ignore errors. - -Sun Jun 28 00:00:10 1998 Carlo Wood - - * 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 - - * lib/libstdc++.exp: Remove libio_link_flags. - -Thu Jul 17 14:54:58 1997 Brendan Kehoe - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * lib/libstdc++.exp: Add support for --tool_opts. - -Mon Apr 28 11:10:25 1997 Bob Manson - - * 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 - - * Makefile.in (clean): Add empty rule for now. - -Fri Apr 25 18:59:14 1997 Bob Manson - - * 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 -# Gabriel Dos Reis -# - -# Print a message saying how this script is intended to be invoked -print_usage() { - cat < - -#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 - -// Some Explicit Instanciations. -template class multiplies; -template size_t accumulate(size_t*, size_t*, size_t, multiplies); - -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::valarray(size_t); -template valarray::~valarray(); -template valarray::valarray(const valarray&); -template size_t valarray::size() const; -template size_t& valarray::operator[](size_t); -template size_t valarray::product() const; - - -void __gslice_to_index(size_t __o, const valarray& __l, - const valarray& __s, - valarray& __i) -{ - const size_t __n = __l.size(); - size_t* const __t = static_cast(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& __l, - const valarray& __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); } - - -